21 params.
addParam<
bool>(
"strain_at_nearest_qp",
23 "When calculating nodal porosity that depends on strain, use the strain at "
24 "the nearest quadpoint. This adds a small extra computational burden, and "
25 "is not necessary for simulations involving only linear lagrange elements. "
26 " If you set this to true, you will also want to set the same parameter to "
27 "true for related Kernels and Materials");
29 "PorousFlowDictator",
"The UserObject that holds the list of PorousFlow variable names.");
31 "Plastic heat energy density source = (1 - porosity) * coeff * stress * plastic_strain_rate");
38 _strain_at_nearest_qp(getParam<bool>(
"strain_at_nearest_qp")),
39 _nearest_qp(_strain_at_nearest_qp
40 ? &getMaterialProperty<unsigned
int>(
"PorousFlow_nearestqp_nodal")
42 _porosity(getMaterialProperty<Real>(
"PorousFlow_porosity_nodal")),
43 _dporosity_dvar(getMaterialProperty<
std::vector<Real>>(
"dPorousFlow_porosity_nodal_dvar")),
45 getMaterialProperty<
std::vector<RealGradient>>(
"dPorousFlow_porosity_nodal_dgradvar"))
74 Real jac = (1.0 -
_porosity[
_i]) * jac_no_porosity -
registerMooseObject("PorousFlowApp", PorousFlowPlasticHeatEnergy)
void ErrorVector unsigned int
const VariablePhiGradient & _grad_phi
unsigned int number() const
Provides a heat source from plastic deformation: coeff * stress * plastic_strain_rate.
virtual Real computeQpOffDiagJacobian(unsigned int jvar) override
virtual Real computeQpResidual() override
static InputParameters validParams()
This holds maps between the nonlinear variables used in a PorousFlow simulation and the variable numb...
unsigned int porousFlowVariableNum(unsigned int moose_var_num) const
The PorousFlow variable number.
bool notPorousFlowVariable(unsigned int moose_var_num) const
Returns true if moose_var_num is not a porous flow variabe.
Provides a heat source (J/m^3/s) from plastic deformation: (1 - porosity) * coeff * stress * plastic_...
virtual Real computeQpOffDiagJacobian(unsigned int jvar) override
const bool _strain_at_nearest_qp
Whether the porosity uses the volumetric strain at the closest quadpoint.
const PorousFlowDictator & _dictator
PorousFlowDictator UserObject.
static InputParameters validParams()
const MaterialProperty< Real > & _porosity
Porosity at the nodes, but it can depend on grad(variables) which are actually evaluated at the qps.
virtual Real computeQpResidual() override
PorousFlowPlasticHeatEnergy(const InputParameters ¶meters)
const MaterialProperty< std::vector< RealGradient > > & _dporosity_dgradvar
d(porosity)/d(grad PorousFlow variable) - remember these derivatives will be wrt grad(vars) at qps
virtual Real computeQpJacobian() override
const MaterialProperty< std::vector< Real > > & _dporosity_dvar
d(porosity)/d(PorousFlow variable) - these derivatives will be wrt variables at the nodes