17 params.
addPrivateParam<std::string>(
"pf_material_type",
"pressure_saturation");
18 params.
addClassDescription(
"Base class for thermophysical variable materials. Provides pressure " 19 "and saturation material properties for all phases as required");
27 _num_phases(_dictator.numPhases()),
28 _num_components(_dictator.numComponents()),
29 _num_pf_vars(_dictator.numVariables()),
33 ? declareGenericProperty<
std::vector<
Real>, is_ad>(
"PorousFlow_porepressure_nodal")
34 : declareGenericProperty<
std::vector<
Real>, is_ad>(
"PorousFlow_porepressure_qp")),
35 _dporepressure_dvar(is_ad ? nullptr
36 : _nodal_material ? &declareProperty<
std::vector<
std::vector<
Real>>>(
37 "dPorousFlow_porepressure_nodal_dvar")
38 : &declareProperty<
std::vector<
std::vector<
Real>>>(
39 "dPorousFlow_porepressure_qp_dvar")),
40 _gradp_qp(_nodal_material ? nullptr
42 "PorousFlow_grad_porepressure_qp")),
43 _dgradp_qp_dgradv((_nodal_material || is_ad)
45 : &declareProperty<
std::vector<
std::vector<
Real>>>(
46 "dPorousFlow_grad_porepressure_qp_dgradvar")),
47 _dgradp_qp_dv((_nodal_material || is_ad)
50 "dPorousFlow_grad_porepressure_qp_dvar")),
54 ? declareGenericProperty<
std::vector<
Real>, is_ad>(
"PorousFlow_saturation_nodal")
55 : declareGenericProperty<
std::vector<
Real>, is_ad>(
"PorousFlow_saturation_qp")),
59 ? &declareProperty<
std::vector<
std::vector<
Real>>>(
"dPorousFlow_saturation_nodal_dvar")
60 : &declareProperty<
std::vector<
std::vector<
Real>>>(
"dPorousFlow_saturation_qp_dvar")),
61 _grads_qp(_nodal_material ? nullptr
63 "PorousFlow_grad_saturation_qp")),
64 _dgrads_qp_dgradv((_nodal_material || is_ad) ? nullptr
65 : &declareProperty<
std::vector<
std::vector<
Real>>>(
66 "dPorousFlow_grad_saturation_qp_dgradvar")),
67 _dgrads_qp_dv((_nodal_material || is_ad)
70 "dPorousFlow_grad_saturation_qp_dvar"))
78 _porepressure[_qp].resize(_num_phases);
79 _saturation[_qp].resize(_num_phases);
88 _porepressure[_qp].resize(_num_phases);
89 _saturation[_qp].resize(_num_phases);
93 (*_dporepressure_dvar)[_qp].resize(_num_phases);
94 (*_dsaturation_dvar)[_qp].resize(_num_phases);
99 (*_gradp_qp)[_qp].resize(_num_phases);
100 (*_grads_qp)[_qp].resize(_num_phases);
104 (*_dgradp_qp_dgradv)[_qp].resize(_num_phases);
105 (*_dgradp_qp_dv)[_qp].resize(_num_phases);
107 (*_dgrads_qp_dgradv)[_qp].resize(_num_phases);
108 (*_dgrads_qp_dv)[_qp].resize(_num_phases);
114 for (
unsigned phase = 0; phase < _num_phases; ++phase)
117 (*_dporepressure_dvar)[_qp][phase].assign(_num_pf_vars, 0.0);
118 (*_dsaturation_dvar)[_qp][phase].assign(_num_pf_vars, 0.0);
119 if (!_nodal_material)
121 (*_dgradp_qp_dgradv)[_qp][phase].assign(_num_pf_vars, 0.0);
122 (*_dgradp_qp_dv)[_qp][phase].assign(_num_pf_vars,
RealGradient());
123 (*_dgrads_qp_dgradv)[_qp][phase].assign(_num_pf_vars, 0.0);
124 (*_dgrads_qp_dv)[_qp][phase].assign(_num_pf_vars,
RealGradient());
virtual void computeQpProperties() override
PorousFlowMaterial is the base class for all PorousFlow Materials It allows users to specify that the...
static InputParameters validParams()
Base class for thermophysical variable materials, which assemble materials for primary variables such...
virtual void initQpStatefulProperties() override
static InputParameters validParams()
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
PorousFlowVariableBaseTempl(const InputParameters ¶meters)