EQUATION

Specifies equation systems present in the problem.

Type

AcuSolve Command

Syntax

EQUATION {parameters}

Qualifier

This command has no qualifier.

Parameters

flow (enumerated) [=navier_stokes]
Flow equation type.
navier_stokes
Navier-Stokes equations.
stokes
Time dependent Stokes equations.
compressible_navier_stokes (cns)
Compressible Navier-Stokes equations.
compressible_euler
Compressible Euler equations.
absolute_pressure_offset (real) >=0 [=0]
Offset to convert to absolute pressure units. Used with ideal_gas and isentropic types in DENSITY_MODEL.
temperature or temp (enumerated) [=none]
Energy equation type.
none
No energy equation solved.
advective_diffusive
Energy equation solved.
absolute_temperature_offset (real) >=0 [=0]
Offset to convert to absolute temperature units. When temperature = advective_diffusive is used with any of the following conditions: ideal_gas type in DENSITY_MODEL, any radiation model, or radiation_heat_flux variable in ELEMENT_BOUNDARY_CONDITION.
radiation or rad (enumerated) [=none]
Radiation type.
none
No radiation solved.
enclosure
The enclosure radiation model.
p1_model
The p1 radiation model. Used with temperature = advective_diffusive.
Note: Operating temperature should be absolute temperature.
discrete_ordinate
The Discrete Ordinates or DO model. Used with temperature = advective_diffusive.
Note: The operating temperature should be absolute temperature.
radiation_quadrature [=S4]
Specifies the order of the Sn angular quadrature set used with the discrete ordinates method. Essentially these represent the directions, or ordinates, along which the radiative transfer equation is solved. The available quadrature orders are: S2, S4, S6, S8 and S10, representing a discrete number of directions: 8, 24, 48, 80 and 120 directions, respectively. The default value is S4, which gives a good balance between computational efficiency and accuracy.
radiation_solve_frequency (int) [=1]
Defines the frequency of the radiation solve relative to other transport equations. For example, the default value of one means the radiative transport is solved every timestep. radiation_solve_frequency is only valid if radiation = discrete_ordinate.
species_transport or spec (enumerated) [=none]
Multi-species transport equation type.
none
No species field.
advective_diffusive or ad
Advective diffusive equation for multiple species transport. Requires num_species.
humid_air_model (boolean) [=off]
Flag specifying whether to use the humid_air_model. When set to on, the field is assigned to the humid air. To activate the humid air model, temperature = advective_diffusive should be set first. Requires multi_field. When the humid air model is switched on, humidity_film_thickness calculation will be performed in transient simulation only. For steady-state simulation, it will be ignored.
edem_coupling (boolean) [=off]
Flag specifying whether to conduct AcuSolve-EDEM one-way or two-way coupling. When set to on, multi_field should be set to either algebraic_eulerian for one-way coupling or should be set to eulerian_eulerian for two-way coupling.
multi_field (enumerated) [=none]
Type of multi-field model to use.
none or off
No multi-field model is used.
levelset
Use the level set method to capture the interface between immiscible fluids. Requires fields.
levelset_bfecc
Use the level set method with the Back and Forth Error Compensation and Correction (BFECC) advection scheme. Requires fields.
algebraic_eulerian
Use the Algebraic Eulerian method to model multiple dispersed fields with one carrier field. Requires fields. This option is also required for AcuSolve-EDEM one-way transient coupling.
eulerian _eulerian
Use the Eulerian Eulerian method to model multiple dispersed fields with one carrier field. Requires fields. This option is also required for AcuSolve-EDEM two-way transient coupling.
advective_diffusive
Use the advective diffusive method to model the transport of gas mixture. Requires fields.
fields (list) [no default]
List of fields to solve in the case of multi-field analyses. When using multi_field=levelset, solutions are limited to two immiscible fields. An unlimited number of dispersed fields can be modeled with one carrier field using multi_field=algebraic_eulerian. When using humid_air_model and multi_field=advective_diffusive, together, or EDEM coupling (one-way and two-way), the number of fields are limited to two.
num_species (integer) >0 <=9 [=1]
Number of species present in the problem. Used with advective_diffusive species transport type.
species_names (array) [no default]
Array of user-defined species names to associate a name string with each species via a species_names. Used with num_species.
turbulence or turb (enumerated) [=none]
Turbulence model.
none
Laminar flow.
spalart_allmaras or spalart
Spalart-Allmaras one-equation RANS model.
shear_stress_transport or sst
Shear Stress Transport 2-equation RANS model.
k_epsilon or keps
K-epsilon 2-equation RANS model.
realizable_k_epsilon or realkeps
Realizable k-epsilon 2-equation RANS model.
rng_k_epsilon or rngkeps
RNG k-epsilon 2-equation RANS model.
k_omega
K-omega two-equation RANS model.
bsl_k_omega
BSL k-omega two-equation RANS model.
detached_eddy_simulation or des
Spalart-Allmaras based detached eddy simulation model.
shear_stress_transport_detached_eddy_simulation or sst_des
Shear stress transport based detached eddy simulation model.
large_eddy_simulation or les
Classical (Smagorinsky) LES model.
dynamic_model or dynamic
Dynamic subgrid LES model.
turbulence_transition_model or trans (enumerated) [=none]
Turbulence transition model. Valid only when turbulence=spalart_allmaras, shear_stress_transport, detached_eddy_simulation, or shear_stress_transport_detached_eddy_simulation.
none
Do not include the impact of transition physics into turbulent simulations.
intermittency_momentum_thickness_reynolds_number or gamma_re_theta
γ -Re θ two-equation transition model.
intermittency or gamma
γ one-equation transition model.
viscoelastic or vest (enumerated) [=none]
Viscoelastic material model type.
none
No viscoelastic material model equation.
upper_convected_maxwell or ucm
Upper convected Maxwell model used to incorporate viscoelastic material effects.
upper_convected_maxwell_log_model or ucm_log
Log formulation of the upper convected Maxwell model used to incorporate viscoelastic material effects.
mesh
Mesh type.
eulerian or fixed
Fixed mesh.
arbitrary_lagrangian_eulerian or ale
Arbitrary mesh movement.
ale_ogden
Enhanced arbitrary mesh movement useful for extreme mesh deformation cases.
specified or enforced
Specified mesh movement.
optimization (boolean) [=off]
Flag to turn on optimization. This requires an OPTIMIZATION command and either one or more DESIGN_VARIABLE commands, or a single DESIGN_VARIABLES_FIELD command for topology optimization. If the design variables control change in geometry, mesh has to be set to specified or arbitrary_lagrangian_eulerian.
topology_flow or topoflow (enumerated) [= none]
Topology flow equation type.
none
No adjoint linearized Navier-Stokes equations are solved.
adjoint_topology_flow
Adjoint linearized Navier-Stokes equations.
design_topology_filter or topofilt (enumerated) [= none]
Design topology filtering method. Valid only when toplogy_flow = adjoint_topology_flow.
none
No design topology filtering.
laplacian_topology
Design topology filtering. Requires min_filter_radius in the DESIGN_VARIABLE_FIELD command.
external_code (boolean) [=off]
Flag specifying whether an external solid/structural code is coupled with AcuSolve to solve a Direct Coupling Fluid Structure Interaction (DC-FSI) problem.
particle_trace [=off]
Flag specifying whether to permit coupling with AcuTrace.
running_average [=off]
Flag specifying whether to create running average solution fields. If this option is set to on, the effectiveness of the non-reflecting boundary condition will be improved when flow = navier_stokes and non_reflecting_bc_running_average_field (nrbcraf) = true.
running_average_steps (integer) >=1 [=100]
Maximum number of time steps to average solution fields. Used with running_average=on.
gravitational_acceleration (array) [={0,0,0}]
The constant value of the gravity force. This array must have exactly three components in the global xyz coordinate system.
Note: gravitational_acceleration and gravity under GRAVITY, as a part of BODY_FORCE, are cumulative.
porous_media_velocity_type (enumerated) [=superficial]
Porous media velocity type. Requires the porosity model. Type of the porosity model is set to constant.
superficial
Superficial velocity porous approach.
physical
Physical velocity porous approach.

