Add stencil support for LFRic domain kernels (#1948) - #3572
Conversation
Domain kernels (operates_on = domain) can now use stencil arguments on read-only field inputs. The PSy layer generates full stencil arrays for the entire domain, and these are now correctly passed to domain kernels instead of being rejected at parse time. Changes: - Remove parser restriction that rejected stencils in domain kernels (lfric_arg_descriptor.py) - Add domain-specific stencil methods in kern_call_arg_list.py: * stencil_unknown_extent_domain() * stencil_2d_unknown_extent_domain() * stencil_2d_max_extent_domain() * stencil_domain() * stencil_2d_domain() - Update argument ordering in arg_ordering.py to dispatch to appropriate stencil methods based on kernel type (domain vs column) - Update test: rename test_no_stencil_domain_kernel() to test_stencil_domain_kernel() to verify stencils now work Key difference from column kernels: - Column kernels: receive scalar/indexed stencil values per column - Domain kernels: receive full stencil arrays for all domain cells All 106 related tests pass successfully. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #3572 +/- ##
=========================================
Coverage 100.00% 100.00%
=========================================
Files 399 399
Lines 56173 56192 +19
=========================================
+ Hits 56173 56192 +19 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
… minimal stub-symbol-table tags (fixes #1948)\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
This is my first attempt at using AI (copilot) to do feature development. I've now burnt my monthly free allocation so it's back to the old way... |
…l is invoked without args
|
I'm in the process of extending eg5 to include a domain kernel and also making it compile. I'm still having some trouble determining what the ranks of the various stencil-related args should be. |
|
This is now ready for review. My experiment with the free copilot functionality was pretty much a failure - I didn't like the way it had implemented things so re-wrote it. |
|
Once this has had a first review, @alanjhewitt may want to try it out to check that it works as expected. |
Thanks Andy. I dont work on Jules myself, but will get @HelenRJohnson to try this out |
Helen has a development targeting the September deadline, so i will try to test it. I will have a go at making a branch, pointing at your psyclone branch, removing psycallite from the jules kernel, maybe some other pipework stuff, then run rose-stem. How can I tell lfric_apps to look at this branch? I can have a look this Thursday. |
Thanks Alan. I'm afraid I don't know the answer to that in the Met Office environment. Your best bet is to ask @christophermaynard, @MetBenjaminWent or @mo-alistairp. |
This PR implements stencil support for LFRic domain kernels (issue #1948). It removes the previous restriction that rejected stencil arguments for domain kernels and updates argument passing so domain kernels receive full stencil arrays (rank-3/4) rather than column-indexed slices.