
 CM1 Numerical Model, release 21.1  (cm1r21.1)
 24 March 2024

 Summary of changes.

-------------------------------------------------------------
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
-------------------------------------------------------------
1.  New options/features.

   -------------------
    cm1r21.0:

 - Officially added the "LES with Mesoscale Model" configuration, in which 
   an inner part of the domain (ie, an "inner fine mesh") uses large-eddy 
   simulation (LES) and all other parts of the domain use a mesoscale 
   model configuration in which a planetary boundary layer (PBL) 
   parameterization is used.  User must set cm1setup=4, and should turn 
   on eddy recycling.  See param17 and param18 sections of namelist.input 
   (and README.namelist) for more information.  

 - On a restart, users can now interpolate to a different model grid, which 
   can have higher (or lower) resolution.  No flags/options need to be set 
   by users; rather, if the code detects on a restart that the model grid 
   is different than it was in the previous simulation (which wrote the 
   restart file) then all data are interpolated onto the new grid 
   automatically.  See the "Changing resolution on a restart" section of 
   README.restart for more information.  

 - Added the option to use the "two-part" subgrid model with time-averages 
   (rather than only with spatial averages).  Useful for hurricane LES, among 
   other applications with horizontal heterogeneity.  See t2p_avg option in 
   namelist.input. 

 - Added new pre-configured cases in the "config_files" subroutine: 
      - Hurricane simulation using the "LES within mesoscale model" setup
        (hurricane_les_within_mm)
      - High-resolution, small-domain idealized LES with hurricane winds 
        at a coast (les_HurrCoast)  
      - Wind tunnel case with an immersed cube
        (les_ib_windtunnel) 

 - Added many more diagnostics into the azimuthal-averaging code, including: 
   max/min windspeeds; total upward/downward mass flux; fraction of grid 
   points that exceed certain thresholds (eg, 95% relative humidity, 40 dBZ
   reflectivity); hydrometeor fall velocities; PBL tendencies for radial and 
   tangential velocity components; turbulent fluctuations and variances 
   (e.g., <w'v'>, <v'v'>); and more. 
   (azimavg.F)

 - Added "domain location" as an output variable for simulations that use 
   the "adaptive moving domain" option.  (So, users easily see how far a 
   hurricane moved during a simulation, and plot its track, for example.) 

 - Added a namelist option ("outunits") so user can specify whether they 
   want the spatial variables in output files (eg, netcdf, grads) to be in 
   km or meters. 

 - Moved options for the large-scale (domain-average) nudging code to 
   namelist.input; see the param19 section. 

 - Moved options for immersed boundaries to namelist.input; see the param20 
   section.  

 - Moved options for the simple hurricane boundary layer setup to 
   namelist.input; see the param21 section.  

 - Added namelist options to use a gradual increase (i.e., "ramp up") of 
   the subgrid turbulence model at a beginning of LES runs when turbulence 
   has not yet developed.  See "ramp_sgs" and "ramp_time" in README.namelist.  

 - Added some text to the standard output that notifies users when large 
   arrays are being allocated.  Hopefully, this will make it clearer when 
   CM1 crashes because memory limits have been exceeded. 

 - Added the ability to write out fall velocities of hydrometeors from the 
   Thompson microphysics scheme. 


   -------------------
    cm1r21.0:

 - Added the option to use a convection parameterization.  Currently only the 
   "new Tiedtke" scheme is available (cuparam=1).  

 - Added the WSM6 microphysics scheme from "MMM shared physics" (ptype=7). 


