262 | | |
263 | | == Synthetic Turbulence Generator == |
264 | | Since r2259 a synthetic turbulence generator is implemented in PALM to generate a turbulent inflow condition. The method is based on the work of [#xie2008 Xie and Castro (2008)] and [#kim2013 Kim et al. (2013)]. Unscaled turbulent motions ''u,,*j,,'' are computed based on length scales along each direction and the amplitude tensor ''a,,ij,,'' which in turn bases on the Reynolds stress tensor. The calculated turbulence is then added to the mean inflow data of the velocity components ''U,,i,,'': |
265 | | {{{ |
266 | | #!Latex |
267 | | \begin{equation*} |
268 | | u_i = U_i + a_{ij} u_{*j}. |
269 | | \end{equation*} |
270 | | }}} |
271 | | |
272 | | The amplitude tensor ''a,,ij,,'' depends on the Reynolds stress tensor ''R,,ij,,'' and is calculated using a Cholesky decomposition as suggested by [#lund1998 Lund et al. (1998)]. The unscaled turbulent motions ''u,,*j,,'', which are calculated on the 2D inflow plane, depend on the prescribed time scales ''t,,ij,,'' and length scales ''l,,ij,,'': |
273 | | {{{ |
274 | | #!Latex |
275 | | \begin{equation*} |
276 | | u_{*i}(t+\Delta t) = u_{*i}(t) \exp\left(-\dfrac{C\Delta t}{T}\right) + \Psi_i(t,L)\left[1-\exp\left(-\dfrac{2C\Delta t}{T}\right)\right]^{0.5}, |
277 | | \end{equation*} |
278 | | }}} |
279 | | where ''Ψ'' denotes a part of the generated 2D signal which is correlated in space using the turbulent length scales ''l,,ij,,'' along the vertical and spanwise direction. Correlation along streamwise direction is assured via the time scale ''t,,ij,,'' which is estimated by ''t,,ij,,'' along streamwise direction using the ''U,,i,,''. |
280 | | |
281 | | After adding the turbulence to the mean inflow profiles, a mass flux correction suggested by [#kim2013 Kim et al. (2013)] is performed: |
282 | | {{{ |
283 | | #!Latex |
284 | | \begin{equation*} |
285 | | u_{i,c} = \dfrac{U_{b,p}}{U_b} u_i, |
286 | | \end{equation*} |
287 | | }}} |
288 | | where |
289 | | {{{ |
290 | | #!Latex |
291 | | \begin{equation*} |
292 | | U_{b} = \dfrac{\int_S dS u_n}{S}, |
293 | | \end{equation*} |
294 | | }}} |
295 | | where ''u,,i,c,,'' is the corrected wind velocity at the inflow boundary, ''U,,b,,'' and ''U,,b,p,,'' the instantaneous and prescribed bulk velocity at the inflow boundary, ''S'' the surface area of the inflow boundary, and ''u,,n,,'' the component of ''u,,i,,'' normal to the inflow boundary. |
296 | | |
297 | | The required length- and time scales, as well as the Reynolds strees tensor can be either prescribed (method 1), 0if known from previous simulations or measurements, or they can be parametrized (method 2). |
298 | | Please note, time and length scales as well as the components of the Reynolds stress tensor depend on the height and the horizontal location, particularly over heterogeneous surfaces and model domains with large horizontal extensions. |
299 | | For the sake of simplicity, however, we consider only height dependent information of the Reynolds stress as well as length and time scales. |
300 | | |
301 | | '''Method 1:''' If these information is available, it can be provided via an ASCII file which contains all necessary information. |
302 | | For an example please see [attachment:STG_PROFILES:wiki:doc/app/iofiles example file]. |
303 | | This ASCII input file will be read automatically by PALM if the namelist parameter ''use_synthetic_turbulence_generator'' is set to ''True'' within the namelist ''stg_par''. Be sure that the input file is added to the list of input files in your ''.palm.iofiles'' like so: |
304 | | {{{ |
305 | | STG_PROFILES in:locopt d3#:d3r $base_data/$fname/INPUT _iprf |
306 | | }}} |
307 | | and named with the suffix ''_iprf'' in your ''INPUT'' directory. Please have look at the list of [wiki:/doc/app/iofiles#STG_PROFILES input and output files] for a detailed description of the input file. |
308 | | |
309 | | '''Method 2:''' In many cases detailed information about the Reynolds stress and turbulent length scales are not available, so that these information need to be parametrized. If no ASCII input file is provided in the input folder, this will be done automatically and the turbulence statistics at the inflow boundary will be estimated. |
310 | | Please note, the derived turbulence statistics will depend on the height above ground but not on the horizontal location. Parametrization of the Reynolds stress follows [#rotach1996 Rotach et al. (1996)]. |
311 | | The diagonal components ''R,,11,,'', ''R,,22,,'', indicating the horizontal velocity variances, are estimated as follows: |
312 | | {{{ |
313 | | #!Latex |
314 | | \begin{equation*} |
315 | | R_{i,i} = u_{*}^2\,( 0.35\,(-\frac{z_i}{\kappa\,L})^\frac{2}{3} + (5 - 4\,\frac{z}{z_i}) )\,, \: (i \in (1,2)\,, |
316 | | \end{equation*} |
317 | | }}} |
318 | | with ''u'',,*,, being the friction velocity, ''k'' the von-Kármán constant, ''L'' the Obukhov length, and ''z,,i,,'' the mean boundary-layer depth. Please note, ''u'',,*,,, ''L'' and ''z,,i,,'' are area-averaged values in this case. |
319 | | ''z'' describes the height of the respective model grid level. |
320 | | ''u'',,*,, is estimated from the mean horizontal wind speed at the first vertical grid point from the data provided at the lateral boundary using MOST. For the sake of simplicity, neutral conditions are assumed with Φ,,m,, = 1. |
321 | | ''L'' is computed from the area-averaged surface temperature, sensible heat flux profile and roughness length in the model domain. |
322 | | ''z,,i,,'' is estimated from the bulk Richardson criterion, with ''z,,i,,'' being the height where the bulk Richardson first exceeds the critical Richardson number of 0.25, according to [=#heinze2017 Heinze et al. (2017)]. |
323 | | In case of stable stratification (''L'' > 0) or neutral stratification (''L'' = 0), the first term is omitted for the computation of ''R,,ii,,''. \\ |
324 | | Further, vertical velocity variances are parametrized as |
325 | | {{{ |
326 | | #!Latex |
327 | | \begin{equation*} |
328 | | R_{i,i} = w_{m}^2\,( 1.5\,(\frac{z}{z_i})^\frac{2}{3}\,e^(-2\,\frac{z}{z_i}) + (1.7 - \frac{z}{z_i})\,(\frac{u_{*}}{w_m})^2)\,, \: (i \in (3)\,, |
329 | | \end{equation*} |
330 | | }}} |
331 | | with |
332 | | {{{ |
333 | | #!Latex |
334 | | \begin{equation*} |
335 | | w_m = (u_{*}^{3} + 0.6\,w_{*}^{3})^\frac{1}{3} |
336 | | \end{equation*} |
337 | | }}} |
338 | | being the momentum velocity scale, with the convective velocity scale ''w,,*,,''. In case of stable or neutral stratification, ''w,,m,, = u,,*,,''. |
339 | | The remaining components ''R,,31,,,R,,32,,,R,,21,,'' are parametrized as |
340 | | {{{ |
341 | | #!Latex |
342 | | \begin{equation*} |
343 | | R_{i,j} = u_{*}^2\,( 1 - e^(3\,\frac{z}{z_i} - 1))\,. |
344 | | \end{equation*} |
345 | | }}} |
346 | | |
347 | | Too date, no proper parametrization of turbulent length scales that works for all stability regimes and within the entire boundary layer is available. |
348 | | Hence, for the moment the integral length scales are set to |
349 | | {{{ |
350 | | #!Latex |
351 | | \begin{equation*} |
352 | | l_{i,j} = 8\cdot \MIN( \Delta x_i ) , \: i \in (1,2,3)\,, |
353 | | \end{equation*} |
354 | | }}} |
355 | | which arises from following considerations: On the one hand, from the numerical point of view the imposed perturbations should not be rapidly eliminated by the numerics. |
356 | | The numerical dissipation and dispersion, however, act on scales up to 8 time the grid spacing (5th order scheme, see: wiki:/doc/tec/discret]), meaning that scales < 8 times the grid spacing are rapidly dispersed and dissipated due to numerical errors. In order to trigger further turbulence development within the model domain, the imposed correlated turbulence should be on scales larger than the numerically-affected scales. |
357 | | On the other hand, however, imposing too large length scales could trigger structures that exist throughout the entire model domain, particularly under stable conditions, which in turn could bias the simulation results. |
358 | | Hence, as a compromise, length scales are set to 8 time the minimum grid spacing. |
359 | | |
360 | | Note, for ''z''>''z,,i,,'' the components of the stress tensor, length- and timescales are set to zero so that effectively no synthetic turbulence is imposed above the boundary-layer height (also saving computational costs). |
361 | | |
362 | | '''Please note, method 2 currently undergoes extensively testing.''' |
363 | | |
364 | | At this point we emphasize that using the turbulence generator from [#xie2008 Xie and Castro (2008)] only generates turbulence which is correlated in space and time but not necessarily generate realistic turbulent structures as they occur in the real world. Large coherent structures such as e.g. hexagonal pattern as typically observed in a convective boundary layer, however, cannot be generated by this method. |
365 | | Further, we want to add that turbulence is only added to the three wind components. No perturbations are added to the subgrid-scale turbulent-kinetic energy and potential temperature. |
366 | | |
367 | | If switched on, the turbulence generator imposed turbulent fluctuations on all lateral boundaries with Dirichlet boundary conditions for the velocity components. For example, if the offline nesting is switched on, where all four lateral boundaries are non-cyclic, the turbulence generator applied at all lateral boundaries, even though a lateral boundary is also an outflow boundary layer. |
| 500 | == Synthetic Turbulence Generator == |
| 501 | Since r2259 a synthetic turbulence generator is implemented in PALM to generate a turbulent inflow condition. The method is based on the work of [#xie2008 Xie and Castro (2008)] and [#kim2013 Kim et al. (2013)]. Unscaled turbulent motions ''u,,*j,,'' are computed based on length scales along each direction and the amplitude tensor ''a,,ij,,'' which in turn bases on the Reynolds stress tensor. The calculated turbulence is then added to the mean inflow data of the velocity components ''U,,i,,'': |
| 502 | {{{ |
| 503 | #!Latex |
| 504 | \begin{equation*} |
| 505 | u_i = U_i + a_{ij} u_{*j}. |
| 506 | \end{equation*} |
| 507 | }}} |
| 508 | |
| 509 | The amplitude tensor ''a,,ij,,'' depends on the Reynolds stress tensor ''R,,ij,,'' and is calculated using a Cholesky decomposition as suggested by [#lund1998 Lund et al. (1998)]. The unscaled turbulent motions ''u,,*j,,'', which are calculated on the 2D inflow plane, depend on the prescribed time scales ''t,,ij,,'' and length scales ''l,,ij,,'': |
| 510 | {{{ |
| 511 | #!Latex |
| 512 | \begin{equation*} |
| 513 | u_{*i}(t+\Delta t) = u_{*i}(t) \exp\left(-\dfrac{C\Delta t}{T}\right) + \Psi_i(t,L)\left[1-\exp\left(-\dfrac{2C\Delta t}{T}\right)\right]^{0.5}, |
| 514 | \end{equation*} |
| 515 | }}} |
| 516 | where ''Ψ'' denotes a part of the generated 2D signal which is correlated in space using the turbulent length scales ''l,,ij,,'' along the vertical and spanwise direction. Correlation along streamwise direction is assured via the time scale ''t,,ij,,'' which is estimated by ''t,,ij,,'' along streamwise direction using the ''U,,i,,''. |
| 517 | |
| 518 | After adding the turbulence to the mean inflow profiles, a mass flux correction suggested by [#kim2013 Kim et al. (2013)] is performed: |
| 519 | {{{ |
| 520 | #!Latex |
| 521 | \begin{equation*} |
| 522 | u_{i,c} = \dfrac{U_{b,p}}{U_b} u_i, |
| 523 | \end{equation*} |
| 524 | }}} |
| 525 | where |
| 526 | {{{ |
| 527 | #!Latex |
| 528 | \begin{equation*} |
| 529 | U_{b} = \dfrac{\int_S dS u_n}{S}, |
| 530 | \end{equation*} |
| 531 | }}} |
| 532 | where ''u,,i,c,,'' is the corrected wind velocity at the inflow boundary, ''U,,b,,'' and ''U,,b,p,,'' the instantaneous and prescribed bulk velocity at the inflow boundary, ''S'' the surface area of the inflow boundary, and ''u,,n,,'' the component of ''u,,i,,'' normal to the inflow boundary. |
| 533 | |
| 534 | The required length- and time scales, as well as the Reynolds strees tensor can be either prescribed (method 1), if known from previous simulations or measurements, or they can be parametrized (method 2). |
| 535 | Please note, time and length scales as well as the components of the Reynolds stress tensor depend on the height and the horizontal location, particularly over heterogeneous surfaces and model domains with large horizontal extensions. |
| 536 | For the sake of simplicity, however, we consider only height dependent information of the Reynolds stress as well as length and time scales. |
| 537 | |
| 538 | '''Method 1:''' If these information is available, it can be provided via an ASCII file which contains all necessary information. |
| 539 | For an example please see [attachment:STG_PROFILES:wiki:doc/app/iofiles example file]. |
| 540 | This ASCII input file will be read automatically by PALM if the namelist parameter ''use_synthetic_turbulence_generator'' is set to ''True'' within the namelist ''stg_par''. Be sure that the input file is added to the list of input files in your ''.palm.iofiles'' like so: |
| 541 | {{{ |
| 542 | STG_PROFILES in:locopt d3#:d3r $base_data/$fname/INPUT _iprf |
| 543 | }}} |
| 544 | and named with the suffix ''_iprf'' in your ''INPUT'' directory. Please have look at the list of [wiki:/doc/app/iofiles#STG_PROFILES input and output files] for a detailed description of the input file. |
| 545 | |
| 546 | '''Method 2:''' In many cases detailed information about the Reynolds stress and turbulent length scales are not available, so that these information need to be parametrized. If no ASCII input file is provided in the input folder, this will be done automatically and the turbulence statistics at the inflow boundary will be estimated. |
| 547 | Please note, the derived turbulence statistics will depend on the height above ground but not on the horizontal location. Parametrization of the Reynolds stress follows [#rotach1996 Rotach et al. (1996)]. |
| 548 | The diagonal components ''R,,11,,'', ''R,,22,,'', indicating the horizontal velocity variances, are estimated as follows: |
| 549 | {{{ |
| 550 | #!Latex |
| 551 | \begin{equation*} |
| 552 | R_{i,i} = u_{*}^2\,( 0.35\,(-\frac{z_i}{\kappa\,L})^\frac{2}{3} + (5 - 4\,\frac{z}{z_i}) )\,, \: (i \in (1,2)\,, |
| 553 | \end{equation*} |
| 554 | }}} |
| 555 | with ''u'',,*,, being the friction velocity, ''k'' the von-Kármán constant, ''L'' the Obukhov length, and ''z,,i,,'' the mean boundary-layer depth. Please note, ''u'',,*,,, ''L'' and ''z,,i,,'' are area-averaged values in this case. |
| 556 | ''z'' describes the height of the respective model grid level. |
| 557 | ''u'',,*,, is estimated from the mean horizontal wind speed at the first vertical grid point from the data provided at the lateral boundary using MOST. For the sake of simplicity, neutral conditions are assumed with Φ,,m,, = 1. |
| 558 | ''L'' is computed from the area-averaged surface temperature, surface sensible heat flux and roughness length in the model domain. |
| 559 | ''z,,i,,'' is estimated from the bulk Richardson criterion, with ''z,,i,,'' being the height where the bulk Richardson first exceeds the critical Richardson number of 0.25, according to [=#heinze2017 Heinze et al. (2017)]. |
| 560 | In case of stable stratification (''L'' > 0) or neutral stratification (''L'' = 0), the first term is omitted in the computation of ''R,,ii,,''. \\ |
| 561 | Further, vertical velocity variances are parametrized as |
| 562 | {{{ |
| 563 | #!Latex |
| 564 | \begin{equation*} |
| 565 | R_{i,i} = w_{m}^2\,( 1.5\,(\frac{z}{z_i})^\frac{2}{3}\,e^(-2\,\frac{z}{z_i}) + (1.7 - \frac{z}{z_i})\,(\frac{u_{*}}{w_m})^2)\,, \: (i \in (3)\,, |
| 566 | \end{equation*} |
| 567 | }}} |
| 568 | with |
| 569 | {{{ |
| 570 | #!Latex |
| 571 | \begin{equation*} |
| 572 | w_m = (u_{*}^{3} + 0.6\,w_{*}^{3})^\frac{1}{3} |
| 573 | \end{equation*} |
| 574 | }}} |
| 575 | being the momentum velocity scale, with the convective velocity scale ''w,,*,,''. In case of stable or neutral stratification, ''w,,m,, = u,,*,,''. |
| 576 | The remaining components ''R,,31,,,R,,32,,,R,,21,,'' are parametrized as |
| 577 | {{{ |
| 578 | #!Latex |
| 579 | \begin{equation*} |
| 580 | R_{i,j} = u_{*}^2\,( 1 - e^(3\,\frac{z}{z_i} - 1))\,. |
| 581 | \end{equation*} |
| 582 | }}} |
| 583 | |
| 584 | Too date, no proper parametrization of turbulent length scales that works for all stability regimes and within the entire boundary layer is available. |
| 585 | Hence, for the moment the integral length scales are set to |
| 586 | {{{ |
| 587 | #!Latex |
| 588 | \begin{equation*} |
| 589 | l_{i,j} = 8 \cdot MIN( \Delta x_i ), \: i \in (1,2,3)\,, |
| 590 | \end{equation*} |
| 591 | }}} |
| 592 | which arises from following considerations: On the one hand, from the numerical point of view the imposed perturbations should not be rapidly eliminated by the numerics. |
| 593 | The numerical dissipation and dispersion, however, act on scales up to 8 times the grid spacing (5th order scheme, see: wiki:/doc/tec/discret]), meaning that scales < 8 times the grid spacing are rapidly dispersed and dissipated due to numerical errors. In order to trigger further turbulence development within the model domain, the imposed correlated turbulence should be on scales larger than the numerically-affected scales. |
| 594 | On the other hand, however, imposing too large length scales could trigger structures that exist throughout the entire model domain, particularly under stable conditions, which in turn could bias the simulation results. |
| 595 | Hence, as a compromise, length scales are set to 8 times the minimum grid spacing. |
| 596 | |
| 597 | Note, for ''z''>''z,,i,,'' the components of the stress tensor, length- and timescales are set to zero so that effectively no synthetic turbulence is imposed above the boundary-layer height (also saving computational costs). // |
| 598 | |
| 599 | '''Please note, method 2 currently undergoes extensively testing.''' |
| 600 | |
| 601 | At this point we emphasize that using the turbulence generator from [#xie2008 Xie and Castro (2008)] only generates turbulence which is correlated in space and time but not necessarily generate realistic turbulent structures. Large coherent structures like e.g. hexagonal pattern as typically observed in a convective boundary layer, however, cannot be generated by this method. |
| 602 | Further, we want to add that turbulence is only added to the three wind components. No perturbations are added to the subgrid-scale turbulent-kinetic energy and potential temperature. |
| 603 | |
| 604 | If switched on, the turbulence generator imposed turbulent fluctuations on all lateral boundaries with Dirichlet boundary conditions for the velocity components. For example, if the offline nesting is switched on, where all four lateral boundaries are non-cyclic, the turbulence generator applied at all lateral boundaries, even though a lateral boundary is also an outflow boundary layer. |
| 605 | |