Skip to content

Commit

Permalink
Merge pull request #146 from ESCOMP/mvertens/postphases
Browse files Browse the repository at this point in the history
Introduction of new post phases for performance updates
Description of changes

Introduction of new post phases for performance updates
Specific notes

This PR introduces new post phases for each component in order to remove duplicate mappings that were done in the prep phases.
Code Changes:

    mapping has been moved from prep phases and put into the relevant post phases - EXCEPT for cases where updated ice fraction is needed in the mapping
    med_merge_mod.F90 has been modified to zero out fields in the appropriate place (this should have been done this way in the initial implementation)
    med_fraction_set is now a method that is called from med_phases_post_ice
    med_phases_prep_ocn_map is no longer needed, med_phases_prep_ocn_merge and med_phases_prep_accum_fast have been unified into med_phases_prep_ocn_accum

Run Sequence Changes:

    the auto generated runsequences in CIME have been modified to account for this
    the following should be the new run sequence for UFS CMEPS warm run sequence

runSeq::
@3600
   MED med_phases_prep_ocn_avg
   MED -> OCN :remapMethod=redist
   OCN
   @900
     MED med_phases_prep_atm
     MED med_phases_prep_ice
     MED -> ATM :remapMethod=redist
     MED -> ICE :remapMethod=redist
     ATM
     ICE
     ATM -> MED :remapMethod=redist
     MED med_phases_post_atm
     ICE -> MED :remapMethod=redist
     MED med_phases_post_ice
     MED med_phases_prep_ocn_accum
   @
   OCN -> MED :remapMethod=redist
   MED med_phases_post_ocn
   MED med_phases_restart_write
   MED med_phases_profile
@
::

Contributors other than yourself, if any: None

CMEPS Issues Fixes: #145, #141

Are changes expected to change answers?

bit for bit
The results are bfb EXCEPT for the following mediator history differences due to the introduction of post phases:
AtmImp_ocn_xxx
lndExp_Sg_ice_covered_elevN and lndExp_Sg_topo_elevN in ERS_Vnuopc_Ld5.T31_g37_gl20.I1850Clm50SpG
different at roundoff level

    more substantial

Any User Interface Changes (namelist or namelist defaults changes)?

Yes - the run sequence is different

    No

Testing performed if application target is CESM:(either UFS-S2S or CESM testing is required):

(recommended) CIME_DRIVER=nuopc scripts_regression_tests.py

    machines:
    details (e.g. failed tests):

(required) CESM testlist_drv.xml

    machines and compilers: cheyenne/intel
    details (e.g. failed tests): compared to baseline nov28newrunseq/ and generated new baselines dec06

    (optional) CESM prealpha test
        machines and compilers
        details (e.g. failed tests):

Testing performed if application target is UFS-S2S:

    (required) UFS-S2S testing
        description:
        details (e.g. failed tests):

Hashes used for testing:

CESM:

    repository to check out: https://github.com/ESCOMP/CESM.git
    branch: nuopc_dev
    hash: 2b951f2
    This has contains branches for CDEPS and CIME (in addition to CMEPS) that need to have PRs to master.

UFS-S2S, then umbrella repostiory to check out and associated hash:

    repository to check out:
    branch:
    hash:
  • Loading branch information
jedwards4b committed Dec 8, 2020
2 parents 492569c + 3a05967 commit 0ccc872
Show file tree
Hide file tree
Showing 27 changed files with 2,066 additions and 1,414 deletions.
18 changes: 15 additions & 3 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,26 @@ Any User Interface Changes (namelist or namelist defaults changes)?
- [ ] No

Testing performed if application target is CESM:(either UFS-S2S or CESM testing is required):
- [ ] (required) CIME_DRIVER=nuopc scripts_regression_tests.py
- [ ] (recommended) CIME_DRIVER=nuopc scripts_regression_tests.py
- machines:
- details (e.g. failed tests):
- [ ] (required) CESM testlist_drv.xml
- [ ] (recommended) CESM testlist_drv.xml
- machines and compilers:
- details (e.g. failed tests):
- [ ] (optional) CESM prealpha test
- machines and compilers
- details (e.g. failed tests):
- [ ] (other) please described in detail
- machines and compilers
- details (e.g. failed tests):

Testing performed if application target is UFS-S2S:
- [ ] (required) UFS-S2S testing
- [ ] (recommended) UFS-S2S testing
- description:
- details (e.g. failed tests):

Testing performed if application target is UFS-HAFS:
- [ ] (recommended) UFS-HAFS testing
- description:
- details (e.g. failed tests):

Expand All @@ -40,3 +48,7 @@ Hashes used for testing:
- repository to check out:
- branch:
- hash:
- [ ] UFS-HAFS, then umbrella repostiory to check out and associated hash:
- repository to check out:
- branch:
- hash:
18 changes: 9 additions & 9 deletions cime_config/namelist_definition_drv.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,6 @@
</values>
</entry>

<entry id="Profiling@driver_attributes" modify_via_xml="ESMF_PROFILING_LEVEL">
<type>char</type>
<category>nuopc</category>
<group>DRIVER_attributes</group>
<values>
<value>$ESMF_PROFILING_LEVEL</value>
</values>
</entry>

<entry id="Verbosity@med_attributes" modify_via_xml="ESMF_VERBOSITY_LEVEL">
<type>char</type>
<category>nuopc</category>
Expand Down Expand Up @@ -393,6 +384,15 @@
<!-- All components orbital attributes -->
<!-- =========================================== -->

