Carries out a-priori given refinements. More...

#include <aprioriRef2D.hh>

Inheritance diagram for hp2D::APrioriRefinement:
concepts::CellPostprocess< Real > concepts::OutputOperator

Public Types

enum  subdivTypes { NONE = 0, X = 1, Y = 2 }
 

Public Member Functions

 APrioriRefinement (concepts::AdaptiveSpace< Real, concepts::AdaptiveAdjustP< 2 > > &spc, concepts::Attribute attribVtx, concepts::Attribute attribEdge, const int *const p, const uint subdiv=X|Y, const concepts::Attribute attribCell=0)
 Constructor for refining an adaptive space. More...
 
 APrioriRefinement (concepts::AdaptiveSpace< Real, concepts::AdaptiveAdjustP< 2 > > &spc, const int *const p, const uint subdiv=X|Y, const concepts::Level< 2 > level=MAXSHORT)
 
 APrioriRefinement (concepts::Adaptivity< concepts::Connector, concepts::AdaptiveAdjustP< 2 > > &adj, concepts::Attribute attribVtx, concepts::Attribute attribEdge, const int *const p, const uint subdiv=X|Y)
 Constructor for refining a space pre builder. More...
 
virtual void operator() (const concepts::Cell &cell) throw (concepts::MissingFeature)
 Application operator. More...
 
virtual void operator() (const concepts::Element< Real > &elm) throw (concepts::MissingFeature)
 
virtual void operator() (const Element< Real > &elm)=0
 Application operator. More...
 

Static Public Attributes

static const short MAXSHORT = 32767
 

Protected Member Functions

virtual std::ostream & info (std::ostream &os) const
 Returns information in an output stream. More...
 

Private Member Functions

concepts::AdaptiveAdjustP< 2 > computeRef_ (const concepts::Quad &q, concepts::Level< 2 > level) const
 Computes the refinement solely using topological information. More...
 

Private Attributes

concepts::Adaptivity< concepts::Connector, concepts::AdaptiveAdjustP< 2 > > * adj_
 Adaptive space pre builder. More...
 
std::unique_ptr< concepts::AttributeattribCell_
 Attribute of the cells which are allowed to refine. More...
 
concepts::Attribute attribEdge_
 
concepts::Attribute attribVtx_
 Attribute of entity to which should be refined. More...
 
const concepts::Level< 2 > level_
 This or higher level. More...
 
const int *const p_
 Maximal p in a refinement step in each subdiv. More...
 
concepts::AdaptiveSpace< Real, concepts::AdaptiveAdjustP< 2 > > * spc_
 Space to be refined. More...
 
const uint subdiv_
 Subdivision strategy. More...
 

Detailed Description

Carries out a-priori given refinements.

The mesh is geometrically refined towards the given vertices or edges. These can be determined by their attribute. If a refinement in one direction occurs, p is not increased in this direction. Otherwise it is increased by the given amount. This makes it possible to generate geometrically refined meshes to corners and edges with linear polynomial degree distribution.

Currently, methods for hp2D::Quad are implemented.

Author
Philipp Frauenfelder, 2003
Bug:
The parameter p of the constructor can be set to a pointer to 0. This is not detected and a run-time error occurs.
Examples
hpFEM2d-simple.cc, and hpFEM2d.cc.

Definition at line 40 of file aprioriRef2D.hh.

Member Enumeration Documentation

◆ subdivTypes

Enumerator
NONE 

Definition at line 42 of file aprioriRef2D.hh.

Constructor & Destructor Documentation

◆ APrioriRefinement() [1/3]

hp2D::APrioriRefinement::APrioriRefinement ( concepts::AdaptiveSpace< Real, concepts::AdaptiveAdjustP< 2 > > &  spc,
concepts::Attribute  attribVtx,
concepts::Attribute  attribEdge,
const int *const  p,
const uint  subdiv = X | Y,
const concepts::Attribute  attribCell = 0 
)
inline

Constructor for refining an adaptive space.

If a given attribute for the vertices or edges is 0, it is not considered.

Parameters
spcSpace to be refined
attribVtxRefine towards vertices with this attribute
attribEdgeRefine towards edges with this attribute
pIf there is no refinement, p will be increased by this amount (anisotropically)
subdivpossibility to restrict subdivision strategy
attribCellpossibility to restrict subdivision to particular cells

Definition at line 56 of file aprioriRef2D.hh.

◆ APrioriRefinement() [2/3]