When porous_media_velocity_type=superficial, velocity is calculated based on volumetric flow rate and the cross section. When porous_media_velocity_type=physical, a more accurate representation of velocity inside the porous media can be obtained by solving the continuity and the momentum equation using the intrinsic/physical averaging method.

electric_potential (enumerated) [=none]
Electric potential equation type.
none
No charge field.
Joule_heating
Solution of charge conservation equation coupled to the energy equation.
battery_msmd
Solution of charge conservation equation coupled to the energy with batteries modeled using a multi-scale multi-dimensional approach.
battery_joule_heating
Solution of charge conservation equation coupled to the energy with batteries modeled using an equivalent circuit model.

Enables the solution of the charge conservation equation on the assumption of electrostatics. If electric_potential = joule_heating the charge conservation equation is coupled to the energy equation via a source term based on Joule’s first law.

Battery modeling is enabled using battery_msmd or battery_joule_heating. The former uses a multi-scale approach where there is a cell scale and a sub-domain electrochemical scale. In this model two potential fields are resolved at the cell scale, which represent the potentials of the negative and positive current collectors. The sub-domain model, currently only supporting ECM models, represents the voltage-current response of the battery derived from the solution of an ODE system. Inter-domain coupling between the sub-domain and cell scale is achieved via averaging source terms, to eliminate any spatial dependence, in the dual electric potential and energy equations. Cell scale to sub-domain coupling is achieved using spatially resolved variables directly in the sub-domain equations. The battery_joule_heating model also uses ECM models but applies them as source terms in the energy equation and boundary conditions based on current and terminal voltage for the electric potential in the connected components of the batteries, for example, terminals/tabs and busbars. Both battery approaches use joule heating in the terminals/tabs and busbars.

