Skip to content

Commit

Permalink
Documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
lindsayad committed May 26, 2023
1 parent 4045e1f commit 115b6b1
Show file tree
Hide file tree
Showing 12 changed files with 202 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# ADPenaltyVelocityContinuity

!syntax description /InterfaceKernels/ADPenaltyVelocityContinuity

This object is meant for use in coupling the Navier-Stokes fluid equations with
solid mechanics equations at a fluid-structure interface. In that context this
object imposes both continuity of stress and continuity of material velocity via
a penalty condition. For more information on the error of penalty methods,
please see [CoupledPenaltyInterfaceDiffusion.md].

!syntax parameters /InterfaceKernels/ADPenaltyVelocityContinuity

!syntax inputs /InterfaceKernels/ADPenaltyVelocityContinuity

!syntax children /InterfaceKernels/ADPenaltyVelocityContinuity
8 changes: 7 additions & 1 deletion modules/fsi/doc/content/source/kernels/ConvectedMesh.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# ConvectedMesh

## Description
!syntax description /Kernels/ConvectedMesh

`ConvectedMesh` implements the corresponding weak form for the components of
the term:
Expand All @@ -13,3 +13,9 @@ where $\rho$ is the density, $\vec{d_m}$ is the fluid mesh displacements, and
$\vec{u}$ is the fluid velocity. This term is essential for obtaining the
correct convective derivative of the fluid in cases where the fluid mesh is
dynamic, e.g. in simulations of fluid-structure interaction.

!syntax parameters /Kernels/ConvectedMesh

!syntax inputs /Kernels/ConvectedMesh

!syntax children /Kernels/ConvectedMesh
22 changes: 22 additions & 0 deletions modules/fsi/doc/content/source/kernels/ConvectedMeshPSPG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# ConvectedMeshPSPG

!syntax description /Kernels/ConvectedMeshPSPG

This object adds the pressure-stabilized Petrov-Galerkin term to the pressure
equation corresponding to the [ConvectedMesh.md] object. It implements the
weak form

\begin{equation}
\int \nabla \psi \dot \left(\tau \dot{\vec{d}}\right) dV
\end{equation}

where $\nabla \psi$ is the gradient of the pressure test function, $\tau$ is a
stabilization parameter computed automatically by the `navier_stokes` base class
`INSBase`, and $\dot{\vec{d}}$ is the time derivative of the displacement
vector.

!syntax parameters /Kernels/ConvectedMeshPSPG

!syntax inputs /Kernels/ConvectedMeshPSPG

