hemocell
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Private Member Functions | Private Attributes | List of all members
hemo::HemoCellParticleField Class Reference

#include <hemoCellParticleField.h>

Inheritance diagram for hemo::HemoCellParticleField:
Inheritance graph
[legend]
Collaboration diagram for hemo::HemoCellParticleField:
Collaboration graph
[legend]

Public Member Functions

 HemoCellParticleField (plint nx, plint ny, plint nz)
 
virtual ~HemoCellParticleField ()
 
 HemoCellParticleField (HemoCellParticleField const &rhs)
 
HemoCellParticleFieldoperator= (HemoCellParticleField const &rhs)
 
HemoCellParticleFieldclone () const
 
void swap (HemoCellParticleField &rhs)
 
virtual void applyConstitutiveModel (bool forced=false)
 
virtual void addParticle (HemoCellParticle *particle)
 
void addParticle (const HemoCellParticle::serializeValues_t &sv)
 
void addParticlePreinlet (const HemoCellParticle::serializeValues_t &sv)
 
virtual void removeParticles (plb::Box3D domain)
 
virtual void removeParticles_inverse (plb::Box3D domain)
 
virtual void removeParticles (plb::Box3D domain, plint tag)
 
virtual void removeParticles (plint tag)
 
virtual void findParticles (plb::Box3D domain, std::vector< HemoCellParticle * > &found)
 
virtual void findParticles (plb::Box3D domain, std::vector< const HemoCellParticle * > &found) const
 
void findParticles (plb::Box3D domain, std::vector< HemoCellParticle * > &found, pluint type)
 
virtual void advanceParticles ()
 
void applyRepulsionForce (bool forced=false)
 
virtual void interpolateFluidVelocity (plb::Box3D domain)
 
virtual void spreadParticleForce (plb::Box3D domain)
 
void separateForceVectors ()
 
void unifyForceVectors ()
 
void updateResidenceTime (unsigned int rtime)
 
virtual void findInternalParticleGridPoints (plb::Box3D domain)
 
virtual void internalGridPointsMembrane (plb::Box3D domain)
 
int deleteIncompleteCells (pluint ctype, bool verbose=true)
 
int deleteIncompleteCells (bool verbose=true)
 
void syncEnvelopes ()
 
void populateBoundaryParticles ()
 
void applyBoundaryRepulsionForce ()
 
void populateBindingSites (plb::Box3D &domain)
 
T eigenValueFromCell (plb::Cell< T, DESCRIPTOR > &cell)
 
void solidifyCells ()
 
void prepareSolidification ()
 
void setlocalDomain (plb::Box3D &localDomain_)
 
void computeGridPosition (hemo::Array< T, 3 > const &position, plint &iX, plint &iY, plint &iZ) const
 
void computeGridPosition (hemo::Array< T, 3 > const &position, plint *iX, plint *iY, plint *iZ) const
 
bool isContainedABS (const hemo::Array< T, 3 > &pos, const plb::Box3D &box) const
 
plb::Box3D & getBoundingBox ()
 
void outputPositions (plb::Box3D, vector< vector< T > > &, pluint, std::string &)
 
void outputVelocities (plb::Box3D, vector< vector< T > > &, pluint, std::string &)
 
void outputForces (plb::Box3D, vector< vector< T > > &, pluint, std::string &)
 
void outputForceVolume (plb::Box3D, vector< vector< T > > &, pluint, std::string &)
 
void outputForceArea (plb::Box3D, vector< vector< T > > &, pluint, std::string &)
 
void outputForceBending (plb::Box3D, vector< vector< T > > &, pluint, std::string &)
 
void outputForceLink (plb::Box3D, vector< vector< T > > &, pluint, std::string &)
 
void outputForceVisc (plb::Box3D, vector< vector< T > > &, pluint, std::string &)
 
void outputForceRepulsion (plb::Box3D, vector< vector< T > > &, pluint, std::string &)
 
void outputTriangles (plb::Box3D, vector< vector< plint > > &, pluint, std::string &)
 
void outputInnerLinks (plb::Box3D, vector< vector< plint > > &, pluint, std::string &)
 
void outputVertexId (plb::Box3D, vector< vector< T > > &, pluint, std::string &)
 
void outputCellId (plb::Box3D, vector< vector< T > > &, pluint, std::string &)
 
void outputForceInnerLink (plb::Box3D, vector< vector< T > > &, pluint, std::string &)
 
void outputResTime (plb::Box3D, vector< vector< T > > &, pluint, std::string &)
 
void AddOutputMap ()
 
