www.mooseframework.org
PorousFlowVariableBase.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 
13 #include "PorousFlowMaterial.h"
14 
20 template <bool is_ad>
21 class PorousFlowVariableBaseTempl : public DerivativeMaterialInterface<PorousFlowMaterial>
22 {
23 public:
25 
26  PorousFlowVariableBaseTempl(const InputParameters & parameters);
27 
28 protected:
29  virtual void initQpStatefulProperties() override;
30  virtual void computeQpProperties() override;
31 
33  const unsigned int _num_phases;
34 
36  const unsigned int _num_components;
37 
39  const unsigned int _num_pf_vars;
40 
43 
46 
49 
52 
55 
58 
61 
64 
67 
70 };
71 
72 #define usingPorousFlowVariableBaseMembers \
73  using PorousFlowVariableBaseTempl<is_ad>::_dictator; \
74  using PorousFlowVariableBaseTempl<is_ad>::_porepressure; \
75  using PorousFlowVariableBaseTempl<is_ad>::_saturation; \
76  using PorousFlowVariableBaseTempl<is_ad>::_dporepressure_dvar; \
77  using PorousFlowVariableBaseTempl<is_ad>::_dsaturation_dvar; \
78  using PorousFlowVariableBaseTempl<is_ad>::_qp; \
79  using PorousFlowVariableBaseTempl<is_ad>::_num_phases; \
80  using PorousFlowVariableBaseTempl<is_ad>::_gradp_qp; \
81  using PorousFlowVariableBaseTempl<is_ad>::_grads_qp; \
82  using PorousFlowVariableBaseTempl<is_ad>::_dgradp_qp_dgradv; \
83  using PorousFlowVariableBaseTempl<is_ad>::_dgrads_qp_dgradv; \
84  using PorousFlowVariableBaseTempl<is_ad>::_dgradp_qp_dv; \
85  using PorousFlowVariableBaseTempl<is_ad>::_dgrads_qp_dv; \
86  using PorousFlowVariableBaseTempl<is_ad>::_nodal_material; \
87  using Coupleable::coupled; \
88  using Coupleable::coupledGradient
89 
virtual void computeQpProperties() override
GenericMaterialProperty< std::vector< RealGradient >, is_ad > *const _grads_qp
Grad(s) at the quadpoints.
PorousFlowVariableBaseTempl< true > ADPorousFlowVariableBase
MaterialProperty< std::vector< std::vector< Real > > > *const _dgradp_qp_dgradv
d(grad porepressure)/d(grad PorousFlow variable) at the quadpoints
GenericMaterialProperty< std::vector< Real >, is_ad > & _porepressure
Computed nodal or quadpoint values of porepressure of the phases.
static InputParameters validParams()
MaterialProperty< std::vector< std::vector< RealGradient > > > *const _dgrads_qp_dv
d(grad saturation)/d(PorousFlow variable) at the quadpoints
MaterialProperty< std::vector< std::vector< RealGradient > > > *const _dgradp_qp_dv
d(grad porepressure)/d(PorousFlow variable) at the quadpoints
Base class for thermophysical variable materials, which assemble materials for primary variables such...
MaterialProperty< std::vector< std::vector< Real > > > *const _dgrads_qp_dgradv
d(grad saturation)/d(grad PorousFlow variable) at the quadpoints
GenericMaterialProperty< std::vector< RealGradient >, is_ad > *const _gradp_qp
Grad(p) at the quadpoints.
typename GenericMaterialPropertyStruct< T, is_ad >::type GenericMaterialProperty
const unsigned int _num_components
Number of components.
const unsigned int _num_pf_vars
Number of PorousFlow variables.
virtual void initQpStatefulProperties() override
PorousFlowVariableBaseTempl< false > PorousFlowVariableBase
const unsigned int _num_phases
Number of phases.
PorousFlowVariableBaseTempl(const InputParameters &parameters)
GenericMaterialProperty< std::vector< Real >, is_ad > & _saturation
Computed nodal or qp saturation of the phases.
MaterialProperty< std::vector< std::vector< Real > > > *const _dporepressure_dvar
d(porepressure)/d(PorousFlow variable)
MaterialProperty< std::vector< std::vector< Real > > > *const _dsaturation_dvar
d(saturation)/d(PorousFlow variable)