module controlMod 3,15 !----------------------------------------------------------------------- !BOP ! ! !MODULE: controlMod ! ! !DESCRIPTION: ! Module which initializes run control variables. The following possible ! namelist variables are set default values and possibly read in on startup ! ! Note: For definitions of namelist variables see ! ../../bld/namelist_files/namelist_definition.xml ! Display the file in a browser to see it neatly formatted in html. ! ! !USES: use shr_kind_mod , only : r8 => shr_kind_r8, SHR_KIND_CL use clm_varpar , only : maxpatch_pft use clm_varctl , only : caseid, ctitle, nsrest, brnch_retain_casename, hostname, model_version=>version, & iulog, hist_crtinic, outnc_large_files, finidat, fsurdat, fatmgrid, fatmlndfrc, & fatmtopo, flndtopo, fpftdyn, fpftcon, nrevsn, & create_crop_landunit, allocate_all_vegpfts, fget_archdev, & co2_type, wrtdia, co2_ppmv, nsegspc, pertlim, & hist_pioflag, ncd_lowmem2d, ncd_pio_def, ncd_pio_UseRearranger, username, & ncd_pio_UseBoxRearr, ncd_pio_SerialCDF, ncd_pio_IODOF_rootonly, ncd_pio_DebugLevel, & ncd_pio_num_iotasks, fsnowaging, fsnowoptics, fglcmask, & faerdep use SurfaceAlbedoMod, only : albice #ifdef RTM use clm_varctl , only : frivinp_rtm, ice_runoff, rtm_nsteps #endif #ifdef CN use clm_varctl , only : scaled_harvest, fndepdat, fndepdyn, use_ndepstream use CNAllocationMod, only : Carbon_only #endif use clm_varctl , only : create_glacier_mec_landunit, glc_nec, glc_dyntopo, glc_smb, glc_topomax use spmdMod , only : masterproc use decompMod , only : clump_pproc use histFileMod , only : max_tapes, max_namlen, & hist_empty_htapes, hist_dov2xy, & hist_avgflag_pertape, hist_type1d_pertape, & hist_nhtfrq, hist_ndens, hist_mfilt, & hist_fincl1, hist_fincl2, hist_fincl3, & hist_fincl4, hist_fincl5, hist_fincl6, & hist_fexcl1, hist_fexcl2, hist_fexcl3, & hist_fexcl4, hist_fexcl5, hist_fexcl6 use restFileMod , only : rest_flag use shr_const_mod, only : SHR_CONST_CDAY use abortutils , only : endrun use UrbanMod , only : urban_hac, urban_traffic ! ! !PUBLIC TYPES: implicit none save ! ! !PUBLIC MEMBER FUNCTIONS: public :: control_setNL ! Set namelist filename public :: control_init ! initial run control information public :: control_print ! print run control information ! ! ! !REVISION HISTORY: ! Created by Mariana Vertenstein ! ! ! !PRIVATE TYPES: ! Namelist variables only used locally character(len= 7) :: runtyp(4) ! run type character(len=SHR_KIND_CL) :: NLFilename = 'lnd.stdin' ! Namelist filename #if (defined _OPENMP) integer, external :: omp_get_max_threads ! max number of threads that can execute ! concurrently in a single parallel region #endif !EOP !----------------------------------------------------------------------- contains !------------------------------------------------------------------------ !BOP ! ! !IROUTINE: control_setNL ! ! !INTERFACE: subroutine control_setNL( NLfile ) 1,3 implicit none ! ! !DESCRIPTION: ! Set the namelist filename to use ! ! ! !ARGUMENTS: character(len=*), intent(IN) :: NLFile ! Namelist filename ! ! !REVISION HISTORY: ! Created by Erik Kluzek ! ! ! !LOCAL VARIABLES: !EOP character(len=32) :: subname = 'control_setNL' ! subroutine name logical :: lexist ! File exists ! Error checking... if ( len_trim(NLFile) == 0 )then call endrun( subname//' error: nlfilename entered is not set' ) end if inquire (file = trim(NLFile), exist = lexist) if ( .not. lexist )then call endrun( subname//' error: NLfilename entered does NOT exist:'//trim(NLFile) ) end if if ( len_trim(NLFile) > len(NLFilename) )then call endrun( subname//' error: entered NLFile is too long' ) end if ! Set the filename NLFilename = NLFile end subroutine control_setNL !------------------------------------------------------------------------ !BOP ! ! !IROUTINE: control_init ! ! !INTERFACE: subroutine control_init( ) 1,19 ! ! !DESCRIPTION: ! Initialize CLM run control information ! ! !USES: use clm_time_manager , only : set_timemgr_init, is_perpetual, get_timemgr_defaults #if (defined CASA) use CASAMod , only : lnpp, lalloc, q10, spunup, fcpool #endif use fileutils , only : getavu, relavu use shr_string_mod , only : shr_string_getParentDir use clm_varctl , only : clmvarctl_init, set_clmvarctl implicit none ! include 'netcdf.inc' ! ! !REVISION HISTORY: ! Created by Mariana Vertenstein ! ! ! !LOCAL VARIABLES: !EOP character(len=32) :: starttype ! infodata start type integer :: i,j,n ! loop indices integer :: ierr ! error code integer :: unitn ! unit for namelist file character(len=32) :: subname = 'control_init' ! subroutine name !------------------------------------------------------------------------ ! ---------------------------------------------------------------------- ! Namelist Variables ! ---------------------------------------------------------------------- ! clm input datasets integer :: dtime ! Integer time-step namelist / clm_inparm/ & dtime namelist /clm_inparm/ & finidat, fsurdat, fatmgrid, fatmlndfrc, fatmtopo, flndtopo, & fpftcon, fpftdyn, nrevsn, & fsnowoptics, fsnowaging, fglcmask namelist /clm_inparm/ faerdep ! clm history, restart options namelist /clm_inparm/ & hist_empty_htapes, hist_dov2xy, & hist_avgflag_pertape, hist_type1d_pertape, & hist_nhtfrq, hist_ndens, hist_mfilt, & hist_fincl1, hist_fincl2, hist_fincl3, & hist_fincl4, hist_fincl5, hist_fincl6, & hist_fexcl1, hist_fexcl2, hist_fexcl3, & hist_fexcl4, hist_fexcl5, hist_fexcl6, & hist_crtinic, rest_flag, outnc_large_files, & hist_pioflag, ncd_lowmem2d, ncd_pio_def, & ncd_pio_UseRearranger, ncd_pio_UseBoxRearr, ncd_pio_SerialCDF, & ncd_pio_IODOF_rootonly, ncd_pio_DebugLevel, ncd_pio_num_iotasks ! clm bgc info #if (defined CASA) namelist /clm_inparm/ & lnpp, lalloc, q10, spunup, fcpool #endif #ifdef CN namelist /clm_inparm/ & scaled_harvest, fndepdat, fndepdyn, Carbon_only, use_ndepstream #endif namelist /clm_inparm / & co2_type ! River runoff #ifdef RTM namelist /clm_inparm / ice_runoff, frivinp_rtm, rtm_nsteps #endif ! clm glacier_mec info namelist /clm_inparm / & create_glacier_mec_landunit, glc_dyntopo, glc_smb ! clm other options integer :: override_nsrest ! If want to override the startup type sent from driver namelist /clm_inparm/ & clump_pproc, wrtdia, pertlim, & create_crop_landunit, nsegspc, co2_ppmv, override_nsrest, & albice ! clm urban options namelist /clm_inparm/ & urban_hac, urban_traffic ! ---------------------------------------------------------------------- ! Default values ! ---------------------------------------------------------------------- if (masterproc) then write(iulog,*) 'Attempting to initialize run control settings .....' endif runtyp(0 + 1) = 'initial' runtyp(1 + 1) = 'restart' runtyp(3 + 1) = 'branch ' #if (defined CASA) lnpp = 2 lalloc = 1 q10 = 2.0_r8 ! set Q10 to 2.0 03/11/19 spunup = 0 fcpool = ' ' #endif ! Set clumps per procoessor #if (defined _OPENMP) clump_pproc = omp_get_max_threads() #else clump_pproc = 1 #endif override_nsrest = nsrest if (masterproc) then ! ---------------------------------------------------------------------- ! Read namelist from standard input. ! ---------------------------------------------------------------------- if ( len_trim(NLFilename) == 0 )then call endrun( subname//' error: nlfilename not set' ) end if unitn = getavu() write(iulog,*) 'Read in clm_inparm namelist from: ', trim(NLFilename) open( unitn, file=trim(NLFilename), status='old' ) ierr = 1 do while ( ierr /= 0 ) read(unitn, clm_inparm, iostat=ierr) if (ierr < 0) then call endrun( subname//' encountered end-of-file on namelist read' ) endif end do call relavu( unitn ) ! ---------------------------------------------------------------------- ! Consistency checks on input namelist. ! ---------------------------------------------------------------------- call set_timemgr_init( dtime_in=dtime ) #if (defined RTM) || (defined CNDV) if (is_perpetual()) then write(iulog,*)'RTM or CNDV cannot be defined in perpetual mode' call endrun() end if #endif if (is_perpetual()) then if (finidat == ' ') then write(iulog,*)'must specify initial dataset for perpetual mode' call endrun() end if end if if (urban_traffic) then write(iulog,*)'Urban traffic fluxes are not implemented currently' call endrun() end if ! History and restart files do i = 1, max_tapes if (hist_nhtfrq(i) == 0) then hist_mfilt(i) = 1 else if (hist_nhtfrq(i) < 0) then hist_nhtfrq(i) = nint(-hist_nhtfrq(i)*SHR_CONST_CDAY/(24._r8*dtime)) endif end do ! Override start-type (can only override to branch (3) and only ! if the driver is a startup type if ( override_nsrest /= nsrest )then if ( override_nsrest /= 3 .and. nsrest /= 0 )then call endrun( subname//' ERROR: can ONLY override clm start-type ' // & 'to branch type and ONLY if driver is a startup type' ) end if call set_clmvarctl( nsrest_in=override_nsrest ) end if endif ! end of if-masterproc if-block call clmvarctl_init( masterproc, dtime ) ! ---------------------------------------------------------------------- ! Broadcast all control information if appropriate ! ---------------------------------------------------------------------- call control_spmd() if (masterproc) then write(iulog,*) 'Successfully initialized run control settings' write(iulog,*) endif end subroutine control_init !------------------------------------------------------------------------ !BOP ! ! !IROUTINE: control_spmd ! ! !INTERFACE: subroutine control_spmd() 1,3 ! ! !DESCRIPTION: ! Distribute namelist data all processors. All program i/o is ! funnelled through the master processor. Processor 0 either ! reads restart/history data from the disk and distributes ! it to all processors, or collects data from ! all processors and writes it to disk. ! ! !USES: ! #if (defined CASA) use CASAMod, only : lnpp, lalloc, q10, spunup #endif use spmdMod, only : mpicom, MPI_CHARACTER, MPI_INTEGER, MPI_LOGICAL, MPI_REAL8 use clm_varctl, only : single_column, scmlat, scmlon, rpntfil ! ! !ARGUMENTS: implicit none ! ! !REVISION HISTORY: ! Created by Mariana Vertenstein ! ! ! !LOCAL VARIABLES: !EOP integer ier !error code !----------------------------------------------------------------------- ! run control variables call mpi_bcast (caseid, len(caseid), MPI_CHARACTER, 0, mpicom, ier) call mpi_bcast (ctitle, len(ctitle), MPI_CHARACTER, 0, mpicom, ier) call mpi_bcast (model_version, len(model_version), MPI_CHARACTER, 0, mpicom, ier) call mpi_bcast (hostname, len(hostname), MPI_CHARACTER, 0, mpicom, ier) call mpi_bcast (username, len(username), MPI_CHARACTER, 0, mpicom, ier) call mpi_bcast (nsrest, 1, MPI_INTEGER , 0, mpicom, ier) ! initial file variables call mpi_bcast (nrevsn , len(nrevsn) , MPI_CHARACTER, 0, mpicom, ier) call mpi_bcast (finidat , len(finidat) , MPI_CHARACTER, 0, mpicom, ier) call mpi_bcast (fsurdat , len(fsurdat) , MPI_CHARACTER, 0, mpicom, ier) call mpi_bcast (fatmgrid, len(fatmgrid), MPI_CHARACTER, 0, mpicom, ier) call mpi_bcast (fatmlndfrc,len(fatmlndfrc),MPI_CHARACTER, 0, mpicom, ier) call mpi_bcast (fatmtopo, len(fatmtopo) ,MPI_CHARACTER, 0, mpicom, ier) call mpi_bcast (flndtopo, len(flndtopo) ,MPI_CHARACTER, 0, mpicom, ier) #ifdef CN call mpi_bcast (use_ndepstream, 1, MPI_LOGICAL, 0, mpicom, ier) call mpi_bcast (fndepdat, len(fndepdat), MPI_CHARACTER, 0, mpicom, ier) call mpi_bcast (fndepdyn, len(fndepdyn), MPI_CHARACTER, 0, mpicom, ier) #endif call mpi_bcast (fpftcon , len(fpftcon) , MPI_CHARACTER, 0, mpicom, ier) call mpi_bcast (fpftdyn , len(fpftdyn) , MPI_CHARACTER, 0, mpicom, ier) call mpi_bcast (fsnowoptics, len(fsnowoptics), MPI_CHARACTER, 0, mpicom, ier) call mpi_bcast (fsnowaging, len(fsnowaging), MPI_CHARACTER, 0, mpicom, ier) call mpi_bcast (fglcmask, len(fglcmask), MPI_CHARACTER, 0, mpicom, ier) call mpi_bcast (fget_archdev, len(fget_archdev), MPI_CHARACTER, 0, mpicom, ier) call mpi_bcast (faerdep, len(faerdep), MPI_CHARACTER, 0, mpicom, ier) ! River runoff dataset and control flag #if (defined RTM) call mpi_bcast (frivinp_rtm, len(frivinp_rtm), MPI_CHARACTER, 0, mpicom, ier) call mpi_bcast (ice_runoff, 1, MPI_LOGICAL, 0, mpicom, ier) call mpi_bcast (rtm_nsteps, 1, MPI_INTEGER, 0, mpicom, ier) #endif ! Landunit generation call mpi_bcast(create_crop_landunit, 1, MPI_LOGICAL, 0, mpicom, ier) call mpi_bcast(allocate_all_vegpfts, 1, MPI_LOGICAL, 0, mpicom, ier) ! BGC call mpi_bcast (co2_type, len(co2_type), MPI_CHARACTER, 0, mpicom, ier) #ifdef CN call mpi_bcast (scaled_harvest, 1, MPI_LOGICAL, 0, mpicom, ier) call mpi_bcast (Carbon_only, 1, MPI_LOGICAL, 0, mpicom, ier) #endif ! physics variables call mpi_bcast (urban_hac , len(urban_hac), MPI_CHARACTER, 0, mpicom, ier) call mpi_bcast (urban_traffic , 1, MPI_LOGICAL, 0, mpicom, ier) call mpi_bcast (nsegspc , 1, MPI_INTEGER, 0, mpicom, ier) call mpi_bcast (wrtdia , 1, MPI_LOGICAL, 0, mpicom, ier) call mpi_bcast (single_column,1, MPI_LOGICAL, 0, mpicom, ier) call mpi_bcast (scmlat, 1, MPI_REAL8, 0, mpicom, ier) call mpi_bcast (scmlon, 1, MPI_REAL8, 0, mpicom, ier) call mpi_bcast (co2_ppmv , 1, MPI_REAL8, 0, mpicom, ier) call mpi_bcast (albice , 2, MPI_REAL8, 0, mpicom, ier) call mpi_bcast (hist_pioflag, 1, MPI_LOGICAL, 0, mpicom, ier) call mpi_bcast (ncd_lowmem2d, 1, MPI_LOGICAL, 0, mpicom, ier) call mpi_bcast (ncd_pio_def , 1, MPI_LOGICAL, 0, mpicom, ier) call mpi_bcast (ncd_pio_UseRearranger , 1, MPI_LOGICAL, 0, mpicom, ier) call mpi_bcast (ncd_pio_UseBoxRearr , 1, MPI_LOGICAL, 0, mpicom, ier) call mpi_bcast (ncd_pio_SerialCDF , 1, MPI_LOGICAL, 0, mpicom, ier) call mpi_bcast (ncd_pio_IODOF_rootonly, 1, MPI_LOGICAL, 0, mpicom, ier) call mpi_bcast (ncd_pio_DebugLevel , 1, MPI_INTEGER, 0, mpicom, ier) call mpi_bcast (ncd_pio_num_iotasks , 1, MPI_INTEGER, 0, mpicom, ier) ! glacier_mec variables call mpi_bcast (create_glacier_mec_landunit, 1, MPI_LOGICAL, 0, mpicom, ier) call mpi_bcast (glc_nec, 1, MPI_INTEGER, 0, mpicom, ier) call mpi_bcast (glc_dyntopo, 1, MPI_LOGICAL, 0, mpicom, ier) call mpi_bcast (glc_smb, 1, MPI_LOGICAL, 0, mpicom, ier) call mpi_bcast (glc_topomax, size(glc_topomax), MPI_REAL8, 0, mpicom, ier) ! history file variables call mpi_bcast (outnc_large_files, 1, MPI_LOGICAL, 0, mpicom, ier) call mpi_bcast (hist_empty_htapes, 1, MPI_LOGICAL, 0, mpicom, ier) call mpi_bcast (hist_dov2xy, size(hist_dov2xy), MPI_LOGICAL, 0, mpicom, ier) call mpi_bcast (hist_nhtfrq, size(hist_nhtfrq), MPI_INTEGER, 0, mpicom, ier) call mpi_bcast (hist_mfilt, size(hist_mfilt), MPI_INTEGER, 0, mpicom, ier) call mpi_bcast (hist_ndens, size(hist_ndens), MPI_INTEGER, 0, mpicom, ier) call mpi_bcast (hist_crtinic, len(hist_crtinic), MPI_CHARACTER, 0, mpicom, ier) call mpi_bcast (hist_avgflag_pertape, size(hist_avgflag_pertape), MPI_CHARACTER, 0, mpicom, ier) call mpi_bcast (hist_type1d_pertape, max_namlen*size(hist_type1d_pertape), MPI_CHARACTER, 0, mpicom, ier) call mpi_bcast (hist_fexcl1, max_namlen*size(hist_fexcl1), MPI_CHARACTER, 0, mpicom, ier) call mpi_bcast (hist_fexcl2, max_namlen*size(hist_fexcl2), MPI_CHARACTER, 0, mpicom, ier) call mpi_bcast (hist_fexcl3, max_namlen*size(hist_fexcl3), MPI_CHARACTER, 0, mpicom, ier) call mpi_bcast (hist_fexcl4, max_namlen*size(hist_fexcl4), MPI_CHARACTER, 0, mpicom, ier) call mpi_bcast (hist_fexcl5, max_namlen*size(hist_fexcl5), MPI_CHARACTER, 0, mpicom, ier) call mpi_bcast (hist_fexcl6, max_namlen*size(hist_fexcl6), MPI_CHARACTER, 0, mpicom, ier) call mpi_bcast (hist_fincl1, (max_namlen+2)*size(hist_fincl1), MPI_CHARACTER, 0, mpicom, ier) call mpi_bcast (hist_fincl2, (max_namlen+2)*size(hist_fincl2), MPI_CHARACTER, 0, mpicom, ier) call mpi_bcast (hist_fincl3, (max_namlen+2)*size(hist_fincl3), MPI_CHARACTER, 0, mpicom, ier) call mpi_bcast (hist_fincl4, (max_namlen+2)*size(hist_fincl4), MPI_CHARACTER, 0, mpicom, ier) call mpi_bcast (hist_fincl5, (max_namlen+2)*size(hist_fincl5), MPI_CHARACTER, 0, mpicom, ier) call mpi_bcast (hist_fincl6, (max_namlen+2)*size(hist_fincl6), MPI_CHARACTER, 0, mpicom, ier) call mpi_bcast (rest_flag, 1, MPI_LOGICAL, 0, mpicom, ier) ! restart file variables call mpi_bcast (rpntfil, len(rpntfil), MPI_CHARACTER, 0, mpicom, ier) ! clump decomposition variables call mpi_bcast (clump_pproc, 1, MPI_INTEGER, 0, mpicom, ier) ! error growth perturbation limit call mpi_bcast (pertlim, 1, MPI_REAL8, 0, mpicom, ier) #if (defined CASA) call mpi_bcast (lnpp , 1, MPI_INTEGER, 0, mpicom, ier) call mpi_bcast (lalloc, 1, MPI_INTEGER, 0, mpicom, ier) call mpi_bcast (spunup, 1, MPI_INTEGER, 0, mpicom, ier) call mpi_bcast (q10 , 1, MPI_REAL8 , 0, mpicom, ier) #endif end subroutine control_spmd !------------------------------------------------------------------------ !BOP ! ! !IROUTINE: control_print ! ! !INTERFACE: subroutine control_print () 1,4 ! ! !DESCRIPTION: ! Write out the clm namelist run control variables ! ! !USES: ! use clm_varctl, only : source, rpntdir, rpntfil #ifdef CN use clm_varctl, only : scaled_harvest use CNAllocationMod, only : Carbon_only #endif #ifdef RTM use clm_varctl, only : ice_runoff #endif ! !ARGUMENTS: implicit none ! ! !REVISION HISTORY: ! Created by Mariana Vertenstein ! ! ! !LOCAL VARIABLES: !EOP integer i !loop index !------------------------------------------------------------------------ write(iulog,*) 'define run:' write(iulog,*) ' source = ',trim(source) write(iulog,*) ' model_version = ',trim(model_version) write(iulog,*) ' run type = ',runtyp(nsrest+1) write(iulog,*) ' case title = ',trim(ctitle) write(iulog,*) ' username = ',trim(username) write(iulog,*) ' hostname = ',trim(hostname) write(iulog,*) 'input data files:' write(iulog,*) ' PFT physiology = ',trim(fpftcon) if (fsurdat == ' ') then write(iulog,*) ' fsurdat, surface dataset not set' else write(iulog,*) ' surface data = ',trim(fsurdat) end if if (flndtopo == ' ') then write(iulog,*) ' flndtopo not set' else write(iulog,*) ' land topographic data = ',trim(flndtopo) end if if (fatmgrid == ' ') then write(iulog,*) ' fatmgrid not set, using fsurdat' fatmgrid = fsurdat write(iulog,*) ' atm grid data = ',trim(fatmgrid) else write(iulog,*) ' atm grid data = ',trim(fatmgrid) end if if (fatmlndfrc == ' ') then write(iulog,*) ' fatmlndfrc not set, using fatmgrid' fatmlndfrc = fatmgrid write(iulog,*) ' land frac data = ',trim(fatmlndfrc) else write(iulog,*) ' land frac data = ',trim(fatmlndfrc) end if if (fatmtopo == ' ') then write(iulog,*) ' fatmtopo not set' else write(iulog,*) ' atm topographic data = ',trim(fatmtopo) end if #ifdef CN if (fndepdat == ' ') then write(iulog,*) ' NOT using input data for nitrogen deposition' else write(iulog,*) ' nitrogen deposition data = ',trim(fndepdat) endif if (fndepdyn == ' ') then write(iulog,*) ' NOT using dynamic input data for nitrogen deposition' else write(iulog,*) ' dynamic nitrogen deposition data = ',trim(fndepdyn) end if if (scaled_harvest)then write(iulog,*) ' harvesting will be scaled by coefficients from Johann Feddema' else write(iulog,*) ' harvesting will NOT be scaled' end if if (Carbon_only)then write(iulog,*) ' prognostic Nitrogen model will be turned off' end if #endif if (fsnowoptics == ' ') then write(iulog,*) ' snow optical properties file NOT set' else write(iulog,*) ' snow optical properties file = ',trim(fsnowoptics) endif if (fsnowaging == ' ') then write(iulog,*) ' snow aging parameters file NOT set' else write(iulog,*) ' snow aging parameters file = ',trim(fsnowaging) endif if (fglcmask == ' ') then write(iulog,*) ' glacier mask file NOT set' else write(iulog,*) ' glacier mask file = ',trim(fglcmask) endif if (faerdep == ' ') then write(iulog,*) ' aerosol deposition file NOT set' else write(iulog,*) ' aerosol deposition file = ',trim(faerdep) endif if (create_glacier_mec_landunit) then write(iulog,*) ' number of elevation classes =', glc_nec if (glc_dyntopo) then write(iulog,*) ' CLM glacier topography will evolve dynamically' else write(iulog,*) ' CLM glacier topography will NOT evolve dynamically' endif if (glc_smb) then write(iulog,*) ' Surface mass balance will be passed to ice sheet model' else write(iulog,*) ' Positive-degree-day info will be passed to ice sheet model' endif endif if (nsrest == 0 .and. finidat == ' ') write(iulog,*) ' initial data created by model' if (nsrest == 0 .and. finidat /= ' ') write(iulog,*) ' initial data = ',trim(finidat) if (nsrest /= 0) write(iulog,*) ' restart data = ',trim(nrevsn) write(iulog,*) ' atmospheric forcing data is from sequential ccsm model' #if (defined RTM) if (frivinp_rtm /= ' ') write(iulog,*) ' RTM river data = ',trim(frivinp_rtm) #endif write(iulog,*) 'Restart parameters:' write(iulog,*)' restart pointer file directory = ',trim(rpntdir) write(iulog,*)' restart pointer file name = ',trim(rpntfil) if ( outnc_large_files ) then write(iulog,*)'Large file support for output files is ON' end if if ( trim(fget_archdev) /= "null:" ) then write(iulog,*)'try to retreive input files that do NOT exist from archival device: ', trim(fget_archdev) end if if (hist_crtinic == 'MONTHLY') then write(iulog,*)'initial datasets will be written monthly' else if (hist_crtinic == 'YEARLY') then write(iulog,*)'initial datasets will be written yearly' else if (hist_crtinic == 'DAILY') then write(iulog,*)'initial datasets will be written daily' else if (hist_crtinic == '6-HOURLY') then write(iulog,*)'initial datasets will be written 6-hourly' else write(iulog,*)'initial datasets will not be produced' endif write(iulog,*) 'model physics parameters:' #if (defined PERGRO) write(iulog,*) ' flag for random perturbation test is set' #else write(iulog,*) ' flag for random perturbation test is not set' #endif write(iulog,*) ' CO2 volume mixing ratio (umol/mol) = ', co2_ppmv write(iulog,*) ' land-ice albedos (unitless 0-1) = ', albice write(iulog,*) ' urban air conditioning/heating and wasteheat = ', urban_hac write(iulog,*) ' urban traffic flux = ', urban_traffic #if (defined RTM) if (rtm_nsteps > 1) then write(iulog,*)'river runoff calculation performed only every ',rtm_nsteps,' nsteps' else write(iulog,*)'river runoff calculation performed every time step' endif if ( ice_runoff ) then write(iulog,*)'Snow capping will flow out in frozen river runoff' else write(iulog,*)'Snow capping will flow out in liquid river runoff' endif #endif if (nsrest == 1) then write(iulog,*) 'restart warning:' write(iulog,*) ' Namelist not checked for agreement with initial run.' write(iulog,*) ' Namelist should not differ except for ending time step and run type' end if if (nsrest == 3) then write(iulog,*) 'branch warning:' write(iulog,*) ' Namelist not checked for agreement with initial run.' write(iulog,*) ' Surface data set and reference date should not differ from initial run' end if if ( pertlim /= 0.0_r8 ) & write(iulog,*) ' perturbation limit = ',pertlim write(iulog,*) ' maxpatch_pft = ',maxpatch_pft write(iulog,*) ' allocate_all_vegpfts = ',allocate_all_vegpfts write(iulog,*) ' nsegspc = ',nsegspc !tcx for debugging write(iulog,*) 'history/PIO parameters:' write(iulog,*) ' hist_pioflag = ', hist_pioflag write(iulog,*) ' ncd_lowmem2d = ', ncd_lowmem2d write(iulog,*) ' ncd_pio_def = ', ncd_pio_def write(iulog,*) ' ncd_pio_UseRearranger = ', ncd_pio_UseRearranger write(iulog,*) ' ncd_pio_UseBoxRearr = ', ncd_pio_UseBoxRearr write(iulog,*) ' ncd_pio_SerialCDF = ', ncd_pio_SerialCDF write(iulog,*) ' ncd_pio_IODOF_rootonly = ', ncd_pio_IODOF_rootonly write(iulog,*) ' ncd_pio_DebugLevel = ', ncd_pio_DebugLevel write(iulog,*) ' ncd_pio_num_iotasks = ', ncd_pio_num_iotasks end subroutine control_print end module controlMod