In gsm
See common Q&A.
$ setenv CVSROOT :pserver:anoncvs@rokka.ucsd.edu:/rokka1/kana/cvs-server-root/cpscvs $ mkdir GSM ; cd GSM (for example) $ cvs co Install $ ./inst gsm_latest lo (-> it takes few minutes. Select "single" for arch) "gsm_latest" is changeable. For test run, following works. $ ./install --model=gsm --date=20061218 lo $ limit stacksize unlimited $ cd gruns $ ./gsm (-> it will make g_000 directory and output) It takes 12 minutes for 72 hours run by fuyu (one Xeon 3.2G). Check g_000 directory and output files.
$ cd g_000 (from $GSMDIR/gruns) $ ../../libs/etc/grmap -g0 pgb.ft00 --> pgb.ft00.idx and pgb.ft00.ctl are made. $ grads
Other way (more useful!)
$ cd g_000 $ ../../libs/etc/grmap -g0 pgb.ft00 -> Make template ctl file. $ mv pgb.ft00.ctl pgb.ft.ctl $ vi pgb.ft.ctl Edit option lines as below dset /home/kyoshimura/GSMmpi/gruns/g_004/pgb.ft%f2 options template yrev index /home/kyoshimura/GSMmpi/gruns/g_004/pgb.ft.idx tdef 7 linear 00Z9MAR1990 24hr $ gribmap -i pgb.ft.ctl -> pgb.ft.idx created. $ grads
Verified by fuyu. Takes 5 minutes for 72 hours run by 4-cpu.
For making it easier, should be installed in "/usr/local/mpich" (-> but you can configure it).
1. Change MPICH_DIR in gsm/configure-model (<- when mpich is not installed in /usr/local/mpich) 2. Delete "-lgm" in EXTRA_LIBS in gsm/opt/options-linux-mpi
$ cd gsm $ make
#!/bin/sh # set -ax # # this script makes 72 hour integration starting from an example initial # condition. ideal for first testing the system on new computer system # # --------------- user changeable parameters ------------------------ # # Change the following variable if you are running separate experiments # from the same directory # RUNNAME=g_004
Set your runname. Its directory will be created in gruns/.
# # Intervals of sfc execution, sigma output, sfc output and flx output # Various options for running the model # ENDHOUR=144
End time of calculation.
INCHOUR=$ENDHOUR INTSFCX=48
Don't know
INTSIG=24 INTSFC=24
writing out sig.ftXX and sfc.ftXX files in this interval. "0" is equal to "1". If comment out, equal to INTPOST.
INTPOST=24
making pgb.ftXX and flx.ftXX files in this interval.
INTRESTART=12 # FCST_RESTART=yes
Rewriting "sigit" and "sfci" in this interval
# # ------------- below for expert user only -------------------- # # If you wish, you may modify EXECDIR to /tmp directory and keep these # scripts on your permanent disk. # EXECDIR=/home/kyoshimura/GSMmpi/gruns/$RUNNAME # # ------- do not change below ------------------------------------- # mkdir -p $EXECDIR 2>/dev/null
Creating working directory
# INITIAL_SIGMA=/home/kyoshimura/GSMmpi/libs/con/sigft0090030900.asc
Initial sigma-level data. Can be other than ascii format, but format type should be specified in suffix. contains what?
INITIAL_SFC=/home/kyoshimura/GSMmpi/libs/con/sfcanl90030900.asc INITIAL_SFC_FILE_TYPE=osu1
Same as sigma-level data, but for surface.
# # blank means use guess (in the sfc file). # SST_ANL_T0= ICE_ANL_T0= SNO_ANL_T0= SCV_ANL_T0= SST_ANL=/home/kyoshimura/GSMmpi/libs/con/sstanl.900309.grib ICE_ANL=/home/kyoshimura/GSMmpi/libs/con/clim.ice.grib SNO_ANL= SCV_ANL= # INPUT_RESOLUTION=t62k28 # FCST_NPES=4 # # set environmental variables # . /home/kyoshimura/GSMmpi/gruns/runscr/envset # # cd to run directory # scrnam=`echo $0 | sed 's?.*/??g'` cp $0 $EXECDIR/0LOG.$scrnam cp ./cvar.env $EXECDIR/0LOG.cvar ls -l /home/kyoshimura/GSMmpi/gsm/bin >$EXECDIR/0LOG.bindates cd $EXECDIR || exit 8 # # renew log file # cat $0 > ERROR.out echo '==============' >>ERROR.out # # Automatic restart # if [ -s sigit -a -s sigitdt -a -s sfci -a "$FCST_RESTART" = yes ];then # # Restart # h=`/home/kyoshimura/GSMmpi/libs/etc/fhour sigit` echo fhour in the sigit file = $h
Read the timestamp of "sigit" (restart file). It will be carried to "forecast hour loop".
else # # Initial start. # h=00 # # Conversion from ascii to native format # fmt=`echo $INITIAL_SIGMA | sed 's/.*\.//g'` /home/kyoshimura/GSMmpi/libs/etc/scnvrt gsm $INITIAL_SFC_FILE_TYPE \ 62:192:94:28 \ -1:-1:-1:-1:-1 \ $fmt:bin $INITIAL_SIGMA:$INITIAL_SFC \ cnvrt_initial_sig:cnvrt_initial_sfc || exit 8
Convert from ascii format to binary format.
# # Find initial date and hour # /home/kyoshimura/GSMmpi/libs/etc/date cnvrt_initial_sig >date.$$ || exit 8 read HH MM DD yyyy FH <date.$$ ; rm date.$$ echo $yyyy $MM $DD $HH $FH # # Change input resolution to model resolution # /home/kyoshimura/GSMmpi/gruns/runscr/chgr \ cnvrt_initial_sig cnvrt_initial_sfc \ sigit sfci \ $INITIAL_SFC_FILE_TYPE || exit 8
Change resolution of binary files.
# # convert initial sfc file type to model sfc file type # SST_GRB_T0=`eval echo $SST_ANL_T0` SNO_GRB_T0=`eval echo $SNO_ANL_T0` SCV_GRB_T0=`eval echo $SCV_ANL_T0` ICE_GRB_T0=`eval echo $ICE_ANL_T0` export SST_GRB_T0 SNO_GRB_T0 SCV_GRB_T0 ICE_GRB_T0 /home/kyoshimura/GSMmpi/gruns/runscr/sfc0 gsm sfci sfco $INITIAL_SFC_FILE_TYPE || exit 8 # cp sfco sfci || exit 8 cp sigit sigitdt || exit 8 cp sigit sig.ft$h || exit 8 cp sfci sfc.ft$h || exit 8 # /home/kyoshimura/GSMmpi/libs/etc/date sigit >date.$$ || exit 8 read HH MM DD yyyy FH <date.$$ ; rm date.$$ echo $yyyy $MM $DD $HH $FH # # pgb of the initial # if [ no = yes ] ; then /home/kyoshimura/GSMmpi/gruns/runscr/pgb $h $h $INTSFCX || exit 8 elif [ no = yes ] ; then /home/kyoshimura/GSMmpi/libs/etc/catpgb fi
pgb (convert from sigma-level to pressure-level) sig.ft00.
fi # # forecast hour loop # xc=0 while [ $h -lt $ENDHOUR ] ; do # hx=`expr $h + $INCHOUR` if [ $hx -gt $ENDHOUR ] ; then hx=$ENDHOUR fi if [ $hx -lt 10 ];then hx=0$hx;fi # SST_GRB=`eval echo $SST_ANL` SNO_GRB=`eval echo $SNO_ANL` SCV_GRB=`eval echo $SNO_ANL` ICE_GRB=`eval echo $ICE_ANL` export SST_GRB SNO_GRB SCV_GRB ICE_GRB /home/kyoshimura/GSMmpi/gruns/runscr/fcstparm $INCHOUR $ENDHOUR $INTSFCX \ $INTSIG:$INTSFC:$INTPOST:$INTRESTART || exit 8 # # Execute forecast # /home/kyoshimura/GSMmpi/gruns/runscr/fcst $FCSTENV || exit 8 # # pgb of the forecast # if [ @DOPGB@ = yes ] ; then /home/kyoshimura/GSMmpi/gruns/runscr/pgb $h $hx $INTSIG || exit 8 elif [ no = yes ] ; then /home/kyoshimura/GSMmpi/libs/etc/catpgb fi # # find archive files # cp sig.ft$hx sigit || exit 8 mv sigp.ft$hx sigitdt || exit 8 cp sfc.ft$hx sfci || exit 8 # h=$hx done if [ linux = mac -a mpi = mpi ] ; then lamclean lamhalt fi