CHANGE LOG FOR UNIFIED 3DVAR CODE ------------------------------------------- Author(s) : Xu Li, Emily Liu, Ricardo Todling, Russ Treadon Reviewer(s) : Ricardo Todling, Russ Treadon Date : 19 January 2005 GMAO CVS tag: fold gmao-gsi-2004_09p1 into NCEP CVS tag NCEP CVS tag: ncep-gsi-2004_12 REASON FOR CHANGES ------------------ Changes are made to the gsi code for the following reasons: (listing below not given in any particular order) a) Modify observation read routines (add options and correct code) - add option to read separate bufr table when reading AIRS data - add option to force little_endian for ieee ozone files (OSF1 build only) - correct Navy AVHRR read routine for SST retrieval b) Correct PROTEX comments. Correct incorrect intent statements. Remove duplicate variable definitions. c) Replace zabs, zexp, and zsqrt with general interfaces (abs, exp, sqrt) in emissivity routines iceem_amsu.f90, landem.f90, and snwem_amsu.f90 d) Remove namelist regional gsi variables wrf_anl_filename and wrf_ges_filename. The regional gsi uses a single file for the guess and analysis. This differs from the global gsi which keeps the guess and analysis files unique. One motivation for updating the same file in the regional gsi is the large size of the guess file. The code, as is, only requires a single copy of the guess/analysis file. Given this, the code was modified to expect this in/out (guess/analysis) file to be named "wrf_inout" in the local working directory. Users will see in the the regional gsi script that the guess file is copied to "wrf_inout". The analysis job, when complete, copies local file "wrf_inout" to a unique analysis filename. e) Modify satthin.F90 to allocate/use thinning grids consistent with size of analysis domain. Prior to this update GLOBAL thinning grids were allocated for regional gsi runs even though observations outside the regional domain were tossed in the read_*f90 routines. While modifying the code, an error in the construction of the thinning grids was discovered. The bug lead to slightly larger thinning boxes that which the user specified. Larger thinning boxes mean less data being passed on for evaluation by setuprad.f90. The modified satthin.F90 corrects this bug as well as ensure thinning grids cover the same spatial domain as the analysis grid. For regional gsi runs the maximum resident set size is reduced by 100 to 240 Mb. f) Replace use of Paul van Delst's profile utility function geopotential with a simple hydrostatic calculation of geopotential. This was done for two reasons. First, with the last update the GPS refractivity code was changed to compute geopotential by integrating the hydrostatic equation. Paul's function was being used with a gravity correction turned on. One could turn off the gravity correction and retain usage of his code. This, however, leads to the second reason for removing use of Paul's geopotential function. The function and it's supporting code were being carried around in a profile utility library. The decision was made to not commit this library to the GMAO repository This simplifies gsi maintenance. This decision may be revisited at a later date. g) Add namelist logical array write_diag. When true, write innovation diagnostics for indicated outer loop to local file. When false, do not write diagnostics to file. To get obseration - analysis innovation diagnostics, set write_diag(miter+1)=.true., where miter is the number of outer loops. The outer loop count (01, 02, 03, etc) is included in the name of the local diagnostic files. The following example is illustrative. Consider a 2 outer loop run with 100 inner iterations on each loop. This is specified in namelist SETUP as miter=2,niter(1)=100,niter(2)=100. To generate innovation diagnostic files for only the initial guess and the final analysis, we would set write_diag as follows: write_diag(1)=.true., write_diag(2)=.false.,write_diag(3)=.true. Please note that generation of observation-analysis innovations DOES NOT alter the analysis. That is, there is no inner loop iteration following computation of the analysis innovations. Related to this change is renaming logical idiag_conv, idiag_ozone, idiag_pcp, and idiag_rad as diag_conv, diag_ozone, diag_pcp, and diag_rad h) Update SST retrieval code. This change remains to be tested. The updated SST retrieval code is only executed when namelist variable retrieval is .true. The default value (set in radinfo.f90) is .false. i) Add NOAA-18 HIRS/3, AMSU-A, MHS, and AVHRR as satellite/sensors in the brightness temperature processing fixed files. Also add these satellite/sensors (not AVHRR) to the OBS_INPUT namelist. This change includes the following items 1) increase jpch from 493 to 535 (see namelist SETUP) 2) generate new coefficient files for CRTM and IRSSE 3) expand fix file global_satangbias.txt from 493 to 535 entries j) Explicitly type all integers to be type i_kind. FYI, i_kind is set in kinds.f90 to be a 4-byte integer. SPECIAL NOTES ------------- a) The regional and global analysis scripts are changed. Please see the script section below for specifics. b) The fixed files for the CRTM and IRSSE are updated. Users must use the new files with this update. See the fix file section below for specifics c) The Make includes a link to the NCEP bacio (byte-addressable i/o) library. This was added to support code in the SST retrieval. Users will this library to complete the gsi build. d) The SST retrieval code was updated, but NOT tested since most users do not exercise this option. EXPECTED DIFFERENCES -------------------- Analysis results from this version differ from those obtained using the previous version (ncep-gsi-2004_12) for the following reasons: (note that the listing below correspond letter-for-letter with the reasons for changes above) a) Using the regional observation error file instead of the observation errors in the regional canned case prepbufr file, leads to a large difference in the analysis result. The canned case regional prepbufr files were created using the global observation error table. The observation errors in the global and regional files differ. FYI, future versions of the regional prepbufr file will contain the regional observation errors. Hence, use of an external regional observation error file may disappear at a later date. b) No impact c) Round-off differences related to precision of calculations. The affected routines are used compute microwave emissivities. Initial differences in computed differences are in the 6th to 8th decimal place. This leads to slight, but noticeable differences in the final analysis results. d) No impact apart from changes to regional scripts. e) Slightly more brightness temperatures passed on to setuprad.f90 for evaluation. Reduced maximum resident set size for regional gsi runs. f) No impact on GPS assimilation. Very slight impact on precipitation and brightness temperature assimilation. Geopotential height is used in setuppcp.f90 to check the "smoothness" of gradient vectors coming out of ajmpcp.f90. Small changes in geopotential height can lead to different qc decisions. Geopotential height affects radiance assimilation only in the regional gsi. setuprad.f90 deflates moisture sensitivity (gradient) vectors based on pressure distance above the tropopause. The regional gsi computes the tropopause pressure using a WMO definition which depends on temperature and geopotential height. Hence changes in geopotenital height can affect tropopause heights which in turn can impact deflation of the moisture sensitivity vector in setuprad.f90 g) No impact apart from possible generation of more diagnostic output files. h) No impact unless running SST retrieval i) No impact. This change is simply preparing for future use of NOAA-18 data when is becomes available. j) No impact FILES REMOVED ------------- read_ozone.f90 - replace by read_ozone.F90 wrf_netcdf_interface.f90 - replaced by wrf_netcdf_interface.F90 FILES ADDED ----------- read_ozone.F90 - modification of read_ozone.f90; add code for OSF1 compile to force little_endian convert for ieee sbuv ozone files regional_io.f90 - new module to contain interface routines for regional guess input and analysis output wrf_netcdf_interface.F90 - remove get_lun; read guess from local file "wrf_inout"; add #ifdef to isolate code requiring WRF libraries/modules FILES MODIFIED -------------- ajmpcp.f90 - explicitly type integers as type i_kind balance.f90 - explicitly type integers as type i_kind berror.f90 - explicitly type integers as type i_kind bkerror.f90 - explicitly type integers as type i_kind bkgcov.f90 - explicitly type integers as type i_kind bkgvar.f90 - explicitly type integers as type i_kind compute_pcp_grad.f90 - explicitly type integers as type i_kind constants.f90 - explicitly type integers as type i_kind deter_subdomain.f90 - explicitly type integers as type i_kind dprodx.F90 - explicitly type integers as type i_kind dtast.f90 - explicitly type integers as type i_kind dvast.f90 - explicitly type integers as type i_kind emiss.f90 - explicitly type integers as type i_kind emiss_ssmi.f90 - replace zsqrt with sqrt; explicitly type integers as type i_kind fill_mass_grid2.f90 - explicitly type integers as type i_kind fill_nmm_grid2.f90 - explicitly type integers as type i_kind gengrid_vars.f90 - explicitly type integers as type i_kind genqsat.f90 - explicitly type integers as type i_kind getstvp.f90 - explicitly type integers as type i_kind getuv.f90 - explicitly type integers as type i_kind glbsoi.f90 - limit CRTM and IRSSE initialize output to single task; explicitly type integers as type i_kind; add optional code to compute/write innovation diagnostic files following last outer loop (o-a diagnostics) grdcrd.f90 - explicitly type integers as type i_kind grdsphdp.f90 - explicitly type integers as type i_kind grid2sub.f90 - explicitly type integers as type i_kind gridmod.f90 - remove get_lun; explicitly set value for inges; explicitly type integers as type i_kind; add routines get_ij and get_ijk gscond_ad.f90 - explicitly type integers as type i_kind gsimain.F90 - remove variables "wrf_ges_filename" and "wrf_anl_filename"; explicitly type integers as type i_kind; add logical flag for SST retrieval; replace WRF interface code with call to subroutine (functionality moved to regional_io.f90) gsisub.f90 - explicitly type integers as type i_kind; replace wrf_nmm_regional and wrf_mass_regional logicals with regional guess_grids.f90 - remove call to profile utility function geopotential, instead simply integrate hydrostatic equation for geopotential height; explicitly type integers as type i_kind half_nmm_grid2.f90 - explicitly type integers as type i_kind hopers.f90 - explicitly type integers as type i_kind iceem_amsu.f90 - explicitly type integers as type i_kind inguesfc.f90 - explicitly type integers as type i_kind inisph.f90 - explicitly type integers as type i_kind init_commvars.f90 - remove second occurrence of iscnt_g on use statement; explicitly type integers as type i_kind intall.f90 - explicitly type integers as type i_kind intall_qc.f90 - explicitly type integers as type i_kind intdw.f90 - explicitly type integers as type i_kind intlimq.f90 - explicitly type integers as type i_kind intoz.f90 - explicitly type integers as type i_kind intpcp.f90 - explicitly type integers as type i_kind intps.f90 - explicitly type integers as type i_kind intpw.f90 - explicitly type integers as type i_kind intq.f90 - explicitly type integers as type i_kind intrad.f90 - explicitly type integers as type i_kind intref.f90 - explicitly type integers as type i_kind intrp2a.f90 - explicitly type integers as type i_kind intrp3.f90 - explicitly type integers as type i_kind intrp3oz.f90 - explicitly type integers as type i_kind intrppx.f90 - declare variable for array dimension before declaring array; explicitly type integers as type i_kind intrw.f90 - explicitly type integers as type i_kind intspd.f90 - explicitly type integers as type i_kind intsrw.f90 - remove second declaration of nsrwdata_num; explicitly type integers as type i_kind intsst.f90 - explicitly type integers as type i_kind intt.f90 - explicitly type integers as type i_kind intw.f90 - explicitly type integers as type i_kind jfunc.f90 - explicitly type integers as type i_kind kinds.f90 - change default integer i_kind from 2 bytes to 4 bytes landem.f90 - replace zabs,zexp,zsqrt with abs,exp,sqrt locatelat_reg.f90 - explicitly type integers as type i_kind mpimod.F90 - correct spelling in comment; explicitly type integers as type i_kind nlmsas_ad.f90 - explicitly type integers as type i_kind obs_para.f90 - explicitly type integers as type i_kind; alter format 1000 statement to make it more descriptive obsmod.f90 - explicitly type integers as type i_kind; rename idiag_conv as diag_conv; add write_diag logical array; remove conv_diagsave (not needed in module); add no_allocate logical to routine makecobs argument list omegas_ad.f90 - explicitly type integers as type i_kind oneobmod.f90 - explicitly type integers as type i_kind ozinfo.f90 - rename logical idiag_ozone as diag_ozone; explicitly type integers as type i_kind pcgsoi.f90 - explicitly type integers as type i_kind pcpinfo.F90 - rename logical idiag_pcp as diag_pcp; explicitly type integers as type i_kind polcarf.f90 - explicitly type integers as type i_kind precpd_ad.f90 - explicitly type integers as type i_kind prepdw.f90 - explicitly type integers as type i_kind prepp.f90 - explicitly type integers as type i_kind preppw.f90 - explicitly type integers as type i_kind prepq.f90 - explicitly type integers as type i_kind prepref.f90 - use geopotential height computed by load_geop_hgt; explicitly type integers as type i_kind preprw.f90 - explicitly type integers as type i_kind prepsrw.f90 - explicitly type integers as type i_kind prepsst.f90 - explicitly type integers as type i_kind prept.f90 - explicitly type integers as type i_kind prepw.f90 - explicitly type integers as type i_kind prewgt.f90 - explicitly type integers as type i_kind prewgt_reg.f90 - explicitly type integers as type i_kind psichi2uv_reg.f90 - explicitly type integers as type i_kind psichi2uvt_reg.f90 - explicitly type integers as type i_kind qcmod.f90 - explicitly type integers as type i_kind rad_tran_k.f90 - explicitly type integers as type i_kind radinfo.f90 - explicitly type integers as type i_kind; correct spelling in comment; add array fbias for AVHRR bias correction and logical retrieval for SST retrieval; rename idiag_rad as diag_rad; add code to read AVHRR bias correction file rdgesfc.f90 - explicitly type integers as type i_kind rdgesig.f90 - explicitly type integers as type i_kind rdgstat_reg.f90 - explicitly type integers as type i_kind rdsfull.f90 - explicitly type integers as type i_kind; remove diagnostic write statement read_airs.f90 - add option to read separate bufr table; explicitly type integers as type i_kind read_avhrr_navy.f90 - fix code to read Navy AVHRR bufr file correctly; explicitly type integers as type i_kind read_bufrtovs.f90 - explicitly type integers as type i_kind read_files.f90 - explicitly type integers as type i_kind read_goesimg.f90 - explicitly type integers as type i_kind read_goesndr.f90 - explicitly type integers as type i_kind read_gps_ref.f90 - explicitly type integers as type i_kind read_guess.f90 - remove mype from call to load_geop_hgt; explicitly type integers as type i_kind read_ieeetovs.f90 - explicitly type integers as type i_kind read_lidar.f90 - explicitly type integers as type i_kind read_obs.f90 - explicitly type integers as type i_kind read_pcp.f90 - fix intent of variable jsatid; explicitly type integers as type i_kind read_prepbufr.f90 - add quality mark and origianl observation error as quantities passed on to setup*f90 routines (want to include this information in future updates to diagnostic read_radar.f90 - explicitly type integers as type i_kind read_superwinds.f90 - explicitly type integers as type i_kind read_wrf_mass_files.f90 - explicitly type integers as type i_kind read_wrf_mass_guess.f90 - remove mype from call load_geop_hgt; rename variable wrf_ges_filename as wrfges; explicitly type integers as type i_kind read_wrf_nmm_files.f90 - explicitly type integers as type i_kind read_wrf_nmm_guess.f90 - remove mype from call load_geop_hgt; rename variable wrf_ges_filename as wrfges; explicitly type integers as type i_kind rfdpar.f90 - declare variable for array dimension before declaring array; explicitly type integers as type i_kind rsearch.F90 - explicitly type integers as type i_kind satthin.F90 - allocate thinning grids consistent with analysis domain size; fix bug (set iuse=.true. when use_all=.true.); explicitly type integers as type i_kind setupdw.f90 - correct spelling in comment; explicitly type integers as type i_kind; add conv_diagsave to routine argument list setupoz.f90 - correct spelling in comment; explicitly type integers as type i_kind; add outer loop number to name of ozone diagnostic file setuppcp.f90 - correct spelling in comment; add outer loop number to name of pcp diagnostic file; explicitly type integers as type i_kind setupps.f90 - explicitly type integers as type i_kind; add conv_diagsave to routine argument list setuppw.f90 - explicitly type integers as type i_kind; add conv_diagsave to routine argument list setupq.f90 - explicitly type integers as type i_kind; add conv_diagsave to routine argument list setuprad.f90 - explicitly type integers as type i_kind; add outer loop number to name of radiance diagnostic file; modify way in which code exercises SST retrieval setupref.f90 - explicitly type integers as type i_kind; add conv_diagsave to routine argument list setuprhsall.f90 - remove local retrieval flag; restructure code to compute and write out innovation information on select outer loops; explicitly type integers as type i_kind setuprw.f90 - explicitly type integers as type i_kind; add conv_diagsave to routine argument list setupspd.f90 - explicitly type integers as type i_kind; add conv_diagsave to routine argument list setupsrw.f90 - explicitly type integers as type i_kind; add conv_diagsave to routine argument list setupsst.f90 - explicitly type integers as type i_kind; add conv_diagsave to routine argument list setupt.f90 - correct spelling in comment; explicitly type integers as type i_kind; add conv_diagsave to routine argument list setupw.f90 - correct spelling in comment; explicitly type integers as type i_kind; add conv_diagsave to routine argument list simpin1.f90 - explicitly type integers as type i_kind simpin1_init.f90 - explicitly type integers as type i_kind smooth121.f90 - explicitly type integers as type i_kind smoothrf.f90 - explicitly type integers as type i_kind smoothwwrf.f90 - explicitly type integers as type i_kind smoothzrf.f90 - explicitly type integers as type i_kind snwem_amsu.f90 - replace zsqrt with sqrt; explicitly type integers as type i_kind specmod.f90 - explicitly type integers as type i_kind sprdw.f90 - restructure code to exit early on o-a call; explicitly type integers as type i_kind sproz.f90 - add call to get_ij to compute grid relative i,j for observations; explicitly type integers as type i_kind sprp.f90 - restructure code to exit early on o-a call; explicitly type integers as type i_kind sprpw.f90 - restructure code to exit early on o-a call; explicitly type integers as type i_kind sprq.f90 - restructure code to exit early on o-a call; explicitly type integers as type i_kind sprref.f90 - restructure code to exit early on o-a call; explicitly type integers as type i_kind sprspd.f90 - restructure code to exit early on o-a call; explicitly type integers as type i_kind sprsrw.f90 - restructure code to exit early on o-a call; explicitly type integers as type i_kind sprsst.f90 - restructure code to exit early on o-a call; explicitly type integers as type i_kind sprt.f90 - restructure code to exit early on o-a call; explicitly type integers as type i_kind spruv.f90 - correct spelling in comment; restructure code to exit early on o-a call; explicitly type integers as type i_kind sst_retrieval.f90 - numerous modifications; explicitly type integers as type i_kind statsconv.f90 - move jiter,first to jfunc module, explicitly type integers as type i_kind statsoz.f90 - move jiter,first to jfunc module, explicitly type integers as type i_kind statspcp.f90 - move jiter,first to jfunc module, explicitly type integers as type i_kind statsrad.f90 - correct 1102 format specification for observation error; move jiter,first to jfunc module, explicitly type integers as type i_kind stop1.f90 - explicitly type integers as type i_kind stpcalc.f90 - explicitly type integers as type i_kind stpcalc_qc.f90 - explicitly type integers as type i_kind stpdw.f90 - explicitly type integers as type i_kind stplimq.f90 - explicitly type integers as type i_kind stpoz.f90 - explicitly type integers as type i_kind stpcp.f90 - explicitly type integers as type i_kind stpps.f90 - explicitly type integers as type i_kind stppw.f90 - explicitly type integers as type i_kind stpq.f90 - explicitly type integers as type i_kind stprad.f90 - explicitly type integers as type i_kind stpref.f90 - explicitly type integers as type i_kind stprw.f90 - explicitly type integers as type i_kind stpspd.f90 - explicitly type integers as type i_kind stpsrw.f90 - explicitly type integers as type i_kind stpsst.f90 - explicitly type integers as type i_kind stpt.f90 - explicitly type integers as type i_kind stpw.f90 - explicitly type integers as type i_kind stvp2uv.f90 - explicitly type integers as type i_kind stvp2uv_reg.f90 - explicitly type integers as type i_kind sub2grid.f90 - explicitly type integers as type i_kind sumload.f90 - explicitly type integers as type i_kind tbalance.f90 - explicitly type integers as type i_kind tintrp2a.f90 - explicitly type integers as type i_kind tintrp3.f90 - explicitly type integers as type i_kind tpause.f90 - explicitly type integers as type i_kind tpause_t.F90 - explicitly type integers as type i_kind transform.f90 - explicitly type integers as type i_kind tstvp2uv.f90 - explicitly type integers as type i_kind tstvp2uv_reg.f90 - explicitly type integers as type i_kind unfill_mass_grid2.f90 - explicitly type integers as type i_kind unfill_nmm_grid2.f90 - explicitly type integers as type i_kind unhalf_nmm_grid2.f90 - explicitly type integers as type i_kind update_ggrid.f90 - explicitly type integers as type i_kind wrf_binary_interface.f90 - remove get_lun; read guess from local file "wrf_inout"; explicitly type integers as type i_kind write_all.f90 - correct spelling in comment; repackage regional analysis write; explicitly type integers as type i_kind wrsfca.f90 - correct spelling in comment; explicitly type integers as type i_kind wrsiga.f90 - correct spelling in comment; explicitly type integers as type i_kind wrwrfmassa.f90 - write analysis to file "wrf_inout"; explicitly type integers as type i_kind wrwrfnmma.f90 - write analysis to file "wrf_inout"; explicitly type integers as type i_kind MAKEFILE CHANGES ---------------- Makefile - add definition section to default baselib libraries. Move NetCDF and WRF libraries to this section. - add pre-processor directives to two routines --> change *.f90 to *.F90 a) read_ozone.f90 becomes read_ozone.F90 b) wrf_netcdf_interface.f90 becomes wrf_netcdf_interface.F90 Makefile.dependency - replace read_ozone.f90 with read_ozone.F90 - replace wrf_netcdf_interface.f90 becomes wrf_netcdf_interface.F90 - add dependencies for regional_io.f90 - small, but numerous, changes in dependency for routines related to observation pre-processing prior to minimization (setup*90, spr*90, etc) These changes are related to greater user control over generation of innovation files - changes in dependencies for regional i/o Makefile.conf.AIX and Makefile.conf.AIX.omp - add definitions for INCcrtm and INCirsse - add pre-processor flag WRF to compile - add reference to NCEP bacio library on load step (required by sst_retrieval.f90) - remove link to profile utility library Makefile.conf.IRIX64 - add reference to CRTM and IRSSE Makefile.conf.Linux, Makefile.conf.Linux,IA64.ifort - new configuration files Makefile.conf.OSF1 - add references to CRTM and IRSSE SCRIPT CHANGES -------------- All four regional scripts (rungsi_regional_mass_binary.sh, rungsi_regional_mass_netcdf.sh, rungs_regional_nmm_binary.sh, rungsi_regional_nmm_netcdf.sh) are changed in the following way a) Remove namelist variables "wrf_ges_filename" and "wrf_anl_filename" b) Copy file containing regional guess fields (surface and free atmosphere) to a local file named "wrf_inout". c) The analysis is written to file "wrf_inout", over-writting the guess field values. Copy file "wrf_inout" to an analysis file in the save directory ($savdir) All five rungsi*sh scripts are changed in the following ways a) reduce the number of outer iterations from 3 to 2. In previous updates the only way to get o-a statistics was to run a third outer loop. This is no longer necessary. The scripts are now set up to generate o-g and o-a diagnostic files. In conjunction with this change, the scripts are modified to properly concatenate and label o-g and o-a diagnostic files b) add line "write_diag(1)=.true.,write_diag(2)=.false.,write_diag(3)=.true.," to namelist SETUP c) change SETUP variable jpch from 493 to 535 d) change SETUP variable ndat from 29 to 32 e) add entries for NOAA-18 HIRS/3, AMSU-A, and MHS in namelist OBS_INPUT FIX FILE CHANGES ---------------- The following changes are made to the fix files a) Add prepbufr error table for regional gsi runs (file nam_errtable.r3dv) b) Add NOAA-18 HIRS/3, AMSU-A, MHS, and AVHRR channels to set of satellite/sensors which may be processed by code. This change increased the size of the brightness temperature usage/specification file from jpch=493 to jpch=535 entries. Correspondingly the coefficient files read by the CRTM and IRSSE needed to change. Also, the angle dependent bias correction file was expanded to account for the additional sensors/ channels. The specific brightness temperature related fix files that changed are global_emissivity_coefs.f77 - IRSSE coefficients global_satangbias.txt - angle dependent bias correction global_satinfo.txt - satellite/sensor information file global_spectral_coefs.f77 - spectral characteristics used in CRTM global_transmittance_coefs.f77 - transmittance coefficients used by CRTM PLEASE note that all NOAA-18 data has an use flag of -1 in global_satinfo.txt (-1 means monitor the data (run through CRTM) but do not assimilate) TEST RESULTS ------------ Old code: /nfsuser/g01/wx20rt/global_gsi/sorc/gsi_cvs.200412 New code: /nfsuser/g01/wx20rt/global_gsi/sorc/gsi_cvs Machine : NCEP IBM (blue) NOTE: The old (200412 gsi version) code was run twice. The tag "old" below refers to a 3 outer iteration run. Previous gsi updates ran the code for 3 outer iterations. This was done to generate o-a statistics. With the new code, it is possible to get o-a statistics without the third outer iteration. Tag "old2" below refers to gsi runs using the 200412 code with only 2 outer iterations. GLOBAL T254L64 TEST ------------------- Old script : /nfsuser/g01/wx20rt/global_gsi/sorc/gsi_cvs.200412/rungsi_global.sh New script : /nfsuser/g01/wx20rt/global_gsi/sorc/gsi_cvs/rungsi_global.sh Maximum resident set size old : 514200 Kbytes old2: 514200 Kbytes new : 514204 Kbytes Wall clock old : 1063.98581 seconds old2: 1000.236785 seconds new : 1033.718589 seconds Output from the first iteration of the minimization old : penalty,grad ,a,b= 1 0 0.407441789166940958E+06 0.672122661060058512E+07 0.490086107864976320E-02 0.000000000000000000E+00 old2: penalty,grad ,a,b= 1 0 0.407441789166940958E+06 0.672122661060058512E+07 0.490086107864976320E-02 0.000000000000000000E+00 new : penalty,grad ,a,b= 1 0 0.407838766502306738E+06 0.672881988912119344E+07 0.490969897006850349E-02 0.000000000000000000E+00 Output from the final iteration of the minimization old : penalty,grad ,a,b= 3 1 0.218254527381437656E+06 0.149411492876785796E+05 0.292822773187458030E-02 0.122839623650184437E+01 old2: penalty,grad ,a,b= 2 100 0.217481122456804267E+06 0.127562619275026208E+02 0.261526256896608533E-02 0.945504428465393287E+00 new : penalty,grad ,a,b= 2 100 0.217755528738433000E+06 0.133423359277422033E+02 0.193249603468130288E-02 0.903156834675896802E+00 REGIONAL NMM BINARY TEST ------------------------ Old Script: /nfsuser/g01/wx20rt/global_gsi/sorc/gsi_cvs.200412/rungsi_regional_nmm_binary.sh New Script: /nfsuser/g01/wx20rt/global_gsi/sorc/gsi_cvs/rungsi_regional_nmm_binary.sh Maximum resident set size old : 509284 Kbytes old2: 509240 Kbytes new : 360560 Kbytes Wall clock old : 576.119643 seconds old2: 569.888693 seconds new : 571.989641 seconds Output from the first iteration of the minimization old : penalty,grad ,a,b= 1 0 0.313682251948797639E+05 0.468625985375712509E+06 0.329454217384190194E-02 0.000000000000000000E+00 old2: penalty,grad ,a,b= 1 0 0.313682251948797639E+05 0.468625985375712451E+06 0.329454217384190238E-02 0.000000000000000000E+00 new : penalty,grad ,a,b= 1 0 0.315605580802578443E+05 0.493124381359986262E+06 0.328027493186316054E-02 0.000000000000000000E+00 Output from the final iteration of the minimization old : penalty,grad ,a,b= 3 1 0.258371586599990405E+05 0.104005404469144458E+06 0.143150112835010285E-02 0.494014163947943952E+00 old2: penalty,grad ,a,b= 2 100 0.227279951871424892E+05 0.142431824141824449E-02 0.633911059574336199E-02 0.129123859988871770E+01 new : penalty,grad ,a,b= 2 100 0.227825378807581183E+05 0.105363686009221028E-02 0.133482197077469614E-01 0.614180867519542484E+00 REGIONAL NMM NETCDF TEST ------------------------ Old Script: /nfsuser/g01/wx20rt/global_gsi/sorc/gsi_cvs.200412/rungsi_regional_nmm_netcdf.sh New Script: /nfsuser/g01/wx20rt/global_gsi/sorc/gsi_cvs/rungsi_regional_nmm_netcdf.sh Maximum resident set size old : 509052 Kbytes old2: 498900 Kbytes new : 346020 Kbytes Wall clock old : 602.672318 seconds old2: 575.676735 seconds new : 596.352773 seconds Output from the first iteration of the minimization old : penalty,grad ,a,b= 1 0 0.340068869806004368E+05 0.747617967925411882E+06 0.246200362190354119E-02 0.000000000000000000E+00 old2: penalty,grad ,a,b= 1 0 0.340068869806004368E+05 0.747617967925411882E+06 0.246200362190354119E-02 0.000000000000000000E+00 new : penalty,grad ,a,b= 1 0 0.342721701987190827E+05 0.793467839680761332E+06 0.242963038718288287E-02 0.000000000000000000E+00 Output from the final iteration of the minimization old : penalty,grad ,a,b= 3 1 0.280216637865801240E+05 0.217980730824536673E+06 0.930046870100969918E-03 0.146827381971896420E+01 old2: penalty,grad ,a,b= 2 100 0.247494454564304469E+05 0.772574017753502665E-02 0.520007885452763736E-02 0.152189742686839868E+01 new : penalty,grad ,a,b= 2 100 0.248218110048106428E+05 0.191678237804848457E-02 0.812800529597603773E-02 0.311178046293597965E+00 REGIONAL MASS BINARY TEST ------------------------- Old Script: /nfsuser/g01/wx20rt/global_gsi/sorc/gsi_cvs.200412/rungsi_regional_mass_binary.sh New Script: /nfsuser/g01/wx20rt/global_gsi/sorc/gsi_cvs/rungsi_regional_mass_binary.sh Maximum resident set size old : 532876 Kbytes old2: 533284 Kbytes new : 304732 Kbytes Wall clock old : 547.142482 seconds old2: 535.038985 seconds new : 545.210688 seconds Output from the first iteration of the minimization old : penalty,grad ,a,b= 1 0 0.302114358683771097E+05 0.320215251638750173E+08 0.143758673296435656E-03 0.000000000000000000E+00 old2: penalty,grad ,a,b= 1 0 0.302114358683771097E+05 0.320215251638750173E+08 0.143758673296435656E-03 0.000000000000000000E+00 new : penalty,grad ,a,b= 1 0 0.301911311590128062E+05 0.322953904760074504E+08 0.142354245987644858E-03 0.000000000000000000E+00 Output from the final iteration of the minimization old : penalty,grad ,a,b= 3 1 0.163790344112328512E+05 0.776482444985934562E+05 0.624229837101616556E-03 0.766547747682835845E-01 old2: penalty,grad ,a,b= 2 100 0.147583422908867215E+05 0.634823046681759365E+03 0.653899581007551852E-03 0.149510113615772378E+01 new : penalty,grad ,a,b= 2 100 0.147984925561466825E+05 0.836481120157601140E+03 0.316565851713851020E-03 0.226888584525652748E+01 REGIONAL MASS NETCDF TEST ------------------------- Old Script: /nfsuser/g01/wx20rt/global_gsi/sorc/gsi_cvs.200412/rungsi_regional_mass_netcdf.sh New Script: /nfsuser/g01/wx20rt/global_gsi/sorc/gsi_cvs/rungsi_regional_mass_netcdf.sh Maximum resident set size old : 542860 Kbytes old2: 542856 Kbytes new : 301588 Kbytes Wall clock old : 495.571992 seconds old2: 479.033693 seconds new : 491.630159 seconds Output from the first iteration of the minimization old : penalty,grad ,a,b= 1 0 0.415395850880521466E+05 0.417505584826105973E+06 0.109337255053558596E-01 0.000000000000000000E+00 old2: penalty,grad ,a,b= 1 0 0.415395850880521466E+05 0.417505584826105973E+06 0.109337255053558596E-01 0.000000000000000000E+00 new : penalty,grad ,a,b= 1 0 0.416178208201014422E+05 0.416734400080018211E+06 0.109060019388852580E-01 0.000000000000000000E+00 Output from the final iteration of the minimization old : penalty,grad ,a,b= 3 1 0.296631301709492691E+05 0.282395915106738430E+05 0.639237598738308117E-02 0.372968737172746423E+00 old2: penalty,grad ,a,b= 2 85 0.275996401739574721E+05 0.382420722520312935E-04 0.359511198997043840E-01 0.232901607711386571E+00 new : penalty,grad ,a,b= 2 86 0.277206744334557297E+05 0.259000358434462626E-04 0.259848749146930902E-01 0.530648573632939713E+00 Special note: The inner loop exits early on the second outer iteration because the total reduction in the magnitude of the gradient exceeds 1e-10.