Description

This command specifies the equations present in the problem. For example, to specify a flow problem with an energy equation, you need:
EQUATION {
    flow = navier_stokes
    temperature = advective_diffusive
}

The basic continuity, momentum, energy, and species equations are:

ρ t + ρ u = 0 ρ u t + ρ u u + p = τ + ρ b ρ h t + ρ u h = q + ρ s ρ φ i t + ρ u φ i = Ψ i + ρ σ i

where ρ is the density, given by the DENSITY_MODEL command; u is the velocity vector, p is the pressure, τ = [ τ i j ] is the viscous stress tensor, given by VISCOSITY_MODEL; b is the momentum source vector, given by GRAVITY and other commands; h is the enthalpy, given by SPECIFIC_HEAT_MODEL; q is the heat flux vector, given by CONDUCTIVITY_MODEL; s is the heat source per unit mass, given by MASS_HEAT_SOURCE; φ i , i = 1 , ... , num_species, are the scalar species; Ψ i is the diffusion flux vector for species φ i , given by DIFFUSIVITY_MODEL; and σ i is the species source per unit mass for species φ i , given by MASS_SPECIES_SOURCE. Other terms are added by several commands; the full equations are given in the descriptions of these commands.

The only change for stokes flow is the removal of the ρ u · (convective) terms. These equations may be also modified by various body forces, references frames, material models, and so on. See the corresponding commands for the specific modifications.

To add enclosure radiation to the energy equation, where the temperature is in degrees Celsius, the above command is modified as follows:
EQUATION {
	flow = navier_stokes
	temperature = advective_diffusive
	radiation = enclosure
	absolute_temperature_offset = 273.14
}
To add two scalar transport equations to the system:
EQUATION {
	flow = navier_stokes
	temperature = advective_diffusive
	radiation = enclosure
	absolute_temperature_offset = 273.14
	species_transport = advective_diffusive
	num_species = 2
	species_names = {“honey”, “dust”}
}
To add the Spalart-Allmaras turbulence model:
EQUATION {
	flow = navier_stokes
	temperature = advective_diffusive
	radiation = enclosure
	absolute_temperature_offset = 273.14
	species_transport = advective_diffusive
	num_species = 2
	species_names = {“honey”, “dust”}
	turbulence = spalart_allmaras
}
To add the ability to move the mesh arbitrarily and simulate a viscoelastic material:
EQUATION {
	flow = navier_stokes
	temperature = advective_diffusive
	radiation = enclosure
	absolute_temperature_offset = 273.14
	species_transport = advective_diffusive
	num_species = 2
	species_names = {“honey”, “dust”}
	turbulence = spalart_allmaras
	mesh = arbitrary_lagrangian_eulerian
	viscoelastic = upper_convected_maxwell
}
Finally, to add a solid/structural equation that will be solved using an external code as part of a Direct Coupling Fluid Structure Interaction (DC-FSI) problem:
EQUATION {
    flow = navier_stokes
    temperature = advective_diffusive
    radiation = enclosure
    absolute_temperature_offset = 273.14
    species_transport = advective_diffusive
    num_species = 2
    species_names = {“honey”, “dust”}
    turbulence = spalart_allmaras
    mesh = arbitrary_lagrangian_eulerian
    viscoelastic = upper_convected_maxwell
    external_code = on
}

