PALM source code change log 2009 - 2012

The following table documents all changes to the PALM repository from 2009-2012.

Entries in the fifth column specify the type of the change: change of existing code (C), new code (N) or bugfix (B). More detailed information about the changes may sometimes be found in the header comment lines of the respectively changed routines.

Date Author svn
Revision
Last
Release
Type Description

05/12/12

FH

r1076

3.9

B

Bugfixes in data_output_2d and data_output_3d. Output of 3d and 2d data of ql is now possible with cloud_droplets = .T. .

02/12/12

FH

r1065

3.9

B

Bugfix in write_3d_binary. Writing of nr*, qr* should only be possible if cloud_physics = .TRUE. .

29/11/12

TR

r1071

3.9

N, C, B

New:
Ventilation effect for evaporation of large cloud droplets included. (lpm_droplet_condensation)

Changed:
Removed unnecessary calculations in lpm_droplet_condensation.

Calculation of droplet growth due to collisions now uses collision-coalescence formulation proposed by Wang in case of Hall and Wang kernel. (lpm_droplet_collision)

Bugfixes:
Collision efficiencies for Hall kernel should not be negative. (lpm_collision_kernels)

Surface tension for calculation of cloud droplet condensation/evaporation using Rosenbrock method corrected. (lpm_droplet_condensation)

Check for unreasonable results included in calculation of Rosenbrock method since unreasonable results may occur if external conditions significantly change. For the same reason the first internal time step in Rosenbrock method should be < 1.0E02 in case of evaporation. (lpm_droplet_condensation)

Message identifiers added. (lpm_droplet_collision)

28/11/12

BM

r1069

3.9

C, B

Bugfixes:
coupled_mode was always mpi2 in mrun, typos removed in mrun, transfer of the nc2vdf tools added in mbuild (mrun, mbuild). The usage of topography in a coupled ocean run is now possible (init_grid.f90).

Changed:
It is now allowed to use topography in combination with cloud physics. This combination, however, has not been tested sufficiently so far.

26/11/12

BM

r1067

3.9

C, N

New:
Two scripts have been added to allow for conversion of NetCDF files to VAPOR's vdf format (nc2vdf.config, batch_nc2vdf).

Changed:
nc2vdf script has been improved significantly. It is possible to run the script interactively or in batch mode on the uv system. A user manual will follow soon.

22/11/12

FH

r1065

3.9

B, C, N

Bugfixes:
It is not allowed to use cloud_scheme = 'seifert_beheng' without precipitation = .TRUE. (check_parameters).

Boundaries of ql-cross-sections in case of cloud_scheme = 'seifert_beheng'] adjusted (data_output_2d).

