#!/bin/csh -f
# JOB best run interactively
#
# Copy script to your working area
### Default directory where this script will write the
### TERRAIN code to, and work under is: /ptmp/$USER/TERRAIN
if ( ! -e /ptmp/$USER ) then
mkdir /ptmp/$USER
endif
set TMPDIR=/ptmp/$USER [Change this is you want to work a directory different from the default]
cd $TMPDIR
############################################################################
##### #####
##### IBM interactive jobs ONLY #####
##### #####
##### Since we are on the IBM, we will always download terrain and #####
##### landuse files from disk rather than ftp #####
##### #####
##### Data files will be written to mass storage #####
##### #####
############################################################################
# This should be the user's case or experiment (used in MSS name).
# This is where the data will be stored on the MSS.
set ExpName = MM5V3/V36_3/TERRAIN # MSS path name for output
set RetPd = 30 # MSS retention period in days
# Are we getting the source code, or is it available already?
# Set to "no" if you wish to download the code.
# IF set to "yes" script will expect to find the source code
# in $TMPDIR/TERRAIN
set UseMySource = no
#set UseMySource = yes
#
# Uncomment the following line if using the 30 - 100 cm layer soil file
#
# set BotSoil
#
# --------------------------------------------------------------
# Get source code. - Do not change
# --------------------------------------------------------------
if ( $UseMySource == no ) then
echo " TERRAIN Source code is downloaded "
cp /mmm/users/mesouser/MM5V3/TERRAIN.TAR.gz TERRAIN.TAR.gz
if ( ! -e TERRAIN.TAR.gz ) then
msread TERRAIN.TAR.gz /MESOUSER/MM5V3/TERRAIN.TAR.gz
endif
if ( ! -e TERRAIN.TAR.gz ) then
echo "The TERRAIN.TAR.gz file does not exist. Stopping."
exit ( 1 )
endif
gunzip TERRAIN.TAR.gz
tar -xf TERRAIN.TAR
rm TERRAIN.TAR
endif
cd TERRAIN
# ------------------------------------------------------------------
# 1. Set up parameter statements - User changes required
# ------------------------------------------------------------------
#
cat > src/parame.incl.tmp << EOF
C IIMX,JJMX are the maximum size of the domains, NSIZE = IIMX*JJMX
PARAMETER (IIMX = 100, JJMX = 100, NSIZE = IIMX*JJMX)
EOF
cat > src/paramed.incl.tmp << EOF
C ITRH,JTRH are the maximum size of the terrain data.
C NOBT = ITRH*JTRH, here assuming
C ITRH= 270 ( 45 deg. in north-south direction, 10 min. resolution)
C JTRH= 450 ( 75 deg. in north-south direction, 10 min. resolution)
C NOTE:
C IF USING GLOBAL 30SEC ELEVATION DATASET FROM USGS, NEED TO SET
C BOTH ITRH AND JTRH BIG. TRY THE COMMENTED PARAMETER LINE FIRST.
C THIS WILL REQUIRE APPROXI 0.9 GB MEMORY ON A 32-BIT IEEE MACHINE.
C AN ESTIMATE OF THE DIMENSION SIZE CAN BE MADE FROM Data30s/rdem.out
C AFTER THE FIRST JOB FAILS. USE (XMAXLAT-XMINLAT)*120 TO ESTIMATE
C ITRH, AND (XMAXLON-XMINLON)*120 TO ESTIMATE JTRH.
C
PARAMETER (ITRH = 500, JTRH = 500, NOBT = ITRH*JTRH)
C PARAMETER (ITRH = 1500, JTRH = 1800, NOBT = ITRH*JTRH)
EOF
#
# --------------------------------------------------------------
# 2. Set up NAMELIST
# --------------------------------------------------------------
#
if ( -e terrain.namelist ) rm terrain.namelist
cat > terrain.namelist << EOF
&MAPBG
PHIC = 36.0, ; CENTRAL LATITUDE (minus for southern hemesphere)
XLONC = -85.0, ; CENTRAL LONGITUDE (minus for western hemesphere)
IEXP = .F., ; .T. EXPANDED COARSE DOMAIN, .F. NOT EXPANDED.
; USEFUL IF RUNNING RAWINS/little_r
AEXP = 360., ; APPROX EXPANSION (KM)
IPROJ = 'LAMCON', ; LAMBERT-CONFORMAL MAP PROJECTION
;IPROJ = 'POLSTR', ; POLAR STEREOGRAPHIC MAP PROJECTION
;IPROJ = 'MERCAT', ; MERCATOR MAP PROJECTION
/
&DOMAINS
;
MAXNES = 2, ; NUMBER OF DOMAINS TO PROCESS
NESTIX = 35, 49, 136, 181, 211, 221, ; GRID DIMENSIONS IN Y DIRECTION
NESTJX = 41, 52, 181, 196, 211, 221, ; GRID DIMENSIONS IN X DIRECTION
DIS = 90., 30., 9., 3.0, 1.0, 1.0, ; GRID DISTANCE
NUMNC = 1, 1, 2, 3, 4, 5, ; MOTHER DOMAIN ID
NESTI = 1, 10, 28, 35, 45, 50, ; LOWER LEFT I OF NEST IN MOTHER DOMAIN
NESTJ = 1, 17, 25, 65, 55, 50, ; LOWER LEFT J OF NEST IN MOTHER DOMAIN
RID = 1.5, 1.5, 1.5, 3.1, 2.3, 2.3, ; RADIUS OF INFLUENCE IN GRID UNITS (IFANAL=T)
NTYPE = 2, 3, 4, 6, 6, 6, ; INPUT DATA RESOLUTION
;
; 1: 1 deg (~111 km) global terrain and landuse
; 2: 30 min ( ~56 km) global terrain and landuse
; 3: 10 min ( ~19 km) global terrain and landuse
; 4; 5 min ( ~9 km) global terrain and landuse
; 5; 2 min ( ~4 km) global terrain and landuse
; 6; 30 sec ( ~.9 km) global terrain and landuse
;
NSTTYP= 1, 2, 2, 2, 2, 2, ; 1 -- ONE WAY NEST, 2 -- TWO WAY NEST
/
&OPTN
IFTER = .TRUE., ; .T.-- TERRAIN, .F.-- PLOT DOMAIN MAPS ONLY
IFANAL = .F., ; .T.-- OBJECTIVE ANALYSIS, .F.-- INTERPOLATION
ISMTHTR = 2 , ; 1: 1-2-1 smoother, 2: two pass smoother/desmoother
IFEZFUG = .F., ; .T. USE NCAR GRAPHICS EZMAP WATER BODY INFO TO FUDGE THE LAND USE
; .F. USE LANDWATER MASK DATA
IFTFUG = .F., ; .T. DON'T DO EZFUDGE WITHIN THE USER-SPECIFIED
; LAT/LON BOXES, need to define namelist fudget
IFFUDG = .F., ; .T. POINT-BY-POINT FUDGING OF LANDUSE,
; need to define namelist fudge
IPRNTD = .F., ; PRINT OUT LAT. AND LON. ON THE MESH
IPRTHT = .F., ; PRINT OUT ALL PROCESSING FIELDS ON THE MESH
IPRINT = 0, ; = 1: A LOT MORE PRINT OUTPUT IN terrain.print.out
FIN = 100., 100., 100., 100., 100., 100., ; CONTOUR INTERVAL (meter) FOR TERRAIN HEIGHT PLOT
;TRUELAT1=91., ; TRUE LATITUDE 1
;TRUELAT2=91., ; TRUE LATITUDE 2, use this if IPROJ='LAMCON'
IFILL = .TRUE., ; .TRUE. --- color filled plots
LSMDATA = .FALSE., ; .TRUE. --- Create the data for LSM
VEGTYPE = 1, ; LANDUSE DATA TYPE: =0: old 13 cat; =1: 24 cat USGS; =2: 16 cat SiB
VSPLOT = .TRUE., ; .TRUE. --- plot Vege., Soil, Vege. Frc. percentages.
IEXTRA = .FALSE., ; .TRUE. --- Create extra data for Pleim-Xiu LSM
/
&FUDGE
; USE ONLY IF IFFUDG = .T., POINT-BY-POINT FUDGING OF LANDUSE,
; IFFUG FOR EACH OF THE NESTS: .F. NO FUDGING, .T. FUDGING
IFFUG = .F.,.F., ; FUDGE FLAGS
; NDFUG : THE NUMBER OF FUDGING POINTS FOR EACH OF NESTS
NDFUG = 0,0,
; LOCATION (I,J) AND LANDUSE VALUES FOR EACH OF THE NESTS
; NOTE: REGARDLESS OF IFFUG AND NDFUG, 200 VALUES MUST BE GIVEN FOR
; EACH NEST, OR ELSE THE INDEXING WILL GET MESSED UP
; The example below is for two domains. Add more for domain 3 and up
; if needed. Do not remove 0 values for domain 1 and/or 2 even
; they are not used.
;
IFUG(1,1)= 200*0, ; I location for fudge points in domain 1
IFUG(1,2)= 200*0, ; I location for fudge points in domain 2
JFUG(1,1)= 200*0, ; J location for fudge points in domain 1
JFUG(1,2)= 200*0, ; J location for fudge points in domain 2
LNDFUG(1,1)= 200*0, ; land-use value at fudge points for domain 1
LNDFUG(1,2)= 200*0, ; land-use value at fudge points for domain 2
/
&FUDGET
; USE ONLY IF IFTFUG=.T., WHICH MEANS TERRAIN WON'T DO EZFUDGE WITHIN
; THE USER-SPECIFIED LAT/LON BOXES. THIS OPTION IS USED WHEN THERE
; ARE INLAND BODIES OF WATER THAT ARE DEFINED IN THE LAND USE
; DATA SET BUT NOT IN THE EZMAP DATA SET. THIS OPTION PREVENTS
; THOSE BODIES OF WATER FROM BEING WIPED OUT BY EZFUDGE
NFUGBOX = 2 ; NUMBER OF SUBDOMAINS IN WHICH TO
; TURN OFF EZMAP LAND USE FUDGING
STARTLAT=45.0,44.0, ; LATITUDES OF LOWER-LEFT CORNERS OF SUBDOMAINS
ENDLAT =46.5,45.0, ; LATITUDES OF UPPER-RIGHT CORNERS OF SUBDOMAINS
STARTLON=-95.0,-79.8, ; LONGITUDES OF LOWER-LEFT CORNERS OF SUBDOMAINS
ENDLON =-92.6,-78.5, ; LONGITUDES OF UPPER-RIGHT CORNERS OF SUBDOMAINS
/
&EZFUDGE
; USE ONLY IF IFEZFUG=.T., WHICH TURNS ON EZMAP WATER BODY FUDGING OF LANDUSE.
; USERS: FEEL FREE TO ADD ANY MORE LAKE SURFACE HEIGHTS THAT YOU'LL NEED.
; HTPS IS THE HEIGHT IN METERS AND THE INDEX OF HTPS CORRESPONDS TO THE ID
; OF THE 'PS' AREA IN THE FILE ezmap_area_ids.
;
HTPS(441) = -.001 ; Oceans -- Do NOT change this one
HTPS(550) = 183. ; Lake Superior
HTPS(587) = 177. ; Lakes Michigan and Huron
HTPS(618) = 176. ; Lake St. Clair
HTPS(613) = 174. ; Lake Erie
HTPS(645) = 75. ; Lake Ontario
HTPS(480) = 1897. ; Lake Tahoe
HTPS(500) = 1281. ; Great Salt Lake
/
EOF
#
# ------------------------------------------------------------------------------
#
# END OF USER MODIFICATION
#
# ------------------------------------------------------------------------------
# Since we are on the IBM, this is always the case
set ftpdata = true
set Where30sTer = ftp
set users = MMM
#
# Check to see if recompilation is needed
# Need to make here so that rdnml may be used
#
echo " Checking to see if we need to re-compile"
cd src
../Templates/incldiff.sh parame.incl.tmp parame.incl
../Templates/incldiff.sh paramed.incl.tmp paramed.incl
cd ..
make >& make.terrain.out
echo " Done compiling"
#
# Create a namelist without comments
#
sed -f Templates/no_comment.sed terrain.namelist | grep "[A-Z,a-z,/]" > terlif.tmp
mv terlif.tmp terrain.namelist
#
# Set default script variables
#
set LandUse = OLD
#
set DataType = `src/rdnml < terrain.namelist`
echo $DataType
#
if ( $DataType[4] == 1 ) set IfProcData
if ( $DataType[4] == 0 ) set ftpdata = false
if ( $DataType[5] == 1 ) set LandUse = USGS
if ( $DataType[5] == 2 ) set LandUse = SiB
if ( $DataType[3] == 1 ) set IfUsgsTopo
#
# reset LandUse if $BotSoil is set
# -- use bottom soil files
#
if ( $?BotSoil ) set LandUse = USGS2
#
# link to Fortran units
#
set ForUnit = fort.
rm ${ForUnit}1* ${ForUnit}2* ${ForUnit}4*
#
if ( $LandUse == OLD ) cat Data/namelist.usgsdata >> terrain.namelist
if ( $LandUse == USGS ) cat Data/namelist.usgsdata >> terrain.namelist
if ( $LandUse == USGS2 ) cat Data/namelist.usgsdata2 >> terrain.namelist
if ( $LandUse == SiB ) cat Data/namelist.sibdata >> terrain.namelist
cat > endnml << EOF
/
EOF
cat endnml >> terrain.namelist
rm endnml
#
ln -s terrain.namelist ${ForUnit}15
ln -s ezids ${ForUnit}18
ln -s raobsta.ieee ${ForUnit}16
# ----------------------------------------------------------------------
#
# Update parameter statements for vegetation dataset
# (may require partial recompilation)
#
if ( $LandUse == SiB ) then
cp src/paramesv0.incl src/paramesv.incl.tmp
./Templates/incldiff.sh src/paramesv.incl.tmp src/paramesv.incl
cp src/vs_data0.incl src/vs_data.incl.tmp
./Templates/incldiff.sh src/vs_data.incl.tmp src/vs_data.incl
make >& make2.print.out
endif
# ----------------------------------------------------------------------
#
# Get Data
#
if ( $ftpdata == true ) then
echo "Linking to TERRAIN DATA"
cd Data
ln -sf /mmm/users/mesouser/TERRAIN_DATA/DEM_02M_GLOBAL DEM_02M_GLOBAL
ln -sf /mmm/users/mesouser/TERRAIN_DATA/DEM_05M_GLOBAL DEM_05M_GLOBAL
ln -sf /mmm/users/mesouser/TERRAIN_DATA/DEM_10M_GLOBAL DEM_10M_GLOBAL
ln -sf /mmm/users/mesouser/TERRAIN_DATA/DEM_30M_GLOBAL DEM_30M_GLOBAL
ln -sf /mmm/users/mesouser/TERRAIN_DATA/DEM_60M_GLOBAL DEM_60M_GLOBAL
ln -sf /mmm/users/mesouser/TERRAIN_DATA/LANDUSE.10 LANDUSE.10
ln -sf /mmm/users/mesouser/TERRAIN_DATA/LANDUSE.30 LANDUSE.30
ln -sf /mmm/users/mesouser/TERRAIN_DATA/LANDUSE.60 LANDUSE.60
ln -sf /mmm/users/mesouser/TERRAIN_DATA/LWMASK-SIB.02 LWMASK-SIB.02
ln -sf /mmm/users/mesouser/TERRAIN_DATA/LWMASK-SIB.05 LWMASK-SIB.05
ln -sf /mmm/users/mesouser/TERRAIN_DATA/LWMASK-SIB.10 LWMASK-SIB.10
ln -sf /mmm/users/mesouser/TERRAIN_DATA/LWMASK-SIB.30 LWMASK-SIB.30
ln -sf /mmm/users/mesouser/TERRAIN_DATA/LWMASK-SIB.30s LWMASK-SIB.30s
ln -sf /mmm/users/mesouser/TERRAIN_DATA/LWMASK-SIB.60 LWMASK-SIB.60
ln -sf /mmm/users/mesouser/TERRAIN_DATA/LWMASK-USGS.02 LWMASK-USGS.02
ln -sf /mmm/users/mesouser/TERRAIN_DATA/LWMASK-USGS.05 LWMASK-USGS.05
ln -sf /mmm/users/mesouser/TERRAIN_DATA/LWMASK-USGS.10 LWMASK-USGS.10
ln -sf /mmm/users/mesouser/TERRAIN_DATA/LWMASK-USGS.30 LWMASK-USGS.30
ln -sf /mmm/users/mesouser/TERRAIN_DATA/LWMASK-USGS.30s LWMASK-USGS.30s
ln -sf /mmm/users/mesouser/TERRAIN_DATA/LWMASK-USGS.60 LWMASK-USGS.60
ln -sf /mmm/users/mesouser/TERRAIN_DATA/SOILCAT.02 SOILCAT.02
ln -sf /mmm/users/mesouser/TERRAIN_DATA/SOILCAT.05 SOILCAT.05
ln -sf /mmm/users/mesouser/TERRAIN_DATA/SOILCAT.10 SOILCAT.10
ln -sf /mmm/users/mesouser/TERRAIN_DATA/SOILCAT.30 SOILCAT.30
ln -sf /mmm/users/mesouser/TERRAIN_DATA/SOILCAT.30s SOILCAT.30s
ln -sf /mmm/users/mesouser/TERRAIN_DATA/SOILCAT.60 SOILCAT.60
ln -sf /mmm/users/mesouser/TERRAIN_DATA/SOILCATB.02 SOILCATB.02
ln -sf /mmm/users/mesouser/TERRAIN_DATA/SOILCATB.05 SOILCATB.05
ln -sf /mmm/users/mesouser/TERRAIN_DATA/SOILCATB.10 SOILCATB.10
ln -sf /mmm/users/mesouser/TERRAIN_DATA/SOILCATB.30 SOILCATB.30
ln -sf /mmm/users/mesouser/TERRAIN_DATA/SOILCATB.30s SOILCATB.30s
ln -sf /mmm/users/mesouser/TERRAIN_DATA/SOILCATB.60 SOILCATB.60
ln -sf /mmm/users/mesouser/TERRAIN_DATA/SOILTEMP.60 SOILTEMP.60
ln -sf /mmm/users/mesouser/TERRAIN_DATA/VEG-FRACTION.10 VEG-FRACTION.10
ln -sf /mmm/users/mesouser/TERRAIN_DATA/VEG-SIB.02 VEG-SIB.02
ln -sf /mmm/users/mesouser/TERRAIN_DATA/VEG-SIB.05 VEG-SIB.05
ln -sf /mmm/users/mesouser/TERRAIN_DATA/VEG-SIB.10 VEG-SIB.10
ln -sf /mmm/users/mesouser/TERRAIN_DATA/VEG-SIB.30 VEG-SIB.30
ln -sf /mmm/users/mesouser/TERRAIN_DATA/VEG-SIB.30s VEG-SIB.30s
ln -sf /mmm/users/mesouser/TERRAIN_DATA/VEG-SIB.60 VEG-SIB.60
ln -sf /mmm/users/mesouser/TERRAIN_DATA/VEG-USGS.02 VEG-USGS.02
ln -sf /mmm/users/mesouser/TERRAIN_DATA/VEG-USGS.05 VEG-USGS.05
ln -sf /mmm/users/mesouser/TERRAIN_DATA/VEG-USGS.10 VEG-USGS.10
ln -sf /mmm/users/mesouser/TERRAIN_DATA/VEG-USGS.30 VEG-USGS.30
ln -sf /mmm/users/mesouser/TERRAIN_DATA/VEG-USGS.30s VEG-USGS.30s
ln -sf /mmm/users/mesouser/TERRAIN_DATA/VEG-USGS.60 VEG-USGS.60
cd ..
endif
#
if ( $?IfUsgsTopo && $?IfProcData ) then
if ( ! -e Data30s ) then
mkdir Data30s
endif
echo "Linking to 30sec TERRAIN DATA"
cd Data30s
ln -sf /mmm/users/mesouser/Data30s/E020N40.DEM E020N40.DEM
ln -sf /mmm/users/mesouser/Data30s/E020N90.DEM E020N90.DEM
ln -sf /mmm/users/mesouser/Data30s/E020S10.DEM E020S10.DEM
ln -sf /mmm/users/mesouser/Data30s/E060N40.DEM E060N40.DEM
ln -sf /mmm/users/mesouser/Data30s/E060N90.DEM E060N90.DEM
ln -sf /mmm/users/mesouser/Data30s/E060S10.DEM E060S10.DEM
ln -sf /mmm/users/mesouser/Data30s/E060S60.DEM E060S60.DEM
ln -sf /mmm/users/mesouser/Data30s/E100N40.DEM E100N40.DEM
ln -sf /mmm/users/mesouser/Data30s/E100N90.DEM E100N90.DEM
ln -sf /mmm/users/mesouser/Data30s/E100S10.DEM E100S10.DEM
ln -sf /mmm/users/mesouser/Data30s/E120S60.DEM E120S60.DEM
ln -sf /mmm/users/mesouser/Data30s/E140N40.DEM E140N40.DEM
ln -sf /mmm/users/mesouser/Data30s/E140N90.DEM E140N90.DEM
ln -sf /mmm/users/mesouser/Data30s/E140S10.DEM E140S10.DEM
ln -sf /mmm/users/mesouser/Data30s/W000S60.DEM W000S60.DEM
ln -sf /mmm/users/mesouser/Data30s/W020N40.DEM W020N40.DEM
ln -sf /mmm/users/mesouser/Data30s/W020N90.DEM W020N90.DEM
ln -sf /mmm/users/mesouser/Data30s/W020S10.DEM W020S10.DEM
ln -sf /mmm/users/mesouser/Data30s/W060N40.DEM W060N40.DEM
ln -sf /mmm/users/mesouser/Data30s/W060N90.DEM W060N90.DEM
ln -sf /mmm/users/mesouser/Data30s/W060S10.DEM W060S10.DEM
ln -sf /mmm/users/mesouser/Data30s/W060S60.DEM W060S60.DEM
ln -sf /mmm/users/mesouser/Data30s/W100N40.DEM W100N40.DEM
ln -sf /mmm/users/mesouser/Data30s/W100N90.DEM W100N90.DEM
ln -sf /mmm/users/mesouser/Data30s/W100S10.DEM W100S10.DEM
ln -sf /mmm/users/mesouser/Data30s/W120S60.DEM W120S60.DEM
ln -sf /mmm/users/mesouser/Data30s/W140N40.DEM W140N40.DEM
ln -sf /mmm/users/mesouser/Data30s/W140N90.DEM W140N90.DEM
ln -sf /mmm/users/mesouser/Data30s/W140S10.DEM W140S10.DEM
ln -sf /mmm/users/mesouser/Data30s/W180N40.DEM W180N40.DEM
ln -sf /mmm/users/mesouser/Data30s/W180N90.DEM W180N90.DEM
ln -sf /mmm/users/mesouser/Data30s/W180S10.DEM W180S10.DEM
ln -sf /mmm/users/mesouser/Data30s/W180S60.DEM W180S60.DEM
cd ..
echo 'combining 30s USGS tile data into single file'
cp Data/ftp30s.csh .
chmod +x ftp30s.csh
./ftp30s.csh $Where30sTer $users >& ftp30s.out
rm ftp30s.csh ftp30s.out
endif
# ----------------------------------------------------------------------
#
# Execute terrain
#
unlimit
date
./terrain.exe >&! terrain.print.out
#
rm ${ForUnit}*
foreach fil ( TERRAIN_DOMAIN* )
echo " mswrite -t $RetPd $fil $ExpName/$fil "
mswrite -t $RetPd $fil $ExpName/$fil
end
echo " mswrite -t $RetPd TER.PLT $ExpName/TER.PLT "
mswrite -t $RetPd TER.PLT $ExpName/TER.PLT
tar -cf terrain.out.tar *out
echo " mswrite -t $RetPd terrain.out.tar $ExpName/terrain.out.tar "
mswrite -t $RetPd terrain.out.tar $ExpName/terrain.out.tar
echo " TERRAIN script complete "
echo " "
echo " TERRAIN data will also be available on "$TMPDIR/TERRAIN" for a couple of days"
echo " "
echo " All data has been placed on Mass Storage, under: " $ExpName
echo " And will be available for the next " $RetPd " days "
cd
exit