An arbitrary_lagrangian_eulerian mesh is typically active when an external code is used. See the EXTERNAL_CODE command for more details on setting up DC-FSI problems.

The EQUATION command specifies the existence and types of the equation systems and solution fields present in the problem. The TIME_SEQUENCE and STAGGER commands must then be used to request the solution for the specified equations. For example, to solve for a turbulent flow problem using the Spalart-Allmaras turbulence mode, you must have:
EQUATION {
    flow = navier_stokes
    turbulence = spalart_allmaras
}
TIME_SEQUENCE {
    staggers = { "flow", "turb" }
    ...
}
    STAGGER( "flow" ) {
    equation = flow
    ...
}
    STAGGER( "turb" ) {
    equation = turbulence
    ...
}
As another example, to solve a coupled particle-flow problem with AcuTrace, you must have:
EQUATION {
    flow = navier_stokes
    particle = on
}
TIME_SEQUENCE {
    staggers = { "flow", "particle" }
    ...
}
STAGGER( "flow" ) {
    equation = flow
    ...
}
STAGGER( "particle" ) {
    equation = particle
    ...
}

To solve for a flow field that has multiple immiscible fluid phases in contact with each other, it is necessary to employ a multi-field modeling approach. When setting multifield = levelset, AcuSolve tracks the interface between the two immiscible fluids using the requested interface tracking scheme. This type of technology is useful for tracking the interface between fluids for applications such as fuel sloshing in a fuel tank, waves on the surface of the ocean, or a liquid being poured into a container. Two options are available for immiscible multiphase simulations, levelset and levelset_bfecc. Both level set approaches rely on two additional staggers to track the interface. In the standard levelset method, the first stagger governs the transport of the interface, and the second stagger controls the sharpness of the interface. The levelset_bfecc method includes extra stagger iterations to reduce the amount of diffusion in the solution field. The levelset_bfecc method captures multiphase interfaces more sharply than the standard levelset method. Because more calculations are performed, more computing time is needed when compared to the standard levelset method.

In typical applications, the flow field is iterated in conjunction with the advection of the interface, and the sharpening is done as a final step in the time sequence within each time step. For example, the following settings represent a multi-field simulation containing air and water with the level set method used to track the interface:
EQUATION {
    flow = navier_stokes
    multi_field = levelset
    fields = {"water","air";}
}
TIME_SEQUENCE {
    staggers = { "flow_levelset", "redistancing" }
    ...
}
STAGGER( "flow" ) {
    equation = flow
    ...
}
STAGGER( "levelset" ) {
    equation = levelset
    ...
}
STAGGER( "redistancing" ) {
    equation = levelset_redistancing
    ...
}
STAGGER( "flow_levelset" ) {
    equation = none
    ...
    staggers = { "flow","levelset"}
}
To simulate multiple-dispersed fields with one carrier field, it is necessary to set multifield=algebraic_eulerian. AcuSolve tracks the dispersed fields (particles, bubbles, droplets) as Eulerian fields while calculating the momentum exchange between the dispersed fields and the carrier using an algebraic slip model. The carrier field of the problem should be the last field in fields under EQUATION. In general, it is recommended that the heavier fluid is specified as the carrier. For the case where the dispersed field and carrier field are separated, the Algebraic Eulerian method tracks the interface as a smooth interface between fluids. Unlike the level set approach, an additional stagger is not needed to track the interface. AcuSolve solves the mixture continuity, mixture momentum equations and field volume fraction equations:
EQUATION {
    flow = navier_stokes
    multi_field = algebraic_eulerian
    fields = {"Air", "Water"}
}
TIME_SEQUENCE {
    staggers = {"flow_fields"}
}
STAGGER("flow_fields" ) {
    staggers = {"flow", "field: Air", "field: Water"}
}
STAGGER( "flow" ) {
    equation = flow
}
STAGGER( "field: Air" ) {
    equation = field
    field = "Air"
}
STAGGER( "field: Water" ) {
    equation = field
    field = "Water"
}
When using the humid_air model, AcuSolve tracks the spread of “Water vapour” field by solving the field's mass fractions equation in the form of species transport equation in addition to solving the mixture continuity, momentum equations and energy equations:
EQUATION {
    flow = navier_stokes
    temperature = advective_diffusive
    humid_air_model = on 
    multi_field = advective_diffusive
    fields = { "Humid_Air", "Air" }
}
TIME_SEQUENCE {
    staggers = { "flow_temp_fields" }
}
STAGGER( "flow_temp_fields" ) {
    staggers = { "flow", “temperature”, "field: Humid_Air", "field: Air",  }
}
STAGGER( "flow" ) {
    equation = flow
}
STAGGER( "temperature" ) {
    equation = flow
}
STAGGER( "field: Humid_Air" ) {
    equation = field
    field = "Air"
}
STAGGER( "field: Air" ) {
    equation = field
    field = "Air"
}
To model incident radiation using the p1 radiation model in a grey, optically thick participating medium, the following command is defined: radiation = p1_model. In order to solve the energy equation coupled with radiative transport set temperature = advective_diffusive. This provides the influence of thermal radiation, through heat sources and sinks, on the temperature field.
EQUATION {
    flow = navier_stokes
    radiation = p1_model
    temperature = advective_diffusive
}
RADIATION {
    view_factor_type                    = hemicube
    num_hemicube_bins                   = 200
    max_surface_subdivision             = 1
    smoothing_type                      = least_squares
    stefan_boltzman_constant            = 5.67e-008      # W/m2-K4
    num_symmetry_planes                 = 0
    symmetry_center = { 0, 0, 0; } ;
    symmetry_direction_1 = { 1, 0, 0; } ;
    symmetry_direction_2 = { 0, 1, 0; } ;
    symmetry_direction_3 = { 0, 0, 1; } ;
}
To model radiative transport in a grey, participating medium. The method handles the full spectrum of optical thicknesses. In order to solve the energy equation coupled with radiative transport set temperature = advective_diffusive. This provides the influence of thermal radiation, through heat sources and sinks, on the temperature field.
EQUATION {
    radiation = discrete_ordinate
    radiation_quadrature = S4
    temperature = advective_diffusive
}
Alternatively,
EQUATION {
    radiation = DO
    radiation_quadrature = S4
    temperature = advective_diffusive
}

