hemocell
|
#include <hemoCellFields.h>
Classes | |
class | HemoAdvanceParticles |
class | HemoApplyConstitutiveModel |
class | HemoBoundaryRepulsionForce |
class | HemoDeleteIncompleteCells |
class | HemoDeleteNonLocalParticles |
class | HemoFindInternalParticleGridPoints |
class | HemoGetParticles |
class | HemoInternalGridPointsMembrane |
class | HemoInterpolateFluidVelocity |
class | HemoPopulateBindingSites |
class | HemoPopulateBoundaryParticles |
class | HemoPrepareSolidification |
class | HemoRepulsionForce |
class | HemoSeperateForceVectors |
class | HemoSetParticles |
class | HemoSolidifyCells |
class | HemoSpreadParticleForce |
class | HemoSyncEnvelopes |
class | HemoUnifyForceVectors |
class | HemoupdateResidenceTime |
Public Member Functions | |
HemoCellFields (plb::MultiBlockLattice3D< T, DESCRIPTOR > &lattice_, unsigned int particleEnvelopeWidth, HemoCell &) | |
Default constructor, needs an palabos lattice, envelope width (lbm units), and hemocell reference. | |
void | createParticleField (plb::SparseBlockStructure3D *sbStructure_=0, plb::ThreadAttribution *tAttribution_=0) |
void | createCEPACfield () |
void | InitAfterLoadCheckpoint () |
Used to set variables inside the celltypes for correct access, called through createParticleField. | |
~HemoCellFields () | |
Generic Destructor. | |
HemoCellField * | addCellType (std::string name_, int constructType) |
Add an celltype with a certain mesh, the name also specifies <name_>.xml and <name_>.pos. | |
HemoCellField * | operator[] (unsigned int index) |
Easy access to contained celltypes. | |
HemoCellField * | operator[] (string name) |
Easy access to contained celltypes. | |
unsigned int | size () |
Get the number of celltypes. | |
void | load (plb::XMLreader *documentXML, unsigned int &iter, Config *cfg=NULL) |
Load a checkpoint, store the current iteration in &iter. | |
void | save (plb::XMLreader *documentXML, unsigned int iter, Config *cfg=NULL) |
Save a checkpoint. | |
plb::MultiParticleField3D< HemoCellParticleField > & | getParticleField3D () |
Legacy Helper function to get the particle field, mostly unused as direct access is available. | |
void | readPositionsCellFields (std::string particlePosFile) |
Legacy reads in only RBC an PLT from a single pos file. | |
void | advanceParticles () |
Advance the particles in an iteration. | |
void | findInternalParticleGridPoints () |
void | internalGridPointsMembrane () |
void | interpolateFluidVelocity () |
Interpolate the velocity of the fluid to the individual particles. | |
void | spreadParticleForce () |
Spread the force of all particles over the fluid in this iteration. | |
void | separate_force_vectors () |
Separate the force vectors of particles so it becomes clear what the vector for each separate force is. | |
void | unify_force_vectors () |
Unify the force vectors of particles to point to a single force. | |
void | applyRepulsionForce () |
Apply (and calculate) the repulsion force between particles. | |
void | applyBoundaryRepulsionForce () |
Apply (and calculate) the repulsion force between particles and the boundary. | |
void | deleteIncompleteCells (bool verbose=true) |
Delete any incomplete cells on a block. | |
void | applyConstitutiveModel (bool forced=false) |
Apply the material model of the cells to the particles, updating their force. | |
void | syncEnvelopes () |
Sync the particle envelopes between domains. | |
void | getParticles (vector< HemoCellParticle * > &particles, plb::Box3D &domain) |
Get particles in a given domain. | |
void | addParticles (vector< HemoCellParticle > &particles) |
Add particles to local processors. | |
void | populateBoundaryParticles () |
Add boundary particles on the fluid-solid boundary. | |
void | populateBindingSites (plb::Box3D *box=0) |
Add bindingSites. | |
void | deleteNonLocalParticles (int envelope) |
Delete non local particles (do not delete in envelopesize) | |
void | solidifyCells () |
Conditionally solidify cells if requested. | |
void | prepareSolidification () |
void | updateResidenceTime (unsigned int rtime) |
increment cell residence time | |
int | base_cell_id (int wrapped) |
void | calculateCommunicationStructure () |
Public Attributes | |
plb::MultiBlockLattice3D< T, DESCRIPTOR > * | lattice |
the fluid lattice | |
vector< int > | desiredFluidOutputVariables |
A vector specifying the output variables (from const_defaults.h) | |
vector< int > | desiredCEPACfieldOutputVariables |
HemoCell & | hemocell |
Reference to parent. | |
vector< HemoCellField * > | cellFields |
Vector containing the cellTypes. | |
pluint | envelopeSize |
The envelopeSize for the particles. | |
plb::MultiParticleField3D< HemoCellParticleField > * | immersedParticles = 0 |
palabos field storing the particles | |
plb::MultiParticleField3D< HemoCellParticleField > * | preinlet_immersedParticles = 0 |
seperate preinlet and domain pointers whenever necessary | |
plb::MultiParticleField3D< HemoCellParticleField > * | domain_immersedParticles = 0 |
plb::MultiBlockLattice3D< T, CEPAC_DESCRIPTOR > * | CEPACfield = 0 |
palabos field for storing the CPAC scalar field if used | |
T | repulsionCutoff = 0.0 |
Repulsion variable set through hemocell.h. | |
T | repulsionConstant = 0.0 |
Repulsion variable set through hemocell.h. | |
pluint | repulsionTimescale = 1 |
Timescale seperation for repulsion, set through hemocell.h. | |
T | boundaryRepulsionCutoff = 0.0 |
Boundary repulsion variable set through hemocell.h. | |
T | boundaryRepulsionConstant = 0.0 |
Boundary repulsion variable set through hemocell.h. | |
pluint | boundaryRepulsionTimescale = 1 |
Timescale seperation for boundary repulsion, set through hemocell.h. | |
pluint | particleVelocityUpdateTimescale = 1 |
Timescale seperation for the velocity interpolation from the fluid to the particle. | |
pluint | solidifyTimescale = 1 |
pluint | interiorViscosityTimescale = 1 |
pluint | interiorViscosityEntireGridTimescale = 1 |
int | periodicity_limit [3] = {100} |
Limit of cycles in a direction (xyz) | |
int | periodicity_limit_offset_y = 100 |
int | periodicity_limit_offset_z = 10000 |
int | number_of_cells = 0 |
unsigned int | max_neighbours = 0 |
plb::CommunicationStructure3D * | large_communicator = 0 |
plb::ParallelBlockCommunicator3D | envelope_communicator |
Private Member Functions | |
void | copyXMLreader2XMLwriter (plb::XMLreader const &reader, plb::XMLwriter &writer) |
void | copyXMLreader2XMLwriter (plb::XMLreaderProxy readerProxy, plb::XMLwriter &writer) |
Private Attributes | |
vector< vector< NoInitChar > > | sendBuffers |
vector< vector< NoInitChar > > | recvBuffers |
This class can contain many cellTypes, it keeps track of all the particles of all types. The option exists to get exclusive access to a single cellType if necessary. all the particles are stored in a single particlefield
hemo::HemoCellFields::HemoCellFields | ( | plb::MultiBlockLattice3D< T, DESCRIPTOR > & | lattice_, |
unsigned int | particleEnvelopeWidth, | ||
HemoCell & | |||
) |
Default constructor, needs an palabos lattice, envelope width (lbm units), and hemocell reference.
hemo::HemoCellFields::~HemoCellFields | ( | ) |
Generic Destructor.
HemoCellField * hemo::HemoCellFields::addCellType | ( | std::string | name_, |
int | constructType | ||
) |
Add an celltype with a certain mesh, the name also specifies <name_>.xml and <name_>.pos.
void hemo::HemoCellFields::addParticles | ( | vector< HemoCellParticle > & | particles | ) |
Add particles to local processors.
void hemo::HemoCellFields::advanceParticles | ( | ) |
Advance the particles in an iteration.
void hemo::HemoCellFields::applyBoundaryRepulsionForce | ( | ) |
Apply (and calculate) the repulsion force between particles and the boundary.
void hemo::HemoCellFields::applyConstitutiveModel | ( | bool | forced = false | ) |
Apply the material model of the cells to the particles, updating their force.
void hemo::HemoCellFields::applyRepulsionForce | ( | ) |
Apply (and calculate) the repulsion force between particles.
|
inline |
void hemo::HemoCellFields::calculateCommunicationStructure | ( | ) |
|
private |
|
private |
void hemo::HemoCellFields::createCEPACfield | ( | ) |
void hemo::HemoCellFields::createParticleField | ( | plb::SparseBlockStructure3D * | sbStructure_ = 0 , |
plb::ThreadAttribution * | tAttribution_ = 0 |
||
) |
void hemo::HemoCellFields::deleteIncompleteCells | ( | bool | verbose = true | ) |
Delete any incomplete cells on a block.
void hemo::HemoCellFields::deleteNonLocalParticles | ( | int | envelope | ) |
Delete non local particles (do not delete in envelopesize)
void hemo::HemoCellFields::findInternalParticleGridPoints | ( | ) |
MultiParticleField3D< HemoCellParticleField > & hemo::HemoCellFields::getParticleField3D | ( | ) |
Legacy Helper function to get the particle field, mostly unused as direct access is available.
void hemo::HemoCellFields::getParticles | ( | vector< HemoCellParticle * > & | particles, |
plb::Box3D & | domain | ||
) |
Get particles in a given domain.
void hemo::HemoCellFields::InitAfterLoadCheckpoint | ( | ) |
Used to set variables inside the celltypes for correct access, called through createParticleField.
void hemo::HemoCellFields::internalGridPointsMembrane | ( | ) |
void hemo::HemoCellFields::interpolateFluidVelocity | ( | ) |
Interpolate the velocity of the fluid to the individual particles.
void hemo::HemoCellFields::load | ( | plb::XMLreader * | documentXML, |
unsigned int & | iter, | ||
Config * | cfg = NULL |
||
) |
Load a checkpoint, store the current iteration in &iter.
HemoCellField * hemo::HemoCellFields::operator[] | ( | string | name | ) |
Easy access to contained celltypes.
HemoCellField * hemo::HemoCellFields::operator[] | ( | unsigned int | index | ) |
Easy access to contained celltypes.
void hemo::HemoCellFields::populateBindingSites | ( | plb::Box3D * | box = 0 | ) |
Add bindingSites.
void hemo::HemoCellFields::populateBoundaryParticles | ( | ) |
Add boundary particles on the fluid-solid boundary.
void hemo::HemoCellFields::prepareSolidification | ( | ) |
void hemo::HemoCellFields::readPositionsCellFields | ( | std::string | particlePosFile | ) |
Legacy reads in only RBC an PLT from a single pos file.
void hemo::HemoCellFields::save | ( | plb::XMLreader * | documentXML, |
unsigned int | iter, | ||
Config * | cfg = NULL |
||
) |
Save a checkpoint.
void hemo::HemoCellFields::separate_force_vectors | ( | ) |
Separate the force vectors of particles so it becomes clear what the vector for each separate force is.
unsigned int hemo::HemoCellFields::size | ( | ) |
Get the number of celltypes.
void hemo::HemoCellFields::solidifyCells | ( | ) |
Conditionally solidify cells if requested.
void hemo::HemoCellFields::spreadParticleForce | ( | ) |
Spread the force of all particles over the fluid in this iteration.
void hemo::HemoCellFields::syncEnvelopes | ( | ) |
Sync the particle envelopes between domains.
void hemo::HemoCellFields::unify_force_vectors | ( | ) |
Unify the force vectors of particles to point to a single force.
void hemo::HemoCellFields::updateResidenceTime | ( | unsigned int | rtime | ) |
increment cell residence time
T hemo::HemoCellFields::boundaryRepulsionConstant = 0.0 |
Boundary repulsion variable set through hemocell.h.
T hemo::HemoCellFields::boundaryRepulsionCutoff = 0.0 |
Boundary repulsion variable set through hemocell.h.
pluint hemo::HemoCellFields::boundaryRepulsionTimescale = 1 |
Timescale seperation for boundary repulsion, set through hemocell.h.
vector<HemoCellField *> hemo::HemoCellFields::cellFields |
Vector containing the cellTypes.
plb::MultiBlockLattice3D<T,CEPAC_DESCRIPTOR>* hemo::HemoCellFields::CEPACfield = 0 |
palabos field for storing the CPAC scalar field if used
vector<int> hemo::HemoCellFields::desiredCEPACfieldOutputVariables |
vector<int> hemo::HemoCellFields::desiredFluidOutputVariables |
A vector specifying the output variables (from const_defaults.h)
plb::MultiParticleField3D<HemoCellParticleField> * hemo::HemoCellFields::domain_immersedParticles = 0 |
plb::ParallelBlockCommunicator3D hemo::HemoCellFields::envelope_communicator |
pluint hemo::HemoCellFields::envelopeSize |
The envelopeSize for the particles.
HemoCell& hemo::HemoCellFields::hemocell |
Reference to parent.
plb::MultiParticleField3D<HemoCellParticleField>* hemo::HemoCellFields::immersedParticles = 0 |
palabos field storing the particles
pluint hemo::HemoCellFields::interiorViscosityEntireGridTimescale = 1 |
pluint hemo::HemoCellFields::interiorViscosityTimescale = 1 |
plb::CommunicationStructure3D* hemo::HemoCellFields::large_communicator = 0 |
plb::MultiBlockLattice3D<T, DESCRIPTOR>* hemo::HemoCellFields::lattice |
the fluid lattice
unsigned int hemo::HemoCellFields::max_neighbours = 0 |
int hemo::HemoCellFields::number_of_cells = 0 |
Total number of cells in the simulation, should be constant Is set through hemocell::loadParticles() is added (TODO: also when removed)
pluint hemo::HemoCellFields::particleVelocityUpdateTimescale = 1 |
Timescale seperation for the velocity interpolation from the fluid to the particle.
int hemo::HemoCellFields::periodicity_limit[3] = {100} |
Limit of cycles in a direction (xyz)
int hemo::HemoCellFields::periodicity_limit_offset_y = 100 |
int hemo::HemoCellFields::periodicity_limit_offset_z = 10000 |
plb::MultiParticleField3D<HemoCellParticleField>* hemo::HemoCellFields::preinlet_immersedParticles = 0 |
seperate preinlet and domain pointers whenever necessary
|
private |
T hemo::HemoCellFields::repulsionConstant = 0.0 |
Repulsion variable set through hemocell.h.
T hemo::HemoCellFields::repulsionCutoff = 0.0 |
Repulsion variable set through hemocell.h.
pluint hemo::HemoCellFields::repulsionTimescale = 1 |
Timescale seperation for repulsion, set through hemocell.h.
|
private |
pluint hemo::HemoCellFields::solidifyTimescale = 1 |