#!/bin/csh -f
# JOB best run interactively
#
# Copy script to your working area
set echo
### Default directory where this script will write the
### RAWINS code to, and work under is: /ptmp/$USER/RAWINS
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 #####
##### #####
############################################################################
#
# This version of RAWINS job deck can only process one analysis domain
# per RAWINS submittal. The nested domain center latitude and longitude
# can be different from the coarse domain.
# For example, if one wants to obtain analysis on domain 1 and 2, then
# RAWINS needs to be run twice for domian 1 and domain 2 respectively.
#
#
# this should be the user's case or experiment
#
set ExpName = MM5V3/V36_3/RAWINS # RAWINS output MSS pathname
set InName = MM5V3/V36_3/REGRID # RAWINS input MSS pathname
set RetPd = 30 # Retention period for MSWRITEs
# 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/RAWINS
set UseMySource = no
#set UseMySource = yes
# Are we compling the code
set compile = yes
# set compile = no
#
# 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
#
# Domain id for RAWINS to process (RAWINS does only one domain per submittal)
# InRegrid is the output file from REGRID
#
set DomId = 1
set InRegrid = ${InName}/REGRID_DOMAIN${DomId}
#
# Set the starting date of the time period you want to process:
#
set START_YEAR = 1993 # Year (Four digits)
set START_MONTH = 03 # Month ( 01 - 12 )
set START_DAY = 13 # Day ( 01 - 31 )
set START_HOUR = 00 # Hour ( 00 - 23 )
set END_YEAR = 1993 # Year (Four digits)
set END_MONTH = 03 # Month ( 01 - 12 )
set END_DAY = 14 # Day ( 01 - 31 )
set END_HOUR = 00 # Hour ( 00 - 23 )
# RAWINS MSS OUTPUT FILE NAMES
#
set OutRaw = ${ExpName}
#
#
# --------------------------------------------------------------
# Get source code. - Do not change
# --------------------------------------------------------------
if ( $UseMySource == no ) then
echo " RAWINS Source code is downloaded "
cp /mmm/users/mesouser/MM5V3/FETCH.TAR.gz FETCH.TAR.gz
cp /mmm/users/mesouser/MM5V3/RAWINS.TAR.gz RAWINS.TAR.gz
if ( ! -e FETCH.TAR.gz ) then
msread FETCH.TAR.gz /MESOUSER/MM5V3/FETCH.TAR.gz
endif
gunzip FETCH.TAR
if ( ! -e FETCH.TAR ) then
echo "The FETCH.TAR file does not exist. Stopping."
exit ( 1 )
endif
tar -xf FETCH.TAR
rm FETCH.TAR
if ( ! -e RAWINS.TAR.gz ) then
msread RAWINS.TAR.gz /MESOUSER/MM5V3/RAWINS.TAR.gz
endif
gunzip RAWINS.TAR
if ( ! -e RAWINS.TAR ) then
echo "The RAWINS.TAR file does not exist. Stopping."
exit ( 1 )
endif
tar -xf RAWINS.TAR
rm RAWINS.TAR
endif
cd RAWINS
## Temp fix for RAWINS
rm Makefile
cp ~mesouser/MM5V3/IBM/Makefile.rawins .
mv Makefile.rawins Makefile
## End of temp fix
#
# ------ RAWINS PARAMETER STATEMENT ---------------------------
#
if ( -e src/paramdim.tmp ) rm src/paramdim.tmp
cat > src/paramdim.tmp << 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.tmp ) rm src/paramirb.tmp
cat > src/paramirb.tmp << EOF
C-----------------------------------------------------------------------
C IRB MUST BE AT LEAST THE MAXIMUM NUMBER OF RAOB STATIONS
C
PARAMETER(IRB=500)
EOF
if (-e src/paramirs.tmp ) rm src/paramirs.tmp
cat > src/paramirs.tmp << 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 > rawins.namelist << EOF
&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=1, ; 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 -------------------------------------------
UNIOBS=.FALSE., ; 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=10., ; 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=13., ; 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=6., ; MAX PRES DIFF ALLOWED (1ST GUESS MINUS OB)
; ; NO LEVEL OR TERRAIN FACTORING
;
;---------- SET PLOT OPTIONS ------------------------------------------
;
IPLOT=T,F,F,F,T,F,F,F,T,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)
& ;--------------------------------------------------------------------
EOF
#
########################################################################
#################### #######################
#################### END USER MODIFICATION #######################
#################### #######################
########################################################################
#
if ( $INOBS == UNIOBS ) then
if ( -e unidata.namelist ) rm unidata.namelist
cat > unidata.namelist << EOF
&UNILIF ;--------NAMELIST INPUT SPECIFICALLY FOR UNIDATA---------------
UNIUANM = ${#upa_unidate} ; NUMBER OF UPPER-AIR UNIDATA FILES
UNISFNM = ${#sfc_unidate} ; NUMBER OF SURFACE UNIDATA FILES
& ;--------------------------------------------------------------------
EOF
cat unidata.namelist >> rawins.namelist
endif
#
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)
#
# The make rules are contained in the file Makefile
#
# --------- create rawins executable -------------------
# First, check to see if any include files need update
#
if ( ! -e src/netcdf.incl ) cp /usr/local/include/netcdf.inc src/netcdf.incl
#
if ( ! -e src/paramdim.incl) then
cp src/paramdim.tmp src/paramdim.incl
else
/bin/diff src/paramdim.incl src/paramdim.tmp
if ($status == 0) then
rm src/paramdim.tmp
else
cp src/paramdim.tmp src/paramdim.incl
endif
endif
#
if ( ! -e src/paramirb.incl) then
cp src/paramirb.tmp src/paramirb.incl
else
/bin/diff src/paramirb.incl src/paramirb.tmp
if ($status == 0) then
rm src/paramirb.tmp
else
cp src/paramirb.tmp src/paramirb.incl
endif
endif
#
if ( ! -e src/paramirs.incl) then
cp src/paramirs.tmp src/paramirs.incl
else
/bin/diff src/paramirs.incl src/paramirs.tmp
if ($status == 0) then
rm src/paramirs.tmp
else
cp src/paramirs.tmp src/paramirs.incl
endif
endif
#
# Compile
if ( $compile == 'yes' ) then
make clean
make
endif
#
if ( ! -e rawins.exe ) ln -s src/rawins.exe rawins.exe
#
# edit namelist to remove comments
#
sed -f ./Templates/no_comment.sed rawins.namelist > mif.tmp
mv mif.tmp rawins.namelist
#
# --------- get input files -----------------------------
#
if ( ! -e regrid ) then
echo " msread regrid $InRegrid"
msread regrid $InRegrid
endif
if ( ! -e regrid ) then
echo " Regrid file missing. Could not find MSS file $InRegrid"
endif
cd ../FETCH
set starting_date = ` echo $START_YEAR""$START_MONTH""$START_DAY""$START_HOUR `
set ending_date = ` echo $END_YEAR""$END_MONTH""$END_DAY""$END_HOUR `
# Pull ADP surface data from the MSS.
cd adp_sfc
./fetch_adp_sfc.csh $starting_date $ending_date >&! fetch_sfc_print &
wait
# Send surface data to MSS.
if ( -e A.1 ) then
foreach file ( A.[1-9] )
set num = $file:e
echo "Save surface data to A.$num and B.$num "
mswrite -t $RetPd A.$num $ExpName/sfc6hr$LETTERS[${num}]
mswrite -t $RetPd B.$num $ExpName/sfc3hr$LETTERS[${num}]
mv A.$num ../../RAWINS/sfc6hr$LETTERS[${num}]
mv B.$num ../../RAWINS/sfc3hr$LETTERS[${num}]
end
endif
if ( -e E.1 ) then
foreach file ( E.[1-9] )
set num = $file:e
echo "Save surface data to E.$num and F.$num "
mswrite -t $RetPd E.$num $ExpName/sfc6hr$LETTERS[${num}]
mswrite -t $RetPd F.$num $ExpName/sfc3hr$LETTERS[${num}]
mv E.$num ../../RAWINS/sfc6hr$LETTERS[${num}]
mv F.$num ../../RAWINS/sfc3hr$LETTERS[${num}]
end
endif
# Pull ADP upper-air data from the MSS
cd ../adp_upa
./fetch_adp_upa.csh $starting_date $ending_date >&! fetch_upa_print &
wait
# Send upper-air data to MSS.
if ( -e UPA.1 ) then
foreach file ( UPA.[1-9] )
set num = $file:e
echo "Save upper-air data to UPA.$num "
mswrite -t $RetPd UPA.$num $ExpName/raobs$LETTERS[${num}]
mv UPA.$num ../../RAWINS/raobs$LETTERS[${num}]
end
endif
cd ..
cd ../RAWINS
#
# get autobogus file from remote host
#
if (( $Submit == 2 ) && ( ! -e autobog )) then
msread autobog ${ExpName}/AUBG_OUT
if ( -e autobog ) then
echo "acquired autobogus file ${ExpName}/AUBG_OUT from MSS"
else
echo "could not find remote file ${ExpName}/AUBG_OUT. Not acquired. msread FAILED"
exit (1)
endif
endif
#
# get K bogus file from remote host
#
if ((( $BOGUSsw == Konly ) || ( $BOGUSsw == KandN )) && ( ! -e kbogus )) then
msread kbogus ${ExpName}/KBOG_REMOTE
if ( -e kbogus ) then
echo "acquired k bogus file ${ExpName}/KBOG_REMOTE from MSS"
else if ( ! -e kbogus ) then
echo "could not find remote file ${ExpName}/KBOG_REMOTE. Not acquired. msread FAILED"
exit (1)
endif
endif
#
# get N bogus file from remote host
#
if ((( $BOGUSsw == Nonly ) || ( $BOGUSsw == KandN )) && ( ! -e nbogus )) then
msread nbigus ${ExpName}/NBOG_REMOTE
if ( -e nbogus ) then
echo "acquired n bogus file ${ExpName}/NBOG_REMOTE from MSS"
else if ( ! -e nbogus ) then
echo "could not find remote file ${ExpName}/NBOG_REMOTE. Not acquired. msread FAILED"
exit (1)
endif
endif
#
# 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
if ( -e acct ) rm acct
./rawins.exe >&! rawins.print.out
#
tar -cf rawins.out.tar src/rawins.exe rawins.namelist rawins.print.out
mswrite -t $RetPd rawins.out.tar ${OutRaw}/rawins_domain${DomId}.out.tar
#
# rawins output files
#
ls -ls
mswrite -t $RetPd RAWINS_DOMAIN${DomId} ${OutRaw}/RAWINS_DOMAIN${DomId}
echo mswrite -t $RetPd RAWINS_DOMAIN${DomId} ${OutRaw}/RAWINS_DOMAIN${DomId}
if ( $Submit != 2 ) then
mswrite -t $RetPd SND.PLT ${OutRaw}/SND.PLT_DOMAIN${DomId}
endif
#
if ( -e SFCFDDA_DOMAIN${DomId} ) then
mswrite -t $RetPd SFCFDDA_DOMAIN${DomId} ${OutRaw}/SFCFDDA_DOMAIN${DomId}
endif
#
mswrite -t $RetPd RAWOBS_DOMAIN${DomId} ${OutRaw}/RAWOBS_DOMAIN${DomId}
mswrite -t $RetPd SFC4DOBS_DOMAIN${DomId} ${OutRaw}/SFC4DOBS_DOMAIN${DomId}
mswrite -t $RetPd UPR4DOBS_DOMAIN${DomId} ${OutRaw}/UPR4DOBS_DOMAIN${DomId}
#
if ( $Submit == 1 ) then
mswrite -t $RetPd rawab.out ${OutRaw}/AUBG_SUB1_DOMAIN${DomId}
mswrite -t $RetPd AB.PLT ${OutRaw}/AUB_SUB1_PLT_DOMAIN${DomId}
else if ( $Submit == 2 ) then
mswrite -t $RetPd autobog ${OutRaw}/AUBG_SUB2_DOMAIN${DomId}
endif
#
exit