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:
38  virtual ADRealVectorValue solidVelocity(const unsigned int qp) const;
39 
41  const Real _penalty;
42 
45 
48 
50  std::vector<const ADVariableValue *> _solid_velocities;
51 
53  std::vector<const MooseVariable *> _displacements;
54 
57 
60 
62  std::vector<ADReal> _residuals;
63 
65  std::vector<ADRealVectorValue> _qp_jumps;
66 };
67 
68 inline void
70 {
72 }
73 
74 inline void
76 {
78 }
79 
80 inline void
82 {
83  if (jvar == _velocity_var->number())
84  // Only need to do this once because AD does everything all at once
86 }
87 
88 inline void
90 {
91 }
92 
93 inline const MooseVariableFieldBase &
95 {
96  return *_velocity_var;
97 }
98 
99 inline const MooseVariableFieldBase &
101 {
102  if (_displacements.empty() || !_displacements.front())
103  mooseError("The 'neighborVariable' method was called which requires that displacements be "
104  "actual variables.");
105 
106  return *_displacements.front();
107 }
const MooseArray< ADReal > & _ad_coord
Coordinate transformation with displacement derivatives.
virtual const MooseVariableFieldBase & variable() const override
virtual void computeResidualAndJacobian() override
unsigned int number() const
virtual ADRealVectorValue solidVelocity(const unsigned int qp) const
const InputParameters & parameters() 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
virtual void computeNeighborOffDiagJacobian(unsigned int jvar) override
virtual const MooseVariableFieldBase & neighborVariable() const override