void passthroughpass (int, plb::Box3D, vector< vector< T > > &, pluint, std::string &)
 
virtual HemoCellParticleDataTransfergetDataTransfer ()
 
virtual HemoCellParticleDataTransfer const & getDataTransfer () const
 
pluint getsize ()
 
plint nearestCell (T const) const
 
void invalidate_lpc ()
 
void invalidate_ppt ()
 
void invalidate_ppc ()
 
void invalidate_preinlet_ppc ()
 
void invalidate_pg ()
 
const vector< vector< unsigned int > > & get_particles_per_type ()
 
const map< int, vector< int > > & get_particles_per_cell ()
 
const map< int, vector< int > > & get_preinlet_particles_per_cell ()
 
const map< int, bool > & get_lpc ()
 
void insert_ppc (HemoCellParticle *particle, unsigned int index)
 
void insert_preinlet_ppc (HemoCellParticle *particle, unsigned int index)
 

Static Public Member Functions

static std::string getBlockName ()
 
static std::string basicType ()
 
static std::string descriptorType ()
 

Public Attributes

map< int, void(HemoCellParticleField::*)(plb::Box3D, vector< vector< T > > &, pluint, std::string &)> outputFunctionMap
 
pluint atomicBlockId
 
plb::BlockLattice3D< T, DESCRIPTOR > * atomicLattice = 0
 
plb::BlockLattice3D< T, CEPAC_DESCRIPTOR > * CEPAClattice = 0
 
vector< plintneighbours
 
vector< plb::Dot3D > boundaryParticles
 
pluint envelopeSize
 
vector< HemoCellParticleparticles
 
plb::Box3D boundingBox
 
int nFluidCells = 0
 
set< plb::Dot3D > internalPoints
 
plb::ScalarField3D< T > * interiorViscosityField = 0
 
HemoCellParticleDataTransferparticleDataTransfer
 
plint addParticleCount = 0
 
plb::Box3D localDomain
 
std::set< plb::Dot3D > bindingSites
 
plb::ScalarField3D< bool > * bindingField = 0
 

Static Public Attributes

static HemoCellFieldscellFields =0
 

Private Member Functions

void update_lpc ()
 
void update_ppc ()
 
void update_preinlet_ppc ()
 
void update_ppt ()
 
void update_pg ()
 
void issueWarning (HemoCellParticle &p)
 
unsigned int grid_index (int &nx, int &ny, int &nz)
 

Private Attributes

bool lpc_up_to_date = false
 
bool ppt_up_to_date = false
 
bool ppc_up_to_date = false
 
bool preinlet_ppc_up_to_date = false
 
bool pg_up_to_date = false
 
vector< vector< unsigned int > > _particles_per_type
 
map< int, vector< int > > _particles_per_cell
 
map< int, vector< int > > _preinlet_particles_per_cell
 
map< int, bool > _lpc
 
hemo::Array< unsigned int, 10 > * particle_grid = 0
 
unsigned int * particle_grid_size = 0
 
vector< hemo::Array< T, 3 > * > allocated_for_output
 

Constructor & Destructor Documentation

◆ HemoCellParticleField() [1/2]

hemo::HemoCellParticleField::HemoCellParticleField ( plint  nx,
plint  ny,
plint  nz 
)

◆ ~HemoCellParticleField()

hemo::HemoCellParticleField::~HemoCellParticleField ( )
virtual

◆ HemoCellParticleField() [2/2]

hemo::HemoCellParticleField::HemoCellParticleField ( HemoCellParticleField const &  rhs)

Member Function Documentation

◆ AddOutputMap()

void hemo::HemoCellParticleField::AddOutputMap ( )

◆ addParticle() [1/2]

void hemo::HemoCellParticleField::addParticle ( const HemoCellParticle::serializeValues_t sv)

◆ addParticle() [2/2]

void hemo::HemoCellParticleField::addParticle ( HemoCellParticle particle)
virtual

◆ addParticlePreinlet()

void hemo::HemoCellParticleField::addParticlePreinlet ( const HemoCellParticle::serializeValues_t sv)

◆ advanceParticles()

void hemo::HemoCellParticleField::advanceParticles ( )
virtual

◆ applyBoundaryRepulsionForce()

void hemo::HemoCellParticleField::applyBoundaryRepulsionForce ( )

◆ applyConstitutiveModel()

void hemo::HemoCellParticleField::applyConstitutiveModel ( bool  forced = false)
virtual

◆ applyRepulsionForce()

void hemo::HemoCellParticleField::applyRepulsionForce ( bool  forced = false)

◆ basicType()

static std::string hemo::HemoCellParticleField::basicType ( )
inlinestatic

◆ clone()

HemoCellParticleField * hemo::HemoCellParticleField::clone ( ) const

◆ computeGridPosition() [1/2]

void hemo::HemoCellParticleField::computeGridPosition ( hemo::Array< T, 3 > const &  position,
plint iX,
plint iY,
plint iZ 
) const

◆ computeGridPosition() [2/2]

void hemo::HemoCellParticleField::computeGridPosition ( hemo::Array< T, 3 > const &  position,
plint iX,
plint iY,
plint iZ 
) const
inline

◆ deleteIncompleteCells() [1/2]

int hemo::HemoCellParticleField::deleteIncompleteCells ( bool  verbose = true)

◆ deleteIncompleteCells() [2/2]

int hemo::HemoCellParticleField::deleteIncompleteCells ( pluint  ctype,
bool  verbose = true 
)

◆ descriptorType()

static std::string hemo::HemoCellParticleField::descriptorType ( )
inlinestatic

◆ eigenValueFromCell()

T hemo::HemoCellParticleField::eigenValueFromCell ( plb::Cell< T, DESCRIPTOR > &  cell)

◆ findInternalParticleGridPoints()

void hemo::HemoCellParticleField::findInternalParticleGridPoints ( plb::Box3D  domain)
virtual

◆ findParticles() [1/3]

virtual void hemo::HemoCellParticleField::findParticles ( plb::Box3D  domain,
std::vector< const HemoCellParticle * > &  found 
) const
virtual

◆ findParticles() [2/3]

virtual void hemo::HemoCellParticleField::findParticles ( plb::Box3D  domain,
std::vector< HemoCellParticle * > &  found 
)
virtual

◆ findParticles() [3/3]

void hemo::HemoCellParticleField::findParticles ( plb::Box3D  domain,
std::vector< HemoCellParticle * > &  found,
pluint  type 
)

◆ get_lpc()

const map< int, bool > & hemo::HemoCellParticleField::get_lpc ( )

◆ get_particles_per_cell()

const map< int, vector< int > > & hemo::HemoCellParticleField::get_particles_per_cell ( )

◆ get_particles_per_type()

const vector< vector< unsigned int > > & hemo::HemoCellParticleField::get_particles_per_type ( )

◆ get_preinlet_particles_per_cell()

const map< int, vector< int > > & hemo::HemoCellParticleField::get_preinlet_particles_per_cell ( )

◆ getBlockName()

std::string hemo::HemoCellParticleField::getBlockName ( )
static

◆ getBoundingBox()

plb::Box3D & hemo::HemoCellParticleField::getBoundingBox ( )
inline

◆ getDataTransfer() [1/2]

HemoCellParticleDataTransfer & hemo::HemoCellParticleField::getDataTransfer ( )
virtual

◆ getDataTransfer() [2/2]

HemoCellParticleDataTransfer const & hemo::HemoCellParticleField::getDataTransfer ( ) const
virtual

◆ getsize()

pluint hemo::HemoCellParticleField::getsize ( )
inline

◆ grid_index()

unsigned int hemo::HemoCellParticleField::grid_index ( int &  nx,
int &  ny,
int &  nz 
)
inlineprivate

◆ insert_ppc()

void hemo::HemoCellParticleField::insert_ppc ( HemoCellParticle particle,
unsigned int  index 
)
inline

◆ insert_preinlet_ppc()

void hemo::HemoCellParticleField::insert_preinlet_ppc ( HemoCellParticle particle,
unsigned int  index 
)
inline

◆ internalGridPointsMembrane()

void hemo::HemoCellParticleField::internalGridPointsMembrane ( plb::Box3D  domain)
virtual

◆ interpolateFluidVelocity()

void hemo::HemoCellParticleField::interpolateFluidVelocity ( plb::Box3D  domain)
virtual

◆ invalidate_lpc()

void hemo::HemoCellParticleField::invalidate_lpc ( )
inline

◆ invalidate_pg()

void hemo::HemoCellParticleField::invalidate_pg ( )
inline

◆ invalidate_ppc()

void hemo::HemoCellParticleField::invalidate_ppc ( )
inline

◆ invalidate_ppt()

void hemo::HemoCellParticleField::invalidate_ppt ( )
inline

◆ invalidate_preinlet_ppc()

void hemo::HemoCellParticleField::invalidate_preinlet_ppc ( )
inline

◆ isContainedABS()

bool hemo::HemoCellParticleField::isContainedABS ( const hemo::Array< T, 3 > &  pos,
const plb::Box3D &  box 
) const
inline

