15#include "metaphysicl/raw_type.h"
22 params.
addClassDescription(
"Compute a material property for bi-materials (consisting of two "
23 "different materials) defined by a level set function.");
25 "level_set_var",
"The name of level set variable used to represent the interface");
27 "Base name for the material in level set positive region.");
29 "Base name for the material in level set negative region.");
30 params.
addParam<std::string>(
"base_name",
31 "Base name for the computed material property (optional)");
32 params.
addRequiredParam<std::string>(
"prop_name",
"Name for the computed material property.");
39 _base_name(isParamValid(
"base_name") ? getParam<
std::string>(
"base_name") +
"_" :
""),
40 _prop_name(getParam<
std::string>(
"prop_name")),
41 _level_set_var_number(_subproblem
43 parameters.get<VariableName>(
"level_set_var"),
44 Moose::VarKindType::VAR_ANY,
45 Moose::VarFieldType::VAR_FIELD_STANDARD)
47 _system(_subproblem.getSystem(getParam<VariableName>(
"level_set_var"))),
48 _solution(*_system.current_local_solution.get()),
49 _use_positive_property(false)
53 if (fe_problem ==
nullptr)
54 mooseError(
"Problem casting _subproblem to FEProblemBase in XFEMMaterialStateMarkerBase");
56 _xfem = MooseSharedNamespace::dynamic_pointer_cast<XFEM>(fe_problem->
getXFEM());
69 const Node * node = _current_elem->node_ptr(0);
71 dof_id_type ls_dof_id = node->dof_number(_system.number(), _level_set_var_number, 0);
72 Number ls_node_value = _solution(ls_dof_id);
74 _use_positive_property =
false;
76 if (_xfem->isPointInsidePhysicalDomain(_current_elem, *node))
78 if (ls_node_value > 0.0)
79 _use_positive_property =
true;
83 if (ls_node_value < 0.0)
84 _use_positive_property =
true;
94 if (_use_positive_property)
95 assignQpPropertiesForLevelSetPositive();
97 assignQpPropertiesForLevelSetNegative();
std::shared_ptr< XFEMInterface > getXFEM()
Base class for switching between materials in a bi-material system where the interface is defined by ...
std::shared_ptr< XFEM > _xfem
shared pointer to XFEM
virtual void computeQpProperties() override
LevelSetBiMaterialBaseTempl(const InputParameters ¶meters)
virtual void initQpStatefulProperties() override
virtual void computeProperties() override
static InputParameters validParams()
virtual void computeProperties() override
static InputParameters validParams()
void mooseError(Args &&... args) const