11 #include "libmesh/quadrature.h"
18 InputParameters params = validParams<Material>();
19 params.addRequiredParam<UserObjectName>(
20 "PorousFlowDictator",
"The UserObject that holds the list of PorousFlow variable names");
21 params.addParam<
bool>(
22 "at_nodes",
false,
"Evaluate Material properties at nodes instead of quadpoints");
23 params.addPrivateParam<std::string>(
"pf_material_type",
"pf_material");
24 params.addClassDescription(
"This generalises MOOSE's Material class to allow for Materials that "
25 "hold information related to the nodes in the finite element");
30 : Material(parameters),
31 _nodal_material(getParam<bool>(
"at_nodes")),
33 _pressure_variable_name(
"pressure_variable"),
34 _saturation_variable_name(
"saturation_variable"),
35 _temperature_variable_name(
"temperature_variable"),
36 _mass_fraction_variable_name(
"mass_fraction_variable")
44 _material_data->onlyResizeIfSmaller(
true);
56 Material::initStatefulProperties(_current_elem->n_nodes());
59 Material::initStatefulProperties(n_points);
71 for (_qp = 0; _qp < _current_elem->n_nodes(); ++_qp)
72 computeQpProperties();
75 Material::computeProperties();
94 _material_data->resize(std::max(_current_elem->n_nodes(), _qrule->n_points()));
100 unsigned nearest_qp = 0;
101 Real smallest_dist = std::numeric_limits<Real>::max();
102 for (
unsigned qp = 1; qp < _qrule->n_points(); ++qp)
104 const Real this_dist = (_current_elem->point(nodenum) - _q_point[qp]).norm();
105 if (this_dist < smallest_dist)
108 smallest_dist = this_dist;