SPH
Public Member Functions | List of all members
BooleanDomain Class Reference
Inheritance diagram for BooleanDomain:
IDomain Polymorphic

Public Member Functions

 BooleanDomain (SharedPtr< IDomain > operA, SharedPtr< IDomain > operB, const Vector &offset, const BooleanEnum mode)
 
virtual Vector getCenter () const override
 Returns the center of the domain. More...
 
virtual Box getBoundingBox () const override
 Returns the bounding box of the domain. More...
 
virtual Float getVolume () const override
 Returns the total volume of the domain. More...
 
virtual Float getSurfaceArea () const override
 Returns the surface area of the domain. More...
 
virtual bool contains (const Vector &v1) const override
 Checks if the given point lies inside the domain. More...
 
virtual void getSubset (ArrayView< const Vector > vs, Array< Size > &output, const SubsetType type) const override
 Returns an array of indices, marking vectors with given property by their index. More...
 
virtual void getDistanceToBoundary (ArrayView< const Vector >, Array< Float > &) const override
 Returns distances of particles lying close to the boundary. More...
 
virtual void project (ArrayView< Vector > vs, Optional< ArrayView< Size >> indices) const override
 Projects vectors outside of the domain onto its boundary. More...
 
virtual void addGhosts (ArrayView< const Vector > vs, Array< Ghost > &ghosts, const Float eta, const Float eps) const override
 Duplicates positions located close to the boundary, placing copies ("ghosts") symmetrically to the other side of the domain. More...
 
- Public Member Functions inherited from Polymorphic
virtual ~Polymorphic ()
 

Detailed Description

Definition at line 509 of file GeometryJobs.cpp.

Constructor & Destructor Documentation

◆ BooleanDomain()

BooleanDomain::BooleanDomain ( SharedPtr< IDomain operA,
SharedPtr< IDomain operB,
const Vector offset,
const BooleanEnum  mode 
)
inline

Definition at line 519 of file GeometryJobs.cpp.

Member Function Documentation

◆ addGhosts()

virtual void BooleanDomain::addGhosts ( ArrayView< const Vector vs,
Array< Ghost > &  ghosts,
const Float  eta,
const Float  eps 
) const
inlineoverridevirtual

Duplicates positions located close to the boundary, placing copies ("ghosts") symmetrically to the other side of the domain.

Distance of the copy (ghost) to the boundary shall be the same as the source vector. One vector can create multiple ghosts.

Parameters
vsArray containing vectors creating ghosts.
ghostsOutput parameter containing created ghosts, stored as pairs (position of ghost and index of source vector). Array must be cleared by the function!
etaDimensionless distance to the boundary necessary for creating a ghost. A ghost is created for vector v if it is closer than radius * v[H]. Vector must be inside, outside vectors are ignored.
epsMinimal dimensionless distance of ghost from the source vector. When vector is too close to the boundary, the ghost would be too close or even on top of the source vector; implementation must place the ghost so that it is outside of the domain and at least eps * v[H] from the vector. Must be strictly lower than radius, checked by assert.
Todo:
this is not correct, do properly

Implements IDomain.

Definition at line 626 of file GeometryJobs.cpp.

◆ contains()

virtual bool BooleanDomain::contains ( const Vector v) const
inlineoverridevirtual

Checks if the given point lies inside the domain.

Points lying exactly on the boundary of the domain are assumed to be inside.

Implements IDomain.

Definition at line 578 of file GeometryJobs.cpp.

◆ getBoundingBox()

virtual Box BooleanDomain::getBoundingBox ( ) const
inlineoverridevirtual

Returns the bounding box of the domain.

Implements IDomain.

Definition at line 551 of file GeometryJobs.cpp.

◆ getCenter()

virtual Vector BooleanDomain::getCenter ( ) const
inlineoverridevirtual

Returns the center of the domain.

Implements IDomain.

Definition at line 547 of file GeometryJobs.cpp.

◆ getDistanceToBoundary()

virtual void BooleanDomain::getDistanceToBoundary ( ArrayView< const Vector vs,
Array< Float > &  distances 
) const
inlineoverridevirtual

Returns distances of particles lying close to the boundary.

The distances are signed, negative number means the particle is lying outside of the domain. Distances can be computed with small error to simplify implementation.

Parameters
vsInput array of points.
distancesOutput array, will be resized to the size of particle array and cleared.
Todo:
unify the (non)clearing of output arrays

Implements IDomain.

Definition at line 612 of file GeometryJobs.cpp.

◆ getSubset()

virtual void BooleanDomain::getSubset ( ArrayView< const Vector vs,
Array< Size > &  output,
const SubsetType  type 
) const
inlineoverridevirtual

Returns an array of indices, marking vectors with given property by their index.

Parameters
vsInput array of points.
outputOutput array, is not cleared by the method, previously stored values are kept unchanged. Indices of vectors belonging in the subset are pushed into the array.
typeType of the subset, see SubsetType.

Implements IDomain.

Definition at line 592 of file GeometryJobs.cpp.

◆ getSurfaceArea()

virtual Float BooleanDomain::getSurfaceArea ( ) const
inlineoverridevirtual

Returns the surface area of the domain.

Implements IDomain.

Definition at line 573 of file GeometryJobs.cpp.

◆ getVolume()

virtual Float BooleanDomain::getVolume ( ) const
inlineoverridevirtual

Returns the total volume of the domain.

This should be identical to computing an integral of isInside function, although faster and more precise.

Implements IDomain.

Definition at line 569 of file GeometryJobs.cpp.

◆ project()

virtual void BooleanDomain::project ( ArrayView< Vector vs,
Optional< ArrayView< Size >>  indices 
) const
inlineoverridevirtual

Projects vectors outside of the domain onto its boundary.

Vectors inside the domain are untouched. Function does not affect 4th component of vectors.

Parameters
vsArray of vectors we want to project
indicesOptional array of indices. If passed, only selected vectors will be projected. All vectors are projected by default.
Todo:
this is not correct, do properly

Implements IDomain.

Definition at line 616 of file GeometryJobs.cpp.


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