CM1 Numerical Model, release 16 (cm1r16): 6 February 2012 Summary of changes. ------------------------------------------------------------- 1. New options/features. - There is new numerical method for calculating horizontal gradients when using terrain-following coordinates. (There is no change for simulations that do not use terrain.) This new flux-form method better conserves mass and greatly reduces errors in steeply sloped terrain. CM1 users that use terrain (terrain_flag = .true.) are encouraged to upgrade to this new version of CM1. - The CM1-default surface flux parameterization has been substantially modified. It now: assumes a logarithmic layer below the lowest model level; uses this assumption to calculate wind speeds at 10-m AGL; and uses these 10-m winds in the surface flux calculations. (Note: this is essentially the same method that is used in sfcmodel=2, except the shear-dominated ... i.e., neutral stability ... assumption is made for the CM1-default scheme.) - The parameterized turbulence scheme (iturb=3) has been modified to use a vertical length scale (l_v) that is a function of height, and approaches zero near the surface. The formulation of Blackadar (1962) is now used by default. Users must now set the asymptotic vertical length scale (l_inf) in the namelist (instead of a constant vertical length scale l_v). - The ability to write one output file for MPI runs (rather than to always write one file per processor/core when using MPI) has been added. This option is implemented for both GrADS-format and netcdf-format output (output_format=1,2), at the moment. With this option, users will no longer have to run a "combine" code/script after the model run. A note of caution: this method is very inefficient when using a large number of processors/cores (say, > 100). If you plan to use several hundred processors or more, please use the old method (output_format=3). (Otherwise, you may end up spending more than 50% of your CPU time simply writing output files). Other options/techniques for creating a single output file when using large numbers of processors are being investigated for the future. - There are new, more efficient, "combine" programs for GrADS users on the CM1 homepage (http://www.mmm.ucar.edu/people/bryan/cm1/). These codes can be used when output_format=3, which is recommended when using hundreds of processors (or more). - The ability to write only one printout file for MPI runs (rather than one printout file per MPI process) has been added. See "procfiles" flag in namelist.input and README.namelist. ------------------------------------------------------------- 2. Changes, fixes, modifications, etc. - Changed the default surface exchange coefficients over water from Deacon's formula (cecd=2) to a scheme that roughly matches Fairall et al (2003) at low wind speeds and roughly matches Donelan et al (2004) at high wind speeds (cecd=3). (namelist.input, sfcphys.F) - Changed the default settings for turbulence length scales for the parameterized turbulence scheme (iturb=3) based on Bryan (2012, MWR, in press). (namelist.input) - Changed the default microphysics scheme from the Goddard-LFO single- moment scheme (ptype=2) to the Morrison double-moment scheme (ptype=5). (namelist.input) - Changed the default advection scheme for scalars to the Weighted Essentially Non-Oscillatory (WENO) scheme (advweno=2). (namelist.input) - Removed the "thsmall" option. CM1 now always updates potential temperature on the small timesteps. (solve.F, sound.F, namelist.input) - Removed the "ifall" option. CM1 now always calculates hydrometeor sedimentation using a forward-in-time/backward-in-space scheme. (kessler.F, namelist.input) - Added to namelist.input the variable "ndcnst", which is the specified cloud-droplet concentration for the default setup of the Morrison microphysics scheme. See "README.namelist" for more information. (namelist.input, param.F, morrison.F) - Modified the calculation of dissipative heating to use fewer calculations. The code now gets "epsilon" directly from the subgrid tke scheme (iturb=1). (turbtke.F, solve.F) - Modified the way vertical advection of potential temperature and nondimensional pressure are calculated on the small timesteps; the calculations are now based on a mean lapse rate throughout the column, rather than the base-state field. The new method reduces artificial dissipation for base states that have small-scale details (e.g., inversions). (sound.F, sounde.F, soundns.F) - Removed the neweqts=2 option (which calculated condensation every Runge-Kutta step for use on the small timesteps). CM1 now applies condensation from the last big timestep on the small timesteps (similar to the method used in the WRF-ARW model). (FYI, this scheme helps prevent generation of spurious acoustics waves near clouds). (solve.F) - Modified the subgrid turbulence schemes (iturb=1,2,3) to use total density rather than base-state density. Very minor affect on results. (turbtke.F, solve.F) - Modified a few sections of code to do more accurate interpolation to w-points (i.e., full levels) when using vertically stretched grids. Only affects results when using severely stretched grids. (solve.F, sound.F, sounde.F, turbtke.F) - Updated the Weighted Essentially Non-Oscillatory (WENO) code based on the article by Shen and Zha (2010). Thanks to Jerry Straka (University of Oklahoma) for pointing-out this article. (adv.F) - Made a whole bunch of changes to the MPI communication routines to increase parallel efficiency. (many files) - Made a whole bunch of changes throughout CM1 to reduce the number of OpenMP calls to increase parallel efficiency for OpenMP (shared memory) runs. (many files) - Fixed a problem with calculation of total rainfall for the stats output file when using Thompson (ptype=3) or Morrison (ptype=5) microphysics schemes. Previously, surface rainfall was accidentally double-counted. This problem only affected the stats output file (cm1out_stats.dat), but not the "rain" fields in the 3d output files (such as cm1out_s.dat or cm1out.nc files). This problem did not affect any other output in any way. (thompson.F, morrison.F) - Fixed a problem with calculation of horizontal vorticity at the lowest model level when bcturbu=1. This problem only affected horizontal vorticity in output files (when output_vort=1); no affect on model results. (misclibs.F) - Fixed a problem when using surface drag (idrag=1) but no surface heat fluxes (isfcflx=0). The coding error previously caused CM1 to crash, or produce meaningless results, for this combination of settings. (solve.F) - Fixed a problem that could cause CM1 to crash when the model top was below 5-km and surface swaths were being calculated (output_sws=1). (solve.F) - Fixed a few minor bugs with stats output when no subgrid turbulence scheme is being used (iturb=0). (statpack.F, param.F) - Fixed a minor problem when the timestep is changed during a restart. (writeout.F) - Made a minor change to restart files to ensure that bit-for-bit exact results can be obtained for certain microphysics schemes. (writeout.F) - Fixed a minor problem with restart files when using parcel trajectories (iprcl=1). Bit-identical results are now possible. (solve.F, parcel.F) - Modified the parcel trajectory code to output pressure and potential temperature along trajectories. (parcel.F) - Modified the subroutines for writing/reading restarts files when using parcel trajectories (iprcl=1). Restart files are now much smaller in size when using parcels. (writeout.F)