The SurfUnstructured class defines an unstructured surface triangulation. More...
Public Member Functions | |
SurfUnstructured (int dimension, MPI_Comm communicator, std::size_t haloSize=1) | |
SurfUnstructured (int id, int dimension, MPI_Comm communicator, std::size_t haloSize=1) | |
SurfUnstructured (MPI_Comm communicator, std::size_t haloSize=1) | |
SurfUnstructured (std::istream &stream, MPI_Comm communicator, std::size_t haloSize=1) | |
std::unique_ptr< PatchKernel > | clone () const override |
int | exportDGF (const std::string &filename) |
int | exportSTL (const std::string &filename, bool isBinary) |
int | exportSTL (const std::string &filename, bool isBinary, bool isMulti, std::unordered_map< int, std::string > *PIDNames=nullptr) |
void | extractEdgeNetwork (LineUnstructured &net) |
int | importDGF (const std::string &filename, bool joinFactes, int PIDOffset=0, bool PIDSquash=false) |
int | importDGF (const std::string &filename, int PIDOffset=0, bool PIDSquash=false) |
int | importSTL (const std::string &filename, bool isBinary, int PIDOffset=0, bool PIDSquash=false, std::unordered_map< int, std::string > *PIDNames=nullptr) |
int | importSTL (const std::string &filename, int PIDOffset=0, bool PIDSquash=false) |
int | importSTL (const std::string &filename, STLReader::Format format, bool joinFactes, int PIDOffset=0, bool PIDSquash=false, std::unordered_map< int, std::string > *PIDNames=nullptr) |
long | locatePoint (const std::array< double, 3 > &point) const override |
virtual long | locatePoint (const std::array< double, 3 > &point) const=0 |
long | locatePoint (double x, double y, double z) const |
Public Member Functions inherited from bitpit::SurfaceKernel | |
bool | adjustCellOrientation () |
bool | adjustCellOrientation (long id, bool invert=false) |
bool | areFacetEdgesOrdered (const Cell &facet) const |
bool | areFacetVerticesOrdered (const Cell &facet) const |
std::vector< double > | computeHistogram (eval_f_ funct_, std::vector< double > &bins, long &count, int n_intervals=8, unsigned short mask=SELECT_ALL) const |
void | displayQualityStats (std::ostream &, unsigned int padding=0) const |
virtual double | evalAngleAtVertex (long, int) const |
virtual double | evalAspectRatio (long, int &) const |
void | evalBarycentricCoordinates (long id, const std::array< double, 3 > &point, double *lambda) const |
virtual double | evalCellArea (long) const |
double | evalCellSize (long id) const override |
virtual double | evalEdgeLength (long, int) const |
std::array< double, 3 > | evalEdgeNormal (long, int) const |
virtual void | evalEdgeNormals (long id, int edge, double limit, std::array< double, 3 > *unlimitedNormal, std::array< double, 3 > *limitedNormal) const |
virtual std::array< double, 3 > | evalFacetNormal (long, const std::array< double, 3 > &orientation={{0., 0., 1.}}) const |
std::array< double, 3 > | evalLimitedVertexNormal (long, int, double) const |
std::array< double, 3 > | evalLimitedVertexNormal (long, int, std::size_t, const long *, double) const |
virtual double | evalMaxAngleAtVertex (long, int &) const |
virtual double | evalMaxEdgeLength (long, int &) const |
virtual double | evalMinAngleAtVertex (long, int &) const |
virtual double | evalMinEdgeLength (long, int &) const |
std::array< double, 3 > | evalVertexNormal (long, int) const |
std::array< double, 3 > | evalVertexNormal (long, int, std::size_t, const long *) const |
virtual void | evalVertexNormals (long id, int vertex, std::size_t nVertexNeighs, const long *vertexNeighs, double limit, std::array< double, 3 > *unlimitedNormal, std::array< double, 3 > *limitedNormal) const |
void | extractEnvelope (LineKernel &envelope) const |
void | flipCellOrientation (long id) |
ConstProxyVector< long > | getFacetOrderedEdgeIds (const Cell &facet) const |
int | getFacetOrderedLocalEdge (const Cell &facet, std::size_t n) const |
int | getFacetOrderedLocalVertex (const Cell &facet, std::size_t n) const |
ConstProxyVector< long > | getFacetOrderedVertexIds (const Cell &facet) const |
int | getLineCodimension () const override |
int | getPointCodimension () const override |
int | getSpaceDimension (void) const |
int | getSurfaceCodimension () const override |
int | getVolumeCodimension () const override |
bool | isCellOrientationConsistent () const |
void | setSpaceDimension (int dimension) |
Public Member Functions inherited from bitpit::PatchKernel | |
PatchKernel (PatchKernel &&other) | |
virtual | ~PatchKernel () |
std::vector< adaption::Info > | adaption (bool trackAdaption=true, bool squeezeStorage=false) |
std::vector< adaption::Info > | adaptionAlter (bool trackAdaption=true, bool squeezeStorage=false) |
void | adaptionCleanup () |
std::vector< adaption::Info > | adaptionPrepare (bool trackAdaption=true) |
CellIterator | addCell (Cell &&source, int owner, int haloLayer, long id=Element::NULL_ID) |
CellIterator | addCell (Cell &&source, int owner, long id=Element::NULL_ID) |
CellIterator | addCell (Cell &&source, long id=Element::NULL_ID) |
CellIterator | addCell (const Cell &source, int owner, int haloLayer, long id=Element::NULL_ID) |
CellIterator | addCell (const Cell &source, int owner, long id=Element::NULL_ID) |
CellIterator | addCell (const Cell &source, long id=Element::NULL_ID) |
CellIterator | addCell (ElementType type, const std::vector< long > &connectivity, int owner, int haloLayer, long id=Element::NULL_ID) |
CellIterator | addCell (ElementType type, const std::vector< long > &connectivity, int owner, long id=Element::NULL_ID) |
CellIterator | addCell (ElementType type, const std::vector< long > &connectivity, long id=Element::NULL_ID) |
CellIterator | addCell (ElementType type, int owner, int haloLayer, long id=Element::NULL_ID) |
CellIterator | addCell (ElementType type, int owner, long id=Element::NULL_ID) |
CellIterator | addCell (ElementType type, long id=Element::NULL_ID) |
CellIterator | addCell (ElementType type, std::unique_ptr< long[]> &&connectStorage, int owner, int haloLayer, long id=Element::NULL_ID) |
CellIterator | addCell (ElementType type, std::unique_ptr< long[]> &&connectStorage, int owner, long id=Element::NULL_ID) |
CellIterator | addCell (ElementType type, std::unique_ptr< long[]> &&connectStorage, long id=Element::NULL_ID) |
InterfaceIterator | addInterface (const Interface &source, long id=Element::NULL_ID) |
InterfaceIterator | addInterface (ElementType type, const std::vector< long > &connectivity, long id=Element::NULL_ID) |
InterfaceIterator | addInterface (ElementType type, long id=Element::NULL_ID) |
InterfaceIterator | addInterface (ElementType type, std::unique_ptr< long[]> &&connectStorage, long id=Element::NULL_ID) |
InterfaceIterator | addInterface (Interface &&source, long id=Element::NULL_ID) |
VertexIterator | addVertex (const std::array< double, 3 > &coords, long id=Vertex::NULL_ID) |
VertexIterator | addVertex (const Vertex &source, long id=Vertex::NULL_ID) |
VertexIterator | addVertex (Vertex &&source, long id=Vertex::NULL_ID) |
bool | areAdjacenciesDirty (bool global=false) const |
bool | areInterfacesDirty (bool global=false) const |
bool | arePartitioningInfoDirty (bool global=true) const |
void | buildAdjacencies () |
void | buildInterfaces () |
CellIterator | cellBegin () |
CellConstIterator | cellConstBegin () const |
CellConstIterator | cellConstEnd () const |
CellIterator | cellEnd () |
std::vector< long > | collapseCoincidentVertices () |
void | consecutiveRenumber (long offsetVertices, long offsetCells, long offsetInterfaces) |
void | consecutiveRenumberCells (long offset=0) |
void | consecutiveRenumberInterfaces (long offset=0) |
void | consecutiveRenumberVertices (long offset=0) |
long | countBorderCells () const |
long | countBorderFaces () const |
long | countBorderInterfaces () const |
long | countBorderVertices () const |
long | countDuplicateCells () const |
long | countFaces () const |
long | countFreeCells () const |
long | countFreeFaces () const |
long | countFreeInterfaces () const |
long | countFreeVertices () const |
long | countOrphanCells () const |
long | countOrphanInterfaces () const |
long | countOrphanVertices () const |
bool | deleteCell (long id) |
template<typename IdStorage > | |
bool | deleteCells (const IdStorage &ids) |
bool | deleteCoincidentVertices () |
bool | deleteInterface (long id) |
template<typename IdStorage > | |
bool | deleteInterfaces (const IdStorage &ids) |
bool | deleteOrphanInterfaces () |
bool | deleteOrphanVertices () |
void | destroyAdjacencies () |
void | destroyInterfaces () |
void | displayCells (std::ostream &out, unsigned int padding=0) const |
void | displayInterfaces (std::ostream &out, unsigned int padding=0) const |
void | displayTopologyStats (std::ostream &out, unsigned int padding=0) const |
void | displayVertices (std::ostream &out, unsigned int padding=0) const |
bool | dump (std::ostream &stream) |
bool | dump (std::ostream &stream) const |
bool | empty (bool global=true) const |
void | enableCellBalancing (long id, bool enabled) |
virtual void | evalCellBoundingBox (long id, std::array< double, 3 > *minPoint, std::array< double, 3 > *maxPoint) const |
virtual std::array< double, 3 > | evalCellCentroid (long id) const |
void | evalElementBoundingBox (const Element &element, std::array< double, 3 > *minPoint, std::array< double, 3 > *maxPoint) const |
std::array< double, 3 > | evalElementCentroid (const Element &element) const |
virtual void | evalInterfaceBoundingBox (long id, std::array< double, 3 > *minPoint, std::array< double, 3 > *maxPoint) const |
virtual std::array< double, 3 > | evalInterfaceCentroid (long id) const |
double | evalPartitioningUnbalance () const |
double | evalPartitioningUnbalance (const std::unordered_map< long, double > &cellWeights) const |
void | findCellEdgeNeighs (long id, bool complete, std::vector< long > *neighs) const |
std::vector< long > | findCellEdgeNeighs (long id, bool complete=true) const |
std::vector< long > | findCellEdgeNeighs (long id, int edge) const |
void | findCellEdgeNeighs (long id, int edge, std::vector< long > *neighs) const |
std::vector< long > | findCellFaceNeighs (long id) const |
std::vector< long > | findCellFaceNeighs (long id, int face) const |
void | findCellFaceNeighs (long id, int face, std::vector< long > *neighs) const |
void | findCellFaceNeighs (long id, std::vector< long > *neighs) const |
std::vector< long > | findCellNeighs (long id) const |
void | findCellNeighs (long id, int codimension, bool complete, std::vector< long > *neighs) const |
std::vector< long > | findCellNeighs (long id, int codimension, bool complete=true) const |
void | findCellNeighs (long id, std::vector< long > *neighs) const |
void | findCellVertexNeighs (long id, bool complete, std::vector< long > *neighs) const |
std::vector< long > | findCellVertexNeighs (long id, bool complete=true) const |
std::vector< long > | findCellVertexNeighs (long id, int vertex) const |
void | findCellVertexNeighs (long id, int vertex, std::vector< long > *neighs) const |
std::vector< long > | findCellVertexOneRing (long id, int vertex) const |
void | findCellVertexOneRing (long id, int vertex, std::vector< long > *neighs) const |
std::vector< long > | findDuplicateCells () const |
bool | findFaceNeighCell (long cellId, long neighId, int *cellFace, int *cellAdjacencyId) const |
std::vector< long > | findOrphanCells () const |
std::vector< long > | findOrphanInterfaces () const |
std::vector< long > | findOrphanVertices () |
std::vector< long > | findVertexOneRing (long vertexId) const |
void | findVertexOneRing (long vertexId, std::vector< long > *ring) const |
void | flushData (std::fstream &stream, const std::string &name, VTKFormat format) override |
AdaptionMode | getAdaptionMode () const |
AdaptionStatus | getAdaptionStatus (bool global=false) const |
AdjacenciesBuildStrategy | getAdjacenciesBuildStrategy () const |
void | getBoundingBox (bool global, std::array< double, 3 > &minPoint, std::array< double, 3 > &maxPoint) const |
void | getBoundingBox (std::array< double, 3 > &minPoint, std::array< double, 3 > &maxPoint) const |
Cell & | getCell (long id) |
const Cell & | getCell (long id) const |
adaption::Marker | getCellAdaptionMarker (long id) |
CellConstIterator | getCellConstIterator (long id) const |
virtual long | getCellCount () const |
int | getCellHaloLayer (long id) const |
CellIterator | getCellIterator (long id) |
int | getCellOwner (long id) const |
int | getCellRank (long id) const |
PiercedVector< Cell > & | getCells () |
const PiercedVector< Cell > & | getCells () const |
virtual ElementType | getCellType (long id) const |
ConstProxyVector< std::array< double BITPIT_COMMA 3 > > | getCellVertexCoordinates (long id) const |
void | getCellVertexCoordinates (long id, std::array< double, 3 > *coordinates) const |
void | getCellVertexCoordinates (long id, std::unique_ptr< std::array< double, 3 >[]> *coordinates) const |
const MPI_Comm & | getCommunicator () const |
int | getDimension () const |
int | getDumpVersion () const |
ConstProxyVector< std::array< double BITPIT_COMMA 3 > > | getElementVertexCoordinates (const Element &element) const |
void | getElementVertexCoordinates (const Element &element, std::array< double, 3 > *coordinates) const |
void | getElementVertexCoordinates (const Element &element, std::unique_ptr< std::array< double, 3 >[]> *coordinates) const |
Cell & | getFirstGhost () |
const Cell & | getFirstGhost () const |
Cell & | getFirstGhostCell () |
const Cell & | getFirstGhostCell () const |
Vertex & | getFirstGhostVertex () |
const Vertex & | getFirstGhostVertex () const |
long | getGhostCellCount () const |
const std::unordered_map< int, std::vector< long > > & | getGhostCellExchangeSources () const |
const std::vector< long > & | getGhostCellExchangeSources (int rank) const |
const std::unordered_map< int, std::vector< long > > & | getGhostCellExchangeTargets () const |
const std::vector< long > & | getGhostCellExchangeTargets (int rank) const |
long | getGhostCount () const |
const std::unordered_map< int BITPIT_COMMA std::vector< long > > & | getGhostExchangeSources () const |
const std::vector< long > & | getGhostExchangeSources (int rank) const |
const std::unordered_map< int BITPIT_COMMA std::vector< long > > & | getGhostExchangeTargets () const |
const std::vector< long > & | getGhostExchangeTargets (int rank) const |
long | getGhostVertexCount () const |
const std::unordered_map< int, std::vector< long > > & | getGhostVertexExchangeSources () const |
const std::vector< long > & | getGhostVertexExchangeSources (int rank) const |
const std::unordered_map< int, std::vector< long > > & | getGhostVertexExchangeTargets () const |
const std::vector< long > & | getGhostVertexExchangeTargets (int rank) const |
std::size_t | getHaloSize () const |
int | getId () const |
Interface & | getInterface (long id) |
const Interface & | getInterface (long id) const |
InterfaceConstIterator | getInterfaceConstIterator (long id) const |
virtual long | getInterfaceCount () const |
InterfaceIterator | getInterfaceIterator (long id) |
PiercedVector< Interface > & | getInterfaces () |
const PiercedVector< Interface > & | getInterfaces () const |
InterfacesBuildStrategy | getInterfacesBuildStrategy () const |
virtual ElementType | getInterfaceType (long id) const |
ConstProxyVector< std::array< double BITPIT_COMMA 3 > > | getInterfaceVertexCoordinates (long id) const |
void | getInterfaceVertexCoordinates (long id, std::array< double, 3 > *coordinates) const |
void | getInterfaceVertexCoordinates (long id, std::unique_ptr< std::array< double, 3 >[]> *coordinates) const |
long | getInternalCellCount () const |
std::set< int > | getInternalCellPIDs () |
std::vector< long > | getInternalCellsByPID (int pid) |
long | getInternalCount () const |
long | getInternalVertexCount () const |
Cell & | getLastInternalCell () |
const Cell & | getLastInternalCell () const |
Vertex & | getLastInternalVertex () |
const Vertex & | getLastInternalVertex () const |
std::vector< int > | getNeighbourRanks () |
int | getOwner (bool allowDirty=false) const |
PartitioningMode | getPartitioningMode () const |
PartitioningStatus | getPartitioningStatus (bool global=false) const |
int | getProcessorCount () const |
int | getRank () const |
double | getTol () const |
Vertex & | getVertex (long id) |
const Vertex & | getVertex (long id) const |
VertexConstIterator | getVertexConstIterator (long id) const |
const std::array< double, 3 > & | getVertexCoords (long id) const |
void | getVertexCoords (std::size_t nVertices, const long *ids, std::array< double, 3 > *coordinates) const |
void | getVertexCoords (std::size_t nVertices, const long *ids, std::unique_ptr< std::array< double, 3 >[]> *coordinates) const |
virtual long | getVertexCount () const |
VertexIterator | getVertexIterator (long id) |
int | getVertexOwner (long id) const |
int | getVertexRank (long id) const |
PiercedVector< Vertex > & | getVertices () |
const PiercedVector< Vertex > & | getVertices () const |
VTKUnstructuredGrid & | getVTK () |
const VTKUnstructuredGrid & | getVTK () const |
const CellConstRange | getVTKCellWriteRange () const |
WriteTarget | getVTKWriteTarget () const |
CellIterator | ghostBegin () |
CellIterator | ghostCell2InternalCell (long id) |
CellIterator | ghostCellBegin () |
CellConstIterator | ghostCellConstBegin () const |
CellConstIterator | ghostCellConstEnd () const |
CellIterator | ghostCellEnd () |
CellConstIterator | ghostConstBegin () const |
CellConstIterator | ghostConstEnd () const |
CellIterator | ghostEnd () |
VertexIterator | ghostVertexBegin () |
VertexConstIterator | ghostVertexConstBegin () const |
VertexConstIterator | ghostVertexConstEnd () const |
VertexIterator | ghostVertexEnd () |
void | initializeAdjacencies (AdjacenciesBuildStrategy strategy=ADJACENCIES_AUTOMATIC) |
void | initializeInterfaces (InterfacesBuildStrategy strategy=INTERFACES_AUTOMATIC) |
InterfaceIterator | interfaceBegin () |
InterfaceConstIterator | interfaceConstBegin () const |
InterfaceConstIterator | interfaceConstEnd () const |
InterfaceIterator | interfaceEnd () |
CellIterator | internalBegin () |
CellIterator | internalCell2GhostCell (long id, int owner, int haloLayer) |
CellIterator | internalCellBegin () |
CellConstIterator | internalCellConstBegin () const |
CellConstIterator | internalCellConstEnd () const |
CellIterator | internalCellEnd () |
CellConstIterator | internalConstBegin () const |
CellConstIterator | internalConstEnd () const |
CellIterator | internalEnd () |
VertexIterator | internalVertexBegin () |
VertexConstIterator | internalVertexConstBegin () const |
VertexConstIterator | internalVertexConstEnd () const |
VertexIterator | internalVertexEnd () |
bool | isAdaptionSupported () const |
bool | isBoundingBoxDirty (bool global=false) const |
bool | isCellAutoIndexingEnabled () const |
bool | isDirty (bool global=false) const |
bool | isDistributed (bool allowDirty=false) const |
bool | isExpert () const |
bool | isInterfaceAutoIndexingEnabled () const |
bool | isInterfaceOrphan (long id) const |
bool | isPartitioned () const |
bool | isPartitioningSupported () const |
bool | isRankNeighbour (int rank) |
bool | isThreeDimensional () const |
bool | isTolCustomized () const |
bool | isVertexAutoIndexingEnabled () const |
long | locatePoint (double x, double y, double z) const |
void | markCellForCoarsening (long id) |
void | markCellForRefinement (long id) |
PatchKernel & | operator= (PatchKernel &&other) |
std::vector< adaption::Info > | partition (bool trackPartitioning, bool squeezeStorage=false) |
std::vector< adaption::Info > | partition (const std::unordered_map< long, double > &cellWeights, bool trackPartitioning, bool squeezeStorage=false) |
std::vector< adaption::Info > | partition (const std::unordered_map< long, int > &cellRanks, bool trackPartitioning, bool squeezeStorage=false) |
std::vector< adaption::Info > | partition (MPI_Comm communicator, bool trackPartitioning, bool squeezeStorage=false, std::size_t haloSize=1) |
std::vector< adaption::Info > | partition (MPI_Comm communicator, const std::unordered_map< long, double > &cellWeights, bool trackPartitioning, bool squeezeStorage=false, std::size_t haloSize=1) |
std::vector< adaption::Info > | partition (MPI_Comm communicator, const std::unordered_map< long, int > &cellRanks, bool trackPartitioning, bool squeezeStorage=false, std::size_t haloSize=1) |
std::vector< adaption::Info > | partitioningAlter (bool trackPartitioning=true, bool squeezeStorage=false) |
void | partitioningCleanup () |
std::vector< adaption::Info > | partitioningPrepare (bool trackPartitioning) |
std::vector< adaption::Info > | partitioningPrepare (const std::unordered_map< long, double > &cellWeights, bool trackPartitioning) |
std::vector< adaption::Info > | partitioningPrepare (const std::unordered_map< long, int > &cellRanks, bool trackPartitioning) |
std::vector< adaption::Info > | partitioningPrepare (MPI_Comm communicator, bool trackPartitioning, std::size_t haloSize=1) |
std::vector< adaption::Info > | partitioningPrepare (MPI_Comm communicator, const std::unordered_map< long, double > &cellWeights, bool trackPartitioning, std::size_t haloSize=1) |
std::vector< adaption::Info > | partitioningPrepare (MPI_Comm communicator, const std::unordered_map< long, int > &cellRanks, bool trackPartitioning, std::size_t haloSize=1) |
template<typename Function > | |
void | processCellFaceNeighbours (long seedId, int nLayers, Function function) const |
template<typename Selector , typename Function > | |
void | processCellFaceNeighbours (long seedId, int nLayers, Selector isSelected, Function function) const |
template<typename Function > | |
void | processCellNeighbours (long seedId, int nLayers, Function function) const |
template<typename Selector , typename Function > | |
void | processCellNeighbours (long seedId, int nLayers, Selector isSelected, Function function) const |
template<typename Function , typename SeedContainer > | |
void | processCellsFaceNeighbours (const SeedContainer &seedIds, int nLayers, Function function) const |
template<typename Selector , typename Function , typename SeedContainer > | |
void | processCellsFaceNeighbours (const SeedContainer &seedIds, int nLayers, Selector isSelected, Function function) const |
template<typename Function , typename SeedContainer > | |
void | processCellsNeighbours (const SeedContainer &seedIds, int nLayers, Function function) const |
template<typename Selector , typename Function , typename SeedContainer > | |
void | processCellsNeighbours (const SeedContainer &seedIds, int nLayers, Selector isSelected, Function function) const |
bool | reserveCells (size_t nCells) |
bool | reserveInterfaces (size_t nInterfaces) |
bool | reserveVertices (size_t nVertices) |
virtual void | reset () |
void | resetCellAdaptionMarker (long id) |
virtual void | resetCells () |
virtual void | resetInterfaces () |
void | resetTol () |
virtual void | resetVertices () |
void | restore (std::istream &stream, bool reregister=false) |
virtual void | rotate (const std::array< double, 3 > &n0, const std::array< double, 3 > &n1, double angle) |
void | rotate (double n0x, double n0y, double n0z, double n1x, double n1y, double n1z, double angle) |
void | scale (const std::array< double, 3 > &scaling) |
virtual void | scale (const std::array< double, 3 > &scaling, const std::array< double, 3 > &origin) |
void | scale (double scaling) |
void | scale (double scaling, const std::array< double, 3 > &origin) |
void | scale (double sx, double sy, double sz) |
void | scale (double sx, double sy, double sz, const std::array< double, 3 > &origin) |
void | setCellAutoIndexing (bool enabled) |
virtual void | setDimension (int dimension) |
void | setHaloSize (std::size_t haloSize) |
void | setId (int id) |
void | setInterfaceAutoIndexing (bool enabled) |
virtual void | settleAdaptionMarkers () |
void | setTol (double tolerance) |
void | setVertexAutoIndexing (bool enabled) |
void | setVTKWriteTarget (WriteTarget targetCells) |
virtual void | simulateCellUpdate (const long id, adaption::Marker marker, std::vector< Cell > *virtualCells, PiercedVector< Vertex, long > *virtualVertices) const |
bool | sort () |
bool | sortCells () |
bool | sortInterfaces () |
bool | sortVertices () |
bool | squeeze () |
bool | squeezeCells () |
bool | squeezeInterfaces () |
bool | squeezeVertices () |
virtual void | translate (const std::array< double, 3 > &translation) |
void | translate (double sx, double sy, double sz) |
std::vector< adaption::Info > | update (bool trackAdaption=true, bool squeezeStorage=false) |
void | updateAdjacencies (bool forcedUpdated=false) |
void | updateBoundingBox (bool forcedUpdated=false) |
void | updateInterfaces (bool forcedUpdated=false) |
VertexIterator | vertexBegin () |
VertexConstIterator | vertexConstBegin () const |
VertexConstIterator | vertexConstEnd () const |
VertexIterator | vertexEnd () |
void | write (const std::string &name, VTKWriteMode mode, double time) |
void | write (const std::string &name, VTKWriteMode mode=VTKWriteMode::DEFAULT) |
void | write (VTKWriteMode mode, double time) |
void | write (VTKWriteMode mode=VTKWriteMode::DEFAULT) |
Public Member Functions inherited from bitpit::VTKBaseStreamer | |
virtual void | absorbData (std::fstream &, const std::string &, VTKFormat, uint64_t, uint8_t, VTKDataType) |
template<typename T > | |
void | flushValue (std::fstream &, VTKFormat, const T &value) const |
template<typename T > | |
void | flushValue (std::fstream &, VTKFormat, const T *values, int nValues) const |
Protected Member Functions | |
void | _dump (std::ostream &stream) const override |
int | _getDumpVersion () const override |
void | _restore (std::istream &stream) override |
int | exportSTLMulti (const std::string &name, std::unordered_map< int, std::string > *PIDNames=nullptr) |
int | exportSTLSingle (const std::string &name, bool isBinary) |
Protected Member Functions inherited from bitpit::SurfaceKernel | |
SurfaceKernel (int dimension, MPI_Comm communicator, std::size_t haloSize, AdaptionMode adaptionMode, PartitioningMode partitioningMode) | |
SurfaceKernel (int id, int dimension, MPI_Comm communicator, std::size_t haloSize, AdaptionMode adaptionMode, PartitioningMode partitioningMode) | |
SurfaceKernel (MPI_Comm communicator, std::size_t haloSize, AdaptionMode adaptionMode, PartitioningMode partitioningMode) | |
Protected Member Functions inherited from bitpit::PatchKernel | |
PatchKernel (const PatchKernel &other) | |
PatchKernel (int dimension, MPI_Comm communicator, std::size_t haloSize, AdaptionMode adaptionMode, PartitioningMode partitioningMode) | |
PatchKernel (int id, int dimension, MPI_Comm communicator, std::size_t haloSize, AdaptionMode adaptionMode, PartitioningMode partitioningMode) | |
PatchKernel (MPI_Comm communicator, std::size_t haloSize, AdaptionMode adaptionMode, PartitioningMode partitioningMode) | |
virtual std::vector< adaption::Info > | _adaptionAlter (bool trackAdaption) |
virtual void | _adaptionCleanup () |
virtual std::vector< adaption::Info > | _adaptionPrepare (bool trackAdaption) |
virtual bool | _enableCellBalancing (long id, bool enabled) |
virtual void | _findCellEdgeNeighs (long id, int edge, const std::vector< long > *blackList, std::vector< long > *neighs) const |
virtual void | _findCellFaceNeighs (long id, int face, const std::vector< long > *blackList, std::vector< long > *neighs) const |
virtual void | _findCellNeighs (long id, const std::vector< long > *blackList, std::vector< long > *neighs) const |
virtual void | _findCellVertexNeighs (long id, int vertex, const std::vector< long > *blackList, std::vector< long > *neighs) const |
virtual std::vector< long > | _findGhostCellExchangeSources (int rank) |
virtual adaption::Marker | _getCellAdaptionMarker (long id) |
virtual long | _getCellNativeIndex (long id) const |
virtual std::size_t | _getMaxHaloSize () |
virtual bool | _markCellForCoarsening (long id) |
virtual bool | _markCellForRefinement (long id) |
virtual std::vector< adaption::Info > | _partitioningAlter (bool trackPartitioning) |
virtual void | _partitioningCleanup () |
virtual std::vector< adaption::Info > | _partitioningPrepare (const std::unordered_map< long, double > &cellWeights, double defaultWeight, bool trackPartitioning) |
virtual std::vector< adaption::Info > | _partitioningPrepare (const std::unordered_map< long, int > &cellRanks, bool trackPartitioning) |
virtual void | _resetAdjacencies (bool release) |
virtual bool | _resetCellAdaptionMarker (long id) |
virtual void | _resetInterfaces (bool release) |
virtual void | _resetTol () |
virtual void | _setHaloSize (std::size_t haloSize) |
virtual void | _setTol (double tolerance) |
virtual void | _updateAdjacencies () |
virtual void | _updateInterfaces () |
virtual void | _writeFinalize () |
virtual void | _writePrepare () |
void | addPointToBoundingBox (const std::array< double, 3 > &point) |
std::unordered_map< long, std::vector< long > > | binGroupVertices (const PiercedVector< Vertex > &vertices, int nBins) |
std::unordered_map< long, std::vector< long > > | binGroupVertices (int nBins) |
void | clearBoundingBox () |
template<typename item_t , typename id_t = long> | |
std::unordered_map< id_t, id_t > | consecutiveItemRenumbering (PiercedVector< item_t, id_t > &container, long offset) |
bool | deleteVertex (long id) |
template<typename IdStorage > | |
bool | deleteVertices (const IdStorage &ids) |
void | dumpCells (std::ostream &stream) const |
void | dumpInterfaces (std::ostream &stream) const |
void | dumpVertices (std::ostream &stream) const |
void | extractEnvelope (PatchKernel &envelope) const |
virtual int | findAdjoinNeighFace (const Cell &cell, int cellFace, const Cell &neigh) const |
AlterationFlags | getCellAlterationFlags (long id) const |
AlterationFlags | getInterfaceAlterationFlags (long id) const |
VertexIterator | ghostVertex2InternalVertex (long id) |
VertexIterator | internalVertex2GhostVertex (long id, int owner) |
bool | isBoundingBoxFrozen () const |
bool | isCommunicatorSet () const |
virtual bool | isSameFace (const Cell &cell_A, int face_A, const Cell &cell_B, int face_B) const |
template<typename item_t , typename id_t = long> | |
void | mappedItemRenumbering (PiercedVector< item_t, id_t > &container, const std::unordered_map< id_t, id_t > &renumberMap) |
PatchKernel & | operator= (const PatchKernel &other)=delete |
void | pruneStaleAdjacencies () |
void | pruneStaleInterfaces () |
void | removePointFromBoundingBox (const std::array< double, 3 > &point) |
void | resetAdjacencies () |
void | resetCellAlterationFlags (long id, AlterationFlags flags=FLAG_NONE) |
void | resetInterfaceAlterationFlags (long id, AlterationFlags flags=FLAG_NONE) |
CellIterator | restoreCell (ElementType type, std::unique_ptr< long[]> &&connectStorage, int owner, int haloLayer, long id) |
void | restoreCells (std::istream &stream) |
InterfaceIterator | restoreInterface (ElementType type, std::unique_ptr< long[]> &&connectStorage, long id) |
void | restoreInterfaces (std::istream &stream) |
VertexIterator | restoreVertex (const std::array< double, 3 > &coords, int owner, long id) |
void | restoreVertices (std::istream &stream) |
void | setAdaptionMode (AdaptionMode mode) |
void | setAdaptionStatus (AdaptionStatus status) |
void | setAdjacenciesBuildStrategy (AdjacenciesBuildStrategy status) |
void | setBoundingBox (const std::array< double, 3 > &minPoint, const std::array< double, 3 > &maxPoint) |
void | setBoundingBoxDirty (bool dirty) |
void | setBoundingBoxFrozen (bool frozen) |
void | setCellAlterationFlags (AlterationFlags flags) |
void | setCellAlterationFlags (long id, AlterationFlags flags) |
virtual void | setCommunicator (MPI_Comm communicator) |
void | setExpert (bool expert) |
void | setInterfaceAlterationFlags (AlterationFlags flags) |
void | setInterfaceAlterationFlags (long id, AlterationFlags flags) |
void | setInterfacesBuildStrategy (InterfacesBuildStrategy status) |
void | setPartitioned (bool partitioned) |
void | setPartitioningMode (PartitioningMode mode) |
void | setPartitioningStatus (PartitioningStatus status) |
bool | testAlterationFlags (AlterationFlags availableFlags, AlterationFlags requestedFlags) const |
bool | testCellAlterationFlags (long id, AlterationFlags flags) const |
bool | testInterfaceAlterationFlags (long id, AlterationFlags flags) const |
void | unsetCellAlterationFlags (AlterationFlags flags) |
void | unsetCellAlterationFlags (long id, AlterationFlags flags) |
void | unsetInterfaceAlterationFlags (AlterationFlags flags) |
void | unsetInterfaceAlterationFlags (long id, AlterationFlags flags) |
void | updateFirstGhostCellId () |
void | updateFirstGhostVertexId () |
void | updateLastInternalCellId () |
void | updateLastInternalVertexId () |
Static Protected Member Functions | |
static ElementType | getDGFFacetType (int nFacetVertices) |
Additional Inherited Members | |
Public Types inherited from bitpit::SurfaceKernel | |
typedef double(SurfaceKernel::* | eval_f_) (long, int &) const |
Public Types inherited from bitpit::PatchKernel | |
enum | AdaptionMode { ADAPTION_DISABLED = -1 , ADAPTION_AUTOMATIC , ADAPTION_MANUAL } |
enum | AdaptionStatus { ADAPTION_CLEAN , ADAPTION_DIRTY , ADAPTION_PREPARED , ADAPTION_ALTERED } |
enum | AdjacenciesBuildStrategy { ADJACENCIES_NONE = -1 , ADJACENCIES_AUTOMATIC } |
typedef PiercedVector< Cell >::const_iterator | CellConstIterator |
typedef PiercedVector< Cell >::const_range | CellConstRange |
typedef PiercedVector< Cell >::iterator | CellIterator |
typedef PiercedVector< Cell >::range | CellRange |
typedef PiercedVector< Interface >::const_iterator | InterfaceConstIterator |
typedef PiercedVector< Interface >::const_range | InterfaceConstRange |
typedef PiercedVector< Interface >::iterator | InterfaceIterator |
typedef PiercedVector< Interface >::range | InterfaceRange |
enum | InterfacesBuildStrategy { INTERFACES_NONE = -1 , INTERFACES_AUTOMATIC } |
enum | PartitioningMode { PARTITIONING_DISABLED = -1 , PARTITIONING_ENABLED } |
enum | PartitioningStatus { PARTITIONING_CLEAN , PARTITIONING_PREPARED , PARTITIONING_ALTERED } |
typedef PiercedVector< Vertex >::const_iterator | VertexConstIterator |
typedef PiercedVector< Vertex >::const_range | VertexConstRange |
typedef PiercedVector< Vertex >::iterator | VertexIterator |
typedef PiercedVector< Vertex >::range | VertexRange |
enum | WriteTarget { WRITE_TARGET_CELLS_ALL , WRITE_TARGET_CELLS_INTERNAL } |
Static Public Member Functions inherited from bitpit::PatchKernel | |
template<typename patch_t > | |
static std::unique_ptr< patch_t > | clone (const patch_t *original) |
Static Public Attributes inherited from bitpit::SurfaceKernel | |
static BITPIT_PUBLIC_API const unsigned short | SELECT_ALL = 3 |
static BITPIT_PUBLIC_API const unsigned short | SELECT_QUAD = 2 |
static BITPIT_PUBLIC_API const unsigned short | SELECT_TRIANGLE = 1 |
Protected Types inherited from bitpit::PatchKernel | |
typedef uint16_t | AlterationFlags |
typedef std::unordered_map< long, AlterationFlags > | AlterationFlagsStorage |
Protected Attributes inherited from bitpit::PatchKernel | |
AlterationFlagsStorage | m_alteredCells |
AlterationFlagsStorage | m_alteredInterfaces |
PiercedVector< Cell > | m_cells |
PiercedVector< Interface > | m_interfaces |
PiercedVector< Vertex > | m_vertices |
Static Protected Attributes inherited from bitpit::PatchKernel | |
static const double | DEFAULT_PARTITIONING_WEIGTH = 1. |
static const AlterationFlags | FLAG_ADJACENCIES_DIRTY = (1u << 1) |
static const AlterationFlags | FLAG_DANGLING = (1u << 3) |
static const AlterationFlags | FLAG_DELETED = (1u << 0) |
static const AlterationFlags | FLAG_INTERFACES_DIRTY = (1u << 2) |
static const AlterationFlags | FLAG_NONE = 0x0 |
The SurfUnstructured class defines an unstructured surface triangulation.
SurfUnstructured defines an unstructured surface triangulation.
Definition at line 36 of file surfunstructured.hpp.
bitpit::SurfUnstructured::SurfUnstructured | ( | MPI_Comm | communicator, |
std::size_t | haloSize = 1 ) |
Creates an uninitialized partitioned patch.
If a null comunicator is provided, a serial patch will be created, this means that each processor will be unaware of the existence of the other processes.
communicator | is the communicator to be used for exchanging data among the processes |
haloSize | is the size, expressed in number of layers, of the ghost cells halo |
Definition at line 55 of file surfunstructured.cpp.
bitpit::SurfUnstructured::SurfUnstructured | ( | int | dimension, |
MPI_Comm | communicator, | ||
std::size_t | haloSize = 1 ) |
Creates a patch.
If a null comunicator is provided, a serial patch will be created, this means that each processor will be unaware of the existence of the other processes.
dimension | is the dimension of the patch |
communicator | is the communicator to be used for exchanging data among the processes |
haloSize | is the size, expressed in number of layers, of the ghost cells halo |
Definition at line 81 of file surfunstructured.cpp.
bitpit::SurfUnstructured::SurfUnstructured | ( | int | id, |
int | dimension, | ||
MPI_Comm | communicator, | ||
std::size_t | haloSize = 1 ) |
Creates a patch.
If a null comunicator is provided, a serial patch will be created, this means that each processor will be unaware of the existence of the other processes.
id | is the id of the patch |
dimension | is the dimension of the patch |
communicator | is the communicator to be used for exchanging data among the processes |
haloSize | is the size, expressed in number of layers, of the ghost cells halo |
Definition at line 110 of file surfunstructured.cpp.
bitpit::SurfUnstructured::SurfUnstructured | ( | std::istream & | stream, |
MPI_Comm | communicator, | ||
std::size_t | haloSize = 1 ) |
Creates a patch restoring the patch saved in the specified stream.
The number of processes in the communicator should be equal to the number of processes of the communicator used when dumping the patch.
stream | is the stream to read from |
communicator | is the communicator to be used for exchanging data among the processes |
haloSize | is the size, expressed in number of layers, of the ghost cells halo |
Definition at line 138 of file surfunstructured.cpp.
|
overrideprotectedvirtual |
Write the patch to the specified stream.
stream | is the stream to write to |
Implements bitpit::PatchKernel.
Definition at line 181 of file surfunstructured.cpp.
|
overrideprotectedvirtual |
Get the version associated to the binary dumps.
Implements bitpit::PatchKernel.
Definition at line 169 of file surfunstructured.cpp.
|
overrideprotectedvirtual |
Restore the patch from the specified stream.
stream | is the stream to read from |
Implements bitpit::PatchKernel.
Definition at line 198 of file surfunstructured.cpp.
|
overridevirtual |
Creates a clone of the pach.
Implements bitpit::PatchKernel.
Definition at line 159 of file surfunstructured.cpp.
int bitpit::SurfUnstructured::exportDGF | ( | const std::string & | filename | ) |
Export surface tasselation to DGF file
[in] | filename | name of dgf file |
Definition at line 1136 of file surfunstructured.cpp.
int bitpit::SurfUnstructured::exportSTL | ( | const std::string & | filename, |
bool | isBinary ) |
Export surface tasselation in a STL format. No check is perfomed on element type therefore tasselation containing vertex, line or quad elements will produce ill-formed stl triangulation.
[in] | filename | name of the stl file |
[in] | isBinary | flag for binary (true) or ASCII (false) file |
Definition at line 569 of file surfunstructured.cpp.
int bitpit::SurfUnstructured::exportSTL | ( | const std::string & | filename, |
bool | isBinary, | ||
bool | isMulti, | ||
std::unordered_map< int, std::string > * | PIDNames = nullptr ) |
Export surface tasselation in a STL format. No check is perfomed on element type therefore tasselation containing vertex, line or quad elements will produce ill-formed stl triangulation. Overloading supporting the the ascii multi-solid mode export.
[in] | filename | name of the stl file |
[in] | isBinary | flag for binary (true) or ASCII (false) file |
[in] | isMulti | flag to write in ASCII multi-solid mode (true) or not (false). If true, isBinary flag will be ignored. |
[in,out] | PIDNames | are the names of the PIDs, if a PIDs has no name its number will be used |
Definition at line 587 of file surfunstructured.cpp.
|
protected |
Export surface tasselation in a STL Multi Solid format, in ascii mode only. Binary is not supported for STL Multisolid. No check is perfomed on element type therefore tasselation containing vertex, line or quad elements will produce ill-formed stl triangulation. If available, ghost cells will be written in a stand-alone solid.
[in] | filename | name of the stl file |
[in,out] | PIDNames | are the names of the PIDs, if a PIDs has no name its number will be used |
Definition at line 782 of file surfunstructured.cpp.
|
protected |
Export surface tasselation in a STL format. No check is perfomed on element type therefore tasselation containing vertex, line or quad elements will produce ill-formed stl triangulation.
[in] | filename | name of the stl file |
[in] | isBinary | flag for binary (true) or ASCII (false) file |
Definition at line 612 of file surfunstructured.cpp.
void bitpit::SurfUnstructured::extractEdgeNetwork | ( | LineUnstructured & | net | ) |
Extract the edge network from surface mesh. If adjacencies are not built edges shared by more than 1 element are counted twice. Edges are appended to the content of the input SurfUnstructured
[in,out] | net | on output stores the network of edges |
Definition at line 240 of file surfunstructured.cpp.
|
staticprotected |
Get the element type of a facet with the specified number of vertices.
[in] | nFacetVertices | is the number of the vertices of the facet |
Definition at line 1195 of file surfunstructured.cpp.
int bitpit::SurfUnstructured::importDGF | ( | const std::string & | filename, |
bool | joinFacets, | ||
int | PIDOffset = 0, | ||
bool | PIDSquash = false ) |
Import surface tasselation from DGF file.
It is possible to control if DGF factes that share the same vertices will be joined together or if a separate set of vertices will be created for with each facet. When faces are joined together, vertices with a distance less than (10 * machine epsilon) are considered conincident and will be merged together.
DGF facets are added to the present mesh, i.e. current mesh content is not discarded. However, factes are not joined to the cells of the current mesh. After importing the DGF, the resulting mesh can contain duplicate vertices and cells.
[in] | filename | name of dgf file |
[in] | joinFacets | if set to true, facets sharing the same vertices will be joined together, otherwise a separate set of vertices will be created for each facet. In any case, factes will not be joined to the cells of the current mesh |
[in] | PIDOffset | is the offset for the PID numbering |
[in] | PIDSquash | controls if the PID of the cells will be read from the file or if the same PID will be assigned to all cells |
Definition at line 1029 of file surfunstructured.cpp.
int bitpit::SurfUnstructured::importDGF | ( | const std::string & | filename, |
int | PIDOffset = 0, | ||
bool | PIDSquash = false ) |
Import surface tasselation from DGF file.
A separate set of vertices will be created for with each facet.
DGF facets are added to the present mesh, i.e. current mesh content is not discarded. However, factes are not joined to the cells of the current mesh. After importing the DGF, the resulting mesh can contain duplicate vertices and cells.
[in] | filename | name of dgf file |
[in] | PIDOffset | is the offset for the PID numbering |
[in] | PIDSquash | controls if the PID of the cells will be read from the file or if the same PID will be assigned to all cells |
Definition at line 999 of file surfunstructured.cpp.
int bitpit::SurfUnstructured::importSTL | ( | const std::string & | filename, |
bool | isBinary, | ||
int | PIDOffset = 0, | ||
bool | PIDSquash = false, | ||
std::unordered_map< int, std::string > * | PIDNames = nullptr ) |
Import surface tasselation from STL file.
A separate set of vertices will be created for with each facet.
STL facets are added to the present mesh, i.e. current mesh content is not discarded. However, factes are not joined to the cells of the current mesh. After importing the STL, the resulting mesh can contain duplicate vertices and cells.
If the input file is a multi-solid ASCII file, all solids will be loaded and a different PID will be assigned to the PID of the different solids.
[in] | filename | name of stl file |
[in] | isBinary | flag for binary (true), of ASCII (false) stl file |
[in] | PIDOffset | is the offset for the PID numbering |
[in] | PIDSquash | controls if the PID of the cells will be read from the file or if the same PID will be assigned to all cells |
[in,out] | PIDNames | are the names of the PIDs, on output the names of the newly imported PIDs will be added to the list |
Definition at line 358 of file surfunstructured.cpp.
int bitpit::SurfUnstructured::importSTL | ( | const std::string & | filename, |
int | PIDOffset = 0, | ||
bool | PIDSquash = false ) |
Import surface tasselation from STL file.
A separate set of vertices will be created for with each facet.
STL facets are added to the present mesh, i.e. current mesh content is not discarded. However, factes are not joined to the cells of the current mesh. After importing the STL, the resulting mesh can contain duplicate vertices and cells.
If the input file is a multi-solid ASCII file, all solids will be loaded and a different PID will be assigned to the PID of the different solids.
[in] | filename | name of stl file |
[in] | PIDOffset | is the offset for the PID numbering |
[in] | PIDSquash | controls if the PID of the cells will be read from the file or if the same PID will be assigned to all cells |
Definition at line 329 of file surfunstructured.cpp.
int bitpit::SurfUnstructured::importSTL | ( | const std::string & | filename, |
STLReader::Format | format, | ||
bool | joinFacets, | ||
int | PIDOffset = 0, | ||
bool | PIDSquash = false, | ||
std::unordered_map< int, std::string > * | PIDNames = nullptr ) |
Import surface tasselation from STL file.
It is possible to control if STL factes that share the same vertices will be joined together or if a separate set of vertices will be created for with each facet. When faces are joined together, vertices with a distance less than (10 * machine epsilon) are considered conincident and will be merged together.
STL facets are added to the present mesh, i.e. current mesh content is not discarded. However, factes are not joined to the cells of the current mesh. After importing the STL, the resulting mesh can contain duplicate vertices and cells.
If the input file is a multi-solid ASCII file, all solids will be loaded and a different PID will be assigned to the PID of the different solids. Solids will not be joined together, only facets whithin a solid can be joined.
[in] | filename | name of stl file |
[in] | format | is the format of stl file |
[in] | joinFacets | if set to true, facets sharing the same vertices will be joined together, otherwise a separate set of vertices will be created for each facet. In any case, factes will not be joined to the cells of the current mesh |
[in] | PIDOffset | is the offset for the PID numbering |
[in] | PIDSquash | controls if the PID of the cells will be read from the file (false) or if the same PID will be assigned to all cells (true). |
[in,out] | PIDNames | are the names of the PIDs, on output the names of the newly imported PIDs will be added to the list |
Definition at line 405 of file surfunstructured.cpp.
|
overridevirtual |
Locates the cell the contains the point.
If the point is not inside the patch, the function returns the id of the null element.
NOTE: this function is not implemented yet.
[in] | point | is the point to be checked |
Implements bitpit::PatchKernel.
Definition at line 223 of file surfunstructured.cpp.
|
virtual |
Implements bitpit::PatchKernel.
long bitpit::PatchKernel::locatePoint | ( | double | x, |
double | y, | ||
double | z ) const |
Locates the cell the contains the point.
If the point is not inside the patch, the function returns the id of the null element.
[in] | x | is the x coordinate of the point |
[in] | y | is the y coordinate of the point |
[in] | z | is the z coordinate of the point |
Definition at line 645 of file patch_kernel.cpp.