VirtualFluids 0.2.0
Parallel CFD LBM Solver
Loading...
Searching...
No Matches
GbVoxelMatrix3D Class Reference

#include <GbVoxelMatrix3D.h>

Inheritance diagram for GbVoxelMatrix3D:
GbObject3D UbObserver ObObject UbObservable

Public Types

enum  Endian { BigEndian , LittleEndian }
 
using Matrix3D = CbArray3D< float >
 

Public Member Functions

 GbVoxelMatrix3D ()
 
 GbVoxelMatrix3D (int nx1, int nx2, int nx3, float initVal, double lowerThreshold=0, double upperThreshold=0)
 
 GbVoxelMatrix3D (const Matrix3D &voxelMatrix, double lowerThreshold=0, double upperThreshold=0)
 
 ~GbVoxelMatrix3D () override=default
 
void finalize () override
 
GbVoxelMatrix3Dclone () override
 
Matrix3D::reference operator() (const Matrix3D::size_type &x1, const Matrix3D::size_type &x2, const Matrix3D::size_type &x3)
 
Matrix3D::const_reference operator() (const Matrix3D::size_type &x1, const Matrix3D::size_type &x2, const Matrix3D::size_type &x3) const
 
void setTransferViaFilename (bool transferViaFilename, std::string filename)
 
void setThreshold (double lowerThreshold, double upperThreshold)
 
void setAddSurfaceTriangleSetFlag (bool flag)
 
void setVoxelMatrixMininum (double minX1, double minX2, double minX3)
 
void setVoxelMatrixMinX1 (double minX1)
 
void setVoxelMatrixMinX2 (double minX2)
 
void setVoxelMatrixMinX3 (double minX3)
 
void setVoxelMatrixDelta (double deltaX1, double deltaX2, double deltaX3)
 
void setVoxelMatrixDeltaX1 (double deltaX1)
 
void setVoxelMatrixDeltaX2 (double deltaX2)
 
void setVoxelMatrixDeltaX3 (double deltaX3)
 
double getX1Centroid () override
 
double getX1Minimum () override
 
double getX1Maximum () override
 
double getX2Centroid () override
 
double getX2Minimum () override
 
double getX2Maximum () override
 
double getX3Centroid () override
 
double getX3Minimum () override
 
double getX3Maximum () override
 
double getLengthX1 ()
 
double getLengthX2 ()
 
double getLengthX3 ()
 
void setCenterCoordinates (const double &x1, const double &x2, const double &x3) override
 
void translate (const double &tx1, const double &tx2, const double &tx3) override
 
bool isPointInGbObject3D (const double &x1p, const double &x2p, const double &x3p, bool &pointIsOnBoundary) override
 
bool isPointInGbObject3D (const double &x1p, const double &x2p, const double &x3p) override
 
bool isCellInsideGbObject3D (const double &x1a, const double &x2a, const double &x3a, const double &x1b, const double &x2b, const double &x3b) override
 
bool isCellCuttingGbObject3D (const double &x1a, const double &x2a, const double &x3a, const double &x1b, const double &x2b, const double &x3b) override
 
bool isCellInsideOrCuttingGbObject3D (const double &x1a, const double &x2a, const double &x3a, const double &x1b, const double &x2b, const double &x3b) override
 
GbPoint3DcalculateInterSectionPoint3D (GbPoint3D &, GbPoint3D &)
 
GbLine3DcreateClippedLine3D (GbPoint3D &, GbPoint3D &) override
 
std::vector< GbTriangle3D * > getSurfaceTriangleSet () override
 
void addSurfaceTriangleSet (std::vector< UbTupleFloat3 > &nodes, std::vector< UbTupleInt3 > &triangles) override
 
bool hasRaytracing () override
 
double getIntersectionRaytraceFactor (const double &x1, const double &x2, const double &x3, const double &rx1, const double &rx2, const double &rx3) override
 
std::string toString () override
 
void objectChanged (UbObservable *) override
 
void objectWillBeDeleted (UbObservable *) override
 
template<class T >
void readMatrixFromRawFile (std::string filename, GbVoxelMatrix3D::Endian endian)
 
template<class T >
void readBufferedMatrixFromRawFile (std::string filename, GbVoxelMatrix3D::Endian endian)
 
void readMatrixFromVtiASCIIFile (std::string filename)
 Reads a VTI file in ASCII format and fills the voxel matrix applying the thresholds. Generated with the assistance of GitHub Copilot ver. 1.387.0 using GPT-5 mini. Reviewed and adapted by Konstantin Kutscher.
 
void readMatrixFromVtiAppendedFile (std::string filename)
 Reads a VTI file in appended binary format and fills the voxel matrix applying the thresholds. Generated with the assistance of GitHub Copilot ver. 1.387.0 using GPT-5 mini. Reviewed and adapted by Konstantin Kutscher.
 
void rotate90aroundX ()
 
void rotate90aroundY ()
 
void rotate90aroundZ ()
 
void rotate90aroundX (double cX1, double cX2, double cX3)
 
void rotate90aroundY (double cX1, double cX2, double cX3)
 
void rotate90aroundZ (double cX1, double cX2, double cX3)
 
void mirrorX ()
 
void mirrorY ()
 
void mirrorZ ()
 
void rotateAroundY (double theta)
 
void writeToLegacyVTKASCII (const std::string &fileName)
 
void writeToLegacyVTKBinary (const std::string &fileName)
 
void writeToVTKImageDataASCII (const std::string &fileName)
 
void writeToVTKImageDataAppended (const std::string &fileName)
 
void setClosedVoidSpaceToSolid ()
 
void calculateNumberOfSolidAndFluid ()
 
long getNumberOfSolid ()
 
long getNumberOfFluid ()
 
- Public Member Functions inherited from GbObject3D
virtual ~GbObject3D ()=default
 
double getLengthX1 ()
 
double getLengthX2 ()
 
double getLengthX3 ()
 
virtual void setCenterX1Coordinate (const double &)
 
virtual void setCenterX2Coordinate (const double &)
 
virtual void setCenterX3Coordinate (const double &)
 
virtual void rotate (const double &, const double &, const double &)
 
virtual void scale (const double &, const double &, const double &)
 
virtual double getCellVolumeInsideGbObject3D (const double &, const double &, const double &, const double &, const double &, const double &)
 
virtual bool isInsideCell (const double &minX1, const double &minX2, const double &minX3, const double &maxX1, const double &maxX2, const double &maxX3)
 
virtual bool raytracingSupportsPointsInside ()
 
- Public Member Functions inherited from ObObject
 ObObject ()=default
 
 ObObject (const std::string &name)
 
 ~ObObject () override=default
 
virtual std::string getName ()
 
void setName (std::string name)
 
- Public Member Functions inherited from UbObservable
virtual ~UbObservable ()
 
virtual void addObserver (UbObserver *observer)
 
virtual void removeObserver (UbObserver *observer)
 
virtual void removeAllObservers ()
 
virtual bool isObservedBy (UbObserver *observer)
 
virtual void notifyObserversObjectChanged ()
 
std::list< UbObserver * > * getObserverList ()
 
- Public Member Functions inherited from UbObserver
virtual ~UbObserver ()=default
 

Static Public Attributes

static const float SOLID = 1.0f
 
static const float FLUID = 0.0f
 

Protected Member Functions

void findFluidNeighbor (int cx1, int cx2, int cx3)
 
virtual bool isPointInGbObject3D (GbPoint3D *p)
 
virtual bool isPointInGbObject3D (const double &x1, const double &x2, const double &x3, bool &pointIsOnBoundary)=0
 
virtual bool isPointInGbObject3D (const double &x1, const double &x2, const double &x3)=0
 
virtual void setCenterCoordinates (const double &, const double &, const double &)
 
virtual void setCenterCoordinates (const UbTupleDouble3 &)
 
- Protected Member Functions inherited from UbObservable
 UbObservable ()=default
 
 UbObservable (const UbObservable &)
 
UbObservableoperator= (const UbObservable &)
 
- Protected Member Functions inherited from UbObserver
 UbObserver ()=default
 

Protected Attributes

Matrix3D voxelMatrixTemp
 
CbArray3D< charflagMatrix
 
std::vector< intx1Nbr
 
std::vector< intx2Nbr
 
std::vector< intx3Nbr
 
std::vector< intx1NbrTemp
 
std::vector< intx2NbrTemp
 
std::vector< intx3NbrTemp
 
std::string filename
 
bool transferViaFilename { false }
 
bool addSurfaceTriangleSetFlag { true }
 
int nodesX1 { 0 }
 
int nodesX2 { 0 }
 
int nodesX3 { 0 }
 
double lowerThreshold { 0.0 }
 
double upperThreshold { 0.0 }
 
double minX1 { 0.0 }
 
double minX2 { 0.0 }
 
double minX3 { 0.0 }
 
double deltaX1 { 1.0 }
 
double deltaX2 { 1.0 }
 
double deltaX3 { 1.0 }
 
Matrix3D voxelMatrix
 
long numberOfSolid
 
long numberOfFluid
 

Detailed Description

Definition at line 52 of file GbVoxelMatrix3D.h.

