Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions cesm/driver/esm_time_mod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,7 @@ subroutine esm_time_clockinit(ensemble_driver, instance_driver, logunit, maintas
inquire( file=trim(restart_pfile), exist=exists)
if (.not. exists) then
rc = ESMF_FAILURE
write(logunit,*) " drv_restart_pointer file does NOT exist, correct this and rerun = "//trim(restart_pfile)
call ESMF_LogWrite(trim(subname)//' ERROR rpointer file '//trim(restart_pfile)//' not found', &
ESMF_LOGMSG_ERROR, line=__LINE__, file=__FILE__)
return
Expand All @@ -150,13 +151,15 @@ subroutine esm_time_clockinit(ensemble_driver, instance_driver, logunit, maintas
open(newunit=unitn, file=restart_pfile, form='FORMATTED', status='old',iostat=ierr)
if (ierr < 0) then
rc = ESMF_FAILURE
write(logunit,*) " error opening rpointer file "
call ESMF_LogWrite(trim(subname)//' ERROR rpointer file open returns error', &
ESMF_LOGMSG_ERROR, line=__LINE__, file=__FILE__)
return
end if
read(unitn,'(a)', iostat=ierr) restart_file
if (ierr < 0) then
rc = ESMF_FAILURE
write(logunit,*) " error in read of rpointer file "
call ESMF_LogWrite(trim(subname)//' ERROR rpointer file read returns error', &
ESMF_LOGMSG_INFO, line=__LINE__, file=__FILE__)
return
Expand Down
2 changes: 1 addition & 1 deletion cime_config/buildnml
Original file line number Diff line number Diff line change
Expand Up @@ -320,7 +320,7 @@ def _create_drv_namelists(case, infile, confdir, nmlgen, files):
# Write namelist file drv_in and initial input dataset list.
# --------------------------------
namelist_file = os.path.join(confdir, "drv_in")
drv_namelist_groups = ["papi_inparm", "prof_inparm", "debug_inparm"]
drv_namelist_groups = ["DRIVER_attributes", "MED_attributes", "ALLCOMP_attributes", "ROF_attributes", "WAV_attributes"]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you explain this change - why you removed the old set and how you chose this new set of groups?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The old ones no longer exist. And the new ones are valid namelist groups that weren't included.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Checking in the latest code, papi_inparm and prof_inparm are here and in the namelist definitation -- but not references in the Fortran code. So they can be removed.

It looks like debug_inparm now has one namelist item, so should be added back in.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I rechecked the others, and it looks like ROF_attributes and WAV_attributes are no longer used in the Fortran source, but the others are.

Here's an example check of namelist items that are in the namelist definition, but NOT in the Fortran source:

git grep -i WAV_attributes | more
cime_config/namelist_definition_drv.xml:  <entry id="Verbosity@wav_attributes" modify_via_xml="ESMF_VERBOSITY_LEVEL">
cime_config/namelist_definition_drv.xml:    <group>WAV_attributes</group>
cime_config/namelist_definition_drv.xml:    <group>WAV_attributes</group>

While here is what I see for something that is in the Fortran code:

cesm/driver/ensemble_driver.F90:          call ReadAttributes(driver, config, "DRIVER_attributes::", rc=rc)
cesm/driver/esm.F90:    call ReadAttributes(driver, config, "DRIVER_attributes::", formatprint=.true., rc=rc)
cesm/driver/esm.F90:    character(len=*), parameter :: subname = '(driver_attributes_check) '
cime_config/namelist_definition_drv.xml:  <entry id="Verbosity@driver_attributes" modify_via_xml="ESMF_VERBOSITY_LEVEL">
cime_config/namelist_definition_drv.xml:    <group>DRIVER_attributes</group>
cime_config/namelist_definition_drv.xml:    <group>DRIVER_attributes</group>
cime_config/namelist_definition_drv.xml:    <group>DRIVER_attributes</group>
.
.
.
cime_config/namelist_definition_drv.xml:    <group>DRIVER_attributes</group>

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These attributes are read and used by ESMF/NUOPC

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So... partly for my own tracking of this... my understanding from this conversation is that some updates are still needed to drv_namelist_groups, like adding debug_inparm back in? And I'm wondering if papi_inparm and prof_inparm should either be added back here or removed from the namelist_definition?? It seems confusing to me to have buildnml be inconsistent with the namelist_definition: this seems prone to confusing someone later. But I'm not sure I'm following this conversation correctly, so am happy to be corrected on this.

nmlgen.write_output_file(
namelist_file, data_list_path=data_list_path, groups=drv_namelist_groups
)
Expand Down
5 changes: 4 additions & 1 deletion cime_config/config_component.xml
Original file line number Diff line number Diff line change
Expand Up @@ -404,13 +404,16 @@

<entry id="DRV_RESTART_POINTER">
<type>char</type>
<default_value>rpointer.cpl</default_value>
<default_value>rpointer.cpl.${RUN_STARTDATE}-${RUN_REFTOD}</default_value>
<group>run_begin_stop_restart</group>
<file>env_run.xml</file>
<desc>
Name of the restart pointer file, this can be used to restart from an
intermediate restart by appending the restart date and time in format YYYY-MM-DD-SSSSS
</desc>
<values>
<value>rpointer.cpl.${RUN_STARTDATE}-${RUN_REFTOD}</value>
</values>
Comment on lines +414 to +416
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This setting of the value seems redundant with the default_value above. Do you actually need both?

</entry>

<entry id="PAUSE_OPTION">
Expand Down
27 changes: 26 additions & 1 deletion cime_config/namelist_definition_drv.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,26 @@
</values>
</entry>

<entry id="rundir" modify_via_xml="RUNDIR">
<type>char</type>
<category>nuopc</category>
<!-- NOTE: This won't be output only used as an attribute in this file -->
<group>default_settings</group>
<values>
<value>$RUNDIR</value>
</values>
</entry>

<entry id="continue_run" modify_via_xml="CONTINUE_RUN">
<type>logical</type>
<category>nuopc</category>
<!-- NOTE: This won't be output only used as an attribute in this file -->
<group>default_settings</group>
<values>
<value>$CONTINUE_RUN</value>
</values>
</entry>
Comment on lines +21 to +39
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not super-familiar with this, but I'm thinking that you can accomplish this by setting rundir and continue_run in the config settings in buildnml, similarly to what's currently done for many other variables in _create_drv_namelists.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ahh, I'm pretty sure you are right, and that this bit could probably be removed.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just for my own tracking of remaining to-dos... this one is still a to-do.


<entry id="pio_asyncio_ntasks" modify_via_xml="PIO_ASYNCIO_NTASKS">
<type>integer</type>
<category>pio</category>
Expand Down Expand Up @@ -165,12 +185,17 @@
<entry id="drv_restart_pointer" modify_via_xml="DRV_RESTART_POINTER">
<type>char</type>
<category>expdef</category>
<default_value>UNSET</default_value>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This default_value seems redundant with the value settings below and can probably be removed.

<!-- IMPORTANT NOTE: The relative path option MUST be used with a version of cime that allows it cime PR#4739 allows this -->
<input_pathname>rel:rundir</input_pathname>
<group>DRIVER_attributes</group>
<desc>
Driver restart pointer file to initialize time info
</desc>
<values>
<value>$DRV_RESTART_POINTER</value>
<value>UNSET</value>
<value run_type="branch">$DRV_RESTART_POINTER</value>
<value continue_run=".true.">$DRV_RESTART_POINTER</value>
</values>
</entry>

Expand Down
Loading