Skip to content

Commit

Permalink
Merge branch 'aurora-multiphysics:main' into sr_kc/non-linear-diffusion
Browse files Browse the repository at this point in the history
  • Loading branch information
karthichockalingam authored Jan 3, 2025
2 parents 2a6b5cc + 2de76d6 commit 4e961c3
Show file tree
Hide file tree
Showing 136 changed files with 87,157 additions and 801 deletions.
6 changes: 3 additions & 3 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,9 @@ jobs:
uses: super-linter/super-linter/[email protected]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# External doxygen style files and MOOSE Doxygen header do not meet Platypus
# linting requirements; exclude them from lint checks:
FILTER_REGEX_EXCLUDE: ((^|/)doxygen-awesome|moose_doxy_header.html|doxygen.css|tabs.css)
# External doxygen style files, the MOOSE Doxygen header, and the CodeCov upload script
# do not meet Platypus linting requirements; exclude them from lint checks:
FILTER_REGEX_EXCLUDE: ((^|/)doxygen-awesome|moose_doxy_header.html|doxygen.css|tabs.css|codecov.sh)
VALIDATE_ANSIBLE: false
VALIDATE_CHECKOV: false
VALIDATE_CPP: false
Expand Down
50 changes: 50 additions & 0 deletions doc/content/examples/GradDiv.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# Grad-div Problem

## Summary

