Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement split element orders #2799

Draft
wants to merge 8 commits into
base: master
Choose a base branch
from
Draft

Conversation

mo-jdendy
Copy link
Collaborator

Currently the function space object in LFRic has an argument element_order which dictates the polynomial order of the finite elements in the model. Alongside LFRic 4443 and LFRic Apps 358, this pull request begins to implement splitting of this argument into a horizontal order element_order_h and a vertical order element_order_v. This release will likely have to be coordinated with the LFRic release to avoid breakage.

To better understand this change and the reasoning behind it, please read the LFRic core ticket and attached guide to changes.

For now, the necessary infrastructure is added to the function space objects but the capability will remain locked by a clause in the file function_space_constructor_helper_functions_mod.F90 which does not allow for the horizontal and vertical element orders to differ from each other. A future LFRic ticket will fully enable the splitting but the change is too large for a single ticket.

The main changes here are:

  • Occurrences of the function space getter get_fs will have the element_order argument swapped to element_order_h, element_order_v. The familiar zeroth order function space, for example, can now be generated by setting both element orders to be 0. This function space will behave identically to before, with the exception of some of the getters becoming orientation specific (such as get_ndof_face becoming get_ndof_face_h and get_ndof_face_v)
  • Initialisations of the number of quadrature points now uses the formula nqp=MAX(element_order_h, element_order_v)+3 . This is temporary as we expect to split quadrature points in the horizontal and vertical for efficiency in the future.
  • Other relevant PSyclone changes to Python scripts and tests which store element_order, for example in a dictionary.

joshua.dendy added 2 commits November 22, 2024 13:31
…space_type' in src/psyclone to reflect new split element orders
…space_type' outside of src/psyclone to reflect new split element orders
@mo-jdendy mo-jdendy added enhancement LFRic Issue relates to the LFRic domain adjoint labels Nov 22, 2024
@mo-jdendy mo-jdendy self-assigned this Nov 22, 2024
@mo-jdendy mo-jdendy changed the title Implement split element orders (related to #2779) Implement split element orders Nov 22, 2024
Copy link

codecov bot commented Nov 25, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 99.88%. Comparing base (f85e5f7) to head (fdb54f2).

Additional details and impacted files
@@           Coverage Diff           @@
##           master    #2799   +/-   ##
=======================================
  Coverage   99.88%   99.88%           
=======================================
  Files         356      356           
  Lines       49542    49546    +4     
=======================================
+ Hits        49486    49490    +4     
  Misses         56       56           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
adjoint enhancement LFRic Issue relates to the LFRic domain
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants