16 #include <unordered_map> 20 #include "libmesh/fe_type.h" 21 #include "libmesh/id_types.h" 29 #include "neml2/tensors/Tensor.h" 52 const neml2::Tensor &
getValue(
const std::string & var_name);
63 const neml2::Tensor &
getGradient(
const std::string & var_name);
74 const neml2::Tensor &
getPhi(
const std::string & var_name);
85 const neml2::Tensor &
getPhiGradient(
const std::string & var_name);
96 const neml2::Tensor &
getDofMap(
const std::string & var_name);
99 const std::vector<dof_id_type> &
getGlobalDofMap(
const std::string & var_name);
138 std::unordered_map<std::string, neml2::Tensor>
_vars;
144 std::unordered_map<std::string, const MooseVariableFE<Real> *>
_moose_vars;
148 std::unordered_map<FEType, int64_t>
_ndofe;
149 std::unordered_map<FEType, const VariablePhiValue *>
_phis;
150 std::unordered_map<FEType, const VariablePhiGradient *>
_grad_phis;
This user object serves as the "interface" for interpolating MOOSE variable values and gradients from...
const neml2::Tensor & getPhiGradient(const std::string &var_name)
Get the shape function gradient associated with a MOOSE variable.
const std::vector< dof_id_type > & getGlobalDofMap(const std::string &var_name)
Similar to getDofMap, but returns the global dof map (as a flattened vector of dof_id_type) ...
virtual void updateInterpolations()
const neml2::Tensor & getGradient(const std::string &var_name)
Get the variable gradient of a MOOSE nonlinear variable converted to a NEML2 tensor.
std::unordered_map< FEType, const VariablePhiGradient * > _grad_phis
void initialize() override
Called before execute() is ever called so that data can be cleared.
bool _fem_context_up_to_date
Whether the current FEM context is up to date.
bool _interp_up_to_date
Whether the current interpolations are up to date.
const NEML2Assembly & _neml2_assembly
Assembly.
const neml2::Tensor & getValue(const std::string &var_name)
Get the variable value of a MOOSE nonlinear variable converted to a NEML2 tensor. ...
const InputParameters & parameters() const
Get the parameters of the object.
std::unordered_map< std::string, neml2::Tensor > _vars
coupled variables (by value) requested by other objects
virtual void updateDofMap()
NEML2FEInterpolation(const InputParameters ¶meters)
const PetscVector< Real > * _petsc_solution
PETSc solution vector.
void initialSetup() override
Gets called at the beginning of the simulation before this object is asked to do its job...
void threadJoin(const UserObject &) override
Must override.
virtual void syncWithMainThread()
int64_t _local_ndof
Number of local dofs (including ghost dofs)
virtual void updateFEMContext()
std::unordered_map< std::string, neml2::Tensor > _neml2_dof_map
std::unordered_map< std::string, neml2::Tensor > _grad_vars
coupled variables (by gradient) requested by other objects
void invalidateInterpolations()
Invalidate the cached interpolations.
void execute() override
Execute method.
std::unordered_map< FEType, neml2::Tensor > _neml2_phi
static InputParameters validParams()
const neml2::Tensor & getPhi(const std::string &var_name)
Get the shape function associated with a MOOSE variable.
std::unordered_map< FEType, int64_t > _ndofe
cached information on the requested function spaces
bool contextUpToDate() const
Whether the current FEM context is up to date.
void finalize() override
Finalize.
This user object caches assembly information from MOOSE.
std::unordered_map< FEType, std::vector< Real > > _moose_phi
std::unordered_map< FEType, neml2::Tensor > _neml2_grad_phi
const neml2::Tensor & getDofMap(const std::string &var_name)
Get the local dof map associated with a MOOSE variable.
std::unordered_map< FEType, std::vector< Real > > _moose_grad_phi
const MooseVariableFE< Real > * getMOOSEVariable(const std::string &var_name) const
Helper to get the MOOSE variable and check for common restrictions.
std::unordered_map< FEType, const VariablePhiValue * > _phis
void meshChanged() override
Called on this object when the mesh changes.
std::unordered_map< std::string, std::vector< dof_id_type > > _moose_dof_map_global
int64_t local_ndof() const
std::unordered_map< std::string, const MooseVariableFE< Real > * > _moose_vars
moose variables that have been coupled
virtual void updateGradPhi()
void invalidateFEMContext()
Invalidate the cached FEM context such as dof map, shape functions, etc.
Base class for user-specific data.
std::vector< dof_id_type > _dof_indices
Helper vector to store local dof indices.
std::unordered_map< std::string, std::vector< int64_t > > _moose_dof_map