87 virtual std::ostream&
info(std::ostream&
os)
const;
187 const std::string dirichlet,
const bool leftHand =
false);
192 virtual std::ostream&
info(std::ostream&
os)
const;
194 class S :
public Scan<Cell3> {
196 inline S(std::vector<Tetrahedron3d*>& cell) :
197 idx_(cell.begin()), cell_(cell) {}
198 inline S(
const S&
scan) : idx_(
scan.idx_), cell_(
scan.cell_) {}
199 inline bool eos()
const {
return idx_ == cell_.end(); }
200 inline Tetrahedron3d& operator++(
int) {
203 inline Scan3* clone()
const {
return new S(*
this); }
205 std::vector<Tetrahedron3d*>::iterator idx_;
206 std::vector<Tetrahedron3d*>& cell_;
213 nodes_[0] =
one; nodes_[1] =
two;
216 uint operator[](
const uint i)
const {
221 unsigned long long int twoIndex_(
const uint j,
const uint k)
const;
223 unsigned long long int threeIndex_(
const uint x,
const uint y,
226 Triangle* createTriangle_(
const uint x,
const uint y,
const uint z,
227 const std::map<unsigned long long int, Edge*>&
229 const uint bc = 0)
const;
231 std::vector<Vertex*> vtx_;
232 std::vector<Edge*> edg_;
233 std::vector<Triangle*> tri_;
234 std::vector<Tetrahedron*> tet_;
235 std::vector<Tetrahedron3d*> cell_;
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
Import3DTetMesh(const std::string coord, const std::string elms, const std::string dirichlet, const bool leftHand=false)
virtual uint ncell() const
Returns the number of cells in the mesh.
Sequence< Edge2d * > outerBoundary_
Outer boundary given by edges in 2D.
Sequence< Sequence< Edge2d * > > innerBoundary_
Several internal boundaries given by edges in 2D.
void addInnerBoundary(const Sequence< Edge2d * > &innerBoundary)
Adds clones of the edges in innerBoundary as new inner boundary.
virtual std::ostream & info(std::ostream &os) const
Returns information in an output stream.
virtual uint ncell() const =0
Returns the number of cells in the mesh.
virtual Scan< Cell > * scan()=0
Cell1 & operator++(int)=0
Returns the next cell.
Cell2 & operator++(int)=0
Returns the next cell.
Cell3 & operator++(int)=0
Returns the next cell.
#define conceptsAssert(cond, exc)
Scan< Cell2 > Scan2
A scanner for a 2D mesh.
Scan< Cell1 > Scan1
A scanner for a 1D mesh.
Set< F > makeSet(uint n, const F &first,...)
Scan< Cell3 > Scan3
A scanner for a 3D mesh.