11 #include "AuxiliarySystem.h"
12 #include "MooseVariable.h"
19 InputParameters params = validParams<Material>();
20 params.addClassDescription(
"Compute a material property for bi-materials (consisting of two "
21 "different materials) defined by a level set function.");
22 params.addRequiredParam<VariableName>(
23 "level_set_var",
"The name of level set variable used to represent the interface");
24 params.addRequiredParam<std::string>(
"levelset_positive_base",
25 "Base name for the material in level set positive region.");
26 params.addRequiredParam<std::string>(
"levelset_negative_base",
27 "Base name for the material in level set negative region.");
28 params.addParam<std::string>(
"base_name",
29 "Base name for the computed material property (optional)");
30 params.addRequiredParam<std::string>(
"prop_name",
"Name for the computed material property.");
35 : Material(parameters),
36 _base_name(isParamValid(
"base_name") ? getParam<std::string>(
"base_name") +
"_" :
""),
37 _prop_name(getParam<std::string>(
"prop_name")),
38 _level_set_var_number(_subproblem
40 parameters.get<VariableName>(
"level_set_var"),
41 Moose::VarKindType::VAR_ANY,
42 Moose::VarFieldType::VAR_FIELD_STANDARD)
44 _system(_subproblem.getSystem(getParam<VariableName>(
"level_set_var"))),
45 _solution(_system.current_local_solution.get()),
46 _use_positive_property(false)
48 FEProblemBase * fe_problem = dynamic_cast<FEProblemBase *>(&_subproblem);
50 if (fe_problem == NULL)
51 mooseError(
"Problem casting _subproblem to FEProblemBase in XFEMMaterialStateMarkerBase");
53 _xfem = MooseSharedNamespace::dynamic_pointer_cast<XFEM>(fe_problem->getXFEM());
59 const Node * node = _current_elem->node_ptr(0);
62 Number ls_node_value = (*_solution)(ls_dof_id);
66 if (
_xfem->isPointInsidePhysicalDomain(_current_elem, *node))
68 if (ls_node_value > 0.0)
73 if (ls_node_value < 0.0)
77 Material::computeProperties();