When using the k_omega, sst or k_epsilon based turbulence models, two staggers are needed for the turbulence closure; one corresponding to the kinetic energy and one corresponding to the auxiliary equation, eddy frequency for the k-omega and SST based models and dissipation rate for the k-epsilon based models. These equations are solved segregated from each other, necessitating individual staggers for each one. The eddy frequency stagger represents a special case in which the transport quantity used by the stagger deviates from the standard equation for eddy frequency. Instead of solving directly for ω , AcuSolve constructs the transport equation in terms of 1/sqrt( ω ). This change of variables does not change the solution produced by the SST and k-omega turbulence models. However, the change of variables does lead to significant improvements in stability. The actual transport quantity (1/sqrt( ω )) is written as sqrt_eddy_period in the nodal field outputs. The eddy_frequency variable that appears in the nodal outputs is computed based on the solution for sqrt_eddy_period.

There are a few special cases when a differential equation is not solved for each setting that is specified in the EQUATION command. Therefore, some of the turbulence models and mesh equations require no staggers. For the turbulence models large_eddy_simulation and dynamic_model, the turbulence eddy viscosity is automatically computed at the beginning of every stagger based on an algebraic relation. The eulerian mesh equation does not require a stagger since there is no mesh motion at all. There is mesh motion for the specified mesh equation, but since the motion is fully specified at the beginning of each time step no equation needs to be solved and therefore no stagger needs to be given.

The detached_eddy_simulation turbulence equation is a hybrid model combining the accuracy and economy of the Spalart-Allmaras (SA) model for attached boundary layers with the accuracy of the Smagorinsky LES model for separated eddies. Boundary and initial conditions are the same as for the SA model, but a time accurate transient strategy is used as for the LES models. Typically, a static solution using the Spalart-Allmaras model is used as an initial condition. The shear_stress_transport_detached_eddy_simulation model provides another detached eddy simulation option. This model relies on the Shear Stress Transport model (SST) in RANS regions as opposed to Spalart-Allmaras.

The physics of the boundary layer transition process can be included into turbulent simulations by activating one of the two turbulent transition models. These models work in conjunction with the underlying turbulence model (spalart_allmaras, shear_stress_transport, detached_eddy_simulation, and shear_stress_transport_detached_eddy_simulation) to evaluate whether the local boundary layer should be modeled as laminar, transitional, or fully turbulent. Both of the available transition models (intermittency_momentum_thickness_reynolds_number and intermittency) are tuned for external aerodynamic applications. Either model may be applied to internal flows, however, recalibration of the models may be required to establish accuracy for these applications.

