-
Notifications
You must be signed in to change notification settings - Fork 79
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
Extract non-initialization parts of shr_pio_mod to a module in share #306
Conversation
Extract the non-initialization parts of shr_pio_mod to a module in the share repository, just keeping the initialization parts here. Needs to be coordinated with a branch in the CESM_share repository.
This will be needed for ESCOMP#305, where this variable is now referenced from another subroutine as well.
end subroutine shr_pio_getiotypefromname | ||
|
||
!=============================================================================== | ||
subroutine shr_pio_namelist_set(npes,mycomm, pio_stride, pio_root, pio_numiotasks, & |
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.
I have removed shr_pio_namelist_set: this appears to be unused and was buggy (in particular, it referenced the old module-level scalar pio_async_interface
, but that variable was never set; now I have removed that scalar and replaced it with an array, as I describe in a separate comment).
integer :: pio_debug_level=0, pio_blocksize=0 | ||
integer(kind=pio_offset_kind) :: pio_buffer_size_limit=-1 | ||
|
||
type(pio_rearr_opt_t) :: pio_rearr_opts | ||
logical, allocatable :: pio_async_interface(:) |
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.
In order to keep pio_comp_t
the same for all drivers, I removed pio_async_interface
from that derived type, and made that its own variable specific to the nuopc version (the mct version uses a scalar, the nuopc version has per-component values).
This change will intersect with #305; I will make a separate comment about what needs to be done to reconcile these PRs.
Alternatively, I could put pio_async_interface
in the shared derived type and just leave this unset by the non-nuopc versions. (I made it local because it looked like it wouldn't be needed after initialization, but if it will be needed after initialization, then this would be a better approach.)
I wanted to move I have carefully reviewed the overlapping changes in #305 . Jim's changes are just in three subroutines:
I would be happy to help with this merge. |
As per Jim Edwards suggestion (ESCOMP/CESM_CPL7andDataComps#16 (review))
I have run CESM prealpha testing on these changes. All tests pass other than those that failed in the baseline as well. I have updated the top-level comment with details. @jedwards4b let me know if you'd like me to do any other testing – and if you'd like me to do the srt testing by hand, please help me with exactly how to do that. |
Introduce init_pio_mod with the initialization pieces from shr_pio_mod This PR introduces an init_pio_mod that contains just the initialization pieces from shr_pio_mod (from the share repository). This is part of a set of changes where I am splitting shr_pio_mod into two pieces: (1) Reading configuration files and initializing PIO appropriately (2) Storing information about PIO (io system descriptors, io types, io formats) and providing an interface to query this information Piece (2) lives in the share code and is used regardless of the driver. Piece (1) is driver-specific, so for now we have three versions of that piece: one in CMEPS (created by extracting the initialization pieces from `cmeps/cesm/nuopc_cap_share/shr_pio_mod.F90`), one in the cpl7 repo (created by extracting the initialization pieces from `share/src/shr_pio_mod.F90`), and one in CTSM's LILAC directory (which is essentially identical to the one in the cpl7 repo). Piece (2) – the actual share code piece – is used by components (their use statements stay exactly as they are now) as well as by piece (1) (which is responsible for setting the module-level variables in piece (2)). See ESCOMP/CTSM#1759 (comment) for more context. Needs to be coordinated with ESCOMP/CESM_share#34 . See also the related PR for CMEPS: ESCOMP/CMEPS#306
Fix LILAC interface to PIO Fixes the LILAC interface to PIO. This involved splitting shr_pio_mod into two pieces: (1) Reading configuration files and initializing PIO appropriately (2) Storing information about PIO (io system descriptors, io types, io formats) and providing an interface to query this information Piece (2) lives in the share code and is used regardless of the driver. Piece (1) is driver-specific, so for now we have three versions of that piece: one in CMEPS (created by extracting the initialization pieces from cmeps/cesm/nuopc_cap_share/shr_pio_mod.F90), one in the cpl7 repo (created by extracting the initialization pieces from share/src/shr_pio_mod.F90), and one in CTSM's LILAC directory (which is essentially identical to the one in the cpl7 repo). Piece (2) – the actual share code piece – is used by components (their use statements stay exactly as they are now) as well as by piece (1) (which is responsible for setting the module-level variables in piece (2)). See #1759 (comment) for more context. Much of the work here was in externals: ESCOMP/CESM_share#34, ESCOMP/CMEPS#306 and ESCOMP/CESM_CPL7andDataComps#16. So this PR updates those externals to versions with those changes. In addition, changes were needed within LILAC - to implement the LILAC version of piece (1) described above. Resolves #1759 (LILAC test failing in ctsm5.1.dev095 with cime/share/pio update)
Description of changes
Extract the non-initialization parts of shr_pio_mod to a module in the
share repository, just keeping the initialization parts here.
This is part of a set of changes where I am splitting shr_pio_mod into two pieces:
(1) Reading configuration files and initializing PIO appropriately
(2) Storing information about PIO (io system descriptors, io types, io formats) and providing an interface to query this information
Piece (2) lives in the share code and is used regardless of the driver. Piece (1) is driver-specific, so for now we have three versions of that piece: one in CMEPS (created by extracting the initialization pieces from
cmeps/cesm/nuopc_cap_share/shr_pio_mod.F90
), one in the cpl7 repo (created by extracting the initialization pieces fromshare/src/shr_pio_mod.F90
), and one in CTSM's LILAC directory (which is essentially identical to the one in the cpl7 repo). Piece (2) – the actual share code piece – is used by components (their use statements stay exactly as they are now) as well as by piece (1) (which is responsible for setting the module-level variables in piece (2)).See ESCOMP/CTSM#1759 (comment) for more context.
Needs to be coordinated with ESCOMP/CESM_share#34
Specific notes
Contributors other than yourself, if any: Discussions with @jedwards4b @mvertens
CMEPS Issues Fixed (include github issue #): none
Are changes expected to change answers? no
Any User Interface Changes (namelist or namelist defaults changes)? no
Testing performed
Only limited testing performed so far; I plan to run CESM prealpha testing. Please let me know if you'd like more than that (I'm uncertain about whether scripts_regression_tests and testlist_drv give additional value if I'm already running prealpha testing).
Testing performed if application target is CESM:
Testing performed if application target is UFS-coupled:
Testing performed if application target is UFS-HAFS:
Hashes used for testing: