Agenda for Jan 20th, 2006 CCSM/ESMF Stage-1 meeting
- Review notes from last meeting – Jan 13
- (Can the isBranch ReadRestart logic – just do restart or startup)
- Look at app driver restart files.
- Talk about specific behavior of high level code.
- Look at NetCDF restart file
- Look at sample namelists.
- Look at top level picture again.
Questions Answered: - Startup type names: use startup, branch, and continue (rather than something else)
- stop_final_ymd: Default is 99991231
- Branch restarts – seperate method to read branch? Pass isBranch into ReadRestart method? No!
- Handle atm_adiabatic, aqua_planet, and atm_ideal_phys at top level driver – or inside components? – Make little methods to detect if should run each component.
Questions answered at Jan/27 meeting: - Worry about setting _FillValue in NetCDF file – or not? Nancy suggests this is part of the standard and should be done. YES
- On continue do I give the whole namelist again – just to check for consistency? Or do I leave it blank (except required values of stop date? And possibily restart_pfile, and restart_file?) It can be blank, but you can also give the whole namelist again – but check consistency.
- On branch can case_name be same as restart case_name? – Yes if option set.
- If no restart option set – no restarts? Still restart at end of run – or not? – explicit namelist option to turn restarts off – then no restarts at end of run.
- Have a special namelist setting to say no restarts? yes
- Archive dir save whole path – or directory above? – do same as CAM
- Use shr_file_ methods to handle files, use mss: to access mass store? yes
- Both archive_dir and restart_file use shr_file syntax? yes
- Branch only requires to set stop_time? Use everything else from restart file? Same as restart
- Branch MUST set case_desc No
- On branch – case_desc and archive_dir are reset to "" from restart file – only set from namelist. – yes
- If aqua_planet – can't turn perpetual_run to off? NO
But can change perpetual date? YES - App driver subroutines? – To help build the different app drivers we need? At least 3 – MCT, ESMF, and con-CCSM. – later
- Write Restart behavior: If file doesn't exist – create it. If file does exist – open for write – add needed variable definitions (overwriting or adding needed attributes), and overwrite data (if dimensions wrong – abort) – YES
- Read restart behavior: Ignore attributes, merely read in data for expected names. If wrong dimensions, or names aren't on file – abort. YES
- Do we need something like: brnch_retain_casename? YES
Sample namelists:Basic – mininum needed...
&ccsm_inparm case_name = "b32.130c" start_type = "startup" / &timemgr_inparm stop_nyears = 1 ! Stop must be set atm_cpl_dt = 1200 ! Coupling frequencies must be set orb_iyear_AD = 1950 ! Orbit must be set start_ymd = 1231 ! Start date must be set /
Idealized physics case, setting some optional values...
&ccsm_inparm case_name = "h32.131c" start_type = "startup" case_desc = "this is the case description for a CAM only case in idealized physics mode" mss_irt = 4290 atm_ideal_phys = .true. mss_wpass = "testingasdfasdfasdfasdfasdfasdfasdfasdf" archive_dir = 'mss:/CCSM/csm/b32.130c' / &timemgr_inparm restart_ndays = 1 stop_nmonths = 1 ! Stop must be set stop_final_ymd = 20051231 ! Don't go beyond this date atm_cpl_dt = 1200 ! Coupling frequencies must be set orb_iyear_AD = 1950 ! Orbit must be set start_ymd = 1231 ! Start date must be set /
Aqua-planet changing default perpetual date, and the restart_pfile:
&ccsm_inparm case_name = "h32.132c" start_type = "startup" case_desc = "this is the case description for a CAM only case in aqua_planet mode" aqua_planet = .true. restart_pfile = "/home/erik/rpointer/ccsm.h32.132c.rpointer' / &timemgr_inparm restart_ndays = 1 stop_nsteps = 136 ! Stop must be set atm_cpl_dt = 1200 ! Coupling frequencies must be set orb_iyear_AD = 1950 ! Orbit must be set start_ymd = 1231 ! Start date must be set perpetual_ymd = 20000321 /
Start-up case in ideal_phys mode turning restarts off completely
&ccsm_inparm case_name = "h32.136c" start_type = "startup" atm_ideal_phys = .true. / &timemgr_inparm restart_monthly = .false. restart_none = .false. stop_nsteps = 136 ! Stop must be set atm_cpl_dt = 1200 ! Coupling frequencies must be set orb_iyear_AD = 1950 ! Orbit must be set start_ymd = 1231 ! Start date must be set /
All active, running in perpetual mode, orbit not year based:
&ccsm_inparm case_name = "b32.132c" start_type = "startup" case_desc = "this is the case description for a all active case in perpetual mode" / &timemgr_inparm restart_yearly = .true. stop_nsteps = 136 ! Stop must be set atm_cpl_dt = 3600 ! Coupling frequencies must be set orb_eccen = 0.1 orb_obliq = 67. orb_mvelp = 263. start_ymd = 101 ! Start date must be set perpetual_ymd = 20000321 perpetual_run = .true. /
Continue case: (only need case_name, start_type, stop time).
If archive_dir or restart_pfile not standard – also need them. Can also set other things – provided they are the same as the case continuing from.
&ccsm_inparm case_name = "h32.130c" ! Following MUST be the same as on the restart file start_type = "continue" case_desc = "this is the case description for a CAM only case in aqua_planet mode" aqua_planet = .true. restart_pfile = "/home/erik/rpointer/ccsm.h32.132c.rpointer' / &timemgr_inparm stop_nyears = 1 ! Stop must be set /
Branch case: (need case_name, start_type, stop time, and restart_file)
&ccsm_inparm case_name = "h32.135c" start_type = "branch" / &timemgr_inparm stop_ndays = 42 ! Stop must be set restart_file = "mss:/CCSM/csm/h32.135c/ccsm/rest/h32.130c.ccsm.r0001-01-03-40800.nc" /
Coupled case:
(perpetual_run, adibatic, calendar, ideal_phys, restart_ options, start_ time, stop_ options, no-restarts, mss_irt, mss_wpass, archive_dir, orbit, and aqua_planet modes aren't allowed)
&ccsm_inparm start_type = "startup" case_name = "b32.00456" case_desc = "All active concurrent CCSM coupled case" / h3. Coupling frequency MUST be set, ref_ymd and ref_tod CAN be set, nothing else... &timemgr_inparm atm_cpl_dt = 3600 ! atm coupling frequency must be set /
NetCDF dump of app driver restart file:
netcdf csmrun.ccsm.r.0001-01-01-00000 { dimensions: shr_character = 256 ; variables: int shr_inputinfo_atm_adiabatic ; shr_inputinfo_atm_adiabatic:long_name = "Atmosphere runs in adiabatic mode" ; shr_inputinfo_atm_adiabatic:units = "logical flag (0=false)" ; int shr_inputinfo_atm_ideal_phys ; shr_inputinfo_atm_ideal_phys:long_name = "Atmosphere runs in idealized physics mode" ; shr_inputinfo_atm_ideal_phys:units = "logical flag (0=false)" ; int shr_inputinfo_aqua_planet ; shr_inputinfo_aqua_planet:long_name = "Aqua_planet mode (no-land/ice, perpetual-date, and analytic SST)" ; shr_inputinfo_aqua_planet:units = "logical flag (0=false)" ; int shr_inputinfo_mss_irt ; shr_inputinfo_mss_irt:long_name = "Mass Store Retention period" ; shr_inputinfo_mss_irt:units = "days" ; char shr_inputinfo_case_desc(shr_character) ; shr_inputinfo_case_desc:long_name = "Case description" ; shr_inputinfo_case_desc:units = "string" ; shr_inputinfo_case_desc:nchars = 48 ; char shr_inputinfo_case_name(shr_character) ; shr_inputinfo_case_name:long_name = "Case identification name" ; shr_inputinfo_case_name:units = "string" ; shr_inputinfo_case_name:nchars = 6 ; char shr_inputinfo_mss_wpass(shr_character) ; shr_inputinfo_mss_wpass:long_name = "Mass Store write password" ; shr_inputinfo_mss_wpass:units = "string" ; shr_inputinfo_mss_wpass:nchars = 39 ; int shr_timemgr_clock_start_ymd ; shr_timemgr_clock_start_ymd:long_name = "Clock start date" ; shr_timemgr_clock_start_ymd:units = "date \[YYYYMMDD\]" ; int shr_timemgr_clock_start_tod ; shr_timemgr_clock_start_tod:long_name = "Clock start time of day" ; shr_timemgr_clock_start_tod:units = "seconds" ; int shr_timemgr_clock_ref_ymd ; shr_timemgr_clock_ref_ymd:long_name = "Clock reference date" ; shr_timemgr_clock_ref_ymd:units = "date \[YYYYMMDD\]" ; int shr_timemgr_clock_ref_tod ; shr_timemgr_clock_ref_tod:long_name = "Clock reference time of day" ; shr_timemgr_clock_ref_tod:units = "seconds" ; int shr_timemgr_clock_curr_ymd ; shr_timemgr_clock_curr_ymd:long_name = "Clock current date" ; shr_timemgr_clock_curr_ymd:units = "date \[YYYYMMDD\]" ; int shr_timemgr_clock_curr_tod ; shr_timemgr_clock_curr_tod:long_name = "Clock current time of day" ; shr_timemgr_clock_curr_tod:units = "seconds" ; int shr_timemgr_clock_dtime ; shr_timemgr_clock_dtime:long_name = "Clock time-step" ; shr_timemgr_clock_dtime:units = "seconds" ; int shr_timemgr_clock_restart_interval_sec ; shr_timemgr_clock_restart_interval_sec:long_name = "Clock restart alarm interval" ; shr_timemgr_clock_restart_interval_sec:units = "seconds" ; shr_timemgr_clock_restart_interval_sec:_FillValue = 0 ; int shr_timemgr_clock_restart_interval_months ; shr_timemgr_clock_restart_interval_months:long_name = "Clock restart alarm interval" ; shr_timemgr_clock_restart_interval_months:units = "months" ; int shr_timemgr_clock_restart_interval_years ; shr_timemgr_clock_restart_interval_years:long_name = "Clock restart alarm interval" ; shr_timemgr_clock_restart_interval_years:units = "years" ; shr_timemgr_clock_restart_interval_years:_FillValue = 0 ; int shr_timemgr_clock_restart_next_alarm_ymd ; shr_timemgr_clock_restart_next_alarm_ymd:long_name = "Restart alarm next alarm date" ; shr_timemgr_clock_restart_next_alarm_ymd:units = "date \[YYYYMMDD\]" ; shr_timemgr_clock_restart_next_alarm_ymd:_FillValue = 0 ; int shr_timemgr_clock_restart_next_alarm_tod ; shr_timemgr_clock_restart_next_alarm_tod:long_name = "Restart alarm next alarm time of day" ; shr_timemgr_clock_restart_next_alarm_tod:units = "seconds" ; shr_timemgr_clock_restart_next_alarm_tod:_FillValue = -1 ; char shr_timemgr_clock_info_desc(shr_character) ; shr_timemgr_clock_info_desc:long_name = "Description of this clock" ; shr_timemgr_clock_info_desc:units = "string" ; shr_timemgr_clock_info_desc:nchars = 17 ; char shr_timemgr_clock_info_calendar(shr_character) ; shr_timemgr_clock_info_calendar:long_name = "Type of calendar used" ; shr_timemgr_clock_info_calendar:units = "NO_LEAP or GREGORIAN" ; shr_timemgr_clock_info_calendar:nchars = 7 ; int shr_timemgr_clock_info_perpetual_run ; shr_timemgr_clock_info_perpetual_run:long_name = "Clock info flag for perpetual run mode" ; shr_timemgr_clock_info_perpetual_run:units = "logical flag (0=false)" ; int shr_timemgr_clock_info_perpetual_ymd ; shr_timemgr_clock_info_perpetual_ymd:long_name = "Clock info perpetual date" ; shr_timemgr_clock_info_perpetual_ymd:units = "date_\[YYYYMMDD\]" ; shr_timemgr_clock_info_perpetual_ymd:_FillValue = 0 ; int shr_timemgr_clock_info_orb_iyear_AD ; shr_timemgr_clock_info_orb_iyear_AD:long_name = "Clock info orbital year" ; shr_timemgr_clock_info_orb_iyear_AD:units = "Gregorian_year" ; shr_timemgr_clock_restart_orb_iyear_AD:_FillValue = -1 ; double shr_timemgr_clock_info_orb_obliq ; shr_timemgr_clock_info_orb_obliq:long_name = "Clock info orbital obliquity" ; shr_timemgr_clock_info_orb_obliq:units = "degrees" ; double shr_timemgr_clock_info_orb_eccen ; shr_timemgr_clock_info_orb_eccen:long_name = "Clock info orbital eccentricity" ; shr_timemgr_clock_info_orb_eccen:units = "ratio\[0-.1\]" ; double shr_timemgr_clock_info_orb_mvelp ; shr_timemgr_clock_info_orb_mvelp:long_name = "Clock info orbital moving vernal equinox at perihelion" ; shr_timemgr_clock_info_orb_mvelp:units = "degrees" ; data: shr_inputinfo_atm_adiabatic = 0 ; shr_inputinfo_atm_ideal_phys = 1 ; shr_inputinfo_aqua_planet = 0 ; shr_inputinfo_mss_irt = 4290 ; shr_inputinfo_case_desc = "this is the case description title for this case" ; shr_inputinfo_case_name = "csmrun" ; shr_inputinfo_mss_wpass = "testingasdfasdfasdfasdfasdfasdfasdfasdf" ; shr_timemgr_clock_start_ymd = 1231 ; shr_timemgr_clock_start_tod = 0 ; shr_timemgr_clock_ref_ymd = 1231 ; shr_timemgr_clock_ref_tod = 0 ; shr_timemgr_clock_curr_ymd = 10101 ; shr_timemgr_clock_curr_tod = 0 ; shr_timemgr_clock_dtime = 1200 ; shr_timemgr_clock_restart_interval_sec = 86400 ; shr_timemgr_clock_restart_interval_months = 0 ; shr_timemgr_clock_restart_interval_years = 0 ; shr_timemgr_clock_restart_next_alarm_ymd = 10102 ; shr_timemgr_clock_restart_next_alarm_tod = 0 ; shr_timemgr_clock_info_desc = "master test clock" ; shr_timemgr_clock_info_calendar = "NO_LEAP" ; shr_timemgr_clock_info_perpetual_run = 0 ; shr_timemgr_clock_info_perpetual_ymd = -417149203 ; shr_timemgr_clock_info_orb_iyear_AD = 1950 ; shr_timemgr_clock_info_orb_obliq = 23.4462712893979 ; shr_timemgr_clock_info_orb_eccen = 0.0167239329967327 ; shr_timemgr_clock_info_orb_mvelp = 102.039049517636 ; }