hp2D::APrioriRefinement::APrioriRefinement ( concepts::AdaptiveSpace< Real, concepts::AdaptiveAdjustP< 2 > > &  spc,
const int *const  p,
const uint  subdiv = X | Y,
const concepts::Level< 2 >  level = MAXSHORT 
)
inline

Definition at line 66 of file aprioriRef2D.hh.

◆ APrioriRefinement() [3/3]

hp2D::APrioriRefinement::APrioriRefinement ( concepts::Adaptivity< concepts::Connector, concepts::AdaptiveAdjustP< 2 > > &  adj,
concepts::Attribute  attribVtx,
concepts::Attribute  attribEdge,
const int *const  p,
const uint  subdiv = X | Y 
)
inline

Constructor for refining a space pre builder.

The global post process has to be given the mesh, so that the ()-operator for cells is called.

If a given attribute for the vertices or edges is 0, it is not considered.

Parameters
adjSpace Pre Builder to be refined
attribVtxRefine towards vertices with this attribute
attribEdgeRefine towards edges with this attribute
pIf there is no refinement, p will be increased by this amount (anisotropically)
subdivpossibility to restrict subdivision strategy

Definition at line 86 of file aprioriRef2D.hh.

Member Function Documentation

◆ computeRef_()

concepts::AdaptiveAdjustP<2> hp2D::APrioriRefinement::computeRef_ ( const concepts::Quad q,
concepts::Level< 2 >  level 
) const
private

Computes the refinement solely using topological information.

◆ info()

virtual std::ostream& hp2D::APrioriRefinement::info ( std::ostream &  os) const
protectedvirtual

Returns information in an output stream.

Reimplemented from concepts::CellPostprocess< Real >.

◆ operator()() [1/3]

virtual void hp2D::APrioriRefinement::operator() ( const concepts::Cell cell)
throw (concepts::MissingFeature
)
virtual

Application operator.

This application operator has to be overloaded to post process a mesh.

Parameters
cellCurrent cell

Implements concepts::CellPostprocess< Real >.

◆ operator()() [2/3]

virtual void hp2D::APrioriRefinement::operator() ( const concepts::Element< Real > &  elm)
throw (concepts::MissingFeature
)
virtual

◆ operator()() [3/3]

virtual void concepts::CellPostprocess< Real >::operator() ( const Element< F > &  elm)
pure virtualinherited

Application operator.

This application operator has to be overloaded to post process a space.

Parameters
elmCurrent element

Implemented in concepts::CellEdgeIntegral< F >, and concepts::CellFaceIntegral< F >.

Member Data Documentation

◆ adj_

concepts::Adaptivity<concepts::Connector, concepts::AdaptiveAdjustP<2> >* hp2D::APrioriRefinement::adj_
private

Adaptive space pre builder.

Definition at line 105 of file aprioriRef2D.hh.

◆ attribCell_

std::unique_ptr<concepts::Attribute> hp2D::APrioriRefinement::attribCell_
private

Attribute of the cells which are allowed to refine.

Definition at line 109 of file aprioriRef2D.hh.

◆ attribEdge_

concepts::Attribute hp2D::APrioriRefinement::attribEdge_
private

Definition at line 107 of file aprioriRef2D.hh.

◆ attribVtx_

concepts::Attribute hp2D::APrioriRefinement::attribVtx_
private

Attribute of entity to which should be refined.

Definition at line 107 of file aprioriRef2D.hh.

◆ level_

const concepts::Level<2> hp2D::APrioriRefinement::level_
private

This or higher level.

Definition at line 115 of file aprioriRef2D.hh.

◆ MAXSHORT

const short hp2D::APrioriRefinement::MAXSHORT = 32767
static

Definition at line 43 of file aprioriRef2D.hh.

◆ p_

const int* const hp2D::APrioriRefinement::p_
private

Maximal p in a refinement step in each subdiv.

Definition at line 111 of file aprioriRef2D.hh.

◆ spc_

concepts::AdaptiveSpace<Real, concepts::AdaptiveAdjustP<2> >* hp2D::APrioriRefinement::spc_
private

Space to be refined.

Definition at line 102 of file aprioriRef2D.hh.

◆ subdiv_

const uint hp2D::APrioriRefinement::subdiv_
private

Subdivision strategy.

Definition at line 113 of file aprioriRef2D.hh.


The documentation for this class was generated from the following file:
Page URL: http://wiki.math.ethz.ch/bin/view/Concepts/WebHome
21 August 2020
© 2020 Eidgenössische Technische Hochschule Zürich