When setting transition=intermittency_momentum_thickness_reynolds_number, two additional scalar equations are added to the simulation. One equation corresponds to the local intermittency of the flow field, the percentage of time that the flow is turbulent at a given point, and the second equation corresponds to the critical momentum thickness Reynolds number, the local Reynolds Number at which the flow transitions to turbulent. For example, the following options will produce a simulation in which two scalar transport equations are solved for the turbulence variables and an additional two scalar equations to govern the transition of the flow from laminar to turbulent:
EQUATION {
    flow = navier_stokes
    turbulence = shear_stress_transport
    transition = intermittency_momentum_thickness_reynolds_number
}

The combination of the shear_stress_transport and the intermittency_momentum_thickness_reynolds_number options model the most complete set of turbulent transition physics. This combination is capable of predicting natural transition of the boundary layer as well as by-pass transition.

If natural transition is the only mechanism of interest, it is possible to reduce the set of underlying equations from four to two by using the spalart_allmaras turbulence model and the intermittency transition model, as shown below.
EQUATION {
    flow = navier_stokes
    turbulence = spalart_allmaras
    transition = intermittency
}

This combination of settings provides accurate results for natural transition of external flows, for example, flow over airfoils and wings, using a reduced set of equations. This approach produces faster run times and reduced memory use in comparison to the use of the two-equation turbulence and transition models.

All of the turbulence and transition models in AcuSolve are solved segregated from the flow. Under these circumstances, there is a stagger created for each equation. However, for some equations, there is not necessarily a one-to-one correspondence between equations and staggers. Some equations can be combined into one stagger. For example, a laminar thermal flow problem with radiation may be specified by:
EQUATION {
    flow = navier_stokes
    temperature = advective_diffusive
    radiation = enclosure
}
TIME_SEQUENCE {
    staggers = { "tflow", "radiation" }
    ...
}
STAGGER( "tflow" ) {
    equation = temperature_flow
    ...
}
STAGGER( "radiation" ) {
    equation = radiation
    ...
}

Solving the temperature and flow equations simultaneously in one stagger can greatly increase the robustness and performance of some simulations, especially ones dominated by free convection. However, this robustness comes at the cost of storing a significantly larger left-hand side matrix. See the STAGGER command for details. Similarly, when simulating viscoelastic materials, all six components of the viscoelastic stress tensor are solved using a single stagger.

The radiation parameter refers to complex radiation models, such as enclosure radiation, P1 radiation or the DO radiation, which require view factors or other non-local data, and a separate stagger to calculate the coupled radiative heat fluxes. Simple radiation heat flux boundary conditions can be specified through ELEMENT_BOUNDARY_CONDITION, with radiation of type none. If possible, this is the preferred method since enclosure radiation can be very expensive. In either case, absolute_temperature_offset is necessary if temperature is not measured in absolute units. For Celsius, this parameter should be 273.14, for Fahrenheit it should be 459.67. This parameter along with absolute_pressure_offset may also be needed when using certain density models designed for compressible flow. See the DENSITY_MODEL command for details. When using the absolute temperature_offset and absolute_pressure_offset parameters, AcuSolve internally adds these constants to all user inputs of temperature and pressure, respectively. This applies primarily to initial conditions and boundary condition values. For the temperature equation, the absolute_temperature_offset is used to convert the inputs from relative scales such as Celcius or Fahrehheit into absolute scales such as Kelvin or Rankine. For pressure values, the absolute_pressure_offset is used to convert relative pressures (gauge pressure) into absolute pressures. For example, when using the ideal gas density model, AcuSolve needs to use the absolute pressure and temperature to calculate the density. In the following example, absolute pressures and temperatures are defined for the initial conditions and boundary conditions:
EQUATION {
    flow = navier_stokes
    temperature = advective_diffusive
    absolute_temperature_offset = 0.0
    absolute_pressure_offset = 0.0
 }
DENSITY_MODEL("ideal gas density"){
    type = ideal_gas
}
    
