Kernels System

A "Kernel" is a piece of physics. It can represent one or more operators or terms in the weak form of a partial differential equation. With all terms on the left-hand-side, their sum is referred to as the "residual". The residual is evaluated at several integration quadrature points over the problem domain. To implement your own physics in MOOSE, you create your own kernel by subclassing the MOOSE Kernel class.

The Kernel system supports the use of automatic differentiation (AD) for residual calculations, as such there are two options for creating Kernel objects: Kernel and ADKernel. To further understand automatic differentiation, please refer to the Automatic Differentiation page for more information.

In a Kernel subclass the computeQpResidual() function must be overridden. This is where you implement your PDE weak form terms. For non-AD objects the following member functions can optionally be overridden:

  • computeQpJacobian()

  • computeQpOffDiagJacobian()

These two functions provide extra information that can help the numerical solver(s) converge faster and better.

Inside your Kernel class, you have access to several member variables for computing the residual and Jacobian values in the above mentioned functions:

  • _i, _j: indices for the current test and trial shape functions respectively.

  • _qp: current quadrature point index.

  • _u, _grad_u: value and gradient of the variable this Kernel operates on; indexed by _qp (i.e. _u[_qp]).

  • _test, _grad_test: value (ψ\psi) and gradient (ψ\nabla \psi) of the test functions at the q-points; indexed by _i and then _qp (i.e., _test[_i][_qp]).

  • _phi, _grad_phi: value (ϕ\phi) and gradient (ϕ\nabla \phi) of the trial functions at the q-points; indexed by _j and then _qp (i.e., _phi[_j][_qp]).

  • _q_point: XYZ coordinates of the current quadrature point.

  • _current_elem: pointer to the current element being operated on.

Optimized Kernel Objects

Depending on the residual calculation being performed it is sometimes possible to optimize the calculation of the residual by precomputing values during the finite element assembly of the residual vector. The following table details the various Kernel base classes that can be used for as base classes to improve performance.

BaseOverrideUse
Kernel
ADKernel
computeQpResidualUse when the term in the partial differential equation (PDE) is multiplied by both the test function and the gradient of the test function (_test and _grad_test must be applied)
KernelValue
ADKernelValue
precomputeQpResidualUse when the term computed in the PDE is only multiplied by the test function (do not use _test in the override, it is applied automatically)
KernelGrad
ADKernelGrad
precomputeQpResidualUse when the term computed in the PDE is only multiplied by the gradient of the test function (do not use _grad_test in the override, it is applied automatically)

Custom Kernel Creation

To create a custom kernel, you can follow the pattern of the Diffusion or ADDiffusion objects implemented and included in the MOOSE framework. Additionally, Example 2 in MOOSE provides a step-by-step overview of creating your own custom kernel. The following describes that calculation of the diffusion term of a PDE.

The strong-form of the diffusion equation is defined on a 3-D domain Ω\Omega as: find uu such that

u=0ΩuΩ1=g1un^Ω2=g2,\begin{aligned} -\nabla\cdot\nabla u &= 0 \in \Omega\\ u|_{\partial\Omega_1} &= g_1\\ \nabla u\cdot \hat{n} |_{\partial\Omega_2} &= g_2, \end{aligned}(1)

where Ω1\partial\Omega_1 is defined as the boundary on which the value of uu is fixed to a known constant g1g_1, Ω2\partial\Omega_2 is defined as the boundary on which the flux across the boundary is fixed to a known constant g2g_2, and n^\hat{n} is the boundary outward normal.

The weak form is generated by multiplying by a test function (ψi\psi_i) and integrating over the domain (using inner-product notation):

(uh,ψi)=0ψi(-\nabla\cdot\nabla u_h, \psi_i) = 0\quad \forall\,\psi_i

and then integrating by parts which gives the weak form:

(uh,ψi)g2,ψi=0ψi,(\nabla u_h, \nabla \psi_i) - \langle g_2, \psi_i\rangle = 0\quad \forall\,\psi_i,(2)

where uhu_h is known as the trial function that defines the finite element discretization, uuh=j=1Nujϕju \approx u_h = \sum_{j=1}^N u_j \phi_j, with ϕj\phi_j being the basis functions.

The Jacobian, which is the derivative of Eq. (2) with respect to uju_j ((.)uj)\left(\frac{\partial (.)}{\partial u_j}\right), is defined as:

(ϕj,ψi)ψi(\nabla \phi_j, \nabla \psi_i)\quad \forall\,\psi_i(3)

As mentioned, the computeQpResidual method must be overridden for both flavors of kernels non-AD and AD. The computeQpResidual method for the non-AD version, Diffusion, is provided in Listing 1.

Listing 1: The C++ weak-form residual statement of Eq. (2) as implemented in the Diffusion kernel.

Real
Diffusion::computeQpResidual()
{
  return _grad_u[_qp] * _grad_test[_i][_qp];
}
(contrib/moose/framework/src/kernels/Diffusion.C)

This object also overrides the computeQpJacobian method to define Jacobian term of (contrib/moose/test/tests/test_harness/duplicate_outputs_analyzejacobian) as shown in Listing 2.

Listing 2: The C++ weak-form Jacobian statement of (contrib/moose/test/tests/test_harness/duplicate_outputs_analyzejacobian) as implemented in the Diffusion kernel.

Real
Diffusion::computeQpJacobian()
{
  return _grad_phi[_j][_qp] * _grad_test[_i][_qp];
}
(contrib/moose/framework/src/kernels/Diffusion.C)

The AD version of this object, ADDiffusion, relies on an optimized kernel object (see Optimized Kernel Objects), as such it overrides precomputeQpResidual as follows.

Listing 3: The C++ pre-computed portions of the weak-form residual statement of Eq. (2) as implemented in the ADDiffusion kernel.

ADDiffusion::precomputeQpResidual()
{
  return _grad_u[_qp];
}
(contrib/moose/framework/src/kernels/ADDiffusion.C)

Time Derivative Kernels

You can create a time-derivative term/kernel by subclassing TimeKernel instead of Kernel. For example, the residual contribution for a time derivative term is:

(uht,ψi)\left(\frac{\partial u_h}{\partial t}, \psi_i\right)

where uhu_h is the finite element solution, and

uhtt(kukϕk)=kuktϕk\frac{\partial u_h}{\partial t} \equiv \frac{\partial}{\partial t} \left( \sum_k u_k \phi_k \right) = \sum_k \frac{\partial u_k}{\partial t} \phi_k(4)

because you can interchange the order of differentiation and summation.

In the equation above, ukt\frac{\partial u_k}{\partial t} is the time derivative of the kkth finite element coefficient of uhu_h. While the exact form of this derivative depends on the time stepping scheme, without much loss of generality, we can assume the following form for the time derivative:

ukt=auk+b\frac{\partial u_k}{\partial t} = a u_k + b

for some constants aa, bb which depend on Δt\Delta t and the timestepping method.

The derivative of equation Eq. (4) with respect to uju_j is then:

uj(kuktϕk)=uj(k(auk+b)ϕk)=aϕj\frac{\partial}{\partial u_j} \left( \sum_k \frac{\partial u_k}{\partial t} \phi_k \right) = \frac{\partial }{\partial u_j} \left( \sum_k (a u_k + b) \phi_k \right) = a \phi_j

So that the Jacobian term for equation Eq. (4) is

(aϕj,ψi)\left(a \phi_j, \psi_i\right)

where aa is what we call du_dot_du in MOOSE.

Therefore the computeQpResidual() function for our time-derivative term kernel looks like:

return _test[_i][_qp] * _u_dot[_qp];

And the corresponding computeQpJacobian() is:

return _test[_i][_qp] * _phi[_j][_qp] * _du_dot_du[_qp];

Coupling with Scalar Variables

If the weak form has contributions from scalar variables, then this contribution can be treated similarly as coupling from other spatial variables. See the Coupleable interface for how to obtain the variable values. Residual contributions are simply added to the computeQpResidual() function. Jacobian terms from the test spatial variable and incremental scalar variable are added by overriding the function computeQpOffDiagJacobianScalar().

Contributions to the scalar variable weak equation (test scalar variable terms) are not natively treated by the Kernel class. Inclusion of these residual and Jacobian contributions are discussed within ScalarKernels and specifically KernelScalarBase.

Further Kernel Documentation

Several specialized kernel types exist in MOOSE each with useful functionality. Details for each are in the sections below.

Available Objects

  • Moose App
  • ADBodyForceDemonstrates the multiple ways that scalar values can be introduced into kernels, e.g. (controllable) constants, functions, and postprocessors. Implements the weak form (ψi,f)(\psi_i, -f).
  • ADCoefReactionImplements the residual term (p*u, test)
  • ADConservativeAdvectionConservative form of vu\nabla \cdot \vec{v} u which in its weak form is given by: (ψi,vu)(-\nabla \psi_i, \vec{v} u).
  • ADCoupledForceImplements a source term proportional to the value of a coupled variable. Weak form: (ψi,σv)(\psi_i, -\sigma v).
  • ADCoupledTimeDerivativeTime derivative Kernel that acts on a coupled variable. Weak form: (ψi,vht)(\psi_i, \frac{\partial v_h}{\partial t}).
  • ADDiffusionSame as Diffusion in terms of physics/residual, but the Jacobian is computed using forward automatic differentiation
  • ADMatBodyForceKernel that defines a body force modified by a material property
  • ADMatCoupledForceKernel representing the contribution of the PDE term mvmv, where mm is a material property coefficient, vv is a coupled scalar field variable, and Jacobian derivatives are calculated using automatic differentiation.
  • ADMatDiffusionDiffusion equation kernel that takes an isotropic diffusivity from a material property
  • ADMatReactionKernel representing the contribution of the PDE term Lv-L*v, where LL is a reaction rate material property, vv is a scalar variable (nonlinear or coupled), and whose Jacobian contribution is calculated using automatic differentiation.
  • ADMaterialPropertyValueResidual term (u - prop) to set variable u equal to a given material property prop
  • ADReactionImplements a simple consuming reaction term with weak form (ψi,λuh)(\psi_i, \lambda u_h).
  • ADScalarLMKernelThis class is used to enforce integral of phi = V_0 with a Lagrange multiplier approach.
  • ADTimeDerivativeThe time derivative operator with the weak form of (ψi,uht)(\psi_i, \frac{\partial u_h}{\partial t}).
  • ADVectorDiffusionThe Laplacian operator (u-\nabla \cdot \nabla \vec{u}), with the weak form of (ϕi,uh)(\nabla \vec{\phi_i}, \nabla \vec{u_h}). The Jacobian is computed using automatic differentiation
  • ADVectorTimeDerivativeThe time derivative operator with the weak form of (ψi,uht)(\psi_i, \frac{\partial u_h}{\partial t}).
  • AnisotropicDiffusionAnisotropic diffusion kernel kundefinedu\nabla \cdot -\widetilde{k} \nabla u with weak form given by (ψi,kundefinedu)(\nabla \psi_i, \widetilde{k} \nabla u).
  • ArrayBodyForceApplies body forces specified with functions to an array variable.
  • ArrayCoupledTimeDerivativeTime derivative Array Kernel that acts on a coupled variable. Weak form: (ψi,vht)(\psi_i, \frac{\partial v_h}{\partial t}). The coupled variable and the variable must have the same dimensionality
  • ArrayDiffusionThe array Laplacian operator (u-\nabla \cdot \nabla u), with the weak form of (ϕi,uh)(\nabla \phi_i, \nabla u_h).
  • ArrayReactionThe array reaction operator with the weak form of (ψi,uh)(\psi_i, u_h).
  • ArrayTimeDerivativeArray time derivative operator with the weak form of (ψi,uht)(\psi_i, \frac{\partial u_h}{\partial t}).
  • BodyForceDemonstrates the multiple ways that scalar values can be introduced into kernels, e.g. (controllable) constants, functions, and postprocessors. Implements the weak form (ψi,f)(\psi_i, -f).
  • CoefReactionImplements the residual term (p*u, test)
  • CoefTimeDerivativeThe time derivative operator with the weak form of (ψi,uht)(\psi_i, \frac{\partial u_h}{\partial t}).
  • ConservativeAdvectionConservative form of vu\nabla \cdot \vec{v} u which in its weak form is given by: (ψi,vu)(-\nabla \psi_i, \vec{v} u).
  • CoupledForceImplements a source term proportional to the value of a coupled variable. Weak form: (ψi,σv)(\psi_i, -\sigma v).
  • CoupledTimeDerivativeTime derivative Kernel that acts on a coupled variable. Weak form: (ψi,vht)(\psi_i, \frac{\partial v_h}{\partial t}).
  • DiffusionThe Laplacian operator (u-\nabla \cdot \nabla u), with the weak form of (ϕi,uh)(\nabla \phi_i, \nabla u_h).
  • DivFieldThe divergence operator optionally scaled by a constant scalar coefficient. Weak form: (ψi,ku)(\psi_i, k \nabla \cdot \vec{u}).
  • FunctionDiffusionDiffusion with a function coefficient.
  • GradFieldThe gradient operator optionally scaled by a constant scalar coefficient. Weak form: (ψi,kv)(\nabla \cdot \vec{\psi_i}, k v).
  • MassEigenKernelAn eigenkernel with weak form λ(ψi,uh×coeff)\lambda(\psi_i, -u_h \times coeff) where λ\lambda is the eigenvalue.
  • MassLumpedTimeDerivativeLumped formulation of the time derivative ut\frac{\partial u}{\partial t}. Its corresponding weak form is ui˙(ψi,1)\dot{u_i}(\psi_i, 1) where ui˙\dot{u_i} denotes the time derivative of the solution coefficient associated with node ii.
  • MassMatrixComputes a finite element mass matrix
  • MatBodyForceKernel that defines a body force modified by a material property
  • MatCoupledForceImplements a forcing term RHS of the form PDE = RHS, where RHS = Sum_j c_j * m_j * v_j. c_j, m_j, and v_j are provided as real coefficients, material properties, and coupled variables, respectively.
  • MatDiffusionDiffusion equation Kernel that takes an isotropic Diffusivity from a material property
  • MatReactionKernel to add -L*v, where L=reaction rate, v=variable
  • MaterialDerivativeRankFourTestKernelClass used for testing derivatives of a rank four tensor material property.
  • MaterialDerivativeRankTwoTestKernelClass used for testing derivatives of a rank two tensor material property.
  • MaterialDerivativeTestKernelClass used for testing derivatives of a scalar material property.
  • MaterialPropertyValueResidual term (u - prop) to set variable u equal to a given material property prop
  • NullKernelKernel that sets a zero residual.
  • ReactionImplements a simple consuming reaction term with weak form (ψi,λuh)(\psi_i, \lambda u_h).
  • ScalarLMKernelThis class is used to enforce integral of phi = V_0 with a Lagrange multiplier approach.
  • ScalarLagrangeMultiplierThis class is used to enforce integral of phi = V_0 with a Lagrange multiplier approach.
  • TimeDerivativeThe time derivative operator with the weak form of (ψi,uht)(\psi_i, \frac{\partial u_h}{\partial t}).
  • UserForcingFunctionDemonstrates the multiple ways that scalar values can be introduced into kernels, e.g. (controllable) constants, functions, and postprocessors. Implements the weak form (ψi,f)(\psi_i, -f).
  • VectorBodyForceDemonstrates the multiple ways that scalar values can be introduced into kernels, e.g. (controllable) constants, functions, and postprocessors. Implements the weak form (ψi,f)(\vec{\psi_i}, -\vec{f}).
  • VectorCoupledTimeDerivativeTime derivative Kernel that acts on a coupled vector variable. Weak form: (ψi,vht)(\vec{\psi}_i, \frac{\partial \vec{v_h}}{\partial t}).
  • VectorDiffusionThe Laplacian operator (u-\nabla \cdot \nabla \vec{u}), with the weak form of (ϕi,uh)(\nabla \vec{\phi_i}, \nabla \vec{u_h}).
  • VectorFunctionReactionKernel representing the contribution of the PDE term signfusign * f * u, where ff is a function coefficient and uu is a vector variable.
  • VectorTimeDerivativeThe time derivative operator with the weak form of (ψi,uht)(\vec{\psi_i}, \frac{\partial \vec{u_h}}{\partial t}).
  • Thermal Hydraulics App
  • ADHeatConductionRZAdds a heat conduction term in XY coordinates interpreted as cylindrical coordinates
  • ADHeatConductionTimeDerivativeRZAdds a time derivative term for the energy equation in XY coordinates interpreted as cylindrical coordinates
  • ADHeatStructureHeatSourceAdds a heat source term for the energy equation
  • ADHeatStructureHeatSourceRZAdds a heat source term in XY coordinates interpreted as cylindrical coordinates
  • ADOneD3EqnEnergyGravityComputes the gravity term for the energy equation in 1-phase flow
  • ADOneD3EqnEnergyHeatFluxComputes a heat flux term for the energy equation in a flow channel
  • ADOneD3EqnEnergyHeatFluxFromHeatStructure3DComputes a heat flux term from a 3D heat structure in the energy equation for 1-phase flow
  • ADOneD3EqnMomentumAreaGradientComputes the area gradient term in the momentum equation for single phase flow.
  • ADOneD3EqnMomentumFormLossComputes a volumetric form loss for the momentum equation for 1-phase flow
  • ADOneD3EqnMomentumFrictionComputes wall friction term for single phase flow.
  • ADOneD3EqnMomentumGravityComputes gravity term for the momentum equation for 1-phase flow
  • ADOneDEnergyWallHeatFluxComputes a heat flux term for the energy equation
  • ADOneDEnergyWallHeatingComputes a convective heat flux term for the energy equation for 1-phase flow
  • ADVolumeJunctionAdvectionKernelAdds advective fluxes for the junction variables for a volume junction
  • CoupledForceRZAdds a coupled force term in XY coordinates interpreted as cylindrical coordinates
  • OneD3EqnEnergyFluxComputes an energy flux for single phase flow
  • OneD3EqnEnergyGravityComputes a gravity term for the energy equation in 1-phase flow
  • OneD3EqnEnergyHeatSourceComputes a volumetric heat source for 1-phase flow channel
  • OneD3EqnMomentumAreaGradientComputes the area gradient term in the momentum equation for single phase flow.
  • OneD3EqnMomentumFluxComputes a momentum flux term for 1-phase flow
  • OneD3EqnMomentumFormLossComputes a form loss term for the momentum equation for 1-phase flow
  • OneD3EqnMomentumFrictionComputes wall friction term for single phase flow.
  • OneD3EqnMomentumGravityComputes gravity term for the momentum equation for 1-phase flow
  • OneDEnergyWallHeatFluxAdds a heat flux along the local heated perimeter
  • OneDEnergyWallHeatingAdds a convective heat flux term from a wall temperature
  • Heat Transfer App
  • ADHeatConductionSame as Diffusion in terms of physics/residual, but the Jacobian is computed using forward automatic differentiation
  • ADHeatConductionTimeDerivativeAD Time derivative term ρcpTt\rho c_p \frac{\partial T}{\partial t} of the heat equation for quasi-constant specific heat cpc_p and the density ρ\rho.
  • ADJouleHeatingSourceCalculates the heat source term corresponding to electrostatic Joule heating, with Jacobian contributions calculated using the automatic differentiation system.
  • ADMatHeatSourceForce term in thermal transport to represent a heat source
  • AnisoHeatConductionAnisotropic HeatConduction kernel kundefinedu\nabla \cdot -\widetilde{k} \nabla u with weak form given by (ψi,kundefinedu)(\nabla \psi_i, \widetilde{k} \nabla u).
  • AnisoHomogenizedHeatConductionKernel for asymptotic expansion homogenization for thermal conductivity when anisotropic thermal conductivities are used
  • HeatCapacityConductionTimeDerivativeTime derivative term CpTtC_p \frac{\partial T}{\partial t} of the heat equation with the heat capacity CpC_p as an argument.
  • HeatConductionComputes residual/Jacobian contribution for (kT,ψ)(k \nabla T, \nabla \psi) term.
  • HeatConductionTimeDerivativeTime derivative term ρcpTt\rho c_p \frac{\partial T}{\partial t} of the heat equation for quasi-constant specific heat cpc_p and the density ρ\rho.
  • HeatSourceDemonstrates the multiple ways that scalar values can be introduced into kernels, e.g. (controllable) constants, functions, and postprocessors. Implements the weak form (ψi,f)(\psi_i, -f).
  • HomogenizedHeatConductionKernel for asymptotic expansion homogenization for thermal conductivity
  • JouleHeatingSourceCalculates the heat source term corresponding to electrostatic Joule heating.
  • SpecificHeatConductionTimeDerivativeTime derivative term ρcpTt\rho c_p \frac{\partial T}{\partial t} of the heat equation with the specific heat cpc_p and the density ρ\rho as arguments.
  • TrussHeatConductionComputes conduction term in heat equation for truss elements, taking cross-sectional area into account
  • TrussHeatConductionTimeDerivativeComputes time derivative term in heat equation for truss elements, taking cross-sectional area into account
  • Navier Stokes App
  • DistributedForceImplements a force term in the Navier Stokes momentum equation.
  • DistributedPowerImplements the power term of a specified force in the Navier Stokes energy equation.
  • INSADBoussinesqBodyForceComputes a body force for natural convection buoyancy.
  • INSADEnergyAdvectionThis class computes the residual and Jacobian contributions for temperature advection for a divergence free velocity field.
  • INSADEnergyAmbientConvectionComputes a heat source/sink due to convection from ambient surroundings.
  • INSADEnergyMeshAdvectionThis class computes the residual and Jacobian contributions for temperature advection from mesh velocity in an ALE simulation.
  • INSADEnergySUPGAdds the supg stabilization to the INS temperature/energy equation
  • INSADEnergySourceComputes an arbitrary volumetric heat source (or sink).
  • INSADGravityForceComputes a body force due to gravity.
  • INSADHeatConductionTimeDerivativeAD Time derivative term ρcpTt\rho c_p \frac{\partial T}{\partial t} of the heat equation for quasi-constant specific heat cpc_p and the density ρ\rho.
  • INSADMassThis class computes the mass equation residual and Jacobian contributions (the latter using automatic differentiation) for the incompressible Navier-Stokes equations.
  • INSADMassPSPGThis class adds PSPG stabilization to the mass equation, enabling use of equal order shape functions for pressure and velocity variables
  • INSADMomentumAdvectionAdds the advective term to the INS momentum equation
  • INSADMomentumCoupledForceComputes a body force due to a coupled vector variable or a vector function
  • INSADMomentumGradDivAdds grad-div stabilization to the INS momentum equation
  • INSADMomentumMeshAdvectionCorrects the convective derivative for situations in which the fluid mesh is dynamic.
  • INSADMomentumPressureAdds the pressure term to the INS momentum equation
  • INSADMomentumSUPGAdds the supg stabilization to the INS momentum equation
  • INSADMomentumTimeDerivativeThis class computes the time derivative for the incompressible Navier-Stokes momentum equation.
  • INSADMomentumViscousAdds the viscous term to the INS momentum equation
  • INSADSmagorinskyEddyViscosityComputes eddy viscosity term using Smagorinky's LES model
  • INSChorinCorrectorThis class computes the 'Chorin' Corrector equation in fully-discrete (both time and space) form.
  • INSChorinPredictorThis class computes the 'Chorin' Predictor equation in fully-discrete (both time and space) form.
  • INSChorinPressurePoissonThis class computes the pressure Poisson solve which is part of the 'split' scheme used for solving the incompressible Navier-Stokes equations.
  • INSCompressibilityPenaltyThe penalty term may be used when Dirichlet boundary condition is applied to the entire boundary.
  • INSFEFluidEnergyKernelAdds advection, diffusion, and heat source terms to energy equation, potentially with stabilization
  • INSFEFluidMassKernelAdds advective term of mass conservation equation along with pressure-stabilized Petrov-Galerkin terms
  • INSFEFluidMomentumKernelAdds advection, viscous, pressure, friction, and gravity terms to the Navier-Stokes momentum equation, potentially with stabilization
  • INSMassThis class computes the mass equation residual and Jacobian contributions for the incompressible Navier-Stokes momentum equation.
  • INSMassRZThis class computes the mass equation residual and Jacobian contributions for the incompressible Navier-Stokes momentum equation in RZ coordinates.
  • INSMomentumLaplaceFormThis class computes momentum equation residual and Jacobian viscous contributions for the 'Laplacian' form of the governing equations.
  • INSMomentumLaplaceFormRZThis class computes additional momentum equation residual and Jacobian contributions for the incompressible Navier-Stokes momentum equation in RZ (axisymmetric cylindrical) coordinates, using the 'Laplace' form of the governing equations.
  • INSMomentumTimeDerivativeThis class computes the time derivative for the incompressible Navier-Stokes momentum equation.
  • INSMomentumTractionFormThis class computes momentum equation residual and Jacobian viscous contributions for the 'traction' form of the governing equations.
  • INSMomentumTractionFormRZThis class computes additional momentum equation residual and Jacobian contributions for the incompressible Navier-Stokes momentum equation in RZ (axisymmetric cylindrical) coordinates.
  • INSPressurePoissonThis class computes the pressure Poisson solve which is part of the 'split' scheme used for solving the incompressible Navier-Stokes equations.
  • INSProjectionThis class computes the 'projection' part of the 'split' method for solving incompressible Navier-Stokes.
  • INSSplitMomentumThis class computes the 'split' momentum equation residual.
  • INSTemperatureThis class computes the residual and Jacobian contributions for the incompressible Navier-Stokes temperature (energy) equation.
  • INSTemperatureTimeDerivativeThis class computes the time derivative for the incompressible Navier-Stokes momentum equation.
  • MDFluidEnergyKernelAdds advection, diffusion, and heat source terms to energy equation, potentially with stabilization
  • MDFluidMassKernelAdds advective term of mass conservation equation along with pressure-stabilized Petrov-Galerkin terms
  • MDFluidMomentumKernelAdds advection, viscous, pressure, friction, and gravity terms to the Navier-Stokes momentum equation, potentially with stabilization
  • MassConvectiveFluxImplements the advection term for the Navier Stokes mass equation.
  • MomentumConvectiveFluxImplements the advective term of the Navier Stokes momentum equation.
  • NSEnergyInviscidFluxThis class computes the inviscid part of the energy flux.
  • NSEnergyThermalFluxThis class is responsible for computing residuals and Jacobian terms for the k * grad(T) * grad(phi) term in the Navier-Stokes energy equation.
  • NSEnergyViscousFluxViscous flux terms in energy equation.
  • NSGravityForceThis class computes the gravity force contribution.
  • NSGravityPowerThis class computes the momentum contributed by gravity.
  • NSMassInviscidFluxThis class computes the inviscid flux in the mass equation.
  • NSMomentumInviscidFluxThe inviscid flux (convective + pressure terms) for the momentum conservation equations.
  • NSMomentumInviscidFluxWithGradPThis class computes the inviscid flux with pressure gradient in the momentum equation.
  • NSMomentumViscousFluxDerived instance of the NSViscousFluxBase class for the momentum equations.
  • NSSUPGEnergyCompute residual and Jacobian terms form the SUPG terms in the energy equation.
  • NSSUPGMassCompute residual and Jacobian terms form the SUPG terms in the mass equation.
  • NSSUPGMomentumCompute residual and Jacobian terms form the SUPG terms in the momentum equation.
  • NSTemperatureL2This class was originally used to solve for the temperature using an L2-projection.
  • PINSFEFluidPressureTimeDerivativeAdds the transient term of the porous-media mass conservation equation
  • PINSFEFluidTemperatureTimeDerivativeAdds the transient term of the porous media energy conservation equation
  • PINSFEFluidVelocityTimeDerivativeAdd the transient term for one component of the porous media momentum conservation equation
  • PMFluidPressureTimeDerivativeAdds the transient term of the porous-media mass conservation equation
  • PMFluidTemperatureTimeDerivativeAdds the transient term of the porous media energy conservation equation
  • PMFluidVelocityTimeDerivativeAdd the transient term for one component of the porous media momentum conservation equation
  • PressureGradientImplements the pressure gradient term for one of the Navier Stokes momentum equations.
  • TotalEnergyConvectiveFluxImplements the advection term for the Navier Stokes energy equation.
  • VectorMassMatrixComputes a finite element mass matrix meant for use in preconditioning schemes which require one
  • Solid Mechanics App
  • ADDynamicStressDivergenceTensorsResidual due to stress related Rayleigh damping and HHT time integration terms
  • ADGravityApply gravity. Value is in units of acceleration.
  • ADInertialForceCalculates the residual for the inertial force (MaccelerationM \cdot acceleration) and the contribution of mass dependent Rayleigh damping and HHT time integration scheme ($\eta \cdot M \cdot ((1+\alpha)velq2-\alpha \cdot vel-old) $)
  • ADInertialForceShellCalculates the residual for the inertial force/moment and the contribution of mass dependent Rayleigh damping and HHT time integration scheme.
  • ADStressDivergenceRSphericalTensorsCalculate stress divergence for a spherically symmetric 1D problem in polar coordinates.
  • ADStressDivergenceRZTensorsCalculate stress divergence for an axisymmetric problem in cylindrical coordinates.
  • ADStressDivergenceShellQuasi-static stress divergence kernel for Shell element
  • ADStressDivergenceTensorsStress divergence kernel with automatic differentiation for the Cartesian coordinate system
  • ADSymmetricStressDivergenceTensorsStress divergence kernel with automatic differentiation for the Cartesian coordinate system
  • ADWeakPlaneStressPlane stress kernel to provide out-of-plane strain contribution.
  • AsymptoticExpansionHomogenizationKernelKernel for asymptotic expansion homogenization for elasticity
  • CosseratStressDivergenceTensorsStress divergence tensor with the additional Jacobian terms for the Cosserat rotation variables.
  • DynamicStressDivergenceTensorsResidual due to stress related Rayleigh damping and HHT time integration terms
  • GeneralizedPlaneStrainOffDiagGeneralized Plane Strain kernel to provide contribution of the out-of-plane strain to other kernels
  • GravityApply gravity. Value is in units of acceleration.
  • HomogenizedTotalLagrangianStressDivergenceTotal Lagrangian stress equilibrium kernel with homogenization constraint Jacobian terms
  • InertialForceCalculates the residual for the inertial force (MaccelerationM \cdot acceleration) and the contribution of mass dependent Rayleigh damping and HHT time integration scheme ($\eta \cdot M \cdot ((1+\alpha)velq2-\alpha \cdot vel-old) $)
  • InertialForceBeamCalculates the residual for the inertial force/moment and the contribution of mass dependent Rayleigh damping and HHT time integration scheme.
  • InertialTorqueKernel for inertial torque: density * displacement x acceleration
  • MaterialVectorBodyForceApply a body force vector to the coupled displacement component.
  • MomentBalancing
  • OutOfPlanePressureApply pressure in the out-of-plane direction in 2D plane stress or generalized plane strain models
  • PhaseFieldFractureMechanicsOffDiagStress divergence kernel for phase-field fracture: Computes off diagonal damage dependent Jacobian components. To be used with StressDivergenceTensors or DynamicStressDivergenceTensors.
  • PlasticHeatEnergyPlastic heat energy density = coeff * stress * plastic_strain_rate
  • PoroMechanicsCouplingAdds BipsΨc-Bi \cdot p_s \cdot \nabla \Psi_c, where the subscript cc is the component.
  • StressDivergenceBeamQuasi-static and dynamic stress divergence kernel for Beam element
  • StressDivergenceRSphericalTensorsCalculate stress divergence for a spherically symmetric 1D problem in polar coordinates.
  • StressDivergenceRZTensorsCalculate stress divergence for an axisymmetric problem in cylindrical coordinates.
  • StressDivergenceTensorsStress divergence kernel for the Cartesian coordinate system
  • StressDivergenceTensorsTrussKernel for truss element
  • TotalLagrangianStressDivergenceEnforce equilibrium with a total Lagrangian formulation in Cartesian coordinates.
  • TotalLagrangianStressDivergenceAxisymmetricCylindricalEnforce equilibrium with a total Lagrangian formulation in axisymmetric cylindrical coordinates.
  • TotalLagrangianStressDivergenceCentrosymmetricSphericalEnforce equilibrium with a total Lagrangian formulation in centrosymmetric spherical coordinates.
  • TotalLagrangianWeakPlaneStressPlane stress kernel to provide out-of-plane strain contribution.
  • UpdatedLagrangianStressDivergenceEnforce equilibrium with an updated Lagrangian formulation in Cartesian coordinates.
  • WeakPlaneStressPlane stress kernel to provide out-of-plane strain contribution.
  • Misc App
  • ADThermoDiffusionCalculates diffusion due to temperature gradient and Soret Coefficient
  • CoefDiffusionKernel for diffusion with diffusivity = coef + function
  • ThermoDiffusionKernel for thermo-diffusion (Soret effect, thermophoresis, etc.)