-
Notifications
You must be signed in to change notification settings - Fork 30
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
base: master
Are you sure you want to change the base?
Conversation
…space_type' in src/psyclone to reflect new split element orders
…space_type' outside of src/psyclone to reflect new split element orders
…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 359 359
Lines 50833 50837 +4
=======================================
+ Hits 50777 50781 +4
Misses 56 56 ☔ View full report in Codecov by Sentry. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some small comments re. copyright headers.
src/psyclone/tests/test_files/dynamo0p3/infrastructure/function_space/fs_continuity_mod.F90
Outdated
Show resolved
Hide resolved
src/psyclone/tests/test_files/dynamo0p3/infrastructure/function_space/fs_continuity_mod.f90
Outdated
Show resolved
Hide resolved
After testing this branch in the PSyclone test environment with LFRic apps ticket 358, it does appear to fix the failures in the adjoint tests and all tests in the developer suite pass. |
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.