NODAL_INITIAL_CONDITION("absolute pressure"){
    variable = pressure
    type = constant
    constant_value = 101325.0 
}
NODAL_INITIAL_CONDITION("absolute temperature"){
    variable = temperature
    type = constant
    constant_value = 293.15 
}
SIMPLE_BOUNDARY_CONDITION("constant temperature inflow"){
    ...
    type = inflow
    inflow_type = velocity
    x_velocity   = 32.0
    y_velocity   = 0.0
    z_velocity   = 0.0
    temperature = 293.15
}
SIMPLE_BOUNDARY_CONDITION("average pressure outflow"){
    ...
    type        = outflow
    pressure    = 101325.0
}
To run the same problem with the use of gauge pressures and a relative temperature scale, the following sequence of input commands would be used:
EQUATION {
    flow = navier_stokes
    temperature = advective_diffusive
    absolute_pressure_offset = 101325.0
    absolute_temperature_offset = 273.15
}
DENSITY_MODEL("ideal gas density"){
    type = ideal_gas
}
    
NODAL_INITIAL_CONDITION("gauge pressure"){
    variable = pressure
    type = constant
    constant_value = 0.0 
}
NODAL_INITIAL_CONDITION("relative temperature"){
    variable = temperature
    type = constant
    constant_value = 20.0 
}
SIMPLE_BOUNDARY_CONDITION("constant temperature inflow"){
    ...     
    type         = inflow
    inflow_type  = velocity
    x_velocity   = 32.0
    y_velocity   = 0.0
    z_velocity   = 0.0
    temperature  = 20.0
}
SIMPLE_BOUNDARY_CONDITION("gauge pressure outflow"){
    ...
    type        = outflow
    pressure    = 0.0
}

In the above example, all results will be written in terms of gauge pressure and the relative temperature scale. However, internally, AcuSolve will use the absolute_pressure_offset and absolute_temperature_offset values to convert to absolute scales when calculating the density based on the ideal gas law. When modeling compressible flow the use of absolute_pressure_offset and absolute_temperature_offset is not recommended. Instead, you should define boundary and initial conditions in terms of absolute values.

If an equation is defined by the EQUATION command, but no active stagger references that equation, the solution field of that equation is unaltered throughout the analysis. Even boundary conditions are not imposed on that solution field. This feature may be used to provide a solution field for the computation of other fields. For example, you can solve an isothermal steady state flow problem by first specifying a flow-only problem:
EQUATION {
    flow = navier_stokes
}
TIME_SEQUENCE {
    staggers = { "flow" }
    ...
}
STAGGER( "flow" ) {
    equation = flow
    ...
}
Then restart the problem by adding a temperature equation and solving only for the temperature field:
RESTART {
}
EQUATION {
    flow = navier_stokes
    temperature = advective_diffusive
}
TIME_SEQUENCE {
    staggers = { "temp" }
    ...
}
STAGGER( "temp" ) {
    equation = temperature
    ...
}

The restarted problem contains both the flow and temperature fields. However, the restarted problem does not solve for the flow field. It is simply carried forward from time step to time step. This flow field is used for the solution of the temperature field.

In the original problem, the temperature equation type could have been set to advective_diffusive. If this had been the case, the initial conditions of the temperature field would have simply been carried forward from time step to time step.

Flow, species, turbulence, and radiation equations apply only to fluid or multifield element sets, while the temperature and mesh equations apply to fluid, multifield, solid and shell element sets. See the medium parameter of the ELEMENT_SET command for more details. The solid or structural equations solved by an external code do not apply to any element sets within AcuSolve. The external code uses a completely separate mesh.

In order to run topology optimization you need to set-up EQUATION as:
EQUATION {
flow = navier_stokes
topology_flow = adjoint_topology_flow
optimization = on
}
Turbulence model can also be solved to account for topology optimization of cases with larger Reynolds numbers:
EQUATION {
flow = navier_stokes
topology_flow = adjoint_topology_flow
optimization = on
turbulence = spalart_allmaras
}

If running_average is set to on, then a running average field will be created for every equation field in the problem. A running average field is defined by

f n ¯ = 1 N f n + ( 1 1 N ) f n 1 ¯

where f n is a solution field, such as velocity and pressure, at step n; f n ¯ is its running average; N=min(step,Nmax) is the number of steps used for averaging; and Nmax is the maximum number of steps used for averaging, given by running_average_steps. The creation of running average fields does not itself have any effect on the solution. This command only makes such fields available to the following commands:
  • NODAL_INITIAL_CONDITION
  • SIMPLE_BOUNDARY_CONDITION
  • TURBULENCE_WALL
  • RUNNING_AVERAGE_OUTPUT

