https://mooseframework.inl.gov
PressureBase.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
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 "ADIntegratedBC.h"
13 #include "IntegratedBC.h"
14 #include "MooseTypes.h"
15 
16 #include "MooseTypes.h"
17 #include "libmesh/quadrature_gauss.h"
18 
19 class Function;
20 
25 template <bool is_ad>
26 using PressureBaseParent = typename std::conditional<is_ad, ADIntegratedBC, IntegratedBC>::type;
27 
28 template <bool is_ad>
30 {
31 public:
34 
35  PressureBaseTempl(const InputParameters & parameters);
36 
37  virtual void initialSetup() override;
38 
39 protected:
40  virtual GenericReal<is_ad> computePressure() const = 0;
41 
42  virtual GenericReal<is_ad> computeQpResidual() override final;
43 
45  std::vector<unsigned int> _disp_var;
46 
48  const unsigned int _ndisp;
49 
51  const unsigned int _component;
52 
55 
68 };
69 
70 class PressureBase : public PressureBaseTempl<false>
71 {
72 public:
73  PressureBase(const InputParameters & parameters);
74 
75 protected:
76  virtual Real computeQpJacobian() override final;
77  virtual void precalculateQpJacobian() override final;
78  virtual Real computeQpOffDiagJacobian(const unsigned int jvar_num) override final;
79  virtual void precalculateQpOffDiagJacobian(const MooseVariableFEBase & jvar) override final;
80 
81  Real computeStiffness(const unsigned int coupled_component);
82  Real computeFaceStiffness(const unsigned int local_j, const unsigned int coupled_component);
83 
84  const std::vector<RealGradient> * _q_dxi;
85  const std::vector<RealGradient> * _q_deta;
86  const std::vector<std::vector<Real>> * _phi_dxi;
87  const std::vector<std::vector<Real>> * _phi_deta;
88  const bool _use_displaced_mesh;
89 
90  // One FE for each thread
91  std::vector<std::unique_ptr<FEBase>> _fe;
92 
93  std::map<unsigned int, unsigned int> _node_map;
94 };
95 
97 
98 template <bool is_ad>
99 using PressureParent = typename std::conditional<is_ad, ADPressureBase, PressureBase>::type;
Moose::GenericType< Real, is_ad > GenericReal
virtual GenericReal< is_ad > computeQpResidual() override final
Definition: PressureBase.C:92
typename std::conditional< is_ad, ADIntegratedBC, IntegratedBC >::type PressureBaseParent
Pressure applies a pressure on a given boundary in the direction defined by component.
Definition: PressureBase.h:26
const std::vector< std::vector< Real > > * _phi_dxi
Definition: PressureBase.h:86
const bool _use_displaced_mesh
Definition: PressureBase.h:88
virtual Real computeQpOffDiagJacobian(const unsigned int jvar_num) override final
Definition: PressureBase.C:186
Moose::CoordinateSystemType _coord_type
Coordinate system type.
Definition: PressureBase.h:54
Real computeStiffness(const unsigned int coupled_component)
Definition: PressureBase.C:150
typename std::conditional< is_ad, ADPressureBase, PressureBase >::type PressureParent
Definition: PressureBase.h:99
std::vector< unsigned int > _disp_var
Variable numbers of coupled displacement variables.
Definition: PressureBase.h:45
virtual GenericReal< is_ad > computePressure() const =0
const std::vector< RealGradient > * _q_dxi
Definition: PressureBase.h:84
static InputParameters actionParams()
Definition: PressureBase.C:30
std::vector< std::unique_ptr< FEBase > > _fe
Definition: PressureBase.h:91
const unsigned int _component
displacement component to apply the bc to
Definition: PressureBase.h:51
virtual void precalculateQpJacobian() override final
Definition: PressureBase.C:197
static InputParameters validParams()
Definition: PressureBase.C:19
virtual void initialSetup() override
Definition: PressureBase.C:72
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
CoordinateSystemType
const std::vector< RealGradient > * _q_deta
Definition: PressureBase.h:85
const unsigned int _ndisp
Number of displacement variables.
Definition: PressureBase.h:48
std::map< unsigned int, unsigned int > _node_map
Definition: PressureBase.h:93
PressureBaseTempl< true > ADPressureBase
Definition: PressureBase.h:96
virtual Real computeQpJacobian() override final
Definition: PressureBase.C:177
const std::vector< std::vector< Real > > * _phi_deta
Definition: PressureBase.h:87
PressureBaseTempl(const InputParameters &parameters)
Definition: PressureBase.C:39
Real computeFaceStiffness(const unsigned int local_j, const unsigned int coupled_component)
Definition: PressureBase.C:109
PressureBase(const InputParameters &parameters)
Definition: PressureBase.C:97
virtual void precalculateQpOffDiagJacobian(const MooseVariableFEBase &jvar) override final
Definition: PressureBase.C:250