Hi Ben
Currently I’m using CMAQ 5.0.2 with cb05tucl_ae6_aq mechanism and compiled with gcc-gfortran. Here’s my runscript:
RUNSCRIPT
#! /bin/csh -f
====================== CCTMv5.0.2 Run Script ======================
Usage: run.cctm >&! cctm_D502a.log &
The following environment variables must be set for this script to
execute properly:
setenv M3DATA = input/output data directory
To report problems or request help with this script/program:
===================================================================
#> Source the config.cmaq file to set the run environment
#source …/config.cmaq
Set Input variables from config.cmaq
set M3HOME=/SIMCAB/transporte/BenchMark/CMAQ_v5.0.2
set M3MODEL=$M3HOME/models
set M3CCTM=$M3HOME/scripts/cctm
set M3DATA=$M3HOME/data
set system="/bin/uname -i
"
set bld_os="/bin/uname -s``/bin/uname -r | cut -d. -f1
"
set lib_basedir=$M3HOME/lib
set M3LIB=$M3HOME/lib/x86_64/gcc
set WORK=M3HOME/scripts
set compiler=gcc
set EXEC_ID={bld_os}_{system}{compiler}
setenv MPI_INC $M3LIB/mpich/include
Set External Variables
set SDATE=2018-06-02
set initj=date -d $SDATE +%j
#export tdyj=date -d 2018-01-01 +%j
set i=0
set today=date -d "$SDATE +${i}days" +%Y%m%d
set tomorrow=date -d "$today +1day" +%Y%m%d
set yesterday=date -d "$today -1day" +%Y%m%d
set jdate=date -d "$SDATE +${i}days" +%Y%j
set gdate=date -d "$SDATE +${i}days" +%Y%m%d
#> Check that M3DATA is set:
if ( ! -e $M3DATA ) then
echo " $M3DATA path does not exist"
exit 1
endif
echo " “; echo " Input data path, M3DATA set to $M3DATA”; echo " "
set PROC = mpi #> serial or mpi
set APPL = D502a
set CFG = CMAQ-BENCHMARK
set MECH = cb05tucl_ae6_aq
set EXEC = CCTM_${APPL}_$EXEC_ID
#> horizontal domain decomposition
if ( $PROC == serial ) then
setenv NPCOL_NPROW “1 1”; set NPROCS = 1 # single processor setting
else
setenv NPCOL_NPROW “4 4”; set NPROCS = 16
endif
#> Set the working directory:
set BASE = M3HOME/scripts/cctm
set BLD = {BASE}/BLD_${APPL}
cd $BASE; date; cat $BASE/cfg.$CFG; echo " "; set echo
#> timestep run parameters
#Calling initial simulation date
set SDATEini = $SDATE
#> timestep run parameters
set STDATE = date -d "$today" +%Y%j
# beginning date
set STDATEm1 = date -d "$today -1day" +%Y%j
set STTIME = 000000 # beginning GMT time (HHMMSS)
set NSTEPS = 240000 # time duration (HHMMSS) for this run
set TSTEP = 010000 # output time step interval (HHMMSS) #changed 010000 to 000000
set YEAR = date -d "$today" +%Y
set YR = date -d "$today" +%y
set MONTH = date -d "$today" +%m
set DAY = date -d "$today" +%d
set yesterday = yesterday
set YMD = {YEAR}{MONTH}{DAY}
=====================================================================
CCTM Configuration Options
=====================================================================
#setenv LOGFILE $BASE/$APPL.log #> log file name; uncomment to write standard output to a log, otherwise write to screen
setenv GRIDDESC $M3DATA/mcip/GRIDDESC #> horizontal grid defn
setenv GRID_NAME CMAQBogota #> check GRIDDESC file for GRID_NAME options
#setenv CONC_SPCS “O3 NO ANO3I ANO3J NO2 FORM ISOP ANH4J ASO4I ASO4J” #> CONC file species; comment or set to “ALL” to write all species to CONC
#setenv CONC_BLEV_ELEV " 1 4" #> CONC file layer range; comment to write all layers to CONC
#setenv AVG_CONC_SPCS “O3 NO CO NO2 ASO4I ASO4J NH3” #> ACONC file species; comment or set to “ALL” to write all species to ACONC
setenv AVG_CONC_SPCS “ALL”
setenv CTM_EMLAYS 1
setenv ACONC_BLEV_ELEV " 1 1" #> ACONC file layer range; comment to write all layers to ACONC
#setenv ACONC_END_TIME Y #> override default beginning ACON timestamp [ default: N ]
setenv CTM_MAXSYNC 720 #> max sync time step (sec) [default: 720]
setenv CTM_MINSYNC 60 #> min sync time step (sec) [default: 60]
setenv CTM_CKSUM Y #> write cksum report [ default: Y ]
setenv CLD_DIAG N #> write cloud diagnostic file [ default: N ]
setenv CTM_AERDIAG N #> aerosol diagnostic file [ default: N ]
setenv CTM_PHOTDIAG N #> photolysis diagnostic file [ default: N ]
setenv CTM_SSEMDIAG N #> sea-salt emissions diagnostic file [ default: N ]
setenv CTM_WB_DUST N #> use inline windblown dust emissions [ default: Y ]
setenv CTM_ERODE_AGLAND N #> use agricultural activity for windblown dust [ default: N ]; ignore if CTM_WB_DUST = N
setenv CTM_DUSTEM_DIAG N #> windblown dust emissions diagnostic file [ default: N ]; ignore if CTM_WB_DUST = N
setenv CTM_LTNG_NO N #> turn on lightning NOx [ default: N ]
setenv CTM_WVEL N #> save derived vertical velocity component to conc file [ default: N ]
#setenv KZMIN Y #> use Min Kz option in edyintb [ default: Y ], otherwise revert to Kz0UT
setenv CTM_ILDEPV Y #> calculate in-line deposition velocities [ default: Y ]
setenv CTM_MOSAIC N #> landuse specific deposition velocities [ default: N ]
setenv CTM_ABFLUX N #> Ammonia bi-directional flux for in-line deposition velocities [ default: N ]; ignore if CTM_ILDEPV = N
setenv CTM_HGBIDI N #> Mercury bi-directional flux for in-line deposition velocities [ default: N ]; ignore if CTM_ILDEPV = N
setenv CTM_SFC_HONO Y #> Surface HONO interaction [ default: Y ]; ignore if CTM_ILDEPV = N
setenv CTM_DEPV_FILE N #> write diagnostic file for deposition velocities [ default: N ]
setenv CTM_BIOGEMIS N #> calculate in-line biogenic emissions [ default: N ]
#setenv B3GTS_DIAG Y #> write biogenic mass emissions diagnostic file [ default: N ]; ignore if CTM_BIOGEMIS = N
setenv CTM_PT3DEMIS N #> calculate in-line plume rise for elevated point emissions [ default: N ]
#setenv PT3DDIAG Y #> optional 3d point source emissions diagnostic file [ default: N]; ignore if CTM_PT3DEMIS = N
#setenv PT3DFRAC N #> optional layer fractions diagnostic (play) file(s) [ default: N]; ignore if CTM_PT3DEMIS = N
setenv IOAPI_LOG_WRITE F #> turn on excess WRITE3 logging [ options: T | F ]
setenv FL_ERR_STOP N #> stop on inconsistent input files
setenv PROMPTFLAG F #> turn on I/O-API PROMPT*FILE interactive mode [ options: T | F ]
setenv IOAPI_OFFSET_64 NO #> support large timestep records (>2GB/timestep record) [ options: YES | NO ]
setenv EXECUTION_ID $EXEC #> define the model execution id
set DISP = delete #> [ delete | update | keep ] existing output files
=====================================================================
#> Input/Output Directories
=====================================================================
set ICpath = $M3DATA/icbc/icon_geos/d01 #> initial conditions input directory
set BCpath = $M3DATA/icbc/bcon_geos/d01 #> boundary conditions input directory
set EMISpath = $M3DATA/emis #> surface emissions input directory
set IN_PTpath = $M3DATA/emis #> elevated emissions input directory (in-line point only)
set IN_LTpath = $M3DATA/lightning #> lightning NOx input directory
set METpath = $M3DATA/mcip #> meteorology input directory
set JVALpath = $M3DATA/jproc #> offline photolysis rate table directory
set OMIpath = $M3DATA/raw/phot #> ozone columne data for the photolysis model
set LUpath = $M3DATA/dust #> BELD landuse data for windblown dust model
set SZpath = $M3DATA/ocean #> Surf zone file for in-line seasalt emissions
set OUTDIR = $M3DATA/cctm_out #> output file directory
=====================================================================
#> Input Files
=====================================================================
#> Initial conditions
set ICFILE = ts${YEAR}{MONTH}{DAY}.ICON.d01.nc
#> Boundary conditions
set BCFILE = ts.proncat.BCON.d01.nc
#> Off-line photolysis rates
set JVALfile = JTABLE_${STDATE}
#> Ozone column data
set OMIfile = OMI.dat
#> MCIP meteorology files
set EXTN = WRFd01_{YEAR}_{MONTH}_${DAY}
setenv GRID_DOT_2D METpath/GRIDDOT2D_{EXTN}
setenv GRID_CRO_2D METpath/GRIDCRO2D_{EXTN}
setenv MET_CRO_2D METpath/METCRO2D_{EXTN}
setenv MET_CRO_3D METpath/METCRO3D_{EXTN}
setenv MET_DOT_3D METpath/METDOT3D_{EXTN}
setenv MET_BDY_3D METpath/METBDY3D_{EXTN}
#> Emissions files
setenv EMISDATE {YEAR}{MONTH}${DAY}
if ( CTM_PT3DEMIS == 'N' ) then
set EMISfile = emis-d01-CMAQ-MERGED-{STDATE}-mol-diurnal.nc #> Offline 3d emissions file name
else
#> In-line emissions configuration
set CASE1 = 12US1_C25_2006am
set CASE2 = 12US1_cmaq_cb05_tx_C25_2006am
setenv CASE ${EMISDATE}CASE2
set EMISfile = emis_mole_all_{CASE}.ncf #> Surface emissions
setenv NPTGRPS 5 #> Number of elevated source groups
setenv STK_GRPS_01 IN_PTpath/stack_groups_ptnonipm_{CASE1}.ncf
setenv STK_GRPS_02 IN_PTpath/stack_groups_ptipm_{CASE1}.ncf
setenv STK_GRPS_03 IN_PTpath/stack_groups_othpt_{CASE1}.ncf
setenv STK_GRPS_04 IN_PTpath/stack_groups_seca_c3_{CASE1}.ncf
setenv STK_GRPS_05 IN_PTpath/stack_groups_ptfire_{EMISDATE}${CASE1}.ncf
setenv LAYP_STTIME $STTIME
setenv LAYP_NSTEPS $NSTEPS
setenv STK_EMIS_01 IN_PTpath/inln_mole_ptnonipm_{CASE}.ncf
setenv STK_EMIS_02 IN_PTpath/inln_mole_ptipm_{CASE}.ncf
setenv STK_EMIS_03 IN_PTpath/inln_mole_othpt_{CASE}.ncf
setenv STK_EMIS_04 IN_PTpath/inln_mole_seca_c3_{CASE}.ncf
setenv STK_EMIS_05 IN_PTpath/inln_mole_ptfire_{CASE}.ncf
setenv LAYP_STDATE $STDATE
endif
#> Lightning NOx configuration
if ( $CTM_LTNG_NO == ‘Y’ ) then
setenv LTNGNO $IN_LTpath/nox_CMAQ-BENCHMARK.35L.$EMISDATE #> offline calculated lightning NOx
setenv LTNGNO “InLine” #> set LTNGNO to “Inline” to activate in-line calculation
#> In-line lightning NOx options
setenv LTNGPARAM N #> use lightning parameter file? [ default: Y ]
setenv LTNGPARM_FILE $M3DATA/params/LTNG_RATIO.2004.$MONTH.ioapi #> lightning parameter file; ignore if LTNGPARAM = N
setenv LTNGDIAG N #> write lightning diagnostic file [ default: N ]
setenv LTNGOUT $OUTDIR/EXEC.LTNGDIAG.{CFG}_${EMISDATE} #> lightning diagnostic file; ignore if LTNGDIAG = N
endif
#> In-line biogenic emissions configuration
if ( CTM_BIOGEMIS == 'Y' ) then
set GSPROpath = {M3DATA}/emis
setenv GSPRO GSPROpath/gspro_cb05soa_notoxics_cmaq_poc_09nov2007.txt
set IN_BEISpath = {M3DATA}/emis
setenv B3GRD $IN_BEISpath/b3grd_CMAQ-BENCHMARK_C70_2006am_Fulltox.ncf
setenv BIOG_SPRO B10C5 # speciation profile to use for biogenics
setenv BIOSW_YN N # use frost date switch [ default: Y ]
setenv BIOSEASON $IN_BEISpath/bioseason.cmaq.2002_02b_CMAQ-BENCHMARK_v31.ncf #> ignore season switch file if BIOSW_YN = N
setenv SUMMER_YN Y # Use summer normalized emissions? [ default: Y ]
setenv PX_VERSION N # MCIP is PX version? [ default: N ]
setenv B3GTS_DIAG Y #> beis mass emissions diagnostic file [ default: N ]
setenv INITIAL_RUN Y # non-existent or not using SOILINP [ default: N ]; default uses SOILINP
setenv SOILINP $OUTDIR/EXEC.SOILINP.{CFG}_${EMISDATE} # Biogenic NO soil input file; ignore if INITIAL_RUN = Y
endif
#> Windblown dust emissions configuration
if ( $CTM_WB_DUST == ‘Y’ ) then
setenv DUST_LU_1 $LUpath/beld3_CMAQ-BENCHMARK_output_a.ncf
setenv DUST_LU_2 $LUpath/beld3_CMAQ-BENCHMARK_output_tot.ncf
if ( CTM_ERODE_AGLAND == 'Y' ) then
setenv CROPMAP01 {M3DATA}/crop/BeginPlanting_12km_CMAQ-BENCHMARK
setenv CROPMAP04 {M3DATA}/crop/EndPlanting_12km_CMAQ-BENCHMARK
setenv CROPMAP08 {M3DATA}/crop/EndHarvesting_12km_CMAQ-BENCHMARK
endif
endif
#> In-line sea salt emisisions configuration
setenv OCEAN_1 {EMISpath}/CMAQ-BOGOTA_d01_surf_{STDATE}.nc #> horizontal grid-dependent surf zone file
=====================================================================
#> Output Files
=====================================================================
#> set output file name extensions
setenv CTM_APPL {CFG}_{YMD}
#> set output file names
set CONCfile = EXEC.CONC.{CTM_APPL} # CTM_CONC_1
set ACONCfile = EXEC.ACONC.{CTM_APPL} # CTM_ACONC_1
set CGRIDfile = EXEC.CGRID.{CTM_APPL} # CTM_CGRID_1
set DD1file = EXEC.DRYDEP.{CTM_APPL} # CTM_DRY_DEP_1
set DV1file = EXEC.DEPV.{CTM_APPL} # CTM_DEPV_DIAG
set PT1file = EXEC.PT3D.{CTM_APPL} # CTM_PT3D_DIAG
set BIO1file = EXEC.B3GTS_S.{CTM_APPL} # B3GTS_S
set SOIL1file = EXEC.SOILOUT.{CTM_APPL} # SOILOUT
set WD1file = EXEC.WETDEP1.{CTM_APPL} # CTM_WET_DEP_1
set WD2file = EXEC.WETDEP2.{CTM_APPL} # CTM_WET_DEP_2
set AV1file = EXEC.AEROVIS.{CTM_APPL} # CTM_VIS_1
set AD1file = EXEC.AERODIAM.{CTM_APPL} # CTM_DIAM_1
set RJ1file = EXEC.PHOTDIAG1.{CTM_APPL} # CTM_RJ_2
set RJ2file = EXEC.PHOTDIAG2.{CTM_APPL} # CTM_RJ_2
set SSEfile = $EXEC.SSEMIS.$CTM_APPL # CTM_SSEMIS_1
set DSEfile = $EXEC.DUSTEMIS.$CTM_APPL # CTM_DUST_EMIS_1
set PA1file = EXEC.PA_1.{CTM_APPL} # CTM_IPR_1
set PA2file = EXEC.PA_2.{CTM_APPL} # CTM_IPR_2
set PA3file = EXEC.PA_3.{CTM_APPL} # CTM_IPR_3
set IRR1file = EXEC.IRR_1.{CTM_APPL} # CTM_IRR_1
set IRR2file = EXEC.IRR_2.{CTM_APPL} # CTM_IRR_2
set IRR3file = EXEC.IRR_3.{CTM_APPL} # CTM_IRR_3
set DEPVFSTfile = EXEC.DEPVFST.{CTM_APPL} # CTM_DEPV_FST
set DEPVMOSfile = EXEC.DEPVMOS.{CTM_APPL} # CTM_DEPV_MOS
set DDFSTfile = EXEC.DDFST.{CTM_APPL} # CTM_DRY_DEP_FST
set DDMOSfile = EXEC.DDMOS.{CTM_APPL} # CTM_DRY_DEP_MOS
#> In-line biogenic emissions output files
if ( $CTM_BIOGEMIS == ‘Y’ ) then
setenv B3GTS_S $OUTDIR/EXEC".B3GTS_S".{CTM_APPL}
setenv SOILOUT $OUTDIR/EXEC".SOILOUT".{CTM_APPL} # Biogenic NO soil output file
endif
#> set floor file (neg concs)
setenv FLOOR_FILE BASE/FLOOR_{CTM_APPL}
#> create output directory
if ( ! -d “$OUTDIR” ) mkdir -p $OUTDIR
#> look for existing log files
set test = ls CTM_LOG_???.${CTM_APPL}
if ( “$test” != “” ) then
if ( $DISP == ‘delete’ ) then
echo " ancillary log files being deleted"
foreach file ( $test )
echo " deleting $file"
rm $file
end
else
echo “*** Logs exist - run ABORTED ***”
exit 1
endif
endif
#> for the run control …
setenv CTM_STDATE $STDATE
setenv CTM_STTIME $STTIME
setenv CTM_RUNLEN $NSTEPS
setenv CTM_TSTEP $TSTEP
setenv EMIS_1 $EMISpath/$EMISfile
setenv INIT_GASC_1 $ICpath/$ICFILE
setenv INIT_AERO_1 $INIT_GASC_1
setenv INIT_NONR_1 $INIT_GASC_1
setenv INIT_TRAC_1 $INIT_GASC_1
setenv BNDY_GASC_1 $BCpath/$BCFILE
setenv BNDY_AERO_1 $BNDY_GASC_1
setenv BNDY_NONR_1 $BNDY_GASC_1
setenv BNDY_TRAC_1 $BNDY_GASC_1
setenv OMI $OMIpath/$OMIfile
setenv XJ_DATA $JVALpath/$JVALfile
set TR_DVpath = $METpath
set TR_DVfile = $MET_CRO_2D
#> species defn & photolysis
setenv gc_matrix_nml ${BLD}/GC_MECH.nml
setenv ae_matrix_nml {BLD}/AE_MECH.nml
setenv nr_matrix_nml {BLD}/NR_MECH.nml
setenv tr_matrix_nml {BLD}/Species_Table_TR_0.nml
#> check for photolysis input data
setenv CSQY_DATA ${BLD}/CSQY_DATA_$MECH
if (! (-e $CSQY_DATA ) ) then
echo " $CSQY_DATA not found "
exit 1
endif
#>- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
source $BASE/outck.q
ls -l $BLD/$EXEC; size $BLD/$EXEC
unlimit
#limit
#> Executable call for single PE, uncomment to invoke
/usr/bin/time $BLD/$EXEC
#> Executable call for multi PE, configure for your system
set MPI = /usr/bin
set MPIRUN = $MPI/mpirun
time $MPIRUN -np $NPROCS $BLD/$EXEC
date
exit
Thanks for your help
Edison