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 ;
}
  • No labels