<entry id="Profiling" modify_via_xml="ESMF_PROFILING_LEVEL">
<type>char</type>
<category>nuopc</category>
<group>ALLCOMP_attributes</group>
<values>
<value>$ESMF_PROFILING_LEVEL</value>
</values>
</entry>

<entry id="orb_mode">
<type>char</type>
<category>orbital</category>
Expand Down
46 changes: 26 additions & 20 deletions cime_config/runseq/runseq_D.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,32 +31,38 @@ def gen_runseq(case, coupling_times):

runseq.enter_time_loop(ocn_cpl_time, newtime=((ocn_cpl_time)))

runseq.add_action("MED med_phases_prep_ocn_accum_avg", med_to_ocn)
runseq.add_action("MED -> OCN :remapMethod=redist" , med_to_ocn)
runseq.add_action("MED med_phases_prep_ocn_avg" , med_to_ocn)
runseq.add_action("MED -> OCN :remapMethod=redist" , med_to_ocn)

runseq.enter_time_loop(atm_cpl_time, newtime=((atm_cpl_time < ocn_cpl_time)))

runseq.add_action ("MED med_phases_prep_ocn_map" , med_to_ocn)
runseq.add_action ("MED med_phases_aofluxes_run" , run_ocn and run_atm and (med_to_ocn or med_to_atm))
runseq.add_action ("MED med_phases_prep_ocn_merge" , med_to_ocn)
runseq.add_action ("MED med_phases_prep_ocn_accum_fast" , med_to_ocn)
runseq.add_action ("MED med_phases_ocnalb_run" , med_to_ocn)
runseq.add_action ("MED med_phases_prep_ice" , med_to_ice)
runseq.add_action ("MED -> ICE :remapMethod=redist" , med_to_ice)
runseq.add_action ("ICE" , run_ice)
runseq.add_action ("ROF" , run_rof)
runseq.add_action ("ATM" , run_atm)
runseq.add_action ("ICE -> MED :remapMethod=redist" , run_ice)
runseq.add_action ("MED med_fraction_set" , run_ice)
runseq.add_action ("ROF -> MED :remapMethod=redist" , run_rof)
runseq.add_action ("ATM -> MED :remapMethod=redist" , run_atm)
runseq.add_action ("MED med_phases_history_write" , atm_cpl_time == ocn_cpl_time)
runseq.add_action ("MED med_phases_aofluxes_run" , run_ocn and run_atm and (med_to_ocn or med_to_atm))
runseq.add_action ("MED med_phases_prep_ocn_accum" , med_to_ocn)
runseq.add_action ("MED med_phases_ocnalb_run" , med_to_ocn)

runseq.add_action ("MED med_phases_prep_ice" , med_to_ice)
runseq.add_action ("MED -> ICE :remapMethod=redist" , med_to_ice)

runseq.add_action ("ICE" , run_ice)
runseq.add_action ("ROF" , run_rof)
runseq.add_action ("ATM" , run_atm)

runseq.add_action ("ICE -> MED :remapMethod=redist" , run_ice)
runseq.add_action("MED med_phases_post_ice" , run_ice)

runseq.add_action ("ROF -> MED :remapMethod=redist" , run_rof)
runseq.add_action("MED med_phases_post_rof" , run_rof)

runseq.add_action ("ATM -> MED :remapMethod=redist" , run_atm)
runseq.add_action ("MED med_phases_history_write" , atm_cpl_time == ocn_cpl_time)
runseq.add_action ("MED med_phases_post_atm" , run_atm)

runseq.leave_time_loop(run_rof and (atm_cpl_time < ocn_cpl_time))

runseq.add_action ("OCN", run_ocn)
runseq.add_action ("OCN -> MED :remapMethod=redist" , run_ocn)
runseq.add_action ("MED med_phases_history_write" , atm_cpl_time < ocn_cpl_time)
runseq.add_action ("OCN" , run_ocn)
runseq.add_action ("OCN -> MED :remapMethod=redist" , run_ocn)
runseq.add_action ("MED med_phases_history_write" , atm_cpl_time < ocn_cpl_time)
runseq.add_action ("MED med_phases_post_ocn" , run_ocn)

runseq.leave_time_loop(True)

Expand Down
82 changes: 0 additions & 82 deletions cime_config/runseq/runseq_NEMS.py

This file was deleted.

5 changes: 2 additions & 3 deletions cime_config/runseq/runseq_TG.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,8 @@ def gen_runseq(case, coupling_times):

runseq.add_action ("LND" , run_lnd)
runseq.add_action ("LND -> MED :remapMethod=redist" , run_lnd)
runseq.add_action ("MED med_fraction_set" , run_lnd)
runseq.add_action ("MED med_phases_prep_glc_accum" , med_to_glc)
runseq.add_action ("MED med_phases_prep_glc_avg" , med_to_glc)
runseq.add_action ("MED med_phases_post_lnd" , run_lnd)
runseq.add_action ("MED med_phases_prep_glc" , med_to_glc)
runseq.add_action ("MED -> GLC :remapMethod=redist" , med_to_glc)
runseq.add_action ("GLC" , run_glc)
runseq.add_action ("GLC -> MED :remapMethod=redist" , run_glc)
Expand Down
Loading

0 comments on commit 0ccc872

Please sign in to comment.