Solves a diffusion problem for a vector field on a cuboid domain, discretized
using $H(\mathrm{div})$ conforming Raviart-Thomas elements. This example is
based on [MFEM Example 4](https://mfem.org/examples/) and is relevant for
solving Maxwell's equations using potentials without the Coulomb gauge.


## Description

This problem solves a grad-div equation with strong form:

\begin{equation}
\begin{split}
\vec\nabla \left( \alpha \vec\nabla \cdot \vec F \right) + \beta \vec F = \vec f \,\,\,&\mathrm{on}\,\, \Omega \\
\vec F \cdot \hat n= \vec g \,\,\, &\mathrm{on}\,\, \partial\Omega
\end{split}
\end{equation}

where

\begin{equation}
\vec g = \begin{pmatrix}
\cos(k x)\sin(k y)\\
\cos(k y)\sin(k x)\\
0
\end{pmatrix},\,\,\,
\vec f = \left( \beta + 2 \alpha k^2 \right) \vec g
\end{equation}

In this example, we solve this using the weak form

!equation
(\alpha \vec\nabla \cdot \vec F , \vec\nabla \cdot \vec v)_\Omega + (\beta \vec F, \vec F)_\Omega
= (\vec f, \vec v)_\Omega \,\,\, \forall \vec v \in V

where

\begin{equation}
\begin{split}
\vec F \in H(\mathrm{div})(\Omega) &: \vec F \cdot \hat n= \vec g \,\,\, \mathrm{on}\,\, \partial\Omega \\
\vec v \in H(\mathrm{div})(\Omega) &: \vec v \cdot \hat n= \vec 0 \,\,\, \mathrm{on}\,\, \partial\Omega
\end{split}
\end{equation}

## Example File

!listing kernels/graddiv.i
75 changes: 75 additions & 0 deletions doc/content/examples/LinearElasticity.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
# Linear Elasticity Problem

## Summary

Solves a 3D linear elasticity problem for
the deformation of a mult-material cantiliver beam. This example
is based on [MFEM Example 2](https://mfem.org/examples/).


## Description

This problem solves a linear elasticity problem for small deformations with strong form:

\begin{equation}
\begin{split}
-\partial_j \sigma_{ij} =0
\,\,\,&\mathrm{on}\,\, \Omega \\
u_i = 0 \,\,\, &\mathrm{on}\,\, \Gamma_1 \\
\sigma_{ij} \hat n_j= f_i \,\,\, &\mathrm{on}\,\, \Gamma_2
\end{split}
\end{equation}

where Einstein notation for summation over repeated indices has been used, and the pull-down force
$\vec f = f_i \hat e_i$ is given by

\begin{equation}
\vec f = \begin{pmatrix}
0.0\\
0.0\\
-0.01
\end{pmatrix}
\end{equation}

In this example,
the stress/strain relation is taken to be isotropic, such that

\begin{equation}
\begin{split}
\sigma_{ij} \equiv C_{ijkl} \varepsilon_{kl} = \lambda \delta_{ij} \varepsilon_{kk} + 2 \mu \varepsilon_{ij} \\
\varepsilon_{ij} = \frac{1}{2} \left(\partial_i u_j + \partial_j u_i\right)
\end{split}
\end{equation}

In this example, we solve this using the weak form

\begin{equation}
(\sigma_{ij}, \partial_j v_i)_\Omega - (\sigma_{ij} \hat n_j, v_i)_{\partial \Omega}
= 0 \,\,\,\, \forall v_i \in V
\end{equation}

where

\begin{equation}
v_i \in H^1(\Omega) : v_i = 0 \,\,\, \mathrm{on} \,\, \Gamma_1
\end{equation}

## Material Parameters

In this example, the cantilever beam is comprised of two materials; a stiffer material on the block
with domain attribute 1, and a more flexible material defined on the block with domain attribute 2.
These materials are parametrised with different values for the Lamé parameters, $\lambda$ and
$\mu$, on the two domains.

The two Lamé parameters can be expressed in terms of the Young's modulus $E$ and the Poisson ratio $\nu$ in each material, using

\begin{equation}
\begin{split}
\lambda &= \frac{E\nu}{(1-2\nu)(1+\nu)} \\
\mu &= \frac{E}{2(1+\nu)}
\end{split}
\end{equation}

## Example File

!listing kernels/linearelasticity.i
13 changes: 12 additions & 1 deletion doc/content/examples/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,19 @@ starting point for users to adapt:
boundary parameterized by a heat transfer coefficient that exchanges heat with a thermal
reservoir.

## Mechanical Problems

- [Linear Elasticity](examples/LinearElasticity.md): Solves a 3D linear elasticity problem for
the deformation of a multi-material cantiliver beam. This example
is based on [MFEM Example 2](https://mfem.org/examples/).

## Electromagnetic Problems

- [DefiniteMaxwell](examples/DefiniteMaxwell.md): Solves a 3D electromagnetic diffusion problem for
- [Definite Maxwell](examples/DefiniteMaxwell.md): Solves a 3D electromagnetic diffusion problem for
the electric field on a cube missing an octant, discretized using $H(\mathrm{curl})$ conforming
Nédélec elements. This example is based on [MFEM Example 3](https://mfem.org/examples/).

- [GradDiv](examples/GradDiv.md): Solves a diffusion problem for a vector field
on a cuboid domain, discretized using $H(\mathrm{div})$ conforming
Raviart-Thomas elements. This example is based on [MFEM Example 4](https://mfem.org/examples/)
and is relevant for solving Maxwell's equations using potentials without the Coulomb gauge.
16 changes: 0 additions & 16 deletions doc/content/source/actions/AddCoefficientAction.md

This file was deleted.

17 changes: 0 additions & 17 deletions doc/content/source/actions/AddVectorCoefficientAction.md

This file was deleted.

18 changes: 18 additions & 0 deletions doc/content/source/actions/SetMeshFESpaceAction.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# SetMeshFESpaceAction

## Summary

Sets the nodal mesh FESpace to use the same FESpace as the
[`MFEMVariable`](source/variables/MFEMVariable.md) used to describe node displacements.

## Overview

Action called to set the nodal mesh FESpace to use the same FESpace as the variable used to describe
node displacements in problems involving deformed meshes, parsing content inside the `Mesh` block in
the user input. Only has an effect if the `Problem` type is set to
[`MFEMProblem`](source/problem/MFEMProblem.md), the `Mesh` type is set to [`MFEMMesh`](source/mesh/MFEMMesh.md)
and the `displacement` field is set.

## Example Input File Syntax

!listing test/tests/kernels/linearelasticity.i block=Mesh
21 changes: 21 additions & 0 deletions doc/content/source/bcs/MFEMScalarBoundaryIntegratedBC.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# MFEMScalarBoundaryIntegratedBC

## Summary

!syntax description /BCs/MFEMScalarBoundaryIntegratedBC

## Overview

Adds the boundary integrator for integrating the linear form

!equation
(f, v)_{\partial\Omega} \,\,\, \forall v \in V

where the test variable $v \in H^1$ and $f$ is a scalar coefficient. Often used for representing
Neumann-type boundary conditions.

!syntax parameters /BCs/MFEMScalarBoundaryIntegratedBC

!syntax inputs /BCs/MFEMScalarBoundaryIntegratedBC

!syntax children /BCs/MFEMScalarBoundaryIntegratedBC
2 changes: 1 addition & 1 deletion doc/content/source/bcs/MFEMScalarDirichletBC.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
## Overview

Boundary condition for enforcing an essential (Dirichlet) condition on a scalar variable on the
boundary, fixing its values to the input scalar coefficient on the boundary.
boundary, fixing its values to the input on the boundary.

## Example Input File Syntax

Expand Down
19 changes: 19 additions & 0 deletions doc/content/source/bcs/MFEMScalarFunctionDirichletBC.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# MFEMScalarFunctionDirichletBC

## Summary

!syntax description /BCs/MFEMScalarFunctionDirichletBC

## Overview

Boundary condition for enforcing an essential (Dirichlet) condition on
a scalar variable on the boundary, fixing its values to the input
scalar function on the boundary.

## Example Input File Syntax

!syntax parameters /BCs/MFEMScalarFunctionDirichletBC

!syntax inputs /BCs/MFEMScalarFunctionDirichletBC

!syntax children /BCs/MFEMScalarFunctionDirichletBC
24 changes: 24 additions & 0 deletions doc/content/source/bcs/MFEMVectorBoundaryIntegratedBC.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# MFEMVectorBoundaryIntegratedBC

## Summary

!syntax description /BCs/MFEMVectorBoundaryIntegratedBC

## Overview

Adds the boundary integrator for integrating the linear form

!equation
(\vec f, \vec v)_{\partial\Omega} \,\,\, \forall \vec v \in V

where $\vec v \in \vec H^1$ and $\vec f$ is a constant vector of the same dimension.

## Example Input File Syntax

!listing test/tests/kernels/linearelasticity.i block=BCs

!syntax parameters /BCs/MFEMVectorBoundaryIntegratedBC

!syntax inputs /BCs/MFEMVectorBoundaryIntegratedBC

!syntax children /BCs/MFEMVectorBoundaryIntegratedBC
6 changes: 3 additions & 3 deletions doc/content/source/bcs/MFEMVectorDirichletBC.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@

## Overview

Boundary condition for enforcing an essential (Dirichlet) boundary condition on a vector variable on the
boundary.
Boundary condition for enforcing an essential (Dirichlet) boundary condition on all components of a
vector $H^1$ conforming variable on the boundary. The boundary value is constant in space and time.

## Example Input File Syntax

!listing test/tests/kernels/curlcurl.i block=BCs
!listing test/tests/kernels/linearelasticity.i block=BCs

!syntax parameters /BCs/MFEMVectorDirichletBC

Expand Down
12 changes: 12 additions & 0 deletions doc/content/source/bcs/MFEMVectorDirichletBCBase.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# MFEMVectorDirichletBCBase

## Summary

Base class for objects applying essential boundary conditions on vector variables in an MFEM FE problem.

## Overview

Classes deriving from `MFEMVectorDirichletBCBase` are used for the application of Dirichlet-like BCs that
remove degrees of freedom from vector variables in the problem on the specified boundary. These are commonly used when
strongly constraining the values a solution may take on boundaries. The imposed values are uniform in space and constant
in time.
22 changes: 22 additions & 0 deletions doc/content/source/bcs/MFEMVectorFunctionBoundaryIntegratedBC.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# MFEMVectorFunctionBoundaryIntegratedBC

## Summary

!syntax description /BCs/MFEMVectorFunctionBoundaryIntegratedBC

## Overview

Adds the boundary integrator for integrating the linear form

!equation
(\vec f, \vec v)_{\partial\Omega} \,\,\, \forall \vec v \in V

where $v \in \vec H^1$ and $\vec f$ is a vector function of the same dimension.

## Example Input File Syntax

!syntax parameters /BCs/MFEMVectorFunctionBoundaryIntegratedBC

!syntax inputs /BCs/MFEMVectorFunctionBoundaryIntegratedBC

!syntax children /BCs/MFEMVectorFunctionBoundaryIntegratedBC
20 changes: 20 additions & 0 deletions doc/content/source/bcs/MFEMVectorFunctionDirichletBC.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# MFEMVectorFunctionDirichletBC

## Summary

!syntax description /BCs/MFEMVectorFunctionDirichletBC

## Overview

Boundary condition for enforcing an essential (Dirichlet) boundary condition on all components of a
vector $H^1$ conforming variable on the boundary. The boundary value is a function of space and/or time.

## Example Input File Syntax

!listing test/tests/kernels/linearelasticity.i block=BCs

!syntax parameters /BCs/MFEMVectorFunctionDirichletBC

!syntax inputs /BCs/MFEMVectorFunctionDirichletBC

!syntax children /BCs/MFEMVectorFunctionDirichletBC
11 changes: 11 additions & 0 deletions doc/content/source/bcs/MFEMVectorFunctionDirichletBCBase.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# MFEMVectorFunctionDirichletBCBase

## Summary

Base class for objects applying essential boundary conditions on vector variables in an MFEM FE problem.

## Overview

Classes deriving from `MFEMVectorFunctionDirichletBCBase` are used for the application of Dirichlet-like BCs that
remove degrees of freedom from vector variables in the problem on the specified boundary. These are commonly used when
strongly constraining the values a solution may take on boundaries. The imposed values may vary in space and/or time.
21 changes: 21 additions & 0 deletions doc/content/source/bcs/MFEMVectorFunctionNormalDirichletBC.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# MFEMVectorFunctionNormalDirichletBC

## Summary

!syntax description /BCs/MFEMVectorFunctionNormalDirichletBC

## Overview

Boundary condition for enforcing an essential (Dirichlet) boundary condition on the normal
components of a $H(\mathrm{div})$ conforming vector FE at a boundary. The imposed value is
a function of space and/or time.

## Example Input File Syntax

!listing test/tests/kernels/graddiv.i block=BCs

!syntax parameters /BCs/MFEMVectorFunctionNormalDirichletBC

!syntax inputs /BCs/MFEMVectorFunctionNormalDirichletBC

!syntax children /BCs/MFEMVectorFunctionNormalDirichletBC
Loading

0 comments on commit 4e961c3

Please sign in to comment.