138 std::shared_ptr<XFEMInterface> xfem_interface =
_problem->getXFEM();
139 if (xfem_interface ==
nullptr)
144 std::shared_ptr<XFEM> new_xfem(
new XFEM(
_pars));
146 xfem_interface =
_problem->getXFEM();
149 std::shared_ptr<XFEM> xfem = MooseSharedNamespace::dynamic_pointer_cast<
XFEM>(xfem_interface);
151 mooseError(
"dynamic cast of xfem object failed");
158 xfem->setDebugOutputLevel(getParam<unsigned int>(
"debug_output_level"));
164 var_params.set<
MooseEnum>(
"order") =
"FIRST";
167 _problem->addVariable(
"MooseVariable", enrich_disp, var_params);
175 params.
set<
unsigned int>(
"component") = i / 4;
176 params.
set<
unsigned int>(
"enrichment_component") = i % 4;
202 _problem->addAuxVariable(
"MooseVariableConstMonomial",
"xfem_cut_origin_x", var_params);
203 _problem->addAuxVariable(
"MooseVariableConstMonomial",
"xfem_cut_origin_y", var_params);
204 _problem->addAuxVariable(
"MooseVariableConstMonomial",
"xfem_cut_origin_z", var_params);
205 _problem->addAuxVariable(
"MooseVariableConstMonomial",
"xfem_cut_normal_x", var_params);
206 _problem->addAuxVariable(
"MooseVariableConstMonomial",
"xfem_cut_normal_y", var_params);
207 _problem->addAuxVariable(
"MooseVariableConstMonomial",
"xfem_cut_normal_z", var_params);
208 _problem->addAuxVariable(
"MooseVariableConstMonomial",
"xfem_cut2_origin_x", var_params);
209 _problem->addAuxVariable(
"MooseVariableConstMonomial",
"xfem_cut2_origin_y", var_params);
210 _problem->addAuxVariable(
"MooseVariableConstMonomial",
"xfem_cut2_origin_z", var_params);
211 _problem->addAuxVariable(
"MooseVariableConstMonomial",
"xfem_cut2_normal_x", var_params);
212 _problem->addAuxVariable(
"MooseVariableConstMonomial",
"xfem_cut2_normal_y", var_params);
213 _problem->addAuxVariable(
"MooseVariableConstMonomial",
"xfem_cut2_normal_z", var_params);
214 _problem->addAuxVariable(
"MooseVariableConstMonomial",
"xfem_volfrac", var_params);
220 params.
set<AuxVariableName>(
"variable") =
"xfem_volfrac";
221 _problem->addAuxKernel(
"XFEMVolFracAux",
"xfem_volfrac", params);
227 params.
set<
unsigned int>(
"plane_id") = 0;
229 params.
set<AuxVariableName>(
"variable") =
"xfem_cut_origin_x";
231 _problem->addAuxKernel(
"XFEMCutPlaneAux",
"xfem_cut_origin_x", params);
233 params.
set<AuxVariableName>(
"variable") =
"xfem_cut_origin_y";
235 _problem->addAuxKernel(
"XFEMCutPlaneAux",
"xfem_cut_origin_y", params);
237 params.
set<AuxVariableName>(
"variable") =
"xfem_cut_origin_z";
239 _problem->addAuxKernel(
"XFEMCutPlaneAux",
"xfem_cut_origin_z", params);
241 params.
set<AuxVariableName>(
"variable") =
"xfem_cut_normal_x";
243 _problem->addAuxKernel(
"XFEMCutPlaneAux",
"xfem_cut_normal_x", params);
245 params.
set<AuxVariableName>(
"variable") =
"xfem_cut_normal_y";
247 _problem->addAuxKernel(
"XFEMCutPlaneAux",
"xfem_cut_normal_y", params);
249 params.
set<AuxVariableName>(
"variable") =
"xfem_cut_normal_z";
251 _problem->addAuxKernel(
"XFEMCutPlaneAux",
"xfem_cut_normal_z", params);
254 params.
set<
unsigned int>(
"plane_id") = 1;
256 params.
set<AuxVariableName>(
"variable") =
"xfem_cut2_origin_x";
258 _problem->addAuxKernel(
"XFEMCutPlaneAux",
"xfem_cut2_origin_x", params);
260 params.
set<AuxVariableName>(
"variable") =
"xfem_cut2_origin_y";
262 _problem->addAuxKernel(
"XFEMCutPlaneAux",
"xfem_cut2_origin_y", params);
264 params.
set<AuxVariableName>(
"variable") =
"xfem_cut2_origin_z";
266 _problem->addAuxKernel(
"XFEMCutPlaneAux",
"xfem_cut2_origin_z", params);
268 params.
set<AuxVariableName>(
"variable") =
"xfem_cut2_normal_x";
270 _problem->addAuxKernel(
"XFEMCutPlaneAux",
"xfem_cut2_normal_x", params);
272 params.
set<AuxVariableName>(
"variable") =
"xfem_cut2_normal_y";
274 _problem->addAuxKernel(
"XFEMCutPlaneAux",
"xfem_cut2_normal_y", params);
276 params.
set<AuxVariableName>(
"variable") =
"xfem_cut2_normal_z";
278 _problem->addAuxKernel(
"XFEMCutPlaneAux",
"xfem_cut2_normal_z", params);
UserObjectName _crack_front_definition
bool _xfem_use_crack_growth_increment
InputParameterWarehouse & getInputParameterWarehouse()
InputParameters getValidParams(const std::string &name) const
MooseObjectName uniqueActionName() const
bool _use_crack_tip_enrichment
std::vector< VariableName > _enrich_displacements
std::vector< VariableName > _displacements
const std::string & _current_task
std::vector< BoundaryName > _cut_off_bc
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
Real _xfem_crack_growth_increment
void mooseError(Args &&... args) const
const InputParameters & _pars
std::shared_ptr< FEProblemBase > & _problem