-------------------------------------------------------------
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
-------------------------------------------------------------
2.  Changes, fixes, modifications, etc.

   -------------------
    cm1r21.0:

 - Updated the eddy recycling code, based on experiences using it for several
   applications.  Among other changes, the eddy recycler now captures/injects 
   perturbations from a time-average, rather than the full fields.  Also, 
   variables related to the eddy recycling code are now included in 
   namelist.input, for convenience (see param18 section of namelist). 

 - Added some diagnostics variables to output files called recy_cap and 
   recy_inj so users can see exactly where the "capture" and "injection" 
   regions are located when using the eddy recycling code. 

 - Fixed a problem with the code hanging when there aren't enough grid points 
   to do domain decomposition.  
   (param.F)

 - Fixed values of wspa and wspan in cm1out_diag files. 
   (domaindiag.F)

 - Fixed a divide-by-zero problem when lsnudge_ramp_time is set to zero. 
   (solve1.F) 

 - Tried to fix a sneaky problem where the adaptive time stepping algorithm 
   will gradually ramp-down the time step to a very, very small value.  
   Hopefully, this bug is now fixed. 
   (misclibs.F)

 - Fixed a problem that would sometimes cause the model to crash when using 
   the isnd=17 option (ie, when ignoring the wind profile in input_sounding 
   files).  
   (base.F)


   -------------------
    cm1r21.0:

 - Updated the Makefile; noted which options are preferred for NCAR's casper 
   and derecho computers; updated default settings for the gfortran and Cray
   fortran compilers.

 - Updated the NSSL microphysics code.  See the README.NSSLmp file for more 
   information.  Thanks to Ted Mansell of NOAA/NSSL. 

 - Updated the P3 microphysics code to the WRFv4.5.2 version.

 - Updated the MYNN PBL and surface-layer codes to the WRFv4.5.2 versions. 

 - Updated the YSU PBL and "revised WRF" surface-layer codes to the "MMM shared
   physics" versions. 

 - Modified the RRTMG radiation codes to use the same values for physical 
   constants (eg, c_p, R, g) as the CM1 solver. 

 - Fixed a problem interpolating ozone to model levels in the RRTMG radiation 
   codes.  (Thanks to Osamu Miyawaki of NSF-NCAR/ASP for pointing out this 
   problem.) 
   (module_ra_rrtmg_lw.F)

 - Fixed a major problem with the apmasscon=1 option (that adjusts the mean 
   pressure to ensure conservation of total mass) when using a large number 
   of grid points (roughly, > 10^9).  Double precision is now used in the 
   calculation to prevent the solver from blowing up with very large domains.
   (solve2.F)

 - Fixed a minor distributed-memory parallelization problem when using TKE 
   advection with the MYNN PBL code. 
   (solve2.F, cm1.F)

 - Fixed a very minor bug with the initialization of viscosity/diffusivity when 
   using DNS and some LES sgs models. 
   (cm1.F)

 - Fixed a very minor bug with the initialization of effective radii for cloud,
   ice, and snow when using RRTMG. 
   (cm1.F) 

 - Made several improvements to the TC-tracking algoritm (do_adapt_move=true).
   It is now based on the centroid of a smoothed surface-pressure field, and 
   the adaptive movement code now does a better job of keeping the TC center 
   in the middle of the domain. 
   (azimavg.F, cm1.F)

 - Fixed several problems with netcdf-format restart files (restart_format=2).
   (writeout_nc.F)

 - Fixed a bug when writing out variables from the two-part subgrid turbulent 
   model (sgsmodel=3,4); now only the actual levels are written (as opposed to the 
   entire domain, where most of the data is undefined/zero).  
   (writeout.F)

 - Fixed several bugs for LES with terrain. 
   (turb.F, turbtend.F, solve1.F)

 - Fixed a minor bug with the vertical diffusion of subgrid TKE for sgsmodel=1,3,4
   when using doimpl=1 (vertically implicit diffusion).
   (turbtend.F)

 - Fixed some bugs associated with shared-memory (OpenMP) parallelization.
   Also, sped-up OpenMP parallelization in a few places. 

 - Fixed a bug with NBA subgrid turbulence (sgsmodel=5,6) when moisture is 
   present. 
   (turb.F)

 - Fixed a few minor bugs with some "domain" LES diagnostics.
   (domaindiag.F, turb.F)

 - Fixed a few bugs with the "LES within mesoscale model" option (cm1setup=4).

 - Modified the code that calculates and writes azimuthally averaged fields 
   so that much less memory is used.  A similar change was made to the iinit=7
   option (modified Rankine initial vortex) to also use less memory. 
   (azimavg.F, cm1.F, init3d.F)

 - Fixed a few bugs associated with interpolating to a new grid on a restart. 
   Unfortunately, this exercise has exposed several flaws with the format of 
   restart files in CM1; an overhaul of restart files is planned for the next 
   major upgrade of CM1. 