!syntax children /Kernels/ConvectedMeshPSPG
7 changes: 7 additions & 0 deletions modules/heat_conduction/doc/content/bib/heat_conduction.bib
Original file line number Diff line number Diff line change
Expand Up @@ -58,3 +58,10 @@ @article{SONG2006710
url = {https://www.sciencedirect.com/science/article/pii/S0008622305005609},
author = {Young Seok Song and Jae Ryoun Youn},
}

@techreport{noble2007use,
title={Use of Aria to simulate laser weld pool dynamics for neutron generator production.},
author={Noble, David R and Notz, Patrick K and Martinez, Mario J and Kraynik, Andrew Michael},
year={2007},
institution={Sandia National Laboratories (SNL), Albuquerque, NM, and Livermore, CA~…}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# GaussianWeldEnergyFluxBC

!syntax description /BCs/GaussianWeldEnergyFluxBC

This boundary condition computes an influx of energy from a laser spot with a
Gaussian spatial profile. The flux is given by

\begin{equation}
-2r_{eff}F_0\exp{-r_{eff}r_p^2/R^2}
\end{equation}

where $r_eff$ is an effective radius used to specify the radial distribution of
beam energy, $F_0$ is the average heat flux of the laser, and $r_p$ is the
normed distance from the point at which we're evaluating the flux to the
centerpoint of the laser. This functional form of the laser flux is taken from
[!cite](noble2007use). The negative sign on the flux indicates that the flux is
incoming.

!syntax parameters /BCs/GaussianWeldEnergyFluxBC

!syntax inputs /BCs/GaussianWeldEnergyFluxBC

!syntax children /BCs/GaussianWeldEnergyFluxBC
11 changes: 11 additions & 0 deletions modules/navier_stokes/doc/content/bib/navier_stokes.bib
Original file line number Diff line number Diff line change
Expand Up @@ -256,3 +256,14 @@ @article{gau1986melting
pages={174--181},
publisher={ASME}
}

@article{lindsay2021automatic,
title={Automatic differentiation in MetaPhysicL and its applications in MOOSE},
author={Lindsay, Alexander and Stogner, Roy and Gaston, Derek and Schwen, Daniel and Matthews, Christopher and Jiang, Wen and Aagesen, Larry K and Carlsen, Robert and Kong, Fande and Slaughter, Andrew and others},
journal={Nuclear Technology},
volume={207},
number={7},
pages={905--922},
year={2021},
publisher={Taylor \& Francis}
}
Original file line number Diff line number Diff line change
Expand Up @@ -131,3 +131,9 @@ Notes on the above table:
the velocity variable as it will not introduce any inconsistency. (Recall from above that the
vector variable, AD implementation cannot currently include Laplacian terms. For a first order
basis this incurs no error, but for a second order basis it does)

### More exotic tests/examples

Please see the following for descriptions of more exotic tests/examples

- [laser_welding.md]
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# 3D laser welding

The input file below can be used to model a full rotation of a laser spot around
the surface of a cubic representation of a welding material. This input, whose
results are published in [!cite](lindsay2021automatic),
reproduces a model outlined in [!cite](noble2007use). A simple Laplacian
equation is used to model the displacement field. The incompressible
Navier-Stokes equations are solved for mass, momentum, and energy. These
equations are run on the displaced mesh such that a mesh convection term (see
[INSADConvectedMesh.md]) must be added to correct the material
velocity. Both SUPG and PSPG stabilizations are used in this input.

This simulation is driven by the rotating laser spot, whose effect is introduced
via the [GaussianWeldEnergyFluxBC.md] object. In addition to this incoming heat
flux, an outgoing radiative heat flux is modeled using [FunctionRadiativeBC.md].
Evaporation of material from the liquefied material surface helps
drive momentum changes at the surface of the condensed phase; this effect is incorporated via the
[INSADVaporRecoilPressureMomentumFluxBC.md] object. These surface momentum and velocity
changes are then translated into mesh displacement
through the [INSADDisplaceBoundaryBC.md] object. We also introduce
[INSADDummyDisplacedBoundaryIntegratedBC.md] objects in order to fill the
sparsity dependence of the surface displacement degrees of freedom on the
surface velocity degrees of freedom before the Jacobian matrix is assembled
prior to executing nodal boundary conditions. This sparsity filling is necessary
in order to prevent new nonzero allocations from occurring when the
`INSADDisplaceBoundaryBC` nodal boundary conditions are executed. No-slip
boundary conditions are applied at all surfaces other than at the `front`
surface where the laser spot is applied. The `back` surface is held at a
constant temperature of 300 Kelvin. Zero displacements are applied at the `back`
surface. Material properties are based on 304L stainless steel.

!listing modules/navier_stokes/test/tests/finite_element/ins/laser-welding/3d.i
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# INSADDisplaceBoundaryBC

!syntax description /BCs/INSADDisplaceBoundaryBC

This boundary condition displaces a boundary in proportion to a coupled
velocity. It is a strongly enforced boundary condition on every displacement
node with a residual of the form

\begin{equation}
u - (u_{old} + \Delta t \vec{v}_i)
\end{equation}

where $u$ denotes a given displacement vector component, $u_{old}$ is the
previous timestep's value of the displacement, $\Delta t$ is the timestep, and
$\vec{v}_i$ is a component of the coupled velocity vector, where $i$ denotes the
component.

!syntax parameters /BCs/INSADDisplaceBoundaryBC

!syntax inputs /BCs/INSADDisplaceBoundaryBC

!syntax children /BCs/INSADDisplaceBoundaryBC
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# INSADDummyDisplaceBoundaryIntegratedBC

!syntax description /BCs/INSADDummyDisplaceBoundaryIntegratedBC

This object adds the sparsity dependence of the surface displacement degress of
freedom on surface velocity degrees of freedom introduced by the nodal boundary
condition [INSADDisplaceBoundaryBC.md]. This sparsity must be added before
nodal boundary conditions are executed because the Jacobian matrix is assembled
prior to nodal boundary condition execution. At that time, if there is unused
sparsity in the matrix it is removed by PETSc. Hence the use of this object to
prevent new nonzero allocations during execution of `INSADDisplaceBoundaryBC`.

!syntax parameters /BCs/INSADDummyDisplaceBoundaryIntegratedBC

!syntax inputs /BCs/INSADDummyDisplaceBoundaryIntegratedBC

!syntax children /BCs/INSADDummyDisplaceBoundaryIntegratedBC
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# INSADVaporRecoilPressureMomentumFluxBC

!syntax description /BCs/INSADVaporRecoilPressureMomentumFluxBC

This object adds a flux to the Navier-Stokes momentum equation of the form

\begin{equation}
\hat{n} p_r
\end{equation}

where $\hat{n}$ is the surface unit normal and $p_r$ is the recoil pressure that
represents the pressure impulse due to evaporation of material from the liquid
material we're a boundary condition for.

!syntax parameters /BCs/INSADVaporRecoilPressureMomentumFluxBC

!syntax inputs /BCs/INSADVaporRecoilPressureMomentumFluxBC

!syntax children /BCs/INSADVaporRecoilPressureMomentumFluxBC
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# INSADConvectedMesh

!syntax description /Kernels/INSADConvectedMesh

`INSADConvectedMesh` implements the corresponding weak form for the components of
the term:

\begin{equation}
-\rho \left(\frac{\partial\vec{d_m}}{\partial t} \cdot \nabla\right) \vec{u}
\end{equation}

where $\rho$ is the density, $\vec{d_m}$ is the fluid mesh displacements, and
$\vec{u}$ is the fluid velocity. This term is essential for obtaining the
correct convective derivative of the fluid in cases where the fluid mesh is
dynamic, e.g. in simulations of fluid-structure interaction.

!syntax parameters /Kernels/INSADConvectedMesh

!syntax inputs /Kernels/INSADConvectedMesh

!syntax children /Kernels/INSADConvectedMesh

0 comments on commit 115b6b1

Please sign in to comment.