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