#!/bin/csh -f
#
# type of rawins job
#
set Submit = 0 # 0 = no autobogus; 1 = autobogus 1; 2 = autobogus 2
#
set INOBS = ARCHIVE
# set INOBS = UNIOBS
#
# set SFCsw = NoSFC
set SFCsw = SFC
#
set BOGUSsw = NoBOG
# set BOGUSsw = Konly
# set BOGUSsw = Nonly
# set BOGUSsw = KandN
#
# locations for datasets
#
set InDatg = ../REGRID/regridder/REGRID_DOMAIN1
#
#
# Find MSS names for observations from the following catalogs:
# upper air: /fs/othrorgs/home0/mesouser/catalog/catalog.raob
# surface: /fs/othrorgs/home0/mesouser/catalog/catalog.sfc
#
if ( $INOBS == ARCHIVE ) then
set IfUni = F
set InRaobs = ( RAOBS_A )
if ( $SFCsw == SFC ) then
set InSfc6h = ( SFC6HR_A ) # see catalog.sfc, list A
set InSfc3h = ( SFC3HR_A ) # see catalog.sfc, list B
endif
else
set IfUni = T
set upa_unidate = ( xxxxxxxx ) # YYMMDDHH
set sfc_unidate = ( xxxxxxxx ) # YYMMDDHH
endif
#
# ------ RAWINS PARAMETER STATEMENT ---------------------------
#
if ( -e src/paramdim.incl ) rm src/paramdim.incl
cat > src/paramdim.incl << EOF
C
C IMX,JMX, MUST CORRESPOND TO THE DIMENSIONS IN THE INPUT FILE. THESE
C WILL BE THE EXPANDED DIMENSIONS IF THIS IS THE COARSE GRID, AND THE
C EXPANDED OPTION WAS SELECTED.
C
C LMX MUST BE GREATER THAN OR EQUAL TO THE MAXIMUM NUMBER OF LEVELS
C (PRESSURE LEVELS + SURFACE).
C
PARAMETER(IMX=35,JMX=41,LMX=22)
C------------------------------------------------------------------
EOF
#
# parameters for rawins, user adjustable for core constraints
#
if (-e src/paramirb.incl ) rm src/paramirb.incl
cat > src/paramirb.incl << EOF
C-----------------------------------------------------------------------
C IRB MUST BE AT LEAST THE MAXIMUM NUMBER OF RAOB STATIONS
C
PARAMETER(IRB=500)
EOF
if (-e src/paramirs.incl ) rm src/paramirs.incl
cat > src/paramirs.incl << EOF
C-----------------------------------------------------------------------
C IRS MUST BE AT LEAST THE MAXIMUM NUMBER OF SFC. + RAOB STATIONS
C
PARAMETER(IRS=3000)
EOF
#
# ------ RAWINS LOCAL NAMELIST ----------------------------------
# (you need not change anything of the form: ${____})
# (Comments in the namelist are removed during execution)
#
if ( -e rawins.namelist ) rm rawins.namelist
cat << End_Of_Namelist | sed -e 's/#.*//; s/ *$//' > ./rawins.namelist
&LOCMIF #---------LOCAL NAMELIST FOR PROGRAM RAWINS--------------------
NNEWPL = 0, # NUMBER OF NEW PRESSURE LEVELS
GNLVL = 975.,950.,925.,900.,800.,750.,650.,600.,550.,450.,350.,
# PRESSURES AT THE NEW PRESSURE LEVELS (BOTTOM TO TOP)
#
#----------OBJECTIVE ANALYSES OPTIONS FOLLOW---------------------------
IWTSCM = 3, # 1: CIRCULAR WEIGHTING FUNCTION (CRESSMAN)
# # 2: ELLIPTICAL WEIGHTING FUNCTION
# # 3: BANANA-SHAPED WEIGHTING FUNCTION
# # 4: MULTIQUADRIC INTERPOLATION
IFAC = 1, # 1: FIRST-GUESS FIELD EXISTS, RAWINS ALTERS IT.
# # 2: FIRST-GUESS FIELD DOES NOT EXIST, RAWINS CREATES IT.
IWIND= 2, # 1: USE SURFACE GEOSTROPHIC WIND FOR SFC WIND 1ST GUESS
# IF USING NMC/OLD ECMWF 1ST GUESS;
# USE ACTUAL SURFACE WIND IF USING ECTOGA 1ST GUESS
# # 2: USE 1000 MB WIND FOR SURFACE WIND FIRST GUESS
#
#----------DATA INPUT OPTIONS -------------------------------------------
INDATG= '${InDatg}', # P-level data file for input (Do not touch).
UNIOBS=.${IfUni}., # TRUE FOR UNIDATA OBS, FALSE FOR ARCHIVED OBS
# RWSUBM=0...ONLY ONE SUBMITTAL INTENDED FOR RAWINS
# RWSUBM=1...FIRST RAWINS SUBMITTAL--TWO ARE INTENDED
# RWSUBM=2...SECOND RAWINS SUBMITTAL
RWSUBM=${Submit}, #..SET TO 0,1, OR 2
IUINTVL=12, # TIME INTERVAL (HOURS) FOR RAOB DATA (USUALLY 12).
ISFCS3 = T, # ACQUIRE AND ANALYZE SHIPS AND BUOYS
ISFCS6 = T, # ACQUIRE AND ANALYZE SFC LAND DATA
F4D = F, # CREATE FDDA VOLUME AT NON-STANDARD TIMES.
INTF4D = 3, # TIME INTERVAL FOR FDDA FILE. IF INTF4D > 3, LAGTEM IS SET
# # TO FALSE AUTOMATICALLY IN THE PROGRAM (i.e. USE TEMPORAL
# # INTERPOLATION FOR NON-STANDARD TIME FIRST GUESS.)
LAGTEM = T, # TRUE--3 HOUR LAG TIME FOR NON-STD TIME 1ST GUESS
# FALSE--TEMPORAL INTERPOLATION FOR NON-STD TIME 1ST GUESS
NSELIM=F,F,F,F,F,F,F,F,F,F,F, # DELETE RAOBS-T,F
NBOGUS=F,F,F,F,F,F,F,F,F,F,F, # BOGUS STAT-T,F
KBOGUS=F,F,F,F,F,F,F,F,F,F,F, # BOGUS PTS-T,F
#
#---------------- DATA QUALITY CONTROL OPTIONS -----------------------
# BUDWGT IS A PARAMETER THAT VARIES THE TOLERANCE OF TH BUDDY
# CHECK. A VALUE OF 1.0 GIVES AN ESTIMATE OF NORMAL TOLERANCE.
# A VALUE > 1.0 INCREASES THE TOLERANCE WHILE A VALUE < 1.0
# DECREASES THE TOLERANCE. A 2.0 WOULD REMOVE ONLY HIGHLY
# SUSPECT DATA WHILE 0.5 WOULD REMOVE SOME GOOD DATA ALONG
# WITH ALL SUSPECT DATA. A VALUE OF 0. OMITS THE BUDDY CHECK.
# IF USING AUTOBOGUS (SUBMIT = 1 OR 2), SET BUDWGT TO ZERO.
BUDWGT=1.25, # 1.25,
#
# ERRMX PARAMETERS MAX DIFF ALLOWED BETWEEN FIRST GUESS AND STATION DATA
# IF USING BUDDY CHECK (BUDWGT>0.1), ONLY ONE SUBMITTAL IS EXPECTED. SET
# LARGER DEFAULT VALUES FOR ERRMX (SUGGESTED VALUES ARE ERRMXT=15,
# ERRMXW=14, AND ERRMXP=8.
ERRMXT=12., # MAX TEMP DIFF ALLOWED (1ST GUESS MINUS OB)
# # 0Z DATA OVER LOW TERRAIN (<500m) FACTORED BY 1.25
# # 0Z DATA OVER HIHG TERRAIN (>=500m) FACTORED BY 1.75
# # 12Z DATA FACTORED BY 1.5
# # ALL DATA OVER WATER FACTORED BY 0.75
ERRMXW=14., # MAX WIND DIFF ALLOWED (1ST GUESS MINUS OB)
# # DATA LEVEL .LE. 1000.1 IS FACTORED BY 1.25
# # DATA LEVEL ABOVE 500 MB IS FACTORED BY 1.5
ERRMXP=8., # MAX PRES DIFF ALLOWED (1ST GUESS MINUS OB)
# # NO LEVEL OR TERRAIN FACTORING
#
#---------- SET PLOT OPTIONS ------------------------------------------
#
IPLOT=F,F,F,F,F,F,F,F,F,F,F, # PLOT VERTICAL RAOBS (As directed
# # by ISKEWT).
#
ISKEWT=1, # Active only if IPLOT = T
# # 1: Skew-T plots. 2: Stuve Diagrams.
#
ABFLAG=T,T,T,T,T,T,T,T,T,T,T, # CONTOUR GRID FIELDS
ABOVER=T,T,T,T,T,T,T,T,T,T,T, # OVERLAY OBSERVATIONS
#
#---------- PRINT OPTIONS ---------------------------------------------
ISPRNT=F, # PRINT SFC INPUT OBS
IFPRNT=T, # PRINT HORIZONTAL FIELDS (FIRST-GUESS AND ANALYSIS)
& #--------------------------------------------------------------------
End_Of_Namelist
#
########################################################################
#################### #######################
#################### END USER MODIFICATION #######################
#################### #######################
########################################################################
#
if ( $INOBS == UNIOBS ) then
if ( -e unidata.namelist ) rm unidata.namelist
cat << End_Of_Unamelist | sed -e 's/#.*//; s/ *$//' > ./unidata.namelistcat
&UNILIF #--------NAMELIST INPUT SPECIFICALLY FOR UNIDATA---------------
UNIUANM = ${#upa_unidate} # NUMBER OF UPPER-AIR UNIDATA FILES
UNISFNM = ${#sfc_unidate} # NUMBER OF SURFACE UNIDATA FILES
& #--------------------------------------------------------------------
End_Of_Unamelist
cat unidata.namelist >> rawins.namelist
endif
#
# Check on existence of a single $InDatg before running rawins.
#
if ( $#InDatg > 1 ) then
printf "\n\n***** ERROR EXIT *****\n\n"
printf " There should be only one file listed in InDatg. Check\n"
printf " setting of script variable 'InDatg' in rawins.deck\n\n\a"
exit (1)
endif
if ( ! -e $InDatg ) then
printf "\n\n***** ERROR EXIT *****\n\n"
printf " File $InDatg does not exist. Check setting\n"
printf " of script variable 'InDatg' in rawins.deck\n\n\a"
exit (1)
endif
#
# The make rules are contained in the file Makefile
#
# --------- create rawins executable -------------------
#
set echo
if ( ! -e src/paramdim.tmp) then
cp src/paramdim.incl src/paramdim.tmp
else
/usr/bin/diff src/paramdim.incl src/paramdim.tmp
if ($status == 0) then
rm src/paramdim.incl
cp src/paramdim.tmp src/paramdim.incl
touch -r src/paramdim.tmp src/paramdim.incl
else
cp src/paramdim.incl src/paramdim.tmp
endif
endif
if ( ! -e src/paramirb.tmp) then
cp src/paramirb.incl src/paramirb.tmp
else
/usr/bin/diff src/paramirb.incl src/paramirb.tmp
if ($status == 0) then
rm src/paramirb.incl
cp src/paramirb.tmp src/paramirb.incl
touch -r src/paramirb.tmp src/paramirb.incl
endif
endif
if ( ! -e src/paramirs.tmp) then
cp src/paramirs.incl src/paramirs.tmp
else
/usr/bin/diff src/paramirs.incl src/paramirs.tmp
if ($status == 0) then
rm src/paramirs.incl
cp src/paramirs.tmp src/paramirs.incl
touch -r src/paramirs.tmp src/paramirs.incl
endif
endif
unset echo
#
#
#
set LETTERS = (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z)
#
make
set toast = $status
if ( $toast != 0 ) then
echo "error in the compile, stopping"
exit(1)
endif
#
if ( ! -e rawins.exe ) ln -s src/rawins.exe rawins.exe
if ( ! -e rawins.exe ) then
printf "\n\n***** ERROR EXIT *****\n\n"
printf " rawins.exe does not exist.\n"
printf " Check the compilation.\n\n\a"
exit (1)
endif
#
# --------- get input files -----------------------------
#
#
# get RAOB data sets from MS
#
if ( ! $?InRaobs ) then
echo "acquiring no RAOB sounding files"
exit (1)
else if ( ${#InRaobs} >= 1 ) then
echo "attempting to acquire ${#InRaobs} RAOB sounding file(s)"
endif
set NUMFIL = 1
while ( $NUMFIL <= ${#InRaobs} )
set Local = raobs$LETTERS[${NUMFIL}]
set Remote = $InRaobs[${NUMFIL}]
ln -s $Remote $Local
if ( $status != 0 ) then
find . -name $Local -type l -exec rm {} \;
ln -s $Remote $Local
endif
@ NUMFIL ++
end
#
# get 6-hourly data sets from MS
#
if ( ! $?InSfc6h ) then
echo "acquiring no 6-hourly surface analysis input files"
set InSfc6h
else if (( $SFCsw == SFC ) && ( ${#InSfc6h} >= 1 )) then
echo "attempting to acquire ${#InSfc6h} 6-hourly surface analysis input file(s)"
endif
set NUMFIL = 1
while ( $NUMFIL <= ${#InSfc6h} )
set Local = sfc6hr$LETTERS[${NUMFIL}]
set Remote = $InSfc6h[${NUMFIL}]
ln -s $Remote $Local
if ( $status != 0 ) then
find . -name $Local -type l -exec rm {} \;
ln -s $Remote $Local
endif
@ NUMFIL ++
end
#
# get 3-hourly data sets from MS
#
if ( ! $?InSfc3h ) then
echo "acquiring no 3-hourly surface analysis input files"
set InSfc3h
else if (( $SFCsw == SFC ) && ( ${#InSfc3h} >= 1 )) then
echo "attempting to acquire ${#InSfc3h} 3-hourly surface analysis input file(s)"
endif
set NUMFIL = 1
while ( $NUMFIL <= ${#InSfc3h} )
set Local = sfc3hr$LETTERS[${NUMFIL}]
set Remote = $InSfc3h[${NUMFIL}]
ln -s $Remote $Local
if ( $status != 0 ) then
find . -name $Local -type l -exec rm {} \;
ln -s $Remote $Local
endif
@ NUMFIL ++
end
#
# set up fortran input files for RAWINS
#
if ( -e assign.rawins ) rm assign.rawins
setenv FILENV assign.rawins
ln -s autobog fort.10
ln -s kbogus fort.12
ln -s nbogus fort.13
set NUMFIL = 1
if ( $INOBS != UNIOBS ) then
while ( $NUMFIL <= 5 )
@ UNIT = 14 + $NUMFIL
# ln -s raobs$LETTERS[${NUMFIL}] fort.$UNIT
@ UNIT = 19 + $NUMFIL
# ln -s sfc3hr$LETTERS[${NUMFIL}] fort.$UNIT
@ UNIT = 24 + $NUMFIL
# ln -s sfc6hr$LETTERS[${NUMFIL}] fort.$UNIT
if ( -e sfc3hr$LETTERS[${NUMFIL}] ) then
cp sfc3hr$LETTERS[${NUMFIL}] shpvol$LETTERS[${NUMFIL}]
endif
@ UNIT = 29 + $NUMFIL
# ln -s shpvol$LETTERS[${NUMFIL}] fort.$UNIT
@ NUMFIL ++
end
endif
#
# set up fortran output files for RAWINS
#
ln -s rawab.out fort.40
#
# -------- run RAWINS
#
date
#
rawins.exe >&! rawins.print.out
if ( $status != 0 ) then
printf "\n***** ERROR EXIT *****\n"
printf " See the printout in file 'rawins.print.out'\n\n"
endif
date
rm fort.*
#