From 115b6b17f47606fb692084a94a75badeb2dc757b Mon Sep 17 00:00:00 2001 From: Alex Lindsay Date: Fri, 26 May 2023 07:32:06 -0700 Subject: [PATCH] Documentation --- .../ADPenaltyVelocityContinuity.md | 15 +++++++++ .../content/source/kernels/ConvectedMesh.md | 8 ++++- .../source/kernels/ConvectedMeshPSPG.md | 22 +++++++++++++ .../doc/content/bib/heat_conduction.bib | 7 ++++ .../source/bcs/GaussianWeldEnergyFluxBC.md | 23 +++++++++++++ .../doc/content/bib/navier_stokes.bib | 11 +++++++ .../doc/content/modules/navier_stokes/cgfe.md | 6 ++++ .../modules/navier_stokes/laser_welding.md | 32 +++++++++++++++++++ .../source/bcs/INSADDisplaceBoundaryBC.md | 22 +++++++++++++ .../INSADDummyDisplaceBoundaryIntegratedBC.md | 17 ++++++++++ .../INSADVaporRecoilPressureMomentumFluxBC.md | 19 +++++++++++ .../source/kernels/INSADConvectedMesh.md | 21 ++++++++++++ 12 files changed, 202 insertions(+), 1 deletion(-) create mode 100644 modules/fsi/doc/content/source/interfacekernels/ADPenaltyVelocityContinuity.md create mode 100644 modules/fsi/doc/content/source/kernels/ConvectedMeshPSPG.md create mode 100644 modules/heat_conduction/doc/content/source/bcs/GaussianWeldEnergyFluxBC.md create mode 100644 modules/navier_stokes/doc/content/modules/navier_stokes/laser_welding.md create mode 100644 modules/navier_stokes/doc/content/source/bcs/INSADDisplaceBoundaryBC.md create mode 100644 modules/navier_stokes/doc/content/source/bcs/INSADDummyDisplaceBoundaryIntegratedBC.md create mode 100644 modules/navier_stokes/doc/content/source/bcs/INSADVaporRecoilPressureMomentumFluxBC.md create mode 100644 modules/navier_stokes/doc/content/source/kernels/INSADConvectedMesh.md diff --git a/modules/fsi/doc/content/source/interfacekernels/ADPenaltyVelocityContinuity.md b/modules/fsi/doc/content/source/interfacekernels/ADPenaltyVelocityContinuity.md new file mode 100644 index 000000000000..8c493d9c47ea --- /dev/null +++ b/modules/fsi/doc/content/source/interfacekernels/ADPenaltyVelocityContinuity.md @@ -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 diff --git a/modules/fsi/doc/content/source/kernels/ConvectedMesh.md b/modules/fsi/doc/content/source/kernels/ConvectedMesh.md index 6a27801953af..4e4638955353 100644 --- a/modules/fsi/doc/content/source/kernels/ConvectedMesh.md +++ b/modules/fsi/doc/content/source/kernels/ConvectedMesh.md @@ -1,6 +1,6 @@ # ConvectedMesh -## Description +!syntax description /Kernels/ConvectedMesh `ConvectedMesh` implements the corresponding weak form for the components of the term: @@ -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 diff --git a/modules/fsi/doc/content/source/kernels/ConvectedMeshPSPG.md b/modules/fsi/doc/content/source/kernels/ConvectedMeshPSPG.md new file mode 100644 index 000000000000..4c83a0b23656 --- /dev/null +++ b/modules/fsi/doc/content/source/kernels/ConvectedMeshPSPG.md @@ -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 diff --git a/modules/heat_conduction/doc/content/bib/heat_conduction.bib b/modules/heat_conduction/doc/content/bib/heat_conduction.bib index d9946ee49ddd..1f1c05f2874e 100644 --- a/modules/heat_conduction/doc/content/bib/heat_conduction.bib +++ b/modules/heat_conduction/doc/content/bib/heat_conduction.bib @@ -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~…} +} diff --git a/modules/heat_conduction/doc/content/source/bcs/GaussianWeldEnergyFluxBC.md b/modules/heat_conduction/doc/content/source/bcs/GaussianWeldEnergyFluxBC.md new file mode 100644 index 000000000000..19e713f36da0 --- /dev/null +++ b/modules/heat_conduction/doc/content/source/bcs/GaussianWeldEnergyFluxBC.md @@ -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 diff --git a/modules/navier_stokes/doc/content/bib/navier_stokes.bib b/modules/navier_stokes/doc/content/bib/navier_stokes.bib index 8e906bea976f..dd8c1511156b 100644 --- a/modules/navier_stokes/doc/content/bib/navier_stokes.bib +++ b/modules/navier_stokes/doc/content/bib/navier_stokes.bib @@ -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} +} diff --git a/modules/navier_stokes/doc/content/modules/navier_stokes/cgfe.md b/modules/navier_stokes/doc/content/modules/navier_stokes/cgfe.md index 0f47c6120251..b5f2ee377f5d 100644 --- a/modules/navier_stokes/doc/content/modules/navier_stokes/cgfe.md +++ b/modules/navier_stokes/doc/content/modules/navier_stokes/cgfe.md @@ -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] diff --git a/modules/navier_stokes/doc/content/modules/navier_stokes/laser_welding.md b/modules/navier_stokes/doc/content/modules/navier_stokes/laser_welding.md new file mode 100644 index 000000000000..c815dcb5721c --- /dev/null +++ b/modules/navier_stokes/doc/content/modules/navier_stokes/laser_welding.md @@ -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 diff --git a/modules/navier_stokes/doc/content/source/bcs/INSADDisplaceBoundaryBC.md b/modules/navier_stokes/doc/content/source/bcs/INSADDisplaceBoundaryBC.md new file mode 100644 index 000000000000..ba439a55bbc4 --- /dev/null +++ b/modules/navier_stokes/doc/content/source/bcs/INSADDisplaceBoundaryBC.md @@ -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 diff --git a/modules/navier_stokes/doc/content/source/bcs/INSADDummyDisplaceBoundaryIntegratedBC.md b/modules/navier_stokes/doc/content/source/bcs/INSADDummyDisplaceBoundaryIntegratedBC.md new file mode 100644 index 000000000000..bec9fdc58bee --- /dev/null +++ b/modules/navier_stokes/doc/content/source/bcs/INSADDummyDisplaceBoundaryIntegratedBC.md @@ -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 diff --git a/modules/navier_stokes/doc/content/source/bcs/INSADVaporRecoilPressureMomentumFluxBC.md b/modules/navier_stokes/doc/content/source/bcs/INSADVaporRecoilPressureMomentumFluxBC.md new file mode 100644 index 000000000000..5b6d948fd2c5 --- /dev/null +++ b/modules/navier_stokes/doc/content/source/bcs/INSADVaporRecoilPressureMomentumFluxBC.md @@ -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 diff --git a/modules/navier_stokes/doc/content/source/kernels/INSADConvectedMesh.md b/modules/navier_stokes/doc/content/source/kernels/INSADConvectedMesh.md new file mode 100644 index 000000000000..3621a8f6f5b9 --- /dev/null +++ b/modules/navier_stokes/doc/content/source/kernels/INSADConvectedMesh.md @@ -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