https://mooseframework.inl.gov
ADPenaltyVelocityContinuity.h
Go to the documentation of this file.
1 //* https://mooseframework.inl.gov
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
10 #pragma once
11 
12 #include "InterfaceKernelBase.h"
13 #include "MooseVariableFE.h"
14 
19 {
20 public:
22 
24 
25  virtual void computeResidual() override;
26  virtual void computeResidualAndJacobian() override;
27  virtual void computeJacobian() override;
28  virtual void computeElementOffDiagJacobian(unsigned int jvar) override;
29  virtual void computeNeighborOffDiagJacobian(unsigned int jvar) override;
30  virtual const MooseVariableFieldBase & variable() const override;
31  virtual const MooseVariableFieldBase & neighborVariable() const override;
32 
33 protected:
35  const Real _penalty;
36 
39 
42 
44  std::vector<const ADVariableValue *> _solid_velocities;
45 
47  std::vector<const MooseVariable *> _displacements;
48 
51 
54 
56  std::vector<ADReal> _residuals;
57 
59  std::vector<ADRealVectorValue> _qp_jumps;
60 };
61 
62 inline void
64 {
66 }
67 
68 inline void
70 {
72 }
73 
74 inline void
76 {
77  if (jvar == _velocity_var->number())
78  // Only need to do this once because AD does everything all at once
80 }
81 
82 inline void
84 {
85 }
86 
87 inline const MooseVariableFieldBase &
89 {
90  return *_velocity_var;
91 }
92 
93 inline const MooseVariableFieldBase &
95 {
96  if (_displacements.empty() || !_displacements.front())
97  mooseError("The 'neighborVariable' method was called which requires that displacements be "
98  "actual variables.");
99 
100  return *_displacements.front();
101 }
const MooseArray< ADReal > & _ad_coord
Coordinate transformation with displacement derivatives.
virtual const MooseVariableFieldBase & variable() const override
virtual void computeResidualAndJacobian() override
unsigned int number() const
ADPenaltyVelocityContinuity(const InputParameters &parameters)
virtual void computeJacobian() override
std::vector< const MooseVariable * > _displacements
Displacement variables.
std::vector< const ADVariableValue * > _solid_velocities
Solid velocity values.
std::vector< ADRealVectorValue > _qp_jumps
Jump data member to avoid constant heap allocations.
Interface kernel for enforcing continuity of stress and velocity.
const Real _penalty
The penalty factor.
std::vector< ADReal > _residuals
Residuals data member to avoid constant heap allocation.
const MooseArray< ADReal > & _ad_JxW
JxW with displacement derivatives.
const ADVectorVariableValue & _velocity
Fluid velocity values.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const VectorMooseVariable *const _velocity_var
Fluid velocity variable.
virtual void computeElementOffDiagJacobian(unsigned int jvar) override
virtual void computeResidual() override
static InputParameters validParams()
void mooseError(Args &&... args) const
const InputParameters & parameters() const
virtual void computeNeighborOffDiagJacobian(unsigned int jvar) override
virtual const MooseVariableFieldBase & neighborVariable() const override