Theory Manual
Governing equations
Conservation of fluid mass:
Conservation of fluid momentum:
Incompressibility constraint:
Tracer(s) advection:
Discretization
The numerical methodology used to solve the partial differential equations (PDEs) within AMR-Wind is documented in Almgren et al. (JCP 1998). AMR-Wind uses AMReX-Hydro for many advection routines. The reader is referred to their documentation for implementation details.
Time Step – MOL
In the predictor
Define
, the face-centered (staggered) MAC velocity which is used for advection, usingDefine an approximation to the new-time state,
by setting
Project
by solving
then defining
and
In the corrector
Define
at the “new” time usingDefine a new approximation to the new-time state,
by setting
Project
by solving
then defining
and
Time Step – Godunov
Define
, the MAC velocity which is used for advection. This velocity is interpolated to the cell faces and extrapolated forward in time using a Taylor expansion. Then it is projected to form a divergence-free velocity field.
Time discretization of momentum governing equation
The time step goes from
to with the right-hand-side at . The time discretization of
depends on the method chosen to compute diffusion.
Partition the discretized equation into two steps, the Predictor and Applying the Projection. The predicted state,
, is an approximation to the new-time state, .
In order to calculate
within the advection term, the momentum must be interpolated to the faces and extrapolated forward in time a half step, similar to the face velocities involved in the MAC projection. To do this for the momentum, the routine uses the momentum, pressure gradients, source terms, and diffusion terms at , as well as .In the case of variable density single-phase or multiphase simulations, the density at
is found using separate scalar equations, which are solved during the predictor step. Because density has no projection step,
Therefore, the equation that applies the new pressure gradient becomes
The pressure gradient at
is found by solving the projection
Solving physics on a stretched AMReX mesh
Often for simulations involving walls, (e.g., channel flows, complex terrains etc.) it is desirable to have finer mesh near the wall which gradually coarsens only in the wall-normal direction. Consequently, modifications within AMR-Wind are underway to support solving a non-uniformly spaced mesh while still using most of AMReX’s machinery directed at uniformly-spaced Cartesian meshes. The governing equations solved on a non-uniform stretched mesh are further explained below -
Multiphase flow modeling
AMR-Wind employs the volume-of-fluid method for simulating two-phase (water-air) flows. More specifically, the volume fraction field is advected explicitly using a directional split geometric approach, and the advection of momentum is discretized in a mass-consistent manner. Overall, this approach conserves mass and momentum while remaining stable at high density ratios (typically 1000). Viscosities can be specified for each fluid independently, but surface tension is not modeled by AMR-Wind currently. For further detail, see Kuhn, Deskos, Sprague (Computers & Fluids 2023).
Source terms
Gravity Forcing
The implementation of this source term allows the user to choose the full gravity term (ICNS.use_perturb_pressure = true
to the input file.
The reference density (1.0
by default, can be defined as a constant through the input argument, incflo.density
, or can be defined as a spatially varying field within the flow setup (see physics/multiphase/Multiphase.cpp).
Using the perturbational form implies that the hydrostatic pressure is removed from the pressure variable, including its output. This means that the solution to the Poisson equation is actually the perturbational pressure, ICNS.reconstruct_true_pressure = true
. In order for this to operate in the code, the reference pressure field must be defined for the specific flow case being run.
An example of this is in physics/multiphase/Multiphase.cpp. To construct the reference pressure field, the reference gravity term must be integrated. This particular example assumes that the reference density only varies in z (or is constant), gravity acts only in z, and the hydrostatic pressure at the high z boundary is equal to 0.
In mathematical form, the derivation and calculation of the full pressure is as follows:
assume
and
change reference frame to the top boundary, and assume
Mesoscale Forcing
To incorporate larger-scale atmospheric dynamics under real conditions, AMR-Wind offers two approaches. If mesoscale momentum and/or temperature source terms are known exactly, e.g., from a numerical weather prediction (NWP) model, then these may be directly applied. These mesoscale source terms would come from the RHS of the mesoscale equations of motion and may also include the effects of additional modeled physics such as radiation or moisture. This mesoscale forcing approach is called the “tendencies” (or “mesoscale budget components”) approach. For more information, see Draxl et al. (BLM 2021)
If the mesoscale source terms are not known a priori, they may be derived on the fly with a profile assimilation technique. This is an engineering approach that applies a proportional controller to drive the instantaneous planar averaged wind and/or temperature profiles towards known time–height data. This approach can be used with NWP model output or observational data. For more information, see Allaerts et al. (BLM 2020)
The application of these forcing approaches is detailed here.
Actuator Forcing
Calculating actuator forces relies on sampling the velocity field at actuator points at the beginning of each time step (n). Actuator-based models, i.e., actuator lines and actuator disks, rely on internal implementations (e.g., Joukowsky disk, actuator-line wing) or external turbine tools (OpenFAST) that use these sampled velocities to calculate forces and the motion of actuator points. When the Godunov method is used, the motion of actuator points must be incorporated into the application of actuator forces. This is because the Godunov method discretizes source terms at the half time step (n+1/2). Therefore, the actuator force vectors are calculated using fluid velocities at n, and these actuator forces are applied at locations corresponding to n+1/2.
Turbulence Models
RANS models
The RANS models are available in two flavors: wall-modeled and wall-resolved. The former model is
designed for cases with
Axell One-Equation RANS Model
The one-equation model solves the transport equation for turbulent kinetic energy (TKE). The length scale is computed using algebraic equations. The transport equation for TKE is given by:
Here
Here
The shear length scale is given by
The implementation methodology is different for stable/neutral and unstable stratification and follows the recommendation in the paper. The turbulent viscosity is computed as follows:
Here
Here
LES models for subgrid scales
Smagorinsky model
Simple eddy viscosity model, the dissipation is calculated using the resolved strain rate tensor and the grid resolution as
AMDNoTherm model
This is the implementation of the base AMD model, useful for flows without a temperature field.
The eddy viscosity is calculated using an anisotropic derivative with a different filter width in each direction
The anisotropic derivative is used to define the eddy viscosity as
AMD model (for ABL)
The eddy viscosity is calculated using an anisotropic derivative with a different filter width in each direction
The anisotropic derivative is used to define the eddy viscosity as
Unit tests
There is a simple unit test for both unit_tests/turbulence/test_turbulence_LES.cpp
under
test_AMD_setup_calc
.
Non-linear Sub-grid Scale Model
The non-linear model extends the Smagorinsky model by including an extra term computed from the strain and vorticity rate. The modification proposed by Branco (JFM 1997) and implemented in WRF (Mirocha et. al (MWR 2010)) is the model considered. The sub-grid scale stress tensor is calculated as follows:
Here
The default length scale of
Here the term AMR-Wind
diffusion framework. The last two terms in
Wall models
The wall models described in this section are implemented in AMR-Wind
for
running wall-bounded flows.
Monin-Obukhov Similarity Theory
Monin-Obukhov similarity theory is used for wall boundary conditions for ABL simulations. The exact
calculation of
where
and for stable stratification (
where
Log-law wall model
This wall model computes the local
The log law:
Given a horizontal velocity magnitude
In AMR-Wind
Newton-Raphson iterations are used with a convergence
criterion of
Finally, the shear stress is calculated as,
Constant stress model
NOTE: This wall model will be ill-posed unless combined with a Dirichlet
boundary condition on the other wall,
This is a trivial wall model, where the shear stresses are specified as constants. For a pressure gradient driven channel,
Schumann model
NOTE: This wall model will be ill-posed unless combined with a Dirichlet
boundary condition on the other wall,
This model is a modified version of the constant stress model, where the
fluctuations from a reference height
where,
Symmetric wall boundary
This is a boundary condition to for flows with a symmetry across the z direction (example: half-channel simulations) at the centerline.
Dynamic wall model (Wave model)
This wall model is used to calculate the stress due to moving surfaces, like ocean waves. It aims to introduce wave phase-resolving physics at a cost similar to using the Log-law wall model, without the need of using wave adapting computational grids. The model was developed by Ayala et al. (2024).
The first component gives the form drag due to ocean waves, where Log-law wall model
is used.
Terrain Model
An immersed boundary forcing method (IBFM) is used to represent the terrain. In this method, the effect of the terrain is modeled using a forcing term in the momentum and energy equation.
The forcing term in the momentum equation is given by:
Here
The original formulation is designed for low Reynolds number cases and does not include a method for applying a wall function. We propose the use of a forcing function to include the wall effects.
First, compute the friction velocity from location k+1:
The expected wind speed at cell k is computed as follows:
The methodology can be extended to include stability functions in a straight forward manner. The forcing term is computed as
Here

Forest Model
The forest model provides an option to include the drag from forested regions to be included in the momentum equation. The drag force is calculated as follows:
Here
Here
The simplified model with uniform LAD is recommended for forested regions with no knowledge of the individual trees. LAI values can be used from climate model look-up tables for different regions around the world if no local remote sensing data is available.