Scheduled Downtime
On Tuesday 24 October 2023 @ 5pm MT the forums will be in read only mode in preparation for the downtime. On Wednesday 25 October 2023 @ 5am MT, this website will be down for maintenance and expected to return online later in the morning.
Normal Operations
The forums are back online with normal operations. If you notice any issues or errors related to the forums, please reach out to help@ucar.edu

perpetual_ymd

Hi,

I'm trying to figure out how to set the year-month-day for a perpetual run. The
current 3.0 user's guide says it's to be calculated as year*1000 + month*100 + day.
It seems, though, that this would make the value ambiguous (e.g. is 2101
November of year 1 or January of year 2). On a related issue, the user's guide
says perpetual_ymd is of type "Logical", but I'm guessing this is a misprint.

Thanks for any suggestions.

Norm Wood
 

eaton

CSEG and Liaisons
You've found two typos in the User's Guide. perpetual_ymd is an integer as you point out. And the encoding year*1000 + month*100 + day is certainly ambiguous. It should read
year*10000 + month*100 + day. Sorry for the confusion.
 
Thanks, Brian. I thought that's how it should work.

I have some further questions (for anyone who's used CAM to perform these
perpetual runs). From looking through the source code, it appears that the
data ocean model and a number of the trace species parameterizations implement
the is_perpetual() test from the time_manager module. Am I correct then that
these species concentrations will be set to the specified perpetual_ymd (I'm looking for example at chemistry.F90, aerosol_intr.F90, and sst_data.F90)?

How is the atmospheric state set? I expect it comes from the specified initial
conditions file (e.g., cami_0000-09-01_64x128_L26_c030918.nc in the case
of an initial run) or from the specified restart file in the case of a branch run. Is
this correct?

Thanks,
Norm
 

eaton

CSEG and Liaisons
When perpetual_run=.true., the perpetual date as set via the perpetual_ymd variable is used to set the calendar day (returned by get_curr_calday) which is then used for the zenith angle calculation and to interpolate into annual cycle datasets. The perpetual date is available from the time_manager via the get_perp_date method. This would be used to interpolate into datasets that require a year to be specified in addition to the calendar day.

I would be careful using the perpetual mode, and do exactly the kind of code analysis that you have been doing to be sure that datasets are being interpolated correctly using the perpetual date. This functionality is mainly used in CAM for the aqua_planet mode which sets the perpetual date to 321. Beyond that use the perpetual_ymd feature is not tested in our standard regression testing of CAM, and so it hasn't been well tested for example, when constituent scenarios such as the greenhouse gases or the prognostic sulfur are enabled. It would be easier to be sure that the perpetual date was being used consistently if CAM had a single utility for doing time interpolation. But that's not the case and alot of time interpolation code is duplicated in alot of places. It's something we're working on cleaning up.

The initial conditions are set using the initial file (namelist variable ncdata) for an initial run, and using the restart file for either a restart or a branch run, as you expected.
 
Top