Go to the documentation of this file.
12 #include "MooseMesh.h"
13 #include "MooseVariable.h"
22 params.addParam<
bool>(
"strain_at_nearest_qp",
24 "When calculating nodal porosity that depends on strain, use the strain at "
25 "the nearest quadpoint. This adds a small extra computational burden, and "
26 "is not necessary for simulations involving only linear lagrange elements. "
27 " If you set this to true, you will also want to set the same parameter to "
28 "true for related Kernels and Materials");
29 params.addRequiredParam<UserObjectName>(
30 "PorousFlowDictator",
"The UserObject that holds the list of PorousFlow variable names.");
31 params.addClassDescription(
32 "Plastic heat energy density source = (1 - porosity) * coeff * stress * plastic_strain_rate");
39 _strain_at_nearest_qp(getParam<bool>(
"strain_at_nearest_qp")),
40 _nearest_qp(_strain_at_nearest_qp
41 ? &getMaterialProperty<unsigned int>(
"PorousFlow_nearestqp_nodal")
43 _porosity(getMaterialProperty<Real>(
"PorousFlow_porosity_nodal")),
44 _dporosity_dvar(getMaterialProperty<std::vector<Real>>(
"dPorousFlow_porosity_nodal_dvar")),
46 getMaterialProperty<std::vector<
RealGradient>>(
"dPorousFlow_porosity_nodal_dgradvar"))
75 Real jac = (1.0 -
_porosity[_i]) * jac_no_porosity -
virtual Real computeQpJacobian() override
virtual Real computeQpOffDiagJacobian(unsigned int jvar) override
Provides a heat source from plastic deformation: coeff * stress * plastic_strain_rate.
VectorValue< Real > RealGradient
bool notPorousFlowVariable(unsigned int moose_var_num) const
Returns true if moose_var_num is not a porous flow variabe.
registerMooseObject("PorousFlowApp", PorousFlowPlasticHeatEnergy)
const MaterialProperty< std::vector< Real > > & _dporosity_dvar
d(porosity)/d(PorousFlow variable) - these derivatives will be wrt variables at the nodes
InputParameters validParams< PorousFlowPlasticHeatEnergy >()
unsigned int porousFlowVariableNum(unsigned int moose_var_num) const
The PorousFlow variable number.
virtual Real computeQpResidual() override
This holds maps between the nonlinear variables used in a PorousFlow simulation and the variable numb...
virtual Real computeQpOffDiagJacobian(unsigned int jvar) override
virtual Real computeQpResidual() override
const bool _strain_at_nearest_qp
Whether the porosity uses the volumetric strain at the closest quadpoint.
const PorousFlowDictator & _dictator
PorousFlowDictator UserObject.
InputParameters validParams< PlasticHeatEnergy >()
Provides a heat source (J/m^3/s) from plastic deformation: (1 - porosity) * coeff * stress * plastic_...
const MaterialProperty< Real > & _porosity
Porosity at the nodes, but it can depend on grad(variables) which are actually evaluated at the qps.
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