https://mooseframework.inl.gov
Loading...
Searching...
No Matches
ADPenaltyVelocityContinuity.h
Go to the documentation of this file.
1
2//* 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{
20public:
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
33protected:
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
68inline void
73
74inline void
79
80inline void
82{
83 if (jvar == _velocity_var->number())
84 // Only need to do this once because AD does everything all at once
86}
87
88inline void
92
93inline const MooseVariableFieldBase &
98
99inline 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}
Interface kernel for enforcing continuity of stress and velocity.
const MooseArray< ADReal > & _ad_coord
Coordinate transformation with displacement derivatives.
std::vector< ADReal > _residuals
Residuals data member to avoid constant heap allocation.
virtual const MooseVariableFieldBase & variable() const override
virtual ADRealVectorValue solidVelocity(const unsigned int qp) const
std::vector< const ADVariableValue * > _solid_velocities
Solid velocity values.
const ADVectorVariableValue & _velocity
Fluid velocity values.
virtual void computeNeighborOffDiagJacobian(unsigned int jvar) override
virtual void computeResidualAndJacobian() override
virtual const MooseVariableFieldBase & neighborVariable() const override
const MooseArray< ADReal > & _ad_JxW
JxW with displacement derivatives.
std::vector< ADRealVectorValue > _qp_jumps
Jump data member to avoid constant heap allocations.
virtual void computeElementOffDiagJacobian(unsigned int jvar) override
const VectorMooseVariable *const _velocity_var
Fluid velocity variable.
std::vector< const MooseVariable * > _displacements
Displacement variables.
const Real _penalty
The penalty factor.
const InputParameters & parameters() const
void mooseError(Args &&... args) const
unsigned int number() const