20 #ifndef __mast__sub_elem_mesh_refinement_h__ 21 #define __mast__sub_elem_mesh_refinement_h__ 27 #include "libmesh/mesh_base.h" 28 #include "libmesh/system.h" 34 template <
typename ValType>
class FieldFunction;
35 class LevelSetIntersection;
39 public libMesh::System::Constraint {
44 libMesh::System& sys);
51 bool strong_discontinuity,
53 unsigned int negative_level_set_subdomain_offset,
54 unsigned int inactive_subdomain_offset,
55 unsigned int level_set_boundary_id);
69 unsigned int negative_level_set_subdomain_offset,
70 unsigned int level_set_boundary_id,
74 const std::vector<const libMesh::Elem*>& elems);
77 unsigned level_set_boundary_id,
89 bool strong_disontinuity,
91 unsigned int processor_id,
92 const std::pair<const libMesh::Node*, const libMesh::Node*>& bounding_nodes);
116 std::vector<std::pair<libMesh::Elem*, unsigned int>>
_old_elems;
117 std::set<std::pair<const libMesh::Node*, std::pair<const libMesh::Node*, const libMesh::Node*>>>
_hanging_node;
122 #endif // __mast__sub_elem_mesh_refinement_h__ bool process_mesh(const MAST::FieldFunction< Real > &phi, bool strong_discontinuity, Real time, unsigned int negative_level_set_subdomain_offset, unsigned int inactive_subdomain_offset, unsigned int level_set_boundary_id)
unsigned int _level_set_boundary_id
libMesh::System & _system
virtual void constrain()
provides implementation of the libMesh::System::Constraint::constrain() virtual method ...
std::vector< std::pair< libMesh::Elem *, unsigned int > > _old_elems
std::vector< libMesh::Node * > _new_nodes
std::set< unsigned int > _negative_level_set_ids
MAST::SubElemNodeMap * _node_map
SubElemMeshRefinement(libMesh::MeshBase &mesh, libMesh::System &sys)
bool _strong_discontinuity
std::vector< libMesh::Elem * > _new_elems
libMesh::Node * _add_node(const libMesh::Point &p, bool strong_disontinuity, bool positive_phi, unsigned int processor_id, const std::pair< const libMesh::Node *, const libMesh::Node *> &bounding_nodes)
libMesh::Elem * _add_elem()
void _process_negative_element(unsigned int negative_level_set_subdomain_offset, unsigned level_set_boundary_id, libMesh::Elem &e, MAST::LevelSetIntersection &intersect)
std::set< std::pair< const libMesh::Node *, std::pair< const libMesh::Node *, const libMesh::Node * > > > _hanging_node
libMesh::MeshBase & _mesh
unsigned int _negative_level_set_subdomain_offset
virtual ~SubElemMeshRefinement()
void _process_sub_elements(bool strong_discontinuity, unsigned int negative_level_set_subdomain_offset, unsigned int level_set_boundary_id, libMesh::Elem &e, MAST::LevelSetIntersection &intersect, bool positive_phi, const std::vector< const libMesh::Elem *> &elems)
unsigned int _inactive_subdomain_offset