◆ issueWarning()

void hemo::HemoCellParticleField::issueWarning ( HemoCellParticle p)
private

◆ nearestCell()

plint hemo::HemoCellParticleField::nearestCell ( T const  pos) const
inline

◆ operator=()

HemoCellParticleField & hemo::HemoCellParticleField::operator= ( HemoCellParticleField const &  rhs)

◆ outputCellId()

void hemo::HemoCellParticleField::outputCellId ( plb::Box3D  ,
vector< vector< T > > &  ,
pluint  ,
std::string &   
)

◆ outputForceArea()

void hemo::HemoCellParticleField::outputForceArea ( plb::Box3D  ,
vector< vector< T > > &  ,
pluint  ,
std::string &   
)

◆ outputForceBending()

void hemo::HemoCellParticleField::outputForceBending ( plb::Box3D  ,
vector< vector< T > > &  ,
pluint  ,
std::string &   
)

◆ outputForceInnerLink()

void hemo::HemoCellParticleField::outputForceInnerLink ( plb::Box3D  ,
vector< vector< T > > &  ,
pluint  ,
std::string &   
)

◆ outputForceLink()

void hemo::HemoCellParticleField::outputForceLink ( plb::Box3D  ,
vector< vector< T > > &  ,
pluint  ,
std::string &   
)

◆ outputForceRepulsion()

void hemo::HemoCellParticleField::outputForceRepulsion ( plb::Box3D  ,
vector< vector< T > > &  ,
pluint  ,
std::string &   
)

◆ outputForces()

void hemo::HemoCellParticleField::outputForces ( plb::Box3D  ,
vector< vector< T > > &  ,
pluint  ,
std::string &   
)

◆ outputForceVisc()

void hemo::HemoCellParticleField::outputForceVisc ( plb::Box3D  ,
vector< vector< T > > &  ,
pluint  ,
std::string &   
)

◆ outputForceVolume()

void hemo::HemoCellParticleField::outputForceVolume ( plb::Box3D  ,
vector< vector< T > > &  ,
pluint  ,
std::string &   
)

◆ outputInnerLinks()

void hemo::HemoCellParticleField::outputInnerLinks ( plb::Box3D  ,
vector< vector< plint > > &  ,
pluint  ,
std::string &   
)

◆ outputPositions()

void hemo::HemoCellParticleField::outputPositions ( plb::Box3D  ,
vector< vector< T > > &  ,
pluint  ,
std::string &   
)

◆ outputResTime()

void hemo::HemoCellParticleField::outputResTime ( plb::Box3D  ,
vector< vector< T > > &  ,
pluint  ,
std::string &   
)

◆ outputTriangles()

void hemo::HemoCellParticleField::outputTriangles ( plb::Box3D  ,
vector< vector< plint > > &  ,
pluint  ,
std::string &   
)

◆ outputVelocities()

void hemo::HemoCellParticleField::outputVelocities ( plb::Box3D  ,
vector< vector< T > > &  ,
pluint  ,
std::string &   
)

◆ outputVertexId()

void hemo::HemoCellParticleField::outputVertexId ( plb::Box3D  ,
vector< vector< T > > &  ,
pluint  ,
std::string &   
)

◆ passthroughpass()

void hemo::HemoCellParticleField::passthroughpass ( int  ,
plb::Box3D  ,
vector< vector< T > > &  ,
pluint  ,
std::string &   
)

◆ populateBindingSites()

void hemo::HemoCellParticleField::populateBindingSites ( plb::Box3D &  domain)

◆ populateBoundaryParticles()

void hemo::HemoCellParticleField::populateBoundaryParticles ( )

◆ prepareSolidification()

void hemo::HemoCellParticleField::prepareSolidification ( )

◆ removeParticles() [1/3]

virtual void hemo::HemoCellParticleField::removeParticles ( plb::Box3D  domain)
virtual

◆ removeParticles() [2/3]

virtual void hemo::HemoCellParticleField::removeParticles ( plb::Box3D  domain,
plint  tag 
)
virtual

◆ removeParticles() [3/3]

void hemo::HemoCellParticleField::removeParticles ( plint  tag)
virtual

◆ removeParticles_inverse()

void hemo::HemoCellParticleField::removeParticles_inverse ( plb::Box3D  domain)
virtual

◆ separateForceVectors()

void hemo::HemoCellParticleField::separateForceVectors ( )

◆ setlocalDomain()

void hemo::HemoCellParticleField::setlocalDomain ( plb::Box3D &  localDomain_)

