4.1 Initialization parameters


Parameter name Type

Default
value

Explanation

adjust_mixing_length

L .F.

Near-surface adjustment of the mixing length to the Prandtl-layer law. 

Usually the mixing length in LES models lLES depends (as in PALM) on the grid size and is possibly restricted further in case of stable stratification and near the lower wall (see parameter wall_adjustment). With adjust_mixing_length = .T. the Prandtl' mixing length lPR = kappa * z/phi is calculated and the mixing length actually used in the model is set l = MIN (lLES, lPR). This usually gives a decrease of the mixing length at the bottom boundary and considers the fact that eddy sizes decrease in the vicinity of the wall. 

Warning: So far, there is no good experience with adjust_mixing_length = .T.

With adjust_mixing_length = .T. and the Prandtl-layer being switched on (see prandtl_layer) '(u*)** 2+neumann' should always be set as the lower boundary condition for the TKE (see bc_e_b), otherwise the near-surface value of the TKE is not in agreement with the Prandtl-layer law (Prandtl-layer law and Prandtl-Kolmogorov-Ansatz should provide the same value for Km). A warning is given, if this is not the case.

alpha_surface

R
0.0

Inclination of the model domain with respect to the horizontal (in degrees). 

By means of alpha_surface the model domain can be inclined in x-direction with respect to the horizontal. In this way flows over inclined surfaces (e.g. drainage flows, gravity flows) can be simulated. In case of alpha_surface /= 0 the buoyancy term appears both in the equation of motion of the u-component and of the w-component.

An inclination is only possible in case of cyclic horizontal boundary conditions along x AND y (see bc_lr and bc_ns) and topography = 'flat'.

Runs with inclined surface still require additional user-defined code as well as modifications to the default code. Please ask the PALM developer  group.

bc_e_b

C * 20 'neumann'

Bottom boundary condition of the TKE. 

bc_e_b may be set to 'neumann' or '(u*) ** 2+neumann'. bc_e_b = 'neumann' yields to e(k=0)=e(k=1) (Neumann boundary condition), where e(k=1) is calculated via the prognostic TKE equation. Choice of '(u*)**2+neumann' also yields to e(k=0)=e(k=1), but the TKE at the Prandtl-layer top (k=1) is calculated diagnostically by e(k=1)=(us/0.1)**2. However, this is only allowed if a Prandtl-layer is used (prandtl_layer). If this is not the case, a warning is given and bc_e_b is reset to 'neumann'

At the top boundary a Neumann boundary condition is generally used: (e(nz+1) = e(nz)).

bc_lr

C * 20 'cyclic' Boundary condition along x (for all quantities).

By default, a cyclic boundary condition is used along x.

bc_lr may also be assigned the values 'dirichlet/radiation' (inflow from left, outflow to the right) or 'radiation/dirichlet' (inflow from right, outflow to the left). This requires the multi-grid method to be used for solving the Poisson equation for perturbation pressure (see psolver) and it also requires cyclic boundary conditions along y (see bc_ns).

In case of these non-cyclic lateral boundaries, a Dirichlet condition is used at the inflow for all quantities (initial vertical profiles - see initializing_actions - are fixed during the run) except u, to which a Neumann (zero gradient) condition is applied. At the outflow, a radiation condition is used for all velocity components, while a Neumann (zero gradient) condition is used for the scalars. For perturbation pressure Neumann (zero gradient) conditions are assumed both at the inflow and at the outflow.

When using non-cyclic lateral boundaries, a filter is applied to the velocity field in the vicinity of the outflow in order to suppress any reflections of outgoing disturbances (see km_damp_max and outflow_damping_width).

In order to maintain a turbulent state of the flow, it may be neccessary to continuously impose perturbations on the horizontal velocity field in the vicinity of the inflow throughout the whole run. This can be switched on using create_disturbances. The horizontal range to which these perturbations are applied is controlled by the parameters inflow_disturbance_begin and inflow_disturbance_end. The vertical range and the perturbation amplitude are given by disturbance_level_b, disturbance_level_t, and disturbance_amplitude. The time interval at which perturbations are to be imposed is set by dt_disturb.

In case of non-cyclic horizontal boundaries call_psolver at_all_substeps = .T. should be used.

Note:
Using non-cyclic lateral boundaries requires very sensitive adjustments of the inflow (vertical profiles) and the bottom boundary conditions, e.g. a surface heating should not be applied near the inflow boundary because this may significantly disturb the inflow. Please check the model results very carefully.

bc_ns

C * 20 'cyclic' Boundary condition along y (for all quantities).

By default, a cyclic boundary condition is used along y.

bc_ns may also be assigned the values 'dirichlet/radiation' (inflow from rear ("north"), outflow to the front ("south")) or 'radiation/dirichlet' (inflow from front ("south"), outflow to the rear ("north")). This requires the multi-grid method to be used for solving the Poisson equation for perturbation pressure (see psolver) and it also requires cyclic boundary conditions along x (see
bc_lr).

In case of these non-cyclic lateral boundaries, a Dirichlet condition is used at the inflow for all quantities (initial vertical profiles - see initializing_actions - are fixed during the run) except u, to which a Neumann (zero gradient) condition is applied. At the outflow, a radiation condition is used for all velocity components, while a Neumann (zero gradient) condition is used for the scalars. For perturbation pressure Neumann (zero gradient) conditions are assumed both at the inflow and at the outflow.

For further details regarding non-cyclic lateral boundary conditions see bc_lr.

bc_p_b

C * 20 'neumann'

Bottom boundary condition of the perturbation pressure. 

Allowed values are 'dirichlet', 'neumann' and 'neumann+inhomo''dirichlet' sets p(k=0)=0.0,  'neumann' sets p(k=0)=p(k=1). 'neumann+inhomo' corresponds to an extended Neumann boundary condition where heat flux or temperature inhomogeneities near the surface (pt(k=1))  are additionally regarded (see Shen and LeClerc (1995, Q.J.R. Meteorol. Soc., 1209)). This condition is only permitted with the Prandtl-layer switched on (prandtl_layer), otherwise the run is terminated. 

Since at the bottom boundary of the model the vertical velocity disappears (w(k=0) = 0.0), the consistent Neumann condition ('neumann' or 'neumann+inhomo') dp/dz = 0 should be used, which leaves the vertical component w unchanged when the pressure solver is applied. Simultaneous use of the Neumann boundary conditions both at the bottom and at the top boundary (bc_p_t) usually yields no consistent solution for the perturbation pressure and should be avoided.

bc_p_t

C * 20 'dirichlet'

Top boundary condition of the perturbation pressure. 

Allowed values are 'dirichlet' (p(k=nz+1)= 0.0) or 'neumann' (p(k=nz+1)=p(k=nz)). 

Simultaneous use of Neumann boundary conditions both at the top and bottom boundary (bc_p_b) usually yields no consistent solution for the perturbation pressure and should be avoided. Since at the bottom boundary the Neumann condition  is a good choice (see bc_p_b), a Dirichlet condition should be set at the top boundary.

bc_pt_b

C*20 'dirichlet'

Bottom boundary condition of the potential temperature. 

Allowed values are 'dirichlet' (pt(k=0) = const. = pt_surface + pt_surface_initial_change; the user may change this value during the run using user-defined code) and 'neumann' (pt(k=0)=pt(k=1)). 
When a constant surface sensible heat flux is used (surface_heatflux), bc_pt_b = 'neumann' must be used, because otherwise the resolved scale may contribute to the surface flux so that a constant value cannot be guaranteed.

bc_pt_t

C * 20 'initial gradient'

Top boundary condition of the potential temperature. 

Allowed are the values 'dirichlet' (pt(k=nz+1) does not change during the run), 'neumann' (pt(k=nz+1)=pt(k=nz)), and 'initial_gradient'. With the 'initial_gradient'-condition the value of the temperature gradient at the top is calculated from the initial temperature profile (see pt_surface, pt_vertical_gradient) by bc_pt_t_val = (pt_init(k=nz+1) - pt_init(k=nz)) / dzu(nz+1).
Using this value (assumed constant during the run) the temperature boundary values are calculated as 

    pt(k=nz+1) = pt(k=nz) + bc_pt_t_val * dzu(nz+1)

(up to k=nz the prognostic equation for the temperature is solved).
When a constant sensible heat flux is used at the top boundary (top_heatflux), bc_pt_t = 'neumann' must be used, because otherwise the resolved scale may contribute to the top flux so that a constant value cannot be guaranteed.

bc_q_b

C * 20 'dirichlet'

Bottom boundary condition of the specific humidity / total water content. 

