CHANGE LOG FOR UNIFIED 3DVAR CODE --------------------------------- Author(s) : Dave Parrish, Wan-Shu Wu, John Derber, Daryl Kleist Reviewer(s): Russ Treadon Date : 03/19/2004 New CVS version/tag: none yet (discuss w/Ricardo Todling) REASON FOR CHANGES ------------------ The regional side of this update adds the ability to read/write WRF_NMM and NMM format guess/analysis files. Interpolation to half and full (filled) resolution grids is added. The global side of this update contains various clean-up and debugging based on results/failure of cycling experiments. Most of the fixes are related to the background error and various difficulties near the pole. EXPECTED DIFFERENCES -------------------- Regional - allow cycling experiments to begin Global - changes allow cycling to proceed without system blowing up - strengthened coupling between mass and wind variables - LIMQ changed to weak constraint only on negative moisture values GLOBAL TEST RESULTS ------------------- Test case: /nfsuser/g01/wx20rt/cases/global/sigma/t254l64/2004021012 Old code : ncep-gsi-1_0unified Machine : ncep ibm_sp, snow (prod) Setup : 40 mpi tasks, blocking unlimited Max memory old: 696860 Kbytes new: 682668 Kbytes Wall clock old: 1504.656247 seconds new: 1400.050354 seconds Output from final iteration of minimization old: 0: penalty,grad ,a,b= 3 1 0.310767177640690235E+06 0.556240591914522429E+04 0.208608965544507079E-02 0.257347801728651948E+01 new: 0: penalty,grad ,a,b= 3 1 0.284935471295915544E+06 0.330591048565853998E+04 0.280658335387346360E-02 0.233862495068735088E+01 REGIONAL TEST RESULTS --------------------- Test case: /nfsuser/g01/wx20rt/cases/regional/wrf_nmm/2004021718 Old code : /nfsuser/g01/wx23dp/gsi/sorc/gsi0.3/ (ncep-gsi-1_0unified) Machine : ncep ibm_sp, snow (prod) Setup : 12 mpi tasks, blocking unlimited Max memory old: 502584 Kbytes new: 486884 Kbytes Wall clock old: 1196.701505 seconds new: 1208.122846 seconds Output from final iteration of minimization old: 0: penalty,grad ,a,b= 3 1 0.773091121527197683E+05 0.275831721042821533E+12 0.660882165762358475E-13 0.105452088231838847E-02 new: 0: penalty,grad ,a,b= 3 1 0.173641691460481416E+05 0.558837899738625347E+05 0.956409839151572418E-03 0.171313870877533053E+00 FILES REMOVED ------------- gtbhalf.f90 - built into prewgt read_reg_guess.f90 - superseded by nmm and wrf_nmm read_guess routines vapres.f90 - keep if you want, but e not being used for "limq" anymore wrrega.f90 - superseded by nmm and wrf_nmm analysis writing routines FILES ADDED ----------- fill_nmm_grid2.f90 - convert input staggered grid to output filled grid half_nmm_grid2.f90 - convert input staggered grid to output half resolution grid nmm_hybrid_2_hybrid.f90 - transfer in vertical from NMM hybrid ordering to global ordering unfill_nmm_grid2.f90 - convert input staggered grid to output filled grid unhalf_nmm_grid2.f90 - convert input half grid to output staggered grid read_nmm_files.F90 - read header info from nmm guess files read_wrf_nmm_files.F90 - read header info from wrf_nmm guess files read_nmm_guess.f90 - read nmm guess fields read_wrf_nmm_guess.f90 - read wrf_nmm guess fields wrfnmm_hybrid_2_hybrid.f90 - transfer in vertical from wrfNMM hybrid ordering to global ordering wrfnmm_hybrid_2_hybrid_back.f90 - reverse the process of subroutine wrfnmm_hybrid_2_hybrid wrnmma.f90 - write nmm analysis wrwrfnmma.f90 - write wrf_nmm analysis FILES MODIFIED -------------- ajmpcp.f90 - replace local definition of constants with constants module constants.f90 - collect all constants to this module. maintain global and WRF-compliant versions of constants berror.f90 - clean up, additional array for variances for 2d variables bkerror.f90 - multiplication of variances moved outward (implicitly done in hoper/htoper for global mode, varall array no longer needed for global analysis) fpvsx_ad.f90 - replace local definition of constants with constants module gengrid_vars.f90 - add cos/sin arrays, no need for mype genqsat.f90 - set qs to be small instead of zero in event it goes negative glbsoi.f90 - remove call to gtbhalf. alter calls to regional read_files and read_guess routines gridmod.f90 - define new arrays for cos/sin lats. add code to handle nmm and wrf_nmm regional grids gscond_ad.f90 - replace local definition of constants with constants module gsimain.F90 - removal of factemin/max vars, add factqmin to namelist. add order_a2e,order_e2a,diagnostic_reg,filled_grid, half_grid,eta_regional,nmm_regional,wrf_nmm_regional, wrf_mass_regional, time_window, and idiag_conv gsisub.f90 - change call to gengrid_vars (no mype). add code to extract header information for nmm_regional and wrf_nmm_regional guess_grids.f90- add code to handel nmm and wrf_nmm regional guess grids hoper.f90 - cleaned up order, apply variances within htoper.f90 - cleaned up order, apply variances within inguesig.F90 - clean up array usage intall.F90 - change call to intlimq intlimq.f90 - modified method, using negative q only (vapor pres. no more) jfunc.f90 - variables for limq modified m1glat.f90 - replace local definition of constants with constants module mpimod.f90 - rename variable to resolve module conflict nlmsas_ad.f90 - replace local definition of constants with constants module obsmod.f90 - add time_window and idiag_conv variables/flags omegas_ad.f90 - replace local definition of constants with constants module pcgsoi.f90 - removal of facte precpd_ad.f90 - replace local definition of constants with constants module prepdw.f90 - add geometric height to forward model calculation (more precise) prepq.f90 - replace local definition of constants with constants module preprw.f90 - add geometric height to forward model calculation (more precise) prept.f90 - correct treatment of near surface data prepw.f90 - remove unused variables prewgt.f90 - cleaned up, variances read in / loaded (replaced gtbhalf); single file read in which contains all background error statistics qcmod.f90 - modify way routine errormod works read_guess.f90 - new arrays for q (for limq and application of qsat), remove call to vapres read_guess_reg.f90 - remove call to vapres read_lidar.f90 - replace hardwired time limit of 3 hours with time_window read_pcp.f90 - replace hardwired time limit of 3 hours with time_window read_prepbufr.f90 - more consistent/correct treatment of times/locations rfdpar.f90 - change parameter eps to small to resolve conflict with constants module setupdw.f90 - add code to collect/write lidar wind obs diagnostics setupoz.f90 - alter code to skip this data type if guess is all zero (no guess) setupps.f90 - add code to collect/write surface pressure obs diagnostics setuppw.f90 - add code to collect/write precipitable water obs diagnostics setupq.f90 - add code to collect/write moisture obs diagnostics setuprad.f90 - clean up error messages, fix bug in optional reduction of q sensitivity vector above tropopause setuprhsall.f90- add code to collect/write conventional obs diagnostics setuprw.f90 - add code to collect/write radar wind obs diagnostics setupspd.f90 - add code to collect/write wind speed obs diagnostics setupt.f90 - add code to collect/write temperature obs diagnostics setupw.f90 - add code to collect/write wind obs diagnostics smoothgrf.f90 - clean up pole 1 & nlat points sprdw.f90 - move pressure definitions for stats to within routine sprq.f90 - move pressure definitions for stats to within routine sprrw.f90 - move pressure definitions for stats to within routine sprspd.f90 - move pressure definitions for stats to within routine sprt.f90 - move pressure definitions for stats to within routine spruv.f90 - move pressure definitions for stats to within routine statsconv.f90 - add diagnostic output stpcalc.f90 - changes to reflect new limq procedure stplimq.f90 - no more vapor pressure, use negative q only stvp2uv.f90 - clean up calls to low level routines, treat pole points tpause.f90 - add string to specify which method to use for tropopause calculation ('temp'=use WMO def, 'pvoz'=use pv+ozone) tstvp2uv.f90 - clean up to reflect new stvp2uv routine write_all.f90 - alter code to handle write anlaysis for nmm and wrf_nmm regional grids MAKEFILE CHANGES ---------------- - Makefile and Makefile.dependency updated to reflect new/removed routines - Makefile.conf.AIX - use debug memory management (-lhmd) when compile code in debug mode SCRIPT CHANGES -------------- - modify limq namelist variable. factqmin replaces factemin/factemax - add namelist variable time_window. time_window is the observation time window in hours (default is 3, which means +/- 3 hours about analysis time) - add idiag_conv logical to namelist. if .true., each task writes diagnostic file containing innovation and error information for conventional data (default is .true.) - GLOBAL MODE ONLY: single file contains all background error statistics, must be named "berror_stats" in working directory. FIX FILE CHANGES ---------------- GLOBAL MODE ONLY, background error statistics are contained in a single file. The new statistics have stronger coupling between the mass and wind fields. New statistics are available for two global resolutions (sigma coordinate T62L28 - /nfsuser/g01/wx20rt/global_gsi/fix/global/global_berror.l28y96.f77 T254L64 - /nfsuser/g01/wx20rt/global_gsi/fix/global/global_berror.l64y258.f77 When running the analysis code in global model, the error file must be copied or linked to a local file named "berror_stats" in the working directory.