#!/usr/bin/env perl
#
# fvDAS Experiment setup utility.
#
# REVISION HISTORY:
#
# 14Jul2000  da Silva  Added forecast capability.
# 12Sep2000  da Silva  Forecast capability
# 22Sep2000  da Silva  Namelist settings for forecasting
# 23Sep2000  da Silva  Fixed $#rslist related bug; automatic generation of
#                      "refout.sed" - now it works for all horizontal
#                      resolutions.
# 02Sep2000  da Silva  Fixed daotovs.acq, added new aquire.
# 20Jan2001  da Silva  SAU implementation.
# 14Feb2001  da Silva  Added umask checking, fixed QUIT option, etc
# 27Feb2001  da Silva  Taft environment settings in fvdas.j, etc
# 12Mar2001  da Silva  Creating separate diag.tbl for run/ and fcst/;
#                      no longer checking $rc on return from text editor.
# 09May2001  da Silva  Added possibility of n-day long job segments
# 23Jul2001  da Silva  Added ".no_archiving" to morgue/, fcst/ abd stage/
# 02Nov2001  da Silva  New terrain: surf_r1.data_288x181.usgs
# 14Nov2001  E. Yeh    Added observation system file checking capability
# 03Dec2001  da Silva  Added Radcor.
# 06Dec2001  da Silva  Merged with Jiundar's MLP/MPI mods
# 12Dec2001  da Silva  Mods for GCM mode
# 19Dec2001  E. Yeh    Enabled get_obsys to hard_check, soft_check, or no check
#                        observing system files
# 28Dec2001  E. yeh    Changed $FVHOME/run/morgue to $FVHOME/morgue
# 31Dec2001  da Silva  Hooks for bias corrected Ts analysis; implemented
#                      recycle/ directory.
# 07Jan2002  Nebuda    Added support for HDF output from fvgcm.
# 08Jan2002  da Silva  Small mods for HDF output from fvgcm.
# 14Jan2002  Owens     Added creation of Run_Config
# 18Jan2002  J. Chern  Extra variables BMA, GWET, and GWET1 for diag.tbl
# 22Jan2002  E. Yeh    Changed DVV from .F. to $diag3D
#                      Changed $obsclass tovs_l1b to tovs_l1c
#                      Removed the comment of the line with *bkg.tovs_* to create silo.arc
#                      Removed $obClass from forecast run
# 18Jan2002 da Silva   Added GID dialogue; removed questions about ssh/scp
# 04Jan2002 E. Yeh     Removed the logic of GOTO from get_obsys.
# 04Feb2002 Kokron     Fix bug in get_GID that caused acceptance of partial matches
# 13Feb2002 E. Yeh     chomp($rsh = `which ssh`); and chomp($rcp = `which scp`);
#                      Determination of DAO; Changed .F. to .T. for CMFDTR,KVH,KVM,ZMDU
# 05Mar2002 E. Yeh     Changed .T. to $diag3D for CMFDTR,KVH,KVM,ZMDU
# 22Mar2002 E. Yeh     Added "limit coredumpsize 0" for output scripts
# 27Mar2002 E. Yeh     Added CO2F = .true. to ccmrun.namelist script
# 10Apr2002 E. Yeh     Modified so that fvarchive.j will support the usage of date option
# 25Apr2002 E. Yeh     Get default obsclass from all classes defined in obsys.rc
# 24May2002 Dee        Replaced psas_qc.rc by sqc.rc
# 03Jun2002 E. Yeh     Added zeit and bkg.sfc related statements
#                      Addjusted for diag.rc
# 11Jun2002 Todling    Added module scsl.1.3.0.0
# 11Jun2002 E. Yeh     Added LSM FILES for silo.arc and mstorage.arc
# 13Jun2002 Todling    Update frequency for RUC support
# 14Jun2002 da Silva   Adjustments for MPI/PSAS; disabled analysis update freq
# 14Jun2002 E. Yeh     Enabled files lsm.hst and omf.daotovs
#                      Enabled to choose FVICS and FVBCS
#                      Update lsm.namelist
#                      Copy d_rst, p_rst, and lsm_rst to recycle dir initially.
# 09Jul2002 E. Yeh     Make short form of lsm.namelist for fcst dir
# 19Aug2002 JD Chern   Added env variables for AGCM_N_PROCESSES.
# 20Aug2002 E. Yeh     Checked obsys class string for llk, flk, and validation.
# 18Sep2002 E. Yeh     RADCOR = 0
# 02Oct2002 E. Yeh     Set default nccs mhost location as /output/${USER};
#                                  nas mhost location as /helios1/${USER}.
# 25Oct2002 E. Yeh     Soft link default input data path to /share/fvdas/fvInput/...
#                      Enable to choose FVINPUT
# 14Nov2002 E. Yeh     MPI/OMP rearrangement
# 05Nov2002 Dee        Recycle bias file for simplified bias correction (SBC)
# 01Dec2002 E. Yeh     Added 100 years to the end date/time of forecast ccmrun.namelist.
# 30Jan2003 Todling    Added BSUB directives; changed OSF1 required stacksize
# 03Feb2003 Todling    halem-related (quick) fixes: need revision.
# 06Feb2003 Todling    using getsponsor command for both Halem and Daley
# 13Feb2003 Todling    Model assumed to run Hybrid (SGI&DEC); bsub commands added.
# 25Feb2003 Todling    Back to running OpenMP model on the SGIs.
# 26Feb2003 Todling    Fixes to deal w/ Sunrise TMPDIR/SCRATCH
# 31Mar2003 DKokron    Mods to address bug #906
# 03Apr2003 Todling    For now, not using -w opt in Halem bsub (can't figure it)
# 08Apr2003 E. Yeh     1) Moved copy obsys.rc to later. 2) new sstsice naming convention
#                      *weekly.v2.yYYYY.nc and *daily.yYYYY.nc
# 30Apr2003 Radakovich Mods for using CLM2 instead of LSM; no longer works
#                      with LSM.
# 28May2003 Todling    Using TMPDIR_UBC for TMPDIR on Halem
# 16Jun2003 Todling    Fixed back slashes missing before TMPDIR_UBC usage
# 20Jun2003 E. Yeh     Applied "which chgrp" to define the correct chgrp path.
#                      Modified the logic to select weekly sstsice file (no daily sstsice).
# 24Jun2003 Todling    - Added TIMEINC for RUC support
#                      - Fixes for Kalman
# 01Jul2003 Todling    Merged fvdas-1_4r1p1 w/ jrad-v1_4beta7-clm2-01
# 02Jul2003 E.Yeh/RT   - BSUB -n set to 1 for Halem instead of 4
# 03Jul2003 Todling    Added a few RUC/varwindow parameters
# 11Jul2003 Todling    Added reference to GADS data; priority to llk tovs data
# 14Jul2003 Todling    Merged dee-sbc-fvsys-00 w/ 1_4beta9
# 24Jul2003 Todling    Built support for 3hr surface analysis; turned off SBC.
# 28Jul2003 E. Yeh     Modified the logic such that pmpi became a larger number;
#                      generalized get_GID.
# 01Aug2003 Todling    - Generalized to accommodate SSI.
#                      - Eliminated support for SAU.
# 28Aug2003 da Silva   Fixes for FVGCM mode.
# 16Sep2003 Todling    - Modified silo.rc to store off-hr bkg/ana in case 3hr
#                        sfc analysis case.
#                      - Renamed extension of tuning oms files to rst
# 17Sep2003 Todling    - Changed location of pftdata and srfdata
#                      - Added var clm_nhmse
# 26Sep2003 Todling    diag.eta filename fix for freq<060000
# 29Sep2003 Todling    Halem-related fixes to SSI-based DAS
# 17Oct2003 da Silva   Added new resource file: Chem_Registry.rc
# 23Oct2003 da Silva   Added archiving rules for chem.eta files and chem rs.
# 29Oct2003 da Silva   Changed no-output freq in diag.rc from "-1" to "-2"
#                      as "-1" has a special meaning in fvChem (virtual
#                      diagnostics which are computed but never written
#                      to file)
# 29Oct2003 E. Yeh     Updated subroutine excl.  Corrected numeric and string
#                      comparison operators.  Removed lsm.rpointer from m. storage
# 30Oct2003 E. Yeh     Defined HOST for scripts fvdas.j and fvfcst.j.
# 30Oct2003 Todling    Fix related to activation of SBC
#                      Created sub ed_ana to edit analysis rc file
# 02nov2003 da Silva   Added dust rc file; also it no longer dies if chem
#                      rc files are not available (so it works when FVCHEM
#                      is off)
# 05Nov2003 Todling    - Module (PrgEnv) spefication on halem
#                      - Small bug fix in varwindow selection
# 14Nov2003 Todling    Added satellite angular correction capability (SSI)
# 17Nov2003 Todling    Renamed ed_ana to ed_fvpsasrc; created fvpsas.rc
# 20Nov2003 Todling    Modifications to accomodate GSI
# 21Nov2003 Todling    Modifications to allow guess field to be used by NCEP ana
# 04Dec2003 Todling    Fixed SSI/GSI static files from CCruz Dir to Todling's
# 05Dec2003 Todling    Added ref to Terra MODIS data
# 12Dec2003 Todling    Turned fdiageta public var to use in silo.arc
# 15Jan2004 Lucchesi   fvarchive fails with -f (follow symlinks) under Perl 5.6.0
# 05Feb2004 Todling    - Saving SSI/GSI diag files in obs directory
#                      - Added support for asynoptic bkg for SSI/GSI DAS
# 10Feb2004 Todling    Added ed_ncep_rc
# 30Mar2004 Todling    Renamed ingesfile to gesfile
# 15jan2004 da Silva   Fixed lsm namelist in FVGCM mode.
# 10jun2004 da Silva   Introduced new fvInput structure, lots of clean-ups,
#                      removed hardwired resolutions, dirs from lsm
#                      namelists.
# 30jun2004 Todling    Partially merged fvdas-1_5alpha10 and fvchem-1_0beta9
# 04aug2004 Owens      Text files for satbang/bias had bad template in silo.rc
# 02Sep2004 Todling    Introduced BASEDIR
# 09Sep2004 Todling    GCM now running hybrid everywhere; splitexe is now default;
#                      asyn-bkg for 3hr is now default.
# 30Sep2004 Todling    Fixed DAS questions asked when doing GCM-only runs.
# 01Oct2004 Kokron/RT  Added relevant env for Altix/Linux
# 04Oct2004 Kokron/RT  Added singular vector filename templates to silo.rc
# 20Oct2004 Todling    Added hooks for NCEP OIQC
# 21Oct2004 Todling    Some fixes to allow better setup on Linux;
#                      Fixed asynoptic bkg setup; edit psas.rc for sigF place
# 05Nov2004 Todling    Initial modifications to accommodate GEOS-5 GCM
# 22Nov2004 Todling    Updated silo.arc w/ fcst filename; fixed host name setting
# 02Dec2004 Meta/RT    Exporting prepobs files from etc dir to run dir
# 09Dec2004 daSilva/RT Bug fix related to TIMEINC and GCM-alone case
#                      Added sfcanl for surface analysis fields from GSI
# 16Dec2004 Todling    fix for: HOST env var @GSFC no longer has .gsfc.nasa.gov
# 16Dec2004 BZhang/Owens fix for long line LD_LIBRARY_PATH
# 27Dec2004 Todling    Update of RC's for G5GCM
# 07Jan2005 Dee        Added missing GSI diag_ files in silo.arc
# 10Jan2005 Todling    Generalized fcst script to move *itime.bin files to stage (G5)
# 10Jan2005 Ownes/RT   Generalized template names of gsi diag_ files in silo.arc
# 02feb2005 da Silva   Added Aerosol/Chemistry rc files.
# 10Mar2005 Ownes/RT   Added sfc-exp filename to fvpsas.rc
# 10Mar2005 Todling    - Merge of Owens & daSilva's changes above - chem had broken das setup
#                      - Update to accommodate new diag_filename from GSI
# 17Mar2005 Todling    Updates to geos_agcm-5_0beta04
# 23Mar2005 Owens/RT   LD_LIBRARY_PATH env multiplication bug fix
# 23Mar2005 Todling    - Updated filename of GCM HISTORY output; cleaned old names
#                      - Added GCMPROG.rc
# 28Mar2005 Owens      PROG3DNM bug fix in G5GCM context
# 05Apr2005 da Silva   Added additional chem rc files: AOD related.
# 07Apr2005 Todling    Updated MIPSpro to 7.4.2.0
# 07Apr2005 da Silva   Fixed omp/mpi bug when in fvchem mode; now if in fvchem
#                       with more than 2 tracers all runs in pure MPI.
#                       Kept MIPSpro.7.3.1.1m mpt.1.4.0.3 for fvgcm mode
#                       with no analysis. Don't bother with GID on tropic.
# 11Apr2005 Todling    Merged latest w/ Dan Kokron's Altix tag.
# 12Apr2005 Kokron     Added set on env MPI_MEMMAP_OFF to avoid crash of GSI on columbia!
# 14Apr2005 Todling    Fixed archiving script for Linux env
# 27Apr2005 Todling    Changed references of helios to lou
# 06May2005 Todling    It seems there is a conflict in defining MPI_TYPE_MAX (needed by GCM)
#                      and MPI_REQUEST_MAX (need byt GSI for 96pe or more) on Columbia; changes
#                      where made to accommodate runs w/ less then 96 pes ... need study.
#                      ALso MPI_MEMMAP_OFF removed since it conflicts w/ GCM - maybe no longer be needed
# 12May2005 Todling    Turned analysis files (bkg/ana) into single-time files (fvpsas.rc)
# 06Jun2005 LPChang/RT Added OX/O3 handlers for PChem
# 15Jun2005 Todling    Added (somewhat clumsy) logics to handle g5-e72 resolution
# 27Jun2005 Todling    Implemented asynoptic bkg option for GEOS-5 DAS
#                      Three-hr asyn bkg is now g5das default
# 06Sep2005 Todling    Added VTXLEVS to forecasting script
# 05Oct2005 Stassi     Added templates for xana.sfc and xbkg.sfc files
# 05Oct2005 Todling    Wired-in location of GRADS on Altix to LTakacs home dir
# 18Oct2005 RT/Stassi  Generalized lnbcs to handle real-time SSTs
# 21Oct2005 Todling    Minor mods for relocator; intro new bkg.eta filenames
# 27Oct2005 RT/Stassi  Check module initialization for new OS
# 02Nov2005 Stassi     Remove GCMPROG from run and fcst directories
# 02Nov2005 Todling    Updated mpt on columbia to mpt.1.12.0.nas
# 06Jan2006 Todling    Updated default bkg errors to 08Nov2005 version
# 11Jan2006 Todling    Removed errtable and prepobs_errtable.global from GSI export
# 02Feb2006 Todling    Redefined naming convention for gmao berror files;
#                      replaced analon=540 by 544 - fix for native grid;
#                       native analysis is now default
# 07Feb2006 RT/Meta    Back-slach missing at end of forecasting script to rm FVWORK
# 10Feb2006 Todling    Updated modules on Palm for use w/ TLM and ADM
# 23Mar2006 Todling    Updated modules on Palm again (intel-9.0.024/mpt.1.12.0.0)
# 28Mar2006 Todling    - Generalized location of static initial conditions for fvgcm/adm/tlm
#                      - Updated to mpt.1.12.0.nas in antecipation of OS upgrade
#
# 14Feb2006 Stassi     Added ana.prs.rc to @g5rc_files; added prs files to silo.arc
# 17Feb2006 Todling    - Turned "OX-Restart" into an essential file; ox rst renamed
#                      - added species file to lnbcs (daedalus only)
#                      - added PREPQC parameter files to export
# 09Mar2006 Stassi     Added diagnostic subsets to GEOS-5 GCM output files
# 29Mar2006 LPChang    Added OMI diag files to silo.arc
# 29Mar2006 Todling    Upgraded mpt for Palm
# 20Apr2006 Todling    Updated to account for rst files renamed in recycle dir
# 24Apr2006 Todling    Updated to Eros GCM
# 28Apr2006 Todling    Updated to intel-comp.8.1.034 on palm and columbia
# 01May2006 Todling    Increased MPI_TYPE_MAX by a factor of 10 - gcm requirement!
# 03May2006 Todling    Implemented IAU option
# 12May2006 WGu/RT     Updated default bkg errs to gmao12May2006
# 12May2006 WGu/JGuo   Bug fix in grid type for y=544 case
# 17May2006 Stassi     Added tavg3d*_p.rc files to lcv2prsrcs list
# 19May2006 Stassi     Removed trailing blanks, corrected misspelled words,
#                      and output format modifications
# 22May2006 Todling    Changed defaults; aero-chem connection
# 07Jun2006 Stassi     Updated for columbia
# 20Jun2006 Eliu/JCS   create gmao_global_satinfo.rc during run time and archive it
# 21Jun2006 Todling    Added VTXRELOC as permanent env variable in DAS script
# 22Jun2006 WGu/RT     inst3d template missing for forecast output
# 01Aug2006 da Silva   Updated Chem RC files.
# 16Aug2006 Todling    Removed reset of solardt and irraddt when PCHEM is present
# 30Aug2006 Zhang/Guo  Added bias correction case
# 31Aug2006 Todling/Gu Updated bkg err stats location to gmao29Aug2006
# 21Sep2006 Stassi     Removed fvcore_import_rst  and superdyn_import_rst rst files
# 28Sep2006 Stassi     Point to b10 little-endian bcs files; New DT vals for d-grid
# 28Sep2006 da Silva   Added archival rules for co/aerosols in GEOS-5.
# 05Oct2006 RT/JCS     Change bkg err stats location back to gmao12May2006
# 06Oct2006 RT/JCS     Correct prog.inst3d_met_p entry in silo.arc file.
# 24Oct2006 Stassi     Correct restart directory location on NAS (columbia)
# 31Oct2006 Todling    Updated AGCM.rc to handle bias forcing in GCM
# 31Oct2006 Stassi     Point to bcs files in /share/dao_ops; correct AGCM.rc.tmpl
# 02Nov2006 Stassi     Added agcm_internal_rst to @rs5_files
# 03Nov2006 Todling    Updated bkg err stats to 09Oct2006 version
# 03Nov2006 Stassi     Remove working directory at end of each segment in job script
# 07Nov2006 Stassi     Moved CAP.rc.tmpl FINALIZE edit to AGCM.rc.tmpl RECORD_FINAL
# 08Nov2006 Stassi     Added blacklist.rc for gsi
# 10Nov2006 Stassi     Key BOOTSTRAP option off existence of AGCM.BOOTSTRAP.rc.tmpl
# 07Dec2006 Stassi     Change VTXRELOC from 1->0; Added VTRACK =0; add g5_monthly
# 14Dec2006 Stassi     Added MONTHLY_MEANS variable to job scripts
# 14Dec2006 Todling    Updated bkgerr for GSI 2006_09; using gmao_global_satinfo.rc instead of tmpl
#                      BEWARE: no longer compatible w/ gAdas-beta10 tags - need to branch off beta10 changes
# 20Dec2006 Todling    Fixed question related to iau/noiau setup
# 09Jan2007 Todling    Added FVINPUT env var to forecasting script (need by adm/tlm)
# 20Jan2007 Todling    Renamed gradient vector
# 16Feb2007 Todling    - Renamed anafreq to varwindow for clarity;
#                      - Removed RUC option
#                      - Removed reference to agcm_internal_rst (not a restart)
#                      - Added satbias and angle as restarts
#                      - Renamed ed_fvpsasrc to create_fvpsasrc
#                      - Generalized bkg restart transfer to recycle (see copy_restarts)
#                      - Added cnv2prs.log - as hold of output from cnv2prs program
# 13Mar2007 Todling    Implemented/tested-logics of 4d-var-like setup
# 21Mar2007 Todling    Changed defaults for Gpert; changed tmpl name of jnorm/fgrad
# 23Mar2007 Stassi     Change SOLAR_DT and IRRAD_DT from 5400 to 3600 for res<0.5
# 09Apr2007 Stassi     turb_import_rst not mandatory for new tag (beta11) (RT: turned into obsolete)
# 21Apr2007 Todling    Support for ESMF-GSI; hdf extension of G5GCM output files
# 12Jul2007 WGu/RT     Updated berror to 27Jun2007
# 13Jul2007 Todling    Add calls to allow full setup of 4d-var
# 26Oct2007 Todling    Observer and Analysis sensitivity setup
# 02Nov2007 Todling    Observation sensitivity setup
# 29Nov2007 Todling    Add weak constraint knobs
# 13Dec2007 Todling    Split silo.arc for various cases: ADAS, FCST, ASENS
# 15Dec2007 Todling    Add blending of rst to forecast script
# 19Dec2007 Stassi     Remove -V flag; LD_LIBRARY_PATH to g5_modules; ln fvInput to work dir
# 17Jan2008 Stassi     Link external data sets under FVWORK/ExtData directory
# 07Mar2008 Todling    All prog files saved to Y/M/D/H directories
# 16Apr2008 Todling    Force forecast with IAU increment (run fcst from time-offset fields)
# 30Jun2008 Meta       brought in Chris Redder RADCOR settings - change default
#                         NCEPINPUT to /share/todling again
# 28Oct2008 Stassi     Add Harpertown option on discover; rm FVWORK after forecast
# 10Nov2008 Stassi     replace getlogin() with getpwuid(); getlogin is wrong at NAS
# 05Feb2009 Todling    Various (small) updates related to update to GSI-08
#                      NOTE: From now on, the directory fvInput under expid is a link to the real thing
# 13Mar2009 Todling    Generalize suffix for NC files (hdf or nc4)
# 19Mar2009 Todling    - Revisited staging of restarts for fcst (remove -cprs option)
#                      - Give user option to compress diag output files
#                      - Update arc files to handle ods files per instrument template name
# 03Apr2009 Todling    Analysis now expects GCM to provide bkg at desired resolution
# 10Apr2009 Todling    Defined new d and e resolutions: as 576x361 and 1152x721
# 30Apr2009 Stassi     Updated for monthly means on discover
# 10Jun2009 Kokron     updates for pleiades; use remote machine name provided to fvarchive if gethostbyname returns empty
#                      also changed name of pleiades front-end machines
# 11Jun2009 Kokron     Mods to make the final PBS scripts smaller and more readable
# 11Jun2009 Kokron     Mods to filter obsys-nas.rc to work on pleiades
# 20Jul2009 Todling    Update bkg error file to gmao31Mar2009_fp+oz_fix
# 13Aug2009 Stassi     Added definitions for new GSI variables in fcst job script
# 28Aug2009 Stassi     Call write_FVDAS_Run_Config during setup
# 11Sep2009 Stassi     Updated CO_*.rc and OC_*.rc lists for GloPac experiment
# 02Oct2009 Stassi     New output in silo.arc; new sub, copy_resources_new()
# 27Oct2009 Todling    Reset some defaults: MERRA ObsClass not so easy to use yet
# 02Nov2009 Todling    BERROR env var now stands for simply directory when files live
# 06Nov2009 Todling    Add module to generate script for stand-alone analysis runs
# 10Nov2009 Todling    Point to Fortuna-2_0 bcs
# 17Nov2009 Todling    a-sens script from here and placed in a package
# 24Nov2009 Todling    Update version of grads to that under /share/dasilva/opengrads/setup.csh
# 20Dec2009 Stassi     Warn user if FVINPUT default comes from env variable
# 08Feb2010 Todling    - For now, ana-sens does not need to bring in ana-ods files
#                      - Add current set of output to be deal w/ by asenstorage.arc
# 10Feb2010 Todling    Some required changes for Fortuna-2_1
# 26Feb2010 Stassi     Change GOCART and exit defaults; copy_restarts_iau() if doiau
# 29Apr2010 Stassi     Added runtime parameters; Modified to run on dali
# 05May2010 Todling    Point to Fortuna-2_1 bcs
# 08Jun2010 Todling    Add anavinfo file
# 09Jul2010 Stassi     Added sub edit_collections()
# 19Aug2010 Todling    Make sure when adj-gsi is running pressure check is not applied
# 04Oct2010 Todling    - differentiate between specres and jcap
#                      - keep doubleCG as default for DAS and vanilla CG for asens
#                      - sourcing FVDAS_Run_Config not working correctly (commented for now)
# 10Oct2010 Todling    Add generation of fsens job script
# 28Feb2011 Todling    Remove support for GEOS-4; support for Cubed-sphere
# 27Feb2011 Todling    Update bkg error file to gmao24Jun2011_fp+oz_fix
# 23Apr2011 Todling    Support for ADM-fcst-sens runs w/ Cubed-sphere
# 28Feb2011 Todling    Remove support for GEOS-4; support for Cubed-sphere
# 21Jul2011 Kokron     Correct option for setstripe on Lustre file systems
# 27Jul2011 Kokron     Convert some cfe logic to pfe as we are no longer running on Columbia
# 28Jul2011 Kokron     Enable pesto option to move files from FVWORK instead of copy (1300s -> 6s on pleiades)
# 08Nov2011 Todling    Add knobs for hybrid-GSI in main DAS script
# 02Dec2011 Todling    For now, for 4dvar to run in split-obsvr mode
# 01Jun2012 Todling    Add seviri, metop, npp(atms,cris)
# 25Mar2013 Todling    - Add silo reference to 0-hr impact ods files
#                      - Dettached DT of pertGCM from that of GCM
# 30May2013 Todling    Add ed_aod4fcst_acq to create acq for reproducing GCM fcst when AOD ana is on
# 20Jun2013 Todling    Adjust asens.acq to take cbkg.eta for climatological CO2
#                      Vortex track and reloc are now on by default
# 03Dec2015 Todling    Default location of BERROR set in analyzer (not here)
# 07Dec2015 Todling    Increase resolution of ADM for e/C360/C720 cases
# 06Dec2016 da Silva   Eliminated .pcf.tmpl files from AOD analysis; requires latest 
#                      config.py from MAPL (rev 1.15 or later)
# 28Feb2017 Todling    Abilitate cubed-SST option
# 26May2017 Sienkiewicz Additions for new radiance bias correction
# 25Jul2017 Holdaway   Added resource files associated with NGGPS FV3 tlm/adjoint, sens and svec
# 19Jul2018 Wargan     Additions for OMPS
#-------------------------------------------------------------------------
use Cwd qw(abs_path cwd);
use English;
use Env;                 # make env vars readily available
use File::Basename qw(basename dirname);
use File::Copy qw(cp mv);
use File::Find;
use File::Path qw(mkpath rmtree);
use Getopt::Long qw(GetOptions);
use Sys::Hostname;
use Time::Local;         # time functions

use FindBin;             # so we can find where this script resides
use lib ("$FindBin::Bin", "$ESMADIR/$ARCH/bin");

use AGCMrc qw(AGCM_rsts AGCM_label_subst);
use AGCMrc qw(ed_g5agcm_rc set_AGCM_envvars set_AGCM_flags);
use AGCM_PERTrc qw(AGCM_PERT_label_subst ed_g5agcm_pert_rc);
use AGCM_PERTrc qw(set_AGCM_PERT_envvars set_AGCM_PERT_flags);
use Create_anasa_script qw(anasa_script);
use Create_asens_script qw(asens_script);
use Create_fsens_script qw(fsens_script);
use GMAO_utils qw(get_siteID);
use Manipulate_time qw(tick);
use Saverst qw(writeSaverst);
use getsponsor qw(get_spcode);

my $SECS_PER_MIN = 60;
my $MINS_PER_HR  = 60;
my $HRS_PER_DAY  = 24;
my $SECS_PER_HR  = $SECS_PER_MIN * $MINS_PER_HR;
my $SECS_PER_DAY = $SECS_PER_HR * $HRS_PER_DAY;

my ($res, $hres);
my ($g5hist_rc, $g5prog_rc);
my ($gocart_tracers, $radcor, $emiss, $lsmodel_flag, $ldas_flag, $rroute_flag);
my ($agcm_rst_flg, $sensdeg, %setupfile, @otherheaders);
my ($checkFLG, $dbqueue, $runjobFLG, $saveFLG, $stopFLG);
my (@fvprompt, @fvANS1, @fvANS2, $fvsetupflags);
my ($fvhome, $fvroot, $fvbin, $bindir, $pwdL, $pwdP, $checkID, $siteID);
my ($remNODE, $remID);
my ($qsub);
my ($acqloc);
my ($fcstimes,$fcswait_hrs,$asnwait_hrs);
my ($landbcs);
my ($coupled, $ores, $mometc);
my ($o_servers);

my ($sysfile, $nodeflg);
my (@rmTilde);
my ($merra2, $acftbias, $doRcorr, $nrt, $rstype);
my ($hyb_ens, $do4diau, $newradbc, $siglevs, $vres, $aensupa);
my ($geosit, $r21c);

system clear;
get_runtime_values();
$ENV{"PATH"} = $FindBin::Bin .":$ENV{PATH}";

# FVROOT is directory above fvbin where binaries have been installed
# ------------------------------------------------------------------
  $fvbin = $FindBin::Bin;  # absolute path of fvbin

  chomp($pwdL = `pwd -L`); # logical path of calling program
  chomp($pwdP = `pwd -P`); # physical (absolute) path of calling program

  # if fvsetup is called from local directory
  #------------------------------------------
  if ($pwdP eq $FindBin::Bin) { $fvbin = $pwdL }

  # if fvsetup is called from remote directory
  #-------------------------------------------
  else {
      $bindir = dirname($0);

      # remove single-dot (".") path segments
      #--------------------------------------
      while ($bindir =~ m|^\./|) { $bindir =~ s|^\./|| }
      while ($bindir =~ m|/\./|) { $bindir =~ s|/\./|/| }
      while ($bindir =~ m|/\.$|) { $bindir =~ s|/\.$|| }

      # remove leading double-dot ("..") path segments
      #-----------------------------------------------
      while ($bindir =~ m|^\.\.|) {
          $bindir =~ s|^\.\.||;
          $pwdL = dirname($pwdL);
          $bindir =~ s|^/||;
      }

      # determine path of fvbin
      #------------------------
      $bindir = "$pwdL/$bindir" unless $bindir =~ m|^/|;
      $fvbin = $bindir if -e $bindir and abs_path($bindir) eq $fvbin;
  }
  $fvroot = dirname($fvbin);
  $fvetc = "$fvroot/etc";
  $user = getpwuid($<) unless ($user = $ENV{"USER"});

# Use values in g5_modules file to set environment
# ------------------------------------------------
  $ENV{"FVROOT"} = $fvroot;
  my $perlwrapper = "$fvbin/g5_modules_perl_wrapper";
  die ">>> ERROR <<< Cannot find $perlwrapper" unless -e $perlwrapper;
  do $perlwrapper;

# Verify fvsetup location, if script is invoked from a remote directory
# ---------------------------------------------------------------------
  $localdir = cwd();
  $fvsetupdir = "$FindBin::Bin";

  if ($localdir ne $fvsetupdir) {
      print "\nExecuting fvsetup from the following directory: $fvsetupdir\n";
      if ($runjobFLG) {
          print "\n";
      } else {
          $ans = query1("Is this correct (y/n)?", "n");
          exit unless yes($ans);
      }
  }

# Check OS system file
# --------------------
  chomp($sysfile = `$fvbin/OScheck.pl -sysfile`);
  if (-f $sysfile) {
      $status = system("$fvbin/OScheck.pl -cmp $fvetc");
      if ($status and ! $runjobFLG) {
          $ans = query1("\nContinue (y/n)?", "n");
          exit unless yes($ans);
      }
  }

# Assorted defaults
# -----------------
  $siteID = get_siteID();
  $siteName = get_siteID(1);
  defaults();

# Determine GCM spatial resolution
# --------------------------------
  welcome();
  while3 ( \&get_rem_acct_info );
  while3 ( \&get_specific_info );
  get_dimsg5gcm();

# User defined options
# --------------------
  while3 ( \&get_expid     );
  while3 ( \&get_lsmodel   );
  while3 ( \&get_fvhome    );
  while3 ( \&get_nodeflg   );
  while3 ( \&get_varwindow );

# Create BC file names and make sure files can be found
# -----------------------------------------------------
  while3 ( \&get_fvbcs    );
  while3 ( \&get_extdata  );
  while3 ( \&get_restart5 );

# Inquire about perturbation-related applications
# -----------------------------------------------
  while3 ( \&inq_admtlm );
  while3 ( \&def_admdims );
  while3 ( \&inq_anasens );

# Continue with user defined options
# ----------------------------------
  while3 ( \&get_times  );
  while3 ( \&get_setgsi );
  while3 ( \&get_obsys  );
  while3 ( \&set_radcor );
  while3 ( \&set_rcov );
  while3 ( \&set_acftbias );
  while3 ( \&set_newradbc ); 
  while3 ( \&set_ldasANA  );
  while3 ( \&get_forecast );
  if ($DAO == 0) { while3 ( \&get_mhost ) }
  while3 ( \&get_output );
  while3 ( \&get_history );
  while3 ( \&get_pyradmon );
  while3 ( \&get_rstype );
  while3 ( \&get_GID );

# Create subdirectories in FVHOME
# -------------------------------
  mkdir_fvhome();

# Create Namelists/tables for main DAS run
# ----------------------------------------
  archiving_rules();
# arch_stageana();  #_RT will not stage analysis for now
  arch_fcst();
  arch_fsens();
  arch_asens();
  arch_anasa();
  run_config();

# If so, setup EnADAS
# -------------------
  set_atmens();

# Copy files
# ----------
  copy_resources();
  if ($doiau) { copy_restarts_iau() }
  else        { copy_restarts() }

# Create the JOB script - DAS run
# -------------------------------
  create_archscript();
  create_script();
  create_ana_aod_script_tmpl();

# Create the JOB script - forecast run
# ------------------------------------
  create_fscript();

# Create job scripts to run stand-alone analysis
# ----------------------------------------------
   set_inputparams();

   asens_script ( %inputparams ) if $doasens;
   fsens_script ( %inputparams ) if $doasens;
   anasa_script ( %inputparams );

# Allow user to edit resources/scripts
# ------------------------------------
  build_lnbcs();
  edit_resources();   # *** silo.arc is created here

# For now, fix GOCART RC files (vertical level referencing)
# ----------------------------
  $rc = system("$fvbin/fix_gocart_rc.csh $vres $fvhome/run/gocart");
  die "Failed to fix GOCART levels-referencing $!" if ( $rc );

# LDAS Setup is done separately, follow instructions in GEOSldas/README.md   
# ------------------------------------------------------------------------
    print "\n checkprintout  ldas_ana == 1 ($ldas_ana)\n";
    if ($ldas_ana == 1 ) {
    print "\n Please run ldas_setup following instructions in GEOSldas/README.md\n";
    print "\n requires config input files: YOUR_exeinp.txt, YOUR_batinp.txt.\n" ;
    print "\n example LDROOT: /discover/nobackup/$user/GEOSldas\n" ;
    print "\n example LDHOME: /discover/nobackup/$user/ldascoup_C180\n" ;
    print "\n example cd $LDROOT/install/bin/ \n";
    print "\n example salloc \n";
    print "\n example source g5_modules \n" ;
    print "\n example ldas_setup setup $LDHOME exp_exeinp.txt exp_batinp.txt \n" ;
      }
    
# Monthly Setup
# -------------------------------------------------------------
# [this must be after HISTORY.rc.tmpl and silo.arc are created]
# -------------------------------------------------------------
  $cmd = "$fvbin/monthly_setup.pl"
    . " -expid $expid"
    . " -fvhome $fvhome"
    . " -fvroot $fvroot"
    . " -nodeflg $nodeflg"
    . " -res $res";
  $cmd .= " -gid $gid" if $gid;
  print "$cmd\n";
  system($cmd);

# Save inputs
# -----------
  save_inputs();

# All done
# --------
  goodbye();

  exit 0;

#=======================================================================
# name - set_inputparams
# purpose - place input values needed by subroutines asens_script(),
#           fsens_script(), and anasa_script() in the %inputparam hash.
#=======================================================================
sub set_inputparams {
    %inputparams = ("acftbias"       => $acftbias,
                    "asynbkg_min"    => $asynbkg_min, 
                    "berror_env"     => $berror_env, 
                    "convsfc"        => $convsfc,
                    "convupa"        => $convupa, 
                    "do4dvar"        => $do4dvar, 
                    "do4diau"        => $do4diau, 
                    "doRcorr"        => $doRcorr, 
                    "expid"          => $expid, 
                    "fcswallclk"     => $fcswallclk, 
                    "fvbcs"          => $fvbcs,
                    "fvhome"         => $fvhome, 
                    "fvroot"         => $fvroot, 
                    "g5gcm"          => $g5gcm, 
                    "gid"            => $gid, 
                    "group_list"     => $group_list, 
                    "export_none"    => $export_none, 
                    "hyb_ens"        => $hyb_ens, 
                    "joba"           => $joba, 
                    "jobfs"          => $jobfs, 
                    "jobqueue1"      => $jobqueue1,
                    "jobsa"          => $jobsa, 
                    "mem"            => $mem, 
                    "mywork"         => $mywork, 
                    "nametag"        => $nametag, 
                    "ncpus"          => $ncpus, 
                    "ncpus_gsi"      => $ncpus_gsi,
                    "nodeflg"        => $nodeflg, 
                    "ncsuffix"       => $ncsuffix,
		    "newradbc"       => $newradbc,
                    "nvarouter"      => $nvarouter, 
                    "obClass"        => $obClass,
                    "oiqc"           => $oiqc, 
                    "osfmodule"      => $osfmodule, 
                    "prepqc"         => $prepqc,
                    "qsub"           => $qsub,
                    "specres"        => $specres,
                    "varoffset"      => $varoffset,
                    "varwindow"      => $varwindow, 
                    "wcnstrt"        => $wcnstrt );

    if ($ncpus_per_node) {
        $nodes_gsi = $ncpus_gsi / $ncpus_per_node;
        $inputparams{"ncpus_per_node"} = $ncpus_per_node;
        $inputparams{"nodes_gsi"}      = $nodes_gsi;
    }
}

#=======================================================================
# purpose - allow user to set some options with runtime flags
#
# options
# => agcm:      include agcm_import_rst when copying restart files
# => sensdeg=s: =1 for first-deg sensitivity test (default)
#               =3 for third-deg sensitivity test
# => check:     use when calling fvsetup from the checkinput script
# => header=s:  header for input file
# => setupfile: file to copy to expid directory (set note below)
# => runjob:    use when calling fvsetup from the runjob script
# => save:      default value for $saveFLG used in write_saved_inputs()
#                =1 to write blanks for default responses
#                =2 to write full responses for all prompts
# => stop:      stop fvsetup after $FVHOME is printed to STDIN
#
# Notes:
# 1. If $checkFLG is true, fvsetup writes to a dummy expid directory
#    so that an existing expid directory will not get overwritten.
# 2. When $runjobFLG is true, the pause routine is disabled and user
#    responses are printed to standard output.
# 3. $runjobFLG is set to true if $checkFLG is true.
# 4. Format for the -setupfile option: -setupfile fname=dir
#    tells the script to copy fname from $drstloc to $FVHOME/dir
#=======================================================================
sub get_runtime_values {
    $fvsetupflags = "";

    # list of flags to write to expid.input file as fvsetupflags;
    # (exclude "-check", "-runjob", "-stop", and "-header str" flags)
    #----------------------------------------------------------------
    foreach (@ARGV) {
        if (/-header/) { $skip2 = 1; next }
        if ($skip2)    { $skip2 = 0; next }
        next if /-check/ or /-runjob/ or /-stop/;
        $fvsetupflags .= " $_";
    }

    GetOptions( "agcm"        => \$agcm_rst_flg,
                "sensdeg=i"   => \$sensdeg,
                "check"       => \$checkFLG,
                "dbqueue|dbq" => \$dbqueue,
                "header=s"    => \@otherheaders,
                "setupfile=s" => \%setupfile,
                "runjob"      => \$runjobFLG,
                "save=i"      => \$saveFLG,
                "stop"        => \$stopFLG);
    $sensdeg = 1 unless ($sensdeg and $sensdeg eq "3");
    $runjobFLG = 1 if $checkFLG;
    $saveFLG = 1 unless $saveFLG == 2;
}

#=======================================================================
sub defaults {

  # get these files from AGCMrc package
  #------------------------------------
  @rs5_core     = AGCM_rsts("rs5_core");
  @rs5_boot     = AGCM_rsts("rs5_boot");
  @rs5_others   = AGCM_rsts("rs5_others");
  @rs5_files    = (@rs5_core, @rs5_boot, @rs5_others);

  @ap_files = qw ( errtable
                   fvpsas.rc
                   noreplay.acq
                   obs.rc
                   prepobs_errtable.global
                   prepobs_oiqc.oberrs
                   prepobs_prep.bufrtable
                   psas.rc
                   redsondes.rc
                   sqc.rc
                   tovs.rc );

  @as_files = qw ( errtable
                   fvpsas.rc
                   noreplay.acq
                   prepobs_errtable.global
                   prepobs_oiqc.oberrs
                   prepobs_prep.bufrtable
                   sac.nl.tmpl
                   ssi.rc );

  @lcv2prsrcs = qw ( inst2d_met_x.rc
                     inst3d_met_p.rc
                     tavg2d_met_x.rc
                     tavg3d_cld_p.rc
                     tavg3d_cld_v.rc
                     tavg3d_dyn_p.rc
                     tavg3d_dyn_v.rc
                     tavg3d_met_e.rc
                     tavg3d_mst_p.rc
                     tavg3d_mst_v.rc
                     tavg3d_prs_v.rc
                     tavg3d_tmp_p.rc
                     tavg3d_tmp_v.rc
                     tavg3d_wnd_p.rc
                     tavg3d_wnd_v.rc );

  @cubedas_files = qw (mkiau.rc.tmpl
                       fvcore_layout.rc );

  @ag_files = qw ( berror_stats.nml.tmpl
                   Chem_Registry_apert.rc
                   fv4dvar.ccmrun.namelist.tmpl
                   fvgcm.ccmflags.namelist
                   fvpsas.rc
                   gsi_atms_beamwidth.rc
                   gmao_acft_bias.parm
                   gmao_airs_bufr.tbl
                   gmao_global_aeroinfo.rc
                   gmao_global_anavinfo.rc
                   gmao_global_anavinfo_l91.rc
                   gmao_global_anavinfo_l132.rc
                   gmao_global_anavinfo_l181.rc
                   gmao_global_anavinfo_rcov.rc
                   gmao_global_blacklist.rc
                   gmao_global_cloudy_radiance_info.rc
                   gmao_global_tgasinfo.rc
                   gmao_global_convinfo.rc
                   gmao_global_hybens_info.x288y181l72.rc
                   gmao_global_hybens_info.x576y361l72.rc
                   gmao_global_hybens_info.x288y181l91.rc
                   gmao_global_hybens_info.x576y361l91.rc
                   gmao_global_hybens_info.x288y181l132.rc
                   gmao_global_hybens_info.x576y361l132.rc
                   gmao_global_hybens_info.x288y181l181.rc
                   gmao_global_hybens_info.x576y361l181.rc
                   gmao_global_insituinfo.rc
                   gmao_global_ozinfo.rc
                   gmao_global_pcpinfo.rc
                   gmao_global_satinfo.rc
                   gmao_global_scaninfo.rc
                   gmao_global_tlapmean.rc
                   gsi_sens.rc.tmpl
                   noreplay.acq
                   odsmatch.rc
                   prepobs_cqc_statbge
                   prepobs_cqcbufr.merra.parm
                   prepobs_errtable.global
                   prepobs_oiqc.oberrs
                   prepobs_prep.bufrtable
                   prepobs_prepacqc.merra.parm
                   prepobs_prevents.merra.parm
                   prepobs_profcqc.merra.parm
                   sac.nl.tmpl
                   vtrack.ctl.tmpl
                   vtrack.rc
                   vtx.ctl.tmpl );

  @a3dvr_files = qw ( Chem_Registry_apert.rc
                      GSI_GridComp.rc.tmpl
                      gsi.rc.tmpl );

  @afgat_files = qw ( Chem_Registry_apert.rc
                      GSI_GridComp_1.rc.tmpl
                      GSI_GridComp_2.rc.tmpl
                      gsi_fgat_1.rc.tmpl
                      gsi_fgat_2.rc.tmpl
                      HISTFDDA.rc.tmpl
                      HISTFDDAL.rc.tmpl
                      obs.rc.tmpl );

  @a4dvr_files = qw ( CAP_apert.rc.tmpl
                      AGCM_apert.rc.tmpl
                      Chem_Registry_apert.rc
                      fvcoretraj_layout.rc
                      fvcorepert_layout_4dvar.rc
                      GSI_GridComp_1.rc.tmpl
                      GSI_GridComp_2.rc.tmpl
                      gsi_fdda_1.rc.tmpl
                      gsi_fdda_2.rc.tmpl
                      HISTFDDA.rc.tmpl
                      HISTFDDAL.rc.tmpl
                      obs.rc.tmpl );

  @adrc_files = qw ( CAP_apert.rc.tmpl
                     AGCM_apert.rc.tmpl
                     BACKWARD_HISTORY.rc.tmpl
                     FORWARD_HISTORY.rc.tmpl
                     fvcoretraj_layout.rc
                     fvcorepert_layout_fsoi.rc
                     fvgcm.ccmflags.namelist
                     fvsens.ccmrun.namelist.tmpl
                     initadj.rc
                     postStats.rc
                     dyn2dyn.rc
                     simsv.rc );

  @svrc_files = qw ( CAP_apert.rc.tmpl
                     AGCM_apert.rc.tmpl
                     BACKWARD_HISTORY.rc.tmpl
                     FORWARD_HISTORY.rc.tmpl
                     fvcoretraj_layout.rc
                     fvcorepert_layout_fsoi.rc
                     fvsvec.ccmrun.namelist.tmpl
                     svec.rc );

  @gaas_files = qw ( GAAS_AerRegistry.rc
                     GAAS_AodRegistry.rc
                     GAAS_GridComp.rc
                     GAAS_History___.rc
                     GAAS_Mie.rc
                     GAAS_Registry.rc
                     ana.rc.tmpl
                     avhrr_l2a.pcf
                     modis_l2a.pcf
                     obs.rc
                     psas.rc
                     sqc.rc );

  @g5rc_files = qw ( AGCM.rc.tmpl
                     GEOS_ChemGridComp.rc
                     GCMPROG.rc.tmpl
                     HISTORY.rc.tmpl
                     OBS_GridComp.rc.tmpl
                     saverst.rc 
                     GEOS_SurfaceGridComp.rc );

  @coupled_files = qw( data_table
                       g5aodas_diag_table
                       MOM_input
                       MOM_override );
# @coupled_files = qw( BC_GridComp_ExtData-clim.rc
#                      CO_GridComp_ExtData-clim.rc
#                      NI_GridComp_ExtData-clim.rc
#                      OC_GridComp_ExtData-clim.rc
#                      SU_GridComp_ExtData-clim.rc );

  @chem_files = qw ( Aod-550nm_Registry.rc
                     Aod3d_1064nm.rc      
                     Aod3d_355nm.rc
                     Aod3d_532nm.rc
                     AodBands_Registry.rc
                     Aod_CALIPSO.rc
                     Aod_EOS.rc
                     Aod_MODIS.rc
                     Aod_Registry.rc
                     BC_GridComp---full.rc
                     BC_GridComp.rc
                     BC_GridComp_ExtData.rc
                     BC_History___.rc
                     BC_Registry.rc
                     BRC_GridComp---full.rc
                     BRC_GridComp.rc
                     BRC_GridComp_ExtData.rc
                     BRC_Registry.rc
                     CARMA_History___.rc
                     CARMAchem_GridComp_ExtData.rc
                     CARMAchem_MieRegistry.rc
                     CARMAchem_Registry.rc
                     CFC_GridComp.rc
                     CFC_GridComp_ExtData.rc
                     CFC_History___.rc
                     CFC_Registry.rc
                     CH4_GridComp---animls.rc
                     CH4_GridComp.rc
                     CH4_GridComp_ExtData.rc
                     CH4_History___.rc
                     CH4_Registry.rc
                     CO2_GridComp.rc
                     CO2_GridComp_ExtData.rc
                     CO2_History___.rc
                     CO2_Registry.rc 
                     CO_GridComp---bbae.rc
                     CO_GridComp---bbaf.rc
                     CO_GridComp---bbbo.rc
                     CO_GridComp---bbgl.rc
                     CO_GridComp---bbla.rc
                     CO_GridComp---bbna.rc
                     CO_GridComp---bbnb.rc
                     CO_GridComp---ffas.rc
                     CO_GridComp---ffeu.rc
                     CO_GridComp---ffna.rc
                     CO_GridComp---ffru.rc
                     CO_GridComp---full.rc
                     CO_GridComp---nbas.rc
                     CO_GridComp---nbeu.rc
                     CO_GridComp---nbgl.rc
                     CO_GridComp---nbna.rc
                     CO_GridComp.rc
                     CO_GridComp_ExtData.rc
                     CO_History___.rc
                     CO_Registry.rc
                     Chem_AerRegistry.rc
                     Chem_ExtRegistry.rc
                     Chem_Init.rc
                     Chem_Mie-550nm.rc
                     Chem_Mie.rc
                     Chem_MieRegistry.rc
                     Chem_Registry.rc
                     DNA_ExtData.rc
                     DNA_GridComp.rc
                     DNA_Registry.rc
                     DU_GridComp.rc
                     DU_GridComp---full.rc
                     DU_GridComp_ExtData.rc
                     DU_History___.rc
                     DU_Registry.rc
                     Deposition_Registry___.rc 
                     GEOSCHEMchem_ExtData.rc
                     GEOSCHEMchem_GridComp.rc
                     GEOSCHEMchem_Registry.rc
                     GEOSachem_ExtData.rc
                     GEOSachem_Registry.rc
                     GMICHEM_History___.rc
                     GMI_ExtData.rc
                     GMI_GridComp.rc
                     GMI_Registry.rc
                     GOCARTdata_AerRegistry.rc 
                     GOCARTdata_ExtData.rc
                     HEMCO_Config.rc
                     HEMCO_DiagnFile.rc
                     HEMCO_GridComp.rc
                     HEMCO_Registry.rc
                     HEMCOgocart_Config.rc
                     HEMCOgocart_Diagn.rc
                     HEMCOgocart_ExtData.rc
                     HEMCOgocart_Spec.rc
                     MAM7_ExtData.rc
                     MAMchem_GridComp.rc
                     MAMchem_History___.rc
                     MAMchem_Registry.rc
                     NI_GridComp---full.rc
                     NI_GridComp.rc
                     NI_GridComp_ExtData.rc
                     NI_History___.rc
                     NI_Registry.rc
                     O3_GridComp.rc
                     O3_GridComp_ExtData.rc
                     O3_History___.rc
                     O3_Registry.rc
                     OC_GridComp---bbbo.rc
                     OC_GridComp---bbnb.rc
                     OC_GridComp---full.rc
                     OC_GridComp.rc
                     OC_GridComp_ExtData.rc
                     OC_History___.rc
                     OC_Registry.rc
                     Reactions_Registry___.rc 
                     Rn_GridComp---Afri.rc
                     Rn_GridComp---Asia.rc
                     Rn_GridComp---Aust.rc
                     Rn_GridComp---Euro.rc
                     Rn_GridComp---NoAm.rc
                     Rn_GridComp---SoAm.rc
                     Rn_GridComp---full.rc
                     Rn_GridComp.rc
                     Rn_GridComp_ExtData.rc
                     Rn_History___.rc
                     Rn_Registry.rc
                     SC_GridComp.rc
                     SC_Registry.rc
                     SS_GridComp.rc
                     SS_GridComp---full.rc
                     SS_History___.rc
                     SS_Registry.rc
                     StratChem_ExtData.rc
                     StratChem_History___.rc
                     SU_GridComp---full.rc
                     SU_GridComp---volc.rc
                     SU_GridComp.rc
                     SU_GridComp_ExtData.rc
                     SU_History___.rc
                     SU_Registry.rc 
                     TR_ExtData.rc
                     TR_ExtData.rc
                     TR_GridComp---Be10.rc
                     TR_GridComp---Be10s.rc
                     TR_GridComp---Be7.rc
                     TR_GridComp---Be7s.rc
                     TR_GridComp---CH3I.rc
                     TR_GridComp---CO_25.rc
                     TR_GridComp---CO_50.rc
                     TR_GridComp---CO_50_ea.rc
                     TR_GridComp---CO_50_eu.rc
                     TR_GridComp---CO_50_na.rc
                     TR_GridComp---CO_50_sa.rc
                     TR_GridComp---CO_ANZ.rc
                     TR_GridComp---CO_ARC.rc
                     TR_GridComp---CO_CAM.rc
                     TR_GridComp---CO_CAS.rc
                     TR_GridComp---CO_EAS.rc
                     TR_GridComp---CO_EUR.rc
                     TR_GridComp---CO_GLB.rc
                     TR_GridComp---CO_MDE.rc
                     TR_GridComp---CO_NAF.rc
                     TR_GridComp---CO_NAM.rc
                     TR_GridComp---CO_RAF.rc
                     TR_GridComp---CO_RBU.rc
                     TR_GridComp---CO_SAM.rc
                     TR_GridComp---CO_SAS.rc
                     TR_GridComp---CO_SEA.rc
                     TR_GridComp---CO_from_CH4.rc
                     TR_GridComp---Pb210.rc
                     TR_GridComp---Pb210s.rc
                     TR_GridComp---Rn222.rc
                     TR_GridComp---SF6.rc
                     TR_GridComp---aoa.rc
                     TR_GridComp---e90.rc
                     TR_GridComp---st80_25.rc
                     WSUB_ExtData.rc ); 

#  -e ( $lats4d = "/ford1/local/bin/lats4d" )
#       || die ">>> ERROR <<< missing $lats4d: $!";

  chomp($version = `cat $fvetc/VERSION`);
  chomp($cvstag  = `cat $fvetc/CVSTAG`);
  chomp($today = `date`);
  $nametag = "fvDAS v$version setup on $today by $user.";

  $g5gcm   = 1  if ( -e "$fvbin/GEOSgcm.x" );
  $admodel = 1  if ( -e "$fvbin/fvsvec.x" | -e "$fvbin/GEOSgcm_Pert.x" );
  $anapsas = 1  if ( -e "$fvbin/ana.x" );
  $anassi  = 1  if ( -e "$fvbin/ssi.x" );
  $anagsi  = 1  if ( -e "$fvbin/GSIsa.x" );
  $fulldas = 1  if ( $anapsas || $anassi || $anagsi );
  $fvchem  = 1  if ( -e "$fvetc/DU_GridComp.rc" );
  $doiau   = 0;

  if ( $g5gcm ) { 
       $modelexec = "GEOSgcm.x";
  } else {
       print "\n\n*** WARNING ***  Cannot find $fvbin/GEOSgcm.x\n\n";
       $ans = query("Continue with setup (y/n)?", "n");
       exit unless yes($ans);
       $modelexec = "fvgcm.x";
  }

  if ( -e "$fvroot/lib/libGMAO_mfhdf3.a" ) {
     $ncsuffix = "hdf";
  } else {
     $ncsuffix = "nc4";
  }

  $varwindow = 0;
  $dasdriver = "fvpsas";
  $blendg5   = "-ifcst";  # this really means initialized forecasts

  if ( $g5gcm   ) { @gcm_files = @g5rc_files; @rs_files = @rs5_files };
  if ( $anapsas ) { @arc_files = @ap_files };
  if ( $anassi  ) { @arc_files = @as_files };
  if ( $anagsi  ) { @arc_files = ( @ag_files, @lcv2prsrcs )};
  if ( $fvchem  ) { @crc_files = @chem_files };
# if ( $coupled ) { @crc_files = ( @chem_files, @coupled_files ) };

  $monthly_plots = 0;
  if ( $siteID eq "nccs" ) { $monthly_means = 1; $monthly_tar = 1 }
  else                     { $monthly_means = 0; $monthly_tar = 0 }

# Batch wall-clock time setting
# -----------------------------
  $arcwallclk = "3:00";
  $daswallclk = "2:00";
  $fcswallclk = "5:00";
  $pbs_arcncpu    = 1;

  if ($siteName eq "pfe") {
      $pbs_arcncpu = 8;
  }
  if ($siteID eq "nccs") {
      $arcwallclk = "2:00";
  }

# Determine where running at DAO computer centers
# -----------------------------------------------
  @ComputingCenters = ("nas.nasa","gsfc.nasa","ncep.noaa",
                       "nccs.nasa","discover", "dali");
  my $hname = hostname();
  ($name, $alias, $addrtype, $length, @addrs) =
      gethostbyname($hname || "localhost");

  $DAO = 0;
  foreach (@ComputingCenters) {
      if ( $name =~ m/$_/i or $alias =~ m/$_/i ) {
          $DAO = 1;
          last;
      }
  }
  $gsfc  = ".gsfc.";
  $gsfc2 = ".nccs.";
  $gsfc3 = "prv.cube";
  $ncep  = ".ncep.";
  if ( $name =~ m/$gsfc/  || $alias =~ m/$gsfc/  ||
       $name =~ m/$gsfc2/ || $alias =~ m/$gsfc2/ || $name =~ m/$gsfc3/) {
    unless ($NOBACKUP) {
        die ">>> ERROR <<< NOBACKUP environment variable not defined."; }
    unless ($ARCHIVE) {
        die ">>> ERROR <<< ARCHIVE environment variable not defined."; }
    $GFLAG = 1;       #NCCS account (mintz, daley,...)
  } elsif ( $name =~ m/$ncep/ ) {
    $GFLAG = 2;
  } else {
    $GFLAG = 0;
  }

# Mass storage
# ------------
  if( $DAO == 1 ) {        #nas or gsfc accounts
    if( $GFLAG == 1 ) {    #NCCS account (mintz, daley)
      $mhost = $MHOST or $mhost = $ENV{HOST};
      if ( $mhost =~ "halem" ) { $mhost = "halem" };
      if ( $mhost =~ "discover" ) {
          $mhost = "$mhost.nccs.nasa.gov";
      } else {
          $mhost = "$mhost.gsfc.nasa.gov";
      }
    } else { $mhost = $MHOST or $mhost = "lou.nas.nasa.gov";}
  }

# Set cqc/sbc/daotovs and others depending on analyzer
# ----------------------------------------------------
  $fvsbc   = 0;
  $fvcqc   = 0;
  $prepqc  = 0;
  $oiqc    = 0;
  $daotovs = 0;
  $berror_env  = "";
  $berror_file = "";
  if ( $anapsas ) {
       $anaexec = "solve.x";
       $fvsbc   = 0;
       $fvcqc   = 1;
       $oiqc    = 0;  # RT: eventually, once fully test, this should default to 1
       $daotovs = 1;
  }

# Vortex-relocator defaults
# -------------------------
  $vtrack   = 1;
  $vtxreloc = 1;
  $vtxlevs  = "1000 925 850 700 600 500 400 300 250 200 150 100 70 50 30 20 10";

# Define run-time options (compiler related)
# ------------------------------------------
  if (`uname -s` =~ "Linux" && `uname -m` != "ia64") { $RTOPT = "-Wl,-T" }
  else                                               { $RTOPT = "" };

# For now, just to fill in this variable for silo.arc let me define it here
# -------------------------------------------------------------------------
  $fdiageta = "%s.diag.eta.%y4%m2%d2_%h2z.$ncsuffix";
}

#=======================================================================
sub get_specific_info {

    $geosit = 0;
    $merra2 = 0;
    $r21c   = 0;

    $ans = query(" Is this a MERRA2 (1), GEOSIT (2), R21C (3) experiment?", "0");
    return 0 unless ( $ans );

    if ($ans == 1) {$merra2 = 1};
    if ($ans == 2) {$geosit = 1};
    if ($ans == 3) {$r21c   = 1};

}

#=======================================================================
sub ed_g5hist_rc {

  return 0 unless ( $g5gcm );

  my($mydir,$which) = @_;

  my($ft, $fhis, $fdfn, $rcd, $fdiagsfc, $fidiagsfc, $klevel);

  $ft   = "$fvhome/$mydir/tmp.rc";
  $fhis = "$fvhome/$mydir/$which";

  open(LUN,"$fhis") || die "Fail to open $which: $!\n";
  open(LUN2,">$ft") || die "Fail to open tmp.rc: $!\n";

# Change variables to the correct inputs
# --------------------------------------
  while( defined($rcd = <LUN>) ) {
    chomp($rcd);
    if($rcd =~ /\@EXPID/)    {$rcd=~ s/\@EXPID/$expid/g; }
    if($rcd =~ /\@EXPDSC/)   {$rcd=~ s/\@EXPDSC/$expdsc/g; }
    if($rcd =~ /\@EXPSRC/)   {$rcd=~ s/\@EXPSRC/$cvstag/g; }
    if($rcd =~ /\@FREQ2D/)   {$rcd=~ s/\@FREQ2D/$ngout2d/; }
    if($rcd =~ /\@FREQ3D/)   {$rcd=~ s/\@FREQ3D/$ngout/; }
    if($rcd =~ /\@ASYNFRQ/)  {$rcd=~ s/\@ASYNFRQ/$asynbkg_hms/; }
    if($rcd =~ /\@TRILNLON/) {$rcd=~ s/\@TRILNLON/$iladmlon/; }
    if($rcd =~ /\@TRILNLAT/) {$rcd=~ s/\@TRILNLAT/$iladmlat/; }
    if($rcd =~ /\@TRAJNLON/) {$rcd=~ s/\@TRAJNLON/$gsadmlon/; }
    if($rcd =~ /\@TRAJNLAT/) {$rcd=~ s/\@TRAJNLAT/$gsadmlat/; }
    if($rcd =~ /\@HIST_IM/)  {$rcd=~ s/\@HIST_IM/$hist_im/; }
    if($rcd =~ /\@HIST_JM/)  {$rcd=~ s/\@HIST_JM/$hist_jm/; }
    if($rcd =~ /\@HISTC_IM/) {$rcd=~ s/\@HISTC_IM/$histc_im/; }
    if($rcd =~ /\@HISTC_JM/) {$rcd=~ s/\@HISTC_JM/$histc_jm/; }
    if($rcd =~ /\@HIST_BKG_IM/)  {$rcd=~ s/\@HIST_BKG_IM/$ana_im/; }
    if($rcd =~ /\@HIST_BKG_JM/)  {$rcd=~ s/\@HIST_BKG_JM/$ana_jm/; }
    if($rcd =~ /\@HIST_PERT_IM/)  {$rcd=~ s/\@HIST_PERT_IM/$hist_pert_im/; }
    if($rcd =~ /\@HIST_PERT_JM/)  {$rcd=~ s/\@HIST_PERT_JM/$hist_pert_jm/; }
    if($rcd =~ /\@AGCM_GRIDNAME/) {$rcd=~ s/\@AGCM_GRIDNAME/$AGCM_GRIDNAME/; }
    if ( $agcm_im != $analon || $agcm_jm != $analat ) {
        if($rcd =~ /\@BKGRES/)  {$rcd=~ s/\@BKGRES/ /; }
    } else {
        if($rcd =~ /\@BKGRES/)   {$rcd=~ s/\@BKGRES/\#/; }
    }
    if ( $varcase == 4 ) {
        if($rcd =~ /\@4DVAR/)   {$rcd=~ s/\@4DVAR/ /; }
        if($rcd =~ /\@4ASEN/)   {$rcd=~ s/\@4ASEN/\#/; }
        if ($cubed) {
            if($rcd =~ /\@FV3TRAJ/)  {$rcd=~ s/\@FV3TRAJ/ /; }
            if($rcd =~ /\@FVTRAJ/)   {$rcd=~ s/\@FVTRAJ/#/;  }
        } else {
            if($rcd =~ /\@FV3TRAJ/)  {$rcd=~ s/\@FV3TRAJ/#/; }
            if($rcd =~ /\@FVTRAJ/)   {$rcd=~ s/\@FVTRAJ/ /;  }
        }
    } else {
        if($rcd =~ /\@4DVAR/)   {$rcd=~ s/\@4DVAR/\#/; }
        if ( $doasens ) {
            if($rcd =~ /\@4ASEN/)   {$rcd=~ s/\@4ASEN/ /; }
        } else {
            if($rcd =~ /\@4ASEN/)   {$rcd=~ s/\@4ASEN/\#/; }
        }
        if ($cubed) {
            if($rcd =~ /\@FV3TRAJ/)  {$rcd=~ s/\@FV3TRAJ/ /; }
            if($rcd =~ /\@FVTRAJ/)   {$rcd=~ s/\@FVTRAJ/#/;  }
        } else {
            if($rcd =~ /\@FV3TRAJ/)  {$rcd=~ s/\@FV3TRAJ/#/; }
            if($rcd =~ /\@FVTRAJ/)   {$rcd=~ s/\@FVTRAJ/ /;  }
        }
    }
    if ( $compress == 1 ) {
        if($rcd =~ /\@COMPRESS/)   {$rcd=~ s/\@COMPRESS/ /; }
    } else {
        if($rcd =~ /\@COMPRESS/)   {$rcd=~ s/\@COMPRESS/\#/; }
    }
    print(LUN2 "$rcd\n");
  }
  close(LUN);
  close(LUN2);

  cp($ft,$fhis);
  unlink $ft;
}

#=======================================================================
sub ed_g5hist_rc_new {
    return 0 unless $g5gcm;
    my($mydir, $which, $sedflags, $flags, $cmd);

    ($mydir, $which) = @_;

    $HIST = "$fvhome/$mydir/$which";

    # variable substitutions
    #-----------------------
    if ( $agcm_im != $analon || $agcm_jm != $analat ) { $bkgres = " " }
    else                                              { $bkgres = "#" }

    if ( $compress == 1 )  { $cmprss = " " }
    else                   { $cmprss = "#" }

    if ( $varcase == 4 ) { $f4dvar = " ";  $f4asen = "#" }
    else {                 $f4dvar = "#";
                           if ($doasens) { $f4asen = " " }
                           else          { $f4asen = "#" }
    }
    if($cubed) { $fvtraj = "#"; $fv3traj = " " }
    else       { $fvtraj = " "; $fv3traj = "#" }

    $cmd = "$fvbin/edhist.pl $HIST -i"
        .       " -s \@EXPID=$expid"
        .       " -s \@EXPDSC=$expdsc"
        .       " -s \@EXPSRC=$cvstag"
        .       " -s \@FREQ2D=$ngout2d"
        .       " -s \@FREQ3D=$ngout"
        .       " -s \@4DVAR=$f4dvar"
        .       " -s \@4ASEN=$f4asen"
        .       " -s \@ASYNFRQ=$asynbkg_hms"
        .       " -s \@TRILNLON=$iladmlon"
        .       " -s \@TRILNLAT=$iladmlat"
        .       " -s \@TRAJNLON=$gsadmlon"
        .       " -s \@TRAJNLAT=$gsadmlat"
        .       " -s \@FVTRAJ=$fvtraj"
        .       " -s \@FV3TRAJ=$fv3traj"
        .       " -s \@HIST_IM=$hist_im"
        .       " -s \@HIST_JM=$hist_jm"
        .       " -s \@HISTC_IM=$histc_im"
        .       " -s \@HISTC_JM=$histc_jm"
        .       " -s \@HIST_BKG_IM=$ana_im"
        .       " -s \@HIST_BKG_JM=$ana_jm"
        .       " -s \@HIST_PERT_IM=$hist_pert_im"
        .       " -s \@HIST_PERT_JM=$hist_pert_jm"
        .       " -s \@BKGRES=$bkgres"
        .       " -s \@COMPRESS=$cmprss"
        .       " -s \@APERT_IM=$apert_im"
        .       " -s \@APERT_JM=$apert_jm"
        .       " -s \@PERT_FREQ=$pert_freq"
        .       " -s \@AGCM_GRIDNAME=$AGCM_GRIDNAME";
    print "$cmd\n";
    system $cmd;

    # turn collections on or off
    #---------------------------
    $flags = "";
    $flags .= " -Xdep GOCART,GAAS" unless $gocart_tracers;
    if ($gaas_ana) { $flags .= " -Ipm gaas" }
    else           { $flags .= " -Xpm gaas" }
    if ($gaasfdbk) { $flags .= " -Ipm _gas_N" }
    else           { $flags .= " -Xpm _gas_N" }

    if ($cubed) { $flags .= " -X ptrj.prs" }
    else        { $flags .= " -X mtrj.lcv" }

    $cmd = "$fvbin/edhist.pl $HIST -i -rD -XP $flags";
    print "$cmd\n";
    system $cmd;
}

#=======================================================================
sub ed_g5surfGC_rc {

  return 0 unless ( $g5gcm );

  my($mydir,$which) = @_;
  my($ft, $fhis, $fdfn, $rcd);

  $ft   = "$fvhome/$mydir/tmp.rc";
  $fhis = "$fvhome/$mydir/$which";

  open(LUN,"$fhis") || die "Fail to open $which: $!\n";
  open(LUN2,">$ft") || die "Fail to open tmp.rc: $!\n";

# Change variables to the correct inputs
# --------------------------------------
  while( defined($rcd = <LUN>) ) {
    chomp($rcd);
    if($rcd =~ /\# GEOSagcm=>/)    {$rcd=~ s/\# GEOSagcm=>/      /g; }
    if ( "$landbcs" ne "Icarus-NLv3" ) {
      if($rcd =~ /\  LAND_PARAMS:/)    {$rcd=~ s/NRv7.2/Icarus/g; }
      if($rcd =~ /\  Z0_FORMULATION:/) {$rcd=~ s/4/2/g; }
    }
    print(LUN2 "$rcd\n");
  }
  close(LUN);
  close(LUN2);

  cp($ft,$fhis);
  unlink $ft;

}
#=======================================================================
sub ed_g5prog_rc {

  return 0 unless ( $g5gcm );

  my($mydir,$fhisname) = @_;

  my($ft, $fhis, $fdfn, $rcd, $fdiagsfc, $fidiagsfc, $klevel);

  $ft   = "$fvhome/$mydir/tmp.rc";
  $fdfn = "$fvhome/$mydir/$fhisname";
  $fhis = "$fvhome/$mydir/HISTORY.rc.tmpl";

  $prog3dnm = "%s.prog.eta.%y4%m2%d2_%h2%n2z.$ncsuffix"; # prog filename template
  $prog2dnm = "%s.prog.sfc.%y4%m2%d2_%h2%n2z.$ncsuffix"; # prog filename template
  $vtxmix   = "%s.vtx.prs.%y4%m2%d2_%h2z.$ncsuffix";  # prog filename template

  open(LUN,"$fdfn") || die "Fail to open GCMPROG.rc.tmpl: $!\n";
  open(LUN2,">$ft") || die "Fail to open tmp.rc: $!\n";

# Change variables to the correct inputs
# --------------------------------------
  while( defined($rcd = <LUN>) ) {
    chomp($rcd);
    if($rcd =~ /\@EXPID/)          { $rcd=~ s/\@EXPID/$expid/g }
    if($rcd =~ /\@EXPDSC/)         { $rcd=~ s/\@EXPDSC/$expdsc/g }
    if($rcd =~ /\@EXPSRC/)         { $rcd=~ s/\@EXPSRC/$cvstag/g }
    if($rcd =~ /\@PROG3DNM/)       { $rcd=~ s/\@PROG3DNM/$prog3dnm/g }
    if($rcd =~ /\@PROG2DNM/)       { $rcd=~ s/\@PROG2DNM/$prog2dnm/g }
    if($rcd =~ /\@VTXMIX/)         { $rcd=~ s/\@VTXMIX/$vtxmix/g }
    if($rcd =~ /\@TRAJNLAT/)       { $rcd=~ s/\@TRAJNLAT/$gsadmlat/ }
    if($rcd =~ /\@TRAJNLON/)       { $rcd=~ s/\@TRAJNLON/$gsadmlon/ }
    if($rcd =~ /\@HIST_IM/)        { $rcd=~ s/\@HIST_IM/$hist_im/ }
    if($rcd =~ /\@HIST_JM/)        { $rcd=~ s/\@HIST_JM/$hist_jm/ }
    if($rcd =~ /\@HISTC_IM/)       { $rcd=~ s/\@HISTC_IM/$histc_im/ }
    if($rcd =~ /\@HISTC_JM/)       { $rcd=~ s/\@HISTC_JM/$histc_jm/ }
    if($rcd =~ /\@HIST_PERT_IM/)   { $rcd=~ s/\@HIST_PERT_IM/$hist_pert_im/ }
    if($rcd =~ /\@HIST_PERT_JM/)   { $rcd=~ s/\@HIST_PERT_JM/$hist_pert_jm/ }
    if($rcd =~ /\@APERT_IM/)       { $rcd=~ s/\@APERT_IM/$apert_im/ }
    if($rcd =~ /\@APERT_JM/)       { $rcd=~ s/\@APERT_JM/$apert_jm/ }
    if($rcd =~ /\@PERT_FREQ/)      { $rcd=~ s/\@PERT_FREQ/$pert_freq/ }
    if($rcd =~ /\@FCSENS/) {
        if ($admtlm) { $rcd =~ s/\@FCSENS/ /; }
        else         { $rcd =~ s/\@FCSENS/\#/; }
    }
    if($cubed) {
        if($rcd =~ /\@FV3TRAJ/) { $rcd =~ s/\@FV3TRAJ// }
        if($rcd =~ /\@FVTRAJ/)  { $rcd =~ s/\@FVTRAJ/#/ }
    }
    else {
        if($rcd =~ /\@FV3TRAJ/) { $rcd =~ s/\@FV3TRAJ/#/ }
        if($rcd =~ /\@FVTRAJ/)  { $rcd =~ s/\@FVTRAJ// }
    }                                 
    print(LUN2 "$rcd\n");
  }
  close(LUN);
  close(LUN2);

  cp($ft, $fhis);
  unlink($fdfn);
  unlink $ft;
}

#=======================================================================
sub ed_g5prog_rc_new {
    return 0 unless $g5gcm;
    my ($mydir, $fhisname);
    my ($fdfn, $fhis, $iflag);
    my ($prog3dnm, $prog2dnm, $vtxmix, $fcsens, $fvtraj, $fv3traj);

    return unless $g5gcm;
    ($mydir, $fhisname) = @_;

    $fdfn = "$fvhome/$mydir/$fhisname";
    $fhis = "$fvhome/$mydir/HISTORY.rc.tmpl";

    if ($fdfn eq $fhis) { $iflag = "-i"       }
    else                { $iflag = "-o $fhis" }

    # variable substitutions
    #-----------------------
    $prog3dnm = "%s.prog.eta.%y4%m2%d2_%h2%n2z.$ncsuffix";
    $prog2dnm = "%s.prog.sfc.%y4%m2%d2_%h2%n2z.$ncsuffix";
    $vtxmix   = "%s.vtx.prs.%y4%m2%d2_%h2z.$ncsuffix";

    if ($admtlm) { $fcsens = " " }
    else         { $fcsens = "#" }

    if($cubed) { $fvtraj = "#"; $fv3traj = " " }
    else       { $fvtraj = " "; $fv3traj = "#" }

    $cmd = "$fvbin/edhist.pl $fdfn -$iflag"
        .                 " -s \@EXPID=$expid"
        .                 " -s \@EXPDSC=$expdsc"
        .                 " -s \@EXPSRC=$cvstag"
        .                 " -s \@PROG3DNM=$prog3dnm"
        .                 " -s \@PROG2DNM=$prog2dnm"
        .                 " -s \@VTXMIX=$vtxmix"
        .                 " -s \@TRAJNLAT=$gsadmlat"
        .                 " -s \@TRAJNLON=$gsadmlon"
        .                 " -s \@FCSENS=$fcsens"
        .                 " -s \@FVTRAJ=$fvtraj"
        .                 " -s \@FV3TRAJ=$fv3traj"
        .                 " -s \@HIST_IM=$hist_im"
        .                 " -s \@HIST_JM=$hist_jm"
        .                 " -s \@HISTC_IM=$histc_im"
        .                 " -s \@HISTC_JM=$histc_jm"
        .                 " -s \@HIST_BKG_IM=$ana_im"
        .                 " -s \@HIST_BKG_JM=$ana_jm"
        .                 " -s \@HIST_PERT_IM=$hist_pert_im"
        .                 " -s \@HIST_PERT_JM=$hist_pert_jm"
        .                 " -s \@APERT_IM=$apert_im"
        .                 " -s \@APERT_JM=$apert_jm"
        .                 " -s \@PERT_FREQ=$pert_freq"
        .                 " -s \@AGCM_GRIDNAME=$AGCM_GRIDNAME";
    print "$cmd\n";
    system $cmd;

    # turn collections on or off
    #---------------------------
    $flags = "";
    $flags .= " -X ptrj.prs" if $cubed;
    $flags .= " -X mtrj.lcv" unless $cubed;
    $flags .= " -X traj.lcv" unless $admtlm;

    $cmd = "$fvbin/edhist.pl $fhis -i $flags";
    print "$cmd\n";
    system $cmd;
    unlink $fdfn unless $fdfn eq $fhis;
}

#=======================================================================
# Edit daotovs_fv.rc under run
#=======================================================================
sub ed_daotovs_fv {
  my($frun, $ft, $rcd, $dbkg);

    return 0 unless ( -e "$fvhome/run/daotovs_fv.rc" );

  $frun = "$fvhome/run/daotovs_fv.rc";
  $ft   = "$fvhome/run/tmp.rc";
  $dbkg = "%s.bkg.eta.%y4%m2%d2_%h2%n2z.$ncsuffix";

  open(LUN,"$frun") || die "Fail to open daotovs_fv.rc: $!\n";
  open(LUN2,">$ft") || die "Fail to open tmp.rc: $!\n";

# Change variables to the correct inputs
#---------------------------------------
  while( defined($rcd = <LUN>) ) {
    chomp($rcd);
    if($rcd =~ /\@BKGETA/) {$rcd=~ s/\@BKGETA/$dbkg/; }
    print(LUN2 "$rcd\n");
  }
  close(LUN);
  close(LUN2);
  cp($ft, $frun);
  unlink $ft;
}

#=======================================================================
# Create fvpsas.rc under run
#=======================================================================
sub create_fvpsasrc {

  my($tmpl, $tmpl2, $fhr, $bkgbits);
  my($id, @ordered_ids, %type, %bkg, %num, %num1);

# Define general time-template
# ----------------------------
  $tmpl  = "%y4%m2%d2_%h2z";
  $tmpl2 = "%y4%m2%d2_%h2%n2z";
  if ( (! $anagsi) && ($varwindow == 360) ) {
      $tmpl  = "%y4%m2%d2";
  }

# Open fvpsas.rc in run directory of experiment
# ---------------------------------------------
  open(MYRC,">$fvhome/run/fvpsas.rc")
   || die "Cannot create fvpsas.rc: $!";

# Write out header of fvpsas.rc
# -----------------------------
  print(MYRC "#\n");
  print(MYRC "# FVPSAS resource file.\n");
  print(MYRC "#\n");
  print(MYRC "# !REVISION HISTORY:\n");
  print(MYRC "#\n");
  print(MYRC "# 17Nov2003  Todling   Initial version.\n");
  print(MYRC "# 28Feb2007  Todling   Auto generation from within setup.\n");
  print(MYRC "# 09Nov2009  Todling   Add bkg03 to 4dvar case.          \n");
  print(MYRC "#\n");
  print(MYRC "#-------------------------------------------------------------\n");

# Create a list of variable template names
# ----------------------------------------
  %bkg= (); %type = (); %num = ();

  $id = "surface";   $bkg{$id} = "bkg";  $type{$id} = ".sfc";     $num{$id} = 1;
  $id = "upper-air"; $bkg{$id} = "bkg";  $type{$id} = ".eta";     $num{$id} = 2;
  $id = "sfcrst";    $bkg{$id} = "bkg";  $type{$id} = "_sfc_rst"; $num{$id} = 3;
  $id = "uparst";    $bkg{$id} = "bkg";  $type{$id} = "_eta_rst"; $num{$id} = 4;
  $id = "chemrst";   $bkg{$id} = "cbkg"; $type{$id} = "_eta_rst"; $num{$id} = 5;
  $id = "aerorst";   $bkg{$id} = "abkg"; $type{$id} = "_eta_rst"; $num{$id} = 6;
  $id = "chem";      $bkg{$id} = "cbkg"; $type{$id} = ".eta";     $num{$id} = 7;
  $id = "upper-air1";$bkg{$id} = "ana";  $type{$id} = ".eta";     $num{$id} = 8;
  $id = "upper-air2";$bkg{$id} = "xinc"; $type{$id} = ".eta";     $num{$id} = 9;

# use %num hash to specify the print order
# ----------------------------------------
  %num1 = reverse %num;
  foreach (sort keys %num1) { push @ordered_ids, $num1{$_} };

# Loop over list and write to fvpsas.rc
# -------------------------------------
  print(MYRC "\n");
  if ( $varcase == 4 || $varcase == 5 || ! $fulldas ) {
      foreach $id (@ordered_ids) {
          $bkgname = "%s.$bkg{$id}$type{$id}.$tmpl2.$ncsuffix";
          print(MYRC "${id}_bkg_filename: $bkgname\n");
      }

  } else {

      foreach $id (@ordered_ids) {
          $bkgbits = $bkgbits0;
          while ( $bkgbits <= $bkgbitsf ) {
              $fhr = sprintf "%02d", $bkgbits;
              $bkgname = "%s.$bkg{$id}${fhr}$type{$id}.$tmpl2.$ncsuffix";
              if ( "$id" eq "upper-air1" || "$id" eq "upper-air2" ) {
                 print(MYRC "upper-air_$bkg{$id}${fhr}_filename: $bkgname\n");
              } else {
                 if ( "$bkg{$id}" eq "abkg" || "$bkg{$id}" eq "cbkg" ) {
                    print(MYRC "${id}_bkg${fhr}_filename: $bkgname\n");
                 } else {
                    print(MYRC "${id}_$bkg{$id}${fhr}_filename: $bkgname\n");
                 }
              }
              $bkgbits += $dtasyn_hrs;
          }
      }
  }

# Write out time-invariant template names to fvpsas.rc
# ----------------------------------------------------
  print(MYRC "\n");
  print(MYRC "surface_bkg_filename: %s.bkg.sfc.$tmpl2.$ncsuffix\n");
  print(MYRC "upper-air_bkg_filename: %s.bkg.eta.$tmpl2.$ncsuffix\n");
  print(MYRC "upper-air_ana_filename: %s.ana.eta.$tmpl2.$ncsuffix\n");
  print(MYRC "upper-air_inc_filename: %s.inc.eta.$tmpl2.$ncsuffix\n");
  print(MYRC "upper-air_xana_filename: %s.xana.eta.$tmpl2.$ncsuffix\n");
  print(MYRC "upper-air_xinc_filename: %s.xinc.eta.$tmpl2.$ncsuffix\n");
  print(MYRC "upper-air_anasa_filename: %s.anasa.eta.$tmpl2.$ncsuffix\n");
  print(MYRC "noexp_iau_tendency_filename: agcm_import_rst.%y4%m2%d2_%h2%n2z.$ncsuffix\n");
  print(MYRC "iau_tendency_filename: %s.agcm_import_rst.%y4%m2%d2_%h2%n2z.$ncsuffix\n");
  print(MYRC "iau09_tendency_filename: %s.agcm09_import_rst.%y4%m2%d2_%h2%n2z.$ncsuffix\n");
  print(MYRC "surface_inc_filename: %s.inc.sfc.$tmpl2.$ncsuffix\n");
  print(MYRC "forecast-bias_filename: %s.bbias.eta.$tmpl2.$ncsuffix\n");
  print(MYRC "post-analysis_obs_filename: %s.ana.obs.$tmpl.ods\n");
  print(MYRC "sfcexp_filename: %s.sfc_export.$tmpl2\n");
  print(MYRC "upper-air_vtx_filename: %s.vtx.prs.$tmpl.$ncsuffix\n");
  print(MYRC "upper-air_vtx09_filename: %s.vtx09.prs.$tmpl.$ncsuffix\n"); # wired-in
  print(MYRC "upalcv_traj_filename: %s.traj.lcv.$tmpl2.$ncsuffix\n");
  print(MYRC "upalcv_mtrj_filename: %s.mtrj.lcv.$tmpl2.$ncsuffix\n");
  print(MYRC "upaprs_traj_filename: %s.ptrj.prs.$tmpl2.$ncsuffix\n");
  print(MYRC "uparst_traj_filename: %s.traj_lcv_rst.$tmpl2.$ncsuffix\n");
  print(MYRC "uparst_mtrj_filename: %s.mtrj_lcv_rst.$tmpl2.$ncsuffix\n");
  print(MYRC "uparst_ptrj_filename: %s.ptrj_prs_rst.$tmpl2.$ncsuffix\n");
  print(MYRC "upper-air_prog_filename: %s.prog.eta.$tmpl2.$ncsuffix\n");
  print(MYRC "surface_prog_filename: %s.prog.sfc.$tmpl2.$ncsuffix\n");
  print(MYRC "aero_bkg_filename: %s.abkg.eta.$tmpl2.$ncsuffix\n");
  print(MYRC "chem_bkg_filename: %s.cbkg.eta.$tmpl2.$ncsuffix\n");
  print(MYRC "gaas_bkg_filename: %s.gaas_bkg.sfc.$tmpl.$ncsuffix\n");
  print(MYRC "gaasrst_bkg_filename: %s.gaas_bkg_sfc_rst.$tmpl.$ncsuffix\n");
  print(MYRC "chem_ana_filename: %s.cana.eta.$tmpl2.$ncsuffix\n");
  print(MYRC "reference_filename: %s.ref.eta.$tmpl2.$ncsuffix\n");
  print(MYRC "verification_filename: %s.ver.eta.$tmpl2.$ncsuffix\n");

# Done
# ----
  close(MYRC);
}

#=======================================================================
# Create gaas.rc under run/gaas
#=======================================================================
sub create_fvpsasrc_gaas {
    my ($myrc, $tmpl);

    $myrc = "$fvhome/run/gaas/gaas.rc";
    $tmpl  = "%y4%m2%d2_%h2z";

    open MYRC, "> $myrc" or die "Cannot create $myrc: $!";

    print(MYRC "#\n");
    print(MYRC "# FVPSAS resource file.\n");
    print(MYRC "#\n");
    print(MYRC "# !REVISION HISTORY:\n");
    print(MYRC "#\n");
    print(MYRC "# 26May2011  Stassi   Auto generation from within fvsetup.\n");
    print(MYRC "#\n");
    print(MYRC "#---------------------------------------------------------\n");
    print(MYRC "gaas_bkg_filename: %s.gaas_bkg.sfc.$tmpl.$ncsuffix\n");

    close(MYRC);
}

#=======================================================================
# Edit ssi.rc under run
#=======================================================================
sub ed_ncep_rc {

  return 0 unless ( $anassi || $anagsi );

  my($nceprc) = @_;

  my($frun, $ft, $rcd, $nlon);
  my($gsinlon, $ssinlath, $ssinlon);

  $ft   = "$fvhome/run/tmp.rc";
  $frun = "$fvhome/run/$nceprc";

  open(LUN,"$frun") || die "Fail to open $nceprc: $!\n";
  open(LUN2,">$ft") || die "Fail to open tmp.rc: $!\n";

  # Change variables to the correct inputs
  #---------------------------------------

  if ( $anagsi ) {

     $gsinlon = 2 * $gsihgrd;
     $varwnd_hr = $varwindow / 60;
     if( "$gsinlon" eq "516") { $gsinlon = "512" }; # RT: hacked in for now
     while( defined($rcd = <LUN>) ) {
       chomp($rcd);
       if($rcd =~ /\@JCAP/) {$rcd=~ s/\@JCAP/$jcap/; }
       if ( $anahgrd eq "NA" ) {
            if($rcd =~ /\@GSINLAT/) {$rcd=~ s/\@GSINLAT/$gsihgrd/; }
            if($rcd =~ /\@GSINLON/) {$rcd=~ s/\@GSINLON/$gsinlon/; }
       } else {
            if ( "$nceprc" eq "obs.rc.tmpl" ) {  # observer has dims of GCM
#             if($rcd =~ /\@GSINLAT/) {$rcd=~ s/\@GSINLAT/$agcm_jm/; }  # this is true in non-split observer mode
#             if($rcd =~ /\@GSINLON/) {$rcd=~ s/\@GSINLON/$agcm_im/; }  # this is true in non-split observer mode
              if($rcd =~ /\@GSINLAT/) {$rcd=~ s/\@GSINLAT/$analat/; }   # this is true in split observer mode
              if($rcd =~ /\@GSINLON/) {$rcd=~ s/\@GSINLON/$analon/; }   # this is true in split observer mode
            } else {
              if($rcd =~ /\@GSINLAT/) {$rcd=~ s/\@GSINLAT/$analat/; }
              if($rcd =~ /\@GSINLON/) {$rcd=~ s/\@GSINLON/$analon/; }
              if($rcd =~ /\@ENS_GSINLAT/) {$rcd=~ s/\@ENS_GSINLAT/$ana_jm_ens/; }
              if($rcd =~ /\@ENS_GSINLON/) {$rcd=~ s/\@ENS_GSINLON/$ana_im_ens/; }
            }
       }
       if($rcd =~ /\@NSIG/) {$rcd=~ s/\@NSIG/$siglevs/g; }
       if($rcd =~ /\@HYBRID/) {$rcd=~ s/\@HYBRID/$hybrid/g; }
       if($rcd =~ /\@ENS_JCAP/)  {$rcd=~ s/\@ENS_JCAP/$jcap_ens/g; }
       if($rcd =~ /\@VARWINDOW/) {$rcd=~ s/\@VARWINDOW/$varwnd_hr/g; }
       if($rcd =~ /\@VAROBSBIN/) {$rcd=~ s/\@VAROBSBIN/$varobsbin/g; }
       if ( $newradbc == 0 ) {
          if($rcd =~ /\@RADBC/) {$rcd=~ s/\@RADBC/!/g; }
       } else {
          if($rcd =~ /\@RADBC/) {$rcd=~ s/\@RADBC//g; }
       }
	   
       if ( $siglevs <= 72 ) {
          if($rcd =~ /\@NLEV_EXT/) {$rcd=~ s/\@NLEV_EXT/15/g; }
       } elsif ( $siglevs > 72 & $siglevs <= 132 ) {
          if($rcd =~ /\@NLEV_EXT/) {$rcd=~ s/\@NLEV_EXT/17/g; }
       } elsif ( $siglevs > 132 ) {
          if($rcd =~ /\@NLEV_EXT/) {$rcd=~ s/\@NLEV_EXT/27/g; }
       }
       if ( $hyb_ens < 0 ) {
          if($rcd =~ /\@NITER1/) {$rcd=~ s/\@NITER1/100/g; }
          if($rcd =~ /\@NITER2/) {$rcd=~ s/\@NITER2/100/g; }
          if($rcd =~ /\@TLNMC/) {$rcd=~ s/\@TLNMC/1/g; }
          if($rcd =~ /\@JCPDRY/) {$rcd=~ s/\@JCPDRY/.true./g; }
          if($rcd =~ /\@L_HYB_ENS/) {$rcd=~ s/\@L_HYB_ENS/.false./g; }
          if($rcd =~ /\@4DHYB/) {$rcd=~ s/\@4DHYB/!/g; }
       }
       if ( $hyb_ens == 3 ) {
          if($rcd =~ /\@NITER1/) {$rcd=~ s/\@NITER1/100/g; }
          if($rcd =~ /\@NITER2/) {$rcd=~ s/\@NITER2/100/g; }
          if($rcd =~ /\@TLNMC/) {$rcd=~ s/\@TLNMC/2/g; }
          if($rcd =~ /\@JCPDRY/) {$rcd=~ s/\@JCPDRY/.true./g; }
          if($rcd =~ /\@L_HYB_ENS/) {$rcd=~ s/\@L_HYB_ENS/.true./g; }
          if($rcd =~ /\@4DHYB/) {$rcd=~ s/\@4DHYB/!/g; }
       }
       if ( $hyb_ens == 4 ) {
          if($rcd =~ /\@NITER1/) {$rcd=~ s/\@NITER1/50/g; }
          if($rcd =~ /\@NITER2/) {$rcd=~ s/\@NITER2/25/g; }
          if($rcd =~ /\@TLNMC/) {$rcd=~ s/\@TLNMC/3/g; }
          if($rcd =~ /\@JCPDRY/) {$rcd=~ s/\@JCPDRY/.true./g; }
          if($rcd =~ /\@L_HYB_ENS/) {$rcd=~ s/\@L_HYB_ENS/.true./g; }
          if($rcd =~ /\@4DHYB/) {$rcd=~ s/\@4DHYB/ /g; }
       }
       if ($varcase >= 4) {
           if($rcd =~ /\@L4DVAR/) {$rcd=~ s/\@L4DVAR/.true./g; }
           if($rcd =~ /\@MITER/)  {$rcd=~ s/\@MITER/1/g; }
           if ($varcase == 4) {
               if($rcd =~ /\@IDMODEL/)  {$rcd=~ s/\@IDMODEL/.false./g; }  # 4DVAR case
           }
           if ($varcase == 5) {
               if($rcd =~ /\@IDMODEL/)  {$rcd=~ s/\@IDMODEL/.true./g; }   # FGAT  case
           }
       } else {
           if($rcd =~ /\@L4DVAR/) {$rcd=~ s/\@L4DVAR/.false./g; }
           if($rcd =~ /\@MITER/)  {$rcd=~ s/\@MITER/2/g; }
           if($rcd =~ /\@IDMODEL/)  {$rcd=~ s/\@IDMODEL/.false./g; }
       }
       if ( $wcnstrt == 1 || $do4diau ) {
          $iwrtinc = $varoffset / $asynbkg_min + 1;
          if($rcd =~ /\@IWRTINC/) {$rcd=~ s/\@IWRTINC/$iwrtinc/g; }
       } else {
          $iwrtinc = 1;
          if($rcd =~ /\@IWRTINC/) {$rcd=~ s/\@IWRTINC/$iwrtinc/g; }
       }
       print(LUN2 "$rcd\n");
     }

  } else {

     if ( $specres eq "62"  ) { $ssinlon = 192; $ssinlath = 48  };
     if ( $specres eq "170" ) { $ssinlon = 384; $ssinlath = 96  };
     if ( $specres eq "254" ) { $ssinlon = 512; $ssinlath = 129 };

     while( defined($rcd = <LUN>) ) {
       chomp($rcd);
       if($rcd =~ /\@JCAP/) {$rcd=~ s/\@JCAP/$jcap/; }
       if($rcd =~ /\@NLATH/) {$rcd=~ s/\@NLATH/$ssinlath/; }
       if($rcd =~ /\@NLON/) {$rcd=~ s/\@NLON/$ssinlon/; }
       if($rcd =~ /\@NSIG/) {$rcd=~ s/\@NSIG/$siglevs/; }
       print(LUN2 "$rcd\n");
     }

  }
  close(LUN);
  close(LUN2);
  cp($ft, $frun);
  unlink $ft;
}

#=======================================================================
# Edit gsigridcomp.rc under run
#=======================================================================
sub ed_gsigridcomp_rc {

  return 0 unless ( $anagsi );

  my($myrc,$mycase) = @_;

  my($frun, $ft, $rcd, $nlon);
  my($gsinlon, $ssinlath, $ssinlon, $varwnd_nhms);

  $ft   = "$fvhome/run/tmp.rc";
  $frun = "$fvhome/run/$myrc";

  if ( $mycase eq "observer" ) {
#      $hr = int( $dt / 3600 );           $hr = sprintf "%02d", $hr;
#      $mn = int( $dt / 60   );           $mn = sprintf "%02d", $mn;
#      $sc = $dt - 60 * $mn + 3600 * $hr; $sc = sprintf "%02d", $sc;
#      $myfreq = "${hr}${mn}${sc}";   # RT: not yet ... soon
       $myfreq = $asynbkg_hms;
  } else {
       $myfreq = $asynbkg_hms;
  }
  $asynbkg_sec = $asynbkg_min * 60;

  $varwnd_hr   = $varwindow / 60;
  $varwnd_nhms = $varwnd_hr * 10000;

  open(LUN,"$frun") || die "Fail to open $myrc: $!\n";
  open(LUN2,">$ft") || die "Fail to open tmp.rc: $!\n";

  # Change variables to the correct inputs
  #---------------------------------------

     $gsinlon = 2 * $gsihgrd;
     if( "$gsinlon" eq "516") { $gsinlon = "512" }; # RT: hacked in for now
     if( "$gsinlon" eq "772") { $gsinlon = "768" }; # RT: hacked in for now
     while( defined($rcd = <LUN>) ) {
       chomp($rcd);
       if($rcd =~ /\@JCAP/) {$rcd=~ s/\@JCAP/$jcap/; }
       if ( $geosgrd eq "NA" ) {
            if($rcd =~ /\@NLAT/) {$rcd=~ s/\@NLAT/$gsihgrd/; }
            if($rcd =~ /\@NLON/) {$rcd=~ s/\@NLON/$gsinlon/; }
       } else {
            if($rcd =~ /\@GCMNLAT/) {$rcd=~ s/\@GCMNLAT/$analat/; }
            if($rcd =~ /\@GCMNLON/) {$rcd=~ s/\@GCMNLON/$analon/; }
            if ( "$mycase" eq "observer" ) {
               if($rcd =~ /\@GSINLAT/) {$rcd=~ s/\@GSINLAT/$analat/; }
               if($rcd =~ /\@GSINLON/) {$rcd=~ s/\@GSINLON/$analon/; }
            } else {
               if($rcd =~ /\@GSINLAT/) {$rcd=~ s/\@GSINLAT/$analat/; }
               if($rcd =~ /\@GSINLON/) {$rcd=~ s/\@GSINLON/$analon/; }
            }
       }
       if ( "$mycase" eq "observer" ) {
           if($rcd =~ /\@NXGSI/) {$rcd=~ s/\@NXGSI/$nx/g; }
           if($rcd =~ /\@NYGSI/) {$rcd=~ s/\@NYGSI/$ny/g; }
       } else {
           if($rcd =~ /\@NXGSI/) {$rcd=~ s/\@NXGSI/$nxgsi/g; }
           if($rcd =~ /\@NYGSI/) {$rcd=~ s/\@NYGSI/$nygsi/g; }
           if($rcd =~ /\@APERT_IM/) {$rcd=~ s/\@APERT_IM/$apert_im/g; }
           if($rcd =~ /\@APERT_JM/) {$rcd=~ s/\@APERT_JM/$apert_jm/g; }
       }
       if($rcd =~ /\@NSIG/) {$rcd=~ s/\@NSIG/$siglevs/g; }
       if($rcd =~ /\@VARWINDOW/) {$rcd=~ s/\@VARWINDOW/$varwnd_nhms/g; }
       if($rcd =~ /\@ASYNFRQ/) {$rcd=~ s/\@ASYNFRQ/$myfreq/g; }
       if($rcd =~ /\@SECASYNFRQ/) {$rcd=~ s/\@SECASYNFRQ/$asynbkg_sec/g; }
       if($rcd =~ /\@EXPID/) {$rcd=~ s/\@EXPID/$expid/g; }
       if ( $varcase <= 3 ) {
            if($rcd =~ /\@ANAINC/) {$rcd=~ s/\@ANAINC/NO/g; }
       } else {
            if($rcd =~ /\@ANAINC/) {$rcd=~ s/\@ANAINC/YES/g; }
       }
       if($rcd =~ /\@AENSUPAFN/) {$rcd=~ s/\@AENSUPAFN/%s.$aensupa.%y4%m2%d2_%h2%n2z.>>>NCSUFFIX<<</g; }

       print(LUN2 "$rcd\n");
     }

  close(LUN);
  close(LUN2);
  cp($ft, $frun);
  unlink $ft;
}

#=======================================================================
sub ed_psas_rc {

  return 0 unless ( $anapsas );

  my($frun, $ft, $rcd);
  my($psasrc);

  $psasrc = "psas.rc";

  $ft   = "$fvhome/run/tmp.rc";
  $frun = "$fvhome/run/$psasrc";

  open(LUN,"$frun") || die "Fail to open $psasrc: $!\n";
  open(LUN2,">$ft") || die "Fail to open tmp.rc: $!\n";

  # Change variables to the correct inputs
  #---------------------------------------
  while( defined($rcd = <LUN>) ) {
     chomp($rcd);
     if($rcd =~ /\@SIGFCTL/) {$rcd=~ s/\@SIGFCTL/$fvbcs/g; }
     print(LUN2 "$rcd\n");
  }

  close(LUN);
  close(LUN2);
  cp($ft, $frun);
  unlink $ft;
}

#=======================================================================
# Edit mkiau.rc under run
# For now this is only used in the Cubed-DAS; eventually all cases
#=======================================================================
sub ed_mkiau_rc {

  $mkiau_nx =  2;
  $mkiau_ny = 12;

  return 0 unless ( $cubed );   # for now, cubed only

  my($mycase,$myrc) = @_;

  my($frun, $ft, $rcd, $nlon);
  my($gsinlon, $ssinlath, $ssinlon, $varwnd_nhms);

  if ( $cubed ) {
      if ($siteID eq "nccs") {
          $mkiau_nx =  4;
          $mkiau_ny = 24;
      }
      $dycore = "FV3";
  } else {
      $mkiau_nx = 4;
      $mkiau_ny = 4;
      $dycore   = "FV";
  }
  $ft   = "$fvhome/$mycase/tmp.rc";
  $frun = "$fvhome/$mycase/$myrc";

  open(LUN,"$frun") || die "Fail to open $myrc: $!\n";
  open(LUN2,">$ft") || die "Fail to open tmp.rc: $!\n";

  # Change variables to the correct inputs
  #---------------------------------------

     while( defined($rcd = <LUN>) ) {
       chomp($rcd);

       if($rcd =~ /\@NX/)            {$rcd=~ s/\@NX/$mkiau_nx/; }
       if($rcd =~ /\@NY/)            {$rcd=~ s/\@NY/$mkiau_ny/; }
       if($rcd =~ /\@DYCORE/)        {$rcd=~ s/\@DYCORE/$dycore/; }
       if($rcd =~ /\@AGCM_IM/)       {$rcd=~ s/\@AGCM_IM/$agcm_im/; }
       if($rcd =~ /\@AGCM_JM/)       {$rcd=~ s/\@AGCM_JM/$agcm_jm/; }
       if($rcd =~ /\@AGCM_LM/)       {$rcd=~ s/\@AGCM_LM/$km/; }
       if($rcd =~ /\@AGCM_GRIDNAME/) {$rcd=~ s/\@AGCM_GRIDNAME/$AGCM_GRIDNAME/; }

       print(LUN2 "$rcd\n");
     }

  close(LUN);
  close(LUN2);
  cp($ft, $frun);
  unlink $ft;
}

#=======================================================================
sub ed_fcst_acq {

  return 0 unless ( $g5gcm );

  my($mydir) = @_;

  my($frun, $ft, $acq);

  $acq = "$fvhome/$mydir/fcst.acq";
 open(SCRIPT,">$acq") or
 die ">>> ERROR <<< cannot write $acq";
 print  SCRIPT <<"EOF";
$anaetafn
$bkgetafn
EOF

}

#=======================================================================
sub ed_4dfcst_acq {

  return 0 unless ( $g5gcm );

  my($mydir) = @_;

  my($frun, $ft, $acq);

  $acq = "$fvhome/$mydir/fcst.acq";
 open(SCRIPT,">$acq") or
 die ">>> ERROR <<< cannot write $acq";
 print  SCRIPT <<"EOF";
#$acqloc/$expid/rs/Y%y4/M%m2/$expid.agcm_import_rst.%y4%m2%d2_%h2%n2z.$ncsuffix
$acqloc/$expid/ana/Y%y4/M%m2/$expid.ana.eta.%y4%m2%d2_%h2%n2z.nc4
EOF

}
#=======================================================================
sub ed_4dfcst03_acq {

  return 0 unless ( $g5gcm );

  my($mydir) = @_;

  my($frun, $ft, $acq);

  $acq = "$fvhome/$mydir/fcst03.acq";
 open(SCRIPT,">$acq") or
 die ">>> ERROR <<< cannot write $acq";
 print  SCRIPT <<"EOF";
$acqloc/$expid/rs/Y%y4/M%m2/$expid.agcmrst.%y4%m2%d2_%h2z.tar
EOF

}
#=======================================================================
sub ed_4dfcst09_acq {

  return 0 unless ( $g5gcm );

  my($mydir) = @_;

  my($frun, $ft, $acq);

  $acq = "$fvhome/$mydir/fcst09.acq";
 open(SCRIPT,">$acq") or
 die ">>> ERROR <<< cannot write $acq";
 print  SCRIPT <<"EOF";
$acqloc/$expid/ana/Y%y4/M%m2/$expid.ana09.eta.%y4%m2%d2_%h2%n2z.nc4
#$acqloc/$expid/rs/Y%y4/M%m2/$expid.agcm09_import_rst.%y4%m2%d2_%h2z.bin
EOF

}

#=======================================================================
sub ed_admtlmA_acq {

  return 0 unless ( $admtlm );

  my($mydir) = @_;

  my($frun, $ft, $acq);

  $acq = "$fvhome/$mydir/ana.acq";
 open(SCRIPT,">$acq") or
 die ">>> ERROR <<< cannot write $acq";
 print  SCRIPT <<"EOF";
$anaetafn
EOF

  $acq = "$fvhome/$mydir/asm.acq";
 open(SCRIPT,">$acq") or
 die ">>> ERROR <<< cannot write $acq";
 print  SCRIPT <<"EOF";
$asmetafn
EOF

}

#=======================================================================
sub ed_bkg_acq {

  return 0 unless ( $fulldas );

  my($mydir) = @_;

  my($frun, $ft, $acq);

  $acq = "$fvhome/$mydir/bkg.acq";

 open(SCRIPT,">$acq") or
 die ">>> ERROR <<< cannot write $acq";
 print  SCRIPT <<"EOF";
$defexploc/$vexpid/ana/Y%y4/M%m2/$vexpid.bkg.eta.%y4%m2%d2_%h2%n2z.$ncsuffix
$defexploc/$vexpid/ana/Y%y4/M%m2/$vexpid.bkg.sfc.%y4%m2%d2_%h2%n2z.$ncsuffix
$defexploc/$vexpid/ana/Y%y4/M%m2/$vexpid.cbkg.eta.%y4%m2%d2_%h2%n2z.$ncsuffix
$defexploc/$vexpid/ana/Y%y4/M%m2/$vexpid.bkg09.eta.%y4%m2%d2_%h2%n2z.$ncsuffix
$defexploc/$vexpid/ana/Y%y4/M%m2/$vexpid.bkg09.sfc.%y4%m2%d2_%h2%n2z.$ncsuffix
$defexploc/$vexpid/ana/Y%y4/M%m2/$vexpid.cbkg09.eta.%y4%m2%d2_%h2%n2z.$ncsuffix
EOF
}

#=======================================================================
sub ed_aod4fcst_acq {

  return 0 unless ( $gaasfdbk );

  my($mydir) = @_;

  my($frun, $ft, $acq);

  $acq = "$fvhome/$mydir/aod4fcst.acq";

 open(SCRIPT,">$acq") or
 die ">>> ERROR <<< cannot write $acq";
 print  SCRIPT <<"EOF";
$defexploc/$vexpid/chem/Y%y4/M%m2/$vexpid.aod_a.sfc.%y4%m2%d2_%h200z.$ncsuffix
$defexploc/$vexpid/chem/Y%y4/M%m2/$vexpid.aod_f.sfc.%y4%m2%d2_%h200z.$ncsuffix
$defexploc/$vexpid/chem/Y%y4/M%m2/$vexpid.aod_k.sfc.%y4%m2%d2_%h200z.$ncsuffix
EOF
}

#=======================================================================
sub ed_satbias_acq {

  my($mydir) = @_;

  my($frun, $ft, $acq);

  $acq = "$fvhome/$mydir/satbias.acq";

  if( $newradbc ) {
    $mysatbiaspc = "$defexploc/$vexpid/ana/Y%y4/M%m2/$vexpid.ana.satbiaspc.%y4%m2%d2_%h2z.txt"; chomp($mysatbiaspc);
  } else {
    $mysatbiaspc = "";
  }

 if ( $acftbias ) {
     $myacftbias = "$defexploc/$vexpid/ana/Y%y4/M%m2/$vexpid.ana.acftbias.%y4%m2%d2_%h2z.txt";
 } else {
     $myacftbias = "#$defexploc/$vexpid/ana/Y%y4/M%m2/$vexpid.ana.acftbias.%y4%m2%d2_%h2z.txt";
 }

 open(SCRIPT,">$acq") or
 die ">>> ERROR <<< cannot write $acq";
 print  SCRIPT <<"EOF";
#$defexploc/$vexpid/ana/Y%y4/M%m2/$vexpid.bbias.eta.%y4%m2%d2_%h2z.bin
$defexploc/$vexpid/ana/Y%y4/M%m2/$vexpid.ana.satbias.%y4%m2%d2_%h2z.txt
$defexploc/$vexpid/ana/Y%y4/M%m2/$vexpid.ana.satbang.%y4%m2%d2_%h2z.txt
$myacftbias
$mysatbiaspc
EOF
}

#=======================================================================
sub ed_asens_acq {

  return 0 unless ( $doasens );

  my($mydir) = @_;

  my($frun, $ft, $acq);

  $acq = "$fvhome/$mydir/asens.acq";

 open(SCRIPT,">$acq") or
 die ">>> ERROR <<< cannot write $acq";
 print  SCRIPT <<"EOF";
$defexploc/$vexpid/ana/Y%y4/M%m2/$vexpid.bkg.eta.%y4%m2%d2_%h2%n2z.$ncsuffix
$defexploc/$vexpid/ana/Y%y4/M%m2/$vexpid.bkg.sfc.%y4%m2%d2_%h2%n2z.$ncsuffix
$defexploc/$vexpid/ana/Y%y4/M%m2/$vexpid.cbkg.eta.%y4%m2%d2_%h2%n2z.$ncsuffix
$defexploc/$vexpid/ana/Y%y4/M%m2/$vexpid.bkg09.eta.%y4%m2%d2_%h2%n2z.$ncsuffix
$defexploc/$vexpid/ana/Y%y4/M%m2/$vexpid.bkg09.sfc.%y4%m2%d2_%h2%n2z.$ncsuffix
$defexploc/$vexpid/ana/Y%y4/M%m2/$vexpid.cbkg09.eta.%y4%m2%d2_%h2%n2z.$ncsuffix
EOF
}

#=======================================================================
sub ed_g5fvlay_rc {

  return 0 unless ( $g5gcm & $cubed );

  my($mydir) = @_;

  my($frun, $ft, $rcd);
  my($g5fvlayrc);

  $g5fvlayrc = "fvcore_layout.rc";

  $ft   = "$fvhome/$mydir/tmp.rc";
  $frun = "$fvhome/$mydir/$g5fvlayrc";

  open(LUN,"$frun") || die "Fail to open $g5fvlayrc: $!\n";
  open(LUN2,">$ft") || die "Fail to open tmp.rc: $!\n";

  # Change variables to the correct inputs
  # RT: Only hydrostatic option supported for now - will revise for non-hydro case later
  #---------------------------------------
  while( defined($rcd = <LUN>) ) {
     chomp($rcd);
     if($rcd =~ /\@FV_HYDRO/)  {$rcd=~ s/\@FV_HYDRO/hydrostatic = .T./g; }
     if($rcd =~ /\@FV_MAKENH/) {$rcd=~ s/\@FV_MAKENH/Make_NH = .F./g; }
     if($rcd =~ /\@FV_SATADJ/) {$rcd=~ s/\@FV_SATADJ/do_sat_adj  = .F./g; }
     if($rcd =~ /\@FV_ZTRACER/){$rcd=~ s/\@FV_ZTRACER/z_tracer = .T./g; }
     if($rcd =~ /\@FV_NWAT/)   {$rcd=~ s/\@FV_NWAT/ /g; }
     if ( "$res" eq "C720" ) {
       if($rcd =~ /\@FV_N_SPLIT/)   {$rcd=~ s/\@FV_N_SPLIT/n_split = 12/g; }
     } else {
       if($rcd =~ /\@FV_N_SPLIT/)   {$rcd=~ s/\@FV_N_SPLIT/ /g; }
     }
     print(LUN2 "$rcd\n");
  }

  close(LUN);
  close(LUN2);

  cp($ft, $frun);
  unlink $ft;

  if ( $coupled ) {
     my @these = ("$mometc/g5aodas_input.nml","$frun");
     my $target = "/tmp/${user}_$$.txt";
     merge_txt(\@these,$target);
     mv($target, $frun);
  }


}

#=======================================================================
sub ed_g5cap_rc {

  return 0 unless ( $g5gcm );

  my($mydir,$g5caprc,$fhours) = @_;

  my($frun, $ft, $rcd, $myedate, $myjobsg );

  $ft   = "$fvhome/$mydir/tmp.rc";
  $frun = "$fvhome/$mydir/$g5caprc";

  cp("$fvetc/CAP.rc.tmpl",$frun);

  $myedate = $end_date;
  if ( $mydir eq "run" ) {
        $myjobsg = $job_sgmt;
  } else {
        $myedate  = "21370101 000000"; # i.e. an arbitrary date in the far future
        $myjobsg  = ddd_hhmmss($fhours);
  }

  open(LUN,"$frun") || die "Fail to open $g5caprc: $!\n";
  open(LUN2,">$ft") || die "Fail to open tmp.rc: $!\n";

  # Change variables to the correct inputs
  #---------------------------------------
  while( defined($rcd = <LUN>) ) {
     chomp($rcd);
     if($rcd =~ /\@DT/)       {$rcd=~ s/\@DT/$dt/g; }
     if($rcd =~ /\@OCEAN_IM/) {$rcd=~ s/\@OCEAN_IM/$ogcm_im/g; }
     if($rcd =~ /\@OCEAN_JM/) {$rcd=~ s/\@OCEAN_JM/$ogcm_jm/g; }
     if($rcd =~ /\@OCEAN_LM/) {$rcd=~ s/\@OCEAN_LM/$ogcm_lm/g; }
     if($rcd =~ /\@BEG_DATE/) {$rcd=~ s/\@BEG_DATE/$beg_date/g; }
     if($rcd =~ /\@END_DATE/) {$rcd=~ s/\@END_DATE/$myedate/g; }
     if($rcd =~ /\@NUM_SGMT/) {$rcd=~ s/\@NUM_SGMT/9999/g; }   # this is a dummy varible for L.Takacs script only
     if($rcd =~ /\@JOB_SGMT/) {$rcd=~ s/\@JOB_SGMT/$myjobsg/g; }
     if($rcd =~ /\@USE_SHMEM/){$rcd=~ s/\@USE_SHMEM/$use_shmem/g; }
     print(LUN2 "$rcd\n");
  }

  close(LUN);
  close(LUN2);
  cp($ft, $frun);
  unlink $ft;

}

#=======================================================================
sub ed_g5cap_apert_rc {

  return 0 unless ( $admtlm );

  my($mydir) = @_;

  my($frun, $ft, $rcd, $myedate, $myjobsg );
  my($g5capapertrc);

  $g5capapertrc = "CAP_apert.rc.tmpl";

  $ft   = "$fvhome/$mydir/tmp.rc";
  $frun = "$fvhome/$mydir/$g5capapertrc";

  open(LUN,"$frun") || die "Fail to open $g5capapertrc: $!\n";
  open(LUN2,">$ft") || die "Fail to open tmp.rc: $!\n";

  # Change variables to the correct inputs
  #---------------------------------------
  while( defined($rcd = <LUN>) ) {
     chomp($rcd);
     if($rcd =~ /\@PERT_DT/) {$rcd=~ s/\@PERT_DT/$pert_dt/g; }
     print(LUN2 "$rcd\n");
  }

  close(LUN);
  close(LUN2);
  cp($ft, $frun);
  unlink $ft;

}

#=======================================================================
sub ed_rst4fcst_acq {

  return 0 unless ( $g5gcm );

  my($mydir) = @_;

  my($frun, $ft, $acq);

  $acq = "$fvhome/$mydir/rst4fcst.acq";

 open(SCRIPT,">$acq") or
 die ">>> ERROR <<< cannot write $acq";
 print  SCRIPT <<"EOF";
$defexploc/$expid/rs/Y%y4/M%m2/$expid.rst.%y4%m2%d2_%h2z.tar
EOF
if ( $hyb_ens < 4 ) {
 print  SCRIPT <<"EOF";
$defexploc/$expid/rs/Y%y4/M%m2/$expid.agcm_import_rst.%y4%m2%d2_%h2%n2z.$ncsuffix
EOF
}
}
#=======================================================================
sub ed_aens_replay_acq {

  return 0 unless ( $g5gcm );

  my($mydir,$myacq) = @_;

  my($frun, $ft, $acq);

  $acq = "$fvhome/$mydir/$myacq";
  if (-e "$acq") {return 0};
 open(SCRIPT,">$acq") or
 die ">>> ERROR <<< cannot write $acq";
 print  SCRIPT <<"EOF";
$acqloc/$expid/atmens/Y%y4/M%m2/$expid.atmens_ebkg.%y4%m2%d2_%h2z.tar
EOF

}

#=======================================================================
sub ed_aens_das_replay_acq {
  my($mydir) = @_;
  my($replay_arcdir, $aens_replay_expid, $acq);

  $aens_replay_expid = "x0044";
  $aens_replay_expid = query("Replay exp name?", $aens_replay_expid);
  $replay_arcdir = "/discover/nobackup/projects/gmao/advda/rtodling/archive/x0044";
  $replay_arcdir = query("Replay archive directory?", $replay_arcdir);

  $acq = "$fvhome/$mydir/atmens_replay.acq";
  open(SCRIPT,">$acq") or die ">>> ERROR <<< cannot write $acq";
  print  SCRIPT <<"EOF";
$replay_arcdir/atmens/Y%y4/M%m2/$aens_replay_expid.atmens_ebkg.%y4%m2%d2_%h2z.tar => $expid.atmens_ebkg.%y4%m2%d2_%h2z.tar
EOF

  if ( $mydir eq "run") { 
     $acq = "$fvhome/anasa/atmens_replay.acq";
     open(SCRIPT,">$acq") or die ">>> ERROR <<< cannot write $acq";
     print  SCRIPT <<"EOF";
$replay_arcdir/atmens/Y%y4/M%m2/$aens_replay_expid.atmens_ebkg.%y4%m2%d2_%h2z.tar => $expid.atmens_ebkg.%y4%m2%d2_%h2z.tar
EOF
     $acq = "$fvhome/asens/atmens_asens.acq";
     open(SCRIPT,">$acq") or die ">>> ERROR <<< cannot write $acq";
     print  SCRIPT <<"EOF";
$replay_arcdir/atmens/Y%y4/M%m2/$aens_replay_expid.atmens_ebkg.%y4%m2%d2_%h2z.tar => $expid.atmens_ebkg.%y4%m2%d2_%h2z.tar
EOF
  }

}
#=======================================================================
sub ddd_hhmmss {
    my ($hours, $days, $hrs, $hhmmss);

    # input number of hours
    #----------------------
    $hours = shift @_;
    
    # convert hours to days & hrs
    #----------------------------
    $days = $hours / $HRS_PER_DAY;
    $days = int($days);
    $hrs = $hours - ( $days * $HRS_PER_DAY );

    # expand $hrs to get $hhmmss
    #---------------------------
    $hrs = sprintf "%02d", $hrs;
    $hhmmss = $hrs ."0000";

    return "$days $hhmmss";
}

#=======================================================================
sub ed_lcv2prs_rc {

  return 0 unless ( $anagsi );

  my($mydir) = @_;

  my($frun, $ft, $rcd);
  my($lcvf);

  foreach $lcvf ( @lcv2prsrcs ) {

     $ft   = "$fvhome/$mydir/tmp.rc";
     $frun = "$fvhome/$mydir/$lcvf";

     open(LUN,"$frun") || die "Fail to open $ftrun $!\n";
     open(LUN2,">$ft") || die "Fail to open tmp.rc $!\n";

     # Change variables to the correct inputs
     #---------------------------------------
     while( defined($rcd = <LUN>) ) {
        chomp($rcd);
        if($rcd =~ /\@IM/) {$rcd=~ s/\@IM/$ana_im/g; }
        if($rcd =~ /\@JM/) {$rcd=~ s/\@JM/$ana_jm/g; }
        print(LUN2 "$rcd\n");
     }

     close(LUN);
     close(LUN2);
     cp($ft, $frun);
     unlink $ft;

  } # < end foreach >
}

#=======================================================================
sub ed_blendacq {

  my($mydir) = @_;

  my($frun, $ft, $rcd, $myrc);

  $myrc = "$fvhome/$mydir/blendrs.acq";
 open(SCRIPT,">$myrc") or
 die ">>> ERROR <<< cannot write $myrc";
 print  SCRIPT <<"EOF";
$anastagedir/%s.ana.eta.%y4%m2%d2_%h2%n2z.$ncsuffix
EOF

}

#=======================================================================
sub welcome {

  if ( $fulldas ) { $mode = "DAS mode"; }
  else            { $mode = "GCM mode"; }

  print("anapsas=$anapsas; anassi=$anassi; anagsi=$anagsi; fulldas=$fulldas;\n");
  print <<EOF;

        -------------------------------------------
         fvSETUP - The fvDAS Experiment Setup Tool
               Finite-Volume DAS Version $version
        -------------------------------------------

--------
BINARIES
--------

         Using binaries located at $fvroot
         having CVS tag $cvstag in $mode

EOF

}

#=======================================================================
sub get_rem_acct_info {
    my ($node_dflt, $id_dflt, $acct_dflt, $acct);

    $node_dflt = "train";
    $id_dflt = $ENV{"USER"};
    $acct_dflt = "$id_dflt\@$node_dflt";

    until ($remID and ($remNODE eq "train" or $remNODE eq "polar")) {
        $acct = query("\n  Remote account for Intranet plots?", "$acct_dflt");
        if ($acct) { ($remID, $remNODE) = split /\@/, $acct   }
        else       { $remNODE = $node_dflt; $remID = $id_dflt }
    }
    return 0;
}

#=======================================================================
sub get_expid {
  my (%already_asked);

  $expid = "u000_"."$res";
  if ( $g5gcm ) { $expdsc = "${expid}__agrid_${res}__ogrid_${ores}" }
  else          { $expdsc = "FVGCM-based_run" }

  print <<"EOF";

-----
EXPID
-----
         This is a short string which will serve as an identifier
         for labeling all output files produced during this
         experiment.

         DEFAULT NAME: $expid
         DEFAULT DESC: $expdsc

EOF

  {
      if ($already_asked{$expid}) { $expid = query1("  EXPID?", $expid) }
      else                        { $expid =  query("  EXPID?", $expid) }

      unless ( $expid ) {
          warn ">>> ERROR <<< invalid experiment ID $expid";
          return 1 ;
      }

      unless ($already_asked{$expid}) {
          $prompt = "  Check for previous use of expid (y/n)?";

          if ($already_asked{"once"}) { $ans = query1($prompt, "y", "n") }
          else                        { $ans =  query($prompt, "y", "n") }

          unless ( neg($ans) ) {
              $rem_acct = "$remID\@$remNODE";

              print "\n" ."="x65 ."\n";
              $cmd = "$fvbin/idcheck.pl -rem $rem_acct $expid";
              print "$cmd\n";
              $status = system $cmd;
              $status = $status >> 8;
              print "="x65 ."\n\n";

              if ($status == 0) {
                  print " No previous use of expid=$expid was found.\n\n";
              }
              elsif ($status == 1) {
                  print " Previous use of \"$expid\" was found.\n"
                      . " Use a different expid?\n\n";
                  $already_asked{$expid} = 1;
                  $already_asked{"once"} = 1;
                  redo;
              }
              else {
                  print " Unsuccessful expid check. Continuing anyway ...\n\n";
              }
          }
      }
  }
  $expdsc = "${expid}__agrid_${res}__ogrid_${ores}" if $g5gcm;
  $expdsc = query("  EXPDSC?", $expdsc);
  return 0;
}

#=======================================================================
sub get_lsmodel {

    my $lndbcs_def = "Icarus_Updated";
    my $lsdflt = 1;
    my $rrdflt = 0;

    #----------------------------------------------------------------------
    # set $lsmodel_flag and $rroute_flag equal to defaults without querying
    #----------------------------------------------------------------------
    $lsmodel_flag = $lsdflt;
    $rroute_flag = $rrdflt;
    #----------------------------------------------------------------------

    print <<"EOF";

----------------
LAND BCS Version
----------------
    Icarus_Updated (default)
    or
    Icarus-NLv3

EOF
;

    $landbcs = query("  Land Boundary Conditions?", $lndbcs_def);

    if ( "$landbcs" eq "Icarus-NLv3" ) {

       print <<"EOF";
---------------
CATCHMENT MODEL
---------------

    1. catchment
    2. catchmentCN

EOF
;

       $lsmodel_flag = query("  Catchment Model choice?", $lsdflt);

    }

    return if $lsmodel_flag == 1 or $lsmodel_flag == 2;
    return 1;
}

#=======================================================================
sub get_fvbcs {
    my (@inputs, $fvdir, $FVINPUT, $found, $warn);

    $fvbcs = "";
    $warn = "";

    # possible fvInput directories
    # ----------------------------
    @inputs = ( "/nobackup/gmao_SIteam/ModelData/fvInput_4dvar",
                "$SHARE/gmao_ops/fvInput_4dvar" );
    for (0..$#inputs) {
        $fvdir = shift @inputs;
        if (-d $fvdir) {
            push @inputs, $fvdir;
            $fvbcs = $fvdir unless $fvbcs;
         }
     }

    # check for pre-defined $FVINPUT environment variable
    # ---------------------------------------------------
    $FVINPUT = $ENV{"FVINPUT"};
    if ($FVINPUT and -d $FVINPUT) {
        $found = 0;
        foreach (@inputs) { $found = 1 if /^$FVINPUT/ };
        unless ($found) {
            push @inputs, $FVINPUT;
            $fvbcs = $FVINPUT;
            $warn = "FVINPUT? \n"
                ." ** WARNING ** default FVINPUT location set by "
                ."environment variable: \$FVINPUT\n\n";
        }
    }         
    # real-time boundary conditions; default: real-time
    # -------------------------------------------------
    if ($ogcm eq "c") {
        $fvrtbcs = "$fvbcs/g5gcm/bcs/realtime/SST";
        $sstfile = "dataoceanfile_MERRA_sst_1971-current.$ogrid.LE";
        $icefile = "dataoceanfile_MERRA_fraci_1971-current.$ogrid.LE";
    }
    elsif ($ogcm eq "e") {
        $fvrtbcs = "$fvbcs/g5gcm/bcs/SST/$ogrid";
        $sstfile = "dataoceanfile_MERRA2_SST.$ogrid.\$year.data";
        $icefile = "dataoceanfile_MERRA2_ICE.$ogrid.\$year.data";
    } 
    elsif ($ogcm eq "f" || $ogcm eq "C") {
        $fvrtbcs = "$fvbcs/g5gcm/bcs/realtime/OSTIA_REYNOLDS";
        $sstfile = "dataoceanfile_OSTIA_REYNOLDS_SST.$ogrid.\$year.data";
        $icefile = "dataoceanfile_OSTIA_REYNOLDS_ICE.$ogrid.\$year.data";
    }
    elsif ($ogcm eq "T") { # this will need revision (RT)
        $fvrtbcs = "$fvbcs/g5gcm/bcs/realtime/OSTIA_REYNOLDS";
        $sstfile = "dataoceanfile_OSTIA_REYNOLDS_SST.$ogrid.\$year.data";
        $icefile = "dataoceanfile_OSTIA_REYNOLDS_ICE.$ogrid.\$year.data";
    }
    else { die "Abort: Not yet ready for this ocean-model resolution $ogcm_id\n"; }

    print <<"EOF";

-------
FVINPUT
-------
         Please enter the directory where the boundary conditions
         (SST, topography, O3, H2O, etc) and other inputs are kept.

         Default: $fvbcs

         Also, if (near) real-time run, enter directory where real-time
         boundary conditions are (SST):

         Default: $fvrtbcs

EOF

    # query for $fvbcs within naked block
    #------------------------------------
    $loop = 0;
    {
        if ( scalar(@inputs) > 1 ) {
            print "FVINPUT possible directory locations:\n";
            foreach $fvdir (@inputs) { print "  - $fvdir\n" };
            print "\n";
        }
        print $warn;
        $fvbcs = query("      FVINPUT?", $fvbcs);
        $fvbcs = $1 if $fvbcs =~ m[^(.+)/$];  # removes trailing '/'
        last if -d $fvbcs;

        if ($loop++ < 3) {
            warn ">> WARNING << Cannot find directory $fvbcs; Try again;";
            redo;
        } else {
            die ">> ERROR << Cannot find directory $fvbcs;";
        }
    }

    # query for $fvrtbcs within naked block
    #--------------------------------------
    $loop = 0;
    {
        # reset $fvrtbcs default
        #-----------------------
        #--foreach ("g5gcm/bcs/realtime/SST", "g5gcm/bcs/SST") {
        #--if (-d "$fvbcs/$_") { $fvrtbcs = "$fvbcs/$_"; last; }
        #--}
        $fvrtbcs = query("REAL TIME BCS?", $fvrtbcs);
        last if -d $fvrtbcs;

        if ($loop++ < 3) {
            warn ">> WARNING << Cannot find directory $fvrtbcs; Try again;";
            redo;
        } else {
            die ">> ERROR << Cannot find directory $fvrtbcs;";
        }
    }

    # set other variables based on $fvbcs and $fvrtbcs
    #-------------------------------------------------
    $chemhin = "$fvbcs/fvchem/c";       # fixed to c resolution (interpolation on the fly)
    $chemxin = "$fvbcs/fvchem/x";
    $fvgsibcs = $fvrtbcs;

    return 0;
}

#=======================================================================
sub get_extdata {

    @extdatasets = qw ( agcmpert chemistry g5chem g5gcm PIESA MERRA2 AeroCom );
    foreach $set ( @extdatasets ) { $extdata{$set} = "$fvbcs/$set" };

    print "\n-------------\n"
        .   "EXTERNAL DATA\n"
        .   "-------------\n";
    print "\n         Enter directory location for external data sets.\n\n";

    $loop = 0;
    foreach $set ( @extdatasets ) {
        $prompt = sprintf "%10s?", $set;
        $extdata{$set} = query($prompt, $extdata{$set});

        unless (-d $extdata{$set}) {
            if ($loop++ < 3) {
                warn ">> WARNING << Cannot find directory: $extdata{$set}; Try again;";
                redo;
            } else {
                die ">> ERROR << Cannot find directory: $extdata{$set};";
            }
        }
        $loop = 0;
    }
}

#=======================================================================
sub inq_admtlm {

  $asmetafn = "$defexploc/$expid/ana/Y%y4/M%m2/$expid.asm.eta.%y4%m2%d2_%h2%n2z.$ncsuffix";
  $anaetafn = "$defexploc/$expid/ana/Y%y4/M%m2/$expid.ana.eta.%y4%m2%d2_%h2%n2z.$ncsuffix";
  $bkgetafn = "$defexploc/$expid/ana/Y%y4/M%m2/$expid.bkg.eta.%y4%m2%d2_%h2%n2z.$ncsuffix";

  return 0 unless $admodel;

  print <<"EOF";

----------------
ADM-TLM Defaults
----------------

  Sensitivity exps use analyses             from:  $asmetafn

  Note: when doing sensitivity against forecast, template resembles something like:
        ..../prog/Y%y4/M%m2/%s.prog.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
EOF

  $fcstimes = "21";
  $fcswait_hrs = "12";
  $asnwait_hrs = "48";
  $admtlm = 0;
  $prompt = "  Run model-adjoint-related applications (0=no,1=yes)?";
  $admtlm = query($prompt, $admtlm);
  return 0 unless $admtlm == 1;

  $ans = query("  Analysis/Forecast filename template for sensitivity?");
  $asmetafn = $ans unless blank($ans);

  $grstage = "-grsv";
  $ans = query("  Stage the gradient vector files (y/n)?", "y");
  $grstage = "" if neg($ans);

  $svec = 0;
  $ans = query("  Run singular vector experiments (0=n,1=yes)?", $svec);
  $svec = 1 if $ans == 1;

  $fcstimes = "15 21";
  $fcswait_hrs = "36"; # can only launch forecast after when analysis is available

  return 0;
}

#=======================================================================
sub inq_anasens {

  $vexpid = "$expid";
  return 0 unless ($admodel and $anagsi);

  print <<"EOF";

-----------------------------
Analysis Sensitivity Defaults
-----------------------------

              Verifying experiment id: $vexpid

EOF

  $doasens = 0;
  $prompt = "  Run analysis-sensitivity applications (0=no,1=yes)?";
  $ans = query($prompt, $doasens);
  $doasens = 1 if $ans == 1;
  return 0 unless $doasens;

  $vexpid = query("  Verifying experiment id:", $vexpid);

  if ( $doasens && $hyb_ens > 2 ) {
     ed_aens_replay_acq("asens","atmens_asens.acq");
  }

  return 0;
}

#=======================================================================
sub def_admdims {

  return 0 unless ( $admodel );

  my ( $admres, $mycase ) = @_;

  $iladmlon = 72; $iladmlat = 46;
  $gsadmlon = 72; $gsadmlat = 46;

# Define resolution of trajectory used in inner loop
# --------------------------------------------------
  if ( "$mycase" eq "4dvar" ) {
      if ( "$admres" eq "a"  ) { $iladmlon =    72; $iladmlat =  46 }
      if ( "$admres" eq "b"  ) { $iladmlon =   144; $iladmlat =  91 }
      if ( "$admres" eq "c"  ) { $iladmlon =   288; $iladmlat = 181 }
      if ( "$admres" eq "d"  ) { $iladmlon =   576; $iladmlat = 361 }
      if ( "$admres" eq "e"  ) { $iladmlon =  1152; $iladmlat = 721 }
  }

# Define resolution of trajectory used in inner loop
# --------------------------------------------------
  if ( "$mycase" eq "gsens" ) {
      if ( "$admres" eq "a"  ) { $gsadmlon =    72; $gsadmlat =  46 }
      if ( "$admres" eq "b"  ) { $gsadmlon =   144; $gsadmlat =  91 }
      if ( "$admres" eq "c"  ) { $gsadmlon =   288; $gsadmlat = 181 }
      if ( "$admres" eq "d"  ) { $gsadmlon =   576; $gsadmlat = 361 }
      if ( "$admres" eq "e"  ) { $gsadmlon =  1152; $gsadmlat = 721 }
  }

  return 0;
}

#=======================================================================
sub get_fvhome {

  $cnode = 2;
  $mywork   = "/scratch1";
  $qsub     = "sbatch";  $less = "";
  $jobqueue1 ="";
  $jobqueue2 ="";

  if ( `uname -n` =~ "halem" ) {
        $mywork = "/gmao/das";
        $fvhome = $FVHOME or $fvhome = "$mywork/$user/$expid";
        $qsub = "bsub";  $less = "<";
        $jobqueue1 ="BSUB -q gmao_hi";
        $jobqueue2 ="BSUB -q datamove";

  } elsif ( $siteName eq "cfe" ) {
        $mywork = "/nobackup";
        foreach $cnode ( < /nobackup[1-3][a-d] > ) {
           if (-d "$cnode/$user") {
              $mywork = "$cnode";
              last;
           }
        }
        #--print "Location of working directory on Columbia? [$mywork] ";
        $fvhome = $FVHOME or $fvhome = "$mywork/$user/$expid";
        $jobqueue1 ="#SBATCH --partition=science\@c${cnode}\n"
            .       "#PBS -q science\@c${cnode}";
        $jobqueue2 = $jobqueue1;

  } elsif ( $siteName eq "pfe" ) {
        $mywork = "/nobackup";
        #--print "Location of working directory on Columbia? [$mywork] ";
        $fvhome = $FVHOME or $fvhome = "$mywork/$user/$expid";

  } elsif ( $siteID eq "nccs" ) {
        $mywork = "/discover/nobackup";
        $jobqueue2 = "SBATCH --partition=datamove";
        $fvhome = "/discover/nobackup/$user/$expid";

        if (defined($FVHOME)) {
            $mywork = dirname("$FVHOME");
            $fvhome = $FVHOME;
        }
  } else {
        $fvhome = $FVHOME or $fvhome = "$mywork/$user/$expid";
  }

# By default will use archive to look for files typically handled w/ ACQ extension
# --------------------------------------------------------------------------------
  if ($ENV{ARCHIVE}) {
     $acqloc = "$ENV{ARCHIVE}";
  } else {
     $acqloc = "/archive/u/$user";
  }


  print <<"EOF";

------
FVHOME
------
         This is the HOME directory for your fvDAS experiment.
         Resource files, restarts and system output will be stored
         under this directory. Usually it will contain subdiretories:

         ana/        first guess/analysis output
         daotovs/    daotovs field output
         diag/       diagnostic field output
         etc/        listings and other odds & ends
         fcst/       forecast run directory
         fvInput/    process required inputs
         obs/        post-analysis ODS files
         prog/       prognostic field output
         recycle/    latest restart files
         rs/         restart files
         run/        resource files

         DEFAULT: $fvhome

EOF

  print ">> WARNING << defaulting to pre-defined environment variable,"
  .   " FVHOME = $FVHOME\n\n" if $FVHOME;
  $fvhome = query("FVHOME?", $fvhome);
  return warn ">>> ERROR <<< FVHOME ($fvhome) path must begin with '/'\n"
      unless $fvhome =~ m[^/];

  $basen = basename("$fvhome");
  $diren = dirname("$fvhome");
  if ( "$expid" ne "$basen" ) {
        #-----------------------------------------------------------------------
        # comment out next line; if first guess is wrong, then don't guess again
        #--$FVHOME = "$diren/$basen/$expid";
        #-----------------------------------------------------------------------
        return warn ">>> ERROR <<< FVHOME must end with '$expid'";
  }

  # use temporary value for $fvhome when $checkFLG is set
  #------------------------------------------------------
  if ($checkFLG) {
      $checkID = "checkinput.$$";
      $fvhome =~ s/\/$expid\b/\/$checkID/;
  }
  exit if $stopFLG;

  if ( -d $fvhome ) {
     $ans = query("  The directory $fvhome already exists. Clean it?", "y");
     if ( yes($ans) ) {
          rmtree($fvhome) or
               return warn ">>> ERROR <<< cannot erase directory $fvhome";
          mkpath($fvhome) or
               return warn ">>> ERROR <<< cannot create directory $fvhome";
        }
  }
  else {
     $ans = query("  The directory $fvhome does not exist. Create it now?", "y");
     if ( yes($ans) ) {
          mkpath($fvhome) or
            die ">>> ERROR <<< cannot create directory $fvhome";
#            return warn ">>> ERROR <<< cannot create directory $fvhome";
     }
   }

   $fvhome =~ s|/u/.realmounts||; # for portability across NAS machines

   return 0
}

#=======================================================================
sub get_nodeflg {
  $proc = "";
  # reset default if applicable

  $ans = query(" Processing nodes (1:Westmere, 2:SandyBridge, 3:Ivy Bridge, 4:Haswell, 5:Skylake, 6:Cascase)?", "4");

  if    ($ans == 1) { $nodeflg = "wes";  $ncpus_per_node = 12 }
  elsif ($ans == 2) { $nodeflg = "san";  $ncpus_per_node = 16 }
  elsif ($ans == 3) { $nodeflg = "ivy";  $ncpus_per_node = 20 }
  elsif ($ans == 4) { $nodeflg = "hasw"; $ncpus_per_node = 24 }
  elsif ($ans == 5) { $nodeflg = "sky";  $ncpus_per_node = 36 }
  elsif ($ans == 6) { $nodeflg = "cas";  $ncpus_per_node = 46 }

  # currently not applicable at nccs
  #---------------------------------
  if ($siteID eq "nccs") { return 0 }

  # request specific nodes on pfe?
  #-------------------------------
  if ($siteName eq "pfe") {

      $procflg = ":mpiprocs=$ncpus_per_node$proc";
  }
  return 0
}

#=======================================================================
sub get_times {
  my ($x, $drst, $proc);
  my ($nymdb2, $nhmsb2);

  unless ($fvics eq "later") {
      $drst1 = "$drstloc/$defexp.rst.lcv.${nymdb}_${hhb}z.bin";
      if (-e $drst1) {
          $x = `$fvbin/rst_date $RTOPT $drst1`;
          ($nymdb, $nhmsb) = split /\s+/, $x if $x;
      }
      elsif ($doiau) {
          $drst2 = "$drstloc/$defexp.rst.${nymdb}_${hhb}z.tar";
          die "Error. Cannot find $drst1 or $drst2;" unless -e $drst2;
          $nhmsb = "${hhb}0000";
      }
      else {
          die "Error. Cannot find $drst1;";
      }
  }

  $ndays  = 1;           # this is fixed at 1-day for now
  $nhours = $ndays * $HRS_PER_DAY;
  $nsegs  = 1;
  $fhours21 = 123;       
  $fhours15 =  33;       

  # GEOS-5 GCM MPI decomposition; must be compatible w/ ncpus
  #----------------------------------------------------------
  if ( $hres eq "C" ) {                              #       CPUs
#                                                    #       ----
      if    ($res eq "C48")  { $nx =  4; $ny = 24 }  # (b)    96
      elsif ($res eq "C90")  { $nx =  4; $ny = 24 }  # (c)    96
      elsif ($res eq "C180") { $nx =  8; $ny = 30 }  # (d)   240
      elsif ($res eq "C360") { $nx =  8; $ny = 48 }  # (e)   384
      else                   { $nx = 28; $ny = 48 }  # (f+) 1344
  }
  else {
      if    ($hres eq "a") { $nx =  4; $ny = 12 }    # (a)    48
      elsif ($hres eq "b") { $nx =  4; $ny = 12 }    # (b)    48
      elsif ($hres eq "c") { $nx =  8; $ny = 12 }    # (c)    96
      elsif ($hres eq "d") { $nx = 12; $ny = 20 }    # (d)   240
      elsif ($hres eq "e") { $nx = 12; $ny = 32 }    # (e)   384
      else                 { $nx = 24; $ny = 36 }    # (f+)  864
  }
  $ncpus = $nx * $ny;
  $ncpus_per_node /= 2 if $ncpus_per_node and $hres eq "e";

  if ( $g5gcm ) {
     $jobn  = "g5das";
     $jobf  = "g5fcst";
     $joba  = "g5asens";
     $jobfs = "g5fsens";
     $jobsa = "g5anasa";
  } else {
     $jobn  = "fvdas";
     $jobf  = "fvfcst";
     $joba  = "fvasens";
  }
  $pcp_forced = 0;        # do not use PRECIP forcing data
  if ( $fulldas ) {
        $splite = 1; $splitexe = 1;
        if ( $varcase == 4 ) {
          $asynbkg_min = 60;           # time frequency of background fields (min)
        } else {
          $asynbkg_min = 180;          # time frequency of background fields (min)
        }
  } else {
        $splite = 0; $splitexe = 0;
        $asynbkg_min  = 360;           # time frequency of background fields (min)
  }
  $asynbkg_xhr = int($asynbkg_min/60);
  $asynbkg_xmn = $asynbkg_min - int($asynbkg_xhr*60);
  $asynbkg_xsc = 0;
  $asynbkg_hms = 10000 * $asynbkg_xhr + 100 * $asynbkg_xmn + $asynbkg_xsc;
  $asynbkg_hms = sprintf("%6.6d","$asynbkg_hms");
  #--print "asynbkg_hms = $asynbkg_hms \n";

  # Readjust default ending year-month-day if necessary
  #----------------------------------------------------
  ($nymdb2, $nhmsb2) = tick($nymdb, $nhmsb, 2*$SECS_PER_DAY);
  $nymde = $nymdb2 if $nymdb2 > $nymde;

  print <<"EOF";

----------
TIME RANGE
----------
         The following parameters control the time length of the
         whole experiment, as well as the size of each job segment,
         and the number of CPU\'s to use:

         PARAMETER   DEFAULT     DESCRIPTION
         ---------   -------     ---------------------------------------
         NYMD_end    $nymde    Ending year-month-day
         FHOURS      $fhours21      Length (in hours) of FORECAST run segments
         NSEGS       $nsegs           Number of DAS segments per PBS job
         NX          $nx           Number of PEs in the zonal direction
         NY          $ny           Number of PEs in the meridional direction
         NICKNAME    $jobn       Job nickname (max 5 characters)
         SPLITEXE    $splitexe           Split executable mode
         ASYNFRQ     $asynbkg_hms      Freq of asynoptic background

         NOTE: The actual experiment starting date/time is determined
               by the dynamics restart file.

EOF

 $loop = 0;
 {
     $nymde = query("  Ending year-month-day?", $nymde);
     unless ($nymde =~ /^\s*\d{8}\s*$/) {
         if ($loop++ < 3) {
             warn ">> WARNING << Date must be in yyyymmdd format; Try again;";
             redo;
         } else {
             die ">> ERROR << Date must be in yyyymmdd format;";
         }
     }
 }

  # In IAU mode, set proper endtime for user (6 hour offset)
  #---------------------------------------------------------
  if ($doiau) { ($nymde, $nhmse) = tick($nymde, $nhmsb, 6*$SECS_PER_HR) }
  else        {  $nhmse = query("  Ending hour-min-sec?", $nhmse) }

###  print "  Length of DAS run segments? ";
###  chomp($ans = <STDIN> ); $ans and $ndays = $ans;

  $loop = 0;
  {
      $fhours21 = query("  Length of FORECAST run segments (in hours)?", $fhours21);
      if ($fhours21 % 3 != 0) {
          if ($loop++ < 3) {
              warn ">> WARNING << Number of hours should be a multiple of 3; Try again;";
              redo;
          } else {
              die ">> ERROR << Number of hours should be a multiple of 3;";
          }
      }
  }

  $nsegs = query("  Number of one-day DAS segments per PBS job?", $nsegs);
  $nx = query("  Number of PEs in the zonal direction (NX)?", $nx);
  $ny = query("  Number of PEs in the meridional direction (NY)?", $ny);
  $ncpus = $nx * $ny;

  $jobn = query("  Job nickname?", $jobn);
  $jobn = substr($jobn,0,5);

  if ( $fulldas ) {
      $splite = query("  Run in split executable mode (1=yes;0=no)?", $splite);
      $splitexe = 0 if $splite eq "0";
      $splitexe = 1 if $splite eq "1";
  }

  if ( $ndays < 1 ) {
    warn ">>> ERROR <<< invalid length of job segment";
    return 1;
  }
  if ( $ncpus < 1 ) {
    warn ">>> ERROR <<< invalid number of CPUs";
    return 1;
  }
  if ( $nymde < $nymdb ) {
    warn ">>> ERROR <<< ending date earlier than starting date";
    return 1;
  }
  if ( ($nymdb == $nymde) && ($nhmse < $nhmsb) ) {
    warn ">>> ERROR <<< ending time earlier than starting time";
    return 1;
  }
  if ( $fulldas && $splitexe ) {
      $prompt = "  Frequency of background fields (min)?";
      $asynbkg_min = query($prompt, $asynbkg_min);
      $dtasyn_hrs  = $asynbkg_min / 60 ;

      $asynbkg_xhr = int($asynbkg_min/60);
      $asynbkg_xmn = $asynbkg_min - int($asynbkg_xhr*60);
      $asynbkg_xsc = 0;
      $asynbkg_hms = 10000 * $asynbkg_xhr + 100 * $asynbkg_xmn + $asynbkg_xsc;
      $asynbkg_hms = sprintf("%6.6d","$asynbkg_hms"); #print "asynbkg_hms = $asynbkg_hms \n";
  }

  $pcp_forced = $merra2;   # for now, we attach these two choices (it can be that PCP-forcing will be applied 
                           # for other non-MERRA2-like runs, but not for a while ...

  $beg_date = "$nymdb $nhmsb"  ; # GEOS-5 GCM starting date parameter
  $end_date = "$nymde $nhmse"  ; # GEOS-5 GCM ending   date parameter

#  Define entries for asynoptic setup
#  ----------------------------------
   $obstwindow_min = 360;                           # observations granularity (min; e.g., 6-hr windows)
   $anatime_min    = 360;                           # analysis time (from start of forecast)
   $anatwindow_min = $varwindow;                    # time interval between consecutive analyses (minutes)

   $anatime_hrs    = $anatime_min    / 60;
   $obstwindow_hrs = $obstwindow_min / 60;
   $anatwindow_hrs = $anatwindow_min / 60;           # time interval between consecutive analyses (hours)
   $aoffset_min    = $varoffset; $aoffset_hrs = $aoffset_min / 60; $aoffset_sec = $aoffset_min * 60;

   if ( $varcase <= 2 ) {
     $ndys             = int ( ( 2 * $anatwindow_hrs ) / 24 );
     $anatwindown_nhms =       ( 2 * $anatwindow_hrs   - 24 * $ndys ) * 10000;
     $do4dvar          = 0;
   } elsif ( $varcase == 3 ) {
     $ndys             = int ( ($anatwindow_hrs + $aoffset_hrs) / 24);
     $anatwindown_nhms =      ( $anatwindow_hrs + $aoffset_hrs  - 24 * $ndys ) * 10000;
     $do4dvar          = 0;
   } else {
     $ndys             = int ( $anatwindow_hrs / 24 );
     $anatwindown_nhms =     ( $anatwindow_hrs - 24 * $ndys ) * 10000 + ($dt/60)*100; # need one extra dt integration
     $do4dvar          = 1;
   }
   $job_sgmt = "$ndys $anatwindown_nhms";


   if ( $aoffset_hrs == 0 ) {
        $bkgbits0      = $anatime_hrs    - $obstwindow_hrs / 2;
        $bkgbitsf      = $anatwindow_hrs + $obstwindow_hrs / 2;
   } else {
        $bkgbits0      = $anatime_hrs    - $aoffset_hrs;
        $bkgbitsf      = $anatwindow_hrs + $aoffset_hrs;
   }
   $bkgbits0_sec = $bkgbits0 * 3600;

   return 0 ;
}

#=======================================================================
sub set_radcor {
    my(@radval,$val);
    my($rnum,$num,$ans);

    return 0 unless ( $anagsi );

    @radval = undef;
    $radval[0] = "NONE";
    $radval[1] = "NCEP";
    $radval[2] = "NCEP_VAI";
    $radval[3] = "HAIMB_HRAD";
    $radval[4] = "HAIMB";

    # set $rnum default
    #------------------
    $radcor = "NONE";
    if ($obClass =~ "merra_upa_pre-qc_bufr"  || $obClass =~ "merra_cdas_pre-qc_bufr"  ||
        $obClass =~ "merra2_cdas0_pre-qc_bufr" ||
        $obClass =~ "merra2_upa_pre-qc_bufr" || $obClass =~ "merra2_cdas_pre-qc_bufr" ) { $radcor = "HAIMB_HRAD" };

    # query user for radcor choice
    #-----------------------------
    print << "EOF";

--------------
RADCOR SETTING
--------------
         Choose from among the following RADCOR options:

         VALUE         DESCRIPTION
         -----         -----------
         NONE          neither NCEP nor Haimberger-hradcor
         NCEP          standard NCEP (correct type 52, CORUSVAI~F)
         NCEP_VAI      NCEP radcor but do not correct type 52 CORUSVAI~T
         HAIMB_HRAD    Apply both Haimberger homogenization and 'hradcor'
         HAIMB         No NCEP RADCOR, apply Haimberger homogenization
                          but do not apply 'hradcor' correction.

EOF

    $radcor = uc query("  Which RADCOR option?", $radcor);
    foreach $val ( @radval ) {
        if ($val eq $radcor) { return 0 };
    }
    print "\n\nNon-valid selection [$radcor] -- Try again.\n\n";
    return 1;
}

#=======================================================================
sub set_rcov {
    my($dflt, $ans);

    $doRcorr = 0;
    $dflt = "y";
    $ans = query("  Use sat channel-correlated observation errors (y/n)?", $dflt);
    $doRcorr = 1 if yes($ans);

    return 0;
}
#=======================================================================
sub set_acftbias {
    my($dflt, $ans);

    $dflt = "y";
    $acftbias = 2;

    $ans = query("  Use aircraft bias correction (y/n)?", $dflt);
    $acftbias = 0 if neg($ans);
    $acftbias = 1 if $acftbias and $merra2;

    return 0;
}

#=======================================================================
sub set_newradbc {
    my($dflt, $ans);

    if ($merra2) { $dflt = "n" }
    else         { $dflt = "y" }

    $newradbc = 0;
    $ans = query("  Use unified radiance bias correction (y/n)?", $dflt);
    $newradbc = 1 if yes($ans);

    return 0;
}
#=======================================================================
sub set_ldasANA {

    # initialize Land DAS processing flag
    #------------------------------------ 
    my($dflt, $ans1, $ans2, $ans3, $ans4);
    $ldas_ana = 0;
    $ldasfdbk = 0;
    $ldas_flag = 0;
    $dflt = "n";
    $ldashome = "NULL" ;
    $ldashome4ens = "NULL" ;

    print "\n-------------\n";
    print   "LDAS Analysis\n";
    print   "-------------\n\n";

    $ans1 = query("  Land DAS Analysis (y/n)?", $dflt) ;
    $ldas_ana = 1 if yes($ans1);

   if ($ldas_ana == 1) {
      $ans2 = query("  Enable LDAS feedback to model y/n ? ", $dflt);
      $ldasfdbk = 1 if yes($ans2);

      if ($ldasfdbk == 1 ) {
          $ldas_flag = 1;
      }

      $ans3 = query("LDAS HOME = ${fvhome}_LDAS , full path? ", $ldashome);
      $ldashome = $ans3 ;

      $ans4 = query("LDAS HOME for land ensemble = ${fvhome}_LDAS/run/atmens, full path? ", $ldashome4ens);
      $ldashome4ens = $ans4 ;

   } 
return 0;
}

#=======================================================================
sub get_setgsi {

  return 0 unless ( $anagsi );  # this is GSI-specific

  $siglevs = "72";
  $gsihgrd = "NA";
  $analat  = "$ana_jm";
  $analon  = "$ana_im";
  $anaexec = "GSIsa.x";
  $hybrid  = ".false.";
  $hyb_ens = -1;
  if ($merra2) { $nosfcana  = 0 } # will apply similarity to produce xana.sfc
  else         { $nosfcana  = 1 } # will not generation xana.sfc

  # GEOS-5 GSI MPI decomposition; must be compatible w/ ncpus                 CPUs
  #----------------------------------------------------------                 ----
  if    ($hres eq "a")                   { $nxgsi =  4; $nygsi =  8 }  # (a)   32
  elsif ($hres eq "b" or $res eq "C48")  { $nxgsi =  4; $nygsi = 12 }  # (b)   48
  elsif ($hres eq "c" or $res eq "C90")  { $nxgsi =  4; $nygsi = 12 }  # (c)   48
  elsif ($hres eq "d" or $res eq "C180") { $nxgsi =  6; $nygsi = 32 }  # (d)  192
  elsif ($hres eq "e" or $res eq "C360") { $nxgsi = 12; $nygsi = 20 }  # (e)  240
  else                                   { $nxgsi = 16; $nygsi = 42 }  # (f+) 672

  $ncpus_gsi = $nxgsi * $nygsi;

print <<"EOF";

------------
GSI SETTINGS
------------
         The following parameters are GSI specific settings.

         PARAMETER   DEFAULT     DESCRIPTION
         ---------   -------     ---------------------------------------
         SPECRES     $specres          Spectral truncation
         SIGLEVS     $siglevs          Analysis sigma levels
         GSIGRDS     $gsihgrd          GSI horizontal grid
         GEOSGRD     $anahgrd           GEOS-5 native grid resolution (a,b,c,d,e)
         EnsHybrid   $hyb_ens           Specify ens hybrid option (-1=3dvar/4dvar;3=3d-Hyb;4=Hyb-4dEnVar)
         NX          $nxgsi           number of pes in the zonal direction
         NY          $nygsi           number of pes in the meridional direction

EOF

  $specres = query("  Triangular spectral truncation?", $specres);
  $siglevs = query("  Analysis vertical levels (sig))?", $siglevs);
  $gsihgrd = query("  GSI grid resolution?", $gsihgrd);

  if ( $gsihgrd ne "NA" ) {

       $gsires = "l${siglevs}y${gsihgrd}";

       if ( $gsires ne "l28y96"  &&
            $gsires ne "l32y96"  &&
            $gsires ne "l64y96"  &&
            $gsires ne "l72y96"  &&
            $gsires ne "l42y192" &&
            $gsires ne "l64y192" &&
            $gsires ne "l64y258" &&
            $gsires ne "l72y258" &&
            $gsires ne "l72y386" ) {
            warn ">>> ERROR <<< invalid resolution: ${gsires}";
            return 1;
       }

  } else {

       $anahgrd = query("  GEOS grid resolution instead?", $anahgrd);

       if ( $anahgrd eq "a"  ) { $analon =   72; $analat =  46 }
       if ( $anahgrd eq "b"  ) { $analon =  144; $analat =  91 }
       if ( $anahgrd eq "c"  ) { $analon =  288; $analat = 181 }
       if ( $anahgrd eq "d"  ) { $analon =  576; $analat = 361 } 
       if ( $anahgrd eq "e"  ) { $analon = 1152; $analat = 721 }

       $gsires  = "l${siglevs}_${analon}x${analat}";
       $gsihgrd = $analat;

       if ( $merra2 ) {
          $berror_file = "\$FVHOME/fvInput/gsi/etc/berror_gmao/gmao24Jun2011_fp+oz_fix/MERRA2/Final";
          $berror_env  = "setenv BERROR  $berror_file";
       }
       if ( $geosit ) {
       #  $berror_file = "\$FVHOME/fvInput/gsi/etc/berror_gmao/gmao24Jun2011_fp+oz_fix/MERRA2/Final";
       #  $berror_env  = "setenv BERROR  $berror_file";
          $berror_env  = "# Likely need to point to new BERROR for GEOSIT (adjust fvsetup)";
       }
  }
  if ( $siglevs == 72 || $siglevs == 91 || $siglevs == 132 || $siglevs == 137 || $siglevs == 181 ) { $hybrid  = ".true." };

  $ans = query("  Ensemble Hybrid (<0;3=3dHyb;4=Hyb4d)?", $hyb_ens);
  if ($ans > 0) {$hyb_ens = $ans};

  $cnt = 1;
  $nxDEF = $nxgsi;
  $nyDEF = $nygsi;

  while (1) {
      $nxgsi = query("  Number of procs in the zonal direction (NX)?", $nxDEF);
      $nygsi = query("  Number of procs in the meridional direction (NY)?", $nyDEF);
      $ncpus_gsi = $nxgsi * $nygsi;
      last if $ncpus_gsi <= $ncpus;

      print "\n  >>> WARNING <<<"
          . "\n  GSI CPUs ($ncpus_gsi) exceeds total number of CPUs ($ncpus)\n";
      die ">>> ERROR <<< too many unsuccessful attempts;" if ++$cnt > 3;
      print "  Try again.\n\n";
  }

  $do4diau = 0;
  if ( $hyb_ens == 4 ) {
     $do4diau = 1;
  }
  if ( $varcase == 4 || $hyb_ens == 4 ) {
     $varobsbin = $asynbkg_min;
  }

  return 0 ;

}

#=======================================================================
sub set_atmens {
  my ($radbc, $src_arcdir, $prompt, $dflt);
  my ( $radbc ) = @_;

  if ( $hyb_ens < 3 ){ return 0 };
 
# defaults (here for now)
# -----------------------
  $aens_replay = "yes";
  $aens_sppt = "yes";
  $aens_res =  "C90";
  $aens_lev =  "72";
  $aens_ana = "enkf";

  print <<EOF;

        -----------------------------------------------------
         fvSETUP - You are about to setup GEOS Hybrid EnADAS
        -----------------------------------------------------

         Default options:

            Replay Ensemble:  $aens_replay
            SPPT for Ensemble:  $aens_sppt
            Resolution:  $aens_res
            Levels:  $aens_lev

EOF

  $aens_replay = query("  Replayed Ensemble? ", $aens_replay);
  if ( $aens_replay eq "yes"   ) {
     ed_aens_das_replay_acq("run");
     return 0;
  }
  $aens_sppt = query("  Use SPPT-scheme for Ensemble? ", $aens_sppt);
  if ( $aens_sppt eq "no" ) {
     $sppt_flag = "-nosppt";
  } else {
     $sppt_flag = "";
  }
  $aens_res = query("  Ensemble Resolution? ", $aens_res);

  if ( $aens_res eq "a"   ) { $aens_im =   72; $aens_jm =   46; $aens_ocn = "f" };
  if ( $aens_res eq "b"   ) { $aens_im =  144; $aens_jm =   91; $aens_ocn = "f" };
  if ( $aens_res eq "c"   ) { $aens_im =  288; $aens_jm =  181; $aens_ocn = "f" };
  if ( $aens_res eq "d"   ) { $aens_im =  576; $aens_jm =  361; $aens_ocn = "f" };
  if ( $aens_res eq "e"   ) { $aens_im = 1152; $aens_jm =  721; $aens_ocn = "f" };
  if ( $aens_res eq "C48" ) { $aens_im =   48; $aens_jm =  288; $aens_ocn = "C" };
  if ( $aens_res eq "C90" ) { $aens_im =   90; $aens_jm =  540; $aens_ocn = "C" };
  if ( $aens_res eq "C180") { $aens_im =  180; $aens_jm = 1080; $aens_ocn = "C" };
  if ( $aens_res eq "C360") { $aens_im =  360; $aens_jm = 2160; $aens_ocn = "C" };

  if ( $newradbc ) {
     $setradbc = "-radbc"; chomp($setrabc);
  } else {
     $setradbc = "";
  }
  if ( $acftbias ) {
     $setacftbc = "-acftbc $acftbias"; chomp($setacftbc);
  } else {
     $setacftbc = "";
  }
  if ( $doRcorr ) {
     $rcorrarg = "-rcorr";
  } else {
     $rcorrarg = "";
  }
  
 if ($aens_res eq "C360") {
    $aensupa = "Bkg.eta";
 }
  
 $aens_lsmodel = "";
  if ( $lsmodel_flag == 2 ) {
       $aens_lsmodel = "-lsmcm";
  }

  $aens_lev = query("  Ensemble Vertical Levels? ", $aens_lev);

# If so, setup EnADAS 
# -------------------
  $flags = "-nlevs $aens_lev $setacftbc $rcorrarg $setradbc $aens_lsmodel -expdir $fvhome/.. $sppt_flag";
  $flags .= " -fvhome $fvhome" if $checkFLG;
  $params = " $aens_ana $expid $aens_im $aens_jm $aens_ocn $landbcs"; 

  $cmd = "$fvbin/setup_atmens.pl -nodename $nodeflg $flags $params";
  print "$cmd\n";
  system($cmd);

# Edit atm_ens.j script
# ---------------------
  $replace{">>>GID<<<"} = $gid;
  $replace{">>>NODEFLG<<<"} = $nodeflg;
  $replace{">>>EXPID<<<"} = $expid;
  $replace{">>>JOBNJ<<<"} = "$jobn.j";
  $replace{">>>FVHOME<<<"} = "$fvhome";
  $replace{">>>LDAS_ANA<<<"} = $ldas_ana;
  $replace{">>>LDHOME4ENS<<<"} = "$ldashome4ens";
  $replace{">>>NCPUS_PER_NODE<<<"} = "$ncpus_per_node";

  $atm_ens_j = "$fvhome/run/atm_ens.j";
  $atm_ens_j_tilde = "${atm_ens_j}~";
  rename($atm_ens_j, $atm_ens_j_tilde);
      
  open(TILDE, "< $atm_ens_j_tilde") or die "Error opening $atm_ens_j_tilde;";
  open(JSCRPT, "> $atm_ens_j") or die "Error opening $atm_ens_j;";
  foreach $line (<TILDE>) {
      foreach $strvar (keys %replace) { $line =~ s/$strvar/$replace{$strvar}/g }
      print JSCRPT $line;
  }
  close TILDE;
  close JSCRPT;

# Copy and rename ensemble restarts
# ---------------------------------
  $dflt = "/archive/u/$user/$expid";
  $prompt = "  Experiment archive directory for ensemble restarts or 'later':";
  $src_arcdir = query($prompt, $dflt);
  if (-d $src_arcdir) {
      $flags = "-fvhome $fvhome";
      $cmd = "get_atmens_rst.pl $flags $src_arcdir $expid $nymdb $hhb";
      print("$cmd\n");
      system($cmd);
  }
}

#=======================================================================
sub get_varwindow {

  unless ( $fulldas ) { ;      # no analysis in GCM mode, but set these anyway
      $varwindow = 360       ; # Default is 360-min (window of assimilation)
      $nhmse     = "180000  "; # Default ending time
      return 0;
  }

  if( $anapsas ) {
      $varwindow = 180       ; # Default is 3-hr invokation of fvana
      $nhmse     = "210000  "; # Default ending time
  }
  if( $anassi || $anagsi  ) {
      $varwindow = 360       ; # Default is 6-hr invokation of fvana
      $nhmse     = "180000  "; # Default ending time
  }
  $varcase   = 1;  $doiau = 1; # Default is IAU
  $varoffset = 180;            # Default (min) is 3-hr offset from analysis
  $gcmibc    = 0;              # Default is to run w/o Incremental Bias Correction
  $nvarouter = 1;              # Default number of var loops
  $wcnstrt   = 0;              # Detault weak constraint option
  $varobsbin = 360;            # Default observation bin interval (default is 3dvar)
  $do4dtlm   = 0;              # Default: do not integrate TLM after var
  $g4res     = "z";            # Default: unknown resolution for perturbation model

  print <<"EOF";

-------------------------
Analysis Update Frequency
-------------------------

         PARAMETER   DEFAULT     DESCRIPTION
         ---------   -------     -------------------------------------------------------
         varcase     $varcase           1=IAU (default); 2=IAU w/ IBC; 3=no IAU; 4=4d-var; 5=FGAT
         varwindow   $varwindow         Variational assimilation time window (min)
         varoffset   $varoffset         Offset from beginning of analysis time (min)

EOF

  $varcase = query("  Which case of variational analysis?", $varcase);

  if ( $varcase == 2 ) { $gcmibc    = 1        ; $doiau = 1 };
  if ( $varcase == 3 ) { $varoffset = 0        ; $doiau = 0 };
  if ( $varcase >= 4 ) {
        $dasdriver = "g54dvar"; $doiau = 0;
        $nvarouter = 1;          # Number of var loops; Reset default for 4dvar/fgat
        if ( $varcase == 4 ) {   # 4dvar
             $wcnstrt   = 1;     # There is no real weak constraint 4dvar yet
        } elsif ( $varcase == 5 ) { # This is the FGAT casase == 5
             $wcnstrt   = 1;     # In FGAT, the weak-constraint opt "mimics" IAU
        } else {
            warn ">>> ERROR <<< invalid var option ";
            return 1;
        }
        $nvarouter = query("  Number of iterations in outer loop?", $nvarouter);
        $varobsbin = query("  Obervation bin interval (hrs)?", $varobsbin);

        if($varcase == 4) {
           $do4dtlm = 0;              # not yet ready
           $g4res   = "b";            # Default: 144x91
           $g4res = query("  Resolution of inner loop?", $g4res);
           def_admdims("$g4res","4dvar");
        }
  }

  $varwindow = query("  Window of the variational analysis (min)?", $varwindow);
  $varwindow =~ s/ //g;   $nhmse =~ s/ //g;
  if ( $varwindow < 1 ) {
    warn ">>> ERROR <<< invalid time window (must be >= 1)";
    return 1;
  }

  if ( $varcase > 2 ) {
      $prompt = "  Offset time from analysis time within var window (min)?";
      $varoffset = query($prompt, $varoffset);
  }

  $nhms_varwindow = int($varwindow/60) * 10000 + ($varwindow % 60) * 100;
  if ( $varwindow != 360 ) {
     $nhmse  = 240000 - $nhms_varwindow;  # reset end time
  } else {                                # user may have redefined this:
     $nhmse  = 180000;                    # make sure equals 18Z when varwindow=6hr
  }

  return 0 ;
}

#=======================================================================
sub get_obsys {
  my(@a, @b, @c, $oclass, $clsfile);

  return 0 unless ( $fulldas );  # no observations in GCM mode

# Get class list first
# --------------------
  print("\n------------------------\n");
  print("OBSERVING SYSTEM CLASSES\n");
  print("------------------------\n");

  $dflt = 1;
  if ( $merra2 ) { $dflt = 3; }
  if ( $geosit ) { $dflt = 4; }
  if ( $r21c   ) { $dflt = 5; }

  $ans = query("Which main class of ObsSys (1: NRT; 2: MERRA; 3: MERRA-2; 4: GEOS-IT; 5: R21C)?", $dflt);
  return 1 unless $ans == 1 or $ans == 2 or $ans == 3 or $ans == 4 or $ans == 5;

  if ($GFLAG == 1) { $loc = "nccs" }
  else             { $loc = "nas"  }

  $obsysrc = "$fvetc/obsys-${loc}.rc";
  $obsysGrc = "$fvetc/obsys-${loc}-gaas.rc";

  $nrt = 0;
  $rflags = "";

  if ($ans == 1) {     # NRT
      $nrt = 1;
      $rflags .= " -butstem -stem merra";
  }
  elsif ($ans == 2) {  # MERRA-1
      $rflags .= " -stem merra";
  }
  elsif ($ans == 3) {  # MERRA-2
      $obsysrc = "$fvetc/obsys-${loc}-merra2.rc";
      $rflags .= " -stem merra2";
  }
  elsif ($ans == 4) {  # GEOS-IT
      $obsysrc = "$fvetc/obsys-${loc}-geosit.rc";
#     $rflags .= " -stem geosit";
  }
  elsif ($ans == 5) {  # R21C
      $obsysrc = "$fvetc/obsys-${loc}-r21c.rc";
#     $rflags .= " -stem r21c";
  }

  $reqobs = $fvbin . "/require_obsys.pl";
  $cmd = "$reqobs -drc $obsysrc -class_desc $rflags ";
  $rc = system($cmd);
  return 1 if $rc;

# Initialization run to check the default obsclass
# ------------------------------------------------
  unless($get_obsys_flag) {
    $get_obsys_flag = 1;
    $ihh = 6;
    ($nsteps, $x) = DateList($nymdb*100, $nymde*100, $ihh);
    $ihh = "060000";

# initial set up of obsclass $obsclass
# ------------------------------------
# Save class_desc to a file $HOME/#_o_class
    $clsfile = $ENV{HOME} ."/#_o_class";
    $cmd = "$reqobs -drc $obsysrc -class_desc $rflags > $clsfile";
    $rc = system($cmd);
    $obsclass = rd_class($clsfile);
    @a = split(/,/, $obsclass);

# to soft_check obs observation files
#------------------------------------
    @c = ();
    foreach $oclass (@a) {
        $out = `$reqobs -q -drc $obsysrc $rflags $nymdb 000000 $ihh $nsteps $oclass`;
        unless ( $out =~ /\-E/ ) { push @c, $oclass };  # $a[1] is the className
    }
    $obsclass = join(",",@c);
    $obsclass = excl($obsclass);

    if ($nymdb and $hhb) {
        $cmd = "$fvbin/obsclass_filter.pl -rc $obsysrc $obsclass $nymdb $hhb 24";
        print "\$obsclass = `$cmd`\n";
        $obsclass = `$cmd`;
    }
  }

# Regular run
# -----------
  print("\n  DEFAULT: $obsclass\n\n");
  $ans = query("OBSERVING SYSTEM CLASSES?");
  $obsclass = $ans unless blank($ans);
  $obsclass =~ s/\s//g;
  $fvANS2[-1] = $obsclass;  # update @fvANS2 since default response not sent to query()

  if(length($obsclass) <= 1) {
    print("Please type in obclass names...\n");
    $get_obsys_flag = 0;
    $obsclass = "";
    return 1;
  }
  if ( $obsclass =~ "pre-qc" ) { $prepqc = 1 };

  if ($fvics ne "later") { # to check obs observation files
    print <<EOF;

-----------------
CHECKING OBSYSTEM
-----------------

     1   will not check the existence of requested observing files
     2   will check the given time period and classes within the observing
           database resource file definition (DEFAULT)
     3   will physically check the existence of specified data from mass storage

EOF
    $check = 2;
    $check = query("CHECKING OBSYSTEM?", $check);

    $check = 2 if $check < 1 or $check > 3;
    $hchk = "";

# for soft_check (check = 2) & hard_check (check = 3)
# ---------------------------------------------------
    if( $check != 1 ) {
        if($check == 2) { print("Soft checking observing system files...\n") };
        if($check == 3) {
            $hchk = "-hard_check";
            print("Soft checking observing system files...\n");
        }
        if ($fvics ne "later") {
            $drst1 = "$drstloc/$defexp.rst.lcv.${nymdb}_${hhb}z.bin";
            if (-e $drst1) {
                $datestring = `$fvbin/rst_date $RTOPT $drst1`;
                ($ymdb, $hmsb) = split(" ", $datestring);
            }
            elsif ($doiau) {
                $drst2 = "$drstloc/$defexp.rst.${nymdb}_${hhb}z.tar";
                die "Error. Cannot find $drst1 or $drst2;" unless -e $drst2;
                ($ymdb, $hmsb) = ($nymdb, "${hhb}0000");
            }
            else {
                die "Error. Cannot find $drst1;";
            }
        }
        else { ($ymdb, $hmsb) = ($nymdb, $nhmsb) }

        $ihh = 6;
        ($nsteps, $datestring) = DateList($ymdb*100, $nymde*100, $ihh);
        $ihh = "060000";

        $cmd1 = "$reqobs -q $hchk -drc $obsysrc $rflags $ymdb 000000 $ihh $nsteps $obsclass";
        print "$cmd1\n";
        $out = `$cmd1`;

        if( $out =~ /\-E/ ) {   #failed
            print("$out\n");
            @a = split(/\'/, $out);   #$a[1] is the className
            $errclass = $a[1];

            @c = ();
            @b = split(/,/, $obsclass);
            foreach $oclass ( @b ) {
                if($oclass ne $errclass) { push @c, $oclass };
            }
            $obsclass = join(",", @c);
            return 1;
        }
    }
  }
  $obClass = "$obsclass";
  return 0 ;
}

#=======================================================================
# rd_class: a subroutine to read out (return) obclasses
#   from obclass data description file created by fvsetup
#=======================================================================
sub rd_class {
    my ($fname) = @_;
    my ($rcd, $class, $n);

    # default class
    #--------------
    #--$class1 = "conv_tovs,tovs_l1c,ers2,qscat,ssmi_wentz_tpw,upabufr,gads,tmodis_llk";
    $class = "ncep_osbuv,ncep_spssmi,ncep_sptrmm,ncep_1bamua,ncep_1bamub,".
        "ncep_1bhrs2,ncep_1bhrs3,ncep_1bmsu,ncep_prep,gmao_airs,ncep_tcvitals";
    $n = open(LUN, "$fname");
    unless($n) {   #if open failed set class as the default
        print("Default obs classes...\n");
        return($class);
    }
    $n = 0;  $class = "";
    while( defined($rcd = <LUN>) ) {
        chomp($rcd);
        if($n == 1 && length($rcd) > 3) {  #obclass begin and not empty
            $rcd =~ s/^\s+|\s+$//g;
            @a = split(/\s+/, $rcd);
            #--print("$a[0]\n");
            $class = $class . ",$a[0]";
        }
        if($rcd =~ /------/) { $n = 1; }   #Set $n=1 if the line found
    }
    close(LUN)|| die "Couldn't close file: $fname $!\n";
    $class =~ s/^,//g;    #remove leading ,
    `rm $fname`;
    return($class);
}

#=======================================================================
# A subroutine to exclude classes from a given class string.
# For given "first look", "data", and "late look" classes this
# subroutine will set the "late look" as the only class from
# the above three classes.
# 2003.10.29 E. Yeh     1st update
#=======================================================================
sub excl{
    my($string) = @_;   #input classes cl1,cl2,llk,flk,cl5,data,...
    my(@org,@one,@ob1,@ob2,@ob3,@ob4,@ob5,@ob6,@ob7,@ob8);
    my(@classlist,$cls,$n,$i,$class,@newlist,$new);

    # Define Classes for selection
    #-----------------------------
    @ob1 = qw(conv_llk conv_val conv_flk);  # will select a class from the list
    @ob2 = qw(tov1c_llk tovs_L1C tov1c_val tov1c_flk);  # select a class from the list
    @ob3 = qw(ssmi_tpw_llk ssmi_tpw_v5_v4 ssmi_tpw_v4 ssmi_tpw_flk);
    @ob4 = qw(ssmi_speed_llk ssmi_speed_v5_v4 ssmi_speed_flk);
    @ob5 = qw(qscat_llk qscat_jpl);
    @ob6 = qw(ozone_llk_02 ozone_flk_02 ozone_flk_01);
    @ob7 = qw(upabufr_llk upabufr_val);
    @ob8 = qw(gads_llk gads_val);
    @classlist = qw(ob1 ob2 ob3 ob4 ob5 ob6 ob7 ob8);

    # Go through the array @classlist
    #--------------------------------
    @org = split(/,/, $string);    @newlist = ();
    $n = scalar(@org);             if($n <= 1) { return($string) };
    foreach $cls (@classlist) {    # check @classlist one by one
        @one = eval ('@' . $cls);    $n = scalar(@one);
        if ($n == 4) {

            # Select one from 4 elements class array
            #---------------------------------------
            if ($string =~ /$one[0]/) {     # Save
                foreach $class (@org) {
                    if(!($class =~ /$one[1]/) && !($class =~ /$one[2]/)
                       && !($class =~ /$one[3]/)) {
                        push(@newlist, $class);
                    }
                }
            } elsif($string =~ /$one[1]/) {  # Save
                foreach $class (@org) {
                    if(!($class =~ /$one[2]/) && !($class =~ /$one[3]/)) {
                        push(@newlist, $class);
                    }
                }
            } elsif($string =~ /$one[2]/) {   # Save
                foreach $class (@org) {
                    if(!($class =~ /$one[3]/)) { push(@newlist, $class); }
                }
            } else{@newlist = @org;}     # Save all classes
        } elsif($n == 3) {

            # Select one from 3 elements class array
            #---------------------------------------
            if ($string =~ /$one[0]/) {     # Save only the late look
                foreach $class (@org) {
                    if(!($class =~ /$one[1]/) && !($class =~ /$one[2]/)) {
                        push(@newlist, $class);
                    }
                }
            } elsif($string =~ /$one[1]/) { # Save value
                foreach $class (@org) {
                    if(!($class =~ /$one[2]/)) { push(@newlist, $class); }
                }
            } else { @newlist = @org; }     # Save all classes
        } elsif($n == 2) {

            # Select one from 2 elements class array
            #---------------------------------------
            if ($string =~ /$one[0]/) {     # Save
                foreach $class (@org) {
                    if(!($class =~ /$one[1]/)) { push(@newlist, $class); }
                }
            } else { @newlist = @org; }     # Save all classes
        } # end of if ($n == 4)

        # end of if ($n == 4)
        #--------------------
        $n = scalar(@newlist);   $new = $newlist[0];
        for ($i=1; $i<$n; $i++) { $new .= ",$newlist[$i]"; }
        $string = $new;    @org = @newlist;    @newlist = ();
    }     # end of foreach $cls (@classlist)

    return($new);
}

#=======================================================================
sub DateList {
    my($bymdh, $eymdh, $hinc) = @_;
    my(@mday,$ymdh,$ymdh1,$bhms,$y4,$m2,$d2,$nstep);

    @mday=(31,28,31,30,31,30,31,31,30,31,30,31);
    $nstep = 1;
    $ymdh1=$bymdh;
    $y4=substr($ymdh1,0,4);  $m2=substr($ymdh1,4,2);  $d2=substr($ymdh1,6,2);
    $bhms = substr($ymdh1,8,2);
    if(($y4%4 == 0 && $y4%100 != 0) || $y4%400==0 ) { $mday[1] = 29 }
    do {
        $bhms += $hinc;   #in HH format
        while($bhms >= 24 ) {
            $bhms -= 24;
            $d2++;
            if($d2>$mday[$m2-1]) {$d2 -= $mday[$m2-1];  $m2++}
            if($m2>12) {
                $m2 -= 12;
                $y4++;
                if(($y4%4 == 0 && $y4%100 != 0) || $y4%400==0 ) {$mday[1] = 29 }
                else { $mday[1] = 28; }
            }
        }  #End of while($bhms >= 24 )
        $ymdh = $y4 . sprintf("%02d",$m2) . sprintf("%02d",$d2). sprintf("%02d",$bhms);
        if($ymdh > $eymdh) { return($nstep, $ymdh1) }   #beyond eymdh
        $nstep++;
        $ymdh1 .= ",".$ymdh;
    } until ($eymdh <= $ymdh);
    return($nstep, $ymdh1);
}

#=======================================================================
sub get_forecast {

  $fcstbeg = "   0    ";
  $fcstfrq = "   0    ";
  $fcsthrs = "  12    ";
  $frstage = "/dev/null";

  # do not bother in GCM mode
  #--------------------------
  unless ( $fulldas ) {
      $fcsthrs = -1;
      return 0;
  }

  print <<"EOF";

-----------
FORECASTING
-----------
         The following parameters control the writing of initial
         conditions (a.k.a. restart files) for subsequent production
         of forecasting runs.

         PARAMETER   DEFAULT     DESCRIPTION
         ---------   -------     -----------------------------------------
         FCST_frq    $fcstfrq    frequency in days to write restarts;
                                  "0" means never
         FCST_beg    $fcstbeg    date (YYYYMMDD) to begin writing restarts;
                                  "0" means beginning of run
         FCST_hrs    $fcsthrs    array of integers up to 24 numbers;
                                 Example: 0,6,12,18 will write restarts
                                 at 0z, 6z, 12z, and 18z of any selected day.
                                 "-1" means do not write restarts

         You can also choose to have the forecast restart files staged to:

                        $fvhome/fcst

         in additions to their regular archival to mass storage.

EOF

  $fcstfrq =~ s/^\s+|\s+$//g; # remove leading and trailing blanks
  $fcstfrq = query("  Frequency (in days) for writing restarts?", $fcstfrq);

  if ( $fcstfrq < 0 ) {
    $fcsthrs = -1;
    warn ">>> ERROR <<< invalid frequency";
    return 1;
  }

  if ( $fcstfrq < 1 ) {

     $frstage = "/dev/null";

  } else {

      $fcstbeg = query("  Date to begin writing forecasts?", $fcstbeg);
      if ( $g5gcm ) {
          $prompt = "  Forecast hours (2-digit hours, e.g., 00 12 09)?";
          $fcsthrs = query($prompt, $fcsthrs);
      } else {
          $fcsthrs = query("  Forecast hours (comma delimited)?", $fcsthrs);
      }

      $ans = query("  Would you like the forecast restart files staged?", "y");
      if ( yes($ans) ) { $frstage = "$fvhome/fcst"; }
      else             { $frstage = "/dev/null";    }

  }

  $fcsthrs = -1 unless ( $g5gcm and $fcstfrq );
  return 0 ;

}

#=======================================================================
sub get_output {
  my (%emission, %remission, $dflt, $ans);

  $ndout = $asynbkg_hms;
  $ngout = "030000";
  if( $fulldas && $varwindow != 360 ) {
        $ngout = "030000";
  }
  $ngout2d = "010000";
  $convsfc = 1;
  $convupa = 1;
  $im_out  = $hist_im;
  $jm_out  = $hist_jm;

  print <<"EOF";

------------
FVGCM OUTPUT
------------

         The FVGCM model can produce output of PROGNOSTIC fields
         (instantaneous) and DIAGNOSTIC fields (average):

         PARAMETER   DEFAULT    DESCRIPTION
         ---------   -------    -----------------------------------------------
         NDOUT       $ndout     Freq (HHMMSS) to output PROGNOSTIC fields
         NGOUT2D     $ngout2d     Freq (HHMMSS) to output (2D) DIAGNOSTIC fields
         NGOUT       $ngout     Freq (HHMMSS) to output (3D) DIAGNOSTIC fields
         IM          $im_out        Dimension of output in zonal direction
         JM          $jm_out         Dimension of output in meridional direction

EOF

  $ndout = query("  Frequency for PROGNOSTIC fields?", $ndout);
  $ndout >= 0 || return warn ">>> ERROR <<< invalid frequency";

  $ngout2d = query("  Frequency for surface (2D) DIAGNOSTIC fields?", $ngout2d);
  $ngout2d >= 0 || return warn ">>> ERROR <<< invalid frequency";

  $ngout = query("  Frequency for upper air (3D) DIAGNOSTIC fields?", $ngout);
  $ngout >= 0 || return warn ">>> ERROR <<< invalid frequency";

  $im_out = query("  Dimension of output in zonal direction?", $im_out);
  $jm_out = query("  Dimension of output in meridional direction?", $jm_out);

  print <<"EOF";

  ------------------
  DIAGNOSTICS OUTPUT
  ------------------
           You can also control the output of individual quantities
           by editing file: "diag.rc" in GEOS-4; and "HISTORY.rc" in GEOS-5.
           From here you can only control the output of PROG/2D/3D as a group,
           or in the case of GEOS-5, the conversion of output with lcv2prs.

EOF

  $ans = query("  Would you like 2D diagnostics?", "y");
  if ( yes($ans) ) { $diag2d = ".T." }
  else              { $diag2d = ".F."; $ngout2d = -2 }
  $convsfc = 0 if ( $ngout2d < 0 );

  $ans = query("  Would you like 3D diagnostics?", "y");
  if ( yes($ans) ) { $diag3d = ".T." }
  else              { $diag3d = ".F."; $ngout = -2 }
  $convupa = 0 if ( $ngout < 0 );

  $ans = query("  Would you like to compress diagnostics output files?", "n");
  if ( yes($ans) ) { $compress = 1 }
  else             { $compress = 0 }

  # query for GOCART tracers
  #-------------------------
  $gocart_tracers = 1;
  print "\n--------------\n";
  print   "GOCART TRACERS\n";
  print   "--------------\n\n";

  $ans = query("  Include GOCART tracers (CO,CO2,aerosols,etc) (y/n)?", "y");
  $gocart_tracers = 0 if neg($ans);

  # query for aerosol analysis
  #---------------------------
  $gaas_ana = 0;
  $gaasfdbk = 0;

  $emission{"1"} = "CMIP";
  $emission{"2"} = "MERRA2";
  $emission{"3"} = "NR";
  $emission{"4"} = "OPS";
  $emission{"5"} = "PIESA";
  $emission{"6"} = "GEOSIT";

  %remission = reverse %emission;
  if ($nrt)       { $dflt = "OPS"    }
  elsif ($merra2) { $dflt = "MERRA2" }
  elsif ($geosit) { $dflt = "GEOSIT" }
  else            { $dflt = "PIESA"  }

  if ($gocart_tracers) {
      $emiss = "";
      until ($remission{$emiss}) {
          foreach (sort keys %emission) { print "  $_. $emission{$_}\n" }
          $emiss = query("  Select GOCART Emission Files to use:", $dflt);
          if ($emission{$emiss}) {
              $emiss = $emission{$emiss};
              pop @fvANS1; push @fvANS1, $emiss;
              pop @fvANS2; push @fvANS2, $emiss;
          }
      }

      $ans = query("\n  Do Aerosol Analysis (y/n)?", "y");
      $gaas_ana = 1 if yes($ans);

      $cmd = "$fvbin/obsclass_filter.pl all $nymdb $hhb 24 -rc $obsysGrc";
      print "$cmd\n";
      chomp($aod_obsclass = `$cmd`);

      $cmd = "$fvbin/aod_data.py aod_filter $aod_obsclass";
      print "$cmd\n";
      chomp($aod_obsclass = `$cmd`);
      $aod_obsclass = "none" unless $aod_obsclass;

      if ($gaas_ana) {
          warn "Warning. No AOD observation data found for date, $nymdb,"
              . "in $obsysGrc;" if $aod_obsclass eq "none";

          print("\n DEFAULT: $aod_obsclass\n\n");
          $ans = query("AOD OBSERVING CLASSES [or type 'none']?");
          $aod_obsclass = $ans unless blank($ans);
          $aod_obsclass = "none" if lc($aod_obsclass) eq "none";
          $aod_obsclass = "none" if $aod_obsclass eq "0";

          $ans = query("  Enable GAAS feedback to model (y/n)?", "y");
          $gaasfdbk = 1 if yes($ans);
      }
  }
  $emiss = $dflt unless $emiss;
  $emiss = "" if $emiss eq "OPS";

  # query for CARMA tracers
  #-------------------------
  $carma_tracers = 1;  # do not want this by default
# print "\n-------------\n";
# print   "CARMA TRACERS\n";
# print   "-------------\n\n";

# print "  Include CARMA (Carbon Monitoring) (y/n)? [y] ";
# chomp($ans = lc <STDIN> );
# if ( $ans eq "n" || $ans eq "no" ) { $carma_tracers = 0 };

  return 0 ;
}

#=======================================================================
sub get_history {

    # query for HISTORY.rc.tmpl file
    #-------------------------------
    @HISTORY = ( <$fvetc/HISTORY*.rc.tmpl*> );
    $g5hist_rc = "HISTORY.rc.tmpl";
    if ( $merra2 ) {
       $g5hist_rc = "HISTORY_MERRA2.rc.tmpl";
    }
    if ( $geosit ) {
       $g5hist_rc = "HISTORY_GEOSIT.rc.tmpl";
    }
    if ( $r21c ) {
       $g5hist_rc = "HISTORY_R21C.rc.tmpl";
    }
    $g5hist_rc = basename $HISTORY[0] unless -e "$fvetc/$g5hist_rc";

    if (scalar @HISTORY > 1) {
        print "\n-------\n";
        print   "HISTORY\n";
        print   "-------\n\n";

        print   "  Which HISTORY template?\n";
        print   "  -----------------------\n";
        foreach ( @HISTORY ) {
            $histname = basename($_);
            print "        $histname\n";
        }

        print "\n  DEFAULT: $g5hist_rc\n\n";
        $g5hist_rc = query("  Which template?", $g5hist_rc);
    }

    # verify that HISTORY.rc.tmpl has collections needed by LDAS
    #-----------------------------------------------------------
    if ( $ldas_ana == 1 ) {
        $verify = 0;
        @ldasinputs = qw / tavg1_2d_lfo inst1_2d_lfo /;
        foreach $prod ( @ldasinputs ) {
            open HIST, "< $fvroot/etc/$g5hist_rc";
            unless ( grep /$prod/, <HIST> ) {
                print "\n  Required Land DAS inputs: @ldasinputs\n"
                    unless ($verify);
                print "  >>> WARNING <<< $prod not defined in $g5hist_rc\n";
                $verify = 1;
                close HIST;
            }
        }
        if ($verify) {
            print "\n"
                . "  1. Use $g5hist_rc anyway\n"
                . "  2. Select again\n\n";
            $ans = query("  Choose option 1 or 2:", "2");
            return 1 unless $ans eq "1";
        }      
    }
    print "  Using HISTORY template: $g5hist_rc\n";

    # query for GCMPROG.rc.tmpl (fcst HISTORY file)
    #----------------------------------------------
    @HISTORY = ( <$fvetc/GCM*.rc.tmpl*> );
    $g5prog_rc = "GCMPROG.rc.tmpl";
    $g5prog_rc = basename $HISTORY[0] unless -e "$fvetc/$g5prog_rc";

    if (scalar @HISTORY > 1) {
        print "\n----------------\n";
        print   "Forecast HISTORY\n";
        print   "----------------\n\n";

        print   "  Which Forecast HISTORY template?\n";
        print   "  --------------------------------\n";
        foreach ( @HISTORY ) {
            $histname = basename($_);
            print "        $histname\n";
        }

        print "\n  DEFAULT: $g5prog_rc\n\n";
        $g5prog_rc = query("  Which template?", $g5prog_rc);
    }
    print "  Using Forecast HISTORY template: $g5prog_rc\n";

    return 0;
}

#=======================================================================
sub get_rstype {

    print "\n-------------------\n"
        .   "Output Restart TYPE\n"
        .   "-------------------\n\n"
        .   "  GCM Output Restart Types\n"
        .   "  ------------------------\n"
        .   "  bin (binary data)\n"
        .   "  nc4 (netcdf)\n\n";

    $rstype = query ("  Output Restart TYPE (bin or nc4)", "nc4");

    return if $rstype eq "bin" or $rstype eq "nc4";
    return 1;
}

#=======================================================================
sub get_restart5 {

  return 0 unless ( $g5gcm );

  $defexp = "u000_${res}${vres}";
  $nymdb = "20190116";
  $nymde = "20190119";
  @inputs = qw( /archive/u/jstassi/restarts/GEOSadas-5_24_0 );
  $defexploc = "$acqloc";
  if ( $do4dvar ) {
    $anastagedir = "/dev/null";
  } else {
    $anastagedir = "\$FVHOME/fcst/stage";
  }
  if ( $siteName eq "pfe" ) { @inputs = qw( /nobackup/jstassi/restarts/5C0 ) }

  $yyyyb  = substr($nymdb,0,4); $mmb = substr($nymdb,4,2); $ddb = substr($nymdb,6,2);
  $nhmsb = "210000";   $hhb = substr($nhmsb,0,2);
  $nhmse = "030000";   $hhe = substr($nhmse,0,2);
  for($i=0; $i<scalar(@inputs); $i++) {
      if (-e ($default = $inputs[$i])) { last }
  }

  $merra2_nccs_fvics = "/archive/users/gmao_ops/MERRA2/gmao_ops/GEOSadas-5_12_4";
  if ($merra2) {
      if (($res eq "C180") and ($ogcm eq "e") and ($siteID eq "nccs")) {
          $fvics = $merra2_nccs_fvics;
      }
  }          
  
  $fvics = $default unless $fvics eq $merra2_nccs_fvics;
  $drstloc = "$fvics/rs/Y${yyyyb}/M${mmb}";
  $rst_set = 1;
  $chemethod = "CLIM";

  $rst_set = 0;

  print <<"EOF";

------------------
INITIAL CONDITIONS
------------------

         The following start-up data files are needed for a simulation:

              catch_internal_rst:
              fvcore_internal_rst:
              irrad_internal_rst:
              lake_internal_rst:
              landice_internal_rst:
              moist_import_rst:
              moist_internal_rst:
              pchem_internal_rst:
              saltwater_import_rst:
              saltwater_internal_rst:
              solar_internal_rst:
              surf_import_rst:
              turb_import_rst:
              turb_internal_rst:
              rst.lcv:             File containing date of restarts

         Typically these files are copied from previously spun-up
         runs to "$fvhome/recycle".

         FVICS is the directory or the rst tarfile where these start-up
         files are located. Answer "later" if you prefer to copy these files
         later.

         DEFAULT: $fvics

EOF

  $FOUND_RESTARTS = 0;
  $tries = 0;
  TRY: while (! $FOUND_RESTARTS) {
      die ">> Error << Cannot find restarts;" if ++$tries > 10;

      $fvics = query("FVICS?", $fvics);
      print "\n";

      if (-f $fvics) {
          @vals = (basename($fvics) =~ m/(\S+)\.rst\.(\d{8})_(\d{2})z.tar/);
          if (scalar(@vals) == 3) {
              ($defexp, $nymdb, $hbb) = @vals;
              $drstloc = dirname($fvics);
              $FOUND_RESTARTS = 1;
              next;
          }
      }

      if ($fvics eq "later") {
          print "  NOTE: Estimate starting date/time if not precisely known.\n";
      }
      @lcvArr = <$fvics/*rst\.lcv*>;
      if (@lcvArr) { $nymdb = $1 if $lcvArr[0] =~ m/rst\.lcv\.(\d{8})_(\d{2})/ }

      $nymdb = query("  Starting year-month-day?", $nymdb);
      $yyyyb = substr($nymdb,0,4);
      $mmb   = substr($nymdb,4,2);
      $ddb   = substr($nymdb,6,2);
      $yymmb = "$yyyyb$mmb";

      $nhmsb = query("  Starting hour-min-sec?", $nhmsb);
      $hhb = substr($nhmsb,0,2);

      return 0 if $fvics eq "later";

      # set directory location for restarts
      #------------------------------------
      if ($fvics eq $merra2_nccs_fvics) {
          if    ($yymmb < 197901) { die "Error. No MERRA-2 data < 1979\n" }
          elsif ($yymmb < 199201) { $fvics .= "/d5124_m2_jan79" }
          elsif ($yymmb < 200106) { $fvics .= "/d5124_m2_jan91" }
          elsif ($yymmb < 201101) { $fvics .= "/d5124_m2_jan00" }
          else                    { $fvics .= "/d5124_m2_jan10" }
      }
      $drstloc = "$fvics/rs/Y${yyyyb}/M${mmb}";
      $drstloc = $fvics unless -d $drstloc;

      # look for expid of restarts; use first found as $defexp
      #-------------------------------------------------------
      @lcvArr = <$drstloc/$res$ogcm*.rst.lcv.${nymdb}_${hhb}z.bin>;
      @lcvArr = (@lcvArr, <$drstloc/*$res$ogcm*.rst.lcv.${nymdb}_${hhb}z.bin>);
      @lcvArr = (@lcvArr, <$drstloc/*$res*.rst.lcv.${nymdb}_${hhb}z.bin>);
      @lcvArr = (@lcvArr, <$drstloc/$hres*.rst.lcv.${nymdb}_${hhb}z.bin>);
      @lcvArr = (@lcvArr, <$drstloc/*$hres*.rst.lcv.${nymdb}_${hhb}z.bin>);
      @lcvArr = (@lcvArr, <$drstloc/*.rst.lcv.${nymdb}_${hhb}z.bin>);
      @lcvArr = (@lcvArr, <$drstloc/*.rst.${nymdb}_${hhb}z.tar>) if $doiau;
      foreach ( @lcvArr ) {
          $lcv = basename $_;
          ($defexp, @notneeded) = split /[\.]/, $lcv;
          $FOUND_RESTARTS = 1;
          last;
      }
      unless ( $FOUND_RESTARTS ) {
          warn "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"
          .      "No restarts found in $drstloc for ${nymdb}_${hhb}z.        \n"
          .      "Check the date and location of your restarts and try again.\n"
          .      "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n";
          next TRY;
      }

      $defexp = query("  Name of experiment where ICs come from:", $defexp);
      unless ( <$drstloc/$defexp.*.${nymdb}_${hhb}z.bin>
               or ($doiau and <$drstloc/$defexp.*.${nymdb}_${hhb}z.tar>) ) {
          warn "\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"
          .      "No restarts found in $drstloc for $defexp.${nymdb}_${hhb}z.\n"
          .      "Check the date and location of your restarts and try again.\n"
          .      "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n";
          $FOUND_RESTARTS = 0;
          next TRY;
      }
  } # end while (! $FOUND_RESTARTS )
}

#=======================================================================
# name - get_GID
# purpose - get the groupID for job submittal
#
# note - this routine is written to avoid the STDIN in get_spcode(), since
#        this sometimes causes errors in the redirected input to fvsetup
#        when using runjob.
#=======================================================================
sub get_GID {
    my (%flags, $gidflt);

    # get default group ID
    #---------------------
    %flags = ( "dflt" => 1, "quiet" => 1 );
    $gidflt = get_spcode(%flags);

    if ($gidflt) {
        print "\n--------\n";
        print   "Group ID\n";
        print   "--------\n";

        # display menu
        #-------------
        %flags = ( "menu" => 1, "quiet" => 1 );
        get_spcode(%flags);

        # get user choice
        #----------------
        $gid = "";
        $gid = query("Select group:", $gidflt);
        print "\n";
    }

    # check validity
    #---------------
    if ($gid) {
        %flags = ( "grpID" => $gid, "quiet" => 1 );
        $gid = get_spcode(%flags);
    }

    $export_none = "";
    if ($gid) {
        if ($siteID eq "nccs") { $group_list  = "SBATCH --account=$gid";
                                 $group_list1 = "SBATCH --account=\$GID";
                                 $export_none = "#SBATCH --export=NONE" }
        else                   { $group_list  = "PBS -W group_list=$gid";
                                 $group_list1 = "PBS -W group_list=\$GID" }
    }
    else                       { $group_list="" }

    return 0;
}

#=======================================================================
sub get_pyradmon {

    $pyradmon_dflt = "/discover/nobackup/jstassi/GEOSadas/pyradmon";

    #=========================================================#
    # FOR NOW, TAKE DEFAULT RATHER THAN QUERYING FOR LOCATION #
    #=========================================================#
    $pyradmon = $pyradmon_dflt;
    $ENV{"PYRADMON"} = $pyradmon;
    return;
    #=========================================================#

    print "\n------------------------\n"
        .   "Pyradmon Source Location\n"
        .   "------------------------\n";
    $pyradmon = query("\n  Pyradmon code location?", $pyradmon_dflt);
    if (-d $pyradmon) {
        $ENV{"PYRADMON"} = $pyradmon;
        return;
    }
    return 1;
}

#=======================================================================
sub get_dimsg5gcm {

    return 0 unless ( $g5gcm );

# Set default dimensions for GEOS-5 GCM & ocean resolution defaults
# -----------------------------------------------------------------
   $res = "C48";
   $vres = 72;
   if ( $merra2 ) { $ores = "e34" }
   else           { $ores = "f"   }

print <<"EOF";

--------------
G5GCM SETTINGS
--------------
         The following parameters are GEOS-5 GCM specific settings.

         PARAMETER             DFLT    DESCRIPTION
         ------------------    ----    ---------------------------------------------
         AGCM Resolution(H)    $res    Atmosphere Horizontal Resolution

                                       lat/lon grids     cubed-sphere grids
                                       -------------     ------------------
                                        a (4 deg)        C12   C180   C1000
                                        b (2 deg)        C24   C360   C1440
                                        c (1 deg)        C48   C500   C2880
                                        d (1/2 deg)      C90   C720
                                        e (1/4 deg)

         AGCM Resolution(V)    $vres      Atmosphere Vertical Resolution
         OGCM Resolution       $ores     Ocean Horizontal and Vertical Resolution
                                       where Ocean Horizontal Resolution is either
                                         c : 1-deg (360x180); e.g. Reynolds
                                         e : 1/4-deg (1440x720); e.g. MERRA-2
                                         f : 1/8-deg (2880x1440); e.g. OSTIA
                                         C : OSTIA cubed BCs consistent w/ Atmos res
                                         T11 : Coupled (Tripolar-1-degree)
                                         T12 : Coupled (Tripolar-1/2-degrees)
                                         T14 : Coupled (Tripolar-1/4-degrees)
                                         T18 : Coupled (Tripolar-1/8-degrees)

EOF

  $res  = query("  AGCM Horizontal Resolution?", $res);
  $vres = query("  AGCM Vertical Resolution?", $vres);
  $ores = query("  OGCM Resolution?", $ores);

  $cubed  = 0;
  $nx_pert = 1;
  $ny_pert = 6 * $nx_pert;
  $use_shmem = 0;
  $o_servers = 0;
  $ios_nds = 1;
  $cldmicro = "1MOMENT";
  if ( "$res" eq "c" && "$vres" eq "55" ) {
       $anahgrd = substr($res,0,1);
       $nx = 4;
       $ny = 8;
       $specres = "62";
       $jcap    = "126";
       $agcm_im  = 288;
       $agcm_jm  = 181;
       $km  =  55;
       $dt  = 1800;
       $pert_dt  = $dt;
       $chemdt = $dt;
       $solardt = 3600;
       $irraddt = 3600;
       $ogcmrdt = $irraddt;
       $ana_im = $agcm_im;
       $ana_jm = $agcm_jm;
       $hist_im = $agcm_im;
       $hist_jm = $agcm_jm;
       $histc_im = $agcm_im;
       $histc_jm = $agcm_jm;
       $hist_pert_im = $agcm_im;
       $hist_pert_jm = $agcm_jm;
       $apert_im = $ana_im;
       $apert_jm = $ana_jm;
       $anahgrd = substr($res,0,1);
       $jcap_ens = $jcap;
       $ana_im_ens = $ana_im;
       $ana_jm_ens = $ana_jm;
  } elsif ( "$res" eq "a" && "$vres" eq "72" ) {
       $nx = 4;
       $ny = 4;
       $specres = "31";
       $jcap = "21";
       $agcm_grid_type = "LatLon";
       $agcm_im  =  72;
       $agcm_jm  =  46;
       $km  =  72;
       $dt  =  900;
       $pert_dt  = $dt;
       $chemdt = $dt;
       $solardt = 3600;
       $irraddt = 3600;
       $ogcmrdt = $irraddt;
       $ana_im = $agcm_im;
       $ana_jm = $agcm_jm;
       $hist_im = $agcm_im;
       $hist_jm = $agcm_jm;
       $histc_im = $agcm_im;
       $histc_jm = $agcm_jm;
       $hist_pert_im = $agcm_im;
       $hist_pert_jm = $agcm_jm;
       $apert_im = $agcm_im;
       $apert_jm = $agcm_jm;
       $anahgrd = substr($res,0,1);
       $jcap_ens = $jcap;
       $ana_im_ens = $ana_im;
       $ana_jm_ens = $ana_jm;
  } elsif ( "$res" eq "b" && "$vres" eq "72" ) {
       $nx = 4;
       $ny = 4;
       $specres = "62";
       $jcap = "62";
       $agcm_grid_type = "LatLon";
       $agcm_im  = 144;
       $agcm_jm  =  91;
       $km  =  72;
       $dt  = 450;
       $pert_dt  = $dt;
       $chemdt = $dt;
       $solardt = 3600;
       $irraddt = 3600;
       $ogcmrdt = $irraddt;
       $ana_im = $agcm_im;
       $ana_jm = $agcm_jm;
       $hist_im = $agcm_im;
       $hist_jm = $agcm_jm;
       $histc_im = $agcm_im;
       $histc_jm = $agcm_jm;
       $hist_pert_im = $agcm_im;
       $hist_pert_jm = $agcm_jm;
       $apert_im = $agcm_im;
       $apert_jm = $agcm_jm;
       $anahgrd = substr($res,0,1);
       $jcap_ens = $jcap;
       $ana_im_ens = $ana_im;
       $ana_jm_ens = $ana_jm;
  } elsif ( "$res" eq "c" && "$vres" eq "72"  ) {
       $nx = 4;
       $ny = 8;
       $specres = "62";
       $jcap = "126";
       $agcm_grid_type = "LatLon";
       $agcm_im  = 288;
       $agcm_jm  = 181;
       $km  =  72;
       $dt  = 450;
       $pert_dt  = $dt;
       $chemdt = $dt;
       $solardt = 3600;
       $irraddt = 3600;
       $ogcmrdt = $irraddt;
       $ana_im = $agcm_im;
       $ana_jm = $agcm_jm;
       $hist_im = $agcm_im;
       $hist_jm = $agcm_jm;
       $hist_pert_im = $agcm_im;
       $hist_pert_jm = $agcm_jm;
       $apert_im = $agcm_im;
       $apert_jm = $agcm_jm;
       $anahgrd = substr($res,0,1);
       $jcap_ens = $jcap;
       $ana_im_ens = $ana_im;
       $ana_jm_ens = $ana_jm;
  } elsif ( "$res" eq "d" && "$vres" eq "72" ) {
       $nx = 8;
       $ny = 16;
       $specres = "254";
       $jcap = "254";
       $agcm_grid_type = "LatLon";
       $agcm_im  = 576;
       $agcm_jm  = 361;
       $km  =  72;
       $dt  = 450;
       $pert_dt  = 900;
       $chemdt = $dt;
       $solardt = 3600;
       $irraddt = 3600;
       $ogcmrdt = $irraddt;
       $ana_im = $agcm_im;
       $ana_jm = $agcm_jm;
       $hist_im = $agcm_im;
       $hist_jm = $agcm_jm;
       $histc_im = $agcm_im;
       $histc_jm = $agcm_jm;
       $nx_pert = 4;
       $ny_pert = 6 * $nx_pert;
       $hist_pert_im = 288;
       $hist_pert_jm = 181;
       $apert_im = 288;
       $apert_jm = 181;
       $anahgrd = substr($res,0,1);
       $jcap_ens = 126;
       $ana_im_ens = 288;
       $ana_jm_ens = 181;
  } elsif ( "$res" eq "e" && "$vres" eq "72" ) {
       $nx = 8;
       $ny = 32;
       $specres = "254";
       $jcap = "254";
       $agcm_grid_type = "LatLon";
       $agcm_im  = 1152;
       $agcm_jm  =  721;
       $km  =   72;
       $dt  =  450;
       $pert_dt  = 900;
       $chemdt = $dt;
       $solardt = 3600;
       $irraddt = 3600;
       $ogcmrdt = $irraddt;
       $ana_im = 576;
       $ana_jm = 361;
       $hist_im = $agcm_im;
       $hist_jm = $agcm_jm;
       $histc_im = 576; # coarse resolution history
       $histc_jm = 361; # coarse resolution history
       $nx_pert = 6;
       $ny_pert = 6 * $nx_pert;
       $hist_pert_im = 576;
       $hist_pert_jm = 361;
       $apert_im = 576;
       $apert_jm = 361;
       $anahgrd = substr($res,0,1);
       $jcap_ens = 126;
       $ana_im_ens = 288;
       $ana_jm_ens = 181;
  } elsif ( "$res" eq "b" && "$vres" eq "55" ) {
       $nx = 4;
       $ny = 4;
       $specres = "62";
       $jcap = "62";
       $agcm_grid_type = "LatLon";
       $agcm_im  = 144;
       $agcm_jm  =  91;
       $km  =  55;
       $dt  = 1800;
       $pert_dt  = $dt;
       $chemdt = $dt;
       $solardt = 3600;
       $irraddt = 3600;
       $ogcmrdt = $irraddt;
       $ana_im = $agcm_im;
       $ana_jm = $agcm_jm;
       $hist_im = $agcm_im;
       $hist_jm = $agcm_jm;
       $histc_im = $agcm_im;
       $histc_jm = $agcm_jm;
       $hist_pert_im = $agcm_im;
       $hist_pert_jm = $agcm_jm;
       $apert_im = $agcm_im;
       $apert_jm = $agcm_jm;
       $anahgrd = substr($res,0,1);
       $jcap_ens = $jcap;
       $ana_im_ens = $ana_im;
       $ana_jm_ens = $ana_jm;
  } elsif ( "$res" eq "C48" ) {  # Cubed-sphere
       $cubed = 1;
       $specres = "62";
       $jcap = "42";
       $agcm_grid_type = "Cubed-Sphere";
       $agcm_im  =  48;
       $agcm_jm  =  $agcm_im * 6;
       $nx  = 2;
       $ny  = $nx * 6;
       $km  = $vres;
       $dt  = 450;
       $pert_dt  = 900;
       $chemdt = $dt;
       $solardt = 3600;
       $irraddt = 3600;
       $ogcmrdt = $irraddt;
       $ana_im = 144; #$agcm_im * 4;
       $ana_jm = 91;  #$agcm_im * 2 + 1;
       $hist_im = $ana_im;
       $hist_jm = $ana_jm;
       $histc_im = $ana_im;
       $histc_jm = $ana_jm;
       $nx_pert = 2;
       $ny_pert = 6 * $nx_pert;
       $hist_pert_im = $ana_im;
       $hist_pert_jm = $ana_jm;
       $apert_im = $agcm_im;
       $apert_jm = $agcm_jm;
       $anahgrd = "b";
       $jcap_ens = $jcap;
       $ana_im_ens = $ana_im;
       $ana_jm_ens = $ana_jm;
  } elsif ( "$res" eq "C90" ) {  # Cubed-sphere
       $cubed = 1;
       $specres = "62";
       $jcap = "126";
       $agcm_im  =  90;
       $agcm_grid_type = "Cubed-Sphere";
       $agcm_jm  =  $agcm_im * 6;
       $nx       = 2;
       $ny       = $nx * 6;
       $km       = $vres;
       $dt  = 450;
       $pert_dt  = 900;
       $chemdt = $dt;
       $solardt = 3600;
       $irraddt = 3600;
       $ogcmrdt = $irraddt;
       $ana_im = 288; #$agcm_im * 4;
       $ana_jm = 181; #$agcm_im * 2 + 1;
       $hist_im = $ana_im;
       $hist_jm = $ana_jm;
       $histc_im = $ana_im;
       $histc_jm = $ana_jm;
       $nx_pert = 4;
       $ny_pert = 6 * $nx_pert;
       $hist_pert_im = $ana_im;
       $hist_pert_jm = $ana_jm;
       $apert_im = $agcm_im;
       $apert_jm = $agcm_jm;
       $anahgrd = "c";
       $jcap_ens = $jcap;
       $ana_im_ens = $ana_im;
       $ana_jm_ens = $ana_jm;
  } elsif ( "$res" eq "C180" ) {  # Cubed-sphere
       $cubed = 1;
#      $ios_nds = 2;
       $specres = "254";
       $jcap = "254";
       $agcm_grid_type = "Cubed-Sphere";
       $agcm_im  =  180;
       $agcm_jm  =  $agcm_im * 6;
       $nx       = 4;
       $ny       = $nx * 6;
       $km       = $vres;
       $dt  = 450;
       $pert_dt  = 900;
       $chemdt = $dt;
       $solardt = 3600;
       $irraddt = 3600;
       $ogcmrdt = $irraddt;
       $ana_im = 576; #$agcm_im * 4;
       $ana_jm = 361; #$agcm_im * 2 + 1;
       $hist_im = $ana_im;
       $hist_jm = $ana_jm;
       $histc_im = $ana_im;
       $histc_jm = $ana_jm;
       $nx_pert = 4;
       $ny_pert = 6 * $nx_pert;
       $hist_pert_im = 288;
       $hist_pert_jm = 181;
       $apert_im = 90;
       $apert_jm = $apert_im * 6;
       $anahgrd = "d";
       $jcap_ens = 126;
       $ana_im_ens = 288;
       $ana_jm_ens = 181;
  } elsif ( "$res" eq "C360" ) {  # Cubed-sphere
       $cubed = 1;
#      $ios_nds = 2;
       $specres = "254";
       $jcap = "254";
       $agcm_grid_type = "Cubed-Sphere";
       $agcm_im  =  360;
       $agcm_jm  =  $agcm_im * 6;
       $nx       = 6;
       $ny       = $nx * 6;
       $km       = $vres;
       $dt  = 450;
       $pert_dt  = 900;
       $chemdt = $dt;
       $solardt = 3600;
       $irraddt = 3600;
       $ogcmrdt = $irraddt;
       $ana_im = 576;
       $ana_jm = 361;
       $hist_im = 1152;
       $hist_jm = 721;
       $histc_im = 576;  # coarse-resolution history
       $histc_jm = 361;  # coarse-resolution history
       $nx_pert = 6;
       $ny_pert = 6 * $nx_pert;
       $hist_pert_im = 576;
       $hist_pert_jm = 361;
       $apert_im = 180;
       $apert_jm = $apert_im * 6;
       $anahgrd = "d";
       $use_shmem = 1;
       $jcap_ens = 126;
       $ana_im_ens = 288;
       $ana_jm_ens = 181;
  } elsif ( "$res" eq "C720" ) {  # Cubed-sphere
       $cubed = 1;
       $o_servers = 8;
#      $ios_nds = 3;
       $specres = "254";
       $jcap = "254";
       $agcm_grid_type = "Cubed-Sphere";
       $agcm_im  =  720;
       $agcm_jm  =  $agcm_im * 6;
       $nx = 6;
       $ny = $nx * 6;
       $km = $vres;
       $dt = 450;
       $pert_dt = 900;
       $chemdt = $dt;
       $solardt = 3600;
       $irraddt = 3600;
       $ogcmrdt = $irraddt;
       $ana_im = 1152; #$agcm_im * 4;
       $ana_jm = 721; #$agcm_im * 2 + 1;
       $hist_im = $ana_im;
       $hist_jm = $ana_jm;
       $histc_im = 576;
       $histc_jm = 361;
       $nx_pert = 10;
       $ny_pert = 6 * $nx_pert;
       $hist_pert_im = 576;
       $hist_pert_jm = 361;
       $apert_im = 180;
       $apert_jm = $apert_im * 6;
       $anahgrd = "e";
       $use_shmem = 1;
       $jcap_ens = 254;
       $ana_im_ens = 576;
       $ana_jm_ens = 361;
  } elsif ( "$res" eq "C1440" ) {  # Cubed-sphere
       $cubed = 1;
       $o_servers = 8;
#      $ios_nds = 4;
       $specres = "254";
       $jcap = "254";
       $agcm_grid_type = "Cubed-Sphere";
       $agcm_im  =  1440;
       $agcm_jm  =  $agcm_im * 6;
       $nx = 6;
       $ny = $nx * 6;
       $km = $vres;
       $dt = 450;
       $pert_dt = 900;
       $chemdt = $dt;
       $solardt = 3600;
       $irraddt = 3600;
       $ogcmrdt = $irraddt;
       $ana_im = 1152; #$agcm_im * 4;
       $ana_jm = 721; #$agcm_im * 2 + 1;
       $hist_im = $ana_im;
       $hist_jm = $ana_jm;
       $histc_im = 576;
       $histc_jm = 361;
       $nx_pert = 10;
       $ny_pert = 6 * $nx_pert;
       $hist_pert_im = 576;
       $hist_pert_jm = 361;
       $apert_im = 180;
       $apert_jm = $apert_im * 6;
       $anahgrd = "e";
       $use_shmem = 1;
       $jcap_ens = 254;
       $ana_im_ens = 576;
       $ana_jm_ens = 361;
  } else {
       die ">>> ERROR <<< invalid GEOS-5 GCM resolution: res = $res";
  }
  $aensupa = "bkg.eta";

  if ($cubed) {
     $agcm_nf = 6;
     $latlon_agcm = "#";
     $cube_agcm = "";
  } else {
     $agcm_nf = 1;
     $latlon_agcm = "#";
     $cube_agcm = "";
  }

  $pert_freq = secs2hhmmss($pert_dt);
  $ncpus_gpert = $nx_pert * $ny_pert;

  if ( $res =~ /(\w).*/ ) { $gcmres = $1 };
  $geosgrd = substr($res,0,1);

  $hres = substr ( $res, 0, 1 );

  # Resolution dependent settings
  $mem = "4gb";
  $mem = "8gb"  if ( $agcm_im == 288 && $agcm_jm == 181 );
  $mem = "16gb" if ( $agcm_im == 576 && $agcm_jm == 361 );

  $ogcm    = substr($ores, 0, 1);
  $ogcm_id = substr($ores, 1, 2);

  $coupled = 0;
  if ($ogcm eq "c") {
      $ogcm_grid_type = "LatLon";
      $ogcm_im  = 360;
      $ogcm_jm  = 180;
      $ogcm_lm  = 34;
      $ogcm_nf  = 1;
      $cube_ogcm = "#";
      $latlon_ogcm = "";
  }
  elsif ($ogcm eq "e") {
      $ogcm_grid_type = "LatLon";
      $ogcm_im  = 1440;
      $ogcm_jm  =  720;
      $ogcm_lm  = 34;
      $ogcm_nf  = 1;
      $cube_ogcm = "#";
      $latlon_ogcm = "";
  }
  elsif ($ogcm eq "f") {
      $ogcm_grid_type = "LatLon";
      $ogcm_im  = 2880;
      $ogcm_jm  = 1440;
      $ogcm_lm  = 34;
      $ogcm_nf  = 1;
      $cube_ogcm = "#";
      $latlon_ogcm = "";
  }
  elsif ($ogcm eq "C") {
      $ogcm_grid_type = "Cubed-Sphere";
      $ogcm_im  = $agcm_im;
      $ogcm_jm  = $agcm_jm;
      $ogcm_lm  = 34;
      $ogcm_nf  = 6;
      $cube_ogcm = "";
      $latlon_ogcm = "#";
  }
  elsif ($ogcm eq "T") {
      $coupled = 1; 
      $ocean_name = "MOM6";
      $ogcmrdt = $dt;
      $ogcm_grid_type = "Tripolar";
      if ( $ogcm_id eq "11" ) {
        die "Abort: Not yet ready for this ocean-model resolution $ogcm_id\n";
      }
       elsif ( $ogcm_id eq "12" ) {
        die "Abort: Not yet ready for this ocean-model resolution $ogcm_id\n";
      }
       elsif ( $ogcm_id eq "14" ) {
        $ogcm_im  = 1440;
        $ogcm_jm  = 1080;
        $ogcm_lm  = 75;
        $ogcm_nx  = 40;
        $ogcm_ny  = 30;
      }
       elsif ( $ogcm_id eq "18" ) {
        die "Abort: Not yet ready for this ocean-model resolution $ogcm_id\n";
      }
      else { die "Error: Unsupported ocean-model resolution $ogcm_id\n"; }
      $mometc = "$fvroot/etc/MOM6/mom6_app/${ogcm_im}x${ogcm_jm}";
   }
   else { die "Error: Cannot recognize Ocean Horizontal Resolution Code $ogcm \n;" }
   $ogrid = "${ogcm_im}x${ogcm_jm}";

   $agcm_im4 = sprintf "%04i", $agcm_im;
   $agcm_jm4 = sprintf "%04i", $agcm_jm;
   $ogcm_im4 = sprintf "%04i", $ogcm_im;
   $ogcm_jm4 = sprintf "%04i", $ogcm_jm;


   print "  Ocean Vertical Resolution to $ogcm_lm\n";

   $is_fcst = 0;  # eventually SST will be persisted after initial read,
                  # but for now leave things as they are since results are
                  # severely deteriorated in regular (historical) DAS mode.
   if ( $cubed ) {
       $pertmodelexec = "GEOSgcmPert.x";
       $bcsresa       = "CF${agcm_im4}x6C";
       $bcsreso       = "DE${ogcm_im4}xPE${ogcm_jm4}";
       $iauexec       = "mkiau.x";
       $AGCM_GRIDNAME = "PE${agcm_im}x${agcm_jm}-CF";
       if ( $ogcm eq "C" ) {
         $OGCM_GRIDNAME = "OC${ogcm_im}x${ogcm_jm}-CF";
       } elsif ( $ogcm eq "T" ) {
         $OGCM_GRIDNAME = "PE${ogcm_im}x${ogcm_jm}-TM";
       } else {
         $OGCM_GRIDNAME = "PE${ogcm_im}x${ogcm_jm}-DE";
       }
   } else {
       $pertmodelexec = "fvsens.x";
       $bcsresa       = "DC${agcm_im4}xPC${agcm_jm4}";
       $bcsreso       = "DE${ogcm_im4}xPE${ogcm_jm4}";
       $hist_im       = $agcm_im;
       $hist_jm       = $agcm_jm;
       $iauexec       = "makeiau.x";
       $AGCM_GRIDNAME = "PC${agcm_im}x${agcm_jm}-DC";
       if ( $coupled ) {
          $OGCM_GRIDNAME = "PE${ogcm_im}x${ogcm_jm}-TM";
       } else {
          $OGCM_GRIDNAME = "PE${ogcm_im}x${ogcm_jm}-DE";
       }
   }

  return 0 ;
}
#=======================================================================
sub secs2hhmmss {
    my ($secs, $hh, $mm, $ss);
    $secs = shift @_;

    $hh = int($secs/3600);
    $mm = int(($secs - $hh*3600)/60);
    $ss = $secs - $hh*3600 - $mm*60;

    foreach (\$hh, \$mm, \$ss) { $$_ = sprintf "%02s", $$_ }
    return "$hh$mm$ss";
}

#=========================================================================
sub mkdir_fvhome {  # create directories on FVHOME
  print "\nSetting up FVHOME directory for $expid experiment ...\n";
  foreach $dir (qw(ana diag daotovs etc obs prog radmon)) {
      mkpath("$fvhome/$dir") or die ">>> ERROR <<< creating directory $fvhome/$dir;";
  }
  foreach $dir (qw(rs run recycle fcst lana asens anasa)) {
      mkpath("$fvhome/$dir") or die ">>> ERROR <<< creating directory $fvhome/$dir;";
  }
  foreach $subdir (qw( gaas gocart )) {
      mkpath("$fvhome/run/$subdir")
          or die ">> Error << creating subdir, $fvhome/run/$subdir;";
  }
  unlink("$fvhome/fvInput") if ( -e "$fvhome/fvInput" ) ; 
  symlink("$fvbcs","$fvhome/fvInput"); 

# Some directories are not meant to be archived
# ---------------------------------------------
  foreach $dir (qw( run recycle fcst asens )) {
          die ">>> ERROR <<< $! "
          if system("/bin/touch $fvhome/$dir/.no_archiving");
  }

# Record FVROOT so scripts know where to look
# -------------------------------------------
  die ">>> ERROR <<< $! " if system("/bin/echo $fvroot > $fvhome/.FVROOT");

# Copy system OS file to run directory
# ------------------------------------
  cp $sysfile, "$fvhome/run" if -f $sysfile;
}

#=======================================================================
sub run_config {

# Special handle rsh/rcp at DAO
# -----------------------------
  chomp($rsh = `which ssh`);
  chomp($rcp = `which scp`);

  if ( $DAO ) {
       $rsh = "/usr/local/bin/ssh" if ( -x "/usr/local/bin/ssh" );
       $rcp = "/usr/local/bin/scp" if ( -x "/usr/local/bin/scp" );
       $rcpflgs = "";
       if ($siteName eq "cfe") {
           @dummy = split /\s+/, `which bbscp`;
           $bbscp = $dummy[0];
           $rcp = "$fvbin/bbscp.pl" if -e $bbscp and -x $bbscp;
       }
  }
  die "cannot find $rsh" unless ( -x "$rsh" );
  die "cannot find $rcp" unless ( -x "$rcp" );

 open(RUNCONFIG,">$fvhome/run/Run_Config") or
 die ">>> ERROR <<< cannot write $fvhome/run/Run_Config";

 print  RUNCONFIG <<"EOF";
set REMSH = $rsh
set RCP = $rcp
EOF

 close(RUNCONFIG);

}

#=======================================================================
sub archiving_rules {

   open(ARC,">$fvhome/run/silo.arc")
   || die "Cannot create $fvhome/run/silo.arc: $!";

   print ARC <<"EOF";
#
# Archiving rules for fvDAS output.
#
# This is a PESTO (Put Experiment in Mass STOrage) resource file.
#
# The environment variable PESTOROOT refers to the destination archive
# location, e.g.,
#
# a) for moving files to SILO:
#    setenv PESTOROOT '/scratch1/dasilva'
#
# b) for moving files to MASS STORAGE:
#    setenv PESTOROOT 'dasilva\@helios1.nas.nasa.gov:'
#
# This file has been automatically generated by fvsetup.
# $nametag
#...........................................................................
#
#                   ---------------
#                   ANALYSIS FILES
#                   ---------------
#
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.bkg.prs.%y4%m2%d2.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.ana.prs.%y4%m2%d2.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.bias.prs.%y4%m2%d2.$ncsuffix
#
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.ts.obs.%y4%m2%d2.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.ana.obs.%y4%m2%d2.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.ana.obs.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.prepbufr.%y4%m2%d2.t%h2z.blk
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.gmao_global_satinfo.%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.gmao_global_ozinfo.%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.sac.nl.%y4%m2%d2_%h2z.txt
#
#                  -----------------------
#                  LAND DAS ANALYSIS FILES
#                  -----------------------
#
\${PESTOROOT}%s/lana/Y%y4/M%m2/%s.ens_avg.ldas_grid_inst_out.%y4%m2%d2_%h2%n2z.bin
\${PESTOROOT}%s/lana/Y%y4/M%m2/%s.ens_avg.ldas_grid_xhourly_out.%y4%m2%d2_%h2%n2z.bin
\${PESTOROOT}%s/lana/Y%y4/M%m2/%s.ens_avg.ldas_tile_inst_ensstd.%y4%m2%d2_%h2%n2z.bin
\${PESTOROOT}%s/lana/Y%y4/M%m2/%s.ens_avg.ldas_tile_inst_out.%y4%m2%d2_%h2%n2z.bin
\${PESTOROOT}%s/lana/Y%y4/M%m2/%s.ens_avg.ldas_tile_xhourly_out.%y4%m2%d2_%h2%n2z.bin

\${PESTOROOT}%s/lana/Y%y4/M%m2/%s.ldas_bias_inputs.%y4%m2%d2_%h2%n2z.nml
\${PESTOROOT}%s/lana/Y%y4/M%m2/%s.ldas_catparam.%y4%m2%d2_%h2%n2z.bin
\${PESTOROOT}%s/lana/Y%y4/M%m2/%s.ldas_driver_inputs.%y4%m2%d2_%h2%n2z.nml
\${PESTOROOT}%s/lana/Y%y4/M%m2/%s.ldas_ensprop_inputs.%y4%m2%d2_%h2%n2z.nml
\${PESTOROOT}%s/lana/Y%y4/M%m2/%s.ldas_ensupd_inputs.%y4%m2%d2_%h2%n2z.nml
\${PESTOROOT}%s/lana/Y%y4/M%m2/%s.ldas_out.%y4%m2%d2_%h2%n2z.txt
\${PESTOROOT}%s/lana/Y%y4/M%m2/%s.ldas_log.%y4%m2%d2_%h2%n2z.txt

\${PESTOROOT}%s/lana/%s.ldas_atmgrids.txt
\${PESTOROOT}%s/lana/%s.ldas_domain.txt
\${PESTOROOT}%s/lana/%s.ldas_tilecoord.txt
#
#                  ----------------------
#                  AEROSOL ANALYSIS FILES
#                  ----------------------
#
\${PESTOROOT}%s/obs/Level2/MYD04/Y%y4/M%m2/%s.MYD04_L2a.land.%y4%m2%d2_%h2%n2z.ods
\${PESTOROOT}%s/obs/Level2/MYD04/Y%y4/M%m2/%s.MYD04_L2a.ocean.%y4%m2%d2_%h2%n2z.ods
\${PESTOROOT}%s/obs/Level2/MOD04/Y%y4/M%m2/%s.MOD04_L2a.land.%y4%m2%d2_%h2%n2z.ods
\${PESTOROOT}%s/obs/Level2/MOD04/Y%y4/M%m2/%s.MOD04_L2a.ocean.%y4%m2%d2_%h2%n2z.ods
\${PESTOROOT}%s/obs/Level3/MYD04/Y%y4/M%m2/%s.MYD04_L3a.land.%y4%m2%d2_%h2%n2z.nc4
\${PESTOROOT}%s/obs/Level3/MYD04/Y%y4/M%m2/%s.MYD04_L3a.ocean.%y4%m2%d2_%h2%n2z.nc4
\${PESTOROOT}%s/obs/Level3/MOD04/Y%y4/M%m2/%s.MOD04_L3a.land.%y4%m2%d2_%h2%n2z.nc4
\${PESTOROOT}%s/obs/Level3/MOD04/Y%y4/M%m2/%s.MOD04_L3a.ocean.%y4%m2%d2_%h2%n2z.nc4
\${PESTOROOT}%s/obs/Y%y4/M%m2/%s.aod.obs.%y4%m2%d2_%h2%n2z.ods
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.aod_a.sfc.%y4%m2%d2_%h2%n2z.nc4
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.aod_d.sfc.%y4%m2%d2_%h2%n2z.nc4
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.aod_f.sfc.%y4%m2%d2_%h2%n2z.nc4
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.aod_k.sfc.%y4%m2%d2_%h2%n2z.nc4
#
#                   --------------------
#                   GSI DIAGNOSTIC FILES
#                   --------------------
#
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_airs_aqua_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_amsr2_gcom-w1_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_amsre_aqua_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_amsua_aqua_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_amsua_metop-%c_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_amsu%c_%c%c%c_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_avhrr_%c%c%c_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_avhrr_metop-%c_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_atms_%c%c%c_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_cris-fsr_%c%c%c_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_cris_npp_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_conv_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_gmi_gpm_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_gome_metop-%c_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_gps_%c%c%c_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_hirs%c_%c%c%c_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_hirs%c_metop-%c_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_hirs%c_tirosn_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_hsb_aqua_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_iasi_metop-%c_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_imgr_%c%c%c_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_mhs_metop-%c_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_mhs_%c%c%c_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_mls55_aura_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_msu_%c%c%c_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_msu_tirosn_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_omi_aura_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_ompslpuv_npp_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_ompslpvis_npp_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_ompsnm_npp_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_ompsnmeff_npp_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_ompsnp_npp_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_ompsnpnc_npp_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_pcp_tmi_%c%c%c%c_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_pcp_ssmi_dmsp%c%c_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_pcp_ssmi_dmsp_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_pcp_tmi_%c%c%c%c_%c%c%c_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_seviri_m%c%c_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_sbuv%c_%c%c%c_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_sbuv%c_nim07_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_sndr_%c%c%c_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_sndr_g%c%c_prep_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_sndrd%c_%c%c%c_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_ssmi_%c%c%c_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_ssmis_%c%c%c_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_ssu_%c%c%c_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_ssu_tirosn_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_omieff_aura_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_o3lev_aura_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_tomseff_ep.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_tomseff_nim07_%c%c%c.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_tmi_trmm_%c%c%c.%y4%m2%d2_%h2z.bin
#
#
#                   -----------------------
#                   CORRESPONDING ODS FILES
#                   -----------------------
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_airs_aqua.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_amsr2_gcom-w1.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_amsre_aqua.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_amsua_aqua.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_amsua_metop-%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_amsu%c_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_avhrr_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_avhrr_metop-%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_atms_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_cris-fsr_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_cris_npp.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_conv.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_gmi_gpm_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_gome_metop-%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_gps_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_hirs%c_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_hirs%c_metop-%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_hirs%c_tirosn.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_hsb_aqua.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_iasi_metop-%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_imgr_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_mhs_metop-%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_mhs_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_mls55_aura.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_msu_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_msu_tirosn.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_omi_aura.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_ompslpuv_npp.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_ompslpvis_npp.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_ompsnm_npp.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_ompsnmeff_npp.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_ompsnp_npp.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_ompsnpnc_npp.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_pcp_ssmi_dmsp%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_pcp_ssmi_dmsp.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_pcp_tmi_%c%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_pcp_tmi_%c%c%c%c_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_seviri_m%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_sbuv%c_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_sbuv%c_nim07.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_sndr_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_sndr_g%c%c_prep.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_sndrd%c_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_ssmi_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_ssmis_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_ssu_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_ssu_tirosn.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_omieff_aura.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_o3lev_aura.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_tomseff_ep.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_tomseff_nim07.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_tmi_trmm_%c%c%c.%y4%m2%d2_%h2z.ods
#
#                   -----------------------------------
#                   CORRESPONDING 0 hr IMPACT ODS FILES
#                   -----------------------------------
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_airs_aqua.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_amsr2_gcom-w1.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_amsre_aqua.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_amsua_aqua.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_amsua_metop-%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_amsu%c_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_avhrr_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_avhrr_metop-%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_atms_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_cris-fsr_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_cris_npp.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_conv.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_gmi_gpm_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_gome_metop-%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_gps_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_hirs%c_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_hirs%c_metop-%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_hirs%c_tirosn.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_hsb_aqua.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_iasi_metop-%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_imgr_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_mhs_metop-%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_mhs_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_mls55_aura.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_msu_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_msu_tirosn.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_omi_aura.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_ompslpuv_npp.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_ompslpvis_npp.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_ompsnm_npp.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_ompsnmeff_npp.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_ompsnp_npp.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_ompsnpnc_npp.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_pcp_ssmi_%c%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_pcp_tmi_%c%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_pcp_ssmi_%c%c%c%c_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_pcp_tmi_%c%c%c%c_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_seviri_m%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_sbuv%c_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_sbuv%c_nim07.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_sndr_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_sndr_g%c%c_prep.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_sndrd%c_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_ssmi_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_ssmis_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_ssu_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_ssu_tirosn.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_omieff_aura.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_o3lev_aura.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_tomseff_ep.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_tomseff_nim07.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp0hr_diag_tmi_trmm_%c%c%c.%y4%m2%d2_%h2z.ods
#
#                   --------------------------------
#                   GSI SENSITIVITY DIAGNOSTIC FILES
#                   --------------------------------
#
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_atms_%c%c%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_cris-fsr_%c%c%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_cris_npp_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_conv_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_gps_bnd_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_pcp_ssmi_%c%c%c%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_pcp_tmi_%c%c%c%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_seviri_m%c%c_%c%c%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_sbuv%c_%c%c%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_omi_aura_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_ompslpuv_npp_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_ompslpvis_npp_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_ompslpnm_npp_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_ompslpnp_npp_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_hirs%c_%c%c%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_hirs%c_metop-%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_hirs%c_tirosn_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_gome%c_metop-%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_iasi%c_metop-%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_sndr_%c%c%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_sndr_g%c%c_prep_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_imgr_%c%c%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_airs_aqua_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_msu_%c%c%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_msu_tirosn_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_amsu%c_%c%c%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_amsua_aqua_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_amsua_metop-%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_mhs_%c%c%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_mhs_metop-%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_ssmi_%c%c%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_amsr2_gcom-w1_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_amsre_aqua_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_ssmis_%c%c%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_sndrd%c_%c%c%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_ssu_%c%c%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_ssu_tirosn_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_tmi_trmm_%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_gmi_gpm_%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_conv_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_gps_bnd_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_pcp_ssmi_%c%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_pcp_tmi_%c%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_sbuv%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_omi_aura_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_ompslpuv_npp_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_ompslpvis_npp_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_ompslpnm_npp_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_ompslpnp_npp_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_hirs%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_hirs%c_metop-%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_hirs%c_tirosn_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_gome%c_metop-%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_iasi%c_metop-%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_sndr_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_sndr_g%c%c_prep_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_imgr_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_airs_aqua_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_msu_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_msu_tirosn_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_amsu%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_amsua_aqua_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_amsua_metop-%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_mhs_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_mhs_metop-%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_ssmi_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_amsr2_gcom-w1_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_amsre_aqua_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_ssmis_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_sndrd%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_ssu_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_ssu_tirosn_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_tmi_trmm_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_gmi_gpm_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#
#
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_conv_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_gps_bnd_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_pcp_ssmi_%c%c%c%c_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_pcp_tmi_%c%c%c%c_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_sbuv%c_%c%c%c_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_omi_aura_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_ompslpuv_npp_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_ompslpvis_npp_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_ompslpnm_npp_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_ompslpnp_npp_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_hirs%c_%c%c%c_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_hirs%c_metop-%c_%c%c%c_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_hirs%c_tirosn_%c%c%c_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_gome%c_metop-%c_%c%c%c_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_iasi%c_metop-%c_%c%c%c_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_sndr_%c%c%c_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_sndr_g%c%c_prep_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_imgr_%c%c%c_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_airs_aqua_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_msu_%c%c%c_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_msu_tirosn_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_amsu%c_%c%c%c_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_amsua_aqua_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_amsua_metop-%c_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_mhs_%c%c%c_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_mhs_metop-%c_%c%c%c_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_ssmi_%c%c%c_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_amsr2_gcom-w1_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_amsre_aqua_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_ssmis_%c%c%c_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_sndrd%c_%c%c%c_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_tmi_trmm_%c%c%c_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_gmi_gpm_%c%c%c_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#
#  ------- need to revisit from here down
#
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_conv_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_gps_bnd_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_pcp_ssmi_%c%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_pcp_tmi_%c%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_sbuv%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_omi_aura_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_hirs%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_hirs%c_metop-%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_hirs%c_tirosn_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_sndr_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_sndr_g%c%c_prep_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_imgr_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_airs_aqua_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_msu_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_msu_tirosn_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_amsu%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_amsua_aqua_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_mhs_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_ssmi_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_amsr2_gcom-w1_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_amsre_aqua_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_ssmis_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_sndrD%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_ssu_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_ssu_tirosn_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_conv_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_gps_bnd_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_pcp_ssmi_%c%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_pcp_tmi_%c%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_sbuv%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_omi_aura_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_hirs%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_hirs%c_metop-%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_hirs%c_tirosn_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_sndr_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_sndr_g%c%c_prep_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_imgr_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_airs_aqua_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_msu_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_msu_tirosn_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_amsu%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_amsua_aqua_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_mhs_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_ssmi_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_amsr2_gcom-w1_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_amsre_aqua_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_ssmis_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_sndrD%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_ssu_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_ssu_tirosn_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_conv_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_gps_bnd_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_pcp_ssmi_%c%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_pcp_tmi_%c%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_sbuv%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_omi_aura_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_hirs%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_hirs%c_metop-%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_hirs%c_tirosn_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_sndr_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_sndr_g%c%c_prep_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_imgr_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_airs_aqua_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_msu_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_msu_tirosn_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_amsu%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_amsua_aqua_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_mhs_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_ssmi_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_amsr2_gcom-w1_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_amsre_aqua_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_ssmis_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_sndrD%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_ssu_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_ssu_tirosn_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_conv_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_gps_bnd_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_pcp_ssmi_%c%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_pcp_tmi_%c%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_sbuv%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_omi_aura_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_hirs%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_hirs%c_metop-%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_hirs%c_tirosn_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_sndr_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_sndr_g%c%c_prep_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_imgr_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_airs_aqua_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_msu_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_msu_tirosn_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_amsu%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_amsua_aqua_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_mhs_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_ssmi_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_amsr2_gcom-w1_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_amsre_aqua_c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_ssmis_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_sndrD%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_ssu_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_ssu_tirosn_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#
#
#                   --------------------
#                   GSI 4DVAR/FGAT FILES
#                   --------------------
#
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.obsdiags.%c%c%c.%c%c%c%c.%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.xhatsave.%c%c%c.%c%c%c%c.%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.evec.%c%c%c.%c%c%c%c.%c%c%c%c.%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.lanczvec.%c%c%c.%c%c%c%c.%c%c%c%c.%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.zlanczos.%c%c%c.%c%c%c%c.%c%c%c%c.%y4%m2%d2_%h2z.bin
#
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.abkg.eta.%y4%m2%d2_%h2z.$ncsuffix
#
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.ana.eta.%y4%m2%d2.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.ana.eta.%y4%m2%d2_%h2%n2z.iter%c.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.aana.eta.%y4%m2%d2_%h2z%n2.iter%c.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.ana.eta.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.ana.prs.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.ana.inst3d_met_p.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.asm.eta.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.asm.inst3d_met_p.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.ana.sfc.%y4%m2%d2.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.ana.sfc.%y4%m2%d2_%h2%n2z.$ncsuffix

\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.bbias.eta.%y4%m2%d2_%h2z.$ncsuffix

\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.bkg.eta.%y4%m2%d2.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.bkg.eta.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.bkg.eta.%y4%m2%d2_%h2%n2z.iter%c.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.bkg%c%c.eta.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.bkg.prs.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.bkg.sfc.%y4%m2%d2.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.bkg.sfc.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.bkg.sfc.%y4%m2%d2_%h2%n2z.iter%c.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.bkg%c%c.sfc.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.bkg.inst3d_met_p.%y4%m2%d2_%h2%n2z.$ncsuffix

\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.cbkg.eta.%y4%m2%d2_%h2%n2z.$ncsuffix

\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.gaas_bkg.sfc.%y4%m2%d2_%h2z.$ncsuffix

\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.xana.sfc.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.xbkg.sfc.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.xana.eta.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.xana.eta.%y4%m2%d2_%h2%n2z.iter%c.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.xinc.eta.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.xinc.eta.%y4%m2%d2_%h2%n2z.iter%c.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.xbkg.eta.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.xana.inst2d_met_x.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.xbkg.inst2d_met_x.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.xana.inst3d_met_x.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.xbkg.inst3d_met_x.%y4%m2%d2_%h2%n2z.$ncsuffix

\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.finc.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.%s.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.inc.eta.%y4%m2%d2_%h2%n2z.iter%c.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.inc.eta.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.inc.sfc.%y4%m2%d2_%h2%n2z.$ncsuffix

#
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.cana.eta.%y4%m2%d2.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.cana.prs.%y4%m2%d2.$ncsuffix
\${PESTOROOT}%s/obs/Y%y4/M%m2/%s.cana.obs.%y4%m2%d2.ods
#
#\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.bkg.spcsig.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.anl.sig.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.anl.sfc.%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.ana.pcpbias.%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.ana.acftbias.%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.ana.satbias.%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.ana.satbiaspc.%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.ana.satbang.%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.ana.prepqc.%y4%m2%d2_%h2z.bfr
#
#                 --------------------------
#                 STORM TRACKING/RELOC FILES
#                 --------------------------
#
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.vtx.mix.%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.vtx.mix.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.vtx.mix.%y4%m2%d2_%h2z.ctl
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.vtx.prs.%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.vtx.prs.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.vtx.prs.%y4%m2%d2_%h2z.ctl
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.vtx%c%c.mix.%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.vtx%c%c.mix.%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.vtx%c%c.mix.%y4%m2%d2_%h2z.ctl
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.vtx%c%c.prs.%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.vtx%c%c.prs.%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.vtx%c%c.prs.%y4%m2%d2_%h2z.ctl
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.trak.%c%c%c.all.%y4%m2%d2%h2.txt
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.trak.%c%c%c.atcf.%y4%m2%d2%h2.txt
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.trak.%c%c%c.atcfunix.%y4%m2%d2%h2.txt
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.trak.%c%c%c.radii.%y4%m2%d2%h2.txt
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.bkg%c%c.eta.%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.bkg%c%c.sfc.%y4%m2%d2_%h2z.$ncsuffix
#
#                 -----------------------------
#                 STORM TRACKING FORECAST FILES
#                 -----------------------------
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.trak.%c%c%c.all.%y4%m2%d2%h2+%y4%m2%d2%h2.txt
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.trak.%c%c%c.atcf.%y4%m2%d2%h2+%y4%m2%d2%h2.txt
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.trak.%c%c%c.atcfunix.%y4%m2%d2%h2+%y4%m2%d2%h2.txt
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.trak.%c%c%c.radii.%y4%m2%d2%h2+%y4%m2%d2%h2.txt
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.tcvitals.%y4%m2%d2%h2+%y4%m2%d2%h2.txt
#
#                 -------------------------
#                 ANALYSIS FILES (FORECAST)
#                 -------------------------
#
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.bkg.sfc.%y4%m2%d2_%h2z+%y4%m2%d2.$ncsuffix
#
#                 -----------------
#                 PROGNOSTIC FILES
#                 -----------------
#
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.prog.eta.%y4%m2%d2.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.prog.prs.%y4%m2%d2.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.prog.sfc.%y4%m2%d2.$ncsuffix
#
#                 -----------------
#                  CHEMISTRY FILES
#                 -----------------
#
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.co.eta.%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.aero.eta.%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.co_diag.eta.%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.aero_diag.eta.%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.co.prs.%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.aero.prs.%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.co_diag.prs.%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.aero_diag.prs.%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.co_diag.sfc.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.aero_diag.sfc.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.hyperwall.sfc.%y4%m2%d2_%h2%n2z.$ncsuffix
#
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.inst3d_chm_v.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.tavg3d_chm_p.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.tavg2d_chm_x.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.inst3d_aer_v.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.tavg3d_aer_p.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.tavg2d_aer_x.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.inst2d_hwl_x.%y4%m2%d2_%h2%n2z.$ncsuffix
#
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.tavg3_2d_aer_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.tavg3_2d_chm_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.inst3_3d_aer_Nv.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.inst3_3d_chm_Nv.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.inst1_2d_hwl_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
#
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.inst3_3d_aer_Nv_tmpl.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.inst3_3d_aer_Nv.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.tavg3_2d_aer_Cx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.tavg3_2d_chm_Cx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.inst3_2d_hwl_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
#
#
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.inst3_3d_met_NP.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.inst3_3d_wxm_Np.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.inst6_3d_asm_Cp.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.tavg3_2d_met_Nx.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix

#
#                 ---------------------------
#                  CHEMISTRY FILES (FORECAST)
#                 ---------------------------
#
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.co.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.aero.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.co_diag.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.aero_diag.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.co.prs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.aero.prs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.co_diag.prs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.aero_diag.prs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.co_diag.sfc.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.aero_diag.sfc.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.hyperwall.sfc.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
#
#                 ---------------------------
#                  GloPac FILES (FORECAST)
#                 ---------------------------
#
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.inst3_3d_trj_Nv.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.inst3_3d_asm_Cp.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.tavg1_2d_slv_Nx.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.tavg1_2d_flx_Nx.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.tavg1_2d_rad_Nx.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.tavg1_2d_lnd_Nx.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.tavg1_2d_lfo_Nx.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.inst1_2d_lfo_Nx.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.tavg1_2d_ocn_Nx.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.statD_2d_slv_Nx.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
#
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.tavg3_3d_aer_Cp.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.tavg3_3d_chm_Cp.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.tavg3_3d_tag_Cp.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.inst1_2d_hwl_Nx.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix

#
#                 ---------------------------
#                 TRAJECTORY FILES (FORECAST)
#                 ---------------------------
#
#\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.itraj.lcv.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
#\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.ftraj.lcv.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
#\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.traj.lcv.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
#\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.traj.lcv.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
#\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.traj.lcv.%y4%m2%d2_%h2z+%y4%m2%d2.$ncsuffix
#\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.ptrj.prs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
#\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.ptrj.prs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
#\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.ptrj.prs.%y4%m2%d2.$ncsuffix
#
#                 -----------------
#                 DIAGNOSTIC FILES
#                 -----------------
#
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.diag.sfc.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/$fdiageta
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.diag.prs.%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.diag_lsm.sfc.%y4%m2%d2.$ncsuffix
#
#                   -------------------------
#                   GEOS-4 GCM RE-START FILES
#                   -------------------------
#
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.rst.lcv.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.rst.chem.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.rst.bias.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.rst.phys.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.rst.lsm.%y4%m2%d2_%h2z.bin
#
#                   -------------------------
#                   GEOS-5 GCM RE-START FILES
#                   -------------------------
#
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.agcm_import_rst.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.agcm_import_rst_f.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.agcm_internal_rst.%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.catch_internal_rst.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.fvcore_internal_rst.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.gocart_internal_rst.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.irrad_internal_rst.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.lake_internal_rst.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.landice_internal_rst.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.moist_import_rst.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.moist_internal_rst.%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.ocean_internal_rst.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.pchem_internal_rst.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.saltwater_import_rst.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.saltwater_internal_rst.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.solar_internal_rst.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.surf_import_rst.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.turb_import_rst.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.turb_internal_rst.%y4%m2%d2_%h2z.bin
#
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.trak.GDA.rst.%y4%m2%d2%h2.txt
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.traj_lcv_rst.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.mtrj_lcv_rst.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.ptrj_prs_rst.%y4%m2%d2_%h2%n2z.$ncsuffix
#
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.ana.fvcore_internal_rst.%y4%m2%d2_%h2z.iter%c.bin
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.ana.moist_internal_rst.%y4%m2%d2_%h2z.iter%c.bin
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.ana.pchem_internal_rst.%y4%m2%d2_%h2z.iter%c.bin
#
#                    -----------------------
#                    GEOS-DAS RE-START FILES
#                    -----------------------
#
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.abkg_eta_rst.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.bkg_eta_rst.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.cbkg_eta_rst.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.bkg_sfc_rst.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.abkg%c%c_eta_rst.%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.bkg%c%c_eta_rst.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.bkg%c%c_sfc_rst.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.cbkg%c%c_eta_rst.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.gaas_bkg_sfc_rst.%y4%m2%d2_%h2z.$ncsuffix
#\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.ana_pcpbias_rst.%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.ana_acftbias_rst.%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.ana_satbias_rst.%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.ana_satbiaspc_rst.%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.ana_satbang_rst.%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.ana_gesfile_rst.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.biasinp.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.biasinp.%y4%m2%d2_%h2z.ctl
#
#
#                    -----------------------
#                    LAND-DAS RE-START FILES
#                    -----------------------
#
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.ens%n%n%n%n.catch_ldas_rst.%y4%m2%d2_%h2%n2z.bin
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.ens%n%n%n%n.pert_ldas_rst.%y4%m2%d2_%h2%n2z.bin
#
#                 -----------------
#                     DAOTOVS
#                 -----------------
#
\${PESTOROOT}%s/daotovs/Y%y4/M%m2/%s.daotovs.obs.%y4%m2%d2.ods
\${PESTOROOT}%s/daotovs/Y%y4/M%m2/%s.obs.daotovs.%y4%m2%d2.txt
\${PESTOROOT}%s/daotovs/Y%y4/M%m2/%s.omf.tovs_%c%c.%y4%m2%d2.oms
\${PESTOROOT}%s/daotovs/Y%y4/M%m2/%s.bkg.tovs_%c%c.%y4%m2%d2.oms
\${PESTOROOT}%s/daotovs/Y%y4/M%m2/%s.bkg.daotovs.%y4%m2%d2.txt
\${PESTOROOT}%s/daotovs/Y%y4/M%m2/%s.sonde_hirs.tovs_%c%c.%y4%m2%d2.oms
\${PESTOROOT}%s/daotovs/Y%y4/M%m2/%s.level2.tovs_%c%c.%y4%m2%d2.oms
\${PESTOROOT}%s/daotovs/Y%y4/M%m2/%s.level2.daotovs.%y4%m2%d2.txt
\${PESTOROOT}%s/daotovs/Y%y4/M%m2/%s.tuning.tovs_%c%c.%y4%m2%d2.oms
\${PESTOROOT}%s/daotovs/Y%y4/M%m2/%s.tuning.daotovs.%y4%m2%d2.txt
#
#                 -----------------
#                       CQC
#                 -----------------
#
\${PESTOROOT}%s/cqc/Y%y4/M%m2/%s.cqc.obs.%y4%m2%d2.ods
\${PESTOROOT}%s/cqc/Y%y4/M%m2/%s.cqc.obs.%y4%m2%d2.bfr
#
#                 -----------------
#                     LISTING
#                 -----------------
#
\${PESTOROOT}%s/etc/Y%y4/M%m2/%s.ExtData.%y4%m2%d2_%h2z.rc
\${PESTOROOT}%s/etc/Y%y4/M%m2/%s.gcm.log.%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/etc/Y%y4/M%m2/%s.ana.log.%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/etc/Y%y4/M%m2/%s.ana_stats.log.%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/etc/Y%y4/M%m2/%s.sac.log.%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/etc/Y%y4/M%m2/%s.ods.log.%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/etc/Y%y4/M%m2/%s.sobs.log.%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/etc/Y%y4/M%m2/%s.cnv2prs.log.%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/etc/Y%y4/M%m2/%s.sana.log.%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/etc/Y%y4/M%m2/%s.daotovs.log.%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/etc/Y%y4/M%m2/%s.cqc.log.%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/etc/Y%y4/M%m2/%s.prepqc.log.%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/etc/Y%y4/M%m2/%s.trak.log.%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/etc/Y%y4/M%m2/%s.vtx.log.%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/etc/Y%y4/M%m2/%s.zeit.reg.%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/etc/Y%y4/M%m2/%s.asens%c_%c%c%c.log.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/etc/Y%y4/M%m2/%s.ods%c_%c%c%c.log.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.txt
#
#
#                 -----------------------------
#                     GEOS-5 GCM OUTPUT FILES
#                 -----------------------------
#
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.diag_sfc.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.diag_eta.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.diag_eta_edge.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tend_eta.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg2d_met_x.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3d_cld_v.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3d_dyn_v.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3d_prs_v.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3d_met_e.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3d_mst_v.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3d_tmp_v.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3d_wnd_v.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.inst3d_iau_e.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.inst3d_iau_v.%y4%m2%d2_%h2%n2z.$ncsuffix
#
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3d_cld_p.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3d_dyn_p.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3d_mst_p.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3d_prs_p.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3d_tmp_p.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3d_wnd_p.%y4%m2%d2_%h2%n2z.$ncsuffix
#
#             -----------------------------------
#               GEOS-5 GCM OUTPUT FILES (MERRA)
#             -----------------------------------
#
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.const_2d_asm_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.const_2d_asm_Nx.%y4%m2%d2_%h2%n2z.bin
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.const_2d_asm_Nx.%y4%m2%d2_%h2%n2z.ctl
#
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.inst3_3d_asm_Cp.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.inst3_3d_asm_Cp.%y4%m2%d2_%h2%n2z.bin
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.inst3_3d_asm_Cp.%y4%m2%d2_%h2%n2z.ctl
#
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_cld_Cp.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_cld_Cp.%y4%m2%d2_%h2%n2z.bin
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_cld_Cp.%y4%m2%d2_%h2%n2z.ctl
#
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_mst_Cp.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_mst_Cp.%y4%m2%d2_%h2%n2z.bin
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_mst_Cp.%y4%m2%d2_%h2%n2z.ctl
#
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_rad_Cp.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_rad_Cp.%y4%m2%d2_%h2%n2z.bin
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_rad_Cp.%y4%m2%d2_%h2%n2z.ctl
#
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_trb_Cp.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_trb_Cp.%y4%m2%d2_%h2%n2z.bin
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_trb_Cp.%y4%m2%d2_%h2%n2z.ctl
#
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_tdt_Cp.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_tdt_Cp.%y4%m2%d2_%h2%n2z.bin
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_tdt_Cp.%y4%m2%d2_%h2%n2z.ctl
#
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_udt_Cp.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_udt_Cp.%y4%m2%d2_%h2%n2z.bin
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_udt_Cp.%y4%m2%d2_%h2%n2z.ctl
#
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_qdt_Cp.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_qdt_Cp.%y4%m2%d2_%h2%n2z.bin
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_qdt_Cp.%y4%m2%d2_%h2%n2z.ctl
#
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_odt_Cp.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_odt_Cp.%y4%m2%d2_%h2%n2z.bin
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_odt_Cp.%y4%m2%d2_%h2%n2z.ctl
#
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg1_2d_slv_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg1_2d_slv_Nx.%y4%m2%d2_%h2%n2z.bin
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg1_2d_slv_Nx.%y4%m2%d2_%h2%n2z.ctl
#
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg1_2d_flx_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg1_2d_flx_Nx.%y4%m2%d2_%h2%n2z.bin
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg1_2d_flx_Nx.%y4%m2%d2_%h2%n2z.ctl
#
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg1_2d_rad_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg1_2d_rad_Nx.%y4%m2%d2_%h2%n2z.bin
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg1_2d_rad_Nx.%y4%m2%d2_%h2%n2z.ctl
#
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg1_2d_lnd_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg1_2d_lnd_Nx.%y4%m2%d2_%h2%n2z.bin
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg1_2d_lnd_Nx.%y4%m2%d2_%h2%n2z.ctl
#
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg1_2d_lfo_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg1_2d_lfo_Nx.%y4%m2%d2_%h2%n2z.bin
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg1_2d_lfo_Nx.%y4%m2%d2_%h2%n2z.ctl
#
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.inst1_2d_lfo_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.inst1_2d_lfo_Nx.%y4%m2%d2_%h2%n2z.bin
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.inst1_2d_lfo_Nx.%y4%m2%d2_%h2%n2z.ctl
#
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg1_2d_int_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg1_2d_int_Nx.%y4%m2%d2_%h2%n2z.bin
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg1_2d_int_Nx.%y4%m2%d2_%h2%n2z.ctl
#
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.inst1_2d_int_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.inst1_2d_int_Nx.%y4%m2%d2_%h2%n2z.bin
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.inst1_2d_int_Nx.%y4%m2%d2_%h2%n2z.ctl
#
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.const_2d_chm_Fx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.const_2d_chm_Fx.%y4%m2%d2_%h2%n2z.bin
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.const_2d_chm_Fx.%y4%m2%d2_%h2%n2z.ctl
#
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_chm_Fv.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_chm_Fv.%y4%m2%d2_%h2%n2z.bin
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_chm_Fv.%y4%m2%d2_%h2%n2z.ctl
#
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_chm_Fe.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_chm_Fe.%y4%m2%d2_%h2%n2z.bin
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_chm_Fe.%y4%m2%d2_%h2%n2z.ctl
#
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_2d_chm_Fx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_2d_chm_Fx.%y4%m2%d2_%h2%n2z.bin
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_2d_chm_Fx.%y4%m2%d2_%h2%n2z.ctl
#
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.inst3_3d_chm_Ne.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.inst3_3d_chm_Ne.%y4%m2%d2_%h2%n2z.bin
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.inst3_3d_chm_Ne.%y4%m2%d2_%h2%n2z.ctl
#
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_chm_Nv.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_chm_Nv.%y4%m2%d2_%h2%n2z.bin
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_chm_Nv.%y4%m2%d2_%h2%n2z.ctl
#
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_chm_Ne.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_chm_Ne.%y4%m2%d2_%h2%n2z.bin
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_chm_Ne.%y4%m2%d2_%h2%n2z.ctl
#
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_2d_glc_Nx.%y4%m2%d2_%h2%n2z.nc4
#
#
#             --------------------------------------
#               GEOS-5 GCM OUTPUT FILES (FORECAST)
#             --------------------------------------
#
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.geosgcm_gwd.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.geosgcm_moist.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.geosgcm_phys.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.geosgcm_prog.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.geosgcm_rad.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.geosgcm_surf.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.geosgcm_turb.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.sfc_export.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z

\${PESTOROOT}%s/prog/Y%y4/M%m2/%s.diag_sfc.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/%s.diag_eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/%s.diag_eta_edge.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/%s.diag_sfc.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/%s.diag_eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/%s.diag_eta_edge.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
#
#               -------------------------
#                    LSM FILES
#               -------------------------
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.lsm.sfc.%y4%m2%d2.$ncsuffix
#
#                 ----------------------
#                     LISTING (FORECAST)
#                 ----------------------
#
\${PESTOROOT}%s/etc/Y%y4/M%m2/%s.gcm.log.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.txt
#
#             -----------------------------------
#               GEOS-5 GCM OUTPUT FILES (YOTC)
#             -----------------------------------
#
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.const_2d_asm_Cx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.const_2d_asm_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.const_2d_chm_Fx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.inst1_2d_int_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.inst3_3d_asd_Np.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.inst3_3d_asm_Np.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.inst3_3d_asq_Np.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg1_2d_flx_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg1_2d_int_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg1_2d_lnd_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg1_2d_ocn_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg1_2d_rad_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg1_2d_slv_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_cld_Np.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_mst_Np.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_odt_Np.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_qdt_Np.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_rad_Np.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_tdt_Np.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_trb_Np.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_udt_Np.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.statD_2d_slv_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
#
#             -----------------------------------
#               GEOS-5 GCM OUTPUT FILES (GloPac)
#             -----------------------------------
#
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.inst3_3d_asm_Nv.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_asm_Nv.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.inst3_3d_asm_Cp.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_cld_Nv.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_cld_Cp.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_mst_Ne.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_mst_Nv.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_mst_Cp.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_rad_Nv.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_rad_Cp.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_trb_Ne.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_trb_Cp.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_tdt_Nv.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_tdt_Cp.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_udt_Nv.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_udt_Cp.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_qdt_Nv.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_qdt_Cp.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_odt_Nv.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_odt_Cp.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg1_2d_slv_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg1_2d_flx_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg1_2d_rad_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg1_2d_lnd_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg1_2d_ocn_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg1_2d_csp_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
#
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.inst3_3d_aer_Nv.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.inst3_3d_chm_Nv.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.inst3_3d_tag_Nv.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.tavg3_2d_aer_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.tavg3_2d_chm_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.tavg3_2d_tag_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.tavg3_3d_aer_Cp.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.tavg3_3d_chm_Cp.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.tavg3_3d_tag_Cp.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.inst1_2d_hwl_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
#
#
#
#                 -----------------------
#                 FROM 5_7_2 HISTORY FILE
#                 -----------------------
#
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.inst1_2d_asm_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.inst3_2d_met_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.inst3_3d_asm_Np.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.inst3_3d_asm_Nv.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_asm_Nv.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg1_2d_flx_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg1_2d_lnd_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg1_2d_ocn_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg1_2d_rad_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg1_2d_slv_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.tavg3_3d_aer_Np.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.tavg3_3d_chm_Np.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_cld_Cp.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_cld_Nv.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_ext_Np.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_lsf_Ne.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_lsf_Nv.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_mst_Cp.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_mst_Ne.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_mst_Nv.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_odt_Cp.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_odt_Nv.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_qdt_Cp.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_qdt_Nv.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_rad_Cp.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_rad_Nv.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.tavg3_3d_tag_Np.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_tdt_Cp.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_tdt_Nv.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_trb_Cp.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_trb_Ne.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_udt_Cp.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.tavg3_3d_udt_Nv.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/etc/Y%y4/M%m2/%s.ana_aod.log.%y4%m2%d2_%h2z.txt


\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.inst3_2d_gas_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.inst3_3d_gas_Nv.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.inst1_2d_hwl_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.inst3_3d_aer_Nv.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.inst3_3d_chm_Nv.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.inst3_3d_tag_Nv.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.tavg1_2d_aer_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.tavg1_2d_adg_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.tavg1_2d_chm_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.tavg3_2d_tag_Nx.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.tavg3_3d_nav_Nv.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/%s.tavg3_3d_nav_Ne.%y4%m2%d2_%h2%n2z.$ncsuffix

#               ---------------------
#                    RC FILES
#               ---------------------
\${PESTOROOT}%s/rc/Y%y4/M%m2/%s.AGCM.rc.%y4%m2%d2_%h2z
\${PESTOROOT}%s/rc/Y%y4/M%m2/%s.Chem_Registry.rc.%y4%m2%d2_%h2z
\${PESTOROOT}%s/rc/Y%y4/M%m2/%s.GEOS_ChemGridComp.rc.%y4%m2%d2_%h2z
\${PESTOROOT}%s/rc/Y%y4/M%m2/%s.HISTORY.rc.%y4%m2%d2_%h2z
\${PESTOROOT}%s/rc/Y%y4/M%m2/%s.fvcore_layout.rc.%y4%m2%d2_%h2z
\${PESTOROOT}%s/rc/Y%y4/M%m2/%s.fvpsas.rc.%y4%m2%d2_%h2z
\${PESTOROOT}%s/rc/Y%y4/M%m2/%s.g5convert.rc.%y4%m2%d2_%h2z
\${PESTOROOT}%s/rc/Y%y4/M%m2/%s.gmao_global_coinfo.rc.%y4%m2%d2_%h2z
\${PESTOROOT}%s/rc/Y%y4/M%m2/%s.gmao_global_convinfo.rc.%y4%m2%d2_%h2z
\${PESTOROOT}%s/rc/Y%y4/M%m2/%s.gmao_global_ozinfo.rc.%y4%m2%d2_%h2z
\${PESTOROOT}%s/rc/Y%y4/M%m2/%s.gmao_global_pcpinfo.rc.%y4%m2%d2_%h2z
\${PESTOROOT}%s/rc/Y%y4/M%m2/%s.gmao_global_satinfo.%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/rc/Y%y4/M%m2/%s.sac.nl.%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/rc/Y%y4/M%m2/%s.gsi.rc.%y4%m2%d2_%h2z
\${PESTOROOT}%s/rc/Y%y4/M%m2/%s.obsys.rc.%y4%m2%d2_%h2z
#
#                 ---------------------------
#                 PROGNOSTIC FILES (FORECAST)
#                 ---------------------------
#
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.prog.inst3d_met_p.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.prog.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.prog.eta.%y4%m2%d2_%h2z+%y4%m2%d2.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.prog.prs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.prog.prs.%y4%m2%d2_%h2z+%y4%m2%d2.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.prog.sfc.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.prog.sfc.%y4%m2%d2_%h2z+%y4%m2%d2.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.vtx.mix.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.vtx.mix.%y4%m2%d2_%h2z+%y4%m2%d2.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.vtx.prs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.vtx.prs.%y4%m2%d2_%h2z+%y4%m2%d2.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.ana.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.inst3_3d_aiau_Np.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.nc4
#
#                 ---------------------------
#                 DIAGNOSTIC FILES (FORECAST)
#                 ---------------------------
#
\${PESTOROOT}%s/diag/Y%y4/M%m2/D%d2/H%h2/%s.diag.sfc.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/D%d2/H%h2/%s.diag.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/D%d2/H%h2/%s.diag.prs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
#
#                 ---------------------------
#                    SINGULAR VECTOR FILES
#                 ---------------------------
#
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.svalu.%y4%m2%d2.txt
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.fvpert.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.fvpert.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.%s.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.icnop.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.fcnop.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.isvec.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.%s.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.fsvec.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.%s.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.fsens_%c%c%c.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.fsens_%c%c%c.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.Jnormf.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.Jgradf_%c%c%c.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.fsensainc_%c%c%c.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.fsensainc_%c%c%c.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.Jnormfainc.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.Jgradfainc_%c%c%c.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.Xdot_%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.Mferr_%c%c%c.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.EMferr_%c%c%c.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.EMferrnorm.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.txt
#
\${PESTOROOT}%s/obs/Y%y4/M%m2/%s.diag_conv_%y4%m2%d2_%h20000z.tar
#
EOF

   close(ARC);

# make identical copy for flexibility
  cp("$fvhome/run/silo.arc","$fvhome/run/mstorage.arc")
    || die ">>> ERROR <<< $!";

}

#=======================================================================
sub arch_fcst {

   open(ARC,">$fvhome/run/fcststorage.arc")
   || die "Cannot create $fvhome/run/fcststorage.arc: $!";

   print ARC <<"EOF";
#
# Archiving rules for fvDAS output.
#
# This is a PESTO (Put Experiment in Mass Storage) resource file.
#
# The environment variable PESTOROOT refers to the destination archive
# location, e.g.,
#
# a) for moving files to SILO:
#    setenv PESTOROOT '/scratch1/dasilva'
#
# b) for moving files to MASS STORAGE:
#    setenv PESTOROOT 'dasilva\@helios1.nas.nasa.gov:'
#
# This file has been automatically generated by fvsetup.
# $nametag
#...........................................................................
#
#         ---------------------------------------------
#            NCEP/ECMWF ANALYSIS CONVERT TO GEOS GRID
#         ---------------------------------------------
#
\${PESTOROOT}%s/ana/Y%y4/M%m2/gfs.ana.eta.%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/gfs.inst3_3d_ana_Np.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/ecmwf.ana.eta.%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/ecmwf.inst3_3d_ana_Np.%y4%m2%d2_%h2%n2z.$ncsuffix
#
#                 ----------------------
#                     LISTING (FORECAST)
#                 ----------------------
#
\${PESTOROOT}%s/etc/Y%y4/M%m2/%s.gcm.log.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.txt
#
#                 ---------------------------
#                 PROGNOSTIC FILES (FORECAST)
#                 ---------------------------
#
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.inst3_3d_asm_Np.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.prog.inst3d_met_p.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.prog.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.prog.eta.%y4%m2%d2_%h2z+%y4%m2%d2.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.prog.prs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.prog.prs.%y4%m2%d2_%h2z+%y4%m2%d2.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.prog.sfc.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.prog.sfc.%y4%m2%d2_%h2z+%y4%m2%d2.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.vtx.mix.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.vtx.mix.%y4%m2%d2_%h2z+%y4%m2%d2.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.vtx.prs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.vtx.prs.%y4%m2%d2_%h2z+%y4%m2%d2.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.ana.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.inst3_3d_aiau_Np.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.nc4
#
#                 -----------------------------
#                 STORM TRACKING FORECAST FILES
#                 -----------------------------
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.trak.%c%c%c.all.%y4%m2%d2%h2+%y4%m2%d2%h2.txt
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.trak.%c%c%c.atcf.%y4%m2%d2%h2+%y4%m2%d2%h2.txt
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.trak.%c%c%c.atcfunix.%y4%m2%d2%h2+%y4%m2%d2%h2.txt
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.trak.%c%c%c.radii.%y4%m2%d2%h2+%y4%m2%d2%h2.txt
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.tcvitals.%y4%m2%d2%h2+%y4%m2%d2%h2.txt
#
#
#                 ---------------------------
#                 DIAGNOSTIC FILES (FORECAST)
#                 ---------------------------
#
\${PESTOROOT}%s/diag/Y%y4/M%m2/D%d2/H%h2/%s.diag.sfc.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/D%d2/H%h2/%s.diag.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/diag/Y%y4/M%m2/D%d2/H%h2/%s.diag.prs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
#
#                 ---------------------------
#                 TRAJECTORY FILES (FORECAST)
#                 ---------------------------
#
#\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.itraj.lcv.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
#\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.ftraj.lcv.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
#\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.traj.lcv.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
#\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.traj.lcv.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
#\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.mtrj.lcv.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
#\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.ptrj.prs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
#\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.ptrj.prs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
#
#                 ---------------------------
#                    SINGULAR VECTOR FILES
#                 ---------------------------
#
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.svalu.%y4%m2%d2.txt
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.fvpert.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.fvpert.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.%s.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.icnop.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.fcnop.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.isvec.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.%s.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.fsvec.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.%s.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.fsens_%c%c%c.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.fsens_%c%c%c.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.Jnormf.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.Jgradf_%c%c%c.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.fsensainc_%c%c%c.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.fsensainc_%c%c%c.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.Jnormfainc.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.Jgradfainc_%c%c%c.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.Xdot_%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.Mferr_%c%c%c.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.EMferr_%c%c%c.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.EMferrnorm.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.txt
#
#                 ---------------------------
#                  CHEMISTRY FILES (FORECAST)
#                 ---------------------------
#
\${PESTOROOT}%s/chem/Y%y4/M%m2/D%d2/H%h2/%s.co.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/D%d2/H%h2/%s.aero.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/D%d2/H%h2/%s.co_diag.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/D%d2/H%h2/%s.aero_diag.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/D%d2/H%h2/%s.co.prs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/D%d2/H%h2/%s.aero.prs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/D%d2/H%h2/%s.co_diag.prs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/D%d2/H%h2/%s.aero_diag.prs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/D%d2/H%h2/%s.co_diag.sfc.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/D%d2/H%h2/%s.aero_diag.sfc.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/D%d2/H%h2/%s.hyperwall.sfc.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
#
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.inst3_3d_met_NP.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.inst3_3d_wxm_Np.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.inst6_3d_asm_Cp.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.tavg3_2d_met_Nx.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
#
#                 ---------------------------
#                  GloPac FILES (FORECAST)
#                 ---------------------------
#
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.inst1_2d_asm_Nx.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.inst3_3d_trj_Nv.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.inst3_3d_asm_Cp.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.tavg1_2d_slv_Nx.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.tavg1_2d_flx_Nx.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.tavg1_2d_rad_Nx.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.tavg1_2d_lnd_Nx.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.tavg1_2d_lfo_Nx.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.inst1_2d_lfo_Nx.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.tavg1_2d_ocn_Nx.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
#
\${PESTOROOT}%s/chem/Y%y4/M%m2/D%d2/H%h2/%s.tavg3_2d_adg_Nx.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/D%d2/H%h2/%s.tavg3_3d_aer_Cp.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/D%d2/H%h2/%s.tavg3_3d_chm_Cp.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/D%d2/H%h2/%s.tavg3_3d_tag_Cp.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/chem/Y%y4/M%m2/D%d2/H%h2/%s.inst1_2d_hwl_Nx.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
#
#
#             --------------------------------------
#               GEOS-5 GCM OUTPUT FILES (FORECAST)
#             --------------------------------------
#
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.geosgcm_gwd.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.geosgcm_moist.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.geosgcm_phys.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.geosgcm_prog.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.geosgcm_rad.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.geosgcm_surf.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.geosgcm_turb.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z
\${PESTOROOT}%s/diag/Y%y4/M%m2/%s.sfc_export.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z

\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.diag_sfc.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.diag_eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.diag_eta_edge.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.diag_sfc.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.diag_eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.diag_eta_edge.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
#
#
EOF

   close(ARC);

}

#=======================================================================
sub arch_fsens {

   open(ARC,">$fvhome/run/fsenstorage.arc")
   || die "Cannot create $fvhome/run/fsenstorage.arc: $!";

   print ARC <<"EOF";
#
# Archiving rules for fvDAS output.
#
# This is a PESTO (Put Experiment in Mass Storage) resource file.
#
# The environment variable PESTOROOT refers to the destination archive
# location, e.g.,
#
# a) for moving files to SILO:
#    setenv PESTOROOT '/scratch1/dasilva'
#
# b) for moving files to MASS STORAGE:
#    setenv PESTOROOT 'dasilva\@helios1.nas.nasa.gov:'
#
# This file has been automatically generated by fvsetup.
# $nametag
#...........................................................................
#
#                 ---------------------------
#                 TRAJECTORY FILES (FORECAST)
#                 ---------------------------
#
#\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.itraj.lcv.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
#\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.ftraj.lcv.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
#\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.traj.lcv.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
#\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.traj.lcv.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
#\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.mtrj.lcv.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
#\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.ptrj.prs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2%n2z.$ncsuffix
#\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.ptrj.prs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
#
#                 ---------------------------
#                    SINGULAR VECTOR FILES
#                 ---------------------------
#
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.svalu.%y4%m2%d2.txt
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.fvpert.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.fvpert.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.%s.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.icnop.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.fcnop.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.isvec.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.%s.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.fsvec.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.%s.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.fsens_%c%c%c.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.fsens_%c%c%c.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.Jnormf.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.Jgradf_%c%c%c.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.fsensainc_%c%c%c.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.fsensainc_%c%c%c.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.Jnormfainc.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.Jgradfainc_%c%c%c.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.Xdot_%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.Mferr_%c%c%c.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.EMferr_%c%c%c.eta.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/prog/Y%y4/M%m2/D%d2/H%h2/%s.EMferrnorm.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.txt
#
EOF

   close(ARC);

}

#=======================================================================
sub arch_asens {

   return 0 unless ( $doasens );

   open(ARC,">$fvhome/run/asenstorage.arc")
   || die "Cannot create $fvhome/run/asenstorage.arc: $!";

   print ARC <<"EOF";
#
# Archiving rules for fvDAS output.
#
# This is a PESTO (Put Experiment in Mass STOrage) resource file.
#
# The environment variable PESTOROOT refers to the destination archive
# location, e.g.,
#
# a) for moving files to SILO:
#    setenv PESTOROOT '/scratch1/dasilva'
#
# b) for moving files to MASS STORAGE:
#    setenv PESTOROOT 'dasilva\@helios1.nas.nasa.gov:'
#
# This file has been automatically generated by fvsetup.
# $nametag
#...........................................................................
#
\${PESTOROOT}%s/etc/Y%y4/M%m2/%s.asens%c_%c%c%c.log.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/etc/Y%y4/M%m2/%s.asens%c_%c%c%c%c%c.log.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/etc/Y%y4/M%m2/%s.asens%c%c%c%c_%c%c%c.log.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/etc/Y%y4/M%m2/%s.asens%c%c%c%c_%c%c%c%c%c.log.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/etc/Y%y4/M%m2/%s.ods%c_%c%c%c.log.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.txt
#
#                   --------------------------------
#                   GSI SENSITIVITY DIAGNOSTIC FILES
#                   --------------------------------
#
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_atms_%c%c%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_cris-fsr_%c%c%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_cris_npp_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_conv_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_gps_bnd_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_pcp_ssmi_%c%c%c%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_pcp_tmi_%c%c%c%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_seviri_m%c%c_%c%c%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_sbuv%c_%c%c%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_omi_aura_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_hirs%c_%c%c%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_hirs%c_metop-%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_hirs%c_tirosn_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_gmi_gpm_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_gome%c_metop-%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_iasi%c_metop-%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_sndr_%c%c%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_sndr_g%c%c_prep_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_imgr_%c%c%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_airs_aqua_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_msu_%c%c%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_msu_tirosn_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_amsu%c_%c%c%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_amsua_aqua_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_amsua_metop-%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_mhs_%c%c%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_mhs_metop-%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_ssmi_%c%c%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_amsr2_gcom-w1_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_amsre_aqua_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_ssmis_%c%c%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_sndrd%c_%c%c%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_ssu_%c%c%c_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_ssu_tirosn_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diag_tmi_trmm_%c%c%c_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.bin
#
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_airs_aqua.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_amsr2_gcom-w1.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_amsre_%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_amsu%c_%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_amsua_aqua.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_amsua_metop-%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_atms_%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_avhrr_%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_avhrr_metop-%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_cris-fsr_%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_cris_npp.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_conv.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_gmi_gpm.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_gome_metop-%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_gps_bnd.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_gps_ref.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_hirs%c_%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_hirs%c_metop-%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_hirs%c_tirosn.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_iasi_metop-%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_imgr_g%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_mhs_%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_mhs_metop-%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_mls55_aura.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_msu_%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_msu_tirosn.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_omi_aura.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_omieff_aura.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_ompslpuv_npp.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_ompslpvis_npp.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_ompslpnm_npp.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_ompslpnp_npp.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_ompsnm_npp.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_ompsnmeff_npp.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_ompsnp_npp.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_ompsnpnc_npp.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_o3lev_aura.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_pcp_ssmi_dmsp.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_pcp_tmi_trmm.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_pcp_tmi_trmm_%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_seviri_m%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_sbuv%c_%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_sndrd%c_g%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_sndr_g%c%c_prep.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_ssmi_%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_ssmis_%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_ssu_%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_ssu_tirosn.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_tmi_trmm.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_conv_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_gps_bnd_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_pcp_ssmi_%c%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_pcp_tmi_%c%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_sbuv%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_omi_aura_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_hirs%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_hirs%c_metop-%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_hirs%c_tirosn_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_sndr_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_sndr_g%c%c_prep_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_imgr_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_airs_aqua_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_msu_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_msu_tirosn_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_amsu%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_amsua_aqua_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_mhs_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_ssmi_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_amsr2_gcom-w1_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_amsre_aqua_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_ssmis_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_sndrD%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_ssu_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_ssu_tirosn_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_tmi_trmm_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_gmi_gpm_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_conv_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_gps_bnd_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_pcp_ssmi_%c%c%c%c_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_pcp_tmi_%c%c%c%c_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_sbuv%c_%c%c%c_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_omi_aura_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_hirs%c_%c%c%c_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_hirs%c_metop-%c_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_hirs%c_tirosn_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_sndr_%c%c%c_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_sndr_g%c%c_prep_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_imgr_%c%c%c_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_airs_aqua_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_msu_%c%c%c_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_msu_tirosn_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_amsu%c_%c%c%c_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_amsua_aqua_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_mhs_%c%c%c_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_ssmi_%c%c%c_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_amsr2_gcom-w1_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_amsre_aqua_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_ssmis_%c%c%c_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_sndrD%c_%c%c%c_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_ssu_%c%c%c_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_ssu_tirosn_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_tmi_trmm_%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c_gmi_gpm%c%c%c_%c%c%c%c.sigo.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_conv_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_gps_bnd_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_pcp_ssmi_%c%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_pcp_tmi_%c%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_sbuv%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_omi_aura_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_hirs%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_hirs%c_metop-%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_hirs%c_tirosn_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_sndr_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_sndr_g%c%c_prep_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_imgr_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_airs_aqua_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_msu_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_msu_tirosn_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_amsu%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_amsua_aqua_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_mhs_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_ssmi_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_amsr2_gcom-w1_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_amsre_aqua_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_ssmis_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_sndrD%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_ssu_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c_ssu_tirosn_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_conv_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_gps_bnd_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_pcp_ssmi_%c%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_pcp_tmi_%c%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_sbuv%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_omi_aura_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_hirs%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_hirs%c_metop-%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_hirs%c_tirosn_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_sndr_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_sndr_g%c%c_prep_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_imgr_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_airs_aqua_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_msu_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_msu_tirosn_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_amsu%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_amsua_aqua_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_mhs_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_ssmi_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_amsr2_gcom-w1_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_amsre_aqua_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_ssmis_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_sndrD%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_ssu_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c_%c%c%c%c%c_ssu_tirosn_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_conv_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_gps_bnd_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_pcp_ssmi_%c%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_pcp_tmi_%c%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_sbuv%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_omi_aura_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_hirs%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_hirs%c_metop-%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_hirs%c_tirosn_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_sndr_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_sndr_g%c%c_prep_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_imgr_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_airs_aqua_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_msu_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_msu_tirosn_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_amsu%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_amsua_aqua_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_mhs_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_ssmi_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_amsr2_gcom-w1_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_amsre_aqua_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_ssmis_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_sndrD%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_ssu_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c_ssu_tirosn_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_conv_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_gps_bnd_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_pcp_ssmi_%c%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_pcp_tmi_%c%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_sbuv%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_omi_aura_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_hirs%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_hirs%c_metop-%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_hirs%c_tirosn_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_sndr_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_sndr_g%c%c_prep_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_imgr_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_airs_aqua_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_msu_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_msu_tirosn_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_amsu%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_amsua_aqua_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_mhs_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_ssmi_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_amsr2_gcom-w1_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_amsre_aqua_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_ssmis_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_sndrD%c_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_ssu_%c%c%c_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.imp%c%c%c%c_%c%c%c%c%c_ssu_tirosn_%c%c%c_%c%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z-%y4%m2%d2_%h2z.ods
#
EOF

   close(ARC);

}

#=======================================================================
sub arch_anasa {

   open(ARC,">$fvhome/run/anasastorage.arc")
   || die "Cannot create $fvhome/run/anasastorage.arc: $!";

   print ARC <<"EOF";
#
# Archiving rules for fvDAS output.
#
# This is a PESTO (Put Experiment in Mass STOrage) resource file.
#
# The environment variable PESTOROOT refers to the destination archive
# location, e.g.,
#
# a) for moving files to SILO:
#    setenv PESTOROOT '/scratch1/dasilva'
#
# b) for moving files to MASS STORAGE:
#    setenv PESTOROOT 'dasilva\@helios1.nas.nasa.gov:'
#
# This file has been automatically generated by fvsetup.
# $nametag
#...........................................................................
#
#  The following refer to stand-alone analysis in re-run mode
#
\${PESTOROOT}%s/etc/Y%y4/M%m2/%s.anasa.log.%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/etc/Y%y4/M%m2/%s.anasa_stats.log.%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/etc/Y%y4/M%m2/%s.odssa.log.%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/etc/Y%y4/M%m2/%s.zeitsa.reg.%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.anasa.satbias.%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.anasa.satbang.%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.anasa.satbiaspc.%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.anasa.acftbias.%y4%m2%d2_%h2z.txt 
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.anasa.eta.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.xincsa.eta.%y4%m2%d2_%h2%n2z.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.bbiassa.eta.%y4%m2%d2_%h2z.$ncsuffix
\${PESTOROOT}%s/ana/Y%y4/M%m2/%s.bbiassa.eta.%y4%m2%d2_%h2z.bin
\${PESTOROOT}%s/rs/Y%y4/M%m2/%s.agcmrstsa.%y4%m2%d2_%h2z.tar
#
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_airs_aqua.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_amsr2_gcom-w1.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_amsre_aqua.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_amsre_%c%c%c_aqua.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_amsua_aqua.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_amsua_metop-%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_amsu%c_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_avhrr_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_avhrr_metop-%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_atms_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_cris-fsr_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_cris_npp.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_conv.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_gmi_gpm.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_gome_metop-%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_gps_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_hirs%c_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_hirs%c_metop-%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_hirs%c_tirosn.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_hsb_aqua.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_iasi_metop-%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_imgr_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_mhs_metop-%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_mhs_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_mls55_aura.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_msu_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_msu_tirosn.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_omi_aura.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_omieff_aura.obs.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_o3lev_aura.obs.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_pcp_ssmi_%c%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_pcp_tmi_%c%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_pcp_tmi_trmm_%c%c%c.obs.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_sbuv%c_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_seviri_m%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_sndr_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_sndr_g%c%c_prep.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_sndrd%c_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_ssmi_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_ssmis_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_ssu_%c%c%c.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_ssu_tirosn.%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_tmi_trmm.%y4%m2%d2_%h2z.ods
#
#  The following refer to stand-alone analysis in prognostic mode
#
\${PESTOROOT}%s/etc/Y%y4/M%m2/%s.anasa.log.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/etc/Y%y4/M%m2/%s.anasa_stats.log.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/etc/Y%y4/M%m2/%s.odssa.log.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.txt
\${PESTOROOT}%s/etc/Y%y4/M%m2/%s.zeitsa.reg.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.txt
#
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_airs_aqua.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_amsr2_gcom-w1.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_amsre_aqua.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_amsre_%c%c%c_aqua.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_amsua_aqua.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_amsua_metop-%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_amsu%c_%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_avhrr_%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_avhrr_metop-%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_atms_%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_cris-fsr_%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_cris_npp.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_conv.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_gmi_gpm.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_gome_metop-%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_gps_%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_hirs%c_%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_hirs%c_metop-%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_hirs%c_tirosn.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_hsb_aqua.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_iasi_metop-%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_imgr_%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_mhs_metop-%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_mhs_%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_mls55_aura.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_msu_%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_msu_tirosn.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_omi_aura.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_omieff_aura.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_o3lev_aura.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_pcp_ssmi_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_pcp_tmi_%c%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_pcp_ssmi_%c%c%c%c_%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_pcp_tmi_%c%c%c%c_%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_pcp_tmi_trmm_%c%c%c.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_sbuv%c_%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_sndr_%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_sndr_g%c%c_prep.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_sndrd%c_%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_ssmi_%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_ssmis_%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_ssu_%c%c%c.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_ssu_tirosn.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_tmi_trmm.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#
# The following for doing observation-minus-forecast diagnostics
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_airs_aqua_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_amsr2_gcom-w1_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_amsre_aqua_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_amsua_aqua_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_amsua_metop-%c_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_amsu%c_%c%c%c_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_avhrr_%c%c%c_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_avhrr_metop-%c_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_atms_%c%c%c_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_cris-fsr_%c%c%c_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_cris_npp_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_conv_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_gmi_gpm_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_gome_metop-%c_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_gps_%c%c%c_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_hirs%c_%c%c%c_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_hirs%c_metop-%c_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_hirs%c_tirosn_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_hsb_aqua_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_iasi_metop-%c_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_imgr_%c%c%c_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_mhs_metop-%c_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_mhs_%c%c%c_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_mls55_aura_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_msu_%c%c%c_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_msu_tirosn_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_omi_aura_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_omieff_aura_ges.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_o3lev_aura_ges.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_pcp_ssmi_%c%c%c%c_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_pcp_tmi_%c%c%c%c_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_pcp_ssmi_%c%c%c%c_%c%c%c_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_pcp_tmi_%c%c%c%c_%c%c%c_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_pcp_tmi_trmm_%c%c%c_ges.obs.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_sbuv%c_%c%c%c_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_sndr_%c%c%c_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_sndr_g%c%c_ges_prep.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_sndrd%c_%c%c%c_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_ssmi_%c%c%c_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_ssmis_%c%c%c_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_ssu_%c%c%c_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_ssu_tirosn_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
#\${PESTOROOT}%s/obs/Y%y4/M%m2/D%d2/H%h2/%s.diagsa_tmi_trmm_ges.%y4%m2%d2_%h2z+%y4%m2%d2_%h2z.ods
EOF

   close(ARC);

}
#=======================================================================
sub arch_stageana {

   return 0 if ( $do4dvar );

   open(ARC,">$fvhome/run/stageana.arc")
   || die "Cannot create $fvhome/run/stageana.arc: $!";

   print ARC <<"EOF";
#
#...........................................................................
#
\${PESTOROOT}/%s.ana.eta.%y4%m2%d2_%h2%n2z.$ncsuffix
#
EOF

   close(ARC);

}

#=======================================================================
sub create_archscript {
    my ($proot);

    if ($DAO == 1) {     #nas or gsfc accounts
        if($GFLAG == 1) {  #NCCS Account
            $proot = "$ARCHIVE";
        } else {
            $proot = "lou-via-br2:/u/$user" if $siteName eq "pfe";
            $proot = "lou:/u/$user"         if $siteName eq "cfe";
        }
    } else { $proot = $mhost.":"; }
    print("    DAO=$DAO; GFLAG=$GFLAG; proot=$proot; mhost=$mhost\n");

    open(SCRIPT,">$fvhome/run/fvarchive.j") or
        die ">>> ERROR <<< cannot write $fvhome/run/fvarchive.j";

print  SCRIPT <<"EOF";
#!/bin/csh
#
# ------------------------------
#$group_list
##$export_none
#$jobqueue2
##SBATCH --constraint=cssrw
#SBATCH --time=${arcwallclk}:00
#SBATCH --job-name=arch_$expid
#SBATCH --output=arch_$expid.log.o%j.txt
#SBATCH --ntasks=$pbs_arcncpu
#PBS -N arch_$expid
#PBS -o arch_$expid.log.o%j.txt
#PBS -l ncpus=$pbs_arcncpu
#PBS -S /bin/csh
#PBS -j oe
# ------------------------------
#
# PBS front end for fvarchive().
#
# $nametag
#------------------------------------------------------------------
set echo
setenv GID $gid
setenv FVHOME $fvhome  # experiment home directory
setenv FVROOT  `cat \$FVHOME/.FVROOT`
setenv FVBINDIR \$FVROOT/bin 
setenv NCSUFFIX $ncsuffix

cd  # start from home otherwise the which's get messed up in SLURM
unset echo
if (-e \$FVHOME/run/FVDAS_Run_Config) source \$FVHOME/run/FVDAS_Run_Config
set echo
set path = ( \$path \$FVROOT/bin )

# A bit sad that this needs to be here instead of set in the env
# --------------------------------------------------------------
if ( -e /etc/os-release ) then
  setenv PERL5LIB /usr/lib/perl5/5.18.2/CPAN
endif

# defaults
#---------
if (! \$\?arch_type) set arch_type = "GENERIC"
set atype = "mstorage.arc"

# archive resource file
#----------------------
if ( \$arch_type == "ADAS"  ) set atype = "mstorage.arc"
if ( \$arch_type == "ANASA" ) set atype = "anasastorage.arc"
if ( \$arch_type == "ASENS" ) set atype = "asenstorage.arc"
if ( \$arch_type == "FCST"  ) set atype = "fcststorage.arc"
if ( \$arch_type == "FSENS" ) set atype = "fsenstorage.arc"
if ( \$arch_type == "MNTHLY") set atype = "monthly.arc"
if ( \$arch_type == "MKEEP" ) set atype = "monthly.keep.arc"
if ( \$arch_type == "OANASA") set atype = "oanasa.arc"
if ( \$arch_type == "OANA"  ) set atype = "oana.arc"

# tar the log files for the prefetch, means, and tarandclean
# operations before archiving the tarred input files
#-----------------------------------------------------------
if ( \$arch_type == "MNTHLY" ) then
    if (! \$\?arch_date) then
        echo "Error in \$0; arch_date variable not defined."
        exit 1
    endif

    set yyyy = `echo \$arch_date | cut -c1-4`
    set mm   = `echo \$arch_date | cut -c5-6`

    # tar log files
    #--------------
    cd \$FVHOME/etc/Y\$yyyy/M\$mm
    foreach label ( prefetch means tarandclean )
        ls \$EXPID.\$label.*.\$yyyy\$mm.log.\$mmid.txt >& /dev/null
        if (! \$status) then
            set log_tarfile = \$EXPID.\$label.\$yyyy\$mm.log.txt.\$mmid.tar
            if (-e \$log_tarfile) then
                echo "Error in \$0; \$log_tarfile already exists"
                exit 1
            endif
            set list = ( \$EXPID.\$label.*.\$yyyy\$mm.log.\$mmid.txt )
            tar rf \$log_tarfile --remove-files \$list
        endif
    end
endif

# archive data date
#------------------
set adate = ""
if (\$\?arch_date) then
   set adate = "-d \$arch_date"
else
   set arch_date = "ALL DATES"
endif

# flags
#------
set flags = ""
if (\$arch_type == "MKEEP") set flags = "-v -p"

# archive command
#----------------
\$FVROOT/bin/fvarchive \$flags \$adate -r \$FVARCH -H \$FVHOME -a \$FVHOME/run/\$atype

if (\$status) then
   if ( \$?ERR ) then
      \$ERR -C 77 -E 4 -D "fvarchive.j ERROR copying \$arch_type files for \$arch_date to \$FVARCH."
      exit 77 
   endif
endif

# Submit Monthly Means job
# ------------------------
if ((\$arch_type == "ADAS") && (\$\?yyyymm) && (\$\?dd)) then

   if ("\$dd" == "01") then
      set arch_date = \$yyyymm\$dd
      set prev_date = `\$FVBINDIR/tick \$arch_date 000000 -1 0`
      set mean_date = `echo \$prev_date[1] | cut -c 1-6`

      set queueflag = ""
      if ($siteID == "nccs") set queueflag = "-q datamove"

      # defaults
      #---------
      if (! \$\?MONTHLY_MEANS )  set MONTHLY_MEANS  = 1
      if (! \$\?MONTHLY_TAR )    set MONTHLY_TAR    = 1
      if (! \$\?MONTHLY_PLOTS )  set MONTHLY_PLOTS  = 0
      if (! \$\?MONTHLY_RADMON ) set MONTHLY_RADMON = 0

      # create job script for monthly post processing
      #----------------------------------------------
      set monthlyPostTmpl = \$FVHOME/run/monthly.yyyymm.pl.tmpl
      if (! -e \$monthlyPostTmpl) then
          cp \$FVROOT/etc/monthly.yyyymm.pl.tmpl \$monthlyPostTmpl
      endif
      set monthlyPost = \$FVHOME/run/monthly.\$mean_date.pl

      # skip if monthly means script already exists
      #--------------------------------------------
      if (! -e \$monthlyPost) then

          cp \$monthlyPostTmpl \$monthlyPost
          chmod 744 \$monthlyPost

          # execute job script for monthly means processing
          #------------------------------------------------
          set flags = ""
          if (\$MONTHLY_MEANS)  set flags = "\$flags -means"
          if (\$MONTHLY_TAR)    set flags = "\$flags -tar"
          if (\$MONTHLY_PLOTS)  set flags = "\$flags -plots"
          if (\$MONTHLY_RADMON) set flags = "\$flags -radmon \$MONTHLY_RADMON"

          if ("\$flags" != "") \$monthlyPost \$flags
      endif  
   endif
endif

# successful completion
#----------------------
if ( \$?ERR ) then
   \$ERR -C 0 -E 0 -D "fvarchive.j NOTICE: \$arch_type archiving for \$arch_date Exiting normally."
endif
EOF

close(SCRIPT);
}

#=======================================================================
sub build_lnbcs {
  $mymerra2 = "";
  if ( $merra2 ) { $mymerra2 = "-merra2" };
  if ( $cubed ) {
     $cmd = "$fvbin/gen_lnbcs.pl -fvhome $fvhome -o lnbcs $mymerra2 -cubed $agcm_im $agcm_jm $ores $landbcs";
  } else {
     $cmd = "$fvbin/gen_lnbcs.pl -fvhome $fvhome -o lnbcs $mymerra2        $agcm_im $agcm_jm $ores $landbcs";
  }
  print "$cmd\n";
  system($cmd);
}

#=======================================================================
sub create_script {

 my ($i, $c, $DMGET);

  $os = uc $OSNAME;

# Threads and processes estimation for GCM
# ----------------------------------------
 if($ncpus >= 128) { @athread=(16, 14, 8, 4, 1); } else { @athread=(8, 4, 1); }
 if(`uname -n` =~ "halem" ) {
    $i = 1;
    @athread=(4, 4);
    $c = $athread[$i]; $ampi = $ncpus/$athread[$i];   # not going to hold for ncpus<4
 } else {
    for ($i=0;  $i<scalar(@athread); $i++) { # t:threads; m:mpi   mpiXthreads=ncpu
      $ampi = $ncpus/$athread[$i];  $c = $ncpus%$athread[$i];
      if ($c == 0) {last;}
    }
 }
 $ai = $i;       # a for GCM
 $athreads = $athread[$ai];

# Only 1 GCM thread in FVCHEM mode with more than 2 tracers
# ---------------------------------------------------------
if ( $fvchem && $lm > 2 ) {
          $ampi = $ncpus;
          $athreads = 1;
 }

# Threads and processes estimation for PSAS
# -----------------------------------------
 if($ncpus >= 128) { @pthread=(16, 8, 4, 1); } else { @pthread=(8, 4, 1); }
 if(`uname -n` =~ "halem" ) {
    $i = 1;
    @pthread=(4, 4);
    $c = $pthread[$i]; $pmpi = $ncpus/$pthread[$i];   # not going to hold for ncpus<4
 } else {
    for ($i=0;  $i<scalar(@pthread); $i++) { # t:threads; m:mpi   mpiXthreads=ncpu
      $pmpi = $ncpus/$pthread[$i];  $c = $ncpus%$pthread[$i];
      if ($c == 0) {
        if($pthread[$i] > $pmpi) {   # make pmpi a larger number
          $pthread[$i] = $pmpi;   $pmpi = $ncpus/$pthread[$i];
        }
        last;
      }
    }
 }
 $pi = $i;       # p for PSAS

 my $xncpus = $ncpus + $o_servers * $ncpus_per_node;

# Turn off some parallelization on discover
#------------------------------------------
 if ( ($siteID eq "nccs") || ($siteID eq "nas") ) {
     $paroff = 1;
 } else {
     $paroff = 0;
 }

# Batch wall-clock time setting
#------------------------------
 if    ($dbqueue)                       { $daswallclk = "1:00" }
 elsif ($hres eq "d" or $res eq "C180") { $daswallclk = "8:00" }
 elsif ($hres eq "e" or $res eq "C360") { $daswallclk = "9:00" }
 else                                   { $daswallclk = "5:00" }

# Set NCPUS for idf and iau
#--------------------------
 $ncpus_iau = $mkiau_nx * $mkiau_ny;
 $ncpus_idf = $ncpus_iau;

# Set NCPUS for PSAS-AOD analysis (wired)
 $ncpus_aod = 1;

 open(SCRIPT,">$fvhome/run/$jobn.j") or
 die ">>> ERROR <<< cannot write $fvhome/run/$jobn.j";

 print  SCRIPT <<"EOF";
#!/bin/csh -fx
# ------------------------------
#$group_list
##$export_none
#$jobqueue1
EOF

if ( $siteID eq "nccs" ) {
print  SCRIPT <<"EOF";
#SBATCH --job-name=$jobn
#SBATCH --output=$jobn.log.o%j.txt
#SBATCH --ntasks=$xncpus
#SBATCH --ntasks-per-node=$ncpus_per_node
#SBATCH --constraint=$nodeflg
#SBATCH --time=${daswallclk}:00
EOF

}else{

if ( $siteID eq "nas" ) {
#--$nodes = $ncpus / $ncpus_per_node + 1; # add one if doing parallel prepqc
$nodes = int($ncpus / $ncpus_per_node);
$nodes += 1 if $ncpus > ($nodes * $ncpus_per_node);
print  SCRIPT <<"EOF";
#PBS -l select=$nodes:ncpus=$ncpus_per_node$procflg
EOF

}else{
print  SCRIPT <<"EOF";
#PBS -l ncpus=$ncpus
EOF
}

print SCRIPT <<"EOF";
#SBATCH --job-name=$jobn
#SBATCH --output=$jobn.log.o%j.txt
#SBATCH --time=${daswallclk}:00
#PBS -N $jobn
#PBS -o $jobn.log.o%j.txt
#PBS -l walltime=${daswallclk}:00
##PBS -l mem=$mem
#PBS -S /bin/csh
#PBS -j eo
#BSUB -J $jobn
#BSUB -n $ncpus
#BSUB -W $daswallclk
#BSUB -o ${jobn}.log.o%J.txt
#BSUB -e ${jobn}.log.o%J.txt
}

if ($dbqueue) {
print SCRIPT <<"EOF";
#SBATCH --qos=debug
EOF
}

print SCRIPT <<"EOF";
# ------------------------------
#
# fvDAS driver script.
#
# This file has been automatically generated by fvsetup.
#
# $nametag
#--------------------------------------------------------------------
 set myname = `basename \$0`
 cd # in latest SLURM env job also starts from where submitted
    # it needs to be at home to be able to properly resolve which commands

# Source Run Time Environment settings
# ------------------------------------
  setenv FVHOME  $fvhome  # experiment home directory
  if (-e \$FVHOME/run/FVDAS_Run_Config) source \$FVHOME/run/FVDAS_Run_Config

#
#                 ----------------------------------
#                  PART I - Prepare the Environment
#                 ----------------------------------

# Experiment environment
# ----------------------
  setenv GID $gid
  setenv group_list \"$group_list1\"
  setenv ARCH `uname -s`
  setenv HOST `uname -n`
  setenv NCPUS       $ncpus       # Number of CPUs to run GCM
  setenv NCPUSX      $xncpus      # Number of CPUs plus IO-server requirement
  setenv NCPUS_IDF   $ncpus_idf   # Number of CPUs to run IDF
  setenv NCPUS_IAU   $ncpus_iau   # Number of CPUs to run IAU
  setenv NCPUS_GSI   $ncpus_gsi   # Number of CPUs to run GSI
  setenv NCPUS_GPERT $ncpus_gpert # Number of CPUs to run gcmPERT
  setenv NCPUS_AOD   $ncpus_aod   # Number of CPUs to run PSAS-AOD
  setenv O_SERVERS   $o_servers   # Number of IO servers
  #setenv GAAS_RUN_SLURM 1 # launch AOD analysis as separate batch job
  setenv AODBLOCKJOB 1
EOF
if ($ncpus_per_node) {
print SCRIPT <<"EOF";
  setenv NCPUS_PER_NODE $ncpus_per_node
  setenv NODES      $nodeflg
EOF
}
print SCRIPT <<"EOF";
  setenv N_CPU   \$NCPUS
  setenv EXPID   $expid   # experiment ID
  setenv CASE    \$EXPID  # experiment ID (for LSM's sake)
  setenv FVROOT  $fvroot  # fvDAS installation root dir
  setenv FVRUN   \$FVHOME/run
  if(`uname -s` == "OSF1" ) then
     cd \$TMPDIR_UBC
     setenv FVWORK  `pwd`           # temporary fix while TMPDIR not avail on Halem
     setenv FVWORK  \$FVWORK/fvwork.\$\$  # temporary fix while TMPDIR not avail on Halem
  endif
  if(`uname -s` == "IRIX64" ) then
     if(`uname -n` == "sunrise" ) then
        setenv FVWORK  \$TMPDIR/fvwork.\$\$   # working directory
     else
        setenv FVWORK  \$SCRATCH1/fvwork.\$\$ # working directory
     endif
  endif
  if( (`uname -s` == "Linux") ) then
      if( `uname -m` != "ia64" ) then
          setenv FORT90L -Wl,-T
      endif
      setenv FVWORK $diren/fvwork.\$\$
      if (\$?kidwork) then # this case, overwrite FVWORK with user-specific
         setenv FVWORK \$kidwork
      endif
  endif
  /bin/mkdir -p \$FVWORK             # create working directory
  echo \$FVWORK >! \$FVHOME/.FVWORK  # record working directory

  setenv FVBCS \$FVHOME/fvInput
  setenv EXTDATA \$FVWORK/ExtData  # External data directory
  /bin/mkdir -p \$EXTDATA
  /bin/touch \$EXTDATA/.no_archiving
EOF

foreach $set ( @extdatasets ) {
    print SCRIPT "  /bin/rm -f \$EXTDATA/$set\n";
    print SCRIPT "  /bin/ln -s $extdata{$set} \$EXTDATA/\n";
}

print  SCRIPT <<"EOF";

# Load BASEDIR and modules
# ------------------------
  unsetenv LD_LIBRARY_PATH
  source \$FVROOT/bin/g5_modules
  setenv LD_LIBRARY_PATH \${BASEDIR}/\${ARCH}/lib:\${FVROOT}/lib:\${LD_LIBRARY_PATH}

# Internal parameters controlling system behavior
# ----------------------------------------------
  setenv BATCH_SUBCMD $qsub
  setenv G5GCM   $g5gcm   # 1 = enables GEOS-5 GCM, 0 = disables GEOS-5 GCM (back to fvGCM)
  setenv FCHOME  \$FVHOME/fcst
  setenv FVSBC   $fvsbc   # 1 = enables SBC, 0 = disables SBC (Bias Correction)
  setenv FVCQC   $fvcqc   # 1 = enables CQC, 0 = disables CQC
  setenv PREPQC  $prepqc  # 1 = enables NCEP-QC, 0 = disables QC
  setenv OIQC    $oiqc    # 1 = enables OIQC, 0 = disables OIQC
  setenv RADCOR  $radcor  # (see ssprepqc usage for valid values)
  setenv DAOTOVS $daotovs # 1 = enables DAOTOVS, 0 = disables DAOTOVS
  setenv NOSFCANA $nosfcana  # 1 = enables sfc-analysis, 0 = disables it
  setenv TIMEINC $varwindow
  setenv ASYNBKG $asynbkg_min   # 1 = enables ASYNOPTIC BCKG mode, 0 = disables it
  setenv VTRKFRQA 180    # frequency of input vtx files for storm relocation
  setenv VTRKFRQF 360    # frequency of input vtx files for storm tracking
  setenv VAROFFSET $varoffset   # abs value of time off from 1st synoptic hour of var window
  setenv DO4DVAROBSVR $do4dvar # trigger for split observer
  setenv DO4DVAR  $do4dvar    # 1=enables 4dvar
  setenv DO4DTLM  $do4dtlm    # 1=enables tlm integration after each 4dvar iteration
  setenv DO4DIAU  $do4diau       # 1=enables gcm to take time changing IAU forcing
  setenv DORCORR  $doRcorr    # 1=enables correlated obs errors
  setenv WCONSTRAINT $wcnstrt # set/unset weak constraint option
  setenv NVAROUTER $nvarouter # number of iteration for var loop
  setenv SSMI_UV 0        # 1 = enables SSMI WIND SPEED, 0 = disables it
  setenv SPLITEXE $splitexe  # 1 = enables SPLIT EXECUTABLE run, 0 = disables it
  setenv VTXLEVS "1000 925 850 700 600 500 400 300 250 200 150 100 70 50 30 20 10"
  setenv DIAG2ODS 1        # 1 = enables conversion of gsi-diag files to ODS, 0 = disables it
  setenv CONVSFC  $convsfc # 1 = enables call to lcv2prs for conversion of surface output fields
  setenv CONVUPA  $convupa # 1 = enables call to lcv2prs for conversion of upper-air output fields
  setenv DOIAU    $doiau   # 0 = disable IAU; otherwise offset should be 030000
  setenv SAVE4ASENS $doasens  # 1 = will not store intermediate files for later analysis sensitivity run
  setenv MONTHLY_MEANS $monthly_means   # 1 = submit monthly means at end of month;     0 = don't
  setenv MONTHLY_TAR $monthly_tar   # 1 = submit monthly tar job at end of month;   0 = don't
  setenv MONTHLY_PLOTS $monthly_plots   # 1 = submit monthly plots job at end of month; 0 = don't
  setenv MONTHLY_RADMON 0 # 1 = submit monthly radmon job; 2 = 2 jobs/month; 3 = 3 jobs/month; 0 = don't
  setenv NCSUFFIX $ncsuffix
  setenv STAGE4FSENS /dev/null
  setenv GAAS_ANA $gaas_ana # 1 = aerosol analysis, 0 = disables it
  setenv GAASFDBK $gaasfdbk # 1 = feedback aerosol analysis into GCM, 0 = don't
  setenv SKIP_PSAS 0 #  sets do_you_want_to_skip_PSAS in ana.rc.tmpl; 0 = no, 1 = yes
  setenv LDAS_ANA $ldas_ana # 1 = land analysis, 0 = disables it 
  setenv LDASFDBK $ldasfdbk # 1 = read land analysis incr into GCM (feedback), 0 = don't 
  setenv LDHOME  $ldashome  # land analysis home dir (ldas_exp/) for central 
  setenv LDHOME4ENS $ldashome4ens  # land analysis home dir for atm_ens  
  setenv IGNORE_0 1   # 1 = ignore 0 length obs files in acquire
  setenv ACFTBIAS $acftbias
  setenv USE_MODIS_STAGE 0  # 1 = use MODIS data from MODIS_STAGE_DIR; 0 = don't
  setenv MODIS_STAGE_DIR /discover/nobackup/projects/gmao/input/dao_ops/ops/flk/modis  # L2a non-archive data dir
  setenv FCSTIMES "$fcstimes"
  setenv FCSTATS  "21"
  setenv FHOURS   $fhours21
  setenv NEWRADBC $newradbc
  setenv ANGLEBC  $newradbc
  setenv GSI_NETCDF_DIAG 1
  setenv GSI_DIAG2TXT 1
# setenv DO_0HR_IMP 1

  if ( -e \$FVHOME/run/replay.acq ) then
     setenv USE_MODIS_STAGE 1  # for now, replay.acq controls only meteorology (AOD is not yet replayed to)
  endif
EOF

if ( $merra2 ) {
} else {
print  SCRIPT <<"EOF";
  setenv LOCAL_ACQUIRE 1
  setenv CHECK_DMF 0
EOF
}

if ( $hyb_ens < 0 ) {
print  SCRIPT <<"EOF";
  setenv VTXRELOC $vtxreloc        # 0 = disable vortex relocator; 1 = enable
  setenv VTRACK   $vtrack        # 0 = disable vortex tracker;   1 = enable
  setenv HYBRIDGSI     /dev/null
  setenv STAGE4HYBGSI  /dev/null
  setenv RSTSTAGE4AENS /dev/null
EOF
} else {
  if ( $hyb_ens == 3 ) {
print  SCRIPT <<"EOF";
  setenv VTXRELOC $vtxreloc        # 0 = disable vortex relocator; 1 = enable
  setenv VTRACK   $vtrack        # 0 = disable vortex tracker;   1 = enable
EOF
  }
  if ( $hyb_ens == 4 ) {
print  SCRIPT <<"EOF";
  setenv VTXRELOC 0
  setenv VTRACK   0
  setenv ANA4DUPD_IAU0_ONLY 0
EOF
  }
print  SCRIPT <<"EOF";
  setenv HYBRIDGSI     \$FVHOME/atmens
  setenv STAGE4HYBGSI  \$HYBRIDGSI/central
  setenv RSTSTAGE4AENS \$HYBRIDGSI/RST
  setenv NSEGS 1
  setenv NSTEP 1
EOF
}

if ( $siteID eq "nccs" ) {
print  SCRIPT <<"EOF";
#  setenv DO_DMGET 1
#  setenv CHECK_DMF 1
#  setenv DMGET_CMD /usr/bin/dmget
EOF
} elsif ( $siteName eq "pfe" ) {
print  SCRIPT <<"EOF";
  setenv DO_DMGET 1
  setenv CHECK_DMF 0
  setenv DMGET_CMD "lou-via-br2 /usr/bin/dmget"
EOF
}
$omp_num_threads = $athreads;
print  SCRIPT <<"EOF";

  setenv STAGE4FCST $frstage
  setenv ANASTAGE   $anastagedir

# SSI/GSI specifics
# -----------------
  setenv SPECRES    $specres
  setenv SPECVTX    \$SPECRES
  setenv LEVSVTX     64        # this is the wired-in number of levels when tracking reloc used

# MPI/OMP specific environment variables
# --------------------------------------
  setenv NUMBER_CPUS_IN_MACHINE      \$NCPUS    # Total No CPU on this queue
  setenv OMP_NUM_THREADS             \$NCPUS    # Number OMP Threads (generic)
  setenv OMP_SET_NUMTHREADS          1         # allows dynamic change of #threads
  setenv PSAS_NUM_MPI                1 # $pmpi      # No. MPI processes for PSAS
  setenv PSAS_NUM_THREADS            1 # $pthread[$pi]      # No. OMP threads   for PSAS
  setenv AGCM_N_PROCESSES            $ampi      # N_PROC X N_THREADS = NCPUS
  setenv AGCM_N_THREADS_PER_PROCESS  $athreads
  setenv AGCM_NUM_MPI                \$AGCM_N_PROCESSES           # No. MPI processes for GCM
  setenv AGCM_NUM_THREADS            \$AGCM_N_THREADS_PER_PROCESS # No. OMP threads   for GCM
  setenv OMP_NUM_THREADS             \$AGCM_N_THREADS_PER_PROCESS # Number OMP Threads (generic)

EOF
print  SCRIPT <<"EOF";

  setenv MKL_CBWR SSE4_2

# MVAPICH variables
# -----------------
  if (\$?MVAPICH) then
     setenv MV2_DEFAULT_TIME_OUT 23
     setenv MV2_USE_SHMEM_ALLREDUCE 0
     setenv MV2_ON_DEMAND_THRESHOLD 8192
     setenv MV2_USE_UD_HYBRID 0
     setenv MV2_USE_SHMEM_COLL      0
     setenv MV2_USE_UD_HYBRID       0
     setenv MV2_HYBRID_MAX_RC_CONN 16
     setenv MV2_SHOW_ENV_INFO 2
  endif

# The following are from OPS parallel

  if (\$?I_MPI_ROOT) then
#    The following as recommended by Scott and SI Team
#    setenv I_MPI_USE_DYNAMIC_CONNECTIONS 0
     setenv I_MPI_SHM_HEAP_VSIZE   512
     setenv PSM2_MEMORY            large
     setenv I_MPI_ADJUST_GATHERV   3
     setenv I_MPI_ADJUST_ALLREDUCE 12
     setenv I_MPI_EXTRA_FILESYSTEM 1
     setenv I_MPI_EXTRA_FILESYSTEM_LIST gpfs
     setenv I_MPI_DEBUG 6
#    setenv ROMIO_FSTYPE_FORCE         "gpfs:"
#    setenv I_MPI_FABRICS shm:ofi
#    setenv I_MPI_FABRICS shm:dapl
#    setenv I_MPI_FABRICS_LIST "dapl,ofa"
#    setenv I_MPI_FALLBACK "enable"
#    setenv I_MPI_MPD_RSH sshmpi
#    setenv I_MPI_DAPL_CHECK_MAX_RDMA_SIZE 1
#    setenv I_MPI_DAPL_UD_SEND_BUFFER_NUM 4096
#    setenv I_MPI_DAPL_UD_RECV_BUFFER_NUM 4096
#    setenv I_MPI_DAPL_UD_ACK_SEND_POOL_SIZE 4096
#    setenv I_MPI_DAPL_UD_ACK_RECV_POOL_SIZE 4096
#    setenv I_MPI_DAPL_UD_RNDV_EP_NUM 2
#    setenv I_MPI_DAPL_UD_REQ_EVD_SIZE 2000
  endif
  if (\$?MPT_VERSION) then
     setenv DAPL_UCM_CQ_SIZE 4096
     setenv DAPL_UCM_QP_SIZE 4096
     setenv DAPL_UCM_REP_TIME 2000
     setenv DAPL_UCM_RTU_TIME 2000
     setenv DAPL_UCM_RETRY 7
     setenv DAPL_ACK_RETRY 7
     setenv DAPL_ACK_TIMER 20
     setenv DAPL_UCM_RETRY 10
     setenv DAPL_ACK_RETRY 10
# MPT env variables
# -----------------
     setenv MPI_COLL_REPRODUCIBLE
     setenv MPI_DISPLAY_SETTINGS
     setenv MPI_COMM_MAX  1024
     setenv MPI_GROUP_MAX 1024
     setenv MPI_BUFS_PER_PROC 1024
     setenv MPI_IB_TIMEOUT 23
     setenv MPI_XPMEM_ENABLE no
     setenv MPI_NUM_MEMORY_REGIONS 0
     setenv SUPRESS_XPMEM_TRIM_THRESH 1
  endif 
  setenv SLURM_DISTRIBUTION block

# For some reason, PMI_RANK is randomly set and interferes
# with binarytile.x and other executables.
  unsetenv PMI_RANK

# Needed for TLM/ADM
# ------------------
  setenv N_SMP                        \$NCPUS   # number of CPUS
  setenv N_MPI                        \$NCPUS   # number of MPI processes
  setenv NUMBER_MLP_PROCESSES         \${N_MPI} # still used by GCM
  setenv NUMBER_CPUS_PER_MLP_PROCESS  \${N_SMP} # still used by GCM

  setenv JEDIDIR
  if ( -d \$FVHOME/run/jedi ) setenv JEDIDIR \$FVHOME/run/jedi

# Add FVROOT/bin to front of path so fvDAS binaries are found first
# -----------------------------------------------------------------
  if ( `uname -s` == "Linux" ) then
    set path = ( . \$FVHOME/run \$JEDIDIR \$FVROOT/bin \$SHARE/dasilva/opengrads/Contents \$BASEDIR/\$ARCH/bin \$path )
  else
    set path = ( . \$FVHOME/run \$JEDIDIR \$FVROOT/bin \$SHARE/dasilva/opengrads/Contents \$path )
  endif

# Make sure RSTs have correct time tagging
# ----------------------------------------
  cd \$FVHOME/recycle
  set lstfn = (`ls *.bkg_eta_rst.????????_??z* *.bkg??_eta_rst.????????_??z* *.bkg_sfc_rst.????????_??z* *.bkg??_sfc_rst.????????_??z* *.cbkg_eta_rst.????????_??z* *.cbkg??_eta_rst.????????_??z*`)
  if ( \$#lstfn > 0 ) then
     foreach fn ( \$lstfn )
       set iii = `echo \${fn} | grep -o '\\.' | wc -l`
       @ ip1 = \$iii + 1; @ im1 = \$iii - 1; @ im2 = \$iii - 2
       set mypfx  = `echo \$fn | cut -d. -f1-\$im1`
       set mysfx  = `echo \$fn | cut -d. -f\${ip1}-`
       set mynymd = `echo \$fn | cut -d. -f\${iii} | cut -c1-8`
       set myhh   = `echo \$fn | cut -d. -f\${iii} | cut -c10-11`
       /bin/mv \$fn \$mypfx.\${mynymd}_\${myhh}00z.\$mysfx
     end
  endif
  cd -
  if ( (! -e \$FVHOME/run/atmens_replay.acq) && ("\$HYBRIDGSI" != "/dev/null") ) then
     cd \$HYBRIDGSI
     set lstdirs = ( `ls -d ensmean ensrms mem*` )
     foreach dir ( \$lstdirs )
        cd \$dir
        set lstfn = (`ls *.bkg.eta.????????_??z* *.bkg.sfc.????????_??z* *.cbkg.eta.????????_??z*`)
        if ( \$#lstfn > 0 ) then
           foreach fn ( \$lstfn )
             set iii = `echo \${fn} | grep -o '\\.' | wc -l`
             @ ip1 = \$iii + 1; @ im1 = \$iii - 1; @ im2 = \$iii - 2
             set mypfx  = `echo \$fn | cut -d. -f1-\$im1`
             set mysfx  = `echo \$fn | cut -d. -f\${ip1}-`
             set mynymd = `echo \$fn | cut -d. -f\${iii} | cut -c1-8`
             set myhh   = `echo \$fn | cut -d. -f\${iii} | cut -c10-11`
             /bin/mv \$fn \$mypfx.\${mynymd}_\${myhh}00z.\$mysfx
           end
        endif
        cd -
     end
  endif

# MPI/OpenMP Hybrid Options
# -------------------------
  cd \$FVWORK
  set GCMX    = `which $modelexec`
  set GCMPTX  = `which $pertmodelexec`
  set IDFX    = `which idfupd.x`
  set IAUX    = `which $iauexec`
  set RSTUPDX = `which rstupd.x`
  set ANAX    = `which $anaexec`
  set SACX    = `which sac.x`
  set HDF2RSX = `which hdf2rs.x`

EOF

if ( $os =~ /OSF/ ) {
print  SCRIPT <<"EOF";
  if ( \$SPLITEXE ) then
     setenv MPIRUN_IDF    "prun -t -s -n \$NCPUS_IDF \$IDFX"
     setenv MPIRUN_IAU    "prun -t -s -n \$NCPUS_IAU \$IAUX"
#    setenv MPIRUN_UPRST  "prun -t -s -n \$NCPUS_IAU \$RSTUPDX"
     setenv MPIRUN_ANA    "prun -t -s -n \$NCPUS_GSI \$ANAX"
     setenv MPIRUN_OBSVR  "prun -t -s -n \$NCPUS_GSI \$ANAX"
     setenv MPIRUN_SAC    "prun -t -s -n 1       \$SACX"
  else
     setenv MPIRUN_IDF    "prun -t -s -n \$NCPUS_IDF \$IDFX"
     setenv MPIRUN_IAU    "prun -t -s -n \$NCPUS_IAU \$IAUX"
#    setenv MPIRUN_UPRST  "prun -t -s -n \$NCPUS_IAU \$RSTUPDX"
     setenv MPIRUN_ANA    "prun -t -s -c \$PSAS_NUM_THREADS -n \$PSAS_NUM_MPI -N  \$PSAS_NUM_MPI \$ANAX"
     setenv MPIRUN_OBSVR  "prun -t -s -c \$PSAS_NUM_THREADS -n \$PSAS_NUM_MPI -N  \$PSAS_NUM_MPI \$ANAX"
     setenv MPIRUN_SAC    "prun -t -s -n 1       \$SACX"
  endif
  setenv OMP_SCHEDULE STATIC
  setenv MPIRUN        "prun -s -c \$PSAS_NUM_THREADS -n \$PSAS_NUM_MPI -N  \$PSAS_NUM_MPI "
  if ( \$G5GCM || \$AGCM_NUM_THREADS == 1 ) then
     setenv    RUN_OPT_BEGIN "prun -s -n \$NCPUS \$GCMX"
     setenv ADMRUN_OPT_BEGIN "prun -s -n \$NCPUS_GPERT \$GCMPTX"
  else
     setenv    RUN_OPT_BEGIN "prun -s -c \$AGCM_N_THREADS_PER_PROCESS -N \$AGCM_N_PROCESSES -n \$AGCM_N_PROCESSES \$GCMX"
     setenv ADMRUN_OPT_BEGIN "prun -s -c \$AGCM_N_THREADS_PER_PROCESS -N \$AGCM_N_PROCESSES -n \$AGCM_N_PROCESSES \$GCMPTX"
  endif
  setenv RUN_OPT_BLEND "prun -N -s -c \$AGCM_N_THREADS_PER_PROCESS -N \$AGCM_N_PROCESSES -n \$AGCM_N_PROCESSES \$HDF2RSX"
EOF

}elsif ( $siteID eq "nccs" ) {
$omp_num_threads = 1;
print  SCRIPT <<"EOF";
  setenv OMP_NUM_THREADS $omp_num_threads
  setenv MPIRUN_IDF    "PBS_NODEFILE=\$FVWORK/IDF_list; esma_mpirun -np \$NCPUS_IDF \$IDFX"
#-setenv MPIRUN_IAU    "PBS_NODEFILE=\$FVWORK/IAU_list; esma_mpirun -np \$NCPUS_IAU \$IAUX"
  setenv MPIRUN_IAU    "esma_mpirun -np \$NCPUS_IAU \$IAUX"
#-setenv MPIRUN_UPRST  "esma_mpirun -np \$NCPUS_IAU \$RSTUPDX"
  setenv MPIRUN_ANA    "PBS_NODEFILE=\$FVWORK/ANA_list; esma_mpirun -perhost 8 -np \$NCPUS_GSI \$ANAX"
  setenv MPIRUN_OBSVR  "esma_mpirun -np \$NCPUS_GSI \$ANAX"
  setenv MPIRUN_SAC    "esma_mpirun -np  1      \$SACX"
  setenv MPIRUN_OIQC   "PBS_NODEFILE=\$FVWORK/OIQC_list; esma_mpirun -np 4"
  if (\$?MPT_VERSION) then
    setenv MPIRUN_AOD    "mpirun -np \$NCPUS_AOD"
    setenv MPIRUN_PSAS   "mpiexec_mpt -np \$NCPUS_AOD"
  else
#   setenv MPIRUN_AOD    "esma_mpirun -np \$NCPUS_AOD"
#   setenv MPIRUN_PSAS   "esma_mpirun -np \$NCPUS_AOD"
    setenv MPIRUN_AOD    ""
    setenv MPIRUN_PSAS   ""
  endif
  setenv RUN_OPT_BLEND "esma_mpirun -np \$NCPUS \$HDF2RSX"
  if (\$G5GCM ) then
     if ( \$O_SERVERS > 0 ) then
        setenv RUN_OPT_BEGIN "mpirun -np \$NCPUSX \$GCMX --npes_model \$NCUPS --nodes_output_server \$O_SERVERS --oserver_type multigroup --npes_backend_pernode \$O_SERVERS"
     else
        setenv RUN_OPT_BEGIN "esma_mpirun -np \$NCPUS \$GCMX"
     endif
     setenv ADMRUN_OPT_BEGIN "esma_mpirun -np \$NCPUS_GPERT \$GCMPTX"
  else
     setenv    RUN_OPT_BEGIN "esma_mpirun -np \$AGCM_NUM_MPI \$GCMX"
     setenv ADMRUN_OPT_BEGIN "esma_mpirun -np \$AGCM_NUM_MPI \$GCMPTX"
  endif
EOF

} elsif ($siteName eq "cfe") {
print  SCRIPT <<"EOF";
  setenv MPIRUN_IDF    "esma_mpirun -prefix "\\"%g\\"" -np \$NCPUS_IDF \$IDFX"
  setenv MPIRUN_IAU    "esma_mpirun -prefix "\\"%g\\"" -np \$NCPUS_IAU \$IAUX"
# setenv MPIRUN_UPRST  "esma_mpirun -prefix "\\"%g\\"" -np \$NCPUS_IAU \$RSTUPDX"
  setenv MPIRUN_ANA    "esma_mpirun -prefix "\\"%g\\"" -np \$NCPUS_GSI \$ANAX"
  setenv MPIRUN_OBSVR  "esma_mpirun -prefix "\\"%g\\"" -np \$NCPUS_GSI \$ANAX"
  setenv MPIRUN_SAC    "esma_mpirun -prefix "\\"%g\\"" -np  1      \$SACX"
  setenv MPIRUN        "esma_mpirun -np \$PSAS_NUM_MPI "
  setenv RUN_OPT_BLEND "esma_mpirun -np \$NCPUS \$HDF2RSX"
  if ( \$G5GCM ) then
     setenv    RUN_OPT_BEGIN "esma_mpirun -np \$NCPUS \$GCMX"
     setenv ADMRUN_OPT_BEGIN "esma_mpirun -np \$NCPUS_GPERT \$GCMPTX"
  else
     setenv    RUN_OPT_BEGIN "esma_mpirun -np \$AGCM_NUM_MPI \$GCMX"
     setenv ADMRUN_OPT_BEGIN "esma_mpirun -np \$AGCM_NUM_MPI \$GCMPTX"
  endif
EOF

} elsif ($siteName eq "pfe") {
print  SCRIPT <<"EOF";
  set NUMNODES=`sort -u \$PBS_NODEFILE | wc -l`
  setenv MPIRUN_IDF    "esma_mpirun -np \$NCPUS_IDF \$IDFX"
  setenv MPIRUN_IAU    "esma_mpirun -np \$NCPUS_IAU \$IAUX"
# setenv MPIRUN_UPRST  "esma_mpirun -np \$NCPUS_IAU \$RSTUPDX"
  setenv MPIRUN_ANA    "esma_mpirun -np \$NCPUS_GSI \$ANAX"
  setenv MPIRUN_OBSVR  "esma_mpirun -np \$NCPUS_GSI \$ANAX"
  setenv MPIRUN_SAC    "esma_mpirun -np 1      \$SACX"
  setenv MPIRUN_OIQC   "esma_mpirun -np 4"
  setenv MPIRUN        "esma_mpirun -np \$PSAS_NUM_MPI "
  setenv MPIRUN_AOD    "esma_mpirun "
  setenv RUN_OPT_BLEND "esma_mpirun -np \$NCPUS \$HDF2RSX"
  if ( \$G5GCM ) then
     setenv    RUN_OPT_BEGIN "esma_mpirun -np \$NCPUS \$GCMX"
     setenv ADMRUN_OPT_BEGIN "esma_mpirun -np \$NCPUS_GPERT \$GCMPTX"
  else
     setenv    RUN_OPT_BEGIN "esma_mpirun -np \$AGCM_NUM_MPI \$GCMX"
     setenv ADMRUN_OPT_BEGIN "esma_mpirun -np \$AGCM_NUM_MPI \$GCMPTX"
  endif
EOF

}else{
print "ERROR: I do not recognize this platform\n";
exit();
}
print  SCRIPT <<"EOF";

# Make sure files are accessible
# ------------------------------
  umask 022

EOF

# System dependent configuration ..........................................
# ------------------------------

  if ( $os =~ /IRIX/ ) {

  print  SCRIPT <<"EOF";

# SGI Specific
# ------------
  limit stacksize 4000000kb
  limit coredumpsize 0
  setenv _DSM_PPM 2
  setenv MPC_GANG OFF
  setenv OMP_DYNAMIC FALSE
  setenv MP_STACK_OVERFLOW OFF
  setenv MP_SLAVE_STACKSIZE 1024000000

EOF
   }

  elsif ( $os =~ /AIX/ ) {

  print  SCRIPT <<"EOF";

# IBM specific configuration
# --------------------------
  limit stacksize   4000000                 # KB
  limit coredumpsize 0
  setenv MP_SLAVE_STACKSIZE 100000000       # bytes
  setenv MP_PROCS \${N_MPI}
  setenv MP_EUIDEVICE css0
  setenv MP_EUILIB us
  setenv MP_HOSTILE host.list
  setenv MP_INFOLEVEL 2
  setenv XLSMPOPTS "parthds=\${N_SMP}:schedule=static"
  setenv MP_CSS_INTERRUPT yes

EOF
}

  elsif ( $os =~ /LINUX/ ) {

    if(`uname -n` =~ /thunder/) {
       print  SCRIPT <<"EOF";

# Altix specific configuration
# ---------------------------------
  limit stacksize unlimited
  limit coredumpsize 0
  setenv KMP_STACKSIZE    450m
  unsetenv F_UFMTENDIAN
  setenv KMP_LIBRARY turnaround
  setenv MPI_DSM_DISTRIBUTE  # pin MPI processes to assigned CPU
  setenv MPI_REQUEST_MAX 32768
  setenv MPI_UNBUFFERED_STDIO
  setenv DSM_DISTRIBUTE
  setenv MPI_TYPE_MAX 6553600
  setenv MPI_BUFFER_MAX 2000
  setenv MPI_MSGS_MAX   1048576
  setenv DSM_DISTRIBUTE
  setenv MPI_USE_XPMEM
  setenv MPI_BUFFER_MAX 2000
  setenv MPI_MSGS_MAX   10485760
EOF

    }elsif ($siteName eq "cfe") {

  print  SCRIPT <<"EOF";

# Altix specific configuration
# ----------------------------
  limit stacksize unlimited
  limit coredumpsize 0
  setenv KMP_STACKSIZE    450m
  unsetenv F_UFMTENDIAN
  setenv KMP_LIBRARY turnaround
  setenv MPI_DSM_DISTRIBUTE  # pin MPI proceeses to assigned CPU
  setenv MPI_REQUEST_MAX 32768
  setenv MPI_TYPE_MAX 6553600
  setenv MPI_UNBUFFERED_STDIO
  setenv DSM_DISTRIBUTE
  setenv MPI_USE_XPMEM
  setenv MPI_BUFFER_MAX 2000
  setenv MPI_MSGS_MAX   10485760
  setenv MPI_GROUP_MAX  128

  setenv GADDIR   /u/ltakacs/grads
EOF

    }elsif ($siteName eq "pfe") {

  print  SCRIPT <<"EOF";

# Altix specific configuration
# ----------------------------
  limit stacksize unlimited
  limit coredumpsize 0
  setenv KMP_STACKSIZE    450m
  unsetenv F_UFMTENDIAN
  setenv KMP_LIBRARY turnaround
EOF

    } elsif ($siteID eq "nccs") {

  print  SCRIPT <<"EOF";

# Discover specific configuration
# ----------------------------
  limit stacksize unlimited
  limit coredumpsize 0
  setenv KMP_STACKSIZE    450m
  unsetenv F_UFMTENDIAN
  setenv KMP_LIBRARY turnaround

EOF

    }else{

  print  SCRIPT <<"EOF";

# Linux specific configuration
# ----------------------------
  setenv FORT90L -Wl,-T
  setenv F_UFMTENDIAN big
  setenv KMP_STACKSIZE    450m
  setenv KMP_LIBRARY turnaround
  limit stacksize   unlimited
  limit coredumpsize 0
  setenv MPSTKZ     32M
EOF
    } # end of Linux block

} elsif ( $os =~ /OSF/ ) {

 $osfmodule = "fortran/551J";
 print  SCRIPT <<"EOF";


# OSF specific configuration
# --------------------------
 setenv KMP_STACKSIZE 64000000             # bytes
 setenv MP_STACK_SIZE 64000000             # bytes
 setenv PARALLEL            \${N_SMP}

EOF
}
# End of system dependent configuration ...................................

# First batch of SSI-related entries. NOTE: many are just temporary
  if ( $anassi || $anagsi ) {

    if ( `uname -n` =~ "tropic" ) {                   # temporary
    print  SCRIPT <<"EOF";
    setenv NCEPINPUT /tmp/ccruz/fvInput
EOF
    } else {
    print  SCRIPT <<"EOF";
    setenv NCEPINPUT \$FVBCS
    $berror_env
EOF
    }

  }
# End of first batch SSI-related entries ..................................


# Continue with rest of script
# ----------------------------
  print  SCRIPT <<"EOF";

# Check for aircraft bias correction obsclass if applicable
# ---------------------------------------------------------
  if ( (! \$PREPQC) && \$ACFTBIAS == 2 ) then
     set check_acfb = `echo \$OBSCLASS | grep ncep_acftpfl_bufr`
     if (\$status) then
        echo "Required ncep_acftpfl_bufr missing from OBSCLASS"
        echo "Cannot perform Variational Aircraft Bias Correction"
        echo "Aborting ..."
        exit 1
     endif
  endif


# Run fvDAS for Several (1-day) Run Segments
# ------------------------------------------
set nsegs = $nsegs          # number of fvDAS run segments per PBS job
set seg = 0
while ( \$seg < \$nsegs )

#         Start by cleaning working directory
#         -----------------------------------
          /bin/rm -rf   \$FVWORK
          /bin/mkdir -p \$FVWORK
          if (-e /usr/bin/lfs) then
             /usr/bin/lfs setstripe -c 1 -s 1048576 -i -1 \$FVWORK
          endif
          /bin/mkdir -p \$EXTDATA
          /bin/touch \$EXTDATA/.no_archiving
EOF

foreach $set ( @extdatasets ) {
    print SCRIPT "          /bin/rm -f \$EXTDATA/$set\n";
    print SCRIPT "          /bin/ln -s $extdata{$set} \$EXTDATA/\n";
}

print  SCRIPT <<"EOF";

          cd \$FVWORK
          if (`uname -n` =~ borg*) then
             cat \$PBS_NODEFILE | head -1 > \$FVWORK/OIQC_list
             cat \$PBS_NODEFILE | tail +2 > \$FVWORK/GCM_list
             cat \$PBS_NODEFILE           > \$FVWORK/ANA_list
             subset_nodefile.pl \$NCPUS_IDF -f \$PBS_NODEFILE -o \$FVWORK/IDF_list
             subset_nodefile.pl \$NCPUS_IAU -f \$PBS_NODEFILE -o \$FVWORK/IAU_list
          endif

#         Check for Bootstrap
#         -------------------
          setenv BOOTSTRAP 0
          if (-e \$FVRUN/AGCM.BOOTSTRAP.rc.tmpl) setenv BOOTSTRAP 1

#         Check for Hybrid-GSI
#         --------------------
          set nymd = `ls \$FVHOME/recycle/\$EXPID.rst.lcv.????????_??z.bin | cut -d. -f4 | cut -c1-8`
          set hh   = `ls \$FVHOME/recycle/\$EXPID.rst.lcv.????????_??z.bin | cut -d. -f4 | cut -c10-11`
          set yyyymmddhh = \${nymd}\${hh}

          if ( "\$HYBRIDGSI" != "/dev/null" && (! -e \$FVHOME/run/atmens_replay.acq) ) then
             if (! -d \$FVHOME/atmens/RST ) mkdir -p \$FVHOME/atmens/RST
             touch \$FVHOME/atmens/.no_archiving
            #/bin/cp \$FVHOME/recycle/*.\$NCSUFFIX  \$RSTSTAGE4AENS
             /bin/cp \$FVHOME/recycle/*lcv*.bin     \$RSTSTAGE4AENS
             /bin/cp \$FVHOME/recycle/*.txt         \$RSTSTAGE4AENS
             mkdir -p \$STAGE4HYBGSI
             if ( -e \$FVHOME/run/\${EXPID}_scheduler.j ) then
                touch \$FVHOME/.DONE_MEM001_rstcp.\${yyyymmddhh}
             endif
          endif # HYBRIDGSI

#         Submit forecast automatically
#         -----------------------------
          if ( \$?FCSTIMES ) then
             set crstag = `ls \$FVHOME/recycle/\$EXPID.rst.lcv.*.bin | cut -d. -f4 `
             set nymdb = `echo \$crstag | cut -c1-8`
             set hhb   = `echo \$crstag | cut -c10-11`
             set nhmsb = \${hhb}0000
             @ these_hrs = $fcswait_hrs * 3600
             set prevdate = `tick \$nymdb \$nhmsb -\$these_hrs`
             set nymdp = \$prevdate[1]
             set nhmsp = \$prevdate[2]
             set hhp   = `echo \$nhmsp | cut -c1-2`
             set crstag = \${nymdp}_\${hhp}z
             foreach fctime ( \$FCSTIMES )
                set fcstdtag = \${nymdp}_\${fctime}z
                cd \$FVHOME/fcst
                if ( (! -e .SUBMITTED.\$fcstdtag) && (! -e forecast.\$fcstdtag.RUNNING) ) then
                   if ( \$fcstdtag == \$crstag ) then
                       echo "rst date/time: \$crstag"
                       echo "will forecast for: \$FVHOME/fcst/forecast.\$fcstdtag"
                       touch forecast.\$fcstdtag
                       touch .SUBMITTED.\$fcstdtag
                       set jname = fcst.\${crstag}
                       set lname = \$FVHOME/fcst/fcst.log.\${crstag}.o%j.txt
                       if ( \$BATCH_SUBCMD == "sbatch" ) then
                          sbatch -J \$jname -o \$lname g5fcst.j
                       else
                          qsub -N \$jname -o \$lname g5fcst.j
                       endif
                   endif
                endif
                cd -
             end
          endif

#         If so, submit asens (FSOI) job
#         ------------------------------
          if ( -d \$FVHOME/asens ) then
             set crstag = `ls \$FVHOME/recycle/\$EXPID.rst.lcv.*.bin | cut -d. -f4 `
             set nymdb = `echo \$crstag | cut -c1-8`
             set hhb   = `echo \$crstag | cut -c10-11`
             set nhmsb = \${hhb}0000
             @ asgap_sec = -($asnwait_hrs * 3600 + \$VAROFFSET * 60)
             set chkasens = `tick \$nymdb \$nhmsb \$asgap_sec`
             set this_ana = `echo \${chkasens[1]}_\${chkasens[2]} | cut -c1-11`
             set lstasens = (`ls \$FVHOME/asens/\$EXPID.fsens*+*-*\${this_ana}*`)
             set asnorder = 2
             if ( -e \$FVHOME/asens/asensrules.rc ) then
               set asnorder = `echorc.x -rc \$FVHOME/asens/asensrules.rc ASENS_ORDER`
             endif
             if ( \$#lstasens == \$asnorder ) then
                cd \$FVHOME/asens
                echo "Submitting asens job for \$this_ana ... "
                if ( \$BATCH_SUBCMD == "sbatch" ) then
                   sbatch --export=this_nymdhh="\$this_ana" g5asens.j
                else
                   qsub -v this_nymdhh="\$this_ana" g5asens.j 
                endif
                cd -
             else
                echo "nothing to do in asens "
             endif
          endif

EOF

# Continue with rest of script
# ----------------------------
  print  SCRIPT <<"EOF";

#
#
#                 ----------------------------------------
#                  PART II - Run fvDAS for 1 Run Segment
#                 ---------------------------------------

# Pick oldest restart for initial condition
# -----------------------------------------
  set recfls = `/bin/ls \$FVHOME/recycle`
  set rslist = `/bin/ls -1 \$FVHOME/recycle/\$EXPID.rst.lcv.????????_??z.bin`
  if ( \$status ) then
    echo \$myname": no restart files found, nothing to do"
    exit 1
  endif
  set itime = \$rslist[1]:r:e
  if (\$seg == 0) set itime0 = \$itime

  $dasdriver -strict -dtg \$itime -obsclass \$OBSCLASS \$FVHOME \$FVWORK

  set rc = \$status
  if ( \$rc == 100 ) then
       echo \$myname": simulation already completed, no further job segments"
       exit 0
  endif

  if ( \$rc > 0 && \$rc < 100 ) then
       mv \$FVWORK \$FVHOME/morgue  # save runtime environment
       touch \$FVHOME/morgue/.no_archiving
       echo \$myname": abnormal error condition from fvpsas..."
       echo \$myname": runtime environment saved under \$FVHOME/morgue"
       exit 1
  endif

  foreach fn ( \$recfls ) # Get rid of restarts from previous time
    /bin/rm \$FVHOME/recycle/\$fn
  end
  /bin/mv \$FVHOME/recycle/hold/\$EXPID.* \$FVHOME/recycle/
  set rslist = `/bin/ls -1 \$FVHOME/recycle/\$EXPID.rst.lcv.????????_??z.bin`
  set rsdate = `rst_date \${rslist[1]}`  # date of last restart


#
#
#                 ----------------------------------------
#                      PART III - Data Archival
#                 ---------------------------------------

                           cd \$FVHOME/run

                                      zeit_ci.x pesto

# Move files to FVHOME for recycling, archiving and/or post-processing
# ---------------------------------------------------------
  @ pesto_status = 0
# - stage ana eta file
  if ( \$ANASTAGE != "/dev/null" && -e stageana.arc ) then
      setenv PESTOROOT \$ANASTAGE
      pesto -v -d \$FVWORK -arc stageana.arc
      @ pesto_status = \$status
  endif

# Move files to FVHOME for archiving and/or post-processing
# ---------------------------------------------------------
  ls -altuF \$FVWORK
  setenv PESTOROOT `dirname \$FVHOME`
  pesto -v -l -clean -d \$FVWORK -arc silo.arc
      @ pesto_status = \$status + \$pesto_status

                                      zeit_co.x pesto

# Halt if pesto fails
# -------------------
  if ( \$pesto_status ) then
      echo " Serious trouble: pesto failed"
      exit 100
  endif


# Mass storage archival as an 1 CPU batch job
# -------------------------------------------
  set jname  = arch.\${itime0}
  set lname  = \$FVHOME/run/arch.log.\${itime0}.o%j.txt

  set yyyymm = `echo \$rsdate[1] | cut -c1-6`
  set dd     = `echo \$rsdate[1] | cut -c7-8`

  if ( `uname -s` == "OSF1" ) then
      bsub -J \$jname < \$FVHOME/run/fvarchive.j
  else

#     archive job will wait for qsub'd aerosol analysis jobs to complete
#     ------------------------------------------------------------------
#     NOTE: This is no longer necessary, since fvpsas now waits for the
#           aodJobs to complete. It doesn't do anything, good or bad. I
#           will remove it when I have more time to test.  JCS 04Apr2016
#     ------------------------------------------------------------------
      set dependflag = ""
      if (\$?aodJobIDs) then
          set aodJobIDs = `\$FVROOT/bin/jobIDfilter -s \$aodJobIDs`
          if ("\$aodJobIDs" != "") then
             set dependflag = "-W depend=afterany:\$aodJobIDs"
          endif
      endif
#     ------------------------------------------------------------------

#     set variables to send with archive job
#     --------------------------------------
      set vars = "arch_type=ADAS,yyyymm=\$yyyymm,dd=\$dd"
      if (\$\?MONTHLY_MEANS) then
         set vars = "\$vars,MONTHLY_MEANS=\$MONTHLY_MEANS"
      endif

      if (\$\?MONTHLY_TAR) then
         set vars = "\$vars,MONTHLY_TAR=\$MONTHLY_TAR"
      endif

      if (\$\?MONTHLY_PLOTS) then
         set vars = "\$vars,MONTHLY_PLOTS=\$MONTHLY_PLOTS"
      endif

      if (\$\?MONTHLY_RADMON) then
         set vars = "\$vars,MONTHLY_RADMON=\$MONTHLY_RADMON"
      endif

#     submit archive job
#     ------------------
      if ( \$BATCH_SUBCMD == "sbatch" ) then
         set cmd = "sbatch -J \$jname -o \$lname \$dependflag --export=\$vars \$FVHOME/run/fvarchive.j"
      else
         set cmd = "qsub -N \$jname -o \$lname \$dependflag -v \$vars \$FVHOME/run/fvarchive.j"
      endif
      set jobIDline = `\$cmd`
      set jobID = \$jobIDline[\$\#jobIDline]
  endif

# Remove the working directory
# ----------------------------
  /bin/rm -rf \$FVWORK

# submit job to calculate forecast statistics
# -------------------------------------------
  @ fdays = \$FHOURS / 24
  if ( \$?FCSTATS ) then
     foreach fcstime ( \$FCSTATS )
        if (\$hh == \$fcstime) then
           set fcstdt = `tick \$nymd \${hh}0000 -\$fdays 0`

           set fstats_dir = "\$FVHOME/fstats"
           if (! -d \$fstats_dir) then
              mkdir \$fstats_dir
           endif

           set jtype = "fstats_run"
           set jdate = "\${fcstdt[1]}_\${hh}z"
           set jname = "\$jtype.\$jdate"
           set lname1 = "\$fstats_dir/\$jtype.log.\$jdate.o%j.txt"
           set lname2 = "\$fstats_dir/\$jtype.log.\$jdate.txt"

           set Bin = "\$FVROOT/bin"
           set flags = "-ihh \$hh -fhrs \$FHOURS -das -nodes $nodeflg"
           set cmd = "g5fcst_stats.pl \$EXPID \$fcstdt[1] 1 \$flags"

           set jobfile = "\$fstats_dir/\$jname.j"
           alias echo1 'echo \\!* >! \$jobfile'
           alias echo2 'echo \\!* >> \$jobfile'

           echo1 "#\\!/usr/bin/csh"
           echo2 "#SBATCH --job-name=\$jname"
           echo2 "#SBATCH --output=\$lname1"
           echo2 "#SBATCH --partition=datamove"
           echo2 "#SBATCH --time=1:00:00"
           echo2 "##SBATCH --export=NONE"
           if ( \$?DATAMOVE_CONSTRAINT ) then
              echo2 "#\$DATAMOVE_CONSTRAINT"
           else
              echo2 "#SBATCH --constraint=$nodeflg"
           endif
           echo2 ""
           echo2 "setenv FVHOME \$FVHOME"
           echo2 "set Bin = \$Bin"
           echo2 "set output = \$lname2"
           echo2 ""
           echo2 '\$Bin'/\$cmd
           echo2 'if (\$status == 0) then'
           echo2 '   qalter -o \$output \$SLURM_JOBID'
           echo2 "endif"

           sbatch --dependency afterany:\$jobID \$jobfile
        endif
     end
  endif

# If simulation is done, stop here
# --------------------------------
 if ( \$rc == 101 ) then
   echo \$myname": simulation just completed, no further job segments"

   set lname = \$FVHOME/run/$jobn.log.\${itime0}.txt
   qalter -o \$lname \$SLURM_JOBID

   exit 0
 endif

 \@ seg++

# Finished with Bootstrap
# -----------------------
if (-e \$FVRUN/AGCM.BOOTSTRAP.rc.tmpl) then
   /bin/mv \$FVRUN/AGCM.BOOTSTRAP.rc.tmpl \$FVRUN/AGCM.BOOTSTRAP.rc.tmpl.DONE
   setenv BOOTSTRAP 0
endif


end # while: loop over fvDAS run segments


#
#
#                  ----------------------------------
#                    PART IV - Next PBS Job Segment
#                  ----------------------------------

                          cd \$FVHOME/run

# Resubmits itself
# ----------------
  set itime1 = \${rsdate[1]}_`echo \$rsdate[2] | cut -c1-2`z
  set jname = $jobn.\${itime1}
  set lname = $jobn.log.\${itime1}.o%j.txt
  if ( `uname -s` == "OSF1" ) then
#     bsub -w ended(\${SLURM_JOBID}) -J \$jname < \$FVHOME/run/$jobn.j
      bsub                         -J \$jname < \$FVHOME/run/$jobn.j
  else
      if ( "\$HYBRIDGSI" != "/dev/null" && (! -e \$FVHOME/run/atmens_replay.acq) ) then
         if (-e \$FVHOME/run/\${EXPID}_scheduler.j ) then
            touch \$FVHOME/.DONE_MEM001_ddas.\$yyyymmddhh
         else
            if ( \$BATCH_SUBCMD == "sbatch" ) then
               sbatch -d afterany:\${SLURM_JOBID} \$FVHOME/run/atm_ens.j
            else
               qsub -W depend=afterany:\${PBS_JOBID} \$FVHOME/run/atm_ens.j
            endif
         endif
      else
         if ( \$BATCH_SUBCMD == "sbatch" ) then
            sbatch -d afterany:\${SLURM_JOBID} -J \$jname -o \$lname \$FVHOME/run/$jobn.j
         else
            qsub -W depend=afterany:\${PBS_JOBID} -N \$jname -o \$lname \$FVHOME/run/$jobn.j
         endif
      endif
  endif

# Rename output log
# -----------------
  set lname = \$FVHOME/run/$jobn.log.\${itime0}.txt
  qalter -o \$lname \$SLURM_JOBID

# All done
# --------
  exit 0

EOF

 close(SCRIPT);
 write_FVDAS_Run_Config();
}

#=======================================================================
sub write_FVDAS_Run_Config {

    $ENV{"FVHOME"} = $fvhome;
    $ENV{"FVROOT"} = $fvroot;
    $ENV{"EXPID"}  = $expid;

    $ENV{"AOD_OBSCLASS"}    = "$aod_obsclass";
    $ENV{"BERROR"}          = $berror_file if $berror_file;
    $ENV{"FVBCS"}           = "\$FVHOME/fvInput";
    $ENV{"GID"}             = $gid;
    $ENV{"MONTHLY_MEANS"}   = $monthly_means;
    $ENV{"NCEPINPUT"}       = $fvbcs;
    $ENV{"OBSCLASS"}        = $obClass;
    $ENV{"OMP_NUM_THREADS"} = $omp_num_threads;
    $ENV{"VTRACK"}          = $vtrack;
    $ENV{"VTXLEVS"}         = $vtxlevs;
    $ENV{"VTXRELOC"}        = $vtxreloc;

    if ($geosit | $r21c) {
        $ENV{"MKSI_SIDB"}   = "\$FVHOME/run/gmao_satinfo.db";
    }

    unless ( $ENV{"ARCHIVE"} ) {
        $ENV{"ARCHIVE"} = "lou:."         if $siteName eq "cfe";
        $ENV{"ARCHIVE"} = "lou-via-br2:." if $siteName eq "pfe";
    }
    system("$fvbin/write_FVDAS_Run_Config.pl -remNODE $remNODE -remID $remID");
}

#=======================================================================
sub create_ana_aod_script_tmpl {
    my ($infl, $outf);
    my ($line3, $line4);

    $infl = "$fvroot/etc/ana_aod.j.tmpl";
    $outf = "$fvhome/run/gaas/ana_aod.j.tmpl";

    $line3 = "#$group_list";
    $line4 = "##$export_none";
    $line5 = "#$jobqueue1";

    $cmd = "sed -e 3i\"$line3\" -e 3i\"$line4\" -e 3i\"$line5\" < $infl > $outf";
    print "$cmd\n";
    system($cmd);
}

#=======================================================================
sub create_fscript {

 open(SCRIPT,">$fvhome/fcst/$jobf.j") or
 die ">>> ERROR <<< cannot write $fvhome/fcst/$jobf.j";

 my $xncpus = $ncpus + $o_servers * $ncpus_per_node;

 print  SCRIPT <<"EOF";
#!/bin/csh -fx
# ------------------------------------------
# Example:
#   To run forecast for 20140613_21z, type
#   the following cmd in the fcst directory:
#
#   > touch forecast.20140613_21z
# ------------------------------------------
#$group_list
##$export_none
#$jobqueue1
EOF

if ( $siteID eq "nccs" ) {
print  SCRIPT <<"EOF";
#SBATCH --job-name=fcst
#SBATCH --output=fcst.log.o%j.txt
#SBATCH --ntasks=$xncpus
#SBATCH --ntasks-per-node=$ncpus_per_node
#SBATCH --constraint=$nodeflg
#SBATCH --time=${fcswallclk}:00
EOF

}else{

if ( $siteID eq "nas" ) {
#--$nodes = $ncpus / $ncpus_per_node + 1; # add one if doing parallel prepqc
#--$nodes = $ncpus / $ncpus_per_node;
$nodes = int($ncpus / $ncpus_per_node);
$nodes += 1 if $ncpus > ($nodes * $ncpus_per_node);
print  SCRIPT <<"EOF";
#PBS -l select=$nodes:ncpus=$ncpus_per_node$procflg
EOF

}else{
print  SCRIPT <<"EOF";
#PBS -l ncpus=$ncpus
EOF
}

print  SCRIPT <<"EOF";
#SBATCH --job-name=fcst
#SBATCH --output=fcst.log.o%j.txt
#SBATCH --time=${fcswallclk}:00
#PBS -N fcst
#PBS -o fcst.log.o%j.txt
#PBS -l walltime=${fcswallclk}:00
##PBS -l mem=$mem
#PBS -S /bin/csh
#PBS -j eo
#BSUB -J forecasting
#BSUB -n $ncpus
#BSUB -W $fcswallclk
#BSUB -o fcst.log.o%J.txt
#BSUB -e fcst.log.o%J.txt
EOF
}

print SCRIPT <<"EOF";
# ------------------------------
#
# fvFCST driver script.
#
# This file has been automatically generated by fvsetup.
#
# $nametag
#--------------------------------------------------------------------
 set myname = `basename \$0`
 cd  # start from home otherwise the which's get messed up in SLURM


#
#                 ----------------------------------
#                  PART I - Prepare the Environment
#                 ----------------------------------

# Experiment environment
# ----------------------
  if ( ! (\$?DATAMOVE_CONSTRAINT) ) then
    setenv DATAMOVE_CONSTRAINT NULL
  endif
  setenv BATCH_SUBCMD $qsub
  setenv GID $gid
  setenv group_list \"$group_list1\"
  setenv ARCH `uname -s`
  setenv HOST `uname -n`
  setenv NCPUS   $ncpus   # number of CPUS
  setenv NCPUSX  $xncpus  # NCPUS plus IO-server requirements
  setenv NCPUS_IDF   $ncpus_idf   # Numbers of CPUs to run IDF
  setenv NCPUS_IAU   $ncpus_iau   # Numbers of CPUs to run IAU
  setenv NCPUS_GSI   $ncpus_gsi   # Numbers of CPUs to run GSI
  setenv NCPUS_GPERT $ncpus_gpert # Numbers of CPUs to run GSI
  setenv O_SERVERS   $o_servers   # Number of IO servers
  setenv N_CPU   \$NCPUS
  setenv EXPID   $expid   # experiment ID
  setenv CASE    \$EXPID  # experiment ID (for LSM's sake)
  setenv FVHOME  $fvhome  # experiment home directory
  setenv FVROOT  `cat \$FVHOME/.FVROOT`
  setenv FVFCST  \$FVHOME/fcst
  if(`uname -s` == "OSF1" ) then
    cd \$TMPDIR_UBC
    setenv FVWORK  `pwd`           # temporary fix while TMPDIR not avail on Halem
    setenv FVWORK  \$FVWORK/tmp.\$\$  # temporary fix while TMPDIR not avail on Halem
    mkdir -p \$FVWORK
  endif
  if(`uname -s` == "IRIX64" ) then
    setenv FVWORK  \$SCRATCH1 # working directory
  endif
  if( (`uname -s` == "Linux") && ( (`uname -m` == "ia64") || (`uname -m` == "x86_64") ) ) then
      setenv FORT90L -Wl,-T
      setenv FVWORK $fvhome/../tmp.\$\$
      if(   -d \$FVWORK ) /bin/rm -r  \$FVWORK
      /bin/mkdir -p \$FVWORK
      if (-e /usr/bin/lfs) then
         /usr/bin/lfs setstripe -c 1 -s 1048576 -i -1 \$FVWORK
      endif
  endif

  setenv FVBCS \$FVHOME/fvInput
  setenv EXTDATA \$FVWORK/ExtData  # External data directory
  /bin/mkdir -p \$EXTDATA
  /bin/touch \$EXTDATA/.no_archiving
EOF

foreach $set ( @extdatasets ) {
    print SCRIPT "  /bin/rm -f \$EXTDATA/$set\n";
    print SCRIPT "  /bin/ln -s $extdata{$set} \$EXTDATA/\n";
}

$omp_num_threads = $athread[$ai];
print  SCRIPT <<"EOF";

# Load BASEDIR and modules
# ------------------------
  unsetenv LD_LIBRARY_PATH
  source \$FVROOT/bin/g5_modules
  setenv LD_LIBRARY_PATH \${BASEDIR}/\${ARCH}/lib:\${FVROOT}/lib:\${LD_LIBRARY_PATH}

# Until a better handle of GEOS_Util is agreed upon (should not refer to things in src)
# -------------------------------------------------------------------------------------
  setenv GEOSUTIL \$FVROOT
  \$GEOSUTIL/plots/configure
  source .quickplotrc
 
# Internal parameters controling system behavior
# ----------------------------------------------
  setenv G5GCM   $g5gcm # 1 = enables GEOS-5 GCM, 0 = disables GEOS-5 GCM (back to fvGCM)
  setenv FCHOME  \$FVHOME/fcst
  setenv FVSBC   0     # 1 = enables SBC, 0 = disables SBC (Bias Correction)
  setenv FVCQC   0     # 1 = enables CQC, 0 = disables CQC
  setenv PREPQC  0     # 1 = enables NCEP-QC, 0 = disables QC
  setenv OIQC    $oiqc    # 1 = enables OIQC, 0 = disables OIQC
  setenv RADCOR  "NCEP_VAI"  # (see ssprepqc usage for valid values)
  setenv DAOTOVS 0     # 1 = enables DAOTOVS, 0 = disables DAOTOVS
  setenv TIMEINC $varwindow
  setenv GAASFDBK $gaasfdbk
  setenv LDASFDBK $ldasfdbk
  setenv SSMI_UV 0     # 1 = enables SSMI WIND SPEED, 0 = disables it
  setenv SPLITEXE 0      # 1 = enables SPLIT EXECUTABLE run, 0 = disables it (N/A)
  setenv VTRACK   0      # 0 = disable vortex tracker;   1 = enable
  setenv VTXLEVS "$vtxlevs"
  setenv VTRKFRQF 360    # input/output frequency of vtx files for storm tracking
  setenv DIAG2ODS 0       # 1 = enables conversion of gsi-diag files to ODS, 0 = disables it
  setenv CONVPROG $convupa  # 1 = enables conversion of prog output files to pressure
  setenv NCSUFFIX $ncsuffix
  setenv FVINPUT  \$FVHOME/fvInput
  setenv DO4DIAU $do4diau

EOF

print  SCRIPT <<"EOF";

# MPI/OMP specific environment variables
# --------------------------------------
  setenv NUMBER_CPUS_IN_MACHINE       \$NCPUS    # Total No CPU on this queue
  setenv OMP_NUM_THREADS              \$NCPUS    # Number OMP Threads (generic)
  setenv PSAS_NUM_MPI                 1 # $pmpi      # No. MPI processes for PSAS
  setenv PSAS_NUM_THREADS             1 # $pthread[$pi]                  # No. OMP threads   for PSAS
  setenv AGCM_N_PROCESSES             $ampi                          # N_PROC X N_THREADS = NCPUS
  setenv AGCM_N_THREADS_PER_PROCESS   $athread[$ai]                  # number of CPUs
  setenv AGCM_NUM_MPI                 \$AGCM_N_PROCESSES             # No. MPI processes for GCM
  setenv AGCM_NUM_THREADS             \$AGCM_N_THREADS_PER_PROCESS   # No. OMP threads   for GCM
  setenv OMP_NUM_THREADS              \$AGCM_N_THREADS_PER_PROCESS   # Number OMP Threads (generic)

# MVAPICH variables
# -----------------
  if (\$?MVAPICH) then
     setenv MV2_DEFAULT_TIME_OUT 23
     setenv MV2_USE_SHMEM_ALLREDUCE 0
     setenv MV2_ON_DEMAND_THRESHOLD 8192
     setenv MV2_USE_UD_HYBRID 0
     setenv MV2_USE_SHMEM_COLL      0
     setenv MV2_USE_UD_HYBRID       0
     setenv MV2_HYBRID_MAX_RC_CONN 16
     setenv MV2_SHOW_ENV_INFO 2
  endif

# For some reason, PMI_RANK is randomly set and interferes
# with binarytile.x and other executables.
  unsetenv PMI_RANK

# MPT env variables
# -----------------
  if (\$?I_MPI_ROOT) then
#    setenv I_MPI_USE_DYNAMIC_CONNECTIONS 0
     setenv I_MPI_FABRICS shm:ofi
#    setenv I_MPI_FABRICS shm:dapl
#    setenv I_MPI_FABRICS_LIST "dapl,ofa"
#    setenv I_MPI_FALLBACK "enable"
#    setenv I_MPI_MPD_RSH sshmpi
#    setenv I_MPI_DAPL_CHECK_MAX_RDMA_SIZE 1
##   setenv I_MPI_DAPL_UD on
#    setenv I_MPI_DAPL_UD_SEND_BUFFER_NUM 4096
#    setenv I_MPI_DAPL_UD_RECV_BUFFER_NUM 4096
#    setenv I_MPI_DAPL_UD_ACK_SEND_POOL_SIZE 4096
#    setenv I_MPI_DAPL_UD_ACK_RECV_POOL_SIZE 4096
#    setenv I_MPI_DAPL_UD_RNDV_EP_NUM 2
#    setenv I_MPI_DAPL_UD_REQ_EVD_SIZE 2000
#    setenv I_MPI_JOB_STARTUP_TIMEOUT 10000
#    setenv I_MPI_RDMA_RNDV_WRITE 1
#    The following as recommended by Scott and SI Team
     setenv I_MPI_SHM_HEAP_VSIZE   512
     setenv PSM2_MEMORY            large
     setenv I_MPI_ADJUST_GATHERV   3
     setenv I_MPI_ADJUST_ALLREDUCE 12
     setenv I_MPI_EXTRA_FILESYSTEM 1
     setenv I_MPI_EXTRA_FILESYSTEM_LIST gpfs
     setenv I_MPI_DEBUG 6
#    setenv ROMIO_FSTYPE_FORCE         "gpfs:"
  endif
  if (\$?MPT_VERSION) then
     setenv MPI_COLL_REPRODUCIBLE
     setenv SLURM_DISTRIBUTION block
     setenv MPI_DISPLAY_SETTINGS
     setenv MPI_IB_TIMEOUT 23
     setenv MPI_XPMEM_ENABLE no
     setenv MPI_NUM_MEMORY_REGIONS 0
     setenv SUPRESS_XPMEM_TRIM_THRESH 1
     setenv MPI_COMM_MAX  1024
     setenv MPI_GROUP_MAX 1024
     setenv MPI_BUFS_PER_PROC 256
# The following are from OPS parallel
     setenv DAPL_UCM_CQ_SIZE 4096
     setenv DAPL_UCM_QP_SIZE 4096
     setenv DAPL_UCM_REP_TIME 2000
     setenv DAPL_UCM_RTU_TIME 2000
     setenv DAPL_UCM_RETRY 7
     setenv DAPL_ACK_RETRY 7
     setenv DAPL_ACK_TIMER 20
     setenv DAPL_UCM_RETRY 10
     setenv DAPL_ACK_RETRY 10
  endif

# Needed for TLM/ADM
# ------------------
  setenv N_SMP                        \$NCPUS    # number of CPUS
  setenv N_MPI                        \$NCPUS    # number of MPI processes
  setenv NUMBER_MLP_PROCESSES         \${N_MPI} # still used by GCM
  setenv NUMBER_CPUS_PER_MLP_PROCESS  \${N_SMP} # still used by GCM


  set fcst_opts = ( $blendg5 $grstage )

# Make sure files are accessible
# ------------------------------
  umask 022

# Add FVROOT/bin to front of path so fvDAS binaries are found first
# -----------------------------------------------------------------
  if ( `uname -s` == "Linux" ) then
    set path = ( . \$FVHOME/fcst \$FVHOME/run \$FVROOT/bin \$SHARE/dasilva/opengrads/Contents \$BASEDIR/\$ARCH/bin \$path )
  else
    set path = ( . \$FVHOME/fcst \$FVHOME/run \$FVROOT/bin \$SHARE/dasilva/opengrads/Contents \$path )
  endif

# Obsolecent MPI/OMP specific environment variables
# -------------------------------------------------
  setenv N_SMP                        \$NCPUS    # number of CPUS
  setenv N_MPI                        \$NCPUS    # number of MPI processes
  setenv NUMBER_MLP_PROCESSES         \${N_MPI} # still used by GCM
  setenv NUMBER_CPUS_PER_MLP_PROCESS  \${N_SMP} # still used by GCM

# Make sure files are acessible
# -----------------------------
  umask 022

  echo \$FVWORK > \$FVHOME/.FVFCST  # record working directory
  touch \$FVWORK/input.nml

EOF

# System dependent configuration ..........................................
# ------------------------------
  $os = uc $OSNAME;

  if ( $os =~ /IRIX/ ) {

  print  SCRIPT <<"EOF";

  limit stacksize    4000000kb
  limit coredumpsize 0
  setenv MP_SLAVE_STACKSIZE 100000000       # bytes
  set stacksize = `limit stacksize | awk '{print \$2}' -`
  if (\${stacksize} == "unlimited" || \${stacksize} > 4000000) then
   setenv MP_STACK_OVERFLOW OFF
  endif
  setenv MPC_GANG off

EOF
   }

  elsif ( $os =~ /AIX/ ) {

  print  SCRIPT <<"EOF";

# IBM specific configuration
# --------------------------
  limit stacksize   4000000kb   # 4 Gbytes
  limit coredumpsize 0
  setenv MP_SLAVE_STACKSIZE 100000000       # bytes
  setenv MP_PROCS \${N_MPI}
  setenv MP_EUIDEVICE css0
  setenv MP_EUILIB us
  setenv MP_HOSTILE host.list
  setenv MP_INFOLEVEL 2
  setenv XLSMPOPTS "parthds=\${N_SMP}:schedule=static"
  setenv MP_CSS_INTERRUPT yes

EOF
}

  elsif ( $os =~ /LINUX/ ) {
    if(`uname -n` =~ /thunder/) {
       print  SCRIPT <<"EOF";


# Altix specific configuration
# ---------------------------------
  limit stacksize unlimited
  limit coredumpsize 0
  setenv KMP_STACKSIZE    450m
  unsetenv F_UFMTENDIAN
  setenv KMP_LIBRARY turnaround
  setenv MPI_DSM_DISTRIBUTE
  setenv MPI_TYPE_MAX 6553600
  setenv MPI_UNBUFFERED_STDIO
  setenv DSM_DISTRIBUTE
  setenv MPI_USE_XPMEM
  setenv MPI_BUFFER_MAX 2000
  setenv MPI_MSGS_MAX   10485760
EOF


    }elsif ($siteName eq "cfe") {

  print  SCRIPT <<"EOF";

# Altix specific configuration
# ----------------------------
  limit stacksize unlimited
  limit coredumpsize 0
  setenv KMP_STACKSIZE    450m
  unsetenv F_UFMTENDIAN
  setenv KMP_LIBRARY turnaround
  setenv MPI_DSM_DISTRIBUTE  # pin MPI proceeses to assigned CPU
  setenv MPI_REQUEST_MAX 32768
  setenv MPI_TYPE_MAX 6553600
  setenv MPI_UNBUFFERED_STDIO
  setenv DSM_DISTRIBUTE
  setenv MPI_USE_XPMEM
  setenv MPI_BUFFER_MAX 2000
  setenv MPI_MSGS_MAX   10485760
  setenv MPI_GROUP_MAX  128

  setenv GADDIR   /u/ltakacs/grads
EOF

    }elsif ($siteName eq "pfe") {
  
  print  SCRIPT <<"EOF";
  
# Altix ICE specific configuration
# ----------------------------
  limit stacksize unlimited
  limit coredumpsize 0
  setenv KMP_STACKSIZE    450m
  unsetenv F_UFMTENDIAN
EOF

    } elsif ($siteID eq "nccs") {

  print  SCRIPT <<"EOF";

# Discover specific configuration
# ----------------------------
  limit stacksize unlimited
  limit coredumpsize 0
  setenv KMP_STACKSIZE    450m
  unsetenv F_UFMTENDIAN
  setenv KMP_LIBRARY turnaround


EOF

    }else{ # end of Altix block

  print  SCRIPT <<"EOF";

# Linux specific configuration
# ----------------------------
  setenv FORT90L -Wl,-T
  setenv F_UFMTENDIAN big
  setenv KMP_STACKSIZE    450m
  setenv KMP_LIBRARY turnaround
  limit stacksize   unlimited
  limit coredumpsize 0
  setenv MPSTKZ     32M
EOF
    } # end of Linux block

} elsif ( $os =~ /OSF/ ) {

 $osfmodule = "fortran/551J";
 print  SCRIPT <<"EOF";

# OSF specific configuration
# --------------------------
 setenv KMP_STACKSIZE 64000000             # bytes
 setenv MP_STACK_SIZE 64000000             # bytes
 setenv PARALLEL            \${N_SMP}

EOF
}
# End of system dependent configuration ...................................


# Continue with rest of script
# ----------------------------
  print  SCRIPT <<"EOF";

# Hybrid Options
# --------------
  set GCMX    = `which $modelexec`
  set GCMPTX  = `which $pertmodelexec`
  set IDFX    = `which idfupd.x`
  set IAUX    = `which $iauexec`
  set ANAX    = `which $anaexec`
  set SACX    = `which sac.x`
  set HDF2RSX = `which hdf2rs.x`

EOF

if ( $os =~ /OSF/ ) {
print  SCRIPT <<"EOF";
  if ( \$SPLITEXE ) then
     setenv MPIRUN_IDF    "prun -t -s -n \$NCPUS_IDF \$IDFX"
     setenv MPIRUN_IAU    "prun -t -s -n \$NCPUS_IAU \$IAUX"
     setenv MPIRUN_ANA    "prun -t -s -n \$NCPUS_GSI \$ANAX"
     setenv MPIRUN_OBSVR  "prun -t -s -n \$NCPUS_GSI \$ANAX"
     setenv MPIRUN_SAC    "prun -t -s -n 1       \$SACX"
  else
     setenv MPIRUN_IDF    "prun -t -s -n \$NCPUS_IDF \$IDFX"
     setenv MPIRUN_IAU    "prun -t -s -n \$NCPUS_IAU \$IAUX"
     setenv MPIRUN_ANA    "prun -t -s -c \$PSAS_NUM_THREADS -n \$PSAS_NUM_MPI -N  \$PSAS_NUM_MPI \$ANAX"
     setenv MPIRUN_OBSVR  "prun -t -s -c \$PSAS_NUM_THREADS -n \$PSAS_NUM_MPI -N  \$PSAS_NUM_MPI \$ANAX"
     setenv MPIRUN_SAC    "prun -t -s -n 1       \$SACX"
  endif
  setenv OMP_SCHEDULE STATIC
  setenv MPIRUN        "prun -s -c \$PSAS_NUM_THREADS -n \$PSAS_NUM_MPI -N  \$PSAS_NUM_MPI "
  if ( \$G5GCM || \$AGCM_NUM_THREADS == 1 ) then
     setenv    RUN_OPT_BEGIN "prun -s -n \$NCPUS \$GCMX"
     setenv ADMRUN_OPT_BEGIN "prun -s -n \$NCPUS_GPERT \$GCMPTX"
  else
     setenv    RUN_OPT_BEGIN "prun -s -c \$AGCM_N_THREADS_PER_PROCESS -N \$AGCM_N_PROCESSES -n \$AGCM_N_PROCESSES \$GCMX"
     setenv ADMRUN_OPT_BEGIN "prun -s -c \$AGCM_N_THREADS_PER_PROCESS -N \$AGCM_N_PROCESSES -n \$AGCM_N_PROCESSES \$GCMPTX"
  endif
  setenv RUN_OPT_BLEND "prun -N -s -c \$AGCM_N_THREADS_PER_PROCESS -N \$AGCM_N_PROCESSES -n \$AGCM_N_PROCESSES \$HDF2RSX"
EOF

}elsif ( $siteID eq "nccs" ) {
$omp_num_threads = 1;
print  SCRIPT <<"EOF";
  setenv OMP_NUM_THREADS $omp_num_threads
  setenv MPIRUN_IDF    "esma_mpirun -np \$NCPUS_IDF \$IDFX"
  setenv MPIRUN_IAU    "esma_mpirun -np \$NCPUS_IAU \$IAUX"
  setenv MPIRUN_ANA    "PBS_NODEFILE=\$FVWORK/ANA_list; esma_mpirun -perhost 8 -np \$NCPUS_GSI \$ANAX"
  setenv MPIRUN_OBSVR  "PBS_NODEFILE=\$FVWORK/ANA_list; esma_mpirun -np \$NCPUS_GSI \$ANAX"
  setenv MPIRUN_SAC    "esma_mpirun -np  1      \$SACX"
  setenv MPIRUN_OIQC   "PBS_NODEFILE=\$FVWORK/OIQC_list; esma_mpirun -np 4"
  setenv MPIRUN        "esma_mpirun -np \$PSAS_NUM_MPI "
  setenv RUN_OPT_BLEND "esma_mpirun -np \$NCPUS \$HDF2RSX"
  if (\$G5GCM ) then
     if ( \$O_SERVERS > 0 ) then
        setenv RUN_OPT_BEGIN "mpirun -np \$NCPUSX \$GCMX --npes_model \$NCUPS --nodes_output_server \$O_SERVERS --oserver_type multigroup --npes_backend_pernode \$O_SERVERS"
     else
        setenv    RUN_OPT_BEGIN "esma_mpirun -np \$NCPUS \$GCMX"
     endif
     setenv ADMRUN_OPT_BEGIN "esma_mpirun -np \$NCPUS_GPERT \$GCMPTX"
  else
     setenv    RUN_OPT_BEGIN "esma_mpirun -np \$AGCM_NUM_MPI \$GCMX"
     setenv ADMRUN_OPT_BEGIN "esma_mpirun -np \$AGCM_NUM_MPI \$GCMPTX"
  endif
EOF

} elsif ($siteName eq "cfe") {
print  SCRIPT <<"EOF";
  setenv MPIRUN_IDF    "esma_mpirun -prefix "\\"%g\\"" -np \$NCPUS_IDF \$IDFX"
  setenv MPIRUN_IAU    "esma_mpirun -prefix "\\"%g\\"" -np \$NCPUS_IAU \$IAUX"
  setenv MPIRUN_ANA    "esma_mpirun -prefix "\\"%g\\"" -np \$NCPUS_GSI \$ANAX"
  setenv MPIRUN_OBSVR  "esma_mpirun -prefix "\\"%g\\"" -np \$NCPUS_GSI \$ANAX"
  setenv MPIRUN_SAC    "esma_mpirun -prefix "\\"%g\\"" -np  1      \$SACX"
  setenv MPIRUN        "esma_mpirun -np \$PSAS_NUM_MPI "
  setenv RUN_OPT_BLEND "esma_mpirun -np \$NCPUS \$HDF2RSX"
  if ( \$G5GCM ) then
     setenv    RUN_OPT_BEGIN "esma_mpirun -np \$NCPUS \$GCMX"
     setenv ADMRUN_OPT_BEGIN "esma_mpirun -np \$NCPUS_GPERT \$GCMPTX"
  else
     setenv    RUN_OPT_BEGIN "esma_mpirun -np \$AGCM_NUM_MPI \$GCMX"
     setenv ADMRUN_OPT_BEGIN "esma_mpirun -np \$AGCM_NUM_MPI \$GCMPTX"
  endif
EOF

} elsif ($siteName eq "pfe") {
print  SCRIPT <<"EOF";
  set NUMNODES=`sort -u \$PBS_NODEFILE | wc -l`
  setenv MPIRUN_IDF    "esma_mpirun -np \$NCPUS_IDF \$IIDF"
  setenv MPIRUN_IAU    "esma_mpirun -np \$NCPUS_IAU \$IAUX"
  setenv MPIRUN_ANA    "esma_mpirun -np \$NCPUS_GSI \$ANAX"
  setenv MPIRUN_OBSVR  "esma_mpirun -np \$NCPUS_GSI \$ANAX"
  setenv MPIRUN_SAC    "esma_mpirun -np 1      \$SACX"
  setenv MPIRUN_OIQC   "esma_mpirun -np 4"
  setenv MPIRUN        "esma_mpirun -np \$PSAS_NUM_MPI "
  setenv RUN_OPT_BLEND "esma_mpirun -np \$NCPUS \$HDF2RSX"
  if ( \$G5GCM ) then
     setenv    RUN_OPT_BEGIN "esma_mpirun -np \$NCPUS \$GCMX"
     setenv ADMRUN_OPT_BEGIN "esma_mpirun -np \$NCPUS_GPERT \$GCMPTX"
  else
     setenv    RUN_OPT_BEGIN "esma_mpirun -np \$AGCM_NUM_MPI \$GCMX"
     setenv ADMRUN_OPT_BEGIN "esma_mpirun -np \$AGCM_NUM_MPI \$GCMPTX"
  endif
EOF

}else{
print "ERROR: I do not recognize this platform\n";
exit();
}
print  SCRIPT <<"EOF";

#
#                 ----------------------------------------
#                    PART II - Stage and Run 1 Forecast
#                 ---------------------------------------

                             cd \$FVHOME/fcst

# Pick oldest restart for initial condition
# -----------------------------------------
  if (\$?this_nymdhh) then
     set fclist = `/bin/ls -1 forecast.\${this_nymdhh}z`
  else
     set fclist = `/bin/ls -1 forecast.????????_??z`
  endif
  if ( \$status ) then # try old way: have restarts been dropped in fcst dir?
    echo \$myname": forecast cases not listed"
    set rslist = `/bin/ls -1 \$FVHOME/fcst/\$EXPID.rst.lcv.????????_??z.bin`
    if ( \$status ) then
      echo \$myname": no restart files found, nothing to do"
      cd
      /bin/rm -r \$FVWORK
      exit 1
    endif
    set itime = \$rslist[1]:r:e
    set itime_hhmm = \$itime:s/z/00z/
    set nymd = `echo \$itime | cut -c1-8`
    set hh   = `echo \$itime | cut -c10-11`; set nhms = \${hh}0000
    if ( -e .SUBMITTED.\${nymd}_\${hh}z ) then
       echo "g5fcst: job to forecast from \$nymd \$hh has already been submitted"
       echo "g5fcst: exiting now ..."
       exit 0
    endif
  else # invoke acquire program to retrieve RSTs; see rst4fcst.acq
    set itime = \$fclist[1]:e
    set itime_hhmm = \$itime:s/z/00z/
    set nymd = `echo \$itime | cut -c1-8`
    set hh   = `echo \$itime | cut -c10-11`; set nhms = \${hh}0000
    /bin/mv \$fclist[1] \$fclist[1].RUNNING
    set fname = "acquire_rst.pbs"
    alias fname1 "echo \\!* >! \$fname"
    alias fname2 "echo \\!* >> \$fname"
    set qsub_acquire = 1
    if ( \$?FVSPOOL ) then
       set spool = "-s \$FVSPOOL "
    else
       set diren = `dirname \$FVHOME`
       set spool = "-s \$diren/spool "
    endif

    fname1 "#\\!/bin/csh -xvf"
    fname2 "#\$group_list"
    fname2 "#SBATCH --job-name=acquire"
    fname2 "#SBATCH --ntasks=1"
    fname2 "#SBATCH --time=1:00:00"
    fname2 "#SBATCH --partition=datamove"
    fname2 "#\$DATAMOVE_CONSTRAINT"
    fname2 "#SBATCH --account=$gid"
    fname2 "#SBATCH --output=acq.log.o%j.txt"
    fname2 "#PBS -N acquire"
    fname2 "#PBS -l nodes=1:ppn=1"
    fname2 "#PBS -l walltime=1:00:00"
    fname2 "#PBS -q datamove"
    fname2 "#PBS -S /bin/csh"
    fname2 "#PBS -V"
    fname2 "#PBS -o acq.log.o%j.txt"
    fname2 "#PBS -j eo"
    fname2 ""
    fname2 "cd \$FVWORK"
    fname2 "acquire -v -rc \$FVHOME/fcst/rst4fcst.acq -d \$FVHOME/fcst \$spool -ssh \$nymd \$nhms 060000 1"
    fname2 "endif"
    fname2 "exit"

    if ( \$BATCH_SUBCMD == "sbatch" ) then
       sbatch -W \$fname
    else
       qsub -W block=true \$fname
    endif
    sleep 2

  endif
  if (! -e \$EXPID.rst.lcv.\${nymd}_\${hh}z.bin ) then
     # check for presence of tarball
     set rstlst = `ls *.rst.\${nymd}_\${hh}z.tar`
     set vexpid = `echo \$rstlst | cut -d. -f1`
     if ( -e \$vexpid.rst.\${nymd}_\${hh}z.tar ) then     
        if (! -d RSTinput_\${nymd}_\${hh}z ) mkdir RSTinput_\${nymd}_\${hh}z
        cd RSTinput_\${nymd}_\${hh}z
        tar xvf ../\$vexpid.rst.\${nymd}_\${hh}z.tar
        if ( "\$EXPID" != "\$vexpid" ) then
           foreach fn ( `ls *_internal_rst* *_import_rst* *rst.lcv* `)
               set sfx = `echo \$fn | cut -d. -f2-`
               /bin/mv \$vexpid.\$sfx \$EXPID.\$sfx
           end
        endif
        if (! -e \$EXPID.rst.lcv.\${nymd}_\${hh}z.bin ) then
           echo \$myname": not all restart files found in tarball, nothing to do"
           echo \$myname": leaving tarball behind for further checking"
           exit 1
        endif
        # keep only (bin) restart files
        /bin/mv *_internal_rst* *_import_rst* *rst.lcv* ../
        cd -
        /bin/rm -r RSTinput_\${nymd}_\${hh}z
        /bin/rm \$vexpid.rst.\${nymd}_\${hh}z.tar
     else
        echo \$myname": no restart files found, nothing to do"
        cd
        /bin/rm -r \$FVWORK
        exit 1
     endif
  endif 

# obtain ldas incr for the first 6h integration
#----------------------------------------------
  if ( \$LDASFDBK == 1 ) then
     /bin/cp \$EXPID.rst.lcv.\${nymd}_\${hh}z.bin ldasd_rst
     set adas_strt = ( `rst_date ./ldasd_rst` )
     @ ldastick1 = 5400
     @ ldastick2 = 16200
     set linctt1 = ( `tick \$adas_strt \$ldastick1` )
     set linctt2 = ( `tick \$adas_strt \$ldastick2` )
     set yyyymmdd1 = `echo \$linctt1[1] | cut -c1-8`
     set yyyymmdd2 = `echo \$linctt2[1] | cut -c1-8`
     set hhnn1 = `echo \$linctt1[2] | cut -c1-4`
     set hhnn2 = `echo \$linctt2[2] | cut -c1-4`
     /bin/cp \$FVHOME/lana/ldas_inc.\${yyyymmdd1}_\${hhnn1}00 \$FVWORK/.
     /bin/cp \$FVHOME/lana/ldas_inc.\${yyyymmdd2}_\${hhnn2}00 \$FVWORK/.
     rm ldasd_rst
   endif

# Stage the initial condition
# ---------------------------
  /bin/mkdir -p \$FVHOME/fcst/stage
  /bin/touch \$FVHOME/fcst/stage/.no_archiving
  set rsfiles = `ls *.\$itime.{bin,nc4} *.\$itime_hhmm.$ncsuffix *.agcm_import*.iter*.bin`
  foreach rsf ( \$rsfiles )
    /bin/mv  \$rsf   \$FVHOME/fcst/stage
  end

  if (`uname -n` =~ borg*) then
      subset_nodefile.pl \$NCPUS_IDF -f \$PBS_NODEFILE -o \$FVWORK/IDF_list
      subset_nodefile.pl \$NCPUS_IAU -f \$PBS_NODEFILE -o \$FVWORK/IAU_list
  endif

# Reset CAP
# ---------
# if ( -e \$FVHOME/fcst/CAP_\${hh}.rc.tmpl ) /bin/cp \$FVHOME/fcst/CAP_\${hh}.rc.tmpl \$FVHOME/fcst/CAP.rc.tmpl

# Check for Bootstrap
# -------------------
  setenv BOOTSTRAP 0
  if (-e \$FVFCST/AGCM.BOOTSTRAP.rc.tmpl) setenv BOOTSTRAP 1

# Make the forecast run as 1 job segment
# --------------------------------------
  if (! -e .SUBMITTED.\$itime) touch .SUBMITTED.\$itime
  fvpsas \$fcst_opts -fcst \$itime -ihh0 \$hh \$FVHOME \$FVWORK

  set rc = \$status
  if ( \$rc > 0 && \$rc < 100 ) then
       echo \$myname": abnormal error condition from fvpsas..."
       exit 1
  endif

# Finished with Bootstrap
# -----------------------
if (-e \$FVFCST/AGCM.BOOTSTRAP.rc.tmpl) then
   /bin/mv \$FVFCST/AGCM.BOOTSTRAP.rc.tmpl \$FVFCST/AGCM.BOOTSTRAP.rc.tmpl.DONE
   setenv BOOTSTRAP 0
endif

#
#
#                 ----------------------------------------
#                      PART III - Data Archival
#                 ---------------------------------------

                           cd \$FVHOME/fcst


# Move files to FVHOME for archiving and/or post-processing
# ---------------------------------------------------------
  ls -altuF \$FVWORK
  setenv PESTOROOT `dirname \$FVHOME`
  pesto -v -l -clean -d \$FVWORK -arc fcststorage.arc


# Mass storage archival as an 1 CPU batch job
# -------------------------------------------
  set jname = fcst.arch.\${itime}
  set lname = fcst.arch.log.\${itime}.o%j.txt

  if ( !(\$?this_nymdhh) ) then # only archive when not running multiple concurrent fcst jobs
     if ( `uname -s` == "OSF1" ) then
           bsub -J \$jname < \$FVHOME/run/fvarchive.j
     else
           if ( \$BATCH_SUBCMD == "sbatch" ) then
              sbatch -J \$jname -o \$lname --export=arch_type=FCST \$FVHOME/run/fvarchive.j
           else
              qsub -N \$jname -o \$lname -v arch_type=FCST \$FVHOME/run/fvarchive.j
           endif
     endif
  endif

# --------------------------
# No post-processing for now
# --------------------------


#
#
#                  ------------------------------
#                    PART IV - Next Job Segment
#                  ------------------------------

                          cd \$FVHOME/fcst

# If forecast sucessfully completed, remove rs and resubmit
# ---------------------------------------------------------
 if ( \$rc == 0 || \$rc == 101 ) then

     if( -e .SUBMITTED.\${nymd}_\${hh}z ) /bin/mv .SUBMITTED.\${nymd}_\${hh}z .DONE_FCST.\${nymd}_\${hh}z

     set rsfiles = `ls stage/\$EXPID*.\$itime.{bin,nc4} stage/\$EXPID*.\$itime_hhmm.$ncsuffix`
     foreach rsf ( \$rsfiles )
       /bin/rm -f \$rsf
     end

     if (\$?this_nymdhh) then
         if( -e forecast.\${this_nymdhh}z.RUNNING ) /bin/rm forecast.\${this_nymdhh}z.RUNNING
     else
         set rslist = `/bin/ls -1 \$FVHOME/fcst/\$EXPID.rst.lcv.????????_??z.bin`
         if ( \$status ) then
             if( -e forecast.\${nymd}_\${hh}z.RUNNING ) /bin/rm forecast.\${nymd}_\${hh}z.RUNNING
             set fclist = `/bin/ls -1 forecast.????????_??z`
             if ( \$status ) then
                echo \$myname": no more restart files, forecast job completed"
             else
                set itime2 = \$fclist[1]:e
                set jname2 = fcst.\$itime2
                set lname2 = fcst.log.\${itime2}.o%j.txt
             endif
         else
             set itime2 = \$rslist[1]:r:e
             set jname2 = fcst.\$itime2
             set lname2 = fcst.log.\${itime2}.o%j.txt
         endif

         if ( \$\?itime2 ) then
             if ( ! -e .SUBMITTED.\$itime2 ) then
                touch .SUBMITTED.\$itime2
                if ( \$BATCH_SUBCMD == "sbatch" ) then
                   sbatch -d afterany:\${SLURM_JOBID} -J \$jname2 -o \$lname2 $jobf.j
                else
                   qsub -W depend=afterany:\${PBS_JOBID} -N \$jname2 -o \$lname2 $jobf.j
                endif
             endif
         endif

         # Rename output log
         # -----------------
         set lname = \$FVHOME/fcst/fcst.log.\${itime}.txt
         qalter -o \$lname \$SLURM_JOBID

     endif

     # Because on Columbia this is not a legitimate TMPDIR, remove dir to avoid pile up
     # --------------------------------------------------------------------------------
     if( (`uname -s` == "Linux") && ((`uname -m` == "ia64")||(`uname -m` == "x86_64")) ) then
        cd
        /bin/rm -r \$FVWORK
     endif

# or else, something went wrong
# -----------------------------
 else

     echo \$myname": unexpected return code from fvpsas, rc = \$rc"
     exit 1

 endif

# All done
# --------
  exit 0

EOF

 close(SCRIPT);

}

#=======================================================================
sub init_agcm_rc {
    my ($mydir, $num_readers);
    my (%values, %flags, %envvars);

    $mydir = shift @_;

    $envvars{"fvhome"} = $fvhome;
    $envvars{"fvroot"} = $fvroot;
    $envvars{"coupled"} = $coupled;
    set_AGCM_envvars(%envvars);

    $flags{"gocart_tracers"} = $gocart_tracers;
    $flags{"carma_tracers"}  = $carma_tracers;
    $flags{"iau"}            = $doiau;
    $flags{"pcp_forced"}     = $pcp_forced;
    $flags{"lsmodel_flag"}   = $lsmodel_flag;
    $flags{"ldas_flag"}      = $ldas_flag;
    set_AGCM_flags(%flags);

    # $num_readers must divide evenly into $ny
    #-----------------------------------------
    if    ($agcm_im == 180) { $num_readers = 4 }
    elsif ($agcm_im >  180) { $num_readers = 6 }
    else                    { $num_readers = 1 }

    # gcm satellite simulator
    #------------------------
    if ( $merra2 ) {
        $satsim_isccp = 1;
        $satsim_modis = 1;
    } else {
        $satsim_isccp = 0;
        $satsim_modis = 0;
    }
    $satsim_radar = 0;
    $satsim_lidar = 0;
    $satsim_misr  = 0;
    $satsim       = 0;
    $dastuning    = "";

    # set aero provider
    #------------------
    $rats = "PCHEM";
    $oanp = "PCHEM";
    if ( $gocart_tracers ) { $aero = "GOCART";}
    else                   { $aero = "GOCART.data"; }
    if ( $cubed ) { 
         $dycore = "FV3";
         if ($hist_im >= $ogcm_im) { $INTERPOLATE_SST = 1 }
         else                      { $INTERPOLATE_SST = 0 }
    } else { 
         $dycore = "FV";
         if ($agcm_im >= $ogcm_im) { $INTERPOLATE_SST = 1 }
         else                      { $INTERPOLATE_SST = 0 }
    }

    AGCM_label_subst("\@EXPID", $expid);

    AGCM_label_subst("\@AGCM_IM", $agcm_im);
    AGCM_label_subst("\@AGCM_JM", $agcm_jm);
    AGCM_label_subst("\@AGCM_LM", $km);
    AGCM_label_subst("\@AGCM_NF", $ogcm_nf);
    AGCM_label_subst("\@GRID_TYPE", $agcm_grid_type);
    AGCM_label_subst("\@CUBE_AGCM", $cube_agcm);
    AGCM_label_subst("\@LATLON_AGCM", $latlon_agcm);
    AGCM_label_subst("\@IOS_NDS", $ios_nds);

    AGCM_label_subst("\@AANA_IM", $ana_im);
    AGCM_label_subst("\@AANA_JM", $ana_jm);

    AGCM_label_subst("\@MP_MG1", "#");
    AGCM_label_subst("\@MP_GFDL", "#");

    AGCM_label_subst("\@NX", $nx);
    AGCM_label_subst("\@NY", $ny);
    AGCM_label_subst("\@NUM_READERS", $num_readers);
    AGCM_label_subst("\@NUM_WRITERS", 1); #_RT: for now, it seems not good to have it larger than 1 

    AGCM_label_subst("\@OCEAN_NAME", $ocean_name);
    AGCM_label_subst("\@OGCM_IM", $ogcm_im);
    AGCM_label_subst("\@OGCM_JM", $ogcm_jm);
    AGCM_label_subst("\@OGCM_LM", $ogcm_lm);
    AGCM_label_subst("\@OGCM_NF", $ogcm_nf);
    AGCM_label_subst("\@OGCM_GRID_TYPE", $ogcm_grid_type);
    AGCM_label_subst("\@CUBE_OGCM", $cube_ogcm);
    AGCM_label_subst("\@LATLON_OGCM", $latlon_ogcm);

    AGCM_label_subst("\@CLDMICRO", $cldmicro);

    AGCM_label_subst("\@DT", $dt);
    AGCM_label_subst("\@CHEM_DT",  $chemdt);
    AGCM_label_subst("\@SOLAR_DT", $solardt);
    AGCM_label_subst("\@IRRAD_DT", $irraddt);

    AGCM_label_subst("\@OCEAN_DT", $ogcmrdt);
    AGCM_label_subst("\@OGCM_NX", $ogcm_nx);
    AGCM_label_subst("\@OGCM_NY", $ogcm_ny);

    AGCM_label_subst("\@DASTUNING", $dastuning);

    AGCM_label_subst("\@CHEMETHOD", $chemethod);
    AGCM_label_subst("\@CHEMHIN",   $chemhin);
    AGCM_label_subst("\@CHEMXIN",   $chemxin);

    AGCM_label_subst("\@EMISSIONS"    ,  "g5chem");
    AGCM_label_subst("\@RATS_PROVIDER",  $rats);
    AGCM_label_subst("\@AERO_PROVIDER",  $aero);
    AGCM_label_subst("\@OANA_PROVIDER",  $oanp);

    AGCM_label_subst("\@PCHEM_CLIM_YEARS", 1);

    AGCM_label_subst("\@IS_FCST",        $is_fcst);

    AGCM_label_subst("\@DYCORE",         $dycore);
    AGCM_label_subst("\@AGCM_GRIDNAME",  $AGCM_GRIDNAME);
    AGCM_label_subst("\@OGCM_GRIDNAME",  $OGCM_GRIDNAME);
    AGCM_label_subst("\@INTERPOLATE_SST",$INTERPOLATE_SST);

    AGCM_label_subst("\@ISCCP_SATSIM","$satsim_isccp");
    AGCM_label_subst("\@MODIS_SATSIM","$satsim_modis");
    AGCM_label_subst("\@RADAR_SATSIM","$satsim_radar");
    AGCM_label_subst("\@LIDAR_SATSIM","$satsim_lidar");
    AGCM_label_subst("\@MISR_SATSIM" ,"$satsim_misr");
    AGCM_label_subst("\@SATSIM"      ,"$satsim");

    AGCM_label_subst("\@CHECKPOINT_TYPE" ,"pbinary");
    AGCM_label_subst("\@DFLT_CHECKPOINT_TYPE" ,"pbinary") if $rstype eq "bin";
    AGCM_label_subst("\@DFLT_CHECKPOINT_TYPE" ,"pnc4")    if $rstype eq "nc4";

    AGCM_label_subst("\@USE_SKIN_LAYER" ,"1");
    AGCM_label_subst("\@ANALYZE_TS" ,"1");

    AGCM_label_subst("\@LSM_CHOICE" , $lsmodel_flag);
    AGCM_label_subst("\@RUN_ROUTE" , $rroute_flag);
    AGCM_label_subst("\@NUM_READERS" , "1");
    AGCM_label_subst("\@LDAS_INCR"   , $ldas_flag);

    #  Choice of LSM parameters
    if ( "$landbcs" eq "Icarus-NLv3" ) { 
       AGCM_label_subst("\@LSM_PARMS" , " ");
    } else {
       AGCM_label_subst("\@LSM_PARMS" , "#");
    }

    #  Choice of Coupling
    if ( $coupled ) { 
       AGCM_label_subst("\@COUPLED"   , " ");
       AGCM_label_subst("\@DATAOCEAN" , "#");
    } else {
       AGCM_label_subst("\@COUPLED"   , "#");
       AGCM_label_subst("\@DATAOCEAN" , " ");
    }

    # directory-specific values
    #--------------------------
    if (($varcase >= 4) and ($mydir eq "run")) {
#_RT    AGCM_label_subst("\@OBSERVER_FRQ", $asynbkg_hms);
        AGCM_label_subst("\@OBSERVER_FRQ", "0"); # for now, for to bypass GCM observer
    } else {
        AGCM_label_subst("\@OBSERVER_FRQ", "0");
    }
    if ($mydir eq "amip") {
        AGCM_label_subst("\@OX_RELAXTIME", "259200.0");
    } else {
        AGCM_label_subst("\@OX_RELAXTIME", "0.00");
    }

    # precip forcing: 
    #   default is based on NCA settings (but line is commented since we don't want this done)
    if ( $pcp_forced ) {
        $pcp_fntmpl = "d5_merra/Y%y4/M%m2/d5_merra.tavg1_2d_lfo_Nx_corr.%y4%m2%d2_%h230z.nc";
    } else {
        if ( $nymd < 19890101 ) {
           $pcp_fntmpl = "d5_merra_jan79/diag/Y%y4/d5_merra_jan79.tavg1_2d_lfo_Nx_corr.%y4%m2%d2_%h230z.nc";
        } elsif ( $nymd > 19890101 && $nymd < 19980101 ) {
           $pcp_fntmpl = "d5_merra_jan89/diag/Y%y4/d5_merra_jan89.tavg1_2d_lfo_Nx_corr.%y4%m2%d2_%h230z.nc";
        } else {
           $pcp_fntmpl = "d5_merra_jan98/diag/Y%y4/d5_merra_jan98.tavg1_2d_lfo_Nx_corr.%y4%m2%d2_%h230z.nc";
        }
    }
    AGCM_label_subst("\@PRECIP_FILE", "$pcp_fntmpl");
    
}

#=======================================================================
sub init_agcm_pert_rc {
    my ($mydir);
    my (%values, %flags, %envvars);

    $mydir = shift @_;

    $AGCM_IM_4digit      = sprintf "%04d", $apert_im;
    $AGCM_PERT_IM_4digit = sprintf "%04d", $hist_pert_im;
    $AGCM_PERT_JM_4digit = sprintf "%04d", $hist_pert_jm;
    $pert_tile = "DC${AGCM_PERT_IM_4digit}xPC${AGCM_PERT_JM_4digit}_CF${AGCM_IM_4digit}x6C.til";

    $envvars{"fvhome"} = $fvhome;
    $envvars{"fvroot"} = $fvroot;
    &set_AGCM_PERT_envvars(%envvars);

    &set_AGCM_PERT_flags(%flags);

    &AGCM_PERT_label_subst("\@AGCM_IM", $apert_im);
    &AGCM_PERT_label_subst("\@AGCM_JM", $apert_jm);
    &AGCM_PERT_label_subst("\@AGCM_LM", $km);

    &AGCM_PERT_label_subst("\@AGCM_PERT_IM", $hist_pert_im);
    &AGCM_PERT_label_subst("\@AGCM_PERT_JM", $hist_pert_jm);
    &AGCM_PERT_label_subst("\@AGCM_PERT_LM", $km);

    &AGCM_PERT_label_subst("\@PERT_TILE", "$pert_tile");

    &AGCM_PERT_label_subst("\@NX", $nx_pert);
    &AGCM_PERT_label_subst("\@NY", $ny_pert);

    &AGCM_PERT_label_subst("\@AGCM_PERT_BCS", $fvhome);

#   &AGCM_label_subst("\@SOLAR_DT", $solardt);
#   &AGCM_label_subst("\@IRRAD_DT", $irraddt);

}

#=======================================================================
sub copy_resources {
  my ($chemrc, $ensFLG);
  my ($flags, $label, $string, $vars, $cmd);

  cp("$fvroot/etc/VERSION","$fvhome/run/VERSION")
          || die "Cannot write file $fvhome/run/VERSION: $!";
  cp("$fvroot/etc/CVSTAG","$fvhome/run/CVSTAG")
          || die "Cannot write file $fvhome/run/CVSTAG: $!";
  cp("$fvroot/etc/Chem_Registry.rc","$fvhome/run/gocart/Chem_Registry.rc")
          || warn "Cannot write file $fvhome/run/gocart/Chem_Registry.rc: $!";
  cp("$fvroot/etc/DU_GridComp.rc","$fvhome/run/DU_GridComp.rc")
          || warn "Cannot write file $fvhome/run/DU_GridComp.rc: $!";

  # GEOS-5 GCM
  # ----------
  if ( $g5gcm ) {

      if ( $cubed ) {
         @g5rc_files = ( @g5rc_files, @cubedas_files );
      }
      foreach $fname ( @g5rc_files ) {

          $g5name = $fname;
          $g5name = $g5hist_rc if ($g5name eq "HISTORY.rc.tmpl");
          $g5name = $g5prog_rc if ($g5name eq "GCMPROG.rc.tmpl");

          if ( -e "$fvroot/etc/$g5name" ) {
              cp("$fvroot/etc/$g5name","$fvhome/run/$fname")
                  || die "Cannot write file $fvhome/run/$fname: $!";
              cp("$fvroot/etc/$g5name","$fvhome/fcst/$fname")
                  || die "Cannot write file $fvhome/fcst/$fname: $!";
          } else {
              print "$0: Cannot find resource file $fvroot/etc/$g5name\n";
              $missing{$g5name}++;
          }
          if ($fname eq "GEOS_ChemGridComp.rc") {
              if ($gocart_tracers) { 
                                     $vvflgs  =  "ENABLE_GOCART=.TRUE.";
                                     $vvflgs .= ",ENABLE_GOCART_DATA=.FALSE." }
              else                 { 
                                     $vvflgs  =  "ENABLE_GOCART=.FALSE.";
                                     $vvflgs .= ",ENABLE_GOCART_DATA=.TRUE." }
              if ($gaasfdbk)       { $vvflgs .= ",ENABLE_GAAS=.TRUE." }
              else                 { $vvflgs .= ",ENABLE_GAAS=.FALSE." }

              foreach $chemrc ("$fvhome/run/$fname", "$fvhome/fcst/$fname") {
                  system "$fvbin/vED -i -vv $vvflgs $chemrc";
              }
          }
      }
      $ensFLG = "";
      $ensFLG = "-vv number_of_ensemble_members=50" if $res eq "C48";

      foreach $fname ( @gaas_files ) {
          $source = "$fvroot/etc/$fname";
          $target = "$fvhome/run/gaas/$fname";
          system("$fvbin/vED -vv SHARE=$SHARE $ensFLG $source -o $target");
      }
      system("touch $fvhome/run/gaas/GAAS.BOOTSTRAP_");
  }

  # Model perturbation-related settings
  # -----------------------------------
  if ( $admtlm ) {

      foreach $fname ( @adrc_files ) {

          if ( -e "$fvroot/etc/$fname" ) {
              if ( $fname eq "fvsens.ccmrun.namelist.tmpl") {
                  # for 21z forecasts
                  my $fnmout21 = "fvsens.ccmrun.namelist_21.tmpl";
                  my $fnmout00 = "fvsens.ccmrun.namelist_00.tmpl";
                  $admbegtlag = timeLagStartHours($fhours21, $sensdeg, 27);
                  $cmd = "sed 's/>>>ADMBEGTLAG<<</$admbegtlag/' $fvroot/etc/$fname"
                      .  " > $fvhome/fcst/$fnmout21";
                  $rc = system($cmd);
                  die "Error writing $fvroot/etc/$fname; rc = $rc/256\n" if $rc;
                  cp("$fvhome/fcst/$fnmout21","$fvhome/fcst/$fnmout00");
                  # for 15z forecasts
                  my $fnmout15 = "fvsens.ccmrun.namelist_15.tmpl";
                  my $fnmout18 = "fvsens.ccmrun.namelist_18.tmpl";
                  $admbegtlag = timeLagStartHours($fhours15, $sensdeg, 33);
                  $cmd = "sed 's/>>>ADMBEGTLAG<<</$admbegtlag/' $fvroot/etc/$fname"
                      .  " > $fvhome/fcst/$fnmout15";
                  $rc = system($cmd);
                  die "Error writing $fvroot/etc/$fname; rc = $rc/256\n" if $rc;
                  cp("$fvhome/fcst/$fnmout15","$fvhome/fcst/$fnmout18");
                  if ( $admtlm ) {
                     cp("$fvhome/fcst/$fnmout15","$fvhome/asens/asensrules.rc");
                  }
              } else {
                  cp("$fvroot/etc/$fname","$fvhome/fcst/$fname")
                      || die "Cannot write file $fvhome/fcst/$fname: $!";
              }
          } else {
              print "$0: Cannot find resource file $fvroot/etc/$fname\n";
              $missing{$fname}++;
          }
      }

      ed_admtlmA_acq("run");
  }

  if ( $svec ) {

      foreach $fname ( @svrc_files ) {

          if ( -e "$fvroot/etc/$fname" ) {
              cp("$fvroot/etc/$fname","$fvhome/fcst/$fname")
                  || die "Cannot write file $fvhome/fcst/$fname: $!";
          } else {
              print "$0: Cannot find resource file $fvroot/etc/$fname\n";
              $missing{$fname}++;
          }
      }
  }

  # Model perturbation-related settings
  # -----------------------------------
  ed_bkg_acq("run");
  ed_satbias_acq("run");
  ed_asens_acq("run");
  ed_fcst_acq("run");

  # Edit GEOS-5 GCM-related resource files
  # --------------------------------------
  ed_aod4fcst_acq("fcst");
  ed_g5fvlay_rc("fcst");
  if ($admtlm) {
     ed_g5cap_rc("fcst","CAP_21.rc.tmpl",$fhours21);
     ed_g5cap_rc("fcst","CAP_15.rc.tmpl",$fhours15);
  } else {
     ed_g5cap_rc("fcst","CAP.rc.tmpl",$fhours21);
     ed_g5cap_rc("fcst","CAP_21.rc.tmpl",$fhours21);
  }
  ed_g5cap_apert_rc("fcst");
  ed_g5prog_rc_new("fcst","GCMPROG.rc.tmpl");
  ed_rst4fcst_acq("fcst");
  if ( $hyb_ens > 2 ) {
     ed_aens_replay_acq("anasa","atmens_replay.acq");
     if ($admtlm) {
        ed_aens_replay_acq("asens","atmens_asens.acq");
     }
  }
  if ( $hyb_ens == 4 ) {
     ed_4dfcst_acq("fcst");
     ed_4dfcst03_acq("fcst");
     ed_4dfcst09_acq("fcst");
  }
  writeSaverst($fcsthrs, "$fvhome/fcst");

  ed_g5fvlay_rc("run");
  ed_g5cap_rc("run","CAP.rc.tmpl",-1);
  #--ed_g5prog_rc_new("run","GCMPROG.rc.tmpl");
  ed_g5hist_rc_new("run","HISTORY.rc.tmpl");
  ed_g5surfGC_rc("run","GEOS_SurfaceGridComp.rc");
  ed_g5surfGC_rc("fcst","GEOS_SurfaceGridComp.rc");
  writeSaverst($fcsthrs, "$fvhome/run");
  ed_blendacq("fcst");

  if ($coupled) {
     foreach $dir ( "run","fcst" ) {
       $rc = system("/bin/mkdir -p $fvhome/$dir/mom" );
       foreach $fname ( @coupled_files ) {
          $aname = $fname;
          if ( substr($aname,0,8) eq "g5aodas_" ) {
             ($pfx,$aname) = split(/g5aodas_/,$fname);
          }
          cp("$mometc/$fname","$fvhome/$dir/mom/$aname")
                    || die "Cannot write file $fvhome/$dir/$aname: $!";
       }
     }
  }

  # Edit GEOS-5 GCM-related resource files
  # --------------------------------------
  foreach $fname ( @crc_files ) {

      $src = "$fvroot/etc/$emiss/$fname";
      $src = "$fvroot/etc/$fname" unless -e $src;
      $dest = "$fvhome/run/gocart/$fname";

      unless ( -e $src ) {
          print "$0: Cannot find resource file $src\n";
          $missing{$fname}++;
          next;
      }
      cp($src,$dest) || die "Cannot write file $dest: $!";
  }

  # If no gocart, then turn off tracers in Chem_Registry.rc
  # -------------------------------------------------------
  $dest = "$fvhome/run/gocart/Chem_Registry.rc";
  if ( -e $dest and (! $gocart_tracers) ) {

      $flags = " -vv doing_CFC=no,"
          .         "doing_CO=no,"
          .         "doing_CO2=no,"
          .         "doing_DU=no,"
          .         "doing_SS=no,"
          .         "doing_SU=no,"
          .         "doing_BC=no,"
          .         "doing_OC=no";
      $cmd = "$fvbin/vED -i $dest $flags";
      print "$cmd\n";
      system($cmd);
  }

  # Set proper fvInput path for variables in CARMAchem_Registry.rc
  # --------------------------------------------------------------
  $dest = "$fvhome/run/gocart/CARMAchem_Registry.rc";
  if (-e $dest) {
      $vars = "DU_OPTICS SS_OPTICS BC_OPTICS SM_OPTICS";
      $cmd = "$fvbin/subst_path.pl -i $dest fvInput $fvhome/fvInput $vars";

      print "$cmd\n";
      system($cmd);
  }


  # DAS Mode
  # --------
  if ( $fulldas ) {

      if ( $varcase < 4 ) {
         @arc_files = ( @arc_files, @a3dvr_files );
      } else {
         if ( $varcase == 4 ) { @arc_files = ( @arc_files, @a4dvr_files );}
         if ( $varcase == 5 ) { @arc_files = ( @arc_files, @afgat_files );}
      }
      foreach $fname ( @arc_files ) {

          if ( -e "$fvroot/etc/$fname" ) {
              cp("$fvroot/etc/$fname","$fvhome/run/$fname")
                  || die "Cannot write file $fvhome/run/$fname: $!";
          }
          else {
              print "$0: Cannot find resource file $fvroot/etc/$fname\n";
              $missing{$fname}++;
          }
      }

      if ($GFLAG == 1) {

          # NCCS account
          #-------------
           `cp $obsysrc  $fvhome/run/obsys.rc`;
           `cp $obsysGrc $fvhome/run/obsys-gaas.rc`;

      } else {

          # NAS accounts
          #-------------
          if  ($siteName eq "cfe") {
              `cp $obsysrc  $fvhome/run/obsys.rc`;
              `cp $obsysGrc $fvhome/run/obsys-gaas.rc`;

          } elsif ($siteName eq "pfe") {
             `sed -e s^cfe2^lou-via-br2^ -e s^lou.nas.nasa.gov^lou-via-br2^ $obsysrc  > $fvhome/run/obsys.rc`;
             `sed -e s^cfe2^lou-via-br2^ -e s^lou.nas.nasa.gov^lou-via-br2^ $obsysGrc > $fvhome/run/obsys.rc`;

          } else {
             print "ERROR: Computing center unknown\n";
          } 
      }

      if ( %missing ) {
          print "\nThe following resource files are missing:\n";
          foreach (sort keys %missing) { print "- $_\n" }; print "\n";
          $ans = query("Continue without missing resource files?", "y");
          die "Missing resource files" unless yes($ans);
      }

      # Create daotovs_fv.rc in FVHOME/run
#     ed_daotovs_fv();

      # Edit psas.rc
      ed_psas_rc();

      # Edit ssi.rc or gsi.rc
      if ( $anassi ) {
          ed_ncep_rc("ssi.rc");
      } else {
          if ( $varcase < 4 ) {
               ed_ncep_rc("gsi.rc.tmpl");
               ed_gsigridcomp_rc("GSI_GridComp.rc.tmpl","analysis");

               # Uncomment lsqrtb line for analysis-sensitivity application
               #if ($doasens) {
               #   $cmd = "sed -i 's/!  lsqrtb/   lsqrtb/'";
               #   system "$cmd $fvhome/run/gsi.rc.tmpl";
               #   $cmd = "sed -i 's/   ljcpdry/!   ljcpdry/'";
               #   system "$cmd $fvhome/run/gsi.rc.tmpl";
               #}

          } else {
               ed_gsigridcomp_rc("OBS_GridComp.rc.tmpl","observer");
               ed_gsigridcomp_rc("GSI_GridComp_1.rc.tmpl","analysis");
               ed_gsigridcomp_rc("GSI_GridComp_2.rc.tmpl","analysis");
               ed_ncep_rc("obs.rc.tmpl");
               ed_g5hist_rc("run","HISTFDDA.rc.tmpl");
               ed_g5hist_rc("run","HISTFDDAL.rc.tmpl");
               if ( $varcase == 4 ) {
                    ed_ncep_rc("gsi_fdda_1.rc.tmpl");
                    ed_ncep_rc("gsi_fdda_2.rc.tmpl");
               }
               if ( $varcase == 5 ) {
                    ed_ncep_rc("gsi_fgat_1.rc.tmpl");
                    ed_ncep_rc("gsi_fgat_2.rc.tmpl");
               }
          }
          ed_ncep_rc("gsi_sens.rc.tmpl");

          # overwrite some of the RC files when setting up for MERRA2
          if( $merra2 ) { 
            $cmd = "$fvbin/setup_4merra2.pl $fvhome $nymdb $hhb $ana_im $ana_jm $siglevs";
            print "$cmd\n";
            system($cmd);
          }
      }

      # Edit IAU-related rc file
      ed_mkiau_rc("run","mkiau.rc.tmpl");
      ed_mkiau_rc("fcst","mkiau.rc.tmpl");

      # Edit post-proc rc files
      ed_lcv2prs_rc("run");

  } else {

      # GCM Mode
      # --------
      $fname = "noreplay.acq"; # at least this one
      cp("$fvroot/etc/$fname","$fvhome/run/$fname")
          || die "Cannot write file $fvhome/run/$fname: $!";
  }

  # modify HISTORY files in run and fcst directories?
  #--------------------------------------------------
  foreach $fname ( "$fvhome/run/HISTORY.rc.tmpl", "$fvhome/fcst/HISTORY.rc.tmpl" ) {
      if (-e $fname) {
          ($label = $fname) =~ s|$fvhome/||;
          edit_collections($label, $fname);
      }
  }

  # modify HISTFDDA and HISTFDDAL files?
  #-------------------------------------
  foreach $hdda ( "HISTFDDA.rc.tmpl", "HISTFDDAL.rc.tmpl" ) {
      $fname = "$fvhome/run/$hdda";
      if (-e $fname) {
          $label = basename $fname;
          edit_collections($label, $fname);
      }
  }

  # Create fvpsas.rc in FVHOME/run and FVHOME/run/gaas
  #---------------------------------------------------
  create_fvpsasrc();
  create_fvpsasrc_gaas();

  $fname = "fvsavecf"; # config saving script
  $rc = system("/bin/cp $fvbin/$fname $fvhome/run/$fname");
  die "Cannot write file $fvhome/run/$fname: $!" if ( $rc );

  # Copy radmon.defaults.rc file to FVHOME/radmon
  #----------------------------------------------
  if (-e "$pyradmon/scripts/radmon.defaults.rc") {
      cp("$pyradmon/scripts/radmon.defaults.rc", "$fvhome/radmon");
  }

# When applicable, overwrite w/ pre-set RC files for GSI
# ------------------------------------------------------
  if ( $geosit ) {
    if ( -d "$fvetc/gsi/GEOSIT" ) {
       my @files =  glob("$fvetc/gsi/GEOSIT" . "/*");
       foreach my $fn ( @files ) {
          cp("$fn", "$fvhome/run");
       }
    }
    mkdir ("$fvhome/run/gmao_satinfo.db");
    if ( -d "$fvetc/gmao_satinfo.db/GEOSIT" ) {
       my @files =  glob("$fvetc/gmao_satinfo.db/GEOSIT" . "/*");
       foreach my $fn ( @files ) {
          cp("$fn", "$fvhome/run/gmao_satinfo.db");
       }
    } else {
      die "Cannot find GEOSIT sat.db under $fvetc, aborting ...";
    }
  }
  if ( $r21c ) {
    if ( -d "$fvetc/gsi/R21C" ) {
       my @files =  glob("$fvetc/gsi/R21C" . "/*");
       foreach my $fn ( @files ) {
          cp("$fn", "$fvhome/run");
       }
    }
    mkdir ("$fvhome/run/gmao_satinfo.db");
    if ( -d "$fvetc/gmao_satinfo.db/R21C" ) {
       my @files =  glob("$fvetc/gmao_satinfo.db/R21C" . "/*");
       foreach my $fn ( @files ) {
          cp("$fn", "$fvhome/run/gmao_satinfo.db");
       }
    } else {
      die "Cannot find R21C sat.db under $fvetc, aborting ...";
    }
  }

}
 
#=======================================================================
sub edit_collections {

    my ($label, $HIST_rc);
    my (@listALL, $origINC, @arrINC, $strINC);
    my ($ans, $cnt, $name);

    $label   = shift @_;
    $HIST_rc = shift @_;

    $ans = query("\nEdit COLLECTIONS list in $label (y/n)?", "n");
    if ( yes($ans) ) {

        # get collections lists
        #----------------------
        chomp(@listALL = `$fvbin/edhist.pl $HIST_rc -list all -q`);
        chomp($strINC = `$fvbin/edhist.pl $HIST_rc -list inc, -q`);
        $origINC = $strINC;

        # query user for COLLECTIONs to include
        #--------------------------------------
        print "\n    COLLECTIONS"
            . "\n    -----------\n";
        foreach (@listALL) { print "    $_" };
        print "\n  DEFAULT: $strINC\n\n";
        $ans = query("COLLECTIONS?");
        $strINC = $ans unless blank($ans);

        # edit collections in HISTORY file
        #---------------------------------
        unless ($strINC eq $origINC) {
            system "$fvbin/edhist.pl -i $HIST_rc -Xall -I $strINC -q";
        }
    }
    print "$HIST_rc is ready.\n\n";
}

#=======================================================================
sub timeLagStartHours {
    my ($numhrs, $deg, $taub, $lag1);
    $numhrs = shift @_;
    $deg    = shift @_;
    $taub   = shift @_;
        
    $lag1 = $numhrs - $taub;
    if ($lag1 < 0) { $lag1 = 0; $deg = 1; }
    $lag1  = sprintf "%02d", $lag1; 
     
    return "$lag1";
}

#=======================================================================
sub copy_restarts_iau {
    # This subroutine will replace copy_restarts() but only after the
    # copy_restarts.pl script properly copies the FDDA restarts
    my ($cmd, $copyFLG, $dmgetFLG, $fn, $fname, %notfound);

    return 0 if $fvics eq "later";

    if ($checkFLG) { $copyFLG = " -symlink"  }
    else           { $copyFLG = " -forkcopy" }

    $cmd = "$fvbin/copy_restarts.pl"
        .   " -nymd $nymdb"
        .   " -nhms $nhmsb"
        .   " -d $drstloc"
        .   " -expid $defexp"
        .   " -dest $fvhome/recycle"
        .   " -newid $expid"
        .   " -noprompt"
        .   " -bf $dtasyn_hrs";
    $cmd .= " -X gaas_bkg_sfc"    unless $gaas_ana;
    $cmd .= " -X agcm_import"     unless $agcm_rst_flg;
    $cmd .= " -X gocart_internal" unless $gocart_tracers;
    $cmd .= " -merra2"            if $merra2;
    $cmd .= $copyFLG;

    print "$cmd\n";
    system($cmd);

    # check for restarts in recycle directory
    #----------------------------------------
    foreach $fn ( @rs_files ) {
        @fname = <$fvhome/recycle/*$fn*>;
        $notfound{$fn} = 1 unless @fname;
    }
    foreach $fn (sort keys %notfound) {
        next if $fn =~ /traj_lcv/;
        next if $fn =~ /ptrj_prs/;
        next if $fn =~ /mtrj_lcv/;

        if ($fn =~ /gocart/) {
            next unless $gocart_tracers;
        }
        elsif ($fn eq "saltwater_internal_rst") {
            next unless $notfound{"openwater_internal_rst"}
            or          $notfound{"seaicethermo_internal_rst"};
        }
        elsif ($fn eq "openwater_internal_rst") {
            next unless $notfound{"saltwater_internal_rst"};
        }
        elsif ($fn eq "seaicethermo_internal_rst") {
            next unless $notfound{"saltwater_internal_rst"};
        }
        restart_notfound($fn, $fn);
    }
    return;
}

#=======================================================================
sub copy_restarts {
  return 0 if $fvics eq "later";

  my ( $fhr, $bkgbits, $my_nymd, $my_nhms, $bkg_dtsec, $bkg_dthrs, $nymd_ana, $nhms_ana );

  print "Copying restarts ...\n";
  foreach $fn ( @rs_files ) {
    if ($fn =~ /gocart/) { next unless $gocart_tracers };

#   Copy restart from original location to recycle directory
#   --------------------------------------------------------
    if ( "$fn" =~ "bkg" ) {

        if ( $fulldas ) {   # Caution: do not merge this if w/ one below
             $bkg_dtsec  = $asynbkg_min * 60;
             $bkg_dthrs  = $asynbkg_min / 60;
             $bkg_dthrs  = sprintf "%02d", $bkg_dthrs;
             ($nymd_ana, $nhms_ana) = ( tick($nymdb,    $nhmsb,     $aoffset_sec) );
             ($my_nymd,  $my_nhms)  = ( tick($nymd_ana, $nhms_ana, -$bkgbits0_sec) );

             $bkgbits    = $bkgbits0;
             $bkgbite    = $bkgbitsf;
             if($do4dvar) { $bkgbite = $bkgbits0 };
             while ( $bkgbits <= $bkgbite ) {

                     $fhr  = sprintf "%02d", $bkgbits;

                     $my_yyyy = substr($my_nymd,0,4);
                     $my_mm   = substr($my_nymd,4,2);
                     $my_hhmn = substr($my_nhms,0,4);
                     if  ( $varcase==4 || $varcase==5 ) {
                       if("$fn" =~ "sfc") { $fnsfx = "bkg_sfc_rst.${my_nymd}_${my_hhmn}z.$ncsuffix" };
                       if("$fn" =~ "eta") { $fnsfx = "bkg_eta_rst.${my_nymd}_${my_hhmn}z.$ncsuffix" };
                     } else {
                       if("$fn" =~ "sfc") { $fnsfx = "bkg${fhr}_sfc_rst.${my_nymd}_${my_hhmn}z.$ncsuffix" };
                       if("$fn" =~ "eta") { $fnsfx = "bkg${fhr}_eta_rst.${my_nymd}_${my_hhmn}z.$ncsuffix" };
                     }
                     $fname    = "$drstloc/../../Y$my_yyyy/M$my_mm/$defexp.$fnsfx";
                     $destfile = "$fvhome/recycle/$expid.$fnsfx";

                     if ( -e "$fname" ) {
                         cp("$fname","$destfile")
                            || die "Cannot write file $destfile: $!";
                     } else {
                         restart_notfound($fn, $fname);
                     }

                     ($my_nymd, $my_nhms) = ( tick($my_nymd, $my_nhms,$bkg_dtsec) );
                      $bkgbits = $bkgbits + $dtasyn_hrs;

             } # while
        } # fulldas

    } elsif ( "$fn" =~ "ana_sat" ) {

        if ( $fulldas ) {   # Caution: do not merge this if w/ one above
             $fnast    = "$fn.${nymdb}_${hhb}z.txt";
             $fname    = "$drstloc/$defexp.$fnast";
             $destfile = "$fvhome/recycle/$expid.$fnast";

             if ( -e "$fname" ) {
                 cp("$fname","$destfile")
                    || die "Cannot write file $destfile: $!";
             } else {
                 restart_notfound($fn, $fname);
             }
        } # fulldas

    } elsif ( "$fn" =~ "traj_lcv" ) {

        if ( ($varcase == 4) && $fulldas ) {   # Caution: do not merge this if w/ one above
             $fnast    = "$fn.${nymdb}_${hhb}00z.$ncsuffix";
             $fname    = "$drstloc/$defexp.$fnast";
             $destfile = "$fvhome/recycle/$expid.$fnast";

             if ( -e "$fname" ) {
                 cp("$fname","$destfile")
                    || die "Cannot write file $destfile: $!";
             } else {
                 restart_notfound($fn, $fname);
             }
        } # fulldas

    } else {
        $fname    = "$drstloc/$defexp.$fn.${nymdb}_${hhb}z.bin";
        $destfile = "$fvhome/recycle/$expid.$fn.${nymdb}_${hhb}z.bin";
        if ( -e "$fname" ) {
             cp("$fname","$destfile")
                || die "Cannot write file $destfile: $!";
        } else {
            restart_notfound($fn, $fname);
        }
    }

  }  # < end foreach >
  print " done!\n";

}

#=======================================================================
sub restart_notfound {
    my ($fn, $fname, $bname);

    $fn    = shift @_;
    $fname = shift @_;

    $bname = basename($fname);

    if ( included($fn, @rs5_core) ) {
        die ">>> ERROR <<< Cannot find critical restart: $bname\n";
    }
    if ( included($fn, @rs5_boot) ) {

        return if $bname eq "carma_internal_rst";

        if ($gocart_tracers) { return if $bname eq "gocartdata_internal_rst" }
        else                 { return if $bname eq "gocart_internal_rst" }

        print "  Cannot find $fn restart.\n";
        print "  BOOTSTRAP: $fn\n";
    }
    if ( included($fn, @rs5_others)) {
        if ($fn eq "gaas_bkg_sfc_rst") {

            $gaasdir = "$fvhome/run/gaas";
            mv "$gaasdir/GAAS.BOOTSTRAP_", "$gaasdir/GAAS.BOOTSTRAP";

            while (1) {
                last unless $gaas_ana;

                print "  Cannot find $fn restart.\n";
                $ans = query("  BOOTSTRAP $bname (y/n)?", "y");

                if ( yes($ans) ) {
                    print "  BOOTSTRAP: $fn\n";
                    last;
                }
                elsif ( neg($ans) ) {
                    mv "$gaasdir/GAAS.BOOTSTRAP", "$gaasdir/GAAS.BOOTSTRAP_";
                    die ">>> ERROR <<< Cannot proceed without restart: $bname\n";
                }
            }
            # ask again if $ans is neither yes or no (neg)
        }
        else {
            print "  Cannot find $fn restart.  Will continue anyway.\n";
            pause() unless $fn eq "trak.GDA.rst";
        }
    }
    return;
}

#=======================================================================
sub included {
    my ($value, $found, $member);
    $value = shift @_;

    $found = 0;
    while (@_) {
        $member = pop @_;
        if ($value eq $member) {
            $found = 1;
            last;
        }
    }
    return $found;
}

#=======================================================================
sub pause {
    if ( $runjobFLG ) { print "\n"; return; }
    my $dummy = query1("Hit <cr> to continue ...");
}

#=======================================================================
# name - query
# purpose - (1) query user for a response
#           (2) store the prompt and response
#           (3) return the response
#
# input parameters
# => $str: use this line to prompt for a response
# => $dflt: (optional) default value to use for <cr> response
# => $ANS:  (optional) store this response in the input file
#                      regardless of the actually user response.
# 
# local variables
# => $ans1: user input
# => $ans2: user response (i.e. dflt response if user inputs <cr>)
#
# Notes
# 1. The prompt and response are stored to be written in a file as
#    a record of the experiment setup.
#=======================================================================
sub query {
    my ($str, $dflt, $prompt, $ans1, $ans2, $ANS, $ans);

    $str  = shift @_;
    $dflt = shift @_;
    $ANS  = shift @_;

    # prepare prompt
    #---------------
    $prompt  = "$str ";
    $prompt .= "[$dflt] " unless blank($dflt);

    # get user response
    #------------------
    print $prompt;
    chomp($ans1 = <STDIN>);
    $ans1 =~ s/^\s+|\s+$//g;     # remove leading/trailing blanks from response
    $ans1 = expand_EnvVars($ans1);
    $ans2 = $ans1;
    if ( blank($ans2) ) { $ans2 = $dflt unless blank($dflt) }

    # store alternate response in input file?
    #----------------------------------------
    if ($ANS) { $ans = $ANS  }
    else      { $ans = $ans1 }

    # store prompts and user responses
    #---------------------------------
    $prompt =~ s/^\s+|\s+$//g;  # store prompt without leading/trailing blanks
    push @fvprompt, $prompt;
    push @fvANS1, $ans;
    push @fvANS2, $ans2;

    # prepare label for output captured in fvsetup logfile
    #-----------------------------------------------------
    if ($runjobFLG) {

        # print user response and selection
        #----------------------------------
        $label = $str;
        $label =~ s/\s*$//; # remove trailing blanks
        $label =~ s/\?$//;  # remove trailing question mark
        $label =~ s/:$//;   # remove trailing colon
        $label =~ s/^\n*//; # remove initial newline chars

        # use temporary value for $fvhome when $checkFLG is set
        #------------------------------------------------------
        if (( $prompt =~ /^FVHOME\?/ ) and $checkFLG) {
            $checkID = "checkinput.$$";
            ($ansCHK = $ans2) =~ s/\/$expid\b/\/$checkID/;
            print "\n$label: $ansCHK\n";
        }
        else {
            print "\n$label: $ans1";
            print "\n$label: $ans2\n\n";
        }
    }
    return $ans2;
}

#=======================================================================
# name - query1
# purpose - query user for a response; return the response
#
# input parameters
# => prompt: use this line to prompt for a response
# => dflt: (optional) default value to use for <cr> response
# 
# Notes
# 1. Use this alternative for query() when you do not want to store the
#    prompt and response.
#=======================================================================
sub query1 {
    my ($prompt, $dflt, $ans);

    $prompt = shift @_;
    $dflt = shift @_;
    $dflt = "" unless $dflt;

    # prepare prompt
    #---------------
    $prompt .= " ";
    $prompt .= "[$dflt] " unless blank($dflt);

    # get user response
    #------------------
    print $prompt;
    chomp($ans = <STDIN>);
    $ans =~ s/^\s+|\s+$//g;     # remove leading/trailing blanks from response
    $ans = expand_EnvVars($ans);
    if ( blank($ans) ) { $ans = $dflt unless blank($dflt) }

    return $ans;
}

#=======================================================================
# name - expand_EnvVars
# purpose - expand Environment Variables within a string
#=======================================================================
sub expand_EnvVars {
    my ($string, $cnt, $var, $name);

    $string = shift @_;
    $cnt = 0;

    # look for ${var} format
    #-----------------------
    while ($string =~ m/(\${(\w+)})/)   {
        $var = $1; $name = $2;
        $var =~ s/\$/\\\$/;
        $string =~ s/$var/$ENV{$name}/;
        die "Error. Infinite loop condition;" if ++$cnt > 100;
    }

    # look for $var format
    #---------------------
    while ($string =~ m/(\$\b(\w+)\b)/) {
        $var = $1; $name = $2;
        $var =~ s/\$/\\\$/;
        $string =~ s/$var/$ENV{$name}/;
        die "Error. Infinite loop condition;" if ++$cnt > 200;
    }
    return $string;
}

#=======================================================================
sub blank {
    my $str;
    $str = shift @_;
    return 1 if $str =~ /^\s*$/;
}

#=======================================================================
sub yes {
    my $str;
    $str = shift @_;
    $str = lc $str;           # make lowercase
    $str =~ s/^\s*|\s*$//g;   # remove leading/trailing blanks
    return 1 if $str eq "y" or $str eq "yes"
}

#=======================================================================
sub neg {
    my $str;
    $str = shift @_;
    $str = lc $str;           # make lowercase
    $str =~ s/^\s*|\s*$//g;   # remove leading/trailing blanks
    return 1 if $str eq "n" or $str eq "no"
}

#=======================================================================
sub edit_resources {
  my ($proot);
  my ($cpfile, $cpdir, $target);

  if ($g5gcm) {
      init_agcm_rc("fcst");
      ed_g5agcm_rc("fcst");

      init_agcm_rc("run");
      ed_g5agcm_rc("run");

      if ( $cubed && $doasens ) {
          init_agcm_pert_rc("fcst");
          ed_g5agcm_pert_rc("fcst");
      }
  }

  if( $DAO == 1) { $proot = "-m $mhost -s local "; }
  else { $proot = "-m $mhost "; }
  $rcs = join(" ",@arc_files);
  $nls = join(" ",@gcm_files);

  # Write silo.arc and mstorage.arc
  #--------------------------------
  system("$fvbin/gen_silo_arc.pl $fvhome -fX traj.lcv,ptrj.prs");

  # special edit for CERES configuration
  #-------------------------------------
  print "\n-------------------"
      . "\nCERES Configuration"
      . "\n-------------------\n\n";
  $prompt = "  Edit files in run directory for CERES configuration (y/n)?";
  $ans = query($prompt, "n");
  if ( yes($ans) ) {
      system "$fvbin/ceres_edit.pl -d $fvhome/run -j $jobn.j";
      pause();
  }

  # check for user-specified files to copy into $FVHOME directories
  #----------------------------------------------------------------
  chdir $drstloc;
  if (%setupfile) {
      foreach (keys %setupfile) {
          $cpfile = "$_";
          $cpdir  = "$fvhome/$setupfile{$_}";
          $target = "$cpdir/" . basename($_);

          unless (-f $cpfile) {
              die "Error. Cannot find file, $cpfile;" if $runjobFLG;
              warn "Warning. Cannot find file, $cpfile;";
              next;
          }
          unless (-d $cpdir) {
              die "Error. Cannot find dir, $cpdir;" if $runjobFLG;
              warn "Warning. Cannot find dir, $cpdir;";
              next;
          }
          if (-e $target) {
              unless (-e "$target.orig") {
                  mv $target, "$target.orig";
                  print "mv $target, $target.orig\n";
              }
          }
          die "Error copying $cpfile to $cpdir;" unless cp $cpfile, $target;
          print "cp $cpfile, $target\n";
      }
  }

  # remove tilde files
  #-------------------
  @rmTilde = ();
  find(\&find_tilde_files, $fvhome);
  foreach (@rmTilde) { print "removing $_\n"; unlink $_ } 

  print <<"EOF";

------
REVIEW
------
         The job script, namelists and resources for your
         experiments have been created. At this point you
         can edit the following files and customize the
         default configuration:

         Archiving Rules: silo.arc mstorage.arc
              Job Script: $jobn.j
               Resources: $rcs
               Namelists: $nls

         Enter:

          "e"   to edit these files with emacs
          "x"   to edit these files with xemacs
          "v"   to edit these files with vi
          "Q"   to quit, WITHOUT archiving configuration files (DEFAULT)
          "q"   to quit, archiving configuration files

EOF

  $dflt = "Q";
  $ans = query("Which?",  $dflt);

  my %option = ("q" => "quit",  "Q" => "QUIT",
                "e" => "emacs", "x" => "xemacs", "v" => "vi");

  $editor = $option{$ans};
  $editor = $option{$dflt} unless $editor;
      
  return 0 if $editor eq "QUIT";

  if ( lc $editor ne "quit" ) {
     $rc = system("cd $fvhome/run; $editor $jobn.j silo.arc mstorage.arc $rcs $nls");
     ### die "Cannot edit resources: $!" if ( $rc );
  }

  $rc = system("$fvhome/run/fvsavecf $proot");
  die "Cannot save config files: $!\n" if ( $rc );

  return 0;
}

#=======================================================================
sub find_tilde_files {
    my $fname = $File::Find::name;
    push @rmTilde, $fname if $fname =~ /.+~$/;
}

#=======================================================================
sub save_inputs {
    my ($save_file, $backup_file);
    my ($ans, $base, $cnt);

    if ($checkFLG) {
        $save_file = "$fvhome/$expid.input";
        write_saved_inputs($save_file);
        print "SavedInputsFile: $save_file\n";
        return;
    }
    return if $runjobFLG;

    print "\n-----------\n"
        .   "SAVE INPUTS\n"
        .   "-----------\n\n";

    # does user want to save these inputs?
    #-------------------------------------
    print "  Experiment ID:  $expid\n";
    $ans = query1("  Save the inputs for this experiment (y/n)?", "y");
    unless ( yes($ans) ) {
        print "  The inputs from this setup will not been saved.\n";
        return;
    }

    # location for saved inputs
    #--------------------------
    $INPUTDIR = dirname($fvhome) ."/SavedInputs";
    #--$INPUTDIR = query1("  Save inputs to which directory?", $INPUTDIR);
    unless (-d $INPUTDIR) {
        mkdir $INPUTDIR or die ">> Error << making directory, $INPUTDIR: $!";
    }
    $save_file = "$INPUTDIR/$expid.input";

    # check for pre-existing file
    #----------------------------
    if (-e $save_file) {
        print "\n  Inputs will be written to $save_file\n"
            .   "  File already exists.\n";
        $ans = query1("  Overwrite $dotOutFile (y/n)?", "y");
        if ( yes($ans) ) {
            $backup_file = $save_file."~";
            mv($save_file, $backup_file);
        }
        else {
            $base = basename $save_file;
            $cnt = 0;
            while (1) {
                $save_file = "$base.".++$cnt.".input";
                last unless -e $save_file;
            }
        }
        print "\n";
    }
    write_saved_inputs($save_file);
}


#=======================================================================
sub merge_txt {
  my ($sources,$target) = @_;

  open my $out, '>>', $target or die "Could not open '$target' for appending\n"; 
  foreach my $file (@$sources) {
    if (open my $in, '<', $file) {
        while (my $line = <$in>) {
            print $out $line;
        }
        close $in;
    } else {
        warn "Could not open '$file' for reading\n";
    }
  }
  close $out;
  print "created $file $out \n";

  return $out;
}
#=======================================================================
sub write_saved_inputs {
    my ($save_file);
    my ($ans, $dashes, $fvID, $len, $prompt, $var);
    my (%alreadyWarned, %varDef, @fvANS);

    $save_file = shift @_;

    # open output file
    #-----------------
    open SAVE, "> $save_file" or die ">> Error << opening $save_file: $!";

    # write header information
    #-------------------------
    $len = length("$expid.input")+1;
    $dashes = "-"x$len;

    chomp($fvID = `git hash-object $0 | cut -c1-10`);

    print SAVE "#$dashes\n";
    print SAVE "# $expid.input\n";
    print SAVE "#$dashes\n\n";

    print SAVE "codeID: $cvstag\n";
    print SAVE "description: $expdsc\n";
    print SAVE "fvsetupID: $fvID\n";
    print SAVE "fvsetupflags:".$fvsetupflags."\n" if $fvsetupflags;

    %varDef = ();
    foreach (@otherheaders) {
        print SAVE "$_\n";

        # header variable defs to expand responses
        #-----------------------------------------
        $varDef{$1} = $2 if /^def:\s*(\S+)\s*=\s*(.*)$/;
    }
    print SAVE "\n---ENDHEADERS---\n";

    # specify format for responses
    #-----------------------------
    $ans = $saveFLG;
    #--$prompt = "  How to write default responses (1:blanks, 2:full response";
    #--$ans = query1($prompt, $ans);
    if ($ans == 2) { @fvANS = @fvANS2 }
    else           { @fvANS = @fvANS1 }

    # write prompts and corresponding raw data
    #-----------------------------------------
    for $index (0..$#fvprompt) {

        $prompt = $fvprompt[$index];
        $prompt =~ s/\b$checkID\b/$expid/ if $checkFLG;

        $ans = $fvANS[$index];
        if ($prompt =~ /^EXPID/) { $ans = $expid if blank($ans) }

        # substitute header variables for values in raw data
        #---------------------------------------------------
        foreach (keys %varDef) {
            ($var = $_) =~ s/;$siteID$//;    # remove siteID extension
            next if $var =~ /;/;             # skip values from other sites

            if ($ans eq $varDef{$_}) { $ans = '$'.$var }
            else                     { $ans =~ s/$varDef{$_}/\$\{$var\}/ }
        }
        $ans = "\$expid" if $prompt =~ m/^EXPID?/;
        unless ($prompt =~ m/Resolution/ or $prompt =~ m/^FVICS/) {
            $ans =~ s/\b$expid\b/\$expid/;
        }
        print SAVE "\n$prompt\n";
        print SAVE "> $ans\n";
    }

    # all done!
    #----------
    close SAVE;
    print "  Output file written: $save_file\n\n";

    return;
}   

#=======================================================================
# name - while3
# purpose - put a limit on the number of unsuccessful attempts to call
#           a subroutine; this is needed for the case where runjob utility
#           will keep responding to a subroutine's query with bad input.
#
# input parameters
# => $subAddr: address of subroutine to call
# => $limit: (optional) limit on how many unsuccessful attempts will be allowed;
#            defaults to 3
#=======================================================================
sub while3 {
    my ($subAddr, $limit, $cnt);

    $subAddr = shift @_;
    $limit = shift @_;
    $limit = 3 unless $limit;
    $limit = 1 if $runjobFLG;

    $cnt = 1;
    while ( &$subAddr ) {
        die ">>> ERROR <<< too many unsuccessful attempts;" if ++$cnt > $limit;
    }
    return;
}

#=======================================================================
sub goodbye {

    if ($DAO == 1) {   #nas or gsfc account
        if ($GFLAG == 1) {
            $expid_path = "$ARCHIVE/$expid";
        } else {
            $expid_path = "lou-via-br2:/u/$user/$expid";
            $expid_path = "lou:/u/$user/$expid" if $siteName = "cfe";
        }
    } else {
        $expid_path = $expid;
    }
    print <<EOF;

        -------------------------------------------
         fvSETUP - The fvDAS Experiment Setup Tool
        -------------------------------------------

---------
ALL DONE!
---------
         Well done! This completes your fvDAS experiment setup.
         For starting your data assimilation experiment please enter:

            cd $fvhome/run
            $qsub $less $jobn.j

         This script will carry out the assimilation experiment  by means
         of several job segments, each $ndays simulation day(s) long.
EOF

  if ( $frstage ne "/dev/null" ) {
  print <<"EOF";

-----------
FORECASTING
-----------

         Your forecast initial conditions will be automatically staged.
EOF

  } elsif ( "$grstage" ) {
  print <<"EOF";

-----------------
Model Sensitivity
-----------------

         Your model sensitivity initial conditions will be automatically staged.
EOF

} else {
  print <<"EOF";

-----------
FORECASTING
-----------

         Your forecast initial conditions will NOT be automatically staged.
         Before running forecasts, you will need to retrieve your initial
         conditions (a.k.a. restart files) from mass storage.
EOF
}
  print <<"EOF";

         After you complete your data assimilation experiment you can
         produce forecasts by entering:

            $qsub $less $fvhome/fcst/$jobf.j

         This script will carry out the forecast runs by means of several
         job segments (one per initial conditions), each $fhours21 simulation
         hour(s) long.

         The output location is $mhost under $expid_path

EOF


  if ( $admtlm ) {

  print <<"EOF";

-------------------------
PERTURBATION APPLICATIONS
-------------------------

        So you plan to run model-adjoint applications, hum?

        Here is a small check-list to facilitate your life:

        (i) Trajectory output control:

            cp $fvroot/Linux/etc/GCMTRAJ.rc.tmpl $fvhome/fcst/HISTORY.rc.tmpl

            Edit the file in your experiment and make sure the resolution of
            the trajectory is what you want it to be.

       (ii) Do you want to run both singular vectors and sensitivity?

             svec-only: if you only want singular vectors, rename the file

                         $fvhome/fcst/initadj.rc

             sens-only: if you only want sensitivy runs, rename the file

                         $fvhome/fcst/fvsvec.rc

      (iii) To control the beginning and ending times of your adjoint-related
            applications, edit either or both of the following files:

                  $fvhome/fcst/fvsvec.ccmrun.namelist.tmpl

                  $fvhome/fcst/fvsens.ccmrun.namelist.tmpl

       (iv) Be patient!

EOF

}

  if ( $fvics eq "later" ) {
  print <<"EOF";

----------------
RESTART REMINDER
----------------

        Do not forget to copy the following start-up files to
        $fvhome/recycle:

                    d_rst: dynamics restart file
                    p_rst: physics restart file
                  lsm_rst: lsm restart file

EOF
}

  #--return if ( "$HOST" eq "mintz" );
  print("Checking the mask on $mhost...\n");
  if ($mhost =~ $ENV{"HOST"}) {
      $mmask = umask;                 # decimal output from umask function
      $mmask = sprintf("%o",$mmask);  # convert to octal
  } else {
      $mmask = `(ssh $mhost umask > /dev/stdin) >& /dev/null`;
  }
  chomp($mmask);
  if ( $mmask != 22 ) {
  print <<"EOF";

--------------------
MASS STORAGE WARNING
--------------------

        Your mass storage host $mhost reports umask 0$mmask.
        It is recommended that you add the line

           umask 022

        to your .cshrc on $mhost to ensure that your output
        files are readable by other users.

EOF
  }

# Create Experiment Directory
     chomp($cgrp = `which chgrp`);
     if ( $gid && ( ( $mhost eq "s1.nas.nasa.gov") || ($mhost eq "lou.nas.nasa.gov") || ($mhost eq "gatun.nas.nasa.gov") || ($mhost eq "daley.gsfc.nasa.gov") ) ) {
         if( $DAO == 1) {
           $rc2 = system ( "if [ ! -e $expid_path ]; then /bin/mkdir -p $expid_path; fi; $cgrp -R $gid $expid_path" );
         } else {
           $rc2 = system (
          "$rsh $mhost 'if !(-e $expid_path) /sbin/mkdir -p $expid_path; $cgrp -R $gid $expid_path'");
         }
         die ">>> ERROR <<< $!" if ( $rc2 );
     }


print "$nametag\n";


}

#=======================================================================
sub get_mhost {

  $mhost = $ENV{HOST} or "lou.nas.nasa.gov";

  print <<"EOF";

-----
MHOST
-----
         This is the mass-storage hostname for eventual archiving
         of the experiment output.

         DEFAULT: $mhost

EOF

  $mhost = query("MHOST?", $mhost);
  $mhost =~ tr/\t/ /s;    $mhost =~ s/ //g;
  if($mhost =~ /:$/) { chop($mhost); }

  if ( $mhost ) {
     return 0;
  }
  else {
     warn ">>> ERROR <<< invalid remote host $mhost";
     return 1 ;
  }
}

#=======================================================================
#
# Tick - advance date/time by nsecs seconds
#
#
#=======================================================================
sub tickold {
    my ( $nymd, $nhms, $nsecs ) = @_;
    $yyyy  = substr($nymd,0,4);
    $mm    = substr($nymd,4,2);
    $dd    = substr($nymd,6,2);

    $hh = 0 unless ( $hh = substr($nhms,0,2));
    $mn = 0 unless ( $mn = substr($nhms,2,2));
    $ss = 0 unless ( $ss = substr($nhms,4,2));
    $time = timegm($ss,$mn,$hh,$dd,$mm-1,$yyyy) + $nsecs;
    ($ss,$mn,$hh,$dd,$mm,$yyyy,undef,undef,undef) = gmtime($time);

    $nymd = (1900+$yyyy)*10000 + ($mm+1)*100 + $dd;
    $nhms = sprintf("%6.6d",$hh*10000 + $mn*100 + $ss);
    return ($nymd, $nhms);

}

#......................................................................


__END__

#/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\
sub get_fvroot {   # obsolete

       $fvroot = $FVROOT          or
   -d ($fvroot = "$HOME/fvpsas")  or
       $fvroot = "/share/fvpsas/latest";

   print <<"EOF";

------
FVROOT
------
         This is the directory where your fvDAS system has been
         installed. Typically it will have subdirectories

               bin/    etc/    include/    lib/

         DEFAULT: $fvroot

EOF

  $ans = query("FVROOT?"); $fvroot = $ans unless blank($ans);

  if ( -d $fvroot ) {
     return 0;
  }
  else {
     warn ">>> ERROR <<< $fvroot: $!";
     return1 ;
  }

}

#----------------------------------------------------------------
sub get_rsh { #obsolete

  $default_rsh = "/usr/local/bin/ssh";

  if ( -x "$default_rsh" ) {
       $rsh = $default_rsh;
  }else{
       $rsh = "/usr/bin/rsh";
  }

  print <<"EOF";

------------
REMOTE SHELL
------------
         This is the program which will be used to connect to any
         remote hosts accessed during this experiment.

         DEFAULT: $rsh

EOF

  $rsh = query("REMOTE SHELL?", $rsh);

  if ( -x $rsh ) {
     return 0;
  }
  else {
     warn ">>> ERROR <<< invalid REMOTE SHELL $rsh Check path";
     return1 ;
  }

}

#----------------------------------------------------------------
sub get_rcp { #obsolete

  $default_rcp = "/usr/local/bin/scp";

  if ( -x "$default_rcp" ) {
       $rcp = $default_rcp;
  }else{
       $rcp = "/usr/bin/rcp";
  }

  print <<"EOF";

------------
REMOTE COPY
------------
         This is the program which will be used to copy files to and
         from any remote hosts accessed during this experiment.

         DEFAULT: $rcp

EOF

  $rcp = query("REMOTE COPY?", $rcp);

  if ( -x $rcp ) {
     return 0;
  }
  else {
     warn ">>> ERROR <<< invalid REMOTE COPY $rcp Check path";
     return1 ;
  }
}
