Initialization parameters
NAMELIST group name: inipar
Mode:
Parameter Name | FORTRAN Type | Default Value | Explanation
|
---|
ocean
|
L
|
.F.
|
Parameter to switch on ocean runs.
By default PALM is configured to simulate atmospheric flows. However, starting from version 3.3, ocean = .T. allows simulation of ocean turbulent flows. Setting this switch has several effects:
- An additional prognostic equation for salinity is solved.
- Potential temperature in buoyancy and stability-related terms is replaced by potential density.
- Potential density is calculated from the equation of state for seawater after each timestep, using the algorithm proposed by Jackett et al. (2006, J. Atmos. Oceanic Technol., 23, 1709-1728).
So far, only the initial hydrostatic pressure is entered into this equation.
- z=0 (sea surface) is assumed at the model top (vertical grid index k=nzt on the w-grid), with negative values of z indicating the depth.
- Initial profiles are constructed (e.g. from pt_vertical_gradient / pt_vertical_gradient_level) starting from the sea surface, using surface values given by pt_surface, sa_surface, ug_surface, and vg_surface.
- Zero salinity flux is used as default boundary condition at the bottom of the sea.
- If switched on, random perturbations are by default imposed to the upper model domain from zu(nzt*2/3) to zu(nzt-3).
Relevant parameters to be exclusively used for steering ocean runs are bc_sa_t, bottom_salinityflux, sa_surface, sa_vertical_gradient, sa_vertical_gradient_level, and top_salinityflux.
d3par [Section 4.4.2] gives an example for appropriate settings of these and other parameters neccessary for ocean runs.
ocean = .T. does not allow settings of timestep_scheme = 'leapfrog' or 'leapfrog+euler' as well as scalar_advec = 'ups-scheme' .
|
[=#<insert_parameter_name> <insert_parameter_name>]
|
<insert type>
|
<insert value>
|
<insert explanation>
|
Grid:
Parameter Name | Type | Default Value | Explanation
|
---|
[=# ']
| | | |
[=#<insert_parameter_name> <insert_parameter_name>]
|
<insert type>
|
<insert value>
|
<insert explanation>
|
Numerics:
Parameter Name | Type | Default Value | Explanation
|
---|
[=# ']
| | | |
[=#<insert_parameter_name> <insert_parameter_name>]
|
<insert type>
|
<insert value>
|
<insert explanation>
|
Boundary Conditions:
Parameter Name | FORTRAN 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.
|
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.
In the coupled atmosphere executable, bc_pt_b is internally set and does not need to be prescribed.
|
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.
|
[=#<insert_parameter_name> <insert_parameter_name>]
|
<insert type>
|
<insert value>
|
<insert explanation>
|
[=#<insert_parameter_name> <insert_parameter_name>]
|
<insert type>
|
<insert value>
|
<insert explanation>
|
[=#<insert_parameter_name> <insert_parameter_name>]
|
<insert type>
|
<insert value>
|
<insert explanation>
|
[=#<insert_parameter_name> <insert_parameter_name>]
|
<insert type>
|
<insert value>
|
<insert explanation>
|
[=#<insert_parameter_name> <insert_parameter_name>]
|
<insert type>
|
<insert value>
|
<insert explanation>
|
[=#<insert_parameter_name> <insert_parameter_name>]
|
<insert type>
|
<insert value>
|
<insert explanation>
|
Initialization:
Parameter Name | Type | Default Value | Explanation
|
---|
[=# ']
| | | |
[=#<insert_parameter_name> <insert_parameter_name>]
|
<insert type>
|
<insert value>
|
<insert explanation>
|
Topography:
Parameter Name | Type | Default Value | Explanation
|
---|
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 by the parameters building_height, building_length_x, building_length_y, building_wall_left and building_wall_south.
'single_street_canyon'
Flow over a single, quasi-2D street canyon of infinite length oriented either in x- or in y-direction.
The canyon size, orientation and location can be specified by the parameters canyon_height plus either canyon_width_x and canyon_wall_left or canyon_width_y and canyon_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. These require to explicitly set the topography_grid_convention to either 'cell_edge' or 'cell_center' .
Non-flat topography modes may assign a kinematic sensible wall_heatflux and a kinematic wall_humidityflux (requires humidity = .T.) or a wall_scalarflux (requires passive_scalar = .T.) at the five topography faces.
All non-flat topography modes require the use of momentum_advec = scalar_advec = 'pw-scheme' , psolver /= 'sor' , alpha_surface = 0.0, galilei_transformation = .F., cloud_physics = .F., cloud_droplets = .F., and prandtl_layer = .T..
Note that an inclined model domain requires the use of topography = 'flat' and a nonzero alpha_surface.
|
[=#<insert_parameter_name> <insert_parameter_name>]
|
<insert type>
|
<insert value>
|
<insert explanation>
|
Canopy:
Parameter Name | Type | Default Value | Explanation
|
---|
[=# ']
| | | |
[=#<insert_parameter_name> <insert_parameter_name>]
|
<insert type>
|
<insert value>
|
<insert explanation>
|
Others:
Parameter Name | Type | Default Value | Explanation
|
---|
[=# ']
| | | |
[=#<insert_parameter_name> <insert_parameter_name>]
|
<insert type>
|
<insert value>
|
<insert explanation>
|