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 403 403
Lines 56729 56748 +19
=========================================
+ Hits 56729 56748 +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. |
|
@arporter Also the lfric/eg5 output files are currently not gitignored |
|
I've updated a couple of the .gitignores. Ready for another look now @sergisiso. |
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.