#!/bin/ksh ##################################################################### # 1/12/2015, Creadted by Jiayi Peng foolowing JGEFS_POST_TRACK, Scripts in vertical structure #################################################################### echo $(date) $0 $(date -u) begin set -xa export PS4=' + $SECONDS $na $LINENO: ' date export total_tasks=${total_tasks:-21} export gefsmpexec=${gefsmpexec:-"mpirun -n $total_tasks"} export APRUN=${gefsmpexec_mpmd:-"mpirun -n $total_tasks cfp mpmd_cmdfile"} #export APRUNTRACK="aprun -j1 -n21 -N7 -d1" #export NODES=3 #export IOBUF_PARAMS="*:size=32M:count=4:verbose" #################################### # obtain unique process id (pid) and make temp directory #################################### export pid=$$ export DATA=${DATA:-${DATAROOT}/${job}.${pid}} mkdir -p $DATA cd $DATA ############################ # Set up cycle varaible ############################ export cycle=t${cyc}z echo cyc=$cyc echo cycle=$cycle #################################### # Specify NET and RUN Name and model #################################### export NET=${NET:-gefs} export RUN=${RUN:-gefs} #################################### # File To Log Msgs #################################### export jlogfile=${jlogfile:-${DATA}/jlogfile.${job}.${pid}} #################################### # Determine Job Output Name on System #################################### export outid="LL$job" export jobid="${outid}.o${pid}" export pgmout="OUTPUT.${pid}" export pgmerr=errfile #################################### # SENDCOM - Copy Files From TMPDIR to $COMOUT # SENDDBN - Issue DBNet Client Calls # SENDECF - Flag Events on ECF # VERBOSE - Specify Verbose Output #################################### export SENDCOM=${SENDCOM:-YES} export SENDDBN=${SENDDBN:-YES} export SENDECF=${SENDECF:-YES} export VERBOSE=${VERBOSE:-YES} #################################### # Specify Execution Areas #################################### export HOMEtrak=${HOMEtrak:-${NWROOT}/ens_tracker.${tracker_ver}} export HOMEgefs=${HOMEgefs:-${NWROOT}/gefs.${gefs_ver}} export EXECens_tracker=${EXECtrak:-$HOMEtrak/exec} export USHens_tracker=${USHtrak:-$HOMEtrak/ush} export FIXens_tracker=${FIXtrak:-$HOMEtrak/fix} export PARMgefs=$HOMEgefs/parm ############################## # Run setup to initialize working directory and utility scripts ############################## #ksh setup.sh ############################## # Run setpdy and initialize PDY variables ############################## setpdy.sh . PDY #export PDY=20140913 ############################################## # Define GENVITDIR directory. The PATH do be determined ############################################## export JYYYY=$(echo ${PDY} | cut -c1-4) export COMINgenvit=${COMINgenvit:-${COMROOT}/${NET}/${envir}/genesis_vital_${JYYYY}} mkdir -p ${COMINgenvit} ############################################## # Define COM directories ############################################## export COMINgfs=${COMINgfs:-$(compath.py gfs/prod)/gfs.${PDY}} export COMINsyn=${COMINsyn:-$(compath.py arch/prod/syndat)} export COMIN=${COMIN:-${COMROOT}/${NET}/${envir}/gefs.${PDY}/${cyc}} export COMOUT=${COMOUT:-${COMROOT}/${NET}/${envir}/${RUN}.${PDY}/${cyc}/genesis} mkdir -m 775 -p $COMOUT export ensdira=$COMIN/pgrb2ap5 export ensdirb=$COMIN/pgrb2bp5 ############################################## echo set parameters using gefs.parm ############################################## . $PARMgefs/gefs.parm if [[ $envir = dev ]]; then if (( cyc == 00 )); then export fhmax=$fhmax00 elif (( cyc == 06 )); then export fhmax=$fhmax06 elif (( cyc == 12 )); then export fhmax=$fhmax12 elif (( cyc == 18 )); then export fhmax=$fhmax18 fi # (( cyc == 00 )) fi # [[ $envir = dev ]] #################################### # Create member list #################################### if [[ $fcstlong = true ]]; then memberlist="c00" else memberlist="" fi (( imem = 0 )) while (( imem < npert )); do (( imem = imem + 1 )) if (( imem < 10 )); then imem=0$imem fi memberlist="$memberlist p$imem" done # (( imem < npert )) echo memberlist=$memberlist export homesyndir=$HOMEtrak echo env | sort echo ######################################################## # Execute the genesis script. export cmodel=ens export loopnum=1 export ymdh=${PDY}${cyc} export trkrtype=tcgen export trkrebd=350.0 export trkrwbd=105.0 export trkrnbd=30.0 export trkrsbd=5.0 export mslpthresh=0.0015 export v850thresh=1.5000 export regtype=altg mkdir ${DATA}/${cmodel} cd ${DATA}/${cmodel} >trkr.cmdfile for pert in ${memberlist}; do pertdir=${DATA}/${cmodel}/${pert} if [ ! -d ${pertdir} ]; then mkdir -p ${pertdir} fi outfile=${pertdir}/trkr.${regtype}.${cmodel}.${pert}.${ymdh}.out echo "${USHens_tracker}/extrkr_gen_g2.sh ${loopnum} ${cmodel} ${pert} ${pertdir} 2>&1 >${outfile}" >>trkr.cmdfile done # for pert in ${memberlist} cat trkr.cmdfile chmod 775 trkr.cmdfile export MP_CMDFILE=${DATA}/${cmodel}/trkr.cmdfile export SCR_CMDFILE=$MP_CMDFILE # Used by mpiserial on Theia export MP_PGMMODEL=mpmd rm mpmd_cmdfile ln -s $MP_CMDFILE mpmd_cmdfile $APRUN for pert in ${memberlist}; do export atcfout="a${pert}" export TRKDATA=${DATA}/${cmodel}/${pert} ${USHens_tracker}/sort_tracks.gen.sh >${TRKDATA}/sort.${regtype}.${atcfout}.${ymdh}.out export err=$?; err_chk # cp ${TRKDATA}/trak.a*.atcfunix.altg.${ymdh} ${COMOUT}/ # cp ${TRKDATA}/storms.a*.atcf_gen.altg.${ymdh} ${COMOUT}/ done # for pert in ${memberlist} rm -rf ${DATA}/* cd ${DATA} for pert in ${memberlist}; do . prep_step # Input file export FORT41=storms.a${pert}.atcf_gen.altg.${ymdh} cp ${COMOUT}/$FORT41 . # Output files export FORT42=storms.a${pert}.atcf_gen.${ymdh} export FORT43=trak.a${pert}.atcfunix.${ymdh} ${EXECens_tracker}/filter_gen_gfs export err=$?; err_chk if [ "$SENDCOM" = YES ]; then cp $FORT42 $FORT43 ${COMOUT}/ fi done # for pert in ${memberlist} rm -rf ${DATA}/* ##### ensemble mean calculation ########################## ${USHens_tracker}/ens_trak_ave_2d.sh #cp ${DATA}/trak.aemn.* ${COMOUT}/. #cp ${DATA}/aemn.trkprob.* ${COMOUT}/. rm -rf ${DATA}/* cd ${DATA} hurrlist="AL90 AL91 AL92 AL93 AL94 AL95 AL96 AL97 AL98 AL99 \ EP90 EP91 EP92 EP93 EP94 EP95 EP96 EP97 EP98 EP99 \ WP90 WP91 WP92 WP93 WP94 WP95 WP96 WP97 WP98 WP99 \ HC01 HC02 HC03 HC04 HC05 HC06 HC07 HC08 HC09 HC10" namelist=input.${ymdh}.nlist for hurr in $hurrlist; do if [ -s ${COMOUT}/aemn.trkprob.${hurr}.65nm.${ymdh}.indiv.ieee ]; then cp ${COMOUT}/aemn.trkprob.${hurr}.65nm.${ymdh}.indiv.ieee . . prep_step echo "&datain0 kymdh0='aemn.trkprob.${hurr}.65nm.${ymdh}.indiv.ieee'/" >${namelist} echo "&datain1 kymdh1='aemn.trkprob.${hurr}.65nm.${ymdh}.indiv.data'/" >>${namelist} ${EXECens_tracker}/readprob <${namelist} export err=$?; err_chk if [ "$SENDCOM" = YES ]; then cp aemn.trkprob.${hurr}.65nm.${ymdh}.indiv.data ${COMOUT}/ if [ "$SENDDBN" = 'YES' ]; then $DBNROOT/bin/dbn_alert MODEL ENS_GENESIS $job ${COMOUT}/aemn.trkprob.${hurr}.65nm.${ymdh}.indiv.data fi fi rm $namelist fi done ################################ msg="JOB COMPLETED NORMALLY" postmsg "$jlogfile" "$msg" ############################## # Remove the Temporary working directory ############################## if [[ $KEEPDATA != "YES" ]]; then cd $DATAROOT rm -rf $DATA fi echo $(date) $job completed