◆ solidifyCells()

void hemo::HemoCellParticleField::solidifyCells ( )

◆ spreadParticleForce()

void hemo::HemoCellParticleField::spreadParticleForce ( plb::Box3D  domain)
virtual

◆ swap()

void hemo::HemoCellParticleField::swap ( HemoCellParticleField rhs)

◆ syncEnvelopes()

void hemo::HemoCellParticleField::syncEnvelopes ( )

◆ unifyForceVectors()

void hemo::HemoCellParticleField::unifyForceVectors ( )

◆ update_lpc()

void hemo::HemoCellParticleField::update_lpc ( )
private

◆ update_pg()

void hemo::HemoCellParticleField::update_pg ( )
private

◆ update_ppc()

void hemo::HemoCellParticleField::update_ppc ( )
private

◆ update_ppt()

void hemo::HemoCellParticleField::update_ppt ( )
private

◆ update_preinlet_ppc()

void hemo::HemoCellParticleField::update_preinlet_ppc ( )
private

◆ updateResidenceTime()

void hemo::HemoCellParticleField::updateResidenceTime ( unsigned int  rtime)

Member Data Documentation

◆ _lpc

map<int,bool> hemo::HemoCellParticleField::_lpc
private

◆ _particles_per_cell

map<int,vector<int> > hemo::HemoCellParticleField::_particles_per_cell
private

◆ _particles_per_type

vector<vector<unsigned int> > hemo::HemoCellParticleField::_particles_per_type
private

◆ _preinlet_particles_per_cell

map<int,vector<int> > hemo::HemoCellParticleField::_preinlet_particles_per_cell
private

◆ addParticleCount

plint hemo::HemoCellParticleField::addParticleCount = 0

◆ allocated_for_output

vector<hemo::Array<T,3>*> hemo::HemoCellParticleField::allocated_for_output
private

◆ atomicBlockId

pluint hemo::HemoCellParticleField::atomicBlockId

◆ atomicLattice

plb::BlockLattice3D<T, DESCRIPTOR>* hemo::HemoCellParticleField::atomicLattice = 0

◆ bindingField

plb::ScalarField3D<bool>* hemo::HemoCellParticleField::bindingField = 0

◆ bindingSites

std::set<plb::Dot3D> hemo::HemoCellParticleField::bindingSites

◆ boundaryParticles

vector<plb::Dot3D> hemo::HemoCellParticleField::boundaryParticles

◆ boundingBox

plb::Box3D hemo::HemoCellParticleField::boundingBox

◆ cellFields

HemoCellFields * hemo::HemoCellParticleField::cellFields =0
static

◆ CEPAClattice

plb::BlockLattice3D<T, CEPAC_DESCRIPTOR>* hemo::HemoCellParticleField::CEPAClattice = 0

◆ envelopeSize

pluint hemo::HemoCellParticleField::envelopeSize

◆ interiorViscosityField

plb::ScalarField3D<T>* hemo::HemoCellParticleField::interiorViscosityField = 0

◆ internalPoints

set<plb::Dot3D> hemo::HemoCellParticleField::internalPoints

◆ localDomain

plb::Box3D hemo::HemoCellParticleField::localDomain

◆ lpc_up_to_date

bool hemo::HemoCellParticleField::lpc_up_to_date = false
private

◆ neighbours

vector<plint> hemo::HemoCellParticleField::neighbours

◆ nFluidCells

int hemo::HemoCellParticleField::nFluidCells = 0

◆ outputFunctionMap

map<int,void (HemoCellParticleField::*)(plb::Box3D,vector<vector<T>>&,pluint,std::string&)> hemo::HemoCellParticleField::outputFunctionMap

◆ particle_grid

hemo::Array<unsigned int,10>* hemo::HemoCellParticleField::particle_grid = 0
private

◆ particle_grid_size

unsigned int* hemo::HemoCellParticleField::particle_grid_size = 0
private

◆ particleDataTransfer

HemoCellParticleDataTransfer& hemo::HemoCellParticleField::particleDataTransfer

◆ particles

vector<HemoCellParticle> hemo::HemoCellParticleField::particles

◆ pg_up_to_date

bool hemo::HemoCellParticleField::pg_up_to_date = false
private

◆ ppc_up_to_date

bool hemo::HemoCellParticleField::ppc_up_to_date = false
private

◆ ppt_up_to_date

bool hemo::HemoCellParticleField::ppt_up_to_date = false
private

◆ preinlet_ppc_up_to_date

bool hemo::HemoCellParticleField::preinlet_ppc_up_to_date = false
private