Member Typedef Documentation

◆ Matrix3D

Member Enumeration Documentation

◆ Endian

Enumerator
BigEndian 
LittleEndian 

Definition at line 58 of file GbVoxelMatrix3D.h.

Constructor & Destructor Documentation

◆ ~GbVoxelMatrix3D()

GbVoxelMatrix3D::~GbVoxelMatrix3D ( )
overridedefault

Member Function Documentation

◆ calculateInterSectionPoint3D()

GbPoint3D * GbVoxelMatrix3D::calculateInterSectionPoint3D ( GbPoint3D ,
GbPoint3D  
)
inline

Definition at line 146 of file GbVoxelMatrix3D.h.

◆ createClippedLine3D()

GbLine3D * GbVoxelMatrix3D::createClippedLine3D ( GbPoint3D ,
GbPoint3D  
)
inlineoverridevirtual

Implements GbObject3D.

Definition at line 150 of file GbVoxelMatrix3D.h.

◆ finalize()

void GbVoxelMatrix3D::finalize ( )
inlineoverridevirtual

Implements GbObject3D.

Definition at line 65 of file GbVoxelMatrix3D.h.

◆ getLengthX1()

double GbVoxelMatrix3D::getLengthX1 ( )
inline

Definition at line 128 of file GbVoxelMatrix3D.h.

◆ getLengthX2()

double GbVoxelMatrix3D::getLengthX2 ( )
inline

Definition at line 129 of file GbVoxelMatrix3D.h.

◆ getLengthX3()

double GbVoxelMatrix3D::getLengthX3 ( )
inline

Definition at line 130 of file GbVoxelMatrix3D.h.

◆ getX1Centroid()

double GbVoxelMatrix3D::getX1Centroid ( )
inlineoverridevirtual

Returns the centroid x1 coordinate of this 3D object.

Returns
the centroid x1 coordinate of this 3D object

Implements GbObject3D.

Definition at line 116 of file GbVoxelMatrix3D.h.

◆ getX1Maximum()

double GbVoxelMatrix3D::getX1Maximum ( )
inlineoverridevirtual

Returns the maximum x1 coordinate of this 3D object.

Returns
the maximum x1 coordinate of this 3D object

Implements GbObject3D.

Definition at line 118 of file GbVoxelMatrix3D.h.

◆ getX1Minimum()

double GbVoxelMatrix3D::getX1Minimum ( )
inlineoverridevirtual

Returns the minimum x1 coordinate of this 3D object.

Returns
the minimum x1 coordinate of this 3D object

Implements GbObject3D.

Definition at line 117 of file GbVoxelMatrix3D.h.

◆ getX2Centroid()

double GbVoxelMatrix3D::getX2Centroid ( )
inlineoverridevirtual

Returns the centroid x2 coordinate of this 3D object.

Returns
the centroid x2 coordinate of this 3D object

Implements GbObject3D.

Definition at line 120 of file GbVoxelMatrix3D.h.

◆ getX2Maximum()

double GbVoxelMatrix3D::getX2Maximum ( )
inlineoverridevirtual

Returns the maximum x2 coordinate of this 3D object.

Returns
the maximum x2 coordinate of this 3D object

Implements GbObject3D.

Definition at line 122 of file GbVoxelMatrix3D.h.

◆ getX2Minimum()

double GbVoxelMatrix3D::getX2Minimum ( )
inlineoverridevirtual

Returns the minimum x2 coordinate of this 3D object.

Returns
the minimum x2 coordinate of this 3D object

Implements GbObject3D.

Definition at line 121 of file GbVoxelMatrix3D.h.

◆ getX3Centroid()

double GbVoxelMatrix3D::getX3Centroid ( )
inlineoverridevirtual

Implements GbObject3D.

Definition at line 124 of file GbVoxelMatrix3D.h.

◆ getX3Maximum()

double GbVoxelMatrix3D::getX3Maximum ( )
inlineoverridevirtual

Returns the maximum x2 coordinate of this 3D object.

Returns
the maximum x2 coordinate of this 3D object

Implements GbObject3D.

Definition at line 126 of file GbVoxelMatrix3D.h.

◆ getX3Minimum()

double GbVoxelMatrix3D::getX3Minimum ( )
inlineoverridevirtual

Returns the minimum x2 coordinate of this 3D object.

Returns
the minimum x2 coordinate of this 3D object

Implements GbObject3D.

Definition at line 125 of file GbVoxelMatrix3D.h.

◆ hasRaytracing()

bool GbVoxelMatrix3D::hasRaytracing ( )
inlineoverridevirtual

Reimplemented from GbObject3D.

Definition at line 158 of file GbVoxelMatrix3D.h.

◆ isPointInGbObject3D() [1/3]

virtual bool GbObject3D::isPointInGbObject3D ( const double x1,
const double x2,
const double x3 
)
protectedvirtual

Implements GbObject3D.

◆ isPointInGbObject3D() [2/3]

virtual bool GbObject3D::isPointInGbObject3D ( const double x1,
const double x2,
const double x3,
bool pointIsOnBoundary 
)
protectedvirtual

Implements GbObject3D.

◆ isPointInGbObject3D() [3/3]

bool GbObject3D::isPointInGbObject3D ( GbPoint3D p)
protectedvirtual

Reimplemented from GbObject3D.

Definition at line 153 of file GbObject3D.cpp.

◆ objectChanged()

void GbVoxelMatrix3D::objectChanged ( UbObservable changedObject)
inlineoverridevirtual

This function is called when the observable indicated that an object has changed.

Parameters
changedObjectObject which has changed

Implements UbObserver.

Definition at line 166 of file GbVoxelMatrix3D.h.

◆ objectWillBeDeleted()

void GbVoxelMatrix3D::objectWillBeDeleted ( UbObservable objectForDeletion)
inlineoverridevirtual

This function is called when the observable indicated that an object should be deleted.

Parameters
objectForDeletionObject which should be deleted

Implements UbObserver.

Definition at line 167 of file GbVoxelMatrix3D.h.

◆ operator()() [1/2]

Matrix3D::reference GbVoxelMatrix3D::operator() ( const Matrix3D::size_type x1,
const Matrix3D::size_type x2,
const Matrix3D::size_type x3 
)
inline

Definition at line 69 of file GbVoxelMatrix3D.h.

◆ operator()() [2/2]

Matrix3D::const_reference GbVoxelMatrix3D::operator() ( const Matrix3D::size_type x1,
const Matrix3D::size_type x2,
const Matrix3D::size_type x3 
) const
inline

Definition at line 75 of file GbVoxelMatrix3D.h.

◆ setAddSurfaceTriangleSetFlag()

void GbVoxelMatrix3D::setAddSurfaceTriangleSetFlag ( bool  flag)
inline

Definition at line 91 of file GbVoxelMatrix3D.h.

◆ setCenterCoordinates() [1/2]

virtual void GbObject3D::setCenterCoordinates ( const double ,
const double ,
const double  
)
inlineprotectedvirtual

Reimplemented from GbObject3D.

Definition at line 129 of file GbObject3D.h.

◆ setCenterCoordinates() [2/2]

virtual void GbObject3D::setCenterCoordinates ( const UbTupleDouble3 )
inlineprotectedvirtual

Reimplemented from GbObject3D.

Definition at line 133 of file GbObject3D.h.

◆ setThreshold()

void GbVoxelMatrix3D::setThreshold ( double  lowerThreshold,
double  upperThreshold 
)
inline

Definition at line 86 of file GbVoxelMatrix3D.h.

◆ setTransferViaFilename()

void GbVoxelMatrix3D::setTransferViaFilename ( bool  transferViaFilename,
std::string  filename 
)
inline

Definition at line 81 of file GbVoxelMatrix3D.h.

◆ setVoxelMatrixDelta()

void GbVoxelMatrix3D::setVoxelMatrixDelta ( double  deltaX1,
double  deltaX2,
double  deltaX3 
)
inline

Definition at line 105 of file GbVoxelMatrix3D.h.

◆ setVoxelMatrixDeltaX1()

void GbVoxelMatrix3D::setVoxelMatrixDeltaX1 ( double  deltaX1)
inline

Definition at line 111 of file GbVoxelMatrix3D.h.

◆ setVoxelMatrixDeltaX2()

void GbVoxelMatrix3D::setVoxelMatrixDeltaX2 ( double  deltaX2)
inline

Definition at line 112 of file GbVoxelMatrix3D.h.

◆ setVoxelMatrixDeltaX3()

void GbVoxelMatrix3D::setVoxelMatrixDeltaX3 ( double  deltaX3)
inline

Definition at line 113 of file GbVoxelMatrix3D.h.

◆ setVoxelMatrixMininum()

void GbVoxelMatrix3D::setVoxelMatrixMininum ( double  minX1,
double  minX2,
double  minX3 
)
inline

Definition at line 94 of file GbVoxelMatrix3D.h.

◆ setVoxelMatrixMinX1()

void GbVoxelMatrix3D::setVoxelMatrixMinX1 ( double  minX1)
inline

Definition at line 100 of file GbVoxelMatrix3D.h.

◆ setVoxelMatrixMinX2()

void GbVoxelMatrix3D::setVoxelMatrixMinX2 ( double  minX2)
inline

Definition at line 101 of file GbVoxelMatrix3D.h.

◆ setVoxelMatrixMinX3()

void GbVoxelMatrix3D::setVoxelMatrixMinX3 ( double  minX3)
inline

Definition at line 102 of file GbVoxelMatrix3D.h.

Member Data Documentation

◆ addSurfaceTriangleSetFlag

bool GbVoxelMatrix3D::addSurfaceTriangleSetFlag { true }
protected

Definition at line 222 of file GbVoxelMatrix3D.h.

◆ deltaX1

double GbVoxelMatrix3D::deltaX1 { 1.0 }
protected

Definition at line 232 of file GbVoxelMatrix3D.h.

◆ deltaX2

double GbVoxelMatrix3D::deltaX2 { 1.0 }
protected

Definition at line 233 of file GbVoxelMatrix3D.h.

◆ deltaX3

double GbVoxelMatrix3D::deltaX3 { 1.0 }
protected

Definition at line 234 of file GbVoxelMatrix3D.h.

◆ filename

std::string GbVoxelMatrix3D::filename
protected

Definition at line 219 of file GbVoxelMatrix3D.h.

◆ flagMatrix

CbArray3D<char> GbVoxelMatrix3D::flagMatrix
protected

Definition at line 202 of file GbVoxelMatrix3D.h.

◆ lowerThreshold

double GbVoxelMatrix3D::lowerThreshold { 0.0 }
protected

Definition at line 227 of file GbVoxelMatrix3D.h.

◆ minX1

double GbVoxelMatrix3D::minX1 { 0.0 }
protected

Definition at line 229 of file GbVoxelMatrix3D.h.

◆ minX2

double GbVoxelMatrix3D::minX2 { 0.0 }
protected

Definition at line 230 of file GbVoxelMatrix3D.h.

◆ minX3

double GbVoxelMatrix3D::minX3 { 0.0 }
protected

Definition at line 231 of file GbVoxelMatrix3D.h.

◆ nodesX1

int GbVoxelMatrix3D::nodesX1 { 0 }
protected

Definition at line 224 of file GbVoxelMatrix3D.h.

◆ nodesX2

int GbVoxelMatrix3D::nodesX2 { 0 }
protected

Definition at line 225 of file GbVoxelMatrix3D.h.

◆ nodesX3

int GbVoxelMatrix3D::nodesX3 { 0 }
protected

Definition at line 226 of file GbVoxelMatrix3D.h.

◆ numberOfFluid

long GbVoxelMatrix3D::numberOfFluid
protected

Definition at line 239 of file GbVoxelMatrix3D.h.

◆ numberOfSolid

long GbVoxelMatrix3D::numberOfSolid
protected

Definition at line 238 of file GbVoxelMatrix3D.h.

◆ transferViaFilename

bool GbVoxelMatrix3D::transferViaFilename { false }
protected

Definition at line 220 of file GbVoxelMatrix3D.h.

◆ upperThreshold

double GbVoxelMatrix3D::upperThreshold { 0.0 }
protected

Definition at line 227 of file GbVoxelMatrix3D.h.

◆ voxelMatrix

Matrix3D GbVoxelMatrix3D::voxelMatrix
protected

Definition at line 236 of file GbVoxelMatrix3D.h.

◆ voxelMatrixTemp

Matrix3D GbVoxelMatrix3D::voxelMatrixTemp
protected

Definition at line 201 of file GbVoxelMatrix3D.h.

◆ x1Nbr

std::vector<int> GbVoxelMatrix3D::x1Nbr
protected

Definition at line 204 of file GbVoxelMatrix3D.h.

◆ x1NbrTemp

std::vector<int> GbVoxelMatrix3D::x1NbrTemp
protected

Definition at line 208 of file GbVoxelMatrix3D.h.

◆ x2Nbr

std::vector<int> GbVoxelMatrix3D::x2Nbr
protected

Definition at line 205 of file GbVoxelMatrix3D.h.

◆ x2NbrTemp

std::vector<int> GbVoxelMatrix3D::x2NbrTemp
protected

Definition at line 209 of file GbVoxelMatrix3D.h.

◆ x3Nbr

std::vector<int> GbVoxelMatrix3D::x3Nbr
protected

Definition at line 206 of file GbVoxelMatrix3D.h.

◆ x3NbrTemp

std::vector<int> GbVoxelMatrix3D::x3NbrTemp
protected

Definition at line 210 of file GbVoxelMatrix3D.h.


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