#include <hp_singular.h>
HPSingularity ()
virtual ~HPSingularity ()
virtual void select_refinement (System &system)
std::list< Point > singular_points
This class uses a user-provided list of singularity locations to choose between h refining and p elevation. Currently we assume that a set of elements has already been flagged for h refinement - any elements which do not contain a user-provided singular point are instead flagged for p refinement.
Author:
Definition at line 52 of file hp_singular.h.
Definition at line 59 of file hp_singular.h.
{
libmesh_experimental();
}
Definition at line 67 of file hp_singular.h.
{}
Definition at line 35 of file hp_singular.C.
References MeshBase::active_local_elements_begin(), MeshBase::active_local_elements_end(), Elem::contains_point(), Elem::DO_NOTHING, System::get_mesh(), Elem::REFINE, Elem::refinement_flag(), Elem::set_p_refinement_flag(), Elem::set_refinement_flag(), and singular_points.
{
START_LOG('select_refinement()', 'HPSingularity');
// The current mesh
MeshBase& mesh = system.get_mesh();
MeshBase::element_iterator elem_it =
mesh.active_local_elements_begin();
const MeshBase::element_iterator elem_end =
mesh.active_local_elements_end();
for (; elem_it != elem_end; ++elem_it)
{
Elem* elem = *elem_it;
// We're only checking elements that are already flagged for h
// refinement
if (elem->refinement_flag() != Elem::REFINE)
continue;
elem->set_p_refinement_flag(Elem::REFINE);
elem->set_refinement_flag(Elem::DO_NOTHING);
for (std::list<Point>::iterator ppoint =
singular_points.begin();
ppoint != singular_points.end(); ++ppoint)
{
if (elem->contains_point(*ppoint))
{
elem->set_p_refinement_flag(Elem::DO_NOTHING);
elem->set_refinement_flag(Elem::REFINE);
break;
}
}
}
STOP_LOG('select_refinement()', 'HPSingularity');
}
Definition at line 82 of file hp_singular.h.
Referenced by select_refinement().
Generated automatically by Doxygen for libMesh from the source code.