4#ifndef hpSpacePreBuilder2D_hh
5#define hpSpacePreBuilder2D_hh
67 ushort* p = 0)
const = 0;
203 uint
available()
const {
return rebuild_ ? 0 : build_; }
236 ushort* p = 0)
const;
252 uint i = 0, uint spcNo = 0)
const;
313 std::set<concepts::Cell2*>
allCells()
const {
return allCells_; }
315 virtual std::ostream&
info(std::ostream& os)
const;
324 std::unique_ptr<const PolyEdgeRule> polyEdgeRule_;
330 typedef std::map<uint, concepts::IndexRange> IndexType;
362 std::set<concepts::Cell2*> allCells_;
402 std::set<const concepts::Connector1*>& edges);
408 ushort takeOutchildrenEdges_
410 std::set<const concepts::Connector1*>& edges,
411 std::set<const concepts::Connector0*>& vertices);
415 bool getEdgeSupport_(F cntr);
417 class Cause :
public std::pair<const concepts::Connector2*,
418 const concepts::Connector1*>,
424 std::pair<const
concepts::Connector2*,
425 const
concepts::Connector1*>(cell, edge) {}
427 virtual std::ostream& info(std::ostream& os)
const {
429 <<
", appropiate edge = " << *this->second <<
")";
437 bool getPretendedVertexSupport_
450 void getNonLocalVertexSupport_
468 void getEdgeMappings_
469 (uint key, uint cKey,
474 std::map<uint, const concepts::Connector1*>& fatherEdges,
475 std::map<uint, uint>& mosEdges)
const;
483 bool eliminateNonCauses_(std::queue<Cause>& causes);
virtual ushort edgeP(const concepts::Connector2 &cntr, uint i) const =0
virtual const ushort * pMax(const concepts::Connector2 &cntr, ushort *p=0) const =0
virtual ~SpacePreBuilder()
Destructor.
virtual concepts::Mesh2 & mesh() const
Returns mesh.
virtual const ushort * innerDof(const concepts::Connector2 &cntr) const =0
concepts::Mesh2 & msh_
Mesh.
virtual concepts::Set< concepts::IndexRange > indices(uint dim, const concepts::Connector &cntr, uint spcNo=0) const =0
SpacePreBuilder(concepts::Mesh2 &msh)
Constructor.
virtual ushort edgeDof(const concepts::Connector2 &cntr, uint i) const =0
virtual concepts::IndexRange & setIndex(uint &firstIdx, uint noIdx, uint dim, const concepts::Connector &cntr, uint i=0, uint spcNo=0)=0
virtual bool vtxDof(const concepts::Connector2 &cntr, uint i) const =0
uint ncells()
Number of cells on the finest level.
virtual void setP(uint p, const concepts::Set< uint > &donts)
void adjust(const uint nrCell, const concepts::AdaptiveAdjustP< 2 > &a)
concepts::Set< concepts::Cell2 * > cells() const
Returns set of 'member of space' cells.
virtual const ushort * innerDof(const concepts::Connector2 &cntr) const
virtual ~hpFull()
Destructor.
hpFull(const hpFull &preBuild)
hpFull(concepts::Mesh2 &msh, uint l=0, uint p=1, bool build=false)
Constructor.
virtual const ushort * pMax(const concepts::Connector2 &cntr, ushort *p=0) const
virtual void rebuildMesh()
void adjust(const concepts::AdaptiveAdjustP< 2 > &a)
virtual ushort edgeDof(const concepts::Connector2 &cntr, uint i) const
void storeMatlab(const std::string name)
bool isHangEdge(const concepts::Connector1 &cntr) const
Returns true, if edge is hanging.
virtual bool vtxDof(const concepts::Connector2 &cntr, uint i) const
std::set< concepts::Cell2 * > allCells() const
Returns set of all cells.
virtual ushort edgeP(const concepts::Connector2 &cntr, uint i) const
virtual concepts::IndexRange & setIndex(uint &firstIdx, uint noIdx, uint dim, const concepts::Connector &cntr, uint i=0, uint spcNo=0)
const concepts::IndexRange & index(uint dim, const concepts::Connector2 &cntr, uint i=0, uint spcNo=0) const
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
void clearAllIndices(uint spcNo=0)
virtual concepts::Set< concepts::IndexRange > indices(uint dim, const concepts::Connector &cntr, uint spcNo=0) const
virtual void adjust(const concepts::Connector &cell, const concepts::AdaptiveAdjustP< 2 > &a)
virtual void rebuildDof()
std::string typeOf(const T &t)
unsigned short ushort
Abbreviation for unsigned short.