16 InputParameters params = validParams<GeneralUserObject>();
17 params += validParams<BlockRestrictable>();
22 : GeneralUserObject(parameters),
23 BlockRestrictable(this),
24 Coupleable(this, false),
25 MooseVariableDependencyInterface(),
26 _mesh(_subproblem.mesh()),
27 _current_elem(_assembly.elem()),
28 _current_elem_volume(_assembly.elemVolume()),
29 _q_point(_assembly.qPoints()),
30 _qrule(_assembly.qRule()),
31 _JxW(_assembly.JxW()),
32 _coord(_assembly.coordTransformation()),
33 _have_interface_elems(false)
36 const std::vector<MooseVariableFEBase *> & coupled_vars = getCoupledMooseVars();
37 for (
unsigned int i = 0; i < coupled_vars.size(); i++)
38 addMooseVariableDependency(coupled_vars[i]);
42 : GeneralUserObject(x.parameters()),
43 BlockRestrictable(&x),
44 Coupleable(this, false),
45 MooseVariableDependencyInterface(),
46 _mesh(x._subproblem.mesh()),
47 _current_elem(x._assembly.elem()),
48 _current_elem_volume(x._assembly.elemVolume()),
49 _q_point(x._assembly.qPoints()),
50 _qrule(x._assembly.qRule()),
51 _JxW(x._assembly.JxW()),
52 _coord(x._assembly.coordTransformation()),
53 _have_interface_elems(false)
56 const std::vector<MooseVariableFEBase *> & coupled_vars = x.getCoupledMooseVars();
57 for (
unsigned int i = 0; i < coupled_vars.size(); i++)
58 addMooseVariableDependency(coupled_vars[i]);
71 _fe_problem.setCurrentSubdomainID(elem, _tid);
77 ConstElemRange & elem_range = *
_mesh.getActiveLocalElementRange();
83 _subdomain = std::numeric_limits<SubdomainID>::max();
84 ConstElemRange::const_iterator el = elem_range.begin();
85 for (el = elem_range.begin(); el != elem_range.end(); ++el)
90 const Elem * elem = *el;
91 unsigned int cur_subdomain = elem->subdomain_id();
104 for (
unsigned int side = 0; side < elem->n_sides(); side++)
106 std::vector<BoundaryID> boundary_ids =
_mesh.getBoundaryIDs(elem, side);
108 if (boundary_ids.size() > 0)
109 for (std::vector<BoundaryID>::iterator it = boundary_ids.begin();
110 it != boundary_ids.end();
114 if (elem->neighbor_ptr(side) != NULL)
116 if (this->hasBlocks(elem->neighbor_ptr(side)->subdomain_id()))
118 if (boundary_ids.size() > 0)
119 for (std::vector<BoundaryID>::iterator it = boundary_ids.begin();
120 it != boundary_ids.end();
130 catch (MooseException & e)
174 const dof_id_type elem_id = elem->id();
179 (elem_id < neighbor_id)) ||
202 const dof_id_type elem_id = elem->id();
207 (elem_id < neighbor_id)) ||
262 std::string what(e.what());
263 _fe_problem.setException(what);