Version 16 (modified by scharf, 6 years ago) (diff) |
---|
Setup for turbulent inflow
Starting from version 3.5 PALM includes a so-called turbulence recycling method which allows a turbulent inflow with non-cyclic horizontal boundary conditions. The method follows the one described by Lund et al. (1998), modified by Kataoka and Mizuno (2002). The method is switched on by setting the initial parameter turbulent_inflow = .TRUE..
The turbulent signal A'(y,z) to be imposed at the left inflow boundary is taken from the same simulation at a fixed distance xr from the inflow (given by parameter recycling_width): A'(y,z) = A(xr,y,z) - A(xr,z), where A(xr,z) is the line average along y. The turbulent quantity A'(y,z) is then added to a mean inflow profile a(z) which is the horizontal (and temporal) average as calculated from a precursor run. This is done after each timestep.
In order to avoid a continous growth of the turbulent layer with time, the height up to which turbulence is recycled is limited by parameter inflow_damping_height. By default, this height is equal to the the height of the boundary layer z_i calculated by the precursor run. In the case of a strictly neutral flow you have to set the parameter inflow_damping_height because the value of z_i calculated by the precursor run is zero.
So far, a turbulent inflow is realized from the left (west) side only (05/04/16)!
The following tries to give a short recipe about how to create a proper setup for using the turbulence recycling method:
- Carry out a precursor run with cyclic horizontal boundary conditions, restart data output and profile output at the end of the simulation.
A precursor run with cyclic horizontal boundary conditions has to be carried out in order to create a (quasi-) stationary state. Since the horizontal average from this precursor run is used as the mean inflow profile for the main run, the wall-normal velocity component must point into the domain at every grid point and its magnitude should be large enough in order to guarantee an inflow even if a turbulence signal is added.
The main run must be initialized using initializing_actions = 'cyclic_fill' . Therefore, restart (binary) data of the precursor run must be saved.
The main run requires the mean profiles from the precursor run to be used at the inflow. For this, the horizontally and temporally averaged mean profiles as provided with the standard PALM output are used. The user has to set parameters dt_dopr, averaging_interval, etc. for the precursor run appropriately, so that an output is done at the end of the precursor run. The profile information is then contained in the restart (binary) file created at the end of the precursor run and can be used by the main run. It is very important that the mean profiles at the end of the precursor run are in a stationary or quasi-stationary state, because otherwise it may not be justified to use them as constant profiles at the inflow. Also, turbulence at the end of the precursor run should be fully developed. Otherwise, the main run would need an additional spinup-time at the beginning to get the turbulence to its final stage.
- The restart data of the precursor run must be made available for the main run. The user has to copy/link/rename the restart data of the precursor run manually as they would be restart data of the main run, so that Palm can find the restart data during the main run. Usually, this is done by creating a directory next to your output directory named RESTART/<name_of_main_run>_d3d and rename/copy/link the directory, where the restart data of the precursor run are saved (this directory is named via tmp_data_catalog? in .palm.config.<configuration identifier>), to <name_of_main_run>_d3d
- Set options for turbulent inflow in the parameter file of the main run
For initialization it has to be set initializing_actions = 'cyclic_fill' .
Horizontal boundary conditions have to be set to bc_lr = 'dirichlet/radiation' . The radiation boundary condition at the outflow requires that the wall-normal velocity component at the outflow must point out of the domain at every grid point and at every timestep. Special care has to be taken in case of obstacles near the outflow, because their recirculations may violate this condition.
Because of the Dirichlet condition at the inflow, the flow does not require any further driving force in general. An external pressure gradient or a geostrophic wind can be used, but should have the same value as for the precursor run. Otherwise, the horizontally diverging wind field will induce vertically descending or ascending motions. An application of volume flow conservation (conserve_volume_flow = .TRUE.) should be done with care, because it may have the same effects.
The main run allows to use a larger domain along x and y than in the precursor run. Along z, however, the main run and the precursor run must be exactly the same.
Set turbulent_inflow = .T. .
Define the position of the recycling plane via recycling_width. The distance between the inflow and the recycling plane should be large enough to allow for a sufficient advancement of the turbulent eddies (should be somehow correlated with the eddy turnover time). Otherwise, almost the same eddies will be recycled again and again, which will distort the turbulence statistics. Typically, the recycling width will be similar or equal to the domain size of the precursor run.
A damping layer for the turbulence signal can be set at top of the domain via inflow_damping_height and inflow_damping_width. Inside the damping layer the turbulence signal is linearly damped to 0%. For inflow_damping_height the boundary layer height from the precursor run should be used.
The recycled turbulence, which is mapped from the recycling plane to the inflow boundary, can be shifted in y direction. This y-shift reduces persistent streaks that may occur within the recycling domain. To use the y-shift recycling_yshift = .T. needs to be set. The distance of the y-shift is INT(npey / 2), which is in most cases the best distance for effectively reducing streaks in the recycling domain.
- When starting the main run, palmrun must be told to provide the binary data of the restart run. For this, first the list of input-files in .palm.iofiles must be modified. In line
BININ in:loc:flpe d3r $base_data/$run_identifier/RESTART _d3d
an additional flag, e.g. cycfill has to be added in the third column:BININ in:loc:flpe d3r:cycfill $base_data/$run_identifier/RESTART _d3d
This flag has to be added to the run control list of the palmrun command (option -a, see job control with palmrun) when starting the main run as well.
References
- Lund, T. S., X. Wu and K. D. Squires, 1998: Generation of turbulent inflow data for spatially-developing boundary layer simulations. J. Comput. Phys., 140, 233-258.
- Kataoka, H. and M. Mizuno, 2002: Numerical flow computation around aeroelastic 3D square cylinder using inflow turbulence. Wind Struct., 5, 379-392.