CHANGE LOG FOR UNIFIED 3DVAR CODE ------------------------------------------- Author(s) : Lidia Cucurull, John Derber, Daryl Kleist, Ricardo Todling Reviewer(s) : Russ Treadon Date : 06/02/2004 GMAO CVS tag: NCEP CVS tag: ncep-gsi-2004_05 REASON FOR CHANGES ------------------ Numerous updates are made to the code and supporting makefiles. Below are the changes listed in no particular order 1) removed dependence on "mpif.h" for SGI; dependence now via libmpeu.a (Todling) 2) added documentation-related targets in makefile (Todling) 3) adapted Makefile.conf.AIX to handle GMAO environment on NCEP's IBM, that is, using own bfr/w2/sp libs (Todling) 4) add capability for assimilation of GPS profiles of local refractivity 5) Simplify and unify multiplication by background error routines 6) update documentation blocks, standardize module doc blocks, clean up code 7) combine all files for getting grid coordinates into single routine/function SPECIAL NOTES ------------- 1) Need MPEU when compiling on SGI machines 2) For testing purposes the GPS refractivity input file is just ASCII. Different variables have been defined in the gsi code for this new data type. All of these variables contain the string "ref". EXPECTED DIFFERENCES -------------------- 1) The code is able to process/assimilate profiles of local refractivity 2) round-off GLOBAL TEST RESULTS ------------------- Test case: /nfsuser/g01/wx20rt/global_gsi/cases/global/sigma/t254l64/2004041512 Old code : /nfsuser/g01/wx20rt/global_gsi/sorc/gmao_cvs/global_anl New code : /nfsuser/g01/wx20rt/global_gsi/sorc/gsi_cvs/global_anl Machine : NCEP IBM SP (frost) Setup : 48 mpi tasks, blocking=unlimited Max memory old: 632124 Kbytes new: 606504 Kbytes Wall clock old: 1361.945556 seconds new: 1374.217122 seconds Output from final iteration of minimization old: 0: penalty,grad ,a,b= 3 1 0.174989557235327607E+06 0.236858759765653576E+04 0.127998531354701992E-02 0.278301310279872238E+01 new: 0: penalty,grad ,a,b= 3 1 0.174989556723218440E+06 0.236845454856138167E+04 0.128004623684822372E-02 0.278287450338936093E+01 REGIONAL TEST RESULTS --------------------- Test case: /nfsuser/g01/wx20rt/global_gsi/cases/regional/wrfnmm/central_nest/2004041512 Old code : /nfsuser/g01/wx20rt/global_gsi/sorc/gmao_cvs/global_anl New code : /nfsuser/g01/wx20rt/global_gsi/sorc/gsi_cvs/global_anl Machine : NCEP IBM SP (frost) Setup : 12 mpi tasks, blocking=unlimited Max memory old: 473680 Kbytes new: 450032 Kbytes Wall clock old: 1152.277826 seconds new: 1090.192493 seconds Output from final iteration of minimization old: 0: penalty,grad ,a,b= 3 1 0.470847393956742380E+05 0.364048484568464628E+05 0.489379922126660476E-02 0.119951393178841459E+00 new: 0: penalty,grad ,a,b= 3 1 0.470847506649819770E+05 0.364052824031217315E+05 0.489371670855680199E-02 0.119951985458102151E+00 FILES REMOVED ------------- gdcrdn.f90 gdcrdp.f90 isrchfge.f90 isrchfle.f90 smoothgrf.f90 smoothxy_reg.f90 wait.F90 FILES ADDED ----------- AnIntro - protex-style documentation overview file (currently just a template) Five files are added to simplify and modularized bkerror calculations balance.f90 - balance part of background error grid2sub.f90 - transformation from horizontal grid to subdomains smoothrf.f90 - combined regional and global horizontal smoothing (combines smoothgrf.f90 and smoothxy_reg.f90) sub2grid.f90 - transformation from subdomains to horizontal grid tbalance.f90 - adjoint of balance Seven files are added to process/assimilate gps refractivity observations gaussian.f90 - compute values of refractivity with gaussian error (1 sigma) intref.f90 - adjoint of linearized forward model for gps ref prepref.f90 - process gps ref data, perform qc, adjust obs error read_gps_ref.f90 - read gps ref obs from input file setupref.f90 - forward model for gps ref obs sprref.f90 - load gps ref arrays for use in minimization stpref.f90 - step size calculation for gps ref data One file is added which combines into one routine the functions of separate real-world --> grid coordinate mapping routines grdcrd.f90 - get grid coordinates from monotonically increasing or decreasing points FILES MODIFIED -------------- berror.f90 - correct bug in regional mode array indices; improve documentation; rearrange ii,jj arrays; remove initable_reg bkerror.f90 - simplify code - complete documentation constants.f90 - add constants n_a and n_b for gps ref obs deternpe.f90 - new subroutine calls dprodx.F90 - clean up, improve documentation emiss.f90 - clean up, improve documentation gengrid_vars.f90 - documentation genqsat.f90 - documentation & clean up gridmod.f90 - documentation & clean up gsimain.F90 - add variables to SETUP namelist for gps ref obs; doc block changes gsisub.f90 - correct bug in incrementing of ix. increment at end of loop guess_grids.f90 - documentation hoper.f90 - simplify code - remove balance and grid2sub stuff - document htoper.f90 - simplify code - remove balance and sub2grid stuff - document inguesfc.F90 - documentation inguesig.F90 - documentation init_commvars.f90 - documentation intall.F90 - add call to intref to process gps ref obs intdw.f90 - clean up, improve documentation intlimq.f90 - documentation intps.f90 - clean up, improve documentation intpw.f90 - clean up, improve documentation intq.f90 - clean up, improve documentation intrad.f90 - clean up, improve documentation intrp2a.f90 - documentation intrp3.f90 - documentation intrppx.f90 - documentation intrw.f90 - clean up, improve documentation intspd.f90 - clean up, improve documentation intt.f90 - clean up, improve documentation intw.f90 - clean up, improve documentation jfunc.f90 - documentation landem.f90 - clean up, improve documentation mpimod.F90 - update documentation, remove SGI dependence on "mpif.h", now use libmpeu.a obs_para.f90 - add initialization of counter for number of gps ref obs obsmod.f90 - add allocation, initialization, and deallocation of arrays for gps ref obs oneobmod.f90 - documentation pcgsoi.f90 - clean up, improve documentation polcarf.f90 - move pole handling to polcas and polcas, improve documentation prepdw.f90 - documentation, new subroutine calls prepp.f90 - documentation, new subroutine calls preppw.f90 - documentation, new subroutine calls prepq.f90 - documentation, new subroutine calls preprw.f90 - documentation, new subroutine calls prepsrw.f90 - new subroutine calls prept.f90 - documentation, new subroutine calls prepw.f90 - documentation, new subroutine calls prewgt.f90 - documentation & clean up qcmod.f90 - add error and gross limits for gps ref obs, documentation rdgesfc.f90 - documentation rdgesig.f90 - documentation read_airs.f90 - new subroutine calls read_avhrr_navy.f90 - new subroutine calls read_bufrtovs.f90 - new subroutine calls read_goesimg.f90 - new subroutine calls read_goesndr.f90 - new subroutine calls read_ieeetovs.f90 - new subroutine calls read_obs.f90 - add call to read_gps_ref to read in gps ref obs satthin.F90 - new subroutine calls setupoz.f90 - new subroutine calls setuppcp.f90 - new subroutine calls setuprad.f90 - clean up; improve documenation; only call txy2ll for regional mode; new subroutine calls setuprhsall.f90 - clean up; improve documentation; add call to setupref to process gps ref obs setupspd.f90 - clean up, improve documentation specmod.F90 - documentation sst_retrieval.f90 - clean up, improve documentation statsconv.f90 - add block of code to generate gps ref statistics stpcalc.f90 - add call to step size calculation for gsp ref obs; clean up; improve documentation stpdw.f90 - clean up, improve documentation stplimq.f90 - clean up, improve documentation stpps.f90 - clean up, improve documentation stppw.f90 - clean up, improve documentation stpq.f90 - clean up, improve documentation stprad.f90 - clean up, improve documentation stprw.f90 - clean up, improve documentation stpspd.f90 - clean up, improve documentation stpt.f90 - clean up, improve documentation stpw.f90 - clean up, improve documentation stvp2uv.f90 - clean up, improve documentation stvp2uv_reg.f90 - clean up, improve documentation sumload.f90 - new subroutine calls tintrp2a.f90 - documentation tintrp3.f90 - documentation tpause.f90 - clean up code. use geopotential height computed by load_geop_hgt tpause_t.F90 - set upper search loop limit to be no more than number of levels minus 2 tstvp2uv.f90 - clean up, improve documentation MAKEFILE CHANGES ---------------- Makefile - added doc-related targets; differentiated between compilation of *.F and *.f (needed for IRIX) - removed 7 source code files no longer used (see FILES REMOVED for list of routines) - added 13 new source code files (See FILES ADDED for list of routines) Makefile.dependency - update dependencies in accord with addition/deletion of files from Makefile Makefile.conf.AIX - added proper archiving (ar) on NCEP IBM's to allow creation of libgsi.a there - emptied definition of MPI library since compiler has it intrinsically (cope w/ other machines that don't) Makefile.conf.IRIX - modified to properly compile on IRIX32-type environments at Goddard Makefile.conf.IRIX64 - cleaned up some; added ref to mpeu Makefile.conf.OSF1 - added ref to mpeu SCRIPT CHANGES -------------- analyzer - regrouped /etc dir to look more like NCEP's arrangement rungsi_global.sh - add copy for fixed file (/nwprod/fix/prepobs_prep.bufrtable) needed for single obs runs rungsi_regional.sh - add copy for fixed file (/nwprod/fix/prepobs_prep.bufrtable) needed for single obs runs - move location of single temperature obs to be within domain (namelist SINGLEOB_TEST) FIX FILE CHANGES ---------------- Add text file prepobs_prep.bufrtable. This file is needed when running the GSI in single observation mode.