14 #define QUOTE(macro) stringifyName(macro) 24 params.addClassDescription(
"Coupling UserObject to use Abaqus UEL plugins in MOOSE");
33 params.suppressParameter<
bool>(
"force_preic");
36 params.addParam<std::vector<NonlinearVariableName>>(
"variables",
"Nonlinear coupled variables");
38 params.addParam<std::vector<AuxVariableName>>(
41 "Auxiliary field variables (or 'predifined field variables') passed to the UEL plugin. Some " 42 "plugins may assume that the first field is temperature when there are multiple external " 46 params.addRequiredParam<FileName>(
"plugin",
"UEL plugin file");
48 params.addRequiredParam<std::vector<Real>>(
49 "constant_properties",
"Constant mechanical and thermal material properties (PROPS)");
50 params.addRequiredParam<
unsigned int>(
"num_state_vars",
51 "The number of state variables this UMAT is going to use");
53 params.addParam<
int>(
"jtype", 0,
"Abaqus element type integer");
62 _plugin(getParam<FileName>(
"plugin")),
63 _library(_plugin +
std::string(
"-") + QUOTE(METHOD) +
".plugin"),
64 _uel(_library.getFunction<uel_t>(
"uel_")),
67 _dim(_moose_mesh.dimension()),
68 _variable_names(getParam<
std::vector<NonlinearVariableName>>(
"variables")),
69 _aux_variable_names(getParam<
std::vector<AuxVariableName>>(
"external_fields")),
70 _sub_ids(blockRestricted() ? blockIDs() : _moose_mesh.meshSubdomains()),
71 _props(getParam<
std::vector<
Real>>(
"constant_properties")),
72 _nprops(_props.size()),
73 _nstatev(getParam<unsigned
int>(
"num_state_vars")),
74 _statev_index_current(0),
76 _jtype(getParam<
int>(
"jtype"))
82 0, variable_name, Moose::VarKindType::VAR_SOLVER, Moose::VarFieldType::VAR_FIELD_STANDARD);
87 paramError(
"variables",
"must be defined on all blocks the UEL is operating on.");
95 Moose::VarKindType::VAR_AUXILIARY,
96 Moose::VarFieldType::VAR_FIELD_STANDARD);
102 paramError(
"aux_variables",
"must be defined on all blocks the UEL is operating on.");
145 std::make_unique<ConstElemRange>(
_mesh.active_local_subdomain_set_elements_begin(
_sub_ids),
std::array< std::map< dof_id_type, std::vector< Real > >, 2 > _statev
T & getMesh(MooseMesh &mesh)
function to cast mesh
static InputParameters validParams()
std::vector< NonlinearVariableName > _variable_names
coupled variables to provide the DOF values
const ExecFlagType & getCurrentExecuteOnFlag() const
virtual void initialSetup() override
int _nstatev
stateful data
virtual void execute() override
const libMesh::MeshBase & _mesh
The libMesh mesh that this object acts on.
void addAvailableFlags(const ExecFlagType &flag, Args... flags)
const ExecFlagType EXEC_TIMESTEP_END
virtual const std::set< SubdomainID > & blockIDs() const
virtual void initialize() override final
static InputParameters validParams()
virtual void meshChanged() override
std::size_t _statev_index_current
std::unique_ptr< ConstElemRange > _elem_range
All the active and elements local to this process that exist on this object's subdomains.
std::vector< AuxVariableName > _aux_variable_names
Auxiliary variable names.
const std::set< SubdomainID > _sub_ids
The subdomain ids this object operates on.
void paramError(const std::string ¶m, Args... args) const
AbaqusUserElement(const InputParameters ¶ms)
virtual const MooseVariableFieldBase & getVariable(const THREAD_ID tid, const std::string &var_name, Moose::VarKindType expected_var_type=Moose::VarKindType::VAR_ANY, Moose::VarFieldType expected_var_field_type=Moose::VarFieldType::VAR_FIELD_ANY) const=0
This user-object is a testbed for implementing a custom element.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
registerMooseObject("SolidMechanicsApp", AbaqusUserElement)
virtual void addVariableToZeroOnResidual(std::string var_name)
FEProblemBase & _fe_problem
void setupElemRange()
setup the range of elements this object operates on
static InputParameters validParams()
const ExecFlagType EXEC_PRE_KERNELS
std::size_t _statev_index_old
bool hasBlocks(const SubdomainName &name) const
static InputParameters validParams()
void ErrorVector unsigned int
std::vector< const MooseVariableFieldBase * > _variables
pointers to the variable objects
std::vector< const MooseVariableFieldBase * > _aux_variables
pointers to the auxiliary variable objects