#!/bin/csh -f # RCS file, release, date & time of last delta, author, state, [and locker] # $Header: /project/work/rep/MCIP2/src/mcip2/run.mcip,v 1.2 2002/03/20 12:35:57 yoj Exp $ #======================================================================= # # Script: run.mcip # Purpose: Runs Models-3/CMAQ Meteorology-Chemistry Interface # Processor. Part of the US EPA's Models-3/CMAQ system. # Method: In UNIX/Linux: run.mcip >&! mcip.log # Notes: Currently set up for MM5-based input files only! # Revised: 20 Sep 2001 Original version. (T. Otte) # 18 Oct 2001 Added CoordName to user definitions. Deleted # script variable DomIdMM5. Added Fortran link # for GRIDDESC file. Moved namelist output to # WorkDir, and mmheader output to OutDir. Added # user variables I0, J0, NCOLS, and NROWS for # MCIP windowing. (T. Otte) # 29 Jan 2002 Added new namelist for file names. Generalized # the end-of-namelist delimiter. (T. Otte) # 27 Feb 2002 Removed minimum size for windows. (T. Otte) # 19 Mar 2002 Changed default grid cell for printing. # (T. Otte) # #======================================================================= #----------------------------------------------------------------------- # Set identification for input and output files. # # APPL = Application Name (tag for MCIP output file names) # CoordName = Coordinate system name for GRIDDESC # GridName = Grid Name descriptor for GRIDDESC # InMetDir = Directory that contains input meteorology files # OutDir = Directory to write MCIP output files # ProgDir = Directory that contains the MCIP executable # WorkDir = Working Directory for Fortran links and namelist #----------------------------------------------------------------------- set APPL = GCM36 set CoordName = MCIP_Domain1 # 16-character maximum set GridName = US36_132X90 # 16-character maximum set DataPath = /data/mcipdata_daily/gcm/1991 set InMetDir = /nas2data/met/1991 set OutDir = $DataPath set ProgDir = /data/mcip21_daily set WorkDir = $cwd #----------------------------------------------------------------------- # Set name(s) of input meteorology file(s) # # File name(s) must be set inside parentheses since "InMetFiles" is # a C-shell script array. Multiple file names should be space- # delimited. Additional lines can be used when separated by a # back-slash (\) continuation marker. The file names can be as # they appear on your system; MCIP will link the files in by a # Fortran unit number and the explicit name via a namelist. The # files must be listed in chronological order. A maximum of 5 files # is currently allowed. # # Example: # set InMetFiles = ( $InMetDir/MMOUT_DOMAIN2.time1 \ # $InMetDir/MMOUT_DOMAIN2.time2 ) # #----------------------------------------------------------------------- set InMetFiles = ( $InMetDir/MMOUT_DOMAIN2 ) #----------------------------------------------------------------------- # Set user control variables for MCIP execution. # # LPBL: 1 = Use PBL values from input meteorology # 2 = Re-calculate values using PBL similarity # 3 = Re-calculate values using only surface layer similarity # # LRAD: 1 = Use radiation fields from input meteorology # 2 = Re-calculate fields from MCIP Version 1 algorithm # # LDDEP: 1 = Use RADM (Wesely) dry deposition routine # 2 = Use Models-3 (Pleim) dry deposition routine #----------------------------------------------------------------------- set LPBL = 1 set LRAD = 1 set LDDEP = 2 #----------------------------------------------------------------------- # Set run start and end date. (YYYY-MO-DD-HH:MI:SS.SSSS) # MCIP_START: First date and time to be output [UTC] # MCIP_END: Last date and time to be output [UTC] # INTVL: Frequency of output [minutes] #----------------------------------------------------------------------- set MCIP_START = 1991-05-01-01:00:00.0000 # [UTC] set MCIP_END = 1991-05-02-00:00:00.0000 # [UTC] set INTVL = 60 # [min] #----------------------------------------------------------------------- # Set CTM layers. Should be in descending order starting at 1 and # ending with 0. There is currently a maximum of 50 layers allowed. #----------------------------------------------------------------------- #set CTMLAYS = "1.000, 0.980, 0.930, 0.840, 0.600, 0.300, 0.000" set CTMLAYS = "1.000, 0.995, 0.985, 0.970, 0.950, \ 0.920, 0.870, 0.800, 0.700, \ 0.600, 0.500, 0.400, 0.300, 0.200, 0.100, 0.000" #----------------------------------------------------------------------- # Set number of meteorology "boundary" points to remove on each of four # horizontal sides of MCIP domain. This affects the output MCIP domain # dimensions by reducing meteorology domain by 2*BTRIM + 2*NTHIK + 1, # where NTHIK is the lateral boundary thickness (in BDY files), and the # extra point reflects conversion from grid points (dot points) to grid # cells (cross points). Setting BTRIM = 0 will use maximum of input # meteorology. To remove MM5 lateral boundaries, set BTRIM = 5. # # *** If windowing a specific subset domain of input meteorology, set # BTRIM < 0, and BTRIM will be ignored in favor of specific window # information in I0, J0, NCOLS, and NROWS. #----------------------------------------------------------------------- set BTRIM = -1 #----------------------------------------------------------------------- # Define MCIP subset domain. (Only used if BTRIM < 0. Otherwise, # the following variables will be set automatically from BTRIM and # size of input meteorology fields.) # I0: I-coordinate of lower-left corner of full MCIP "X" domain # (including MCIP lateral boundary) based on input MM5 domain. # Minimum value is 1. # J0: J-coordinate of lower-left corner of full MCIP "X" domain # (including MCIP lateral boundary) based on input MM5 domain. # Minimum value is 1. # NCOLS: Number of columns in output MCIP domain (excluding MCIP # lateral boundaries). # NROWS: Number of rows in output MCIP domain (excluding MCIP # lateral boundaries). #----------------------------------------------------------------------- set I0 = 10 set J0 = 20 set NCOLS = 132 set NROWS = 90 #----------------------------------------------------------------------- # Set coordinates for cell for diagnostic prints on output domain. # If coordinate is set to 0, domain center cell will be used. #----------------------------------------------------------------------- set LPRT_COL = 0 set LPRT_ROW = 0 #======================================================================= #======================================================================= # Set up and run MCIP. # Should not need to change anything below here. #======================================================================= #======================================================================= set PROG = mcip date set timestamp #----------------------------------------------------------------------- # Make sure directories exist. #----------------------------------------------------------------------- if ( ! -d $InMetDir ) then echo "No such input directory $InMetDir" exit 1 endif if ( ! -d $OutDir ) then echo "No such output directory...will try to create one" mkdir -p $OutDir if ( $status != 0 ) then echo "Failed to make output directory, $OutDir" exit 1 endif endif if ( ! -d $ProgDir ) then echo "No such program directory $ProgDir" exit 1 endif #----------------------------------------------------------------------- # Make sure the input files exist. #----------------------------------------------------------------------- foreach fil ( $InMetFiles ) if ( ! -f $fil ) then echo "No such input file $fil" exit 1 endif end #----------------------------------------------------------------------- # Make sure the executable exists. #----------------------------------------------------------------------- if ( ! -f $ProgDir/${PROG}.exe ) then echo "Could not find ${PROG}.exe" exit 1 endif #----------------------------------------------------------------------- # Create a work directory for this job. #----------------------------------------------------------------------- if ( ! -d $WorkDir ) then mkdir -p $WorkDir if ( $status != 0 ) then echo "Failed to make work directory, $WorkDir" exit 1 endif endif cd $WorkDir #----------------------------------------------------------------------- # Set up script variables for input files. #----------------------------------------------------------------------- set NumMetFiles = ${#InMetFiles} if ( $NumMetFiles > 5 ) then echo "Too many files specified in InMetFiles" exit 1 endif set InMM = ( ) @ nn = 1 while ( $nn <= 5 ) if ( $nn <= $NumMetFiles ) then set holdit = $InMetFiles[$nn] else set holdit = "no_file" endif set InMM = ( $InMM $holdit ) @ nn ++ end set FILE_GD = $OutDir/GRIDDESC set FILE_HDR = $OutDir/mmheader.${APPL} #----------------------------------------------------------------------- # Create namelist with user definitions. #----------------------------------------------------------------------- set MACHTYPE = `uname` if ( $MACHTYPE == "AIX" ) then set Marker = "/" else set Marker = "&END" endif cat > $WorkDir/namelist.${PROG} << ! &FILENAMES file_gd = "$FILE_GD" file_hdr = "$FILE_HDR" file_mm = "$InMM[1]", "$InMM[2]", "$InMM[3]", "$InMM[4]", "$InMM[5]" $Marker &USERDEFS lpbl = $LPBL lrad = $LRAD lddep = $LDDEP mcip_start = "$MCIP_START" mcip_end = "$MCIP_END" intvl = $INTVL coordnam = "$CoordName" grdnam = "$GridName" ctmlays = $CTMLAYS btrim = $BTRIM lprt_col = $LPRT_COL lprt_row = $LPRT_ROW $Marker &WINDOWDEFS i0 = $I0 j0 = $J0 ncolsin = $NCOLS nrowsin = $NROWS $Marker ! #----------------------------------------------------------------------- # Set links to FORTRAN units. #----------------------------------------------------------------------- rm fort.* if ( -f $FILE_GD ) rm -f $FILE_GD ln -s $FILE_HDR fort.2 ln -s $FILE_GD fort.4 ln -s $WorkDir/namelist.${PROG} fort.8 set NUMFIL = 0 foreach fil ( $InMetFiles ) @ NN = $NUMFIL + 10 ln -s $fil fort.$NN @ NUMFIL ++ end #----------------------------------------------------------------------- # Set output file names and other miscellaneous environment variables. #----------------------------------------------------------------------- setenv IOAPI_CHECK_HEADERS T setenv EXECUTION_ID $PROG setenv GRID_BDY_2D_G1 $OutDir/GRIDBDY2D_${APPL} setenv GRID_BDY_3D_G1 $OutDir/GRIDBDY3D_${APPL} setenv GRID_CRO_2D_G1 $OutDir/GRIDCRO2D_${APPL} setenv GRID_CRO_3D_G1 $OutDir/GRIDCRO3D_${APPL} setenv GRID_DOT_2D_G1 $OutDir/GRIDDOT2D_${APPL} setenv MET_BDY_2D_G1 $OutDir/METBDY2D_${APPL} setenv MET_BDY_3D_G1 $OutDir/METBDY3D_${APPL} setenv MET_CRO_2D_G1 $OutDir/METCRO2D_${APPL} setenv MET_CRO_3D_G1 $OutDir/METCRO3D_${APPL} setenv MET_DOT_3D_G1 $OutDir/METDOT3D_${APPL} #----------------------------------------------------------------------- # Execute MCIP. #----------------------------------------------------------------------- $ProgDir/${PROG}.exe if ( $status == 0 ) then rm fort.* exit 0 else echo "Error running $PROG" exit 1 endif