RELEASE_NOTES 28 July 2000 =============================================================================== Released this year, but not last year: + DYNMEM (dynamic memory library) - used for parallel model applications + MECH (mechanism reader) - generate your own gas chem mech reactions files + PARIO (parallel I/O library) - used for parallel model applications + PDM (Plume Dynamics Model) - necessary to run P-in-G + PROCAN (Process Analysis/IRR processor) - customize your process analysis + more STENEX - all current stencil exchange library functions + only aero2 mech's in ICL - complete change in aerosols from last release - see CCTM RELEASE NOTES, #(11) No changes from last release: + BUILD - some changes - see CCTM RELEASE NOTES, #(22) + IOAPI + JPROC + LUPROC Changed codes (release notes follow): + BCON + CCTM + ECIP + ICON + MCIP All scripts: Moved from Fortran 77 and made strict use of the Fortran 90 compiler, although most of the code can still be compiled with f77. =============================================================================== BCON RELEASE NOTES ------------------------------------------------------------------------------- 1) Improved linear interpolation algorithm for interpolants close to interval end points. * BCON/driver/bcon/lr_interp.F: improved linear interpolation algorithm =============================================================================== CCTM RELEASE NOTES ------------------------------------------------------------------------------- Chemistry: mechanisms and solvers 1) The qssa time step upper limit value, ULIM was reduced from the value set as the synchronization time step (typically 15 min. for 36 Km resolution) to 1 min. in CCTM/chem/qssa/vqssa.F 2) The cb4 reaction, NO+NO2+H2O-->2HONO has a rate constant of 4.40E-40. To correct the effect of a zero rate constant On the Sun WS (32 bit), in the qssa code, we declared the critical variables REAL*8: * CCTM/chem/qssa/vgaschem.F - REAL*8 for RKBLK * CCTM/chem/qssa/vqssa.F - " " " * CCTM/chem/qssa/calcks.F - " " RK 3) In the mechanisms, we made the CH4+OH reactions 2nd order. This required modifications to calcks.F (qssa) and grcalcks.F (smvgear). In addition, we added the capability of modeling explicit reactions with H2 for these subroutines. 4) Extremely small negative concentrations in the smvgear solver integration had been teated as interation convergence failures, and were causing the model to stop needlessly in some extreme cases. * CCTM/chem/smvgear/grsmvgear.F: remove convergence failure test for negative concentrations ------------------------------------------------------------------------------- P-in-G 5) We did an extensive rewrite of the plume-in-grid modules (ping_qssa and (ping_smvgear) to include restart/continuation-beyond-24-hours capablilty and to improve memory usage for parallel applications using f90 modules. ------------------------------------------------------------------------------- Aerosols 6) The aerosol modules have been extensively rewritten to include variable standard deviation, which entails the transport and processing of a new surface area aerosol species. Codes affected: AEROSTUFF.EXT, AERO_internal.EXT, aero_driver.F, aero_subs.f, aeroproc.f, aerostep.f, coagrate.f, eql3.f, getvisby.f, getvsed.f, modpar.f, nuclcond.f, opdiam.F 7) The aero_depv module is included in these modifications. 8) In addition, we made a correction for the low sulfate/nitrate test in rpmares (in aero_subs.f). 9) Other codes affected by the aerosol modifications: init: * CCTM/init/init/initscen.F: add aero surface area variable advection: * CCTM/hadv/hbot/rdbcon.F, hppm/rdbcon.F: add aero surface area variable couple/decouple: * CCTM/couple/gencoor/couple.F: add aero surface area variable vertical diffusion: * CCTM/vdiff/eddy/opddep.F,vdiffim.F: add aero surface area variable process analysis: * CCTM/procan/pa/pa_init.F: add surface area aerosol species * CCTM/procan/pa/pa_update.F: add surface area aerosol species clouds: * CCTM/cloud/cloud_radm/aqchem.F: set lower limit to initial 3rd moment * CCTM/cloud/cloud_radm/cldproc.F, getalpha.f, radmcld.F, rescld.F, scavwdep.F: add aero surface area variable * CCTM/cloud/cloud_radm/aqchem.F: add aero surface area variable; reapportion NO3 and NH4 * CCTM/cloud/cloud_radm/aq_map.F: add aero surface area variable; check unit labels * CCTM/cloud/cloud_radm/AQ_PARAMS.EXT: add aero surface area variable; default unit labels ------------------------------------------------------------------------------- 10) Other changes in cloud processing: * CCTM/driver/ctm/sciproc.F: call cloud before aero * CCTM/cloud/cloud_radm/scavwdep.F: implemented scavenging scale factors, and corrected units for variables MASATKN and NUMATKN ------------------------------------------------------------------------------- 11) Mechanism changes for the new aerosols ... new chem mech's: replaces: cb4_ae2 cb4_ae cb4_ae2_aq cb4_ae_aq radm2_ae2 radm2_ae radm2_ae2_aq radm2_ae_aq radm2_ci1_ae2 radm2_cis1_ae radm2_ci1_ae2_aq radm2_cis1_ae_aq radm2_ci4_ae2 radm2_cis4_ae radm2_ci4_ae2_aq radm2_cis4_ae_aq ------------------------------------------------------------------------------- Vertical diffusion 12) In the vertical diffusion module, the dry deposition amount was being calculated based on the map projection area: * CCTM/vdiff/eddy/rddepv.F: correct DEPV to "real world" values 13) We made some adjustments for the case where MM5 winds are very light and the eddy difffusion algorithm does not allow sufficient mixing. * CCTM/vdiff/eddy/edyintb.F: KZ0 lower limit on EDDYV for stable case 14) We made some other changes in the vertical diffusion module to correct the way we were computing the dry deposition for process analysis: * CCTM/vdiff/eddy/vdiffim.F: compute ddep for all depv species - for PA * CCTM/vdiff/eddy/vdiff_map.F: add ddep species map and modify depv map ------------------------------------------------------------------------------- Process Analysis 15) * CCTM/procan/pa/pa_update.F: correct DDEP calculations 16) * CCTM/procan/pa/pa_update.F: correct aerosol deposition sign; fix error calculating DDEP when run in parallel ------------------------------------------------------------------------------- For Parallel Processing 17) * CCTM/par/par/par_init.F: initialize env var ALL_PE_SYNC_IO_MODE 18) Stencil Exchange library changes: SUBST_GLOBAL_MAX->SUBST_GLOBAL_RMAX affects: * CCTM/driver/ctm/advstep.F * CCTM/hdiff/unif/hcontdiff.F 19) Added other new functions in the stencil exchange library for parallel operation. ------------------------------------------------------------------------------- Miscellaneous 20) A new subroutine was added, which is called by driver: * CCTM/driver/ctm/wr_conc.F 21) * CCTM/driver/ctm/advstep.F: move UOVDX initialization inside loop 22) With the adddition of new "-DSUBST" and other cpp flags, the "here document" part of the bldit.cctm.sun script failed. This problem was fixed by adding a new def_flags command for m3bld to parse. def_flags is really another cpp_flags. The problem occurred only for cctm and only for the Sun, where the 32 bit limits in a csh "here document" caused the created word list to be too long. =============================================================================== ECIP RELEASE NOTES ------------------------------------------------------------------------------- 1) Ecip was made "monocode" in order to run in parallel using MPI (e.g. on the T3E). The code is essentially single-source, compiled for the target platform with appropriate flags and standard preprocessing. To execute on the T3E requires the use of some Fortran 90 constructs, and we also implemented an improved version of the stencil exchange library, which is linked in with the T3E version of ecip and which explicitly uses Fortran 90 constructs. The bldit script (bldit.ecip.sun) for the Sun workstation does not require the Fortran 90 version of the stencil exchange library. * ECIP/: driver/ecip/cksummer.F, driver/ecip/ecip.F, driver/ecip/ecip_driver.F, driver/ecip/ecip_inp.F, driver/ecip/metin.F, driver/ecip/outp.F, plrise/plrise/pr.F, par/par/check_range.F, par/par/gl_max.F, par/par/setup_print.F, par/par_noop/check_range_noop.F, par/par_noop/gl_max_noop.F, par/par_noop/setup_print_noop.F: monocode ------------------------------------------------------------------------------- 2) To enable parallel execution, we added a new module, par (par_noop for non-parallel operation). * ECIP/par/par/par_init.F, par_term.F * ECIP/par/par_noop/par_init_noop.F, par_term_noop.F ------------------------------------------------------------------------------- 3) Modifications to get correct number of emissions species for all situations. * ECIP/icl/icl_ecip/PARAM_PR1.EXT: Revised variables for dimensioning KAREM and KPTEM ------------------------------------------------------------------------------- 4) Added diagnostic output capability for stackin.F. * ECIP/driver/ecip/stackin.F: IPRFLG parameter included in stackin ------------------------------------------------------------------------------- 5) Added SAVE statements to comply with Fortran standard. * ECIP/driver/ecip/metin.F, plrise/plrise/pr.F: Additional SAVEd parameters for Cray ------------------------------------------------------------------------------- 6) Algorithm modified to be more robust. * ECIP/plrise/plrise/plsprd.f: Added improvements in plsprd =============================================================================== ICON RELEASE NOTES ------------------------------------------------------------------------------- 1) Improved linear interpolation algorithm for interpolants close to interval end points. * ICON/driver/icon/lr_interp.F: improved linear interpolation algorithm ------------------------------------------------------------------------------- 2) ICON was made "monocode" in order to run in parallel using MPI (e.g. on the T3E). The code is essentially single-source, compiled for the target platform with appropriate flags and standard preprocessing. To execute on the T3E requires the use of some Fortran 90 constructs, and we also implemented an improved version of the stencil exchange library, which is linked in with the T3E version of ecip and which explicitly uses Fortran 90 constructs. The bldit script (bldit.icon.sun) for the Sun workstation does not require the Fortran 90 version of the stencil exchange library. * ICON/: driver/icon/icon.F, driver/icon/opn_ic_file.F, input/profile/prof_icout.F, input/m3conc/m3_icout.F, input/m3conc/m3_ping.F, input/m3conc/m3_vinterp.F, par/par/mapping_init.F, par/par/par_init.F, par/par/par_term.F, par/par/reconfig_domain.F, par/par/shift_map.F, par/par_noop/mapping_init_noop.F, par/par_noop/par_init_noop.F, par/par_noop/par_term_noop.F, par/par_noop/reconfig_domain_noop.F, par/par_noop/shift_map_noop.F: monocode =============================================================================== MCIP RELEASE NOTES ------------------------------------------------------------------------------- 1) Changes were made throughout the code to eliminate "hard-wired" dimensions in favor of dynamic memory allocation to allow for a variable number of met layers. ------------------------------------------------------------------------------- 2) Corrected an indexing problem for the top layer. * MCIP/util/util/collapx.F ------------------------------------------------------------------------------- 3) Enable the use of the full met domain for cctm. * MCIP/output/stnd/gridout.F, metcro.F ------------------------------------------------------------------------------- 4) Make horizontal interpolation more general and make compatible with the g77 compiler. * MCIP/input/m3/getmet_m3.F ------------------------------------------------------------------------------- 5) Update LU type conversion 9->11 for LUTYPE=3 option, and update code for Version-3 MM5 landuse data. * MCIP/input/mm5/getmet_mm5.F ------------------------------------------------------------------------------- 6) Fix algorithm for neutral conditions. * MCIP/pbl/pblpkg/sfcflux.F ------------------------------------------------------------------------------- 7) Increase max pbl height to 5000 m. * MCIP/pbl/pblpkg/pblpkg.F ------------------------------------------------------------------------------- 8) Set very small negative cloud and rain water mixing ratios read in from the met model to minimum bound for 32 bit architectures. * MCIP/input/mm5/readmm1.F ------------------------------------------------------------------------------- 9) Modification to set extremely small output data values to minimum bound for 32 bit architectures. * MCIP/output/stnd/metcro.F ------------------------------------------------------------------------------- 10) Improved efficiency by skipping the input processing of data before the first required output timestamp. * MCIP/driver/mcip/mcip.F