InterfaceKernels System

Interface kernels are meant to assist in coupling different physics across sub-domains. The most straightforward example is the case in which one wants to set the flux of a specie A in subdomain 0 equal to the flux of a specie B in subdomain 1 at the boundary between subdomains 0 and 1. In mathematical terms, we might be interested in establishing the condition:

D0c0x=D1c1x-D_0 \frac{\partial c_0}{\partial x} = -D_1 \frac{\partial c_1}{\partial x}

where DiD_i is the diffusion coefficient of specie ii in subdomain ii, and cic_i is the concentration of specie ii in subdomain ii. An example of this condition is shown in the MOOSE test directory; see files below:

(test/tests/interfacekernels/2d_interface/coupled_value_coupled_flux.i)

(framework/src/interfacekernels/InterfaceDiffusion.C)

(framework/include/interfacekernels/InterfaceDiffusion.h)

Interface kernels can be used to provide any general flux condition at an interface, and even more generally can be used to impose any interfacial condition that requires access to values of different variables and gradients of different variables on either side of an interface. In an input file, the user will specify at a minimum the following parameters:

  • type: The type of interface kernel to be used

  • variable: This is the "primary" variable. Note that the primary variable must exist on the same subdomain as the sideset specified in the boundary parameter. The existence of a "primary" and "secondary" or "neighbor" variable ensures that the interface kernel residual and jacobian functions get called the correct number of times. variable could be c0c_0 from our example above.

  • neighbor_var: The "secondary" variable. This could be c1c_1 from our example above.

  • boundary: The interfacial boundary between the subdomains. Note that this must be a sideset and again must exist on the same subdomain as the primary variable. The fact that this boundary is a sideset allows access to variable gradients.

For additional information about the interface kernel system, don't hesitate to contact the MOOSE Discussion forum.

Multiple system support

Using multiple nonlinear system with interface kernels is currently not supported. The only feature supported, which can at times suffice, notably when using MultiApps to couple equations, is to use an auxiliary variable as the neighbor_var.

Available Objects

  • Moose App
  • ADMatInterfaceReactionImplements a reaction to establish ReactionRate=k_f*u-k_b*v at interface.
  • ADPenaltyInterfaceDiffusionA penalty-based interface condition that forcesthe continuity of variables and the flux equivalence across an interface.
  • ADVectorPenaltyInterfaceDiffusionA penalty-based interface condition that forcesthe continuity of variables and the flux equivalence across an interface.
  • InterfaceDiffusionThe kernel is utilized to establish flux equivalence on an interface for variables.
  • InterfaceReactionImplements a reaction to establish ReactionRate=k_f*u-k_b*v at interface.
  • PenaltyInterfaceDiffusionA penalty-based interface condition that forcesthe continuity of variables and the flux equivalence across an interface.
  • VectorPenaltyInterfaceDiffusionA penalty-based interface condition that forcesthe continuity of variables and the flux equivalence across an interface.
  • Phase Field App
  • EqualGradientLagrangeInterfaceEnforce componentwise gradient continuity between two different variables across a subdomain boundary using a Lagrange multiplier
  • EqualGradientLagrangeMultiplierLagrange multiplier kernel for EqualGradientLagrangeInterface.
  • InterfaceDiffusionBoundaryTermAdd weak form surface terms of the Diffusion equation for two different variables across a subdomain boundary
  • InterfaceDiffusionFluxMatchEnforce flux continuity between two different variables across a subdomain boundary
  • Fsi App
  • ADPenaltyVelocityContinuityEnforces continuity of flux and continuity of solution via penalty across an interface.
  • CoupledPenaltyInterfaceDiffusionEnforces continuity of flux and continuity of solution via penalty across an interface.
  • StructureAcousticInterfaceEnforces displacement and stress/pressure continuity between the fluid and structural domains. Element is always the structure and neighbor is always the fluid.
  • Electromagnetics App
  • ElectrostaticContactConditionInterface condition that describes the current continuity and contact conductance across a boundary formed between two dissimilar materials (resulting in a potential discontinuity). Conductivity on each side of the boundary is defined via the material properties system.
  • ParallelElectricFieldInterfaceVectorInterfaceKernel that implements the condition E1E2=0\vec{E}_{1}^{\parallel} - \vec{E}_{2}^{\parallel} = 0
  • PerpendicularElectricFieldInterfaceVectorInterfaceKernel that implements the condition ϵ1E1ϵ2E2=σf\epsilon_1 \vec{E}_{1}^{\perp} - \epsilon_2 \vec{E}_{2}^{\perp} = \sigma_f
  • Heat Transfer App
  • ConjugateHeatTransferThis InterfaceKernel models conjugate heat transfer. Fluid side must be primary side and solid side must be secondary side. T_fluid is provided in case that variable ( fluid energy variable) is not temperature but e.g. internal energy.
  • SideSetHeatTransferKernelModeling conduction, convection, and radiation across internal side set.
  • ThinLayerHeatTransferModel heat transfer across a thin domain with an interface.
  • Solid Mechanics App
  • ADCZMInterfaceKernelSmallStrainCZM Interface kernel to use when using the small strain kinematic formulation.
  • ADCZMInterfaceKernelTotalLagrangianCZM Interface kernel to use when using the total Lagrangian formulation.
  • CZMInterfaceKernelSmallStrainCZM Interface kernel to use when using the Small Strain kinematic formulation.
  • CZMInterfaceKernelTotalLagrangianCalculate residual contribution for balancing the traction across an interface (used in the cohesive zone method).

Available Actions