Changes in the two-moments cloud physics scheme (cloud_scheme = 'seifert_beheng':
Sedimentation of rain according to Stevens and Seifert (2008) has been implemented. Monotonicity of the sedimentation process is insured by limiting the slopes of qr and nr. The limiter can be steered with the parameter limiter_sedimentation. The default is limiter_sedimentation = .TRUE.. Therefore, the Courant number of the sedimentation process can be greater than one. The Courant number can be controlled by c_sedimentation (default: c_sedimentation = 2.0) (microphysics, init_cloud_physics, modules, parin, read_var_list, write_var_list).

Turbulence effects on autoconversion and accretion according to Seifert, Nuijens and Stevens (2010) have been implemented and can be activated with turbulence = .TRUE. (microphysics, diffusion_e, init_3d_model, modules, parin, read_var_list, time_integration, write_var_list).

The number density of cloud droplets can be adjusted with nc. The default (nc = 70.0E6 ) is applicable for marine conditions (parin, read_var_list, write_var_list).

Attention:
This version does not allow to read restart files created with earlier versions!

16/11/12

SR

r1056

3.9

B, C

Bugfix for multigrid-solver: all ghost points have to be used for allocating p3. (poismg) Arrays p2, f2, and f2_l in the multigrid-solver changed from allocatable to automatic. (init_pegrid, poismg)

13/11/12

FH

r1053

3.9

C,N

New:
Two-moment cloud physics (Seifert and Beheng, 2006) have been implemented. Therefore, two new prognostic equations (nr: rain drop number density; qr: rain water content) and associated basic output quantities are introduced (advec_ws, average_3d_data, boundary_conds, check_parameter, data_output_2d, data_output_3d, flow_statistics, init_3d_model, init_cloud_physics, modules, netcdf, parin, prognostic_equations, read_3d_binary, read_var_list, sum_up_3d_data, swap_timelevel, time_integration, user_actions, write_3d_binary, write_var_list). Microphysical tendencies affecting the prognostic equations of liquid water potential temperature, specific humidity, rain drop number density and rain water content are computed in the new module microphysics (additional changes: calc_liquid_water_content, Makefile). According to the CFL criterion, the timestep has to be reduced in case of precipitation (timestep).

The new cloud physics scheme can be used with humidity = .TRUE. and cloud_physics = .TRUE.. It is the the default value of the new steering parameter cloud_scheme = 'seifert_beheng' (cloud_scheme = 'kessler' allows the use of the former cloud physics scheme). It is not allowed to use the new cloud physics without precipitation = .TRUE. (PA0363).

The ventilation effect on evaporation of rain drops according to Seifert (2008) has been implemented and can be activated with ventilation_effect.

Drizzle of raindrops according to Heus et al. (2010) has been implemented and can be activated with drizzle.

Attention:
This version does not allow to read restart files created with earlier versions!

09/11/12

BM

r1046

3.9

C

Scripts and utilities have been put under GPL. Tool for conversion of NetCDF to VAPOR has been added.

05/11/12

SR

r1041

3.9

C

A 2d domain decomposition is used by default from now on. So far, on some machines (those assumed to have a slow network) a 1d decomposition was the default. As before, users can change the default setting with parameters npex and npey.

22/10/12

SR

r1036

3.9

C

Starting with version 3.9, the PALM code has been put under the GNU General Public License (v3). This affects all PALM FORTRAN files, except the two FFT-subroutines singleton.f90 and temperton_fft.f90. See http://www.gnu.org/licenses/ about the detailed license conditions.

Other utility routines and scripts provided with the PALM download will soon be put under the GPL too.

21/10/12

ML

r1032

3.8

C

mask locations determined based on scalar positions (init_masks)

save memory by not allocating pt_2 in case of neutral = .T. (init_3d_model, swap_timelevel; see also r940)

minor reformatting (check_for_restart)

19/10/12

SR

r1031

3.8

N

netCDF4 without parallel file support implemented. It can be activated with netcdf_data_format = 3 or 4. An additional cpp-option "-D__netcdf4_parallel" is required to switch on the parallel file support. (check_open, check_parameters, close_file, data_output_mask, data_output_2d, data_output_3d, header, init_masks, modules, netcdf)

17/10/12

BM

r1029

3.8

N

A watchdog tool for jobs running at HLRN has been added. It can be started by typing hlrn_watchdog start <your username on hlrn> and stopped with hlrn_watchdog stop. The watchdog will open a small window and displays all currently queued jobs at HLRN in Hannover and Berlin. If no jobs are queued, no window will show up. The update frequency is 10 minutes. The watchdog will also inform you about terminated jobs and status changes from idle to running.

Note:
Before starting the watchdog for the first time, import the window rule, which can be found in ...trunk/SCRIPTS/hlrn_watchdog.kwinrule, to the window behavior settings of your systemsettings. You can find this menu by typing systemsettings into a shell. In classic tree view you can add the rule following "Workspace Appearance and Behavior" --> "Window Behavior" --> Window Rules" --> "Import". After installing the rule, the watchdog will remember the workspace and coordinates of the window.

15/10/12

MS

r1027

3.8

B

Bugfix in calculation indices k_mm, k_pp in accelerator version (advec_ws)

07/10/12

ML

r1025

3.8

B

Swap indices of mask for ghost boundaries (init_3d_model)

06/10/12

ML

r1024

3.8

B

Added subsidence.o to the dependencies of header.o (Makefile)

28/09/12

SR

r1019

3.8

C

The non-optimized version of prognostic equations (prognostic_equations_noopt) has been removed from the code. (advec_ws, check_parameters, prognostic_equations, time_integration)

27/09/12

SR

r1015

3.8

N,C

New:
Starting with code changes required for GPU porting. OpenACC statements for using NVIDIA GPUs added. New subroutine versions for accelerators (with names ..._acc) based on the vector versions. For further details on the ongoing GPU activities see here.
(advec_ws, buoyancy, check_parameters, coriolis, cpu_statistics, diffusion_s, diffusion_u, diffusion_v, diffusion_w, diffusivities, init_grid, modules, palm, prandtl_fluxes, production_e, prognostic_equations, surface_coupler, time_integration, wall_fluxes)

Changed:
Adjustment of mixing length to the Prandtl mixing length at first grid point above ground removed. Parameter adjust_mixing_length is not available any more. (check_parameters, diffusion_e, diffusivities, header, init_1d_model, modules, parin, read_var_list, write_var_list)

mask array is set to zero for ghost boundaries. (init_3d_model)

20/09/12

SR

r1010

3.8

N

Pointer free version can be generated with cpp switch -D__nopointer. This is to prepare for porting the code to GPU. (advec_s_bc, advec_s_pw, advec_s_up, advec_ws, buoyancy, diffusion_e, diffusion_s, init_3d_model, modules, swap_timelevel)

19/09/12

TR

r1007

3.8

B,C

Bugfixes:
Missing calculation of mean particle weighting factor for output added. (data_output_2d, data_output_3d, data_output_mask, sum_up_3d_data)

Calculation of mean particle radius for output now considers the weighting factor. (data_output_mask)

Calculation of sugrid-scale buoyancy flux for humidity and cloud droplets corrected. (flow_statistics)

Factor in calculation of enhancement factor for collision efficencies corrected. (lpm_collision_kernels)

Calculation of buoyancy production now considers the liquid water mixing ratio in case of cloud droplets. (production_e)

Changed:
Calculation of buoyancy flux for humidity in case of WS-scheme is now using turbulent fluxes of WS-scheme. (flow_statistics)

Calculation of the collision kernels now in SI units. (lpm_collision_kernels)

14/09/12

SR

r1003

3.8

C

Subdomains must have identical size, i.e. grid_matching = "match" not allowed any more. Parameter grid_matching removed. (calc_spectra, check_parameters, header, init_pegrid, init_3d_model, modules, parin, poisfft, pres, read_var_list, transpose, write_var_list)

Some obsolete variables removed. (init_advec, modules)

13/09/12

SR

r1001

3.8

C

All parts concerning leapfrog timestep scheme and upstream-spline advection scheme removed from the code.
(Makefile, check_parameters, diffusion_e, diffusion_s, diffusion_u, diffusion_v, diffusion_w, header, init_advec, init_pegrid, init_1d_model, init_3d_model, modules, parin, prognostic_equations, read_var_list, read_3d_binary, run_control, swap_timelevel, time_integration, timestep_scheme_steering, timestep, write_var_list, write_3d_binary, removed routines: advec_s|u|v|w_ups, asselin_filter, spline_x|y|z)

Reading of dt_fixed from restart file removed. (read_var_list)

Attention: This version does not allow to read restart files created with earlier versions!

07/09/12

SR

r996

3.8

C

Parameter use_prior_plot1d_parameters removed. (modules, parin)

Little reformatting. (boundary_conds, check_parameters, init_masks, init_3d_model, init_grid, init_1d_model, poismg)

06/09/12

BM

r995

3.8

B

Bugfix in parameter file check: -D_parallel -> -D__parallel (mrun).

05/09/12

FH

r992

3.8

C

Removal of the informative messages PA0352 and PA0353 in netcdf.f90.

21/08/12

FH

r983

3.8

C, B

Bugfix in netcdf.f90. Minor changes in palmplot (timeseries.ncl, cross_sections.ncl, spectra.ncl).

09/08/12

BM

r982

3.8

N,B,C

New: new tool img2stereo has been added and can be used to generate anaglyph stereo images.

Changes: new codec available in img2video (xvid, ffv1 - which supports lossless encoding). High quality options have been enabled (option -h).

Bugfixes: some typos have been removed.

(img2stereo, img2video, compile_tutorial, release_tutorial, advec_s_up.f90)

09/08/12

JF

r979

3.8

N,C,B

New:
Roughness length for scalar quantities z0h can be set by the new inipar-parameter z0h_factor. (average_3d_data, check_parameters, data_output_2d, header, init_1d_model, init_3d_model, init_masks, modules, parin, prandtl_fluxes, read_3d_binary, read_var_list, sum_up_3d_data, write_3d_binary, write_var_list)

An inflow damping zone for the potential temperature has been implemented for the case of non-cyclic lateral boundaries. It is steered by new inipar-parameter pt_damping_width and pt_damping_factor. (check_parameters, header, init_3d_model, modules, parin, prognostic_equations, read_var_list, write_var_list)

Neumann boundary conditions can be choosed at the outflow boundary. (check_parameters, init_pegrid, modules, poismg, boundary_conds)

Changes:
Damping along horizontal directions near the outflow boundary in case of non-cyclic boundaries is removed. Respective control parameters km_damp_max, outflow_damping_width have been removed. (check_parameters, diffusion_u, diffusion_v, diffusion_w, header, init_3d_model, modules, parin, prognostic_equations, read_var_list, timestep, write_var_list)

Phase velocities averaged horizontally along the outflow boundary are now used for the radiation boundary condition. The earlier used local values were found to create gravity waves in many situations. (boundary_conds, init_3d_model, modules)

Bugfixes:
Set wall_flags_0 for inflow boundary.(init_grid)

First thread index changed for WS-scheme at the inflow. (init_pegrid, prognostic_equations)

nzb_max is set to nzt at non-cyclic lateral boundaries. (init_grid)

26/07/12

SR

r964

3.8

C

Old profil-parameters (cross_xtext, cross_normalized_x, etc. ) and respective code removed. (check_open, check_parameters, close_file, data_output_profiles, data_output_spectra, header, modules, parin)

Reformatting. (netcdf)

Append feature removed from unit 14. (check_open)

Samll adjustment in tutorial. (runs_with_mrun)

24/07/12

FH

r958,
r959,
r961

3.8

C, B

Minor changes and bugfixes in palmplot and netcdf.90. (profiles.ncl, .ncl.config.default, netcdf.f90)

20/07/12

RH

r957

3.8

C

png output of NCL scripts was adjusted for usage of NCL versions higher than 5.2.1. (cross_sections.ncl, timeseries.ncl, profiles.ncl, spectra.ncl)

20/07/12

BM

r954,
r955

3.8

N,B

Added and/or updated several tutorial presentations. Modified release_tutorial (files are now transfered to the trac system).

19/07/12

FH

r951

3.8

C

Palmplot pr is changed to use cross_profiles as a pattern for plotting profiles. Accordingly, netcdf.f90 is changed to write cross_profiles, profile_rows and profile_columns in the header of the NetCDF file. (profiles.ncl, .ncl.config.default)

17/07/12

BM

r945,
r946

3.8

N,
B

Added and/or updated several tutorial presentations. Removed typo in shell script release_tutorial.

09/07/12

SR

r940

3.8

N

Prognostic equation for temperature can be switched off with new inipar parameter neutral in order to spare cpu time in case of simulating pure neutrally stratified flows. This will also switch off calculation of all buoyancy related terms. (check_parameters, modules, header, parin, production_e, prognostic_equations, read_var_list, write_var_list)

B

Bugfix: special handling of tri-array as an argument in calls of tridia_1dd routines (only used in case of 1d-domain decompositions) switched off because it caused segmentation faults with Intel 12.1 compiler. (poisfft)

08/06/12

BM

r931

3.8

C

Enabled check of internal variable max_pr_user in the namelist file check routine (check_namelist_files.f90, user_parin.f90). The sleep commands in mrun have been disabled for the silent mode (-v option) (mrun).

06/06/12

SR

r927

3.8

N

Masking method can be switched on for multigrid-solver using inipar parameter masking_method. This feature has been implemented because some topography data have caused job aborts which are probably due to wrong boundary condition settings in the multigrid-solver. This problem will be adressed in a future revision. (header.f90, init_grid.f90, modules.f90, read_var_list.f90, write_var_list.f90).

06/06/12

BM

r924

3.8

B

Bugfix: misplaced preprocessor directive in check_parameters (check_parameters.f90).

05/06/12

BM

r920

3.8

B,C

Bugfixes: the parameter file check does now work with "-b" mrun option and with multiple input files. (mrun, mbuild, .mrun.config.lcxe6)

The mrun option -Z can now be used to switch off the combine_plot_fields routine (used for (2D and 2D data) at the end of the simulation. This is necessary for runs that produce a huge amount of output data. As combine_plot_fields runs in serial mode, all other PEs will remain idle, which is undesirable for large PE numbers. Furthermore the execution of combine_plot_fields might take several hours. For large output files it will thus be more adeqauate to run combine_plot_fields in a serial batch job. Currently the -Z option does not create such an batch job. The -Z option is also available in the mrun GUI (mrun, mainwindow.cpp, mainwindow.ui)

30/05/12

BM

r915

3.8

N

First LaTeX source code for the new tutorial (contains the PALM seminar presentations) added to new directory trunk/TUTORIAL. The source code can be compiled via the new shell script compile_tutorial that resides in trunk/SCRIPTS. The script creates three versions of each LaTeX file: 1) a pdf presentation with step-by-step layout (to be placed in trunk/TUTORIAL/LECTURE), handouts (trunk/TUTORIAL/HANDOUT) and a web version that can contain additional comments by authors (trunk/TUTORIAL/WEB). The latter is embedded in to the trac-based tutorial. (New folder: trunk/TUTORIAL, new scripts: compile_tutorial, release_tutorial).

02/05/12

BM

r892

3.8

C,N,B

  • Adapted for lcxe6 (hexagon at Bergen, Norway), removed former machine lcxt4. (mrun, subjob, mbuild, mrun.config.lcxe6).
  • Bugfix in the parameter file check (check_parameters, mrun, mbuild).
  • New .mrun.config parameter %login_init_cmd introduced, which contains calls, which are executed at the beginning of ssh sessions and before the module calls. This is currently used on lcsgih, lcsgib, lcxe6 and lcflow and usually needed to initialize the shell or swap modules. Note, that every space character has to be replaced by ":" and exclude $, ; etc. by adding "\".
  • The .mrun.config* files have been revised and include now a revision tag in the first line. (.mrun.config*).

Please note: the compilation and execution of PALM from r892 on lcsgih, lcsgib, lcxe6 and lcflow requires the new .mrun.config setting %login_init_cmd. Please find the respective setting in the provided configuration files.

20/04/12

MS

r888

3.8

C

IBITS() calls with identical arguments are replaced by a temporary variable. (advec_ws)

13/04/12

SR

r880

3.8

B

Bugfix: preprocessor statements for parallel execution added. (poismg, surface_coupler)

Variables gathered_size and subdomain_size moved to module control_parameters in order to avoid errors when compiled in serial mode. (modules)

03/04/12

MS

r877

3.8

B

Bugfix: Avoid divisions by zero in case of using a 'neumann' boundary condition for the pressure at the top of the model domain. (poisfft)

02/04/12

MG

r875

3.8

B

Bugfix in case of dirichlet inflow bc at the right or north boundary

29/03/12

TR

r872

3.8

B

Bugfix: lpm depends on modules. (Makefile)

29/03/12

TR

r870

3.8

C

Adaption of Makefile_check to new lpm subroutines. (Makefile_check)

28/03/12

SR

r866

3.8

C

Use only 60% of the geostrophic wind as translation speed in case of Galilean transformation (see inipar parameter galilei_transformation) and use_ug_for_galilei_tr = .TRUE. in order to mimimize the timestep. (check_parameters)

B

Bugfix for timestep calculation in case of Galilei transformation. (global_min_max, modules, timestep)

27/03/12

MG

r864

3.8

B

In case of ocean and dirichlet bc for u and v at the ground dzu_mg and ddzu_pres where not defined correctly for k=1. The bug appeared with revision 843.

26/03/12

MS

r863

3.8

C

WS-scheme is now available in combination with topography. Near vertical and horizontal walls the order of the applied advection scheme is degraded using a flag method. Furthermore, a divergence correction is applied to overcome numerical instabilities near walls. The applied numerical dissipation for the second order scheme changed. Function diss_2nd() removed. Degradation of the order of the applied scheme is also steered by flags for the lateral boundaries. (advec_ws, check_parameters, init_grid, modules)

Please note : Due to small changes in the numerical solution with regard to the advection processes, there is no guarantee that simulations carried out by previous revisions of PALM are reproducible. However, no changes in the general features of previous simulations are to be expected.

Amplitude of the imposed temperature anomaly changed (concerning scalar advection tests). (init_pt_anomaly)

Version number changed from 3.8 to 3.8a. (palm)

B

Bugfix: Outflow boundary conditions also work for vector architectures. Bugfix: Vertical advection of w at the first prognostic grid level corrected.

21/03/12

MS

r858

3.8

C

Default compiler on ibmh changed. (mrun)

20/03/12

MS

r857

3.8

B

Bugfix: Return value of Function diss_2nd always returns zero. (advec_ws)

15/03/12

SR

r851

3.8

B

Bugfix: resetting of particle_mask and tail mask moved from routine lpm_exchange_horiz to routine lpm (end of sub-timestep loop). (lpm, lpm_exchange_horiz)

15/03/12

SR

r849

3.8

C

Original routine advec_particles split into several new subroutines and renamed lpm.
(Makefile, lpm_droplet_collision, lpm_droplet_condensation, init_3d_model, modules, palm, read_var_list, time_integration, write_var_list, new: lpm, lpm_advec, lpm_boundary_conds, lpm_calc_liquid_water_content, lpm_data_output_particles, lpm_droplet_collision, lpm_drollet_condensation, lpm_exchange_horiz, lpm_extend_particle_array, lpm_extend_tails, lpm_extend_tail_array, lpm_init, lpm_init_sgs_tke, lpm_pack_arrays, lpm_read_restart_file, lpm_release_set, lpm_set_attributes, lpm_sort_arrays, lpm_write_exchange_statistics, lpm_write_restart_file, user_lpm_advec, user_lpm_init, user_lpm_set_attributes, removed: advec_particles, init_particles, particle_boundary_conds, set_particle_attributes, user_advec_particles, user_init_particles, user_particle_attributes)

07/03/12

BM

r846

3.8

B

Bugfixes in the namelist file check (namelist_file_check.f90, Makefile_check, check_parameters.f90)

29/02/12

MG

r843

3.8

C

Redefined first u-level (k=0) in ocean in case of bc_uv_b='dirichlet'

28/02/12

BM

r842

3.8

B

Bugfix: adjustments for check_namelist_parameters in mrun. The routines random_function and exchange_horiz / exchange_horiz_2d are now included in the parameter file check.

22/02/12

SR

r835

3.8

B

Bugfix: array 'diss' must be used in case of Wang kernel only. (advec_particles, lpm_collision_kernels)

22/02/12

SR

r831

3.8

N

The growth equation for water droplets due to condensation now considers the dependency of water thermal conductivity from temperature (from Rogers and Yau, Table 7.1), as well as the dependency of water vapor diffusivity from temperature and pressure (after Hall und Pruppacher, 1976). This may effect condensation/evaporation considerably. (advec_particles)

21/02/12

SR

r828

3.8

C

Optimization of collision kernels. Collision efficiency tables can be calculated once at simulation start for defined radius (and dissipation) classes instead of re-calculating them at every time step and for the particle ensemble in every grid box (see collision_kernel = 'hall_fast' or 'wang_fast' ). For this purpose the particle feature 'color' is renamed 'class'. New parpar-parameters radius_classes and dissipation_classes are introduced in order to define the resolution of the collision table. The optimized kernels speed-up simulations significantly. (Makefile, advec_particles, check_parameters, data_output_dvrp, header, init_particles, lpm_collision_kernels, modules, package_parin, set_particle_attributes)

Lower limit for droplet radius changed from 1.0E-7 to 1.0E-8. (advec_particles)

Complete re-formatting of collision code (including changes in names of variables, modules and subroutines). (advec_particles, lpm_collision_kernels)

B

Bugfix: transformation factor for dissipation used in the Wang collision kernel changed from 1.0E5 to 1.0E4. (advec_particles, lpm_collision_kernels)

20/02/12

RH

r827

3.8

B

Bugfix: Make sure that every time step can be plotted even if it has a very small time increment. (cross_sections.ncl, profiles.ncl, timeseries.ncl, spectra.ncl)

19/02/12

SR

r825

3.8

N

Droplet growth by condensation may include curvature and solution effects. These are steered by the new inipar-parameter curvature_solution_effects. The droplet growth equation by condensation is solved with the Rosenbrock method for stiff o.d.e's with monitoring local truncation error to adjust stepsize (see Numerical recipes in FORTRAN, 2nd edition, p. 731). (advec_particles, check_parameters, header, init_cloud_physics, init_particles, modules, parin, read_var_list, write_var_list)

Mean, minimum, and maximum particle radius added as output quantity to the particle time series. (data_output_ptseries, modules)

C

Initialisation of temporary particle array for resorting removed. (advec_particles)

Particle attributes speed_x|y|z_sgs renamed rvar1|2|3. This is required because these attributes are now used for two different applications (i.e. the SGS-velocity model and the Rosenbrock method for integrating the droplet growth equation). (advec_particles, data_output_ptseries, modules, init_particles, particle_boundary_conds)

Routine wang_kernel and respective module renamed lpm_collision_kernels. Package (particle) parameters wang_collision_kernel and turbulence_effects_on_collision replaced by new particle-parameter collision_kernel. (Makefile, advec_particles, check_parameters, diffusion_e, init_3d_model, modules, package_parin, time_integration, new: lpm_collision_kernels, removed: wang_kernel)

16/02/12

BM

r823

3.8

B

Bugfix: replaced $localhost by $host in the ENVPAR file, which is used for the namelist file check.

14/02/12

BM

r821

3.8

B

Bugfix: typo removed in mrun (\$queue instead of $queue). The standard queue for lcsgih/lcsgib is now set to testq, since bigq is not available on the ice1 system.

08/02/12

BM

r819

3.8

B

Bugfix: namelist file check has been re-enabled after several bugs have been solved. Topography can now be taken into account. Nevertheless there still might be some bugs (please report!). User code is checked within the namelist file check. Compiler errors might occur when advanced user code is used (use the __check preprocessor directive to exclude parts of the user code from the check). The mrungui has been adapted to the new option -z. (mrun, mbuild, init_grid, Makefile_check, mainwindow.cpp, mainwindow.ui)

03/02/12

BM

r815

3.8

B

Bugfix: namelist file check (within mrun) has been temporary disabled, since several problems have been reported. Major revisions of the procedure are needed. The namelist file check will be reactivated as soon as all problems have been solved.

31/01/12

BM

r812

3.8

B

Bugfix: utility compilation in mbuild caused errors with several blocks on localhost.
Bugfix: readjusted the waiting time for the mrun GUI window to finish to 1h.

30/01/12

BM

r810

3.8

B

Bugfix: The logical preprocessor operators .NOT. and .AND. cannot be used with the PGI compiler. The operators have been replaced with ! and &&, respectively and should now work with any fortran preprocessor.
Bugfix: mrungui did wait for only 20 min for the mrun window to finish actions, which is not sufficient for interactive jobs.

25/01/12

BM

r808

3.8

N

New: the utility program check_namelist_files has been implemented. It is used by mrun to check the parameter files (e.g. *_p3d, *_p3df) before the batch job is submitted/the interactive job is started. The source code of palm has thus been modified by means of the pre-processor directive __check, which is only used for the compilation of the check_namelist_files program. Basically the directive is used to exclude the MPI-functions for compilation with a serial compiler (on the local host). Note: the namelist file check is currently not possible for coupled runs and for initializing_actions='cyclic_fill'! A new mrun option '-z' has been implemented to switch off check_namelist_files program (PALM will of course still check the namelist files when the simulation starts) (Makefile_check, mbuild, mrun, check_namelist_files, init_pegrid, check_parameters, init_masks, poisfft, poisfft_hybrid, local_stop, init_grid, check_open, modules).

17/01/12

TR / BM

r805

3.8

B

Bugfix: moved collective_wait from parallel branch (modules)

16/01/12

TR

r803

3.8

B

Bugfix for calculation of vpt in case of cloud droplets. (compute_vpt)

10/01/12

MS

r801

3.8

B

Bugfix in calculation of turbulent fluxes in advec_ws concerning OpenMP parallelization. (advec_ws, flow_statistics, modules)

21/12/11

TR

r799

3.8

N

Wang collision kernel has been implemented and can be used by setting the new parameter wang_collision_kernel=.T.. When using the Wang collision kernel it is now possible to take the turbulence effects on droplet collisions into account by setting the new parameter turbulence_effects_on_collision=.T. (advec_particles. wang_kernel)

B

Bugfix for calculation of vpt in case of cloud droplets (compute_vpt)

Bugfix for calculation of pt_p in case of cloud droplets (interaction_droplets_ptq)

Bugfix for calculation of ec in effic (wang_kernel)

29/11/11

SR

r790

3.8

N

Preliminary adjustments for implementing the Wang collision kernel. So far, it only works with a modified version of advec_particles, which is not in the repository. (Makefile, diffusion_e, init_3d_model, modules, package_parin, time_integration, new: wang_kernel)

B

Bugfix: Calculation of mean particle radius for output now considers the weighting factor. (data_output_2d, data_output_3d, sum_up_3d_data)

Bugfix: Output of ql for restarts also in case of cloud droplets. (write_3d_binary)

28/11/11

RH

r787

3.8

B

Bugfix: init_advec has to be called in each case, not only for initial runs but also for restart runs (init_3d_model)

28/11/11

SR

r785

3.8

N

Scalar quantities (pt, q, sa) can be excluded from Rayleigh damping by setting new parameter scalar_rayleigh_damping = .FALSE. (init_3d_model, modules, parin, prognostic_equations)

B

Bugfix: Character length extended to 1000 in order to account for long lines in the configuration file. (interpret_config)

27/11/11

SR

r784

3.8

B

Bugfix for make options setting (e.g. -j4). When calling mbuild for multiple hosts, the value given for mopts on the previous host (in the .mrun.config file) was used in case that no mopts value gas been given for the current host. (mbuild)

23/11/11

RH

r783

3.8

B

Bugfix: setting of font_size_legend now changes the font size of the legends for combined and overlaid plots as well as for plots of different files in profile plots. (profiles.ncl)

15/11/11

RH

r782

3.8

B

Bugfix: setting of font_size_legend now changes the font size of the legend in profile plots. (profiles.ncl, .ncl.config.default)

10/11/11

SR

r780

3.8

N

Bugfix for r778: Misplaced error message moved to the right place (init_pegrid)

07/11/11

JF

r778

3.8

N

Further coarsening on PE0 is now possible for the multigrid pressure solver if the collected grid level has more grid points than the subdomain of each PE. (modules, init_pegrid, pres, poismg)

31/10/11

RH

r776

3.8

B

Output of lpt_av required the adjustment of binary_version. (read_3d_binary, write_3d_binary)
Adjustment of palmplot for the usage on DKRZ (ibmh) (palmplot)

27/10/11

ML

r774

3.8

B

Bugfix for prescribed u,v-profiles. (check_parameters)

27/10/11

RH

r771

3.8

N

Output of liquid water potential temperature lpt as cross section, volume and masked data in case of cloud_physics=.T. enabled. See also data_output and data_output_masks. (average_3d_data, check_parameters, data_output_2d, data_output_3d, data_output_mask, init_masks, modules, netcdf, read_3d_binary, sum_up_3d_data, write_3d_binary)

26/10/11

RH

r770

3.8

N/B

New: In case of topography the fields zusi and zwwi which contain the topography information can now be plotted. (cross_sections.ncl)
Bugfixes: It is now possible to plot initial data (time=0h) in case that no other time steps are in the file. (cross_sections.ncl, profiles.ncl, timeseries.ncl spectra.ncl)

14/10/11

SR

r767

3.8

N

Flow field initialization with given (e.g. measured) profiles implemented. Profile data for u-,v-velocity components + respective heights are given with new inipar-parameters u_profile, v_profile, and uv_heights. Final profiles are calculated from these given profiles by linear interpolation. (check_parameters, header, init_3d_model, modules, parin)

C

ug,vg replaced by u_init,v_init as the Dirichlet top boundary condition. (boundary_conds)

B

Bugfix: dirichlet_0 condition moved from init_3d_model to check_parameters. (check_parameters, init_3d_model)

10/10/11

SR

r765

3.8

B

Bugfix concerning opening of 3D files in restart runs in case of netCDF4. (check_open)

05/10/11

MS

r761

3.8

B

Bugfix: Avoid divisions by zero in case of using a 'neumann' bc for the pressure at the top of the model domain. (poisfft)

15/09/11

SR

r759

3.8

N

The number of parallel I/O operations can be limited with new mrun-option -w. See doc/app/iofiles for a short comment on that. (advec_particles, data_output_2d, data_output_3d, header, init_grid, init_pegrid, init_3d_model, modules, palm, parin, write_3d_binary)

C

mrun option -T is obligatory. (mrun)

B

Bugfix: No zero assignments to volume_flow_initial and volume_flow_area in case of normal restart runs. (init_3d_model)

Arrays u_0, v_0 are initialized. This is just to avoid access of uninitialized memory in exchange_horiz_2d, which causes respective error messages when the Intel thread checker (inspector) is used. (production_e)

Bugfix for limitation of t* in case of low values of u*. In the past, this bug has caused **** output in the respective t* column of the run control file. (prandtl_fluxes)

15/09/11

RH

r758

3.8

B

Bugfixes: Assignment of norm_t leads now to a correct setting of the range of the x-axis (timeseries.ncl). The plot of cross sections of other variables is avoided when vector plot is turned on (vector=1) (cross_sections.ncl).

29/08/11

CH

r757

3.8

C

Initiating restart-run: adjustment of the path at IMUK (mrun)

29/08/11

BW

r755

3.8

N

Adjustments for ForWind cluster in Oldenburg (lcflow)

18/08/11

ML

r746

3.8

B

'wiki' inserted into weblink path to error message database (message)

Support for Linux OS with German locale (mrun)

Properly report hosts on general Linux clusters (mrun)

18/08/11

MS

r743

3.8

C

Calculation of turbulent fluxes with WS-scheme only for the whole model domain, not for user-defined subregions. The latter are calculated by multiplying deviations from the mean of the respective quantities.

17/08/11

MS

r737

3.8

B

Bugfix in ws-scheme concerning OpenMP paralellization.

23/06/11

RH

r731

3.8

B

Bugfix: correction of calculation of vertical grid spacing in NCL script (profiles.ncl).

26/05/11

RH

r729

3.8

B

Exchange ghost layers for p regardless of used pressure solver (except SOR) (data_output_2d.f90).

20/04/11

MS

r727

3.8

B

Exchange ghost layers also for p_av (data_output_3d.f90).

11/04/11

MS

r725

3.8

B

Exchange ghost layers for p regardless of used pressure solver (except SOR) (data_output_3d.f90).

11/04/11

SR

r722

3.8

B

Bugfixes for r707 concerning multigrid method for non-cyclic boundary conditions, and general setting of boundary conditions. These changes have also been merged to release 3.8. (init_grid, init_pegrid, modules)

06/04/11

BM

r721

3.8

B

Bugfix in mrun for runs with mpt and a large number of processors (< ~1400)

06/04/11

MG

r719

3.8

B

Bugfix in pres concerning volume flow control for double cyclic boundary conditions

31/03/11

SR

r716

3.8

N

Tagging of release 3.8

30/03/11

MS

r714

3.7a

B

Bugfix in vertical advection of w (concerning vector-architecture optimized routine) (advec_ws).

C

Formatting adjustments (advec_ws). Reformulate constants as broken numbers (advec_ws, init_3d_model).

30/03/11

SR

r709

3.7a

C

Formatting adjustments. (advec_ws, exchange_horiz, flow_statistics, inflow_turbulence, init_3d_model, init_coupling, init_grid, init_pegrid, prandtl_fluxes, pres, prognostic_equations, surface_coupler)

29/03/11

SR

r707

3.7a

N

For the multigrid method, on coarse grid levels, gathered data are identically processed on all PEs (before, on PE0 only), so that reversal scattering of data is not necessary any more. This may result in a significant speed-up (>10%) on larger grids. (modules, init_pegrid, poismg)

C

Calculation of weighted average of p is now handled in the same way regardless of the number of ghost layers (advection scheme). (pres)

multigrid and sor method are using array p_loc for iterative advancements of pressure. Array p_sub is removed. (init_3d_model, modules, poismg, pres, sor)

Steering CHARACTER variables bc_lr and bc_ns replaced by internal LOGICAL variables bc_lr_dirrad, bc_lr_raddir, bc_ns_dirrad, bc_ns_raddir for speed optimization. (calc_spectra, check_parameters, exchange_horiz, exchange_horiz_2d, header, init_3d_model, init_grid, init_pegrid, modules, poismg, pres, sor, time_integration, timestep)

Variable grid_level is directly used as index for MPI data type arrays. (exchange_horiz, poismg)

Initial assignments of zero to array p is done for iterative solvers only. (init_3d_model)

B

Calculation of localsum modified for proper OpenMP reduction. (pres)

Bugfix: bottom (nzb) and top (nzt+1) boundary conditions are now set in routines resid and restrict. These settings were missed before, which may have led to unpredictable results. (poismg)

25/03/11

MS

r706

3.7a

B

Bugfix in declaration of logicals concerning outflow boundaries (advec_ws.f90).

24/03/11

MS

r703

3.7a

B

Bugfix in exchange of 2d integer arrays (exchange_horiz_2d.f90).

C

Use nbgp ghost layers in the example case (user_read_restart_data.f90).

22/03/11

MS

r700

3.7a

B

Bugfix in calculation of vertical velocity skewness. The added absolute value avoid negative values in the root. Negative values of w'w' can occur at the top or bottom of the model domain due to degrading the order of advection scheme. Furthermore the calculation will be the same for all advection schemes (flow_statistics).

18/03/11

SR

r696

3.7a

N

Adjustments for OpenMP usage on ibmkisti (mrun, subjob).

B

work_fftx removed from PRIVATE clauses in routines fftx_tr_xy and tr_yx_fftx (poisfft).

Bugfix: Summation of Wicker-Skamarock scheme fluxes and variances for all threads (flow_statistics).

08/03/11

SR

r693

3.7a

N

Adjustments for ibmkisti (batch_scp, mbuild, mrun, subjob).

New default configuration files .mrun.config.yonsei2011 and .config_block_for_ibmkisti.

B

Bugfix: weighting coefficient added to IBM branch (pres).

04/03/11

BM

r691

3.7a

B

Bugfix for precursor atmosphere/ocean runs (positive time occured in precursor runs, 2D and 3D data output failed on each PE), re-adjustments for lcxt4 (mbuild failed due to compiler conflicts on the lcxt4)

20/02/11

MG

r689

3.7a

B

Bugfix for some logical expressions (syntax was not compatible with all compilers).

09/02/11

SR

r683

3.7a

N

Optional exchange of ghost points in synchronous mode via MPI_SENDRCV, steered by new d3par parameter synchronous_exchange. (cpu_statistics, exchange_horiz, modules, parin)

openMP-parallelization of pressure solver (fft-method) for 2d-domain-decomposition. (poisfft, transpose)

B

mpt bugfix (on ICE machine at HLRN) for netCDF4 usage. (mrun)

05/02/11

MG

r680

3.7a

B

Bugfix for constant_volume_flow = .T.

Bugfix for collective_wait = .T.

02/02/11

SR

r678

3.7a

N

Further adjustments for the Tsubame system plus additional settings for hybrid openMP/MPI usage on the HLRN system. (mrun, mbuild, subjob)

B

Bugfix in calculation of divergence of the vertical flux of resolved scale energy, pressure fluctuations, and flux of pressure fluctuation itself. (flow statistics)

Bugfix: module pegrid was missing in user-interface routine. (user_statistics)

19/01/11

MS

r676

3.7a

B

Bugfix removed while copying tend to p. (pres)

18/01/11

MS

r674

3.7a

N

Computation of the perturbation pressure using the corresponding Runge-Kutta coefficients. (pres, init_3d_model, modules)

Attention : The modifications on the pressure correction do not affect the velocity components, but due to numerical inaccuracies of the pressure solver there is no guarantee that simulations carried out by previous revisions of PALM are reproducible.

C

Allocation of weight_substep moved to init_3d_model. (advec_ws, init_3d_model)

Setting LOGICALS for ws-scheme moved to check_parameters. (advec_ws, check_parameters)

Consideration of the pressure gradient during time_integration removed. (prognostic_equations, timestep_scheme_steering)

B

Bugfix in the bc for the horizontal velocity variances. (flow_statistics)

11/01/11

RH

r672

3.7a

B

Access to ddzu(nzt+2) which is not defined (subsidence.f90)

23/12/10

MS / MG

r670

3.7a

N

Most important changes: New advection scheme added. Different number of processors and different horizontal resolution in ocean and atmosphere is now allowed. Bottom boundary conditions for u and v changed from mirror to dirichlet boundary conditions. Inflow turbulence is now defined by fluctuations around spanwise mean.

Advection scheme ( see momentum_advec and scalar_advec ) :

New advection scheme added ( Wicker and Skamarock 5th order ). Turbulent fluxes are computed directly inside advection routines, removed from flow_statistics. (advec_ws)

Check for illegal combination of ws-scheme and timestep_scheme. Check for topography and ws-scheme. Check for not cyclic boundary conditions in combination with ws-scheme and loop_optimization = 'vector'. Check for call_psolver_at_all_substeps and momentum_advec = 'ws-scheme'. (check_parameters)

When advection is computed with ws-scheme, turbulent fluxes are already computed in the respective advection routines and buffered in arrays sums_xxxx_ws_l(). This is due to a consistent treatment of statistics with the numerics and to avoid unphysical kinks near the surface. Furthermore the computation of z_i is only done if the heat flux exceeds a minimum value. This affects only simulations of a neutral boundary layer and is due to reasons of computations in the advection scheme. (flow_statistics)

Definition of new array bounds nxlg, nxrg, nylg, nyng on each PE. Furthermore the allocation of arrays and steering of loops is done with these parameters. (init_grid)

Call ws_init to initialize arrays needed for statistical evaluation and optimization when ws-scheme is used. (init_3d_model)

Module advec_ws added. (Makefile)

Buffer arrays for the left sided advective fluxes added in arrays_3d. +flux_s_u, +flux_s_v, +flux_s_w, +diss_s_u, +diss_s_v, +diss_s_w, +flux_s_pt, +diss_s_pt, +flux_s_e, +diss_s_e, +flux_s_q, +diss_s_q, +flux_s_sa, +diss_s_sa. +exchange_mg added in control_parameters to steer the data exchange. Parameters +nbgp, +nxlg, +nxrg, +nysg, +nyng added in indices. flag array +boundary_flags added in indices to steer the degradation of order of the advective fluxes when non-cyclic boundaries are used. MPI-datatypes +type_y, +type_y_int and +type_yz for data_exchange added in pegrid. +sums_wsus_ws_l, +sums_wsvs_ws_l, +sums_us2_ws_l, +sums_vs2_ws_l, +sums_ws2_ws_l, +sums_wspts_ws_l, +sums_wssas_ws_l, +sums_wsqs_ws_l and +weight_substep added in statistics to steer the statistical evaluation of turbulent fluxes in the advection routines. LOGICALS +ws_scheme_sca and +ws_scheme_mom added to get a better performance in prognostic_equations. (modules)

New allocation of tend when ws-scheme and multigrid is used. This is due to reasons of performance of the data_exchange. The same is done with p after poismg is called. (pres)

Calls of the advection routines with WS5 added. Calls of ws_statistics added to set the statistical arrays to zero after each time step. (prognostic_equations)

Coupling:

Different processor/grid topology in atmosphere and ocean is now allowed! (check_parameters)

Moved determination of target_id's from init_coupling. Exchange of parameters between ocean and atmosphere via PE0 Determination of parameters needed for coupling (coupling_topology, ngp_a, ngp_o) with different grid/processor-topology in ocean and atmosphere. (init_pegrid)

Removed u_nzb_p1_for_vfc and v_nzb_p1_for_vfc For coupling with different resolution in ocean and atmosphere: +nx_a, +nx_o, +ny_a, +ny_o, +ngp_a, +ngp_o, +total_2d_o, +total_2d_a, +coupling_topology (modules)

Additional case for nonequivalent processor and grid topology in ocean and atmosphere added (coupling_topology = 1). Added exchange of u and v from Ocean to Atmosphere. (surface_coupler)

Bottom BC:

Removed mirror boundary conditions for u and v at the bottom in case of ibc_uv_b == 0. Instead, dirichlet boundary conditions (u=v=0) are set in init_3d_model. (boundary_conds)

dzu_mg has to be set explicitly for a equally spaced grid near bottom. ddzu_pres added to use a equally spaced grid near bottom. In case of dirichlet boundary condition at the bottom zu(0)=0.0. (init_grid)

Call of SOR routine is referenced with ddzu_pres. (pres)

Turbulent inflow:

Using nbgp recycling planes for a better resolution of the turbulent flow near the inflow. (inflow_turbulence)

C

Advection scheme:

The maximum_grid_level changed from 1 to 0. 0 is the normal grid, 1 to maximum_grid_level the grids for multigrid, in which 0 and 1 are normal grids. This distinction is due to reasons of data exchange and performance for the normal grid and grids in poismg. Adaption of ngp_xy, ngp_y to a dynamic number of ghost points. The definition of MPI-Vectors adapted to a dynamic number of ghost points. New MPI-Vectors for data exchange between left and right boundaries added. This is due to reasons of performance (10% faster). (init_pegrid)

Dynamic exchange of ghost points with nbgp_local to ensure that no useless ghost points exchanged in case of multigrid. type_yz(0) and type_xz(0) used for normal grid, the remaining types used for the several grid levels. Exchange is done via MPI-Vectors with a dynamic value of ghost points which depend on the advection scheme. Exchange of left and right PEs is 10% faster with MPI-Vectors than without. (exchange_horiz)

Dynamic exchange of ghost points. (exchange_horiz_2d)

Calls of exchange_horiz modified. (advec_particles, data_output_2d, data_output_3d, data_output_mask, diffusivities, init_3d_model, init_pt_anomaly, init_rankine, poismg, sor, time_integration)

Default of momentum_advec and scalar_advec changed to 'ws-scheme'. (modules)

nxl-1, nxr+1, nys-1, nyn+1 replaced by nxlg, nxrg, nysg, nyng (advec_particles, asselin_filter.f90, average_3d_data.f90, boundary_conds.f90, calc_liquid_water_content.f90, calc_spectra, data_output_2d, data_output_3d, diffusion_e.f90, diffusion_u.f90, diffusion_v.f90, diffusion_w.f90, diffusivities, init_3d_model, init_rankine, init_slope, prandtl_fluxes, pres, production_e, sor, subsidence, sum_up_3d_data, surface_coupler, timestep, user_..., wall_fluxes)

Allocation of arrays, output of array bounds and skip values adapted to a dynamic number of ghost points with nbgp. (check_open, data_output_3d, global_min_max, read_3d_binary, user_read_restart_data, write_compressed)

Coupling:

determination of target_id's moved to init_pegrid. (init_coupling)

Changed surface boundary conditions for u and v in case of ibc_uv_b == 0 from mirror bc to dirichlet boundary conditions (u=v=0), so that k=nzb is representative for the height z0. (init_3d_model)

Bottom BC:

Changed surface boundary conditions for u and v from mirror bc to dirichelt bc, therefore u(uzb,:,:) and v(nzb,:,:) is now representative for the height z0. (prandtl_fluxes)

Other:

Initial volume flow is now calculated by using the variable hom_sum. Therefore the correction of initial volume flow for non-flat topography removed (removed u_nzb_p1_for_vfc and v_nzb_p1_for_vfc) (init_3d_model)

B

Bugfix in checking for conserve_volume_flow_mode. (check_parameters)

Changed length of string run_description_header. (modules)

Bugfix: After pressure correction no volume flow correction in case of non-cyclic boundary conditions (has to be done only before pressure correction). (pres)

Bug removed in declaration of ddzw(), nz replaced by nzt+1. (sor)

15/12/10

SR

r646

3.7a

C

A 2d domain decomposition is now used by default on "lctit". (init_pegrid)

B

Bugfix: missing define statements for netCDF calls added. (data_output_3d)

14/12/10

SR

r635

3.7a

C

Adjustments for new Tsubame system (lctit) at Tokyo Institute of Technology. (mbuild, mrun, subjob)

13/12/10

BM

r631

3.7a

B

Converted "1" to 64bit in the MAX function (init_3d_model, needed on ibm machines)

10/12/10

MS

r627

3.7a

B

idum replaced by cdum. (read_var_list)

10/12/10

RH

r625

3.7a

C

Calculation of q*2 added. (flow_statistics, profiles.ncl).

10/12/10

SR

r622

3.7a

N

Optional barriers included in order to speed up collective operations MPI_ALLTOALL and MPI_ALLREDUCE. This feature is controlled with new initial parameter collective_wait. Default is .FALSE, but .TRUE. on SGI-type systems. (advec_particles, advec_s_bc, buoyancy, check_for_restart, cpu_statistics, data_output_2d, data_output_ptseries, flow_statistics, global_min_max, inflow_turbulence, init_3d_model, init_particles, init_pegrid, init_slope, parin, pres, poismg, set_particle_attributes, timestep, read_var_list, user_statistics, write_compressed, write_var_list)

Adjustments for Kyushu Univ. (lcrte, ibmku). Concerning hybrid (MPI/openMP) runs, the number of openMP threads per MPI tasks can now be given as an argument to mrun-option -O. (mbuild, mrun, subjob)

C

Initialization of the module command changed for SGI-ICE/lcsgi. (mbuild, subjob)

24/11/10

SR

r600

3.7a

C

Parameters moved from the d3par-NAMELIST (runtime parameters) to the inipar-NAMELIST (initial parameters): call_psolver_at_all_substeps, cfl_factor, cycle_mg, mg_cycles, mg_switch_to_pe0_level, ngsrb, nsor, omega_sor, prandtl_number, psolver, rayleigh_damping_factor, rayleigh_damping_height, residual_limit (parin, read_var_list, write_var_list).

Attention: This shift of parameters requires the users to modify all those NAMELIST-parameter files, which contain the parameters given above!

Due to this change, in routine skip_var_list (end of file read_var_list.f90), variable ldum is replaced by cdum(LEN=1), because otherwise read errors (too few data on file) would appear due to one of the additional parameters (cycle_mg, which is a string of one single character) which are now stored on the restart file.

Weblink to error message database changed to new trac server (message).

B

Bugfix concerning check of xz/yz-cross-section levels on netcdf-files to be extended (netcdf).

Bugfix in opening of cross section netcdf-files (parallel opening with netcdf4 only works for netcdf_data_format > 2 but was used generally) (check_open).

Default values of surface_scalarflux and surface_waterflux changed from 0.0 to 9999999.9. Giving the parameter the default values means, that the respective surface fluxes are calculated by the MO-relations, so the old default value did not allow to set the surface fluxes to zero explicitly. (check_parameters, modules)

12/11/10

CH

r596

3.7a

C

Calculation of z locations for masked output changed (init_masks).

01/11/10

RH

r594

3.7a

B

Bugfix: enable plot of profiles when data is of kind double in case of no_files > 1 (profiles.ncl)

29/10/10

RH

r593

3.7a

B

Bugfix: enable plot of combined profiles when data is of kind double (profiles.ncl)

28/10/10

CH

r592

3.7a

C

Remove unnecessary print command (read_var_list).

27/10/10

RH

r590

3.7a

B

Character string of subs_vertical_gradient and subs_vertical_gradient_level shortened to 30 characters (write_var_list).

27/10/10

CH

r588

3.7a

C

Added time_domask to write_var_list and read_var_list to change wrong output times for masked data in restart runs (read_var_list, write_var_list).

15/10/10

BM

r586

3.7a

N

Added the ksh script img2video, a post-processing tool for generating animations from image data (e.g. dvrp, ncl, vapor...). Find the manual here.

14/10/10

RH

r585

3.7a

B

Enable plot of data if it is of kind double instead of kind float in cases where netcdf_precision is set to '<out>_NF90_REAL8', i. e. the data has double precision (cross_sections.ncl, profiles.ncl, spectra.ncl, timeseries.ncl).

11/10/10

RH

r584

3.7a

B

replace of 'user_spectra' with 'user_read_restart_data' in call of message

06/10/10

RH

r582

3.7a

C

!UserGuide_for_NCL_scripts deleted because documentation is now available online. (!UserGuide_for_NCLscripts.odt,!UserGuide_for_NCLscripts.pdf)

05/10/10

RH

r580

3.7a

C

Renaming of ws_vertical_gradient to subs_vertical_gradient, ws_vertical_gradient_level to subs_vertical_gradient_level and ws_vertical_gradient_level_ind to subs_vertical_gradient_level_i (check_parameters, header, modules, parin, read_var_list, subsidence, write_var_list)

01/10/10

CH

r568

3.7a

C

calculating masks expanded for user-defined quantities (check_parameters)

30/09/10

RH

r566

3.7a

C

Formatting of NCL scripts adjusted (cross_sections.ncl, profiles.ncl, spectra.ncl, timeseries.ncl)
Re-sorting of items in .ncl.config.default and moving of xyc, xzc and yzc to cross_sections.ncl because they are no parameters any more.
start_f_1/end_f_1 are renamed to start_f/end_f, placement of second legend in case of over = 1 changed, legend label strings are formatted with sprintf (profiles.ncl)
Explicit setting of minimum and maximum for x-axis (timeseries.ncl)
Error inquiry for parameter height_level extended, legend label strings are formatted with sprintf (spectra.ncl)

B

Vector plot is now possible if var is unequal to "all" (cross_sections.ncl)

30/09/10

CH

r565

3.7a

C

amount of defining masks changed from 20 to unlimited (check_open, check_parameters, close_file, data_output_mask, init_masks, modules, netcdf)

palm and netcdf message identifiers for masked output changed (check_open, check_parameters, close_file, data_output_mask, init_masks, netcdf)

13/09/10

SR

r562

3.7a

N/B

new: setting of MPI_TYPE_DEPTH for netCDF4/HDF5 with mpt-library (mrun)

bugfixes for wrong netCDF/3.6.3 module and r561 (mbuild, mrun)

09/09/10

CH

r560

3.7a

B

Bugfix in calculation of ngp_3d for 64 bit. So far ngp_3d has not been 64 bit.

07/09/10

CH

r557

3.7a

B

Bugfix for message string in if statement (dz_stretch_level) of subroutine set_mask_locations.

The change concerns the masked data output, which is still not documented.

07/09/10

SR

r556

3.7a

C

Documentation for surface_heatflux in case of prandtl_layer = .F. improved.

bugfix for wrong netCDF/3.6.3 module on lcsgi (mbuild, mrun)

B

Bugfix in if statement (disturb_heatflux)

Bugfix: in 2201 statement: closing " was missing (interpret_config)

Bugfix: default setting of nzb_local for flat topography (init_grid)

Bugfix: wrong dimension used for ts_value_l (user_statistics)

01/09/10

CH

r553

3.7a

C

d3dpar-parameters for masked output data_output_mask_*, data_output_mask_user_*, mask_*_x, mask_*_y, mask_*_z, mask_*_x_loop, mask_*_y_loop and mask_*_z_loop have been replaced by corresponding (array-) parameters data_output_masks, data_output_masks_user, mask_x, mask_y, mask_z, mask_x_loop, mask_y_loop, and mask_z_loop.

inipar-parameter masks has been removed.

The changes concern the masked data output, which is still not documented.

17/08/10

BM

r544

3.7a

N/C/B

new: .mrun.config.lcxt4 for Cray-XT4 in Bergen/Norway

changes: adjustments for lcxt4

bugfix: loading of user-defined modules (mbuild)

15/06/10

RH

r540

3.7a

C

ssh from compute nodes to login nodes on hosts lcsgih/lcsgib is done using the names hicegate0/bicegate0 instead of the IP addresses

21/04/10

RH

r532

3.7a

C

Large scale vertical motion (subsidence/ascent) can be added as additional source to the prognostic equation for humidity/passive scalar. Character length for dopr_unit enlarged.

Adjustment of the NCL scripts to allow for output of png files.

B

Bugfix: unit of hyp changed to dbar (check_parameters)

01/04/10

RH

r530

3.7a

B

Bugfix: treatment of special character * in NCL variables containing lists corrected

31/03/10

RH

r529

3.7a

C

List of variable names have to be specified using blank separated lists and single quotes

30/03/10

RH

r526

3.7a

C

Adjustment of the NCL scripts and palmplot to allow for special characters in netCDF variable names.

30/03/10

SR

r525

3.7a

B

Bugfix: "/" in netcdf profile variable names replaced by ":"

19/03/10

SR

r520

3.7a

N

netCDF4 support for particle data. Total number of particles is allowed to increase during the run, when netcdf_data_format > 2 is used.

C

Special characters like * and " are now allowed for netCDF variable names. Replacement of these characters has been removed (routine clean_netcdf_varname removed)

18/03/10

SR

r516

3.7a

N

Simple installation method has been documented (see doc/install). Respective scripts and configuration files have been updated.

B

opt=1 is forced for PGI-compiler in routine buoyancy by compiler-directive. Otherwise, program aborts with SIGFPE.

16/03/10

RH

r513

3.7a

N

NCL scripts can be run with the shell script palmplot.

12/03/10

SR

r509

3.7a

B

bugfix for r504: remode_md was given a wrong value

08/03/10

SR

r506

3.7a

C

hack for better usage of mrun on Kyoto computing center machine (lckyoto)

03/03/10

SR

r504

3.7a

C

combine_plot_fields is now directly called within mrun and must not be given by an output command in the configuration file any more. Please remove the respective output command (OC:combine_plot_fields.x) from your configuration file!

Utility programs (combine_plot_fields, interpret_config) are created by mbuild separately for each block in the configuration file. Depending on option -K, mrun is using the utility programs for the respective block.

Utility programs are also compiled in parallel, depending on variable %mopts in the configuration file..

Default configuration files updated.

02/03/10

SR

r496

3.7a

C

Particle data for restart runs are only written if environment variable write_binary = .T., i.e. particle data are now handled in the same way as the other restart data. (palm)

01/03/10

SR

r494

3.7a

N

Output in netCDF4-format.

netCDF4 allows for parallel I/O. Also, variables are not limited in size any more (i.e. arrays can be larger than 2GB). The new d3par-parameter netcdf_data_format can be used to select among the different netCDF file formats (1: classic format, 2: 64-bit-offset format (this is now the default), 3: netCDF4/HDF5 format, 4: netCDF4 format with NF90_CLASSIC_MODEL bit set). Setting netcdf_data_format > 2 only affects 2d- and 3d-output, i.e. there is no parallel output for profiles, time series, spectra, and particles. Parallel output of particle data may be realized in the future.

In case of parallel output, all PEs write into one file, which means that postprocessing the data with combine_plot_fields (merging data from single files - one per PE - into one file) is not neccessary. In this case, flag files are automatically set, telling combine_plot_fields that nothing is to be done.

Using netCDF4 format requires a netCDF4/HDF5 library. Respective settings for -I, -L, and -l compiler/loader options for the SGI-ICE at HLRN can be found in the new example configuration file .mrun.config.imuk_ice2_netcdf4

Attention: So far, netCDF parallel I/O has only been tested a little. Further performance optimizations may be required, especially in case of large data sets (e.g. data chunking, or lustre file system settings with lfs setstripe). Please report bugs and performance problems immediately!

combine_plot_fields outputs cpu-time needed for file merging.

Modules to be loaded for compilation (mbuild) or job execution (mrun) can/should now be given in the configuration file (.mrun.config) using variable %modules. Example:

   %modules     ifort/11.0.069:netcdf       lcsgih parallel

This method replaces the (undocumented) %mpilib-variable.

WARNING: All fixed settings of modules in the scripts mbuild, mrun, and subjob have been removed! Please set the %modules variable appropriately and remove the %mpilib variable in your configuration file.

Compilation time can be reduced be using parallel make. The number of allowed simultaneous compiler calls (threads) is set in the configuration file using variable %mopt, e.g.

   %mopts  -j:4   lcsgih parallel

allows a maximum of 4 routines to be compiled simultaneously (provided that the makefile does not show any dependencies between these routines).

C

d3par-parameters netcdf_64bit and netcdf_64bit_3d have been removed. Use the new d3par-variable netcdf_data_format = 2 for choosing the netCDF 64bit-offset format (this is the default from now on). The offset-format can not be set independently for the 3d-output-data any more.

d3par-parameters netcdf_format_mask, netcdf_format_mask_av, and variables nc_format_mask, format_parallel_io removed. They are replaced by the new parameter netcdf_data_format. This change concerns the masked data output, which is still not documented.

B

Bugfix in Makefile: forgot to compile for interpret_config.

Bugfix: timeseries data have to be collected by PE0 (user_statistics).

05/02/10

SR

r484

3.7a

C

Actual revisions: renamed Current revisions: in most of the source code file headers.

B

ngp_3d, ngp_3d_inner changed to 64 bit. Otherwise, on large grids > 2*109 grid points some global statistics (e.g. total kinetic energy) have wrong values.

05/02/10

SR

r483

3.7a

N

compare_palm_logs is additionally compiled with mbuild -u . (Makefile)

make options (%mopts) to be set by configuration file implemented. (mrun, mbuild)

humidity = .T. can be used for runs with topography. wall_humidityflux and wall_scalarflux are the corresponding new inipar parameters. (check_parameters, init_3d_model, parin)

Large scale vertical motion (subsidence/ascent) can be added as additional source to the prognostic equation for potential temperature. See new parameters large_scale_subsidence, ws_vertical_gradient, and ws_vertical_gradient_level. (check_parameters, header, Makefile, modules, parin, prognostic_equations, read_var_list, subsidence, write_var_list)

Scripts have been updated for Cray-XT5 machine (lcxt5m) and Hitachi-machine (lckyoto).

A simple method for installing and running palm (with limited features) has been added. (Makefile, new scripts palm_simple_install, palm_simple_run)

Masked data output has been implemented but it is not documented in the user manual so far. This feature can already use netCDF4 file format. (check_open, check_parameters, close_file, modules, netcdf, parin, time_integration, user_parin, new: data_output_mask, init_masks, user_data_output_mask)

C

2d-decomposition is default for Cray-XT machines. (init_pegrid)

var_ts is replaced by dots_max. (modules, init_3d_model)

Every cloud droplet has now an own weighting factor and can be deleted due to collisions. Condensation and collision of cloud droplets are adjusted accordingly. (advec_particles)

Collision efficiency for large cloud droplets has changed according to table of Rogers and Yau. (collision_efficiency)

B

Bugfix for generating serial jobs. (subjob)

Bugfix: index problem concerning gradient_level indices removed. (header)

Dimension of array stat in cascade change to prevent type problems with mpi2 libraries. (poisfft_hybrid)

Loop was split to make runs reproducible when using ifort compiler. (disturb_field)

Bugfix: exchange of ghost points for prho included. (time_integration)

Bugfix in calculation of time-averaged surface heatfluxes. (sum_up_3d_data)

Bugfix in calculation of precipitation_rate. (calc_precipitation)

Bugfix: initial data assignments to some dvrp arrays changed due to error messages from gfortran compiler. (modules)

Bugfix in calculation of cloud droplet velocity. (advec_particles)

Bugfix in transfer of particles at south/left edge. (advec_particles)

Bugfix in calculation of collision efficiency. (collision_efficiency)

23/09/09

SR

r392

3.7

N

Most important changes: atmosphere-ocean coupling has been improved and steering of dvr-software is more user-friendly now. Beside that, the release contains a lot of optimizations, changes, and bugfixes which have accumulated over the last months.

The atmosphere-ocean coupling allows to use independent precursor runs in order to account for different spin-up times. The time when coupling has to be started is given by new inipar parameter coupling_start_time. The precursor ocean run has to be started using new mrun option "-y" in order to add the appendix "_O" to all output files. (check_for_restart, check_parameters, data_output_2d, data_output_3d, data_output_profiles, data_output_ptseries, data_output_spectra, data_output_tseries, header, init_coupling, modules, mrun, parin, read_var_list, surface_coupler, time_integration, write_var_list)

Clipping of dvrp output implemented. Default colourtable for particles implemented, particle attributes (color, dvrp_size) can be set with new parameters particle_color, particle_dvrpsize, color_interval, dvrpsize_interval. Slicer attributes (dvrp) are set with new routine set_slicer_attributes_dvrp and are controlled with existing parameter slicer_range_limits. (init_dvrp, data_output_dvrp, modules, set_slicer_attributes_dvrp, user_data_output_dvrp)

Polygon reduction for topography and ground plate isosurface. Reduction level for buildings can be chosen with parameter cluster_size. (init_dvrp)

Variables bc_lr and bc_ns in most subroutines replaced by LOGICAL variables bc_lr_cyc and bc_ns_cyc for speed optimization. This gives a significant speedup of more than 10%. (check_parameters, diffusion_u, diffusion_v, diffusion_w, modules)

Scripts have been adapted for machine lck (Yonsei Univ.). (mrun, mbuild, subjob)

Additional timestep criterion in case of simulations with plant canopy. (timestep)

Check for illegal entries in section_xy|xz|yz that exceed nz+1|ny+1|nx+1. (check_parameters)

External pressure gradient can be used as driving force. (check_parameters, header, init_3d_model, modules, parin, prognostic_equations, read_var_list, write_var_list)

New topography case 'single_street_canyon' . (header, init_grid, modules, parin, read_var_list, user_check_parameters, user_header, user_init_grid, write_var_list)

Option to predefine a target bulk velocity for conserve_volume_flow. (check_parameters, header, init_3d_model, modules, parin, read_var_list, write_var_list)

Option for user defined 2D data output in xy cross sections at z=nzb+1. (data_output_2d, user_data_output_2d)

xy cross section output of surface heatfluxes (sensible and latent). (average_3d_data, check_parameters, data_output_2d, modules, read_3d_binary, sum_up_3d_data, write_3d_binary)

C

Output of messages replaced by message handling routine. (advec_particles, advec_s_bc, buoyancy, calc_spectra, check_for_restart, check_open, coriolis, cpu_log, data_output_2d, data_output_3d, data_output_dvrp, data_output_profiles, data_output_spectra, fft_xy, flow_statistics, header, init_1d_model, init_3d_model, init_dvrp, init_grid, init_particles, init_pegrid, netcdf, parin, plant_canopy_model, poisfft_hybrid, poismg, read_3d_binary, read_var_list, surface_coupler, temperton_fft, timestep, user_actions, user_data_output_dvrp, user_dvrp_coltab, user_init_grid, user_init_plant_canopy, user_parin, user_read_restart_data, user_spectra)

Output of netCDF messages with aid of message handling routine. (check_open, close_file, data_output_2d, data_output_3d, data_output_profiles, data_output_ptseries, data_output_spectra, data_output_tseries, netcdf)

__lcmuk changed to __lc to avoid problems with Intel compiler on sgi-ice. (poisfft)

For extended netCDF files, the updated title attribute includes an update of time_average_text where appropriate. (netcdf)

In case of restart runs without extension, initial profiles are not written to netCDF-file anymore. So far, time axis always started at t=0. (data_output_profiles, modules, read_var_list, write_var_list)

initializing_actions= 'read_data_for_recycling' renamed to 'cyclic_fill' . A cyclic fill can now be used independent of turbulent_inflow. (check_parameters, header, init_3d_model)

Two netCDF error numbers changed. (data_output_3d)

A link to the webspage appendix_a.html is printed for further information about possible reasons of the error that appeared. (message)

Temperature gradient criterion for estimating the boundary layer height replaced by the gradient criterion of Sullivan et al. (1998). (flow_statistics)

netCDF unit attribute in timeseries output in case of statistic regions added. (netcdf)

Maximum number of tails is calculated from maximum number of particles and skip_particles_for_tail. (init_particles)

Value of vertical_particle_advection is allowed to differ for each particle group. (advec_particles, header, modules)

First constant in array den also defined as type double. (eqn_state_seawater)

Parameter dvrp_psize moved from particles_par to dvrp_graphics_par. (package_parin)

topography_grid_convention moved from userpar to inipar (check_parameters, header, parin, read_var_list, user_check_parameters, user_header, user_init_grid, user_parin, write_var_list)

Default value of grid_matching changed to 'strict' . (modules)

Adjustments for runs on lcxt4 (necessary due to a software update on CRAY) and for coupled runs on ibmy. (mrun, subjob)

B

Bugfix: Initial hydrostatic pressure profile in case of ocean runs is now calculated in 5 iteration steps. (init_ocean)

Bugfix: wrong sign in buoyancy production of ocean part in case of not using the reference density (only in 3D routine production_e). (production_e)

Bugfix: output of averaged 2d/3d quantities requires that an avaraging interval has been set, respective error message is included. (check_parameters)

Bugfix: Output on unit 14 only if requested by write_binary. (user_last_actions)

Bugfix to avoid zero division by km_neutral. (production_e)

Bugfix for extended netCDF files: In order to avoid 'data mode' errors if updated attributes are larger than their original size, NF90_PUT_ATT is called in 'define mode' enclosed by NF90_REDEF and NF90_ENDDEF calls. This implies a possible performance loss; an alternative strategy would be to ensure equal attribute size in a job chain. (netcdf)

Bugfix: correction of initial volume flow for non-flat topography. (init_3d_model)

Bugfix: zero initialization of arrays within buildings for 'cyclic_fill' . (init_3d_model)

Bugfix: to_be_resorted => s_av for time-averaged scalars. (data_output_2d, data_output_3d)

Bugfix: avoid that ngp_2dh_s_inner becomes zero. (init_3_model)

Typographical error: unit of wpt in dots_unit. (modules)

Bugfix: error in check, if particles moved further than one subdomain length. This check must not be applied for newly released particles. (advec_particles)

Bugfix: several tail counters are initialized, particle_tail_coordinates is only written to file if its third index is > 0, arrays for tails are allocated with a minimum size of 10 tails if there is no tail initially. (advec_particles, init_particles)

Bugfix: pressure included for profile output. (check_parameters)

Bugfix: Type of count and count_rate changed to default INTEGER on NEC machines. (cpu_log)

Bugfix: output of particle time series only if particle advection is switched on. (time_integration)

Bugfix: qsws was calculated in case of constant heatflux = .FALSE.. (prandtl_fluxes)

Bugfix: averaging along z is not allowed for 2d quantities (e.g. u* and z0). (data_output_2d)

Typographical errors. (netcdf)

If the inversion height calculated by the prerun is zero, inflow_damping_height must be explicitly specified. (init_3d_model)

Small bugfix concerning 3d-64bit-netCDF output format. (header)

Bugfix: dt_fixed removed from the restart file, because otherwise, no change from a fixed to a variable timestep would be possible in restart runs. (read_var_list, write_var_list)

Bugfix: initial setting of time_coupling in coupled restart runs. (time_integration)

02/02/09

SR

r228

3.6

N

This release contains further additions, changes, and bugfixes for the SGI-ICE system, as well as important changes like the splitting of the user-interface into single files, a complete revision of the pre-compiling mechanism allowing to use different make-depositories simultaneously, and a revision of the reading-mechanism from restart files, which has no more restrictions in case that the previous and current run have different domain/subdomain sizes. A new handling of all kind of output messages is introduced with this release and will be applied to all existing messages within the next releases.

New features are:

Restart runs on SGI-ICE are working. (mrun) 2d-decomposition is default on SGI-ICE systems. (init_pegrid)

Ocean-atmosphere coupling realized with MPI-1. mrun adjusted for this case (-Y option). Check that PALM is called with mrun-option "-K parallel" for coupling. Adjustments in mrun, mbuild, and subjob for lcxt4.

DVRP arguments changed to single precision, mode pathlines added.

User can add additional routines in files user_additional_routines.

User can check user parameters and deduce further quantities in user_check_parameters.

C

User interface has been split into single files.

Type of variables count and count_rate changed to INTEGER(8) in order to avoid "out of range" problems, which result in measured negative time intervals. (cpu_log, local_tremain, local_tremain_ini)

Reading mechanism from restart files completely revised. The subdomain/total domain size is now allowed to vary arbitrarily between the current and previous run. (read_var_list, read_3d_binary, user_read_restart_data)

Precompilation mechanism (mbuild) completely revised: the source-tarfile remains in the source directory (trunk/SOURCE). One depository per block (given in the config-file) is created. Always all files from the source directory are copied to the respective depository. No additional file checks are done any more (mrun version 2.1). The depository name used contains the conditions given by mrun-option "-K". (mbuild, mrun)

Output messages (including required stop of execution) can now be handled with the new subroutine message. All output messages will be replaced by this routine step by step within the next revisions.

Neumann boundary condition at k=nzb is explicitly set for better reading, although this has been already done in boundary_conds. (advec_s_bc)

Origin of the xy-coordinate system shifted from the center of the first grid cell (indices i=0, j=0) to the south-left corner of this cell. (netcdf) Topography definition according to new user parameter topography_grid_convention. (init_grid, modules, user_header, user_init_grid, user_parin)

B

Bugfix: array d is reallocated in case that multigrid is used. (calc_spectra)

Bugfixes for nonparallel execution. (check_for_restart, cpu_statistics, inflow_turbulence, timestep)

Size of pf3d adjusted to the required output size (1 gridpoint less, along all three dimensions), because output of a subset of the data (pf3d(nxa:nxe...)) in the NF90_PUT_VAR statement caused segmentation fault with the INTEL compiler. (combine_plot_fields)

Bugfix: error in zu index in case of section_xy=-1. (header)

Inconsistency removed: as the thermal stratification is not taken into account for the evaluation of the wall fluxes at vertical walls, the eddy viscosity km must not be used for the evaluation of the velocity gradients dudy, dwdy, dvdx and dwdx. (production_e)

Bugfix in calculating k index in case of oceans runs. (sort_particles)

Bugfix: no output of particle concentration and radius unless particles have been started. (data_output_2d)

Bugfix: reading of spectrum_x|y from restart files ignored if total numbers of grid points do not match. (read_3d_binary)

Bugfix: abort in case that absolute temperature is below zero. (init_cloud_physics)

Last modified 3 years ago Last modified on Feb 26, 2021 4:30:08 PM