-
Notifications
You must be signed in to change notification settings - Fork 29
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
mo-jdendy
wants to merge
8
commits into
master
Choose a base branch
from
2779_split_element_order
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…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
changed the title
Implement split element orders (related to #2779)
Implement split element orders
Nov 22, 2024
…nto 2779_split_element_order
Codecov ReportAll modified and coverable lines are covered by tests ✅
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. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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 orderelement_order_h
and a vertical orderelement_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:
get_fs
will have theelement_order
argument swapped toelement_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 asget_ndof_face
becomingget_ndof_face_h
andget_ndof_face_v
)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.element_order
, for example in a dictionary.