Multi-Scale Battery Modeling Approach

For pouch batteries the thermal-electric response can be modeled using a multi-scale approach which bridges the scale between the cell domain and the electrode scale. To achieve this, a multi-scale multi-domain approach (electric_potential = battery_msmd) is utilized. In this approach, the electric potential fields are modeled in a cell composite, or more specifically the current collector, together with the thermal field. This is then coupled using a multi-scale approach down to the subscale, where the electrochemical phenomena, that is, the inner workings of the battery, are modeled.

Cell scale

At the cell scale the temperature and a pair of electric potentials are solved. More specifically, the 3D battery geometry is treated as a homogenized medium with orthotropic electrical and thermal conductivities. Positive and negative electric potential is computed in the battery from charge conservation at the current collectors of the cell composite. For the negative current collector the governing equation is:

( σ ϕ )j=0 MathType@MTEF@5@5@+= feaagKart1ev2aqatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLn hiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYbItLDharqqtubsr 4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rqqrFfpeea0xe9Lq=Jc9 vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0FirpepeKkFr0xfr=x fr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaey4bIe9aae WaaeaacqaHdpWCdaWgaaWcbaGaeyOeI0cabeaakiabgEGirlabew9a MnaaBaaaleaacqGHsislaeqaaaGccaGLOaGaayzkaaGaeyOeI0Iaam OAaiabg2da9iaaicdaaaa@43F9@

Equivalently at the positive current collector the governing equation is:

( σ + ϕ + ) + j = 0 MathType@MTEF@5@5@+= feaagKart1ev2aqatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLn hiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYbItLDharqqtubsr 4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rqqrFfpeea0xe9Lq=Jc9 vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0FirpepeKkFr0xfr=x fr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaey4bIe9aae WaaeaacqaHdpWCdaWgaaWcbaGaey4kaScabeaakiabgEGirlabew9a MnaaBaaaleaacqGHRaWkaeqaaaGccaGLOaGaayzkaaGaey4kaSIaam OAaiabg2da9iaaicdaaaa@43D8@

where j MathType@MTEF@5@5@+= feaagKart1ev2aqatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLn hiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYbItLDharqqtubsr 4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rqqrFfpeea0xe9Lq=Jc9 vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0FirpepeKkFr0xfr=x fr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaamOAaaaa@36E6@ is the transfer current density source term and is modeled through an electrochemical sub-model. The above comes with associated boundary conditions such as current, for example, constant current discharge, or voltage.

The energy equation in AcuSolve is modified by an additional source term that couples both sources of ohmic (or joule) heating from the current collectors and electrochemical reaction heat. The source term is given by:

q= σ | ϕ | 2 + σ + | ϕ + | 2 + q EC MathType@MTEF@5@5@+= feaagKart1ev2aqatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLn hiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYbItLDharqqtubsr 4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rqqrFfpeea0xe9Lq=Jc9 vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0FirpepeKkFr0xfr=x fr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaamyCaiabg2 da9iabeo8aZnaaBaaaleaacqGHsislaeqaaOWaaqWaaeaacqGHhis0 cqaHvpGzdaWgaaWcbaGaeyOeI0cabeaaaOGaay5bSlaawIa7amaaCa aaleqabaGaaGOmaaaakiabgUcaRiabeo8aZnaaBaaaleaacqGHRaWk aeqaaOWaaqWaaeaacqGHhis0cqaHvpGzdaWgaaWcbaGaey4kaScabe aaaOGaay5bSlaawIa7amaaCaaaleqabaGaaGOmaaaakiabgUcaRiaa dghadaWgaaWcbaGaaeyraiaaboeaaeqaaaaa@5329@

where the first two terms are ohmic heating and the last is electrochemical heating (from the electrochemical sub-model). Currently, AcuSolve supports a single type of electrochemical sub-model: an equivalent circuit type model. This model supports first and second order ECM models.

Battery ECM with Joule Heating Modeling Approach

In this approach the same ECM model as the MSMD model is used, however the electric potential fields are not modeled explicitly in the cell; they are modeled in only in the electrical connected components, for example, tabs/terminals and busbars. The ECM model calculates the voltage drop and current through the homogenized part of the battery cell and applies the associated boundary/interface conditions automatically. This approach is enabled using the following command electric potential = battery_joule_heating in the EQUATION section.