Allowed values are 'dirichlet' (q(k=0) = const. = q_surface + q_surface_initial_change; the user may change this value during the run using user-defined code) and 'neumann' (q(k=0)=q(k=1)). 
When a constant surface latent heat flux is used (surface_waterflux), bc_q_b = 'neumann' must be used, because otherwise the resolved scale may contribute to the surface flux so that a constant value cannot be guaranteed.

bc_q_t

C * 20 'neumann'

Top boundary condition of the specific humidity / total water content. 

Allowed are the values 'dirichlet' (q(k=nz) and q(k=nz+1) do not change during the run) and 'neumann'. With the Neumann boundary condition the value of the humidity gradient at the top is calculated from the initial humidity profile (see q_surface, q_vertical_gradient) by: bc_q_t_val = ( q_init(k=nz) - q_init(k=nz-1)) / dzu(nz).
Using this value (assumed constant during the run) the humidity boundary values are calculated as 

    q(k=nz+1) =q(k=nz) + bc_q_t_val * dzu(nz+1)

(up tp k=nz the prognostic equation for q is solved).

bc_s_b

C * 20 'dirichlet'

Bottom boundary condition of the scalar concentration. 

Allowed values are 'dirichlet' (s(k=0) = const. = s_surface + s_surface_initial_change; the user may change this value during the run using user-defined code) and 'neumann' (s(k=0) = s(k=1)). 
When a constant surface concentration flux is used (surface_scalarflux), bc_s_b = 'neumann' must be used, because otherwise the resolved scale may contribute to the surface flux so that a constant value cannot be guaranteed.

bc_s_t

C * 20 'neumann'

Top boundary condition of the scalar concentration. 

Allowed are the values 'dirichlet' (s(k=nz) and s(k=nz+1) do not change during the run) and 'neumann'. With the Neumann boundary condition the value of the scalar concentration gradient at the top is calculated from the initial scalar concentration profile (see s_surface, s_vertical_gradient) by: bc_s_t_val = (s_init(k=nz) - s_init(k=nz-1)) / dzu(nz).
Using this value (assumed constant during the run) the concentration boundary values are calculated as

    s(k=nz+1) = s(k=nz) + bc_s_t_val * dzu(nz+1)

(up to k=nz the prognostic equation for the scalar concentration is solved).

bc_uv_b

C * 20 'dirichlet'

Bottom boundary condition of the horizontal velocity components u and v. 

Allowed values are 'dirichlet' and 'neumann'. bc_uv_b = 'dirichlet' yields the no-slip condition with u=v=0 at the bottom. Due to the staggered grid u(k=0) and v(k=0) are located at z = - 0,5 * dz (below the bottom), while u(k=1) and v(k=1) are located at z = +0,5 * dz. u=v=0 at the bottom is guaranteed using mirror boundary condition: 

    u(k=0) = - u(k=1) and v(k=0) = - v(k=1)

The Neumann boundary condition yields the free-slip condition with u(k=0) = u(k=1) and v(k=0) = v(k=1). With Prandtl - layer switched on, the free-slip condition is not allowed (otherwise the run will be terminated).

bc_uv_t

C * 20 'dirichlet'

Top boundary condition of the horizontal velocity components u and v. 

Allowed values are 'dirichlet' and 'neumann'. The Dirichlet condition yields u(k=nz+1) = ug(nz+1) and v(k=nz+1) = vg(nz+1), Neumann condition yields the free-slip condition with u(k=nz+1) = u(k=nz) and v(k=nz+1) = v(k=nz) (up to k=nz the prognostic equations for the velocities are solved).

building_height R 50.0 Height of a single building in m.

building_height must be less than the height of the model domain. This parameter requires the use of topography = 'single_building'.
building_length_x R 50.0 Width of a single building in m.

Currently, building_length_x must be at least 3 * dx and no more than nx - 1 ) * dx - building_wall_left. This parameter requires the use of topography = 'single_building'.
building_length_y R 50.0 Depth of a single building in m.

Currently, building_length_y must be at least 3 * dy and no more than ny - 1 )  * dy - building_wall_south. This parameter requires the use of topography = 'single_building'.
building_wall_left R building centered in x-direction x-coordinate of the left building wall (distance between the left building wall and the left border of the model domain) in m.

Currently, building_wall_left must be at least 1 * dx and less than ( nx  - 1 ) * dxbuilding_length_x. This parameter requires the use of topography = 'single_building'.

The default value building_wall_left = ( ( nx + 1 ) * dxbuilding_length_x ) / 2 centers the building in x-direction.
building_wall_south R building centered in y-direction y-coordinate of the South building wall (distance between the South building wall and the South border of the model domain) in m.

Currently, building_wall_south must be at least 1 * dy and less than ( ny  - 1 ) * dybuilding_length_y. This parameter requires the use of topography = 'single_building'.

The default value building_wall_south = ( ( ny + 1 ) * dybuilding_length_y ) / 2 centers the building in y-direction.
cloud_droplets
L
.F.
Parameter to switch on usage of cloud droplets.

Cloud droplets require to use the particle package (mrun-option -p particles), so in this case a particle corresponds to a droplet. The droplet features (number of droplets, initial radius, etc.) can be steered with the  respective particle parameters (see e.g. radius). The real number of initial droplets in a grid cell is equal to the initial number of droplets (defined by the particle source parameters pst, psl, psr, pss, psn, psb, pdx, pdy and pdz) times the initial_weighting_factor.

In case of using cloud droplets, the default condensation scheme in PALM cannot be used, i.e. cloud_physics must be set .F..

cloud_physics

L
.F.

Parameter to switch on the condensation scheme. 

For cloud_physics = .TRUE., equations for the liquid water  content and the liquid water potential temperature are solved instead of those for specific humidity and potential temperature. Note that a grid volume is assumed to be either completely saturated or completely unsaturated (0%-or-100%-scheme). A simple precipitation scheme can additionally be switched on with parameter precipitation. Also cloud-top cooling by longwave radiation can be utilized (see radiation)

cloud_physics =
.TRUE. requires humidity = .TRUE. .
Detailed information about the condensation scheme is given in the description of the cloud physics module (pdf-file, only in German).

This condensation scheme is not allowed if cloud droplets are simulated explicitly (see cloud_droplets).
conserve_volume_flow L .F. Conservation of volume flow in x- and y-direction.

conserve_volume_flow = .TRUE. guarantees that the volume flow through the xz- or yz-cross-section of the total model domain remains constant (equal to the initial value at t=0) throughout the run.

cut_spline_overshoot

L .T.

Cuts off of so-called overshoots, which can occur with the upstream-spline scheme. 

The cubic splines tend to overshoot in case of discontinuous changes of variables between neighbouring grid points. This may lead to errors in calculating the advection tendency. Choice of cut_spline_overshoot = .TRUE. (switched on by default) allows variable values not to exceed an interval defined by the respective adjacent grid points. This interval can be adjusted seperately for every prognostic variable (see initialization parameters overshoot_limit_e, overshoot_limit_pt, overshoot_limit_u, etc.). This might be necessary in case that the default interval has a non-tolerable effect on the model results. 

Overshoots may also be removed using the parameters ups_limit_e, ups_limit_pt, etc. as well as by applying a long-filter (see long_filter_factor).

damp_level_1d

R zu(nz+1)

Height where the damping layer begins in the 1d-model (in m). 

This parameter is used to switch on a damping layer for the 1d-model, which is generally needed for the damping of inertia oscillations. Damping is done by gradually increasing the value of the eddy diffusivities about 10% per vertical grid level (starting with the value at the height given by damp_level_1d, or possibly from the next grid pint above), i.e. Km(k+1) = 1.1 * Km(k). The values of Km are limited to 10 m**2/s at maximum. 
This parameter only comes into effect if the 1d-model is switched on for the initialization of the 3d-model using initializing_actions = 'set_1d-model_profiles'.

dissipation_1d
C*20
'as_in_3d_
model'
Calculation method for the energy dissipation term in the TKE equation of the 1d-model.

By default the dissipation is calculated as in the 3d-model using diss = (0.19 + 0.74 * l / l_grid) * e**1.5 / l.

Setting dissipation_1d = 'detering' forces the dissipation to be calculated as diss = 0.064 * e**1.5 / l.

dt

R variable

Time step for the 3d-model (in s). 

By default, (i.e. if a Runge-Kutta scheme is used, see timestep_scheme) the value of the time step is calculating after each time step (following the time step criteria) and used for the next step.

If the user assigns dt a value, then the time step is fixed to this value throughout the whole run (whether it fulfills the time step criteria or not). However, changes are allowed for restart runs, because dt can also be used as a run parameter

In case that the calculated time step meets the condition

    dt < 0.00001 * dt_max (with dt_max = 20.0)

the simulation will be aborted. Such situations usually arise in case of any numerical problem / instability which causes a non-realistic increase of the wind speed. 

A small time step due to a large mean horizontal windspeed speed may be enlarged by using a coordinate transformation (see galilei_transformation), in order to spare CPU time.

If the leapfrog timestep scheme is used (see timestep_scheme) a temporary time step value dt_new is calculated first, with dt_new = cfl_factor * dt_crit where dt_crit is the maximum timestep allowed by the CFL and diffusion condition. Next it is examined whether dt_new exceeds or falls below the value of the previous timestep by at least +5 % / -2%. If it is smaller, dt = dt_new is immediately used for the next timestep. If it is larger, then dt = 1.02 * dt_prev (previous timestep) is used as the new timestep, however the time step is only increased if the last change of the time step is dated back at least 30 iterations. If dt_new is located in the interval mentioned above, then dt does not change at all. By doing so, permanent time step changes as well as large sudden changes (increases) in the time step are avoided.

dt_pr_1d

R 9999999.9

Temporal interval of vertical profile output of the 1D-model (in s). 

Data are written in ASCII format to file LIST_PROFIL_1D. This parameter is only in effect if the 1d-model has been switched on for the initialization of the 3d-model with initializing_actions = 'set_1d-model_profiles'.

dt_run_control_1d

R 60.0

Temporal interval of runtime control output of the 1d-model (in s). 

Data are written in ASCII format to file RUN_CONTROL. This parameter is only in effect if the 1d-model is switched on for the initialization of the 3d-model with initializing_actions = 'set_1d-model_profiles'.

dx

R 1.0

Horizontal grid spacing along the x-direction (in m). 

Along x-direction only a constant grid spacing is allowed.

dy

R 1.0

Horizontal grid spacing along the x-direction (in m). 

Along x-direction only a constant grid spacing is allowed.

dz

R

Vertical grid spacing (in m). 

This parameter must be assigned by the user, because no default value is given.

By default, the model uses constant grid spacing along z-direction, but it can be stretched using the parameters dz_stretch_level and dz_stretch_factor. In case of stretching, a maximum allowed grid spacing can be given by dz_max.

Assuming a constant dz, the scalar levels (zu) are calculated directly by: 

    zu(0) = - dz * 0.5 
    zu(1) = dz * 0.5

The w-levels lie half between them: 

    zw(k) = ( zu(k) + zu(k+1) ) * 0.5

dz_maxR9999999.9Allowed maximum vertical grid spacing (in m).

If the vertical grid is stretched (see dz_stretch_factor and dz_stretch_level), dz_max can be used to limit the vertical grid spacing.

dz_stretch_factor

R 1.08

Stretch factor for a vertically stretched grid (see dz_stretch_level). 

The stretch factor should not exceed a value of approx. 1.10 - 1.12, otherwise the discretization errors due to the stretched grid not negligible any more. (refer Kalnay de Rivas)

dz_stretch_level

R 100000.0

Height level above which the grid is to be stretched vertically (in m). 

The vertical grid spacings dz above this level are calculated as 

and used as spacings for the scalar levels (zu). The w-levels are then defined as: 

    zw(k) = ( zu(k) + zu(k+1) ) * 0.5

e_min R 0.0 Minimum subgrid-scale TKE in m2s-2.

This option adds artificial viscosity to the flow by ensuring that the subgrid-scale TKE does not fall below the minimum threshold e_min.

end_time_1d

R 864000.0

Time to be simulated for the 1d-model (in s). 

The default value corresponds to a simulated time of 10 days. Usually, after such a period the inertia oscillations have completely decayed and the solution of the 1d-model can be regarded as stationary (see damp_level_1d). This parameter is only in effect if the 1d-model is switched on for the initialization of the 3d-model with initializing_actions = 'set_1d-model_profiles'.

fft_method

C * 20 'system-
specific'

FFT-method to be used.


The fast fourier transformation (FFT) is used for solving the perturbation pressure equation with a direct method (see psolver) and for calculating power spectra (see optional software packages, section 4.2).


By default, system-specific, optimized routines from external vendor libraries are used. However, these are available only on certain computers and there are more or less severe restrictions concerning the number of gridpoints to be used with them.

There are two other PALM internal methods available on every machine (their respective source code is part of the PALM source code):

1.: The Temperton-method from Clive Temperton (ECWMF) which is computationally very fast and switched on with fft_method = 'temperton-algorithm'. The number of horizontal gridpoints (nx+1, ny+1) to be used with this method must be composed of prime factors 2, 3 and 5.

2.: The Singleton-method which is very slow but has no restrictions concerning the number of gridpoints to be used with, switched on with fft_method = 'singleton-algorithm'.

galilei_transformation

L .F. Application of a Galilei-transformation to the coordinate system of the model.

With galilei_transformation = .T., a so-called Galilei-transformation is switched on which ensures that the coordinate system of the model is moved along with the geostrophical wind. Alternatively, the model domain can be moved along with the averaged horizontal wind (see use_ug_for_galilei_tr, this can and will naturally change in time). With this method, numerical inaccuracies of the Piascek - Williams - scheme (concerns in particular the momentum advection) are minimized. Beyond that, in the majority of cases the lower relative velocities in the moved system permit a larger time step (dt). Switching the transformation on is only worthwhile if the geostrophical wind (ug, vg) and the averaged horizontal wind clearly deviate from the value 0. In each case, the distance the coordinate system has been moved is written to the file RUN_CONTROL

Non-cyclic lateral boundary conditions (see bc_lr and bc_ns), the specification of a gestrophic wind that is not constant with height as well as e.g. stationary inhomogeneities at the bottom boundary do not allow the use of this transformation.

grid_matching

C * 6 'match' Variable to adjust the subdomain sizes in parallel runs.

For grid_matching = 'strict', the subdomains are forced to have an identical size on all processors. In this case the processor numbers in the respective directions of the virtual processor net must fulfill certain divisor conditions concerning the grid point numbers in the three directions (see nx, ny and nz). Advantage of this method is that all PEs bear the same computational load.

There is no such restriction by default, because then smaller subdomains are allowed on those processors which form the right and/or north boundary of the virtual processor grid. On all other processors the subdomains are of same size. Whether smaller subdomains are actually used, depends on the number of processors and the grid point numbers used. Information about the respective settings are given in file RUN_CONTROL.

When using a multi-grid method for solving the Poisson equation (see psolver) only grid_matching = 'strict' is allowed.

Note:
In some cases for small processor numbers there may be a very bad load balancing among the processors which may reduce the performance of the code.
inflow_disturbance_
begin
I MIN(10,
nx/2 or ny/2)
Lower limit of the horizontal range for which random perturbations are to be imposed on the horizontal velocity field (gridpoints).

If non-cyclic lateral boundary conditions are used (see bc_lr or bc_ns), this parameter gives the gridpoint number (counted horizontally from the inflow)  from which on perturbations are imposed on the horizontal velocity field. Perturbations must be switched on with parameter create_disturbances.
inflow_disturbance_
end
I MIN(100,
3/4*nx or
3/4*ny)
Upper limit of the horizontal range for which random perturbations are to be imposed on the horizontal velocity field (gridpoints).

If non-cyclic lateral boundary conditions are used (see bc_lr or bc_ns), this parameter gives the gridpoint number (counted horizontally from the inflow)  unto which perturbations are imposed on the horizontal velocity field. Perturbations must be switched on with parameter create_disturbances.

initializing_actions

C * 100

Initialization actions to be carried out. 

This parameter does not have a default value and therefore must be assigned with each model run. For restart runs initializing_actions = 'read_restart_data' must be set. For the initial run of a job chain the following values are allowed: 

'set_constant_profiles'

'set_1d-model_profiles'

    The arrays of the 3d-model are initialized with the (stationary) solution of the 1d-model. These are the variables e, kh, km, u, v and with Prandtl layer switched on rif, us, usws, vsws. The temperature (humidity) profile consisting of linear sections is set as for 'set_constant_profiles' and assumed as constant in time within the 1d-model. For steering of the 1d-model a set of parameters with suffix "_1d" (e.g. end_time_1d, damp_level_1d) is available.

'by_user'

The initialization of the arrays of the 3d-model is under complete control of the user and has to be done in routine user_init_3d_model of the user-interface.

'initialize_vortex'

The initial velocity field of the 3d-model corresponds to a Rankine-vortex with vertical axis. This setting may be used to test advection schemes. Free-slip boundary conditions for u and v (see bc_uv_b, bc_uv_t) are necessary. In order not to distort the vortex, an initial horizontal wind profile constant with height is necessary (to be set by initializing_actions = 'set_constant_profiles') and some other conditions have to be met (neutral stratification, diffusion must be switched off, see km_constant). The center of the vortex is located at jc = (nx+1)/2. It extends from k = 0 to k = nz+1. Its radius is 8 * dx and the exponentially decaying part ranges to 32 * dx (see init_rankine.f90).

'initialize_ptanom'

    A 2d-Gauss-like shape disturbance (x,y) is added to the initial temperature field with radius 10.0 * dx and center at jc = (nx+1)/2. This may be used for tests of scalar advection schemes (see scalar_advec). Such tests require a horizontal wind profile constant with hight and diffusion switched off (see 'initialize_vortex'). Additionally, the buoyancy term must be switched of in the equation of motion  for w (this requires the user to comment out the call of buoyancy in the source code of prognostic_equations.f90).

Values may be combined, e.g. initializing_actions = 'set_constant_profiles initialize_vortex', but the values of 'set_constant_profiles', 'set_1d-model_profiles' , and 'by_user' must not be given at the same time.

km_constant

R variable
(computed from TKE)

Constant eddy diffusivities are used (laminar simulations). 

If this parameter is specified, both in the 1d and in the 3d-model constant values for the eddy diffusivities are used in space and time with Km = km_constant and Kh = Km / prandtl_number. The prognostic equation for the subgrid-scale TKE is switched off. Constant eddy diffusivities are only allowed with the Prandtl layer (prandtl_layer) switched off.

km_damp_max

R 0.5*(dx or dy) Maximum diffusivity used for filtering the velocity field in the vicinity of the outflow (in m2/s).

When using non-cyclic lateral boundaries (see bc_lr or bc_ns), a smoothing has to be applied to the velocity field in the vicinity of the outflow in order to suppress any reflections of outgoing disturbances. Smoothing is done by increasing the eddy diffusivity along the horizontal direction which is perpendicular to the outflow boundary. Only velocity components parallel to the outflow boundary are filtered (e.g. v and w, if the outflow is along x). Damping is applied from the bottom to the top of the domain.

The horizontal range of the smoothing is controlled by outflow_damping_width which defines the number of gridpoints (counted from the outflow boundary) from where on the smoothing is applied. Starting from that point, the eddy diffusivity is linearly increased (from zero to its maximum value given by km_damp_max) until half of the damping range width, from where it remains constant up to the outflow boundary. If at a certain grid point the eddy diffusivity calculated from the flow field is larger than as described above, it is used instead.

The default value of km_damp_max has been empirically proven to be sufficient.

long_filter_factor

R 0.0

Filter factor for the so-called Long-filter.


This filter very efficiently eliminates 2-delta-waves sometimes cauesed by the upstream-spline scheme (see Mahrer and Pielke, 1978: Mon. Wea. Rev., 106, 818-830). It works in all three directions in space. A value of long_filter_factor = 0.01 sufficiently removes the small-scale waves without affecting the longer waves.

By default, the filter is switched off (= 0.0). It is exclusively applied to the tendencies calculated by the upstream-spline scheme (see momentum_advec and scalar_advec), not to the prognostic variables themselves. At the bottom and top boundary of the model domain the filter effect for vertical 2-delta-waves is reduced. There, the amplitude of these waves is only reduced by approx. 50%, otherwise by nearly 100%. 
Filter factors with values > 0.01 also reduce the amplitudes of waves with wavelengths longer than 2-delta (see the paper by Mahrer and Pielke, quoted above).

loop_optimizationC*16see rightMethod used to optimize loops for solving the prognostic equations .

By default, the optimization method depends on the host on which PALM is running. On machines with vector-type CPUs, single 3d-loops are used to calculate each tendency term of each prognostic equation, while on all other machines, all prognostic equations are solved within one big loop over the two horizontal indices i and j (giving a good cache uitilization).

The default behaviour can be changed by setting either loop_optimization = 'vector' or loop_optimization = 'cache'.
mixing_length_1d
C*20
'as_in_3d_
model'
Mixing length used in the 1d-model.

By default the mixing length is calculated as in the 3d-model (i.e. it depends on the grid spacing).

By setting mixing_length_1d = 'blackadar', the so-called Blackadar mixing length is used (l = kappa * z / ( 1 + kappa * z / lambda ) with the limiting value lambda = 2.7E-4 * u_g / f).

humidity

L .F.

Parameter to switch on the prognostic equation for specific humidity q.

The initial vertical profile of q can be set via parameters q_surface, q_vertical_gradient and q_vertical_gradient_level.  Boundary conditions can be set via q_surface_initial_change and surface_waterflux.

If the condensation scheme is switched on (cloud_physics = .TRUE.), q becomes the total liquid water content (sum of specific humidity and liquid water content).

momentum_advec

C * 10 'pw-scheme'

Advection scheme to be used for the momentum equations.

The user can choose between the following schemes:
 

'pw-scheme'

The scheme of Piascek and Williams (1970, J. Comp. Phys., 6, 392-405) with central differences in the form C3 is used.
If intermediate Euler-timesteps are carried out in case of timestep_scheme = 'leapfrog+euler' the advection scheme is - for the Euler-timestep - automatically switched to an upstream-scheme.

'ups-scheme'

The upstream-spline scheme is used (see Mahrer and Pielke, 1978: Mon. Wea. Rev., 106, 818-830). In opposite to the Piascek-Williams scheme, this is characterized by much better numerical features (less numerical diffusion, better preservation of flow structures, e.g. vortices), but computationally it is much more expensive. In addition, the use of the Euler-timestep scheme is mandatory (timestep_scheme = 'euler'), i.e. the timestep accuracy is only of first order. For this reason the advection of scalar variables (see scalar_advec) should then also be carried out with the upstream-spline scheme, because otherwise the scalar variables would be subject to large numerical diffusion due to the upstream scheme. 

Since the cubic splines used tend to overshoot under certain circumstances, this effect must be adjusted by suitable filtering and smoothing (see cut_spline_overshoot, long_filter_factor, ups_limit_pt, ups_limit_u, ups_limit_v, ups_limit_w). This is always neccessary for runs with stable stratification, even if this stratification appears only in parts of the model domain.

With stable stratification the upstream-spline scheme also produces gravity waves with large amplitude, which must be suitably damped (see rayleigh_damping_factor).

Important: The  upstream-spline scheme is not implemented for humidity and passive scalars (see humidity and passive_scalar) and requires the use of a 2d-domain-decomposition. The last conditions severely restricts code optimization on several machines leading to very long execution times! The scheme is also not allowed for non-cyclic lateral boundary conditions (see bc_lr and bc_ns).
netcdf_precision
C*20
(10)
single preci-
sion for all
output quan-
tities
Defines the accuracy of the NetCDF output.

By default, all NetCDF output data (see data_output_format) have single precision  (4 byte) accuracy. Double precision (8 byte) can be choosen alternatively.
Accuracy for the different output data (cross sections, 3d-volume data, spectra, etc.) can be set independently.
'<out>_NF90_REAL4' (single precision) or '<out>_NF90_REAL8' (double precision) are the two principally allowed values for netcdf_precision, where the string '<out>' can be chosen out of the following list:

'xy'
horizontal cross section
'xz'
vertical (xz) cross section
'yz'
vertical (yz) cross section
'2d'
all cross sections
'3d'
volume data
'pr'
vertical profiles
'ts'
time series, particle time series
'sp'
spectra
'prt'
particles
'all'
all output quantities

Example:
If all cross section data and the particle data shall be output in double precision and all other quantities in single precision, then netcdf_precision = '2d_NF90_REAL8', 'prt_NF90_REAL8' has to be assigned.

npex

I

Number of processors along x-direction of the virtual processor net. 

For parallel runs, the total number of processors to be used is given by the mrun option -X. By default, depending on the type of the parallel computer, PALM generates a 1d processor net (domain decomposition along x, npey = 1) or a 2d-net (this is favored on machines with fast communication network). In case of a 2d-net, it is tried to make it more or less square-shaped. If, for example, 16 processors are assigned (-X 16), a 4 * 4 processor net is generated (npex = 4, npey = 4). This choice is optimal for square total domains (nx = ny), since then the number of ghost points at the lateral boundarys of the subdomains is minimal. If nx nd ny differ extremely, the processor net should be manually adjusted using adequate values for npex and npey

Important: The value of npex * npey must exactly correspond to the value assigned by the mrun-option -X. Otherwise the model run will abort with a corresponding error message. 
Additionally, the specification of npex and npey may of course override the default setting for the domain decomposition (1d or 2d) which may have a significant (negative) effect on the code performance.

npey

I

Number of processors along y-direction of the virtual processor net. 

For further information see npex.

nsor_ini

I 100

Initial number of iterations with the SOR algorithm. 

This parameter is only effective if the SOR algorithm was selected as the pressure solver scheme (psolver = 'sor') and specifies the number of initial iterations of the SOR scheme (at t = 0). The number of subsequent iterations at the following timesteps is determined with the parameter nsor. Usually nsor < nsor_ini, since in each case subsequent calls to psolver use the solution of the previous call as initial value. Suitable test runs should determine whether sufficient convergence of the solution is obtained with the default value and if necessary the value of nsor_ini should be changed.

nx

I

Number of grid points in x-direction. 

A value for this parameter must be assigned. Since the lower array bound in PALM starts with i = 0, the actual number of grid points is equal to nx+1. In case of cyclic boundary conditions along x, the domain size is (nx+1)* dx.

For parallel runs, in case of grid_matching = 'strict', nx+1 must be an integral multiple of the processor numbers (see npex and npey) along x- as well as along y-direction (due to data transposition restrictions).

ny

I

Number of grid points in y-direction. 

A value for this parameter must be assigned. Since the lower array bound in PALM starts with i = 0, the actual number of grid points is equal to ny+1. In case of cyclic boundary conditions along y, the domain size is (ny+1) * dy.

For parallel runs, in case of grid_matching = 'strict', ny+1 must be an integral multiple of the processor numbers (see npex and npey)  along y- as well as along x-direction (due to data transposition restrictions).

nz

I

Number of grid points in z-direction. 

A value for this parameter must be assigned. Since the lower array bound in PALM starts with k = 0 and since one additional grid point is added at the top boundary (k = nz+1), the actual number of grid points is nz+2. However, the prognostic equations are only solved up to nz (u, v) or up to nz-1 (w, scalar quantities). The top boundary for u and v is at k = nz+1 (u, v) while at k = nz for all other quantities. 

For parallel runs,  in case of grid_matching = 'strict', nz must be an integral multiple of the number of processors in x-direction (due to data transposition restrictions).

omega

R 7.29212E-5

Angular velocity of the rotating system (in rad s-1). 

The angular velocity of the earth is set by default. The values of the Coriolis parameters are calculated as: 

    f = 2.0 * omega * sin(phi
    f* = 2.0 * omega * cos(phi)

outflow_damping_width

I MIN(20, nx/2 or ny/2) Width of the damping range in the vicinity of the outflow (gridpoints).

When using non-cyclic lateral boundaries (see bc_lr or bc_ns), a smoothing has to be applied to the velocity field in the vicinity of the outflow in order to suppress any reflections of outgoing disturbances. This parameter controlls the horizontal range to which the smoothing is applied. The range is given in gridpoints counted from the respective outflow boundary. For further details about the smoothing see parameter km_damp_max, which defines the magnitude of the damping.

overshoot_limit_e

R 0.0

Allowed limit for the overshooting of subgrid-scale TKE in case that the upstream-spline scheme is switched on (in m2/s2). 

By deafult, if cut-off of overshoots is switched on for the upstream-spline scheme (see cut_spline_overshoot), no overshoots are permitted at all. If overshoot_limit_e is given a non-zero value, overshoots with the respective amplitude (both upward and downward) are allowed. 

Only positive values are allowed for overshoot_limit_e.

overshoot_limit_pt

R 0.0

Allowed limit for the overshooting of potential temperature in case that the upstream-spline scheme is switched on (in K). 

For further information see overshoot_limit_e

Only positive values are allowed for overshoot_limit_pt.

overshoot_limit_u

R 0.0 Allowed limit for the overshooting of the u-component of velocity in case that the upstream-spline scheme is switched on (in m/s).

For further information see overshoot_limit_e

Only positive values are allowed for overshoot_limit_u.

overshoot_limit_v

R 0.0

Allowed limit for the overshooting of the v-component of velocity in case that the upstream-spline scheme is switched on (in m/s). 

For further information see overshoot_limit_e

Only positive values are allowed for overshoot_limit_v.

overshoot_limit_w

R 0.0

Allowed limit for the overshooting of the w-component of velocity in case that the upstream-spline scheme is switched on (in m/s). 

For further information see overshoot_limit_e

Only positive values are permitted for overshoot_limit_w.

passive_scalar

L .F.

Parameter to switch on the prognostic equation for a passive scalar.

The initial vertical profile of s can be set via parameters s_surface, s_vertical_gradient and  s_vertical_gradient_level. Boundary conditions can be set via s_surface_initial_change and surface_scalarflux

Note:
With passive_scalar switched on, the simultaneous use of humidity (see humidity) is impossible.

phi

R 55.0

Geographical latitude (in degrees). 

The value of this parameter determines the value of the Coriolis parameters f and f*, provided that the angular velocity (see omega) is non-zero.

prandtl_layer

L .T.

Parameter to switch on a Prandtl layer. 

By default, a Prandtl layer is switched on at the bottom boundary between z = 0 and z = 0.5 * dz (the first computational grid point above ground for u, v and the scalar quantities). In this case, at the bottom boundary, free-slip conditions for u and v (see bc_uv_b) are not allowed. Likewise, laminar simulations with constant eddy diffusivities (km_constant) are forbidden. 

With Prandtl-layer switched off, the TKE boundary condition bc_e_b = '(u*)**2+neumann' must not be used and is automatically changed to 'neumann' if necessary.  Also, the pressure boundary condition bc_p_b = 'neumann+inhomo'  is not allowed.

The roughness length is declared via the parameter roughness_length.

precipitation

L .F.

Parameter to switch on the precipitation scheme.

For precipitation processes PALM uses a simplified Kessler scheme. This scheme only considers the so-called autoconversion, that means the generation of rain water by coagulation of cloud drops among themselves. Precipitation begins and is immediately removed from the flow as soon as the liquid water content exceeds the critical value of 0.5 g/kg.

The precipitation rate and amount can be output by assigning the runtime parameter data_output = 'prr*' or 'pra*', respectively. The time interval on which the precipitation amount is defined can be controlled via runtime parameter precipitation_amount_interval.

pt_referenceRuse horizontal average as refrenceReference temperature to be used in all buoyancy terms (in K).

By default, the instantaneous horizontal average over the total model domain is used.

pt_surface

R 300.0

Surface potential temperature (in K). 

This parameter assigns the value of the potential temperature pt at the surface (k=0). Starting from this value, the initial vertical temperature profile is constructed with pt_vertical_gradient and pt_vertical_gradient_level . This profile is also used for the 1d-model as a stationary profile.

pt_surface_initial
_change

R 0.0

Change in surface temperature to be made at the beginning of the 3d run (in K). 

If pt_surface_initial_change is set to a non-zero value, the near surface sensible heat flux is not allowed to be given simultaneously (see surface_heatflux).

pt_vertical_gradient

R (10) 10 * 0.0

Temperature gradient(s) of the initial temperature profile (in K / 100 m). 

This temperature gradient holds starting from the height  level defined by pt_vertical_gradient_level (precisely: for all uv levels k where zu(k) > pt_vertical_gradient_level, pt_init(k) is set: pt_init(k) = pt_init(k-1) + dzu(k) * pt_vertical_gradient) up to the top boundary or up to the next height level defined by pt_vertical_gradient_level. A total of 10 different gradients for 11 height intervals (10 intervals if pt_vertical_gradient_level(1) = 0.0) can be assigned. The surface temperature is assigned via pt_surface

Example: 

    pt_vertical_gradient = 1.0, 0.5
    pt_vertical_gradient_level = 500.0, 1000.0,

That defines the temperature profile to be neutrally stratified up to z = 500.0 m with a temperature given by pt_surface. For 500.0 m < z <= 1000.0 m the temperature gradient is 1.0 K / 100 m and for z > 1000.0 m up to the top boundary it is 0.5 K / 100 m (it is assumed that the assigned height levels correspond with uv levels).

pt_vertical_gradient
_level

R (10)

10 *  0.0

Height level from which on the temperature gradient defined by pt_vertical_gradient is effective (in m). 

The height levels are to be assigned in ascending order. The default values result in a neutral stratification regardless of the values of pt_vertical_gradient (unless the top boundary of the model is higher than 100000.0 m). For the piecewise construction of temperature profiles see pt_vertical_gradient.

q_surface

R 0.0

Surface specific humidity / total water content (kg/kg). 

This parameter assigns the value of the specific humidity q at the surface (k=0).  Starting from this value, the initial humidity profile is constructed with  q_vertical_gradient and q_vertical_gradient_level. This profile is also used for the 1d-model as a stationary profile.

q_surface_initial
_change

R
0.0

Change in surface specific humidity / total water content to be made at the beginning of the 3d run (kg/kg). 

If q_surface_initial_change is set to a non-zero value the near surface latent heat flux (water flux) is not allowed to be given simultaneously (see surface_waterflux).

q_vertical_gradient

R (10) 10 * 0.0

Humidity gradient(s) of the initial humidity profile (in 1/100 m). 

This humidity gradient holds starting from the height level  defined by q_vertical_gradient_level (precisely: for all uv levels k, where zu(k) > q_vertical_gradient_level, q_init(k) is set: q_init(k) = q_init(k-1) + dzu(k) * q_vertical_gradient) up to the top boundary or up to the next height level defined by q_vertical_gradient_level. A total of 10 different gradients for 11 height intervals (10 intervals if q_vertical_gradient_level(1) = 0.0) can be asigned. The surface humidity is assigned via q_surface.

Example: 

    q_vertical_gradient = 0.001, 0.0005
    q_vertical_gradient_level = 500.0, 1000.0,

That defines the humidity to be constant with height up to z = 500.0 m with a value given by q_surface. For 500.0 m < z <= 1000.0 m the humidity gradient is 0.001 / 100 m and for z > 1000.0 m up to the top boundary it is 0.0005 / 100 m (it is assumed that the assigned height levels correspond with uv levels).

q_vertical_gradient
_level

R (10)

10 *  0.0

Height level from which on the humidity gradient defined by q_vertical_gradient is effective (in m). 

The height levels are to be assigned in ascending order. The default values result in a humidity constant with height regardless of the values of q_vertical_gradient (unless the top boundary of the model is higher than 100000.0 m). For the piecewise construction of humidity profiles see q_vertical_gradient.

radiation

L .F.

Parameter to switch on longwave radiation cooling at cloud-tops. 

Long-wave radiation processes are parameterized by the effective emissivity, which considers only the absorption and emission of long-wave radiation at cloud droplets. The radiation scheme can be used only with cloud_physics = .TRUE. .

random_generator

C * 20

'numerical
recipes'

Random number generator to be used for creating uniformly distributed random numbers.

It is used if random perturbations are to be imposed on the velocity field or on the surface heat flux field (see create_disturbances and random_heatflux). By default, the "Numerical Recipes" random number generator is used. This one provides exactly the same order of random numbers on all different machines and should be used in particular for comparison runs.

Besides, a system-specific generator is available ( random_generator = 'system-specific') which should particularly be used for runs on vector parallel computers (NEC), because the default generator cannot be vectorized and therefore significantly drops down the code performance on these machines.

Note:
Results from two otherwise identical model runs will not be comparable one-to-one if they used different random number generators.

random_heatflux

L .F.

Parameter to impose random perturbations on the internal two-dimensional near surface heat flux field shf.

If a near surface heat flux is used as bottom boundary condition (see surface_heatflux), it is by default assumed to be horizontally homogeneous. Random perturbations can be imposed on the internal two-dimensional heat flux field shf by assigning random_heatflux = .T.. The disturbed heat flux field is calculated by multiplying the values at each mesh point with a normally distributed random number with a mean value and standard deviation of 1. This is repeated after every timestep.

In case of a non-flat topography, assigning random_heatflux = .T. imposes random perturbations on the combined heat flux field shf composed of surface_heatflux at the bottom surface and wall_heatflux(0) at the topography top face.

rif_max

R 1.0

Upper limit of the flux-Richardson number. 

With the Prandtl layer switched on (see prandtl_layer), flux-Richardson numbers (rif) are calculated for z=zp (k=1) in the 3d-model (in the 1d model for all heights). Their values in particular determine the values of the friction velocity (1d- and 3d-model) and the values of the eddy diffusivity (1d-model). With small wind velocities at the Prandtl layer top or small vertical wind shears in the 1d-model, rif can take up unrealistic large values. They are limited by an upper (rif_max) and lower limit (see rif_min) for the flux-Richardson number. The condition rif_max > rif_min must be met.

rif_min

R - 5.0

Lower limit of the flux-Richardson number. 

For further explanations see rif_max. The condition rif_max > rif_min must be met.

roughness_length

R 0.1

Roughness length (in m). 

This parameter is effective only in case that a Prandtl layer is switched on (see prandtl_layer).

scalar_advec

C * 10 'pw-scheme'

Advection scheme to be used for the scalar quantities. 

The user can choose between the following schemes:

'pw-scheme'

The scheme of Piascek and Williams (1970, J. Comp. Phys., 6, 392-405) with central differences in the form C3 is used.
If intermediate Euler-timesteps are carried out in case of timestep_scheme = 'leapfrog+euler' the advection scheme is - for the Euler-timestep - automatically switched to an upstream-scheme.

'bc-scheme'

The Bott scheme modified by Chlond (1994, Mon. Wea. Rev., 122, 111-125). This is a conservative monotonous scheme with very small numerical diffusion and therefore very good conservation of scalar flow features. The scheme however, is computationally very expensive both because it is expensive itself and because it does (so far) not allow specific code optimizations (e.g. cache optimization). Choice of this scheme forces the Euler timestep scheme to be used for the scalar quantities. For output of horizontally averaged profiles of the resolved / total heat flux, data_output_pr = 'w*pt*BC' / 'wptBC' should be used, instead of the standard profiles ('w*pt*' and 'wpt') because these are too inaccurate with this scheme. However, for subdomain analysis (see statistic_regions) exactly the reverse holds: here 'w*pt*BC' and 'wptBC' show very large errors and should not be used.

This scheme is not allowed for non-cyclic lateral boundary conditions (see bc_lr and bc_ns).

'ups-scheme'

The upstream-spline-scheme is used (see Mahrer and Pielke, 1978: Mon. Wea. Rev., 106, 818-830). In opposite to the Piascek Williams scheme, this is characterized by much better numerical features (less numerical diffusion, better preservation of flux structures, e.g. vortices), but computationally it is much more expensive. In addition, the use of the Euler-timestep scheme is mandatory (timestep_scheme = 'euler'), i.e. the timestep accuracy is only first order. For this reason the advection of momentum (see momentum_advec) should then also be carried out with the upstream-spline scheme, because otherwise the momentum would be subject to large numerical diffusion due to the upstream scheme. 

Since the cubic splines used tend to overshoot under certain circumstances, this effect must be adjusted by suitable filtering and smoothing (see cut_spline_overshoot, long_filter_factor, ups_limit_pt, ups_limit_u, ups_limit_v, ups_limit_w). This is always neccesssary for runs with stable stratification, even if this stratification appears only in parts of the model domain. 

With stable stratification the upstream-upline scheme also produces gravity waves with large amplitude, which must be suitably damped (see rayleigh_damping_factor).

Important: The  upstream-spline scheme is not implemented for humidity and passive scalars (see humidity and passive_scalar) and requires the use of a 2d-domain-decomposition. The last conditions severely restricts code optimization on several machines leading to very long execution times! This scheme is also not allowed for non-cyclic lateral boundary conditions (see bc_lr and bc_ns).


A differing advection scheme can be choosed for the subgrid-scale TKE using parameter use_upstream_for_tke.

statistic_regions

I 0

Number of additional user-defined subdomains for which statistical analysis and corresponding output (profiles, time series) shall be made. 

By default, vertical profiles and other statistical quantities are calculated as horizontal and/or volume average of the total model domain. Beyond that, these calculations can also be carried out for subdomains which can be defined using the field rmask within the user-defined software (see chapter 3.5.3). The number of these subdomains is determined with the parameter statistic_regions. Maximum 9 additional subdomains are allowed. The parameter region can be used to assigned names (identifier) to these subdomains which are then used in the headers of the output files and plots.

If the default NetCDF output format is selected (see parameter data_output_format), data for the total domain and all defined subdomains are output to the same file(s) (DATA_1D_PR_NETCDF, DATA_1D_TS_NETCDF). In case of statistic_regions > 0, data on the file for the different domains can be distinguished by a suffix which is appended to the quantity names. Suffix 0 means data for the total domain, suffix 1 means data for subdomain 1, etc.

In case of data_output_format = 'profil', individual local files for profiles (PLOT1D_DATA) are created for each subdomain. The individual subdomain files differ by their name (the number of the respective subdomain is attached, e.g. PLOT1D_DATA_1). In this case the name of the file with the data of the total domain is PLOT1D_DATA_0. If no subdomains are declared (statistic_regions = 0), the name PLOT1D_DATA is used (this must be considered in the respective file connection statements of the mrun configuration file).

surface_heatflux

R no prescribed
heatflux

Kinematic sensible heat flux at the bottom surface (in K m/s). 

If a value is assigned to this parameter, the internal two-dimensional surface heat flux field shf is initialized with the value of surface_heatflux as bottom (horizontally homogeneous) boundary condition for the temperature equation. This additionally requires that a Neumann condition must be used for the potential temperature (see bc_pt_b), because otherwise the resolved scale may contribute to the surface flux so that a constant value cannot be guaranteed. Also, changes of the surface temperature (see pt_surface_initial_change) are not allowed. The parameter random_heatflux can be used to impose random perturbations on the (homogeneous) surface heat flux field shf

In case of a non-flat topography, the internal two-dimensional surface heat flux field shf is initialized with the value of surface_heatflux at the bottom surface and wall_heatflux(0) at the topography top face. The parameter random_heatflux can be used to impose random perturbations on this combined surface heat flux field shf

If no surface heat flux is assigned, shf is calculated at each timestep by u* * theta* (of course only with prandtl_layer switched on). Here, u* and theta* are calculated from the Prandtl law assuming logarithmic wind and temperature profiles between k=0 and k=1. In this case a Dirichlet condition (see bc_pt_b) must be used as bottom boundary condition for the potential temperature.

See also top_heatflux.

surface_pressure

R 1013.25

Atmospheric pressure at the surface (in hPa). 

Starting from this surface value, the vertical pressure profile is calculated once at the beginning of the run assuming a neutrally stratified atmosphere. This is needed for converting between the liquid water potential temperature and the potential temperature (see cloud_physics).

surface_scalarflux

R 0.0

Scalar flux at the surface (in kg/(m2 s)). 

If a non-zero value is assigned to this parameter, the respective scalar flux value is used as bottom (horizontally homogeneous) boundary condition for the scalar concentration equation. This additionally requires that a Neumann condition must be used for the scalar concentration (see bc_s_b), because otherwise the resolved scale may contribute to the surface flux so that a constant value cannot be guaranteed. Also, changes of the surface scalar concentration (see s_surface_initial_change) are not allowed.

If no surface scalar flux is assigned (surface_scalarflux = 0.0), it is calculated at each timestep by u* * s* (of course only with Prandtl layer switched on). Here, s* is calculated from the Prandtl law assuming a logarithmic scalar concentration profile between k=0 and k=1. In this case a Dirichlet condition (see bc_s_b) must be used as bottom boundary condition for the scalar concentration.

surface_waterflux

R 0.0

Kinematic water flux near the surface (in m/s). 

If a non-zero value is assigned to this parameter, the respective water flux value is used as bottom (horizontally homogeneous) boundary condition for the humidity equation. This additionally requires that a Neumann condition must be used for the specific humidity / total water content (see bc_q_b), because otherwise the resolved scale may contribute to the surface flux so that a constant value cannot be guaranteed. Also, changes of the surface humidity (see q_surface_initial_change) are not allowed.

If no surface water flux is assigned (surface_waterflux = 0.0), it is calculated at each timestep by u* * q* (of course only with Prandtl layer switched on). Here, q* is calculated from the Prandtl law assuming a logarithmic temperature profile between k=0 and k=1. In this case a Dirichlet condition (see bc_q_b) must be used as the bottom boundary condition for the humidity.

s_surface

R 0.0

Surface value of the passive scalar (in kg/m3). 

This parameter assigns the value of the passive scalar s at the surface (k=0). Starting from this value, the initial vertical scalar concentration profile is constructed with s_vertical_gradient and s_vertical_gradient_level.

s_surface_initial
_change

R 0.0

Change in surface scalar concentration to be made at the beginning of the 3d run (in kg/m3). 

If s_surface_initial_change is set to a non-zero value, the near surface scalar flux is not allowed to be given simultaneously (see surface_scalarflux).

s_vertical_gradient

R (10) 10 * 0.0

Scalar concentration gradient(s) of the initial scalar concentration profile (in kg/m3 / 100 m). 

The scalar gradient holds starting from the height level defined by s_vertical_gradient_level (precisely: for all uv levels k, where zu(k) > s_vertical_gradient_level, s_init(k) is set: s_init(k) = s_init(k-1) + dzu(k) * s_vertical_gradient) up to the top boundary or up to the next height level defined by s_vertical_gradient_level. A total of 10 different gradients for 11 height intervals (10 intervals if s_vertical_gradient_level(1) = 0.0) can be assigned. The surface scalar value is assigned via s_surface.

Example: 

    s_vertical_gradient = 0.1, 0.05
    s_vertical_gradient_level = 500.0, 1000.0,

That defines the scalar concentration to be constant with height up to z = 500.0 m with a value given by s_surface. For 500.0 m < z <= 1000.0 m the scalar gradient is 0.1 kg/m3 / 100 m and for z > 1000.0 m up to the top boundary it is 0.05 kg/m3 / 100 m (it is assumed that the assigned height levels correspond with uv levels).

s_vertical_gradient_
level

R (10)

10 * 0.0

Height level from which on the scalar gradient defined by s_vertical_gradient is effective (in m). 

The height levels are to be assigned in ascending order. The default values result in a scalar concentration constant with height regardless of the values of s_vertical_gradient (unless the top boundary of the model is higher than 100000.0 m). For the piecewise construction of scalar concentration profiles see s_vertical_gradient.

timestep_scheme

C * 20

'runge
kutta-3'

Time step scheme to be used for the integration of the prognostic variables. 

The user can choose between the following schemes:

'runge-kutta-3'

Third order Runge-Kutta scheme.
This scheme requires the use of momentum_advec = scalar_advec = 'pw-scheme'. Please refer to the documentation on PALM's time integration schemes (28p., in German) fur further details.

'runge-kutta-2'

Second order Runge-Kutta scheme.
For special features see timestep_scheme = 'runge-kutta-3'.

'leapfrog'

Second order leapfrog scheme.
Although this scheme requires a constant timestep (because it is centered in time),  is even applied in case of changes in timestep. Therefore, only small changes of the timestep are allowed (see dt). However, an Euler timestep is always used as the first timestep of an initiali run. When using the Bott-Chlond scheme for scalar advection (see scalar_advec), the prognostic equation for potential temperature will be calculated with the Euler scheme, although the leapfrog scheme is switched on. 
The leapfrog scheme must not be used together with the upstream-spline scheme for calculating the advection (see scalar_advec = 'ups-scheme' and momentum_advec = 'ups-scheme').

'leapfrog+euler'

The leapfrog scheme is used, but after each change of a timestep an Euler timestep is carried out. Although this method is theoretically correct (because the pure leapfrog method does not allow timestep changes), the divergence of the velocity field (after applying the pressure solver) may be significantly larger than with 'leapfrog'.

'euler'

First order Euler scheme. 
The Euler scheme must be used when treating the advection terms with the upstream-spline scheme (see scalar_advec = 'ups-scheme' and momentum_advec = 'ups-scheme').


A differing timestep scheme can be choosed for the subgrid-scale TKE using parameter use_upstream_for_tke.
topography C * 40 'flat'

Topography mode. 

The user can choose between the following modes:

'flat'

Flat surface.

'single_building'

Flow around a single rectangular building mounted on a flat surface.
The building size and location can be specified with the parameters building_height, building_length_x, building_length_y, building_wall_left and building_wall_south.

'read_from_file'

Flow around arbitrary topography.
This mode requires the input file TOPOGRAPHY_DATA. This file contains the arbitrary topography height information in m. These data must exactly match the horizontal grid.

Alternatively, the user may add code to the user interface subroutine user_init_grid to allow further topography modes.

All non-flat topography modes
require the use of momentum_advec = scalar_advec = 'pw-scheme', psolver = 'poisfft' or 'poisfft_hybrid',  alpha_surface = 0.0, bc_lr = bc_ns = 'cyclic'galilei_transformation = .F.cloud_physics  = .F.cloud_droplets = .F.,  humidity = .F., and prandtl_layer = .T..

Note that an inclined model domain requires the use of topography = 'flat' and a nonzero
alpha_surface.
top_heatfluxRno prescribed
heatflux

Kinematic sensible heat flux at the top boundary (in K m/s). 

If a value is assigned to this parameter, the internal two-dimensional surface heat flux field tswst is initialized with the value of top_heatflux as top (horizontally homogeneous) boundary condition for the temperature equation. This additionally requires that a Neumann condition must be used for the potential temperature (see bc_pt_t), because otherwise the resolved scale may contribute to the top flux so that a constant value cannot be guaranteed. 

Note:
The application of a top heat flux additionally requires the setting of initial parameter use_top_fluxes = .T..

No Prandtl-layer is available at the top boundary so far.

See also surface_heatflux.

ug_surface

R
0.0
u-component of the geostrophic wind at the surface (in m/s).

This parameter assigns the value of the u-component of the geostrophic wind (ug) at the surface (k=0). Starting from this value, the initial vertical profile of the
u-component of the geostrophic wind is constructed with ug_vertical_gradient and ug_vertical_gradient_level. The profile constructed in that way is used for creating the initial vertical velocity profile of the 3d-model. Either it is applied, as it has been specified by the user (initializing_actions = 'set_constant_profiles') or it is used for calculating a stationary boundary layer wind profile (initializing_actions = 'set_1d-model_profiles'). If ug is constant with height (i.e. ug(k)=ug_surface) and  has a large value, it is recommended to use a Galilei-transformation of the coordinate system, if possible (see galilei_transformation), in order to obtain larger time steps.

ug_vertical_gradient

R(10)
10 * 0.0
Gradient(s) of the initial profile of the  u-component of the geostrophic wind (in 1/100s).

The gradient holds starting from the height level defined by ug_vertical_gradient_level (precisely: for all uv levels k where zu(k) > ug_vertical_gradient_level, ug(k) is set: ug(k) = ug(k-1) + dzu(k) * ug_vertical_gradient) up to the top boundary or up to the next height level defined by ug_vertical_gradient_level. A total of 10 different gradients for 11 height intervals (10 intervals  if ug_vertical_gradient_level(1) = 0.0) can be assigned. The surface geostrophic wind is assigned by ug_surface.

ug_vertical_gradient_level

R(10)
10 * 0.0
Height level from which on the gradient defined by ug_vertical_gradient is effective (in m).

The height levels are to be assigned in ascending order. For the piecewise construction of a profile of the u-component of the geostrophic wind component (ug) see ug_vertical_gradient.

ups_limit_e

R 0.0

Subgrid-scale turbulent kinetic energy difference used as criterion for applying the upstream scheme when upstream-spline advection is switched on (in m2/s2).  

This variable steers the appropriate treatment of the advection of the subgrid-scale turbulent kinetic energy in case that the uptream-spline scheme is used . For further information see ups_limit_pt

Only positive values are allowed for ups_limit_e.

ups_limit_pt

R 0.0

Temperature difference used as criterion for applying  the upstream scheme when upstream-spline advection  is switched on (in K). 

This criterion is used if the upstream-spline scheme is switched on (see scalar_advec).
If, for a given gridpoint, the absolute temperature difference with respect to the upstream grid point is smaller than the value given for ups_limit_pt, the upstream scheme is used for this gridpoint (by default, the upstream-spline scheme is always used). Reason: in case of a very small upstream gradient, the advection should cause only a very small tendency. However, in such situations the upstream-spline scheme may give wrong tendencies at a grid point due to spline overshooting, if simultaneously the downstream gradient is very large. In such cases it may be more reasonable to use the upstream scheme. The numerical diffusion caused by the upstream schme remains small as long as the upstream gradients are small.

The percentage of grid points for which the upstream scheme is actually used, can be output as a time series with respect to the three directions in space with run parameter (see dt_dots, the timeseries names in the NetCDF file are 'splptx', 'splpty', 'splptz'). The percentage of gridpoints  should stay below a certain limit, however, it is not possible to give a general limit, since it depends on the respective flow. 

Only positive values are permitted for ups_limit_pt.

A more effective control of the “overshoots” can be achieved with parameter cut_spline_overshoot.

ups_limit_u

R 0.0

Velocity difference (u-component) used as criterion for applying the upstream scheme when upstream-spline advection is switched on (in m/s). 

This variable steers the appropriate treatment of the advection of the u-velocity-component in case that the upstream-spline scheme is used. For further information see ups_limit_pt

Only positive values are permitted for ups_limit_u.

ups_limit_v

R 0.0

Velocity difference (v-component) used as criterion for applying the upstream scheme when upstream-spline advection is switched on (in m/s). 

This variable steers the appropriate treatment of the advection of the v-velocity-component in case that the upstream-spline scheme is used. For further information see ups_limit_pt

Only positive values are permitted for ups_limit_v.

ups_limit_w

R 0.0

Velocity difference (w-component) used as criterion for applying the upstream scheme when upstream-spline advection is switched on (in m/s). 

This variable steers the appropriate treatment of the advection of the w-velocity-component in case that the upstream-spline scheme is used. For further information see ups_limit_pt

Only positive values are permitted for ups_limit_w.

use_surface_fluxes

L .F.

Parameter to steer the treatment of the subgrid-scale vertical fluxes within the diffusion terms at k=1 (bottom boundary).

By default, the near-surface subgrid-scale fluxes are parameterized (like in the remaining model domain) using the gradient approach. If use_surface_fluxes = .TRUE., the user-assigned surface fluxes are used instead (see surface_heatflux, surface_waterflux and surface_scalarflux) or the surface fluxes are calculated via the Prandtl layer relation (depends on the bottom boundary conditions, see bc_pt_b, bc_q_b and bc_s_b).

use_surface_fluxes is automatically set .TRUE., if a Prandtl layer is used (see prandtl_layer). 

The user may prescribe the surface fluxes at the bottom boundary without using a Prandtl layer by setting use_surface_fluxes = .T. and prandtl_layer = .F.. If , in this case, the momentum flux (u*2) should also be prescribed, the user must assign an appropriate value within the user-defined code.

use_top_fluxesL.F.

Parameter to steer the treatment of the subgrid-scale vertical fluxes within the diffusion terms at k=nz (top boundary).

By default, the fluxes at nz are calculated using the gradient approach. If use_top_fluxes = .TRUE., the user-assigned top fluxes are used instead (see top_heatflux).

Currently, only a value for the sensible heatflux can be assigned. In case of use_top_fluxes = .TRUE., the latent heat flux at the top will be automatically set to zero.

use_ug_for_galilei_tr

L .T.

Switch to determine the translation velocity in case that a Galilean transformation is used.

In case of a Galilean transformation (see galilei_transformation), use_ug_for_galilei_tr = .T.  ensures that the coordinate system is translated with the geostrophic windspeed.

Alternatively, with use_ug_for_galilei_tr = .F., the geostrophic wind can be replaced as translation speed by the (volume) averaged velocity. However, in this case the user must be aware of fast growing gravity waves, so this choice is usually not recommended!

use_upstream_for_tkeL.F.Parameter to choose the advection/timestep scheme to be used for the subgrid-scale TKE.

By default, the advection scheme and the timestep scheme to be used for the subgrid-scale TKE are set by the initialization parameters scalar_advec and timestep_scheme, respectively. use_upstream_for_tke = .T. forces the Euler-scheme and the upstream-scheme to be used as timestep scheme and advection scheme, respectively. By these methods, the strong (artificial) near-surface vertical gradients of the subgrid-scale TKE are significantly reduced. This is required when subgrid-scale velocities are used for advection of particles (see particle package parameter use_sgs_for_particles).

vg_surface

R
0.0
v-component of the geostrophic wind at the surface (in m/s).

This parameter assigns the value of the v-component of the geostrophic wind (vg) at the surface (k=0). Starting from this value, the initial vertical profile of the
v-component of the geostrophic wind is constructed with vg_vertical_gradient and vg_vertical_gradient_level. The profile constructed in that way is used for creating the initial vertical velocity profile of the 3d-model. Either it is applied, as it has been specified by the user (initializing_actions = 'set_constant_profiles') or it is used for calculating a stationary boundary layer wind profile (initializing_actions = 'set_1d-model_profiles'). If vg is constant with height (i.e. vg(k)=vg_surface) and  has a large value, it is recommended to use a Galilei-transformation of the coordinate system, if possible (see galilei_transformation), in order to obtain larger time steps.

vg_vertical_gradient

R(10)
10 * 0.0
Gradient(s) of the initial profile of the  v-component of the geostrophic wind (in 1/100s).

The gradient holds starting from the height level defined by vg_vertical_gradient_level (precisely: for all uv levels k where zu(k) > vg_vertical_gradient_level, vg(k) is set: vg(k) = vg(k-1) + dzu(k) * vg_vertical_gradient) up to the top boundary or up to the next height level defined by vg_vertical_gradient_level. A total of 10 different gradients for 11 height intervals (10 intervals  if vg_vertical_gradient_level(1) = 0.0) can be assigned. The surface geostrophic wind is assigned by vg_surface.

vg_vertical_gradient_level

R(10)
10 * 0.0
Height level from which on the gradient defined by vg_vertical_gradient is effective (in m).

The height levels are to be assigned in ascending order. For the piecewise construction of a profile of the v-component of the geostrophic wind component (vg) see vg_vertical_gradient.

wall_adjustment

L .T.

Parameter to restrict the mixing length in the vicinity of the bottom boundary. 

With wall_adjustment = .TRUE., the mixing length is limited to a maximum of  1.8 * z. This condition typically affects only the first grid points above the bottom boundary.

wall_heatflux R(5) 5 * 0.0 Prescribed kinematic sensible heat flux in W m-2 at the five topography faces:

wall_heatflux(0)    top face
wall_heatflux(1)    left face
wall_heatflux(2)    right face
wall_heatflux(3)    south face
wall_heatflux(4)    north face

This parameter applies only in case of a non-flat topography. The parameter random_heatflux can be used to impose random perturbations on the internal two-dimensional surface heat flux field shf that is composed of surface_heatflux at the bottom surface and wall_heatflux(0) at the topography top face. 


Last change:  $Id: chapter_4.1.html 75 2007-03-22 09:54:05Z maronga $