PRISMS-PF Manual
Loading...
Searching...
No Matches
RefinementManager< dim, degree, number > Class Template Reference

#include <refinement_manager.h>

Public Member Functions

 RefinementManager (SolveContext< dim, degree, number > &_solve_context)
 Constructor. Init the flags for refinement.
 
 ~RefinementManager ()=default
 Destructor.
 
 RefinementManager (const RefinementManager &grid_refiner)=delete
 Copy constructor.
 
RefinementManageroperator= (const RefinementManager &grid_refiner)=delete
 Copy assignment.
 
 RefinementManager (RefinementManager &&grid_refiner) noexcept=delete
 Move constructor.
 
RefinementManageroperator= (RefinementManager &&grid_refiner) noexcept=delete
 Move assignment.
 
void do_adaptive_refinement (std::vector< std::shared_ptr< SolverBase< dim, degree, number > > > &solvers)
 Do the adaptive refinement.
 
void add_refinement_marker (std::shared_ptr< const CellMarkerBase< dim > > marker)
 
void clear_refinement_markers ()
 
const std::vector< std::shared_ptr< const CellMarkerBase< dim > > > & get_refinement_markers () const
 
void do_initial_refinement (std::vector< std::shared_ptr< SolverBase< dim, degree, number > > > &solvers)
 Similar to do_adaptive_refinement but loops coarsening.
 

Private Member Functions

void mark_cells_for_refinement_and_coarsening ()
 Mark cells for refinement and coarsening.
 
bool mark_cells_for_refinement ()
 Mark cells based on function. Note: cells are only marked for refinement but not coarsening.
 
void refine_grid (std::vector< std::shared_ptr< SolverBase< dim, degree, number > > > &solvers)
 Refine the grid once.
 

Private Attributes

SolveContext< dim, degree, number > * solve_context
 Grid refinement context.
 
std::array< dealii::UpdateFlags, 2 > fe_values_flags
 Update flags for the FEValues determined by the grid refinement criterion. For now, we share one flag set for scalar fields and one for vector fields.
 
unsigned int num_quad_points = 0
 Number of quadrature points.
 
unsigned int max_refinement = 0
 Maximum global refinement level.
 
unsigned int min_refinement = 0
 Minimum global refinement level.
 
std::list< std::shared_ptr< const CellMarkerBase< dim > > > marker_functions
 Marker functions.
 

Constructor & Destructor Documentation

◆ RefinementManager() [1/3]

template<unsigned int dim, unsigned int degree, typename number >
RefinementManager< dim, degree, number >::RefinementManager ( SolveContext< dim, degree, number > &  _solve_context)
inlineexplicit

Constructor. Init the flags for refinement.

◆ ~RefinementManager()

template<unsigned int dim, unsigned int degree, typename number >
RefinementManager< dim, degree, number >::~RefinementManager ( )
default

Destructor.

◆ RefinementManager() [2/3]

template<unsigned int dim, unsigned int degree, typename number >
RefinementManager< dim, degree, number >::RefinementManager ( const RefinementManager< dim, degree, number > &  grid_refiner)
delete

Copy constructor.

Deleted so grid refiner instances aren't copied.

◆ RefinementManager() [3/3]

template<unsigned int dim, unsigned int degree, typename number >
RefinementManager< dim, degree, number >::RefinementManager ( RefinementManager< dim, degree, number > &&  grid_refiner)
deletenoexcept

Move constructor.

Deleted so grid refiner instances aren't moved.

Member Function Documentation

◆ add_refinement_marker()

template<unsigned int dim, unsigned int degree, typename number >
void RefinementManager< dim, degree, number >::add_refinement_marker ( std::shared_ptr< const CellMarkerBase< dim > >  marker)
inline

◆ clear_refinement_markers()

template<unsigned int dim, unsigned int degree, typename number >
void RefinementManager< dim, degree, number >::clear_refinement_markers ( )
inline

◆ do_adaptive_refinement()

template<unsigned int dim, unsigned int degree, typename number >
void RefinementManager< dim, degree, number >::do_adaptive_refinement ( std::vector< std::shared_ptr< SolverBase< dim, degree, number > > > &  solvers)
inline

Do the adaptive refinement.

Perform a loop of flagging cells for refinement/coarsening and refining until no more cells are flagged.

◆ do_initial_refinement()

template<unsigned int dim, unsigned int degree, typename number >
void RefinementManager< dim, degree, number >::do_initial_refinement ( std::vector< std::shared_ptr< SolverBase< dim, degree, number > > > &  solvers)
inline

Similar to do_adaptive_refinement but loops coarsening.

Perform a loop of flagging cells for refinement/coarsening and refining until no more cells are flagged.

◆ get_refinement_markers()

template<unsigned int dim, unsigned int degree, typename number >
const std::vector< std::shared_ptr< const CellMarkerBase< dim > > > & RefinementManager< dim, degree, number >::get_refinement_markers ( ) const
inline

◆ mark_cells_for_refinement()

template<unsigned int dim, unsigned int degree, typename number >
bool RefinementManager< dim, degree, number >::mark_cells_for_refinement ( )
inlineprivate

Mark cells based on function. Note: cells are only marked for refinement but not coarsening.

Parameters
refinement_functionA function that determines if a cell should be refined.
Returns
True if any cell was marked for refinement, false otherwise.

◆ mark_cells_for_refinement_and_coarsening()

template<unsigned int dim, unsigned int degree, typename number >
void RefinementManager< dim, degree, number >::mark_cells_for_refinement_and_coarsening ( )
inlineprivate

Mark cells for refinement and coarsening.

◆ operator=() [1/2]

template<unsigned int dim, unsigned int degree, typename number >
RefinementManager & RefinementManager< dim, degree, number >::operator= ( const RefinementManager< dim, degree, number > &  grid_refiner)
delete

Copy assignment.

Deleted so grid refiner instances aren't copied.

◆ operator=() [2/2]

template<unsigned int dim, unsigned int degree, typename number >
RefinementManager & RefinementManager< dim, degree, number >::operator= ( RefinementManager< dim, degree, number > &&  grid_refiner)
deletenoexcept

Move assignment.

Deleted so grid refiner instances aren't moved.

◆ refine_grid()

template<unsigned int dim, unsigned int degree, typename number >
void RefinementManager< dim, degree, number >::refine_grid ( std::vector< std::shared_ptr< SolverBase< dim, degree, number > > > &  solvers)
inlineprivate

Refine the grid once.

Member Data Documentation

◆ fe_values_flags

template<unsigned int dim, unsigned int degree, typename number >
std::array<dealii::UpdateFlags, 2> RefinementManager< dim, degree, number >::fe_values_flags
private

Update flags for the FEValues determined by the grid refinement criterion. For now, we share one flag set for scalar fields and one for vector fields.

◆ marker_functions

template<unsigned int dim, unsigned int degree, typename number >
std::list<std::shared_ptr<const CellMarkerBase<dim> > > RefinementManager< dim, degree, number >::marker_functions
private

Marker functions.

◆ max_refinement

template<unsigned int dim, unsigned int degree, typename number >
unsigned int RefinementManager< dim, degree, number >::max_refinement = 0
private

Maximum global refinement level.

◆ min_refinement

template<unsigned int dim, unsigned int degree, typename number >
unsigned int RefinementManager< dim, degree, number >::min_refinement = 0
private

Minimum global refinement level.

◆ num_quad_points

template<unsigned int dim, unsigned int degree, typename number >
unsigned int RefinementManager< dim, degree, number >::num_quad_points = 0
private

Number of quadrature points.

◆ solve_context

template<unsigned int dim, unsigned int degree, typename number >
SolveContext<dim, degree, number>* RefinementManager< dim, degree, number >::solve_context
private

Grid refinement context.


The documentation for this class was generated from the following file: