https://mooseframework.inl.gov
PorousFlowFullySaturatedMassTimeDerivative.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
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 "GenericKernel.h"
13 #include "PorousFlowDictator.h"
14 
23 template <bool is_ad>
25 {
26 public:
28 
30 
31 protected:
32  virtual GenericReal<is_ad> computeQpResidual() override;
33  virtual Real computeQpJacobian() override;
34  virtual Real computeQpOffDiagJacobian(unsigned int jvar) override;
35 
37  Real computeQpJac(unsigned int pvar);
38 
41 
43  const bool _var_is_porflow_var;
44 
47 
49  enum class CouplingTypeEnum
50  {
51  Hydro,
55  };
57 
59  const bool _includes_thermal;
60 
63 
66 
69 
72 
75 
78 
81 
84 
87 
90 
93 
96 
99 
102 
105 };
106 
const MaterialProperty< Real > & _biot_modulus
Constant Biot modulus (not a function of primary variables)
Moose::GenericType< Real, is_ad > GenericReal
const PorousFlowDictator & _dictator
PorousFlowDictator UserObject.
const bool _includes_thermal
Whether thermal contributions should be added to the residual.
const bool _multiply_by_density
If true the kernel is d(fluid mass)/dt, otherwise d(fluid volume)/dt.
Time derivative of fluid mass for fully-saturated, single-phase, single-component simulations...
const MaterialProperty< std::vector< RealGradient > > *const _dstrain_rate_dvar
d(strain rate)/d(PorousFlow variable) – null for AD path
const InputParameters & parameters() const
CouplingTypeEnum
Determines whether mechanical and/or thermal contributions should be added to the residual...
const MaterialProperty< std::vector< std::vector< Real > > > *const _dfluid_density_dvar
d(fluid density)/d(PorousFlow variable) – null for AD path
Real computeQpJac(unsigned int pvar)
Jacobian contribution for PorousFlow variable pvar (non-AD path only)
const GenericMaterialProperty< std::vector< Real >, is_ad > *const _fluid_density
Quadpoint fluid density (AD or non-AD depending on is_ad)
const MaterialProperty< std::vector< Real > > & _pp_old
Old quadpoint pore pressure (always non-AD)
const bool _includes_mechanical
Whether mechanical contributions should be added to the residual.
const MaterialProperty< Real > *const _thermal_coeff
Constant volumetric thermal expansion coefficient.
const MaterialProperty< std::vector< Real > > *const _dtemperature_dvar
d(temperature)/d(PorousFlow variable) – null for AD path
typename GenericMaterialPropertyStruct< T, is_ad >::type GenericMaterialProperty
const GenericMaterialProperty< Real, is_ad > *const _temperature
Quadpoint temperature (only when _includes_thermal)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
This holds maps between the nonlinear variables used in a PorousFlow simulation and the variable numb...
const MaterialProperty< Real > *const _strain_rate
Volumetric strain rate (only when _includes_mechanical; always non-AD)
const MaterialProperty< std::vector< std::vector< Real > > > *const _dpp_dvar
d(pore pressure)/d(PorousFlow variable) – null for AD path
const GenericMaterialProperty< std::vector< Real >, is_ad > & _pp
Quadpoint pore pressure.
const MaterialProperty< Real > *const _temperature_old
Old quadpoint temperature (always non-AD)
PorousFlowFullySaturatedMassTimeDerivativeTempl< false > PorousFlowFullySaturatedMassTimeDerivative
const bool _var_is_porflow_var
Whether the kernel variable is a PorousFlow variable.
PorousFlowFullySaturatedMassTimeDerivativeTempl< true > ADPorousFlowFullySaturatedMassTimeDerivative