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