ABLProperties.dat
When the -abl
flag is activated in the control.dat
file, TOSCA is prompted to read the ABLProperties.dat
file.
This contains important settings that can be activated for ABL or wind farm simulations with potential temperature
stratification. For example, this file contains settings for the potential temperature profile, it allows to activate
velocity controllers, used to drive the flow when laterally-periodic simulations are applied, the potential temperature
controller, used to fix the potential temperature profile over time, fringe and damping regions, as well as the geostrophic damper,
which avoids inertial oscillations produced when the flow is not initialized in geostrophic balance and the Coriolis force is
active. It is also in this file that one can activate TOSCA’s canopy model or the concurrent precursor method.
Primarily, this file contains entries that are required by TOSCA when the -abl
flag is activated. In
addition, it contains dictionaries that are required when additional flags are activated in the control.dat
file, which are
only used for ABL flows. For example, the xDampingProperties
dictionary is only read if -xDampingLayer
is set to 1 in
the control.dat
file.
The folliwing table summarizes all entries and dictionaries available in the ABLProperties.dat
. A description of
entries specific to each dictionaries is given in the subsequent tables.
entry name |
entry type |
description |
|
scalar |
equivalent roughness length in m used to set
set the initial velocity condition when
|
|
2D vector |
reference velocity in m/s used to set
set the initial condition when
where |
|
scalar |
reference height in m used to set
set the initial condition when
|
|
scalar |
inversion layer height in m used to set
set the initial potential temperature condition
when |
|
scalar |
inversion layer wifth in m used to set
set the initial potential temperature condition
when |
|
scalar |
inversion layer strength in K used to set
set the initial potential temperature condition
when |
|
scalar |
lapse rate above inversion in K/m used to set
set the initial potential temperature condition
when |
|
scalar |
lapse rate below inversion in K/m used to set
set the initial potential temperature condition
when |
|
scalar |
reference potential temperaure used to set
set the initial potential temperature condition
when |
|
scalar |
von Karman constant. |
|
scalar |
smearing parameter used to define how sharp the
initial potential temperaure profile is, when
when |
|
bool |
Coriolis force activation flag. |
|
scalar |
Coriolis parameter. Should be computed as \(10^{-5} \cdot 7.272205217sin(\phi)\), where \(\phi\) is latitude. |
|
bool |
Velocity controller activation flag. Requires
|
|
bool |
Temperature controller activation flag. The target
laterally-averaged potential temperature profile
that the controller aims at maintaining is the
initial one. Requires
|
|
bool |
Temperature controller activation flag. Same as
|
|
bool |
Requires |
|
string |
Available types are:
Type initial tries to
maintain the initial horizontally averaged
potential temperature profile. Types
directProfileAssimilation and
indirectProfileAssimilation calculate source
terms to follow a provided time-series of
potential temperature profile. They require
additional entries in the Moreover, |
|
bool |
Adds divergence-free sinusoidal perturbations to
triger turbulence in the initial condition when
|
|
dictionary |
Contains inputs for velocity and temperature
controllers. Required when
Usage: controllerProperties
{
controllerAction string
controllerType string
relaxPI scalar
alphaPI scalar
timeWindowPI scalar
geostrophicDamping bool
geoDampingAlpha scalar
geoDampingStartTime scalar
geoDampingTimeWindow scalar
hGeo scalar
alphaGeo scalar
uGeoMag scalar
controllerAvgStartTime scalar
controllerMaxHeight scalar
}
|
|
dictionary |
Contains inputs for precursor velocity controller.
Required when Usage: fringeControllerProperties
{
controllerAction string
controllerType string
relaxPI scalar
alphaPI scalar
timeWindowPI scalar
mesoScaleInput bool
geostrophicDamping bool
geoDampingAlpha scalar
geoDampingStartTime scalar
geoDampingTimeWindow scalar
hGeo scalar
alphaGeo scalar
uGeoMag scalar
controllerAvgStartTime scalar
controllerMaxHeight scalar
}
|
|
dictionary |
Defines fringe region parameters, activated with
Usage: xDampingProperties
{
xDampingStart scalar
xDampingEnd scalar
xDampingDelta scalar
xDampingAlpha scalar
xDampingAlphaControlType scalar
xDampingLineSamplingYmin scalar
xDampingLineSamplingYmax scalar
xDampingTimeWindow scalar
uBarSelectionType integer
// additional parameters depending
// on uBarSelectionType (see next
// table)
}
The uBarSelectionType entry defines how the reference wind field is calculated inside the fringe region, and it requires additional parameters depending on the type. The concurrent precursor (i.e. when this reference field is solved concurrently with the main simulation) is activated by setting the uBarSelectionType to 3. TOSCA creates the second simulation instance automatically, without requiring additional user parameters. |
|
dictionary |
Defines lateral fringe region parameters,
activated with Usage: yDampingProperties
{
yDampingStart scalar
yDampingEnd scalar
yDampingDelta scalar
yDampingAlpha scalar
}
|
|
dictionary |
Defines Reyleigh damping layer parameters,
activated with Usage: zDampingProperties
{
zDampingStart scalar
zDampingEnd scalar
zDampingAlpha scalar
zDampingAlsoXY bool
zDampingXYType integer
}
|
|
dictionary |
Defines x-advection damping regions parameters.
This corresponds to the technique developed by
Lanzilao and Meyers (2022a). It is activated with
Usage: advectionDampingXProperties
{
advDampingStart scalar
advDampingEnd scalar
advDampingDeltaStart scalar
advDampingDeltaEnd scalar
}
|
|
dictionary |
Defines y-advection damping regions parameters.
Requires Usage: advectionDampingYProperties
{
advDampingStart scalar
advDampingEnd scalar
advDampingDeltaStart scalar
advDampingDeltaEnd scalar
}
|
|
dictionary |
Defines Rayleigh damping layer at the kLeft
patch. Requires Usage: kLeftDampingProperties
{
kLeftPatchDist scalar
kLeftDampingAlpha scalar
kLeftDampingUBar vector
kLeftFilterHeight scalar
kLeftFilterWidth scalar
}
|
|
dictionary |
Defines Rayleigh damping layer at the kRight
patch. Requires Usage: kRightDampingProperties
{
kRightPatchDist scalar
kRightDampingAlpha scalar
kRightDampingUBar vector
kRightFilterHeight scalar
kRightFilterWidth scalar
}
|
|
dictionary |
Defines input parameters for the canopy model.
Requires Usage: canopyProperties
{
xStartCanopy scalar
xEndCanopy scalar
yStartCanopy scalar
yEndCanopy scalar
zStartCanopy scalar
zEndCanopy scalar
cftCanopy scalar
diskDirCanopy vector
}
|
The meaning of the entires required in the dictionaries listed in the above table are described in the following tables.
controllerProperties & fringeControllerProperties
entry |
entry type |
description |
|
scalar |
controller gain. To be set between 0 and 1. Used by all controllers characterized by
a |
|
although it is good practice to apply the source term throughout the whole vertical extent of the domain, this can be used to avoid applying the driving source term above a specified height, to be specified in meters. |
|
|
string |
can be set to write or read. The former controls the flow based on different
types of calculated driving pressure gradients, then writes the source terms to file.
The latter reads these previously written source terms and directly applies them with
no feedback controlling action. This keyword has to be set in combination with
|
|
string |
Available types are:
Type pressure is the basic PI controller for ABL simulations, it tries to maintain
a wind speed of magnitude The pressure type controller is the preferred one and the most tested. TOSCA also features profile
assimilation techniques, used to drive the flow using observation profiles.
These can be set with controller types directProfileAssimilation or
indirectProfileAssimilation, and require the observed time series inside
Recently, the waveletProfileAssimilation controller type has been also introduced. To use this controller, please see the tests/WaveletProfileAssimilationTest. Note that it requires TOSCA to be compiled with the USE_PYTHON flag set to 1. |
|
scalar |
proportional over integral controlling action used by all controllers characterized
by a |
|
scalar |
time filter for integral part of the controller, used by all controllers
characterized by a |
|
bool |
allows to simulate prescribed wind direction changes.
Available only for controller type pressure. The target velocity data should be
contained inside the |
|
bool |
activates geostrophic damping to remove inertial oscillations. Only for controller type pressure. |
|
scalar |
ratio of damping over critical damping coefficient, usually set to 1.0 (critical damping). Values above 1.0 mean over-damping, values below 1.0 mean under-damping. |
|
start time of geostrophic damping action. Has to be long enough to provide a good guess on the geostrophic wind components. Usually set greater than one period of inertial oscillation (\(2\pi/f_c\)). |
|
|
scalar |
time filter of the deduced geostrophic wind components. Usually set to 1/10 of the inertial oscillation period (\(0.2\pi/f_c\)). |
|
scalar |
height used to sample the geostrophic wind components if the controller is of type geostrophic, disregarded otherwise. |
|
scalar |
initial wind angle with respect to the x-axis at |
|
scalar |
desired geostrophic wind magnitude is the controller is of type geostrophic,
disregarded otherwise. At the first run, the initial flow should match this value
at |
|
scalar |
time after which source terms are averaged before being applied. Used for controller type timeAverageSeries. |
|
bool |
whether or not to filter the calculated source terms for controller types
directProfileAssimilation and indirectProfileAssimilation. Requires
|
|
scalar |
moving average time window used by controller types directProfileAssimilation and indirectProfileAssimilation to filter the calculated source terms. Usually on the order of 100 s. |
|
scalar |
Source term is constant below this height. Used by controller types directProfileAssimilation and indirectProfileAssimilation to avoid interfering with the SGS model inside the boundary layer. Usually set to the mean boundaryr layer height. |
|
scalar |
Source term is constant above this height. Used by controller types directProfileAssimilation and indirectProfileAssimilation. Usually not required so set above the max domain height. |
|
integer |
Polynomial order for source term fitting used by controller type indirectProfileAssimilation. Usually set to 5th order. |
xDampingProperties
entry |
entry type |
description |
|
scalar |
start x coordinate of the x fringe region in meters. |
|
scalar |
end x coordinate of the x fringe region in meters.
Should be greather than |
|
scalar |
distance over which the damping action goes from 0 to \(\alpha\). It must be
smaller than ( |
|
scalar |
damping coefficient \(\alpha\). Usually set to 0.3. |
|
integer |
type of reference velocity computation within the fringe region. This allows to activate the concurrent precursor method.
See section boundary for details on inletFunctions. |
|
string |
type of alpha computation, only for concurrent precursor method (i.e.
|
|
scalar |
minimum y of the line located at the fringe exit and at a height of |
|
scalar |
maximum y of the line located at the fringe exit and at a height of |
|
scalar |
time window for error filtering. Sould be greater or equal than a fringe flow
turnover time.
Only required if |
yDampingProperties
entry |
entry type |
description |
|
scalar |
start y coordinate of the y fringe region in meters. |
|
scalar |
end y coordinate of the y fringe region in meters.
Should be greather than |
|
scalar |
distance over which the damping action goes from 0 to \(\alpha\). It must be
smaller than ( |
|
scalar |
damping coefficient \(\alpha\). Usually set to 0.3. |
|
integer |
TOSCA uses a tiling approach which maps data from the x fringe region to the y fringe
region in order to define the unperturbed velocity and temperature fields within the
y fringe region. Hence, y fringe region is only available when also the x fringe
region is active, and when the
These two constraints are checked, so not satisfying them will result in an error. |
zDampingProperties
entry |
entry type |
description |
|
scalar |
start z coordinate of the z Rayleigh damping layer in meters. |
|
scalar |
end z coordinate of the z Rayleigh damping layer in meters.
Should be greather than |
|
scalar |
damping coefficient \(\alpha\). Usually set to \(3\sqrt{g\Gamma/\theta_0}\),
where \(g\) is the value of the gravitational acceleration, \(\Gamma\) is the
free atmosphere lapse rate, defined by |
|
bool |
If set to 0, damping only acts on the vertical velocity with null velocity as the
reference state (classic Rayleigh damping). If set to 1, horizontal components are
also damped as specified by |
|
integer |
Specifies how to chose the reference velocity used to perform horizontal damping. If
set to 1, velocity is averaged for each j index, along the i index of the mesh (the
simulation setup should be such that they correspond to z and y, respectively) at
the kLeft patch. The resulting vertical velocity profile is used as reference state.
If set to 2, velocity is horizontally averaged from the concurrent precursor domain (
requires x fringe with |
advectionDampingProperties
entry |
entry type |
description |
|
scalar |
start x coordinate of the x advection damping layer in meters. |
|
scalar |
end x coordinate of the x advection damping layer in meters.
Should be greather than |
|
scalar |
distance over which the damping action goes from 0 to 1 (complete removal of
horizontal advection of vertical velocity). The sum of |
|
scalar |
distance over which the damping goes back to 1. Usually larger than
|
kLeftDampingProperties
entry |
entry type |
description |
|
scalar |
width of the k Raileigh damping region, given as distance from the kLeft patch. |
|
scalar |
damping coefficient \(\alpha\). Usually set to 0.3. |
|
vector |
reference unpertuerbed velocity that should be obtained when the flow exits the
Rayleigh damping region. Notably, if the kLeft is the inlet patch, this should be
consistent with the inlet boundary condition, which should be steady above
|
|
scalar |
Filter height for turbulent flow. It should be set to the height of the incoming boundary layer, damping will only be applied above, while turbulence will allowed through below. |
|
scalar |
Sharpness of the filter in m. The filtering function is such that damping is 1% at
|
kRightDampingProperties
entry |
entry type |
description |
|
scalar |
width of the k Raileigh damping region, given as distance from the kRight patch. |
|
scalar |
damping coefficient \(\alpha\). Usually set to 0.3. |
|
vector |
reference unpertuerbed velocity that should be obtained when the flow exits the
Rayleigh damping region. It should be consistent with the incoming flow. As kRight
and kLeft damping are usually employed together, |
|
scalar |
Filter height for turbulent flow. It should be set to the height of the incoming boundary layer, damping will only be applied above, while turbulence will allowed through below. |
|
scalar |
Sharpness of the filter in m. The filtering function is such that damping is 1% at
|
canopyProperties
entry |
entry type |
description |
|
scalar |
start x coordinate of the canopy box. |
|
scalar |
end x coordinate of the canopy box. |
|
scalar |
start y coordinate of the canopy box. |
|
scalar |
end y coordinate of the canopy box. |
|
scalar |
start z coordinate of the canopy box. |
|
scalar |
end z coordinate of the canopy box. |
|
scalar |
planform averaged thrust coefficient for the canopy model. It can be evaluated as \(4\pi C_T/(4S_xS_y)\). It is still debated if \(C_T\) should be the freestream or the disk based thrust coefficient. Here we suggest disk based. |
|
vector |
vector that defines the direction of the force applied from the canopy to the flow. It is automatically normalized by TOSCA. |