Skip to content

Commit

Permalink
Add docs for the new FE family, bcs and kernels (idaholab#26105)
Browse files Browse the repository at this point in the history
  • Loading branch information
nmnobre committed Nov 20, 2023
1 parent e6c9c08 commit 66985d8
Show file tree
Hide file tree
Showing 5 changed files with 96 additions and 7 deletions.
26 changes: 26 additions & 0 deletions framework/doc/content/source/bcs/VectorDivPenaltyDirichletBC.md
@@ -0,0 +1,26 @@
# VectorDivPenaltyDirichletBC

!syntax description /BCs/VectorDivPenaltyDirichletBC

## Overview

`VectorDivPenaltyDirichletBC` enforces, in a weak sense, a Dirichlet boundary
condition on the divergence of a nonlinear vector variable $\vec{u}$ by setting

\begin{equation}
R_i(\vec{u}) = p($\vec{\psi_i}$ \cdot \hat{n}, (\vec{u} - \vec{u}_0) \cdot \hat{n})
\end{equation}

where $p$ is a scalar defining the penalty value, $\vec{\psi_i}$ the test
functions, and $\vec{u} - \vec{u}_0$ is the vector difference between the
current solution and the Dirichlet data.

## Example Input File Syntax

!listing coupled_electrostatics.i block=BCs

!syntax parameters /BCs/VectorDivPenaltyDirichletBC

!syntax inputs /BCs/VectorDivPenaltyDirichletBC

!syntax children /BCs/VectorDivPenaltyDirichletBC
7 changes: 4 additions & 3 deletions framework/doc/content/source/variables/MooseVariableBase.md
Expand Up @@ -55,9 +55,10 @@ single-component are instantiated with the template argument `Real`; these hold
variables of finite element families `LAGRANGE`, `MONOMIAL`, `HERMITE`,
etc. Multi-component vector finite element variables are instantiated with the
template argument `RealVectorValue` and currently encompass the finite element
families `NEDELEC_ONE` and `LAGRANGE_VEC`. The former is useful for
electromagnetic applications or for general PDEs that involve a curl
operation. The latter is potentially useful for tensor mechanic or Navier-Stokes
families `LAGRANGE_VEC`, `MONOMIAL_VEC`, `NEDELEC_ONE` and `RAVIART_THOMAS`.
`NEDELEC_ONE` and `RAVIART_THOMAS` are useful for electromagnetic applications
or for general PDEs that involve a curl or a divergence operation, respectively.
`LAGRANGE_VEC` is potentially useful for tensor mechanics or Navier-Stokes
simulations where historically displacement or velocity variables have been
broken up component-wise. To hide the templating of the Moose variable system
from other framework code, `MooseVariableFE<Real>` and
Expand Down
8 changes: 4 additions & 4 deletions framework/doc/content/syntax/Adaptivity/index.md
Expand Up @@ -24,10 +24,10 @@ higher than their parents.
## P-Refinement

P-refinement level mismatches are not supported for continuous, non-hierarchic
finite element families. Additionally, p-refinement of `NEDELEC_ONE` is not
supported. Consequently, by default we disable p-refinement of the following
bases: `LAGRANGE`, `NEDELEC_ONE`, `LAGRANGE_VEC`, `CLOUGH`, `BERNSTEIN`, and
`RATIONAL_BERNSTEIN`. Users can control what families are disabled for
finite element families. Additionally, p-refinement of `NEDELEC_ONE` and `RAVIART_THOMAS`
elements is not supported. Consequently, by default we disable p-refinement of the
following bases: `LAGRANGE`, `NEDELEC_ONE`, `RAVIART_THOMAS`, `LAGRANGE_VEC`, `CLOUGH`,
`BERNSTEIN`, and `RATIONAL_BERNSTEIN`. Users can control what families are disabled for
p-refinement by setting the `disable_p_refinement_for_families` parameter.

## Cycles and Intervals
Expand Down
31 changes: 31 additions & 0 deletions modules/electromagnetics/doc/content/source/kernels/DivField.md
@@ -0,0 +1,31 @@
# DivField

!syntax description /Kernels/DivField

## Overview

!style halign=left
The DivField object implements the following PDE term for coupled scalar-vector
PDE systems:

\begin{equation}
\nabla \cdot \vec{u},
\end{equation}

where $\vec{u}$ is a vector field variable.
Given scalar test functions $\psi_i$, the weak form, in inner-product notation,
is given by:

\begin{equation}
R_i(\vec{u}) = (\psi_i, \nabla \cdot \vec{u}) \quad \forall \psi_i.
\end{equation}

## Example Input File Syntax

!listing coupled_electrostatics.i block=Kernels/divergence

!syntax parameters /Kernels/DivField

!syntax inputs /Kernels/DivField

!syntax children /Kernels/DivField
31 changes: 31 additions & 0 deletions modules/electromagnetics/doc/content/source/kernels/GradField.md
@@ -0,0 +1,31 @@
# GradField

!syntax description /Kernels/GradField

## Overview

!style halign=left
The GradField object implements the following PDE term for coupled
scalar-vector PDE systems:

\begin{equation}
- \nabla p,
\end{equation}

where $p$ is a scalar field variable.
Given vector test functions $\vec{\psi_i}$, the weak form, in inner-product
notation, is given by:

\begin{equation}
R_i(p) = (\nabla \cdot \vec{\psi_i}, p) \quad \forall \vec{\psi_i}.
\end{equation}

## Example Input File Syntax

!listing coupled_electrostatics.i block=Kernels/gradient

!syntax parameters /Kernels/GradField

!syntax inputs /Kernels/GradField

!syntax children /Kernels/GradField

0 comments on commit 66985d8

Please sign in to comment.