= Boundary conditions = == Basics == PALM offers a variety of boundary conditions. Dirichlet or Neumann boundary conditions can be chosen for ''u'', ''v'', ''θ'', ''q'',,v,,, and ''p''^∗^ at the bottom and top of the model. For the horizontal velocity components the choice of Neumann (Dirichlet) boundary conditions yields free-slip (no-slip) conditions. Neumann boundary conditions are also used for the SGS-TKE. Kinematic fluxes of heat and moisture can be prescribed at the surface instead (Neumann conditions) of temperature and humidity (Dirichlet conditions). At the top of the model, Dirichlet boundary conditions can be used with given values of the geostrophic wind. By default, the lowest grid level (''k = 0'') for the scalar quantities and horizontal velocity components is not staggered vertically and defined at the surface (''z = 0''). In case of free-slip boundary conditions at the bottom of the model, the lowest grid level is defined below the surface (''z = - 0.5 Δz'') instead. Vertical velocity is assumed to be zero at the surface and top boundaries, which implies using Neumann conditions for pressure. Following Monin-Obukhov similarity theory (MOST) a constant flux layer can be assumed as boundary condition between the surface and the first grid level where scalars and horizontal velocities are defined (''k'' = 1, ''z'',,MO,, = 0.5 ''Δz''). It is then required to provide the roughness lengths for momentum ''z'',,0,, and heat ''z'',,0,h,,. Momentum and heat fluxes as well as the horizontal velocity components are calculated using the following framework. The formulation is theoretically only valid for horizontally-averaged quantities. In PALM we assume that MOST can be also applied locally and we therefore calculate local fluxes, velocities, and scaling parameters. Following MOST, the vertical profile of the horizontal wind velocity {{{ #!Latex \begin{equation*} u_\mathrm{h} = (u^2 + v^2)^{\frac{1}{2}} \end{equation*} }}} is given in the surface layer by {{{ #!Latex \begin{align*} & \frac{\partial u_\mathrm{h}}{\partial z} = \frac{u_\ast}{\kappa z}\Phi_\mathrm{m}\left(\frac{z}{L}\right)\;, \end{align*} }}} where ''κ'' = 0.4 is the Von Kármán constant and Φ,,m,, is the similarity function for momentum in the formulation of Businger-Dyer (see e.g. [#panofsky Panofsky and Dutton 1984]) {{{ #!Latex \begin{align*} & \Phi_\mathrm{m} = \begin{cases} 1 + 5 \frac{z}{L} & \text{for~} \frac{z}{L} \geq 0 \\ \left(1 - 16 \frac{z}{L}\right)^{-\frac{1}{4}} & \text{for~} \frac{z}{L} < 0\;. \end{cases} \end{align*} }}} Here, ''L'' is the Obukhov length, calculated as {{{ #!Latex \begin{align*} & L = \frac{\theta_\mathrm{v}(z) u_\ast^2}{\kappa g \left[\theta_\ast + 0.61 \theta(z) q_\ast + 0.61 q_\mathrm{v}(z) \theta_\ast\right]}\;. \end{align*} }}} The scaling parameters ''θ'',,*,, and ''q'',,*,, are defined by MOST as: {{{ #!Latex \begin{align*} & \theta_\ast = - \frac{\overline{w^{\prime\prime}\theta^{\prime\prime}}_0}{u_\ast},~q_\ast = - \frac{\overline{w^{\prime\prime}q_\mathrm{v}^{\prime\prime}}_0}{u_\ast}\;, \end{align*} }}} with the friction velocity ''u'',,*,, defined as {{{ #!Latex \begin{align*} & u_\ast = \left[\left(\overline{u^{\prime\prime} w^{\prime\prime}}_0\right)^2 + \left(\overline{v^{\prime\prime} w^{\prime\prime}}_0\right)^2 \right]^{\frac{1}{4}}\;. \end{align*} }}} In PALM, ''u'',,*,, is calculated from ''u'',,h,, at ''z'',,MO,, by vertical integration over ''z'' from ''z'',,0,, to ''z'',,MO,,. From the equations above it is possible to derive a formulation for the horizontal wind components, viz. {{{ #!Latex \begin{align*} & \frac{\partial u}{\partial z} = \frac{-\overline{u^{\prime\prime} w^{\prime\prime}}_0}{u_\ast \kappa z} \Phi_\mathrm{m}\left(\frac{z}{L}\right)\,\text{and~}\,\frac{\partial v}{\partial z} = \frac{-\overline{v^{\prime\prime} w^{\prime\prime}}_0}{u_\ast \kappa z} \Phi_\mathrm{m}\left(\frac{z}{L}\right)\;. \end{align*} }}} Vertical integration over ''z'' from ''z'',,0,, to ''z'',,MO,, of the equation above then yields the surface momentum fluxes {{{ #!Latex $\overline{u^{\prime\prime} w^{\prime\prime}}_0,\;\; \overline{v^{\prime\prime} w^{\prime\prime}}_0$ }}} The formulations above all require knowledge of the scaling parameters ''θ'',,*,, and ''q'',,*,,. These are deduced from vertical integration of {{{ #!Latex \begin{align} & \frac{\partial \theta}{\partial z} = \frac{\theta_\ast}{\kappa z} \Phi_\mathrm{h}\left(\frac{z}{L}\right)~{\text{and}}~\frac{\partial q_\mathrm{v}}{\partial z} = \frac{q_\ast}{\kappa z} \Phi_\mathrm{h}\left(\frac{z}{L}\right) \end{align} }}} over ''z'' from ''z'',,0,h,, to ''z'',,MO,,. The similarity function Φ,,h,, is given by {{{ #!Latex \begin{align} & \Phi_\mathrm{h} = \begin{cases} 1 + 5 \frac{z}{L} & \text{for~} \frac{z}{L} \geq 0 \\ \left(1 - 16 \frac{z}{L}\right)^{-1/2} & \text{for~} \frac{z}{L} < 0\;. \end{cases} \end{align} }}} Currently, there are three different options to calculate the Obukhov length and the surface fluxes which are steered via the NAMELIST parameter [wiki:doc/app/inipar#most_method most_method]. === Method 1: circular === The traditional implementation in PALM ({{{most_method = 'circular'}}}) requires the use of data from the previous time step. The following steps are thus carried out in sequential order. First of all, ''θ'',,*,, and ''q'',,*,, are calculated by integration of the corresponding vertical derivation functions mentioned above using the value of ''z'',,MO,,/L from the previous time step. Second, the new value of ''z'',,MO,,/L is derived from the equation for ''L'' using the new values of ''θ'',,*,, and ''q'',,*,, but using ''u'',,*,, from the previous time step. Then, the new values of ''u'',,*,,, and subsequently the momentum fluxes are calculated by integration, respectively. At last, the above equations for the scaling parameters are employed to calculate the new surface fluxes by using ''θ'',,*,, and ''q'',,*,,, and ''u'',,*,,. In the special case, when surface fluxes are prescribed instead of surface temperature and humidity, the first and last steps are omitted and ''θ'',,*,, and ''q'',,*,, are directly calculated from ''u'',,*,, and the surface fluxes. In summary, the following actions are performed in sequential order: 1. calculate ''θ'',,*,, and ''q'',,*,, 2. calculate ''u'',,h,, 3. determine Obukhov length 4. calculate ''u'',,*,, 5. derive surface fluxes === Method 2: Newton iteration / lookup table === Alternatively, the Obukhov length can be calculated by solving an implicit equation relating the ''L'' to the bulk Richardson number. This can be achieved either by a Newton iteration algorithm ({{{most_method = 'newton'}}}) or by using a lookup table ({{{most_method = 'lookup'}}}). Note that the latter is the new default in PALM as it is much faster than the Newton iteration method and the results are more precise compared to the circular method. However, it can only be used when the roughness lengths are homogeneously set on each processor. Both methods require a different sequential order to derive the surface fluxes: 1. calculate ''u'',,h,, 2. determine Obukhov length (Newton iteration or lookup table) 3. calculate ''u'',,*,, 4. calculate ''θ'',,*,, and ''q'',,*,, 5. derive surface fluxes Depending on whether Neumann (prescribed fluxes) or Dirichlet boundary conditions are used for temperature and humidity, the bulk Richardson number is related to the Obukhov length via {{{ #!Latex \begin{equation*} Ri_\mathrm{b,Di} = \dfrac{z}{L} \cdot \dfrac{[\phi_\mathrm{H}]}{[\phi_\mathrm{M}]^2} \;\;\;\;\textnormal{(Dirichlet conditions)} \end{equation*} \begin{equation*} Ri_\mathrm{b,Ne} = \dfrac{z}{L} \cdot \dfrac{1}{[\phi_\mathrm{M}]^3} \;\;\;\;\textnormal{(Neumann conditions)} \end{equation*} }}} where {{{ #!Latex \begin{equation*} [\phi_\mathrm{H}] = \log\left(\dfrac{z_\mathrm{MO}}{z_\mathrm{0,h}}\right) - \Phi_\mathrm{H}\left(\dfrac{z_\mathrm{MO}}{L}\right) + \Phi_\mathrm{H}\left(\dfrac{z_\mathrm{0,h}}{L}\right)\;, \end{equation*} \begin{equation*} [\phi_\mathrm{M}] = \log\left(\dfrac{z_\mathrm{MO}}{z_\mathrm{0}}\right) - \Phi_\mathrm{M}\left(\dfrac{z_\mathrm{MO}}{L}\right) + \Phi_\mathrm{M}\left(\dfrac{z_\mathrm{0,h}}{L}\right)\;, \end{equation*} }}} are the integrated universal profile stability functions of Φ,,m,, and Φ,,h,, (see [#paulson Paulson 1970], [#holtslag Holtslag and Bruin 1988]), and {{{ #!Latex \begin{equation*} Ri_\mathrm{b,Di} = \dfrac{g z_\mathrm{MO} \left(\theta_\mathrm{v,1} - \theta_\mathrm{v,0}\right)}{u_\ast^2 \theta_v}\;, \end{equation*} \begin{equation*} Ri_\mathrm{b,Ne} = - \dfrac{g z_\mathrm{MO} \overline{v^{\prime\prime} \theta_\mathrm{v}^{\prime\prime}}_0}{\kappa^2 u_\mathrm{h}^3 \theta_v}\;. \end{equation*} }}} In case of {{{most_method = 'newton'}}}, the above equations are solved for ''L'' by Newton iteration, i.e. finding the root of the equation {{{ #!Latex \begin{equation*} f = Ri_\mathrm{b} - \dfrac{z}{L} \cdot \dfrac{[\phi_\mathrm{H}]^x}{[\phi_\mathrm{M}]^y} \end{equation*} }}} where ''x'' and ''y'' depend on the chosen boundary conditions (see above). The solution is given by iteration of {{{ #!Latex \begin{equation*} L^{t+1} = L^t - \dfrac{f(L^t)}{f'(L^t)} \end{equation*} }}} with {{{ #!Latex \begin{equation*} f'(L) = \dfrac{df}{dL} \end{equation*} }}} until ''L'' meets a convergence criterion. If {{{most_method = 'lookup'}}} is used, a table of ''Ri'',,b,, against ''z'',,MO,,/''L'' is created at model start, based on the prescribed values of the roughness lengths. During the model run, ''Ri,,b,,'' is calculated and the respectively value of ''z'',,MO,,/''L'' is retrieved from the lookup table and using linear interpolation between the discrete values in the table. In order to speed up this method, the value of ''Ri,,b,,'' from the previous time step is used as initial value. Due to the fact that the lookup table is created at model start, it is essential that the roughness lengths are 1) homogeneous on each processor (limiting this method to homogeneous surface configurations) and should not vary during the simulation (should thus not be used when using dynamic roughness length over water surfaces). For more details, see [source:palm/trunk/SOURCE/surface_layer_fluxes.f90 surface_layer_fluxes.f90]. Furthermore, the flat bottom of the model can be replaced by a Cartesian topography (see Sect. [wiki:doc/tec/bc#Topography Topography]). By default, lateral boundary conditions are set to be cyclic in both directions. Alternatively, it is possible to opt for non-cyclic conditions in one direction, i.e., a laminar or turbulent inflow boundary (see Sect. [wiki:doc/tec/bc#Laminarandturbulentinflowboundaryconditions Laminar and turbulent inflow boundary conditions]) and an open outflow boundary on the opposite site (see Sect. [wiki:doc/tec/bc#Openoutflowboundaryconditions Open outflow boundary conditions]). The boundary conditions for the other direction have to remain cyclic. A complete overview about the non-cyclic lateral boundary conditions is given in Sect. [wiki:doc/tec/bc#Non-cycliclateralboundaryconditions non-cyclic lateral boundary conditions] In order to prevent gravity waves from being reflected at the top boundary, a sponge layer (Rayleigh damping) can be applied to all prognostic variables in the upper part of the model domain ([#klemp1978 Klemp and Lilly, 1978]). Such a sponge layer should be applied only within the free atmosphere, where no turbulence is present. The model is initialized by horizontally homogeneous vertical profiles of potential temperature, specific humidity (or a passive scalar), and the horizontal wind velocities. The latter can be also provided from a 1-D precursor run (see Sect.[wiki:doc/tec/1dmodel 1-D model for precursor runs]). Uniformly distributed random perturbations with a user-defined amplitude can be imposed to the fields of the horizontal velocities components to initiate turbulence. == Laminar and turbulent inflow boundary conditions == In case of laminar inflow, Dirichlet boundary conditions are used for all quantities, except for the SGS-TKE ''e'' and perturbation pressure ''π^∗^'' for which Neumann boundary conditions are used. Vertical profiles, as taken for the initialization of the simulation, are used for the Dirichlet boundary conditions. In order to allow for a fast turbulence development, random perturbations can be imposed on the velocity fields within a certain area behind the inflow boundary (inlet). These perturbations may persist for the entire simulation. For the purpose of preventing gravity waves from being reflected at the inlet, a relaxation area can be defined after [#davies1976 Davies (1976)]. So far, it was found to be sufficient to implement this method for temperature only. This is hence realized by an additional term in the prognostic equation for ''θ'' (see third equation in Sect. [wiki:/doc/tec/gov governing equation]): {{{ #!Latex \begin{align*} \frac{\partial \theta}{\partial t} = \ldots - C_{\text{relax}} \left(\theta - \theta_{\text{inlet}}\,\right). \end{align*} }}} Here, ''θ'',,inlet,, is the stationary inflow profile of ''θ'', and ''C'',,relax,, is a relaxation coefficient, depending on the distance ''d'' from the inlet, viz. {{{ #!Latex \begin{align*} &C_{\text{relax}}(d) = \begin{cases} F_{\text{inlet}} \cdot \sin^2 \left(\frac{\pi}{2} \frac{D - d}{D} \right) & \text{for~} d < D,\\ 0 & \text{for~} d \ge D,\\ \end{cases} \end{align*} }}} with ''D'' being the length of the relaxation region and ''F'',,inlet,, being a damping factor. For more information about the inflow boundary see Sect. [wiki:/doc/tec/noncyclic#Inflowboundary inflow boundary]. == Turbulence recycling == If non-cyclic horizontal boundary conditions are used, PALM offers the possibility of generating time-dependent turbulent inflow data by using a turbulence recycling method. The method follows the one described by [#lund1998 Lund et al. (1998)], with the modifications introduced by [#kataoka2002 Kataoka and Mizuno (2002)]. Figure 2 gives an overview of the recycling method used in PALM. [[Image(03.png,600px,border=1)]] Figure 3: Schematic figure of the turbulence recycling method used for generation of turbulent inflow. The configuration represents exemplary conditions with a built-up analysis area (brown surface) and an open water recycling area (blue surface). The blue arrow indicates the flow direction. The turbulent signal ''φ^'^(y, z, t)'' is taken from a recycling plane which is located at a fixed distance ''x'',,recycle,, from the inlet: {{{ #!Latex \begin{align*} & \varphi^{\prime}(y, z, t) = \varphi(x_{\text{recycle}},y, z, t) - \langle \varphi\rangle_y(z, t), \end{align*} }}} where ''<φ>,,y,,(z, t)'' is the line average of a prognostic variable ''φ ∈ {u, v, w, θ, e}'' along ''y'' at ''x = x,,recycle,,''. ''φ^'^(y, z, t)'' is then added to the mean inflow profile ''<φ,,inflow,,>,,y,,(z)'' at ''x,,inlet,,'' after each time step: {{{ #!Latex \begin{align*} & \varphi_{\text{inlet}}(y, z, t) = \langle \varphi_{\text{inlet}}\rangle_y(z) + \phi(z) \varphi^{\prime}(y, z, t), \end{align*} }}} with the inflow damping function ''Φ(z)'', which has a value of ''1'' below the initial boundary layer height, and which is linearly damped to ''0'' above, in order to inhibit growth of the boundary layer depth. ''<φ,,inlet,,>,,y,,(z)'' is constant in time and either calculated from the results of the precursor run or prescribed by the user. The distance ''x'',,recycle,, has to be chosen much larger than the integral length scale of the respective turbulent flow. Otherwise, the same turbulent structures could be recycled repeatedly, so that the turbulence spectrum is illegally modified. It is thus recommended to use a precursor run for generating the initial turbulence field of the main run. The precursor run can have a comparatively small domain along the horizontal directions. In that case the domain of the main run is filled by cyclic repetition of the precursor run data. Note that the turbulence recycling has not been adapted for humidity and passive scalars so far. Turbulence recycling is frequently used for simulations with urban topography. In such a case, topography elements should be placed sufficiently downstream of ''x'',,recycle,, to prevent effects on the turbulence at the inlet. == Open outflow boundary conditions == At the outflow boundary (outlet), the velocity components ''u,,i,,'' meet radiation boundary conditions, viz. {{{ #!Latex \begin{align*} \frac{\partial u_i}{\partial t} + U_{u_i} \frac{\partial u_i}{\partial n} = 0\,, \end{align*} }}} as proposed by [#orlanski1976 Orlanski (1976)]. Here ''∂/∂n'' is the derivative normal to the outlet (i.e., ''∂/∂x'' in Figure 2 and ''U,,ui,,'' a transport velocity which includes wave propagation and advection. Rewriting the equation above yields the transport velocity {{{ #!Latex \begin{align*} U_{u_i} = -\left(\frac{\partial u_i}{\partial t}\right)\left(\frac{\partial u_i}{\partial n}\right)^{-1} \end{align*} }}} that is calculated at interior grid points next to the outlet at the preceding time step for each velocity component. If the transport velocity, calculated by means of the equation for the transport velocity, is outside the range ''0 ≤ U,,ui,, ≤ '''Δ'''/Δt'', it is set to the respective threshold value that is exceeded. Because this local determination of ''U,,ui,,'' can show high variations in case of complex turbulent flows, it is averaged laterally to the direction of the outflow, so that it varies only in the vertical direction. Alternatively, the transport velocity can be set to the upper threshold value (''U,,ui,, = '''Δ'''/Δt'') for the entire outlet. Both equations mentioned in this section are discretized using an upstream method following [#miller1981 Miller and Thorpe (1981)]. As the radiation boundary condition does not ensure conservation of mass, a mass flux correction can be applied at the outlet (see [wiki:/doc/tec/noncyclic#Massfluxcorrection mass flux correction]). For more information about the outflow boundary see Sect. [wiki:/doc/tec/noncyclic#Outflowboundary outflow boundary]. == Topography == The Cartesian topography in PALM is generally based on the mask method ([#briscolini1989 Briscolini and Santangelo, 1989]) and allows for explicitly resolving solid obstacles such as buildings and orography. The implementation makes use of the following simplifications: 1. the obstacle shape is approximated by (an appropriate number of) full grid cells to fit the grid, i.e., a grid cell is either 100% fluid or 100% obstacle, 2. the obstacles are fixed (not moving). With revision -r2232, the topography implementation is completely revised. Starting from this revision, overhanging structures as for example bridges, ceilings, or tunnels, are allowed, i.e. topography does not necessarily be surface-mounted. If no overhanging structures are present, the 3-D obstacle dimension reduces to a 2.5-D topography format, which is conform to the Digital Elevation Model (DEM) format (DEMs of city morphologies have become increasingly available worldwide due to advances in remote sensing technologies). In case of overhanging structures, however, 3-D topography information is required to mask obstacles and their faces in PALM. The model domain is then separated into three subdomains (see Fig. 3): A. grid points in free fluid without adjacent surfaces, where the standard PALM code is executed, B. grid points next to surface that require extra code (e.g., surface parametrization), and C. grid points within obstacles that are excluded from calculations [[Image(04.png,600px,border=1)]] Figure 4: Sketch of the topograhy implementation using the mask method (here for ''w''). The yellow and red lines represent the limits of the arrays ''nzb_w_inner'' and ''nzb_w_outer'' as described in Sect. [wiki:doc/tec/topography topography implementation], respectively. Additional topography code is executed in grid volumes of subdomain B. The faces of the obstacles are always located where the respective surface-normal velocity components ''u'', ''v'', and ''w'' are defined (cf. Fig. 1 in Sect. [wiki:doc/tec/discret discretization]) so that the impermeability boundary condition can be implemented by setting the respective surface-normal velocity component to zero. In case of 5th-order advection scheme, the numerical stencil at grid points adjacent to obstacles would require data which is located within the obstacle. In order to avoid this, the order of the advection scheme is successively degraded at respective grid volumes adjacent to obstacles, i.e., from the 5th-order to 3rd-order at the second grid point above/beside an obstacle and from 3rd-order to 1st-order at grid points directly adjacent to an obstacle. Surfaces in PALM can be aligned horizontally upward facing (e.g. bottom surface or rooftop), horizontally downward facing (e.g. undersurface of bridges), or vertically (facing north, east, south or west direction). At horizontal surfaces, PALM allows to either specify the surface values (''θ, q,,v,,, s'') or to prescribe their respective surface fluxes. The latter is the only option for vertically oriented surfaces. Simulations with topography require the application of MOST between each surface and the first computational grid point outside of the topography. For vertical and horizontal downward-facing surfaces, neutral stratification is assumed for MOST. The topography implementation has been validated by [#letzel2008 Letzel et al. (2008)] and [#kanda2013 Kanda et al. (2013)]. [#park2013 Park and Baik (2013)] have recently extended the vertical wall boundary conditions for non-neutral stratifications and validated their results against wind tunnel data. Up to now, however, these modifications are not included in PALM 4.0. Figure 4 shows exemplarily the development of turbulence structures induced by a densely built-up artificial island off the coast of Macau, China (see also animation in [#knoop2014 Knoop et al., 2014]). The approaching flow above the sea exhibits relatively weak turbulence due to the smooth water surface. Within the building areas, strong turbulence is generated by additional wind shear (due to the walls of isolated buildings) and due to a general increase in surface roughness. [[Image(05.png,600px,border=1)]] Figure 5: Snapshot of the absolute value of the 3-D rotation vector of the velocity field (red to white colors) for a simulation of the city of Macau, including a newly built-up artificial island (left). Buildings are displayed in blue. A neutrally-stratified flow was simulated with the mean flow direction from the upper-left to the bottom-right, i.e. coming from the open sea and flowing from the artificial island to the city of Macau. The figure shows only a subregion of the simulation domain that spanned a horizontal model domain of about ''6.1x2.0x1 km^3^'', and with an equidistant grid spacing of ''8''m}$. The copyright for the underlying satellite image is held by Cnes / Spot Image, Digitalglobe. For more details, see associated animation [#knoop2014 Knoop et al. (2014)]. The technical realization of the topography will be outlined in Sect. [wiki:doc/tec/topography topography implementation]. == Non-cyclic lateral boundary conditions == Figure 6 shows the grid structure for non-cyclic boundary conditions at the left/right boundary '''LB/RB''' ([../../app/inipar/#bc_lr bc_lr]) and figure 7 for non-cyclic boundary conditions at the north/south boundary '''NB/SB''' ([../../app/inipar/#bc_ns bc_ns]). The indices (''i,j,k'') represent the directions (''x,y,z''). The model domain extends from ''-1:nx+1'' in the ''x''-direction, from ''-1:ny+1'' in the ''y''-direction and from ''0:nzt+1'' in the ''z''-direction. For the advection scheme of Wicker and Skamarock, two more grid points are added at the lateral boundaries which are not needed for non-cyclic boundary conditions. The figures display the grid layer of the horizontal velocity components ''u'' and ''v'', and scalar ''s''. The grid points of the vertical velocity w are defined at the scalar position but shifted by one half grid spacing in vertical direction (not shown, detailed information about the grid structure in PALM can be found [wiki:doc/tec/discret here]). The prognostic equations are solved at all inner grid points which are marked black. The grid points at the respective non-cyclic boundaries (blue) are treated as follows. '''LB''' is defined at ''i = -1'' for ''v'', ''w'', ''s'' and at ''i = 0'' for ''u''. '''SB''' is defined at ''j = -1'' for ''u'', ''w'', ''s'' and at ''j = 0'' for ''v''. '''RB''' is defined at ''i = nx + 1'' and '''NB''' at ''j = ny + 1'' for all quantities. '''LB''' and '''SB''' are treated this way so that the order and number of grid points for the streamwise velocity component and scalars is the same, independent of the flow direction. For technical reasons, the prognostic equations are first solved for ''u'' at ''i = 0'' (''v'' at ''j = 0''), since these grid points technically belong to the inner grid, but afterwards, these results at ''i = 0'' (''j = 0'') are replaced by the respective boundary condition in routine ''boundary_conds.f90''. In case of a Dirichlet condition, the values at ''i = 0'' (''j = 0'') are taken from ''i = -1'' (''j = -1''). In case of a radiation boundary condition, the solution of the Sommerfeld equation overwrites the prognostic values at ''i = 0'' (''j = 0''). For non-cyclic lateral boundary conditions, the parameter [../../app/inipar/#psolver psolver] has to be set to '' 'multigrid' '' because the default FFT-solver can only be applied for cyclic boundary conditions. [[Image(grid_lr.png, 600px, border=1)]] Figure 6: Grid structure at the lateral boundaries with non-cyclic lateral boundary conditions along the left-right direction. [[Image(grid_ns.png, 600px, border=1)]] Figure 7: Grid structure of the lateral boundaries with non-cyclic lateral boundary conditions along the north-south direction. === Inflow boundary === At the inflow boundary, Dirichlet conditions are used for the three velocity components ''ψ = {u,v,w}'' as well as for all scalar quantities s and are implemented as follows (here e.g. for ''s'' and a flow in positive ''x'' direction): {{{ #!Latex \begin{align*} s^{t + \Delta t}(k,j,-1) = s_{init}(k) \; . \end{align*} }}} ''t'' denotes the time, Δt the time step and ''s'',,init,, the initialization profile of the scalar quantities which is constant in time. The quantities at the inflow are set by the initial vertical profiles (see [../../app/inipar/#initializing_actions initializing_actions]). A Neumann condition is used for the subgrid-scale turbulent kinetic energy ''e'' (here e.g. for a left-right flow): {{{ #!Latex \begin{align*} e^{t + \Delta t}(k,j,-1) = e^{t + \Delta t}(k,j,0) \; . \end{align*} }}} To prevent gravity waves from being reflected at the inflow, a relaxation term can be added to the prognostic equations for the potential temperature ''θ'' ([#davies1976 Davies, 1976]): {{{ #!Latex \begin{align*} \theta^{t+1}(d) = ... - \Delta t \cdot K(d) \cdot \left( \theta^{t}(d) - \theta_{init} \right) \; . \end{align*} }}} Here, ''d'' is the distance normal to the wall and ''θ'',,init,, the initial value of the potential temperature, which corresponds to the value at the inflow boundary. The damping or relaxation function ''K'' depends only on the distance ''d'' to the inflow. ''K'' is calculated by {{{ #!Latex \begin{align*} K(d) = \begin{cases} d_f \sin^2\left( \frac{\pi}{2} \frac{d_w - d}{d_w} \right) , \text{for } d < d_w \\ \qquad\quad 0 \qquad \quad \;\;\; , \text{for } d \ge d_w \end{cases} . \end{align*} }}} ''d'',,f,, is a damping factor to control the damping intensity, and ''d'',,w,, is the width of the relaxation region extending from the inflow. Quantities ''d'',,f,, and ''d'',,w,, can be set with parameters [../../app/inipar/#pt_damping_factor pt_damping_factor] and [../../app/inipar/#pt_damping_width pt_damping_width], respectively. Both parameters have to be set by the user and must be adjusted case-by-case, because both parameters depend on the numerical and physical conditions, so that application of universal default values is not possible. So far, we have experience with gravity waves in case of cold air outbreaks, which grow in amplitude up to quite extreme values, if no damping is applied. In the respective simulations, we used typical values for [../../app/inipar/#pt_damping_factor pt_damping_factor] of 0.05 and for [../../app/inipar/#pt_damping_width pt_damping_width] of 25 km in order to prevent the gravity waves from growing. === Outflow boundary === At the outflow, an open boundary condition is needed to ensure that disturbances of the mean flow can exit the model domain without effecting the flow upstream. For the scalar quantities, Neumann boundary conditions are used at the outflow boundary which is the simplest way. For the velocity components, a Neumann condition would require to be considered in the solution of the Poisson equation for perturbation pressure, which has not been realized so far, because it requires some technical effort. Instead, PALM offers two types of radiation boundary conditions for the velocity components, which are not in conflict with the pressure solver (see [../../app/inipar/#use_cmax use_cmax], [../../app/inipar/#bc_lr bc_lr] and [../../app/inipar/#bc_ns bc_ns]). For the radiation condition, the Sommerfeld radiation equation is solved at the outflow {{{ #!Latex \begin{align*} \partial_t \psi + c_{\psi} \partial_n \psi = 0 \; , \end{align*} }}} which considers flow disturbances propagating with the mean flow and by waves. Here ''ψ'' is the transported quantity and ''∂'',,n,, is the derivative normal to the outflow boundary. In PALM, based on the equation above, the radiation boundary condition is realized in two ways as follows. ==== Variable Phase velocity ==== The phase velocity ''c'',,ψ,, (also called convective velocity) is calculated after [#orlanski1976 Orlanski (1976)]: {{{ #!Latex \begin{align*} c_{\psi} = - \dfrac{\partial_t \psi}{\partial_n \psi} \; . \end{align*} }}} If the outflow is defined at the right boundary (''i = nx + 1'', Left-right flow, see Fig. 6), the phase velocity for each velocity component is calculated by {{{ #!Latex \begin{align*} c_{\psi} = - c_{max} \dfrac{\psi^t_{nx} - \psi^{t - \Delta t}_{nx} }{ \psi^{t-\Delta t}_{nx} - \psi^{t - \Delta t}_{nx-1} } \; , \end{align*} }}} with the maximum phase velocity {{{ #!Latex \begin{align*} c_{max} = \dfrac{\Delta x}{\Delta t} \; . \end{align*} }}} The phase velocity has to be in the range of ''0 ≤ c,,ψ,, < c'',,max,, because negative values propagate waves back to the inner domain. ''c'',,max,, represents the maximum phase velocity that ensures numerical stability (Courant-Friedrichs-Lewy condition). Both conditions are not ensured by the second equation of c,,ψ,,, hence c,,ψ,, is set to zero for negative values and to ''c'',,max,, for larger values than ''c'',,max,,. The velocity components ψ at the outflow boundary are then calculated by {{{ #!Latex \begin{align*} \psi^{t+\Delta t}_{nx+1} = \psi^{t}_{nx+1} - \dfrac{\overline{c}_{\psi}}{c_{max}} (\psi^{t}_{nx+1} - \psi^{t}_{nx}) \; , \end{align*} }}} with the phase velocity averaged parallel to the outflow: {{{ #!Latex \begin{align*} \overline{c}_{\psi} = \dfrac{1}{ny+1} \sum_{j=0}^{ny} c_{\psi, j} \; . \end{align*} }}} In Orlanskis work, the phase velocity ''c'',,ψ,, was not averaged along the outflow, which is sufficient for simplified flows as shown by [#yoshida2010 Yoshida and Watanabe (2010)]. However, we found that in simulations of shear driven convective boundary layer with a strong wind component along the outflow, the approach of [#orlanski1976 Orlanski (1976)] was unstable. [#raymond1984 Raymond and Kuo (1984)] argued that locally calculated phase velocities leads to a large variation of phase speeds which can lead to numerical instabilities. Other works used a constant phase velocity or an average over the whole outflow area (see e.g. [#frölich2006 Fröhlich 2006, p.216]) instead of the approach of [#orlanski1976 Orlanski (1976)]. With this in mind, we tested the average phase velocity calculated from the last mentioned equation, and the solution at the outflow becomes stable. We did not additionally average the phase velocity along the vertical direction, because the background wind usually varies with height. For the other flow directions, the indices of the above equations have to be replaced as follows: {{{ #!Latex \begin{tabular}{|c |c |c |c| c|} \hline & Right-left flow & \multicolumn{2}{c|}{ North-south flow} & South-north flow \\ \hline & $(nx + 1) \rightarrow 0$ & $(nx + 1) \rightarrow -1$ & & \\ $\psi = u$ & $ nx \rightarrow 1$ & $ nx \rightarrow 0$ & & \\ & $(nx - 1) \rightarrow 2$ & $(nx - 1) \rightarrow 1$ & & \\ \cline{1-3} & $(nx + 1) \rightarrow -1$ & $(nx + 1) \rightarrow 0$ & & $i \rightarrow j$ \\ $\psi = v$ & $ nx \rightarrow 0$ & $ nx \rightarrow 1$ & $i \rightarrow j$ & \\ & $(nx - 1) \rightarrow 1$ & $(nx - 1) \rightarrow 2$ & & $nx \rightarrow ny$ \\ \cline{1-3} & $(nx + 1) \rightarrow -1$ & $(nx + 1) \rightarrow -1$ & & \\ $\psi = w$ & $ nx \rightarrow 0$ & $ nx \rightarrow 0$ & & \\ & $(nx - 1) \rightarrow 1$ & $(nx - 1) \rightarrow 1$ & & \\ \hline \end{tabular} }}} ==== Constant Phase velocity ==== Setting ''c'',,ψ,, = ''c'',,max,, leads to a more simple radiation boundary condition (here e.g. for a left-right flow along positive ''x''-direction): {{{ #!Latex \begin{align*} \psi^{t + \Delta t}(k,j,nx+1) = \psi^{t}(k,j,nx) \; , \end{align*} }}} with ''ψ = {u,v,w}''. This formulation of the radiation boundary condtions saves computational time compared to the formulation of a variable Phase velocity. Although, [#orlanski1976 Orlanski (1976)] suggested that this approach of radiation boundary condition leads to reflection for waves smaller than ''c'',,max,, which may occur in complex geophysical flows, our simulations of a convective boundary layer with background wind have been stable so far. === Mass flux correction === PALM offers the possibility of a mass flux correction at the outflow (e.g. [#tian2004 Tian, 2004]). If parameter [../../app/inipar/#conserve_volume_flow conserve_volume_flow] is set true, the mass flux at the inflow and outflow is calculated by: {{{ #!Latex \begin{align*} \dot{m} = \sum_{k=1}^{nz-1} \Delta z(k) \sum_{l=0}^{nx_i} \psi(l,k) \Delta x_i \; . \end{align*} }}} where ''Δx,,i,,'' and ''ψ'' is equal to ''Δy'' (''Δx'') and ''u'' (''v'') in case of [../../app/inipar/#bc_lr bc_lr] ([../../app/inipar/#bc_ns bc_ns]). The correction factor for the outflow velocity, which is necessary due to different mass fluxes at inflow and outflow, can be calculated by {{{ #!Latex \begin{align*} \psi_{corr} = \dfrac{\dot{m}_{inflow} - \dot{m}_{outflow}}{A} \; , \end{align*} }}} where A is the area of the boundary {{{ #!Latex \begin{align*} A = \sum_1^{nz-1} \Delta z \sum_0^{nx_i} \Delta x_i \; . \end{align*} }}} The streamwise velocity at the outflow is corrected by adding ''ψ'',,corr,, at each grid point of the outflow between bottom and top (''k=1:nz''), in order to guarantee that the mass leaving the domain exactly balances the one entering it. == References == * [=#holtslag] '''Holtslag AAM, Bruin HARD.''' 1988. Applied modelling of the night-time surface energy balance over land. J. Appl. Meteorol. 27: 689–704. * [=#panofsky] '''Panofsky HA, Dutton JA.''' 1984. Atmospheric Turbulence, Models and Methods for Engineering Applications. John Wiley & Sons. New York. * [=#paulson] '''Paulson CA''' 1970. The mathematical representation of wind speed and temperature profiles in the unstable atmospheric surface layer. J. Appl. Meteorol. 9: 857–861. * [=#klemp1978] '''Klemp JB, Lilly DK.''' 1978. Numerical simulation of hydrostatic mountain waves. J. Atmos. Sci. 35: 78–107. * [=#davies1976] '''Davies HC.''' 1976. A lateral boundary formulation for multi-level prediction models. Q. J. Roy. Meteor. Soc. 102: 405–418. * [=#lund1998] '''Lund TS, Wu X, Squires KD.''' 1998. Generation of turbulent inflow data for spatially-developing boundary layer simulations. J. Comput. Phys. 140: 233–258. * [=#kataoka2002] '''Kataoka H, Mizuno M.''' 2002. Numerical flow computation around aerolastic 3d square cylinder using inflow turbulence. Wind Struct. 5: 379–392. * [=#orlanski1976] '''Orlanski I.''' 1976. A simple boundary condition for unbounded hyperbolic flows. J. Comput. Phys. 21: 251–269. * [=#miller1981] '''Miller MJ, Thorpe AJ.''' 1981. Radiation conditions for the lateral boundaries of limited-area numerical models. Q. J. Roy. Meteor. Soc. 107: 615–628. * [=#briscolini1989] '''Briscolini M, and Santangelo P.''' 1989. Development of the mask method for incompressible unsteady flows. J. Comput. Phys. 84: 57–75. * [=#letzel2008] '''Letzel MO, Krane M, Raasch S.''' 2008. High resolution urban large-eddy simulation studies from street canyon to neighbourhood scale. Atmos. Environ. 42: 8770–8784. * [=#kanda2013] '''Kanda M, Inagaki A, Miyamoto T, Gryschka M, Raasch S.''' 2013. A new aerodynamic parameterization for real urban surfaces. Bound.-Lay. Meteorol. 148: 357–377. * [=#park2013] '''Park SB, and Baik J.''' 2013. A large-eddy simulation study of thermal effects on turbulence coherent structures in and above a building array. J. Appl. Meteorol. 52: 1348–1365. * [=#knoop2014] '''Knoop H, Keck M, Raasch S.''' 2014. Urban large-eddy simulation - influence of a densely build-up artificial island on the turbulent flow in the city of Macau, Computer animation. [http://dx.doi.org/10.5446/14368 doi]. * [=#yoshida2010] '''Yoshida T, Watanabe T.''' 2010. Sommerfeld radiation condition for incompressible viscous flows. 5th European Conference on Computational Fluid Dynamics. 14-17 June. Lisbon, Portugal. ECCOMAS. 1-11. * [=#raymond1984] '''Raymond WH, Kuo HL.''' 1984. A radiation boundary condition for multi-dimensional flows. Quart. J. R. Met. Soc. 110: 535–551. * [=#frölich2006] '''Fröhlich F.''' 2006. Large eddy simulation turbulenter Strömungen. B.G. Teubner Verlag. 414 pp. * [=#tian2004] '''Tian W, Guo Z, Yu R.''' 2004. Treatment of LBCs in 2D simulation of convection over hills. Adv. Atmos. Sci. 21: 573–586.