16 #include <unordered_map> 29 const std::vector<dof_id_type> & elem_ids,
30 std::size_t component)
const = 0;
33 template <
typename T,
bool is_ad>
52 const std::vector<dof_id_type> & elem_ids,
53 std::size_t component)
const override;
58 virtual void execute()
override;
78 typedef std::pair<RealEigenMatrix, std::vector<RealEigenVector>>
ElementData;
93 const unsigned int _q;
99 std::unordered_map<dof_id_type, ElementData>
_abs;
virtual void initialize() override
Called before execute() is ever called so that data can be cleared.
ProjectedStatefulMaterialNodalPatchRecoveryTempl< Real, true > ADProjectedStatefulMaterialNodalPatchRecoveryReal
ProjectedStatefulMaterialNodalPatchRecoveryBase(const InputParameters ¶meters)
static InputParameters validParams()
ProjectedStatefulMaterialNodalPatchRecoveryTempl< Real, false > ProjectedStatefulMaterialNodalPatchRecoveryReal
const std::vector< std::vector< unsigned int > > _multi_index
The multi-index table.
const InputParameters & parameters() const
Get the parameters of the object.
const unsigned int _q
Number of basis functions.
static InputParameters validParams()
unsigned int _qp
current quadrature point
virtual Real nodalPatchRecovery(const Point &p, const std::vector< dof_id_type > &elem_ids, std::size_t component) const override
Solve the least-squares problem.
RealEigenVector evaluateBasisFunctions(const Point &q_point) const
Compute the P vector at a given point i.e.
virtual void execute() override
Execute method.
const GenericMaterialProperty< T, is_ad > & _prop
stored property
ProjectedStatefulMaterialNodalPatchRecoveryTempl< RankFourTensor, true > ADProjectedStatefulMaterialNodalPatchRecoveryRankFourTensor
virtual void threadJoin(const UserObject &) override
Must override.
const SubdomainID & _current_subdomain_id
Current subdomain.
ProjectedStatefulMaterialNodalPatchRecoveryTempl< RankTwoTensor, true > ADProjectedStatefulMaterialNodalPatchRecoveryRankTwoTensor
virtual void initialSetup() override
Gets called at the beginning of the simulation before this object is asked to do its job...
typename GenericMaterialPropertyStruct< T, is_ad >::type GenericMaterialProperty
std::size_t _n_components
number of scalar components in the recovered type
ProjectedStatefulMaterialNodalPatchRecoveryTempl< RankFourTensor, false > ProjectedStatefulMaterialNodalPatchRecoveryRankFourTensor
std::pair< RealEigenMatrix, std::vector< RealEigenVector > > ElementData
data type stored for each element
ProjectedStatefulMaterialNodalPatchRecoveryTempl< RealVectorValue, false > ProjectedStatefulMaterialNodalPatchRecoveryRealVectorValue
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
virtual void finalize() override
Finalize.
std::unordered_map< SubdomainID, std::vector< MaterialBase * > > _required_materials
list of required materials that need to be explicitly initialized at step zero
virtual Real nodalPatchRecovery(const Point &p, const std::vector< dof_id_type > &elem_ids, std::size_t component) const =0
Eigen::Matrix< Real, Eigen::Dynamic, 1 > RealEigenVector
std::unordered_map< dof_id_type, ElementData > _abs
The element-level A matrix and the element-level b vectors for each component.
ProjectedStatefulMaterialNodalPatchRecoveryTempl< RealVectorValue, true > ADProjectedStatefulMaterialNodalPatchRecoveryRealVectorValue
const unsigned int _patch_polynomial_order
The polynomial order, default is variable order.
ProjectedStatefulMaterialNodalPatchRecoveryTempl< RankTwoTensor, false > ProjectedStatefulMaterialNodalPatchRecoveryRankTwoTensor
Base class for user-specific data.
ProjectedStatefulMaterialNodalPatchRecoveryTempl(const InputParameters ¶meters)