
 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)

