Blender V2.61 - r43446
Classes | Public Types | Public Member Functions | Protected Types | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Static Protected Attributes

LbmFsgrSolver Class Reference

#include <solver_class.h>

Inheritance diagram for LbmFsgrSolver:
Inheritance graph
[legend]

List of all members.

Classes

class  lbmFloatSet
 class for handling redist weights in reinit flag function More...

Public Types

typedef UniformFsgrCellIdentifier stdCellId

Public Member Functions

 LbmFsgrSolver ()
 Constructor.
virtual ~LbmFsgrSolver ()
 Destructor.
virtual void parseAttrList ()
 initilize variables fom attribute list
void initLevelOmegas ()
 Initialize omegas and forces on all levels (for init/timestep change)
virtual bool initializeSolverMemory ()
virtual bool initializeSolverGrids ()
virtual bool initializeSolverPostinit ()
virtual void notifySolverOfDump (int dumptype, int frameNr, char *frameNrStr, string outfilename)
 notify object that dump is in progress (e.g. for field dump)
virtual void debugDisplay (int set)
 show simulation info (implement LbmSolverInterface pure virtual func)
virtual CellIdentifierInterfacegetFirstCell ()
 cell iteration methods
virtual void advanceCell (CellIdentifierInterface *)
virtual bool noEndCell (CellIdentifierInterface *)
virtual void deleteCellIterator (CellIdentifierInterface **)
 clean up iteration, this should be called, when the iteration is not completely finished
virtual CellIdentifierInterfacegetCellAt (ntlVec3Gfx pos)
 find cell at a given position (returns NULL if not in domain)
virtual int getCellSet (CellIdentifierInterface *)
 return node information
virtual ntlVec3Gfx getCellOrigin (CellIdentifierInterface *)
virtual ntlVec3Gfx getCellSize (CellIdentifierInterface *)
virtual int getCellLevel (CellIdentifierInterface *)
virtual LbmFloat getCellDensity (CellIdentifierInterface *, int set)
virtual LbmVec getCellVelocity (CellIdentifierInterface *, int set)
virtual LbmFloat getCellDf (CellIdentifierInterface *, int set, int dir)
virtual LbmFloat getCellMass (CellIdentifierInterface *, int set)
virtual LbmFloat getCellFill (CellIdentifierInterface *, int set)
virtual CellFlagType getCellFlag (CellIdentifierInterface *, int set)
virtual LbmFloat getEquilDf (int)
virtual ntlVec3Gfx getVelocityAt (float x, float y, float z)
stdCellIdconvertBaseCidToStdCid (CellIdentifierInterface *basecid)
bool initGeometryFlags ()
 perform geometry init (if switched on)
void initFreeSurfaces ()
 init part for all freesurface testcases
void initStandingFluidGradient ()
 init density gradient if enabled
LBM_INLINED void initEmptyCell (int level, int i, int j, int k, CellFlagType flag, LbmFloat rho, LbmFloat mass)
LBM_INLINED void initVelocityCell (int level, int i, int j, int k, CellFlagType flag, LbmFloat rho, LbmFloat mass, LbmVec vel)
LBM_INLINED void changeFlag (int level, int xx, int yy, int zz, int set, CellFlagType newflag)
LBM_INLINED void forceChangeFlag (int level, int xx, int yy, int zz, int set, CellFlagType newflag)
LBM_INLINED void initInterfaceVars (int level, int i, int j, int k, int workSet, bool initMass)
void interpolateCellValues (int level, int ei, int ej, int ek, int workSet, LbmFloat &retrho, LbmFloat &retux, LbmFloat &retuy, LbmFloat &retuz)
 interpolate velocity and density at a given position
void stepMain ()
void fineAdvance ()
 advance fine grid
void coarseAdvance (int lev)
 advance coarse grid
void coarseCalculateFluxareas (int lev)
 update flux area values on coarse grids
bool adaptGrid (int lev)
void coarseRestrictFromFine (int lev)
 multi level functions
virtual void step ()
virtual int initParticles ()
virtual void advanceParticles ()
void handleObstacleParticle (ParticleObject *p)
virtual vector
< ntlGeometryObject * > 
getDebugObjects ()
virtual void debugDisplayNode (int dispset, CellIdentifierInterface *cell)
 display a single node
virtual void lbmDebugDisplay (int dispset)
 debug display function
virtual void lbmMarkedCellDisplay ()
 debug display function
virtual void debugPrintNodeInfo (CellIdentifierInterface *cell, int forceSet=-1)
 display a single node
void prepareVisualization (void)
 for raytracing, preprocess
virtual void setSurfGenSettings (short value)

Protected Types

enum  fsSurfaceGen {
  fssgNormal = 0, fssgNoNorth = 1, fssgNoSouth = 2, fssgNoEast = 4,
  fssgNoWest = 8, fssgNoTop = 16, fssgNoBottom = 32, fssgNoObs = 64
}
 

surface generation settings, default is all off (=0)

More...
enum  dfDir {
  cDirInv = -1, cDirC = 0, cDirN = 1, cDirS = 2,
  cDirE = 3, cDirW = 4, cDirT = 5, cDirB = 6,
  cDirNE = 7, cDirNW = 8, cDirSE = 9, cDirSW = 10,
  cDirNT = 11, cDirNB = 12, cDirST = 13, cDirSB = 14,
  cDirET = 15, cDirEB = 16, cDirWT = 17, cDirWB = 18
}
 

distribution functions directions

More...

Protected Member Functions

void printLbmCell (int level, int i, int j, int k, int set)
 internal quick print function (for debugging)
void debugMarkCellCall (int level, int vi, int vj, int vk)
void mainLoop (int lev)
 fine step function
void adaptTimestep ()
void recalculateObjectSpeeds ()
 init mObjectSpeeds for current parametrization
void initMovingObstacles (bool staticInit)
 init moving obstacles for next sim step sim
void reinitFlags (int workSet)
 flag reinit step - always works on finest grid!
LbmFloat getMassdWeight (bool dirForw, int i, int j, int k, int workSet, int l)
 mass dist weights
void computeFluidSurfaceNormal (LbmFloat *cell, CellFlagType *cellflag, LbmFloat *snret)
 compute surface normals: fluid, fluid more accurate, and for obstacles
void computeFluidSurfaceNormalAcc (LbmFloat *cell, CellFlagType *cellflag, LbmFloat *snret)
void computeObstacleSurfaceNormal (LbmFloat *cell, CellFlagType *cellflag, LbmFloat *snret)
void computeObstacleSurfaceNormalAcc (int i, int j, int k, LbmFloat *snret)
LBM_INLINED void addToNewInterList (int ni, int nj, int nk)
 add point to mListNewInter list
void interpolateCellFromCoarse (int lev, int i, int j, int k, int dstSet, LbmFloat t, CellFlagType flagSet, bool markNbs)
 cell is interpolated from coarse level (inited into set, source sets are determined by t)
void coarseRestrictCell (int lev, int i, int j, int k, int srcSet, int dstSet)
 cell restriction and prolongation
LBM_INLINED int getForZMinBnd ()
 minimal and maximal z-coords (for 2D/3D loops)
LBM_INLINED int getForZMin1 ()
LBM_INLINED int getForZMaxBnd (int lev)
LBM_INLINED int getForZMax1 (int lev)
LBM_INLINED bool checkDomainBounds (int lev, int i, int j, int k)
LBM_INLINED bool checkDomainBoundsPos (int lev, LbmVec pos)
void preinitGrids ()
void standingFluidPreinit ()
bool checkSymmetry (string idstring)
 debugging
void initCpdata ()
void handleCpdata ()
void cpDebugDisplay (int dispset)
LbmFloat getLesNoneqTensorCoeff (LbmFloat df[], LbmFloat feq[])
LbmFloat getLesOmega (LbmFloat omega, LbmFloat csmago, LbmFloat Qo)
void collideArrays (int lev, int i, int j, int k, LbmFloat df[], LbmFloat &outrho, LbmFloat &mux, LbmFloat &muy, LbmFloat &muz, LbmFloat omega, LbmVec gravity, LbmFloat csmago, LbmFloat *newOmegaRet, LbmFloat *newQoRet)
virtual string getIdString ()
 id string of solver

Static Protected Member Functions

static LbmFloat getVelVecLen (int l, LbmFloat ux, LbmFloat uy, LbmFloat uz)
static LbmFloat getCollideEq (int l, LbmFloat rho, LbmFloat ux, LbmFloat uy, LbmFloat uz)

Protected Attributes

LbmFloat mCurrentMass
 mass calculated during streaming step
LbmFloat mCurrentVolume
LbmFloat mInitialMass
int mNumProblems
 count problematic cases, that occured so far...
double mAvgMLSUPS
double mAvgMLSUPSCnt
IsoSurfacempPreviewSurface
 Mcubes object for surface reconstruction.
bool mTimeAdap
 use time adaptivity?
bool mForceTimeStepReduce
 force smaller timestep for next LBM step? (eg for mov obj)
LbmFloat mFVHeight
 fluid vol height
LbmFloat mFVArea
bool mUpdateFVHeight
LbmFloat mGfxEndTime
 force quit for gfx
int mInitSurfaceSmoothing
 smoother surface initialization?
int mFsSurfGenSetting
int mTimestepReduceLock
 lock time step down switching
int mTimeSwitchCounts
 count no. of switches
int mTimeMaxvelStepCnt
LbmFloat mSimulationTime
 total simulation time so far
LbmFloat mLastSimTime
LbmFloat mMinTimestep
 smallest and largest step size so far
LbmFloat mMaxTimestep
LbmFloat mMxvx
 track max. velocity
LbmFloat mMxvy
LbmFloat mMxvz
LbmFloat mMaxVlen
vector< LbmPointmListEmpty
 list of the cells to empty at the end of the step
vector< LbmPointmListFull
 list of the cells to make fluid at the end of the step
vector< LbmPointmListNewInter
 list of new interface cells to init
LbmVec mDvecNrm [27]
 normalized vectors for all neighboring cell directions (for e.g. massdweight calc)
int mMaxNoCells
 kepp track of max/min no. of filled cells
int mMinNoCells
LONGINT mAvgNumUsedCells
vector< LbmVecmObjectSpeeds
 precalculated objects speeds for current parametrization
vector< LbmFloatmObjectPartslips
 partslip bc. values for obstacle boundary conditions
vector< LbmFloatmObjectMassMovnd
 moving object mass boundary condition values
vector< ntlVec3GfxmMOIVertices
 permanent movobj vert storage
vector< ntlVec3GfxmMOIVerticesOld
vector< ntlVec3GfxmMOINormals
int mIsoWeightMethod
 get isofield weights
float mIsoWeight [27]
FsgrLevelData mLevel [FSGR_MAXNOOFLEVELS]
int mMaxRefine
LbmFloat mDfScaleUp
LbmFloat mDfScaleDown
LbmFloat mFsgrCellArea [27]
LbmFloat mGaussw [27]
float mInitialCsmago
LbmFloat mDebugOmegaRet
LbmFloat mLastOmega
LbmVec mLastGravity
int mNumInterdCells
 fluid stats
int mNumInvIfCells
int mNumInvIfTotal
int mNumFsgrChanges
int mDisableStandingFluidInit
 debug function to disable standing f init
bool mInit2dYZ
 init 2d with skipped Y/Z coords
int mForceTadapRefine
 debug function to force tadap syncing
int mCutoff
 border cutoff value
LbmControlDatampControl
bool mUseTestdata
STCON int cDimension = 3
 how many dimensions? UNUSED? replace by LBMDIM?
STCON LbmFloat cCollenZero = (1.0/3.0)
STCON LbmFloat cCollenOne = (1.0/18.0)
STCON LbmFloat cCollenSqrtTwo = (1.0/36.0)
STCON LbmFloat cMagicNr2 = 1.0005
 threshold value for filled/emptied cells
STCON LbmFloat cMagicNr2Neg = -0.0005
STCON LbmFloat cMagicNr = 1.010001
STCON LbmFloat cMagicNrNeg = -0.010001
STCON int cDfNum = 19
 size of a single set of distribution functions
STCON int cDirNum = 27
 direction vector contain vecs for all spatial dirs, even if not used for LBM model
STCON char * dfString [19]
STCON int dfNorm [19]
STCON int dfInv [19]
STCON int dfRefX [19]
STCON int dfRefY [19]
STCON int dfRefZ [19]
STCON int dfVecX [27]
STCON int dfVecY [27]
STCON int dfVecZ [27]
STCON LbmFloat dfDvecX [27]
STCON LbmFloat dfDvecY [27]
STCON LbmFloat dfDvecZ [27]
STCON int princDirX [2 *3]
STCON int princDirY [2 *3]
STCON int princDirZ [2 *3]
STCON LbmFloat dfLength [19]

Static Protected Attributes

static LbmFloat dfEquil [dTotalNum]
static LbmFloat lesCoeffDiag [(3-1)*(3-1)][27]
static LbmFloat lesCoeffOffdiag [3][27]

Detailed Description

class for solving a LBM problem

Definition at line 202 of file solver_class.h.


Member Typedef Documentation

Definition at line 234 of file solver_class.h.


Member Enumeration Documentation

enum LbmFsgrSolver::dfDir [protected]

distribution functions directions

Enumerator:
cDirInv 
cDirC 
cDirN 
cDirS 
cDirE 
cDirW 
cDirT 
cDirB 
cDirNE 
cDirNW 
cDirSE 
cDirSW 
cDirNT 
cDirNB 
cDirST 
cDirSB 
cDirET 
cDirEB 
cDirWT 
cDirWB 

Definition at line 584 of file solver_class.h.

enum LbmFsgrSolver::fsSurfaceGen [protected]

surface generation settings, default is all off (=0)

Enumerator:
fssgNormal 
fssgNoNorth 
fssgNoSouth 
fssgNoEast 
fssgNoWest 
fssgNoTop 
fssgNoBottom 
fssgNoObs 

Definition at line 392 of file solver_class.h.


Constructor & Destructor Documentation

LbmFsgrSolver::LbmFsgrSolver ( )
LbmFsgrSolver::~LbmFsgrSolver ( ) [virtual]

Member Function Documentation

bool LbmFsgrSolver::adaptGrid ( int  lev)
void LbmFsgrSolver::adaptTimestep ( ) [protected]

change the size of the LBM time step

Definition at line 939 of file solver_adap.cpp.

References ParticleTracer::adaptPartTimestep(), Parametrizer::calculateAllMissingValues(), Parametrizer::calculateGravity(), cDfNum, CFBndMoving, CFFluid, CFGrFromCoarse, CFGrFromFine, CFGrNorm, CFInter, coarseCalculateFluxareas(), debMsgDirect, debMsgStd, dfDvecX, dfDvecY, dfDvecZ, dFfrac, dFlux, DM_MSG, DM_NOTIFY, dMass, errMsg, fabs(), FSGR_FORIJK1, FSGR_MAXNOOFLEVELS, getCollideEq(), Parametrizer::getCurrentGStar(), getLesNoneqTensorCoeff(), getLesOmega(), Parametrizer::getMaxTimestep(), iTaSC::getMaxTimestep(), Parametrizer::getMinTimestep(), Parametrizer::getSimulationMaxSpeed(), Parametrizer::getTadapMaxSpeed(), Parametrizer::getTimestep(), glob_mpactive, glob_mpindex, glob_mpnum, FsgrLevelData::gravity, i, initLevelOmegas(), LBM_DFNUM, FsgrLevelData::lcellfactor, FsgrLevelData::lSizez, mCurrentMass, mCurrentVolume, mForceTimeStepReduce, mLastGravity, mLastOmega, mLevel, mMaxRefine, mMaxTimestep, mMinTimestep, LbmSolverInterface::mName, LbmSolverInterface::mOmega, LbmSolverInterface::mPanic, LbmSolverInterface::mpParam, LbmSolverInterface::mpParticles, MPTADAP_INTERV, LbmSolverInterface::mSilent, mSimulationTime, LbmSolverInterface::mStepCnt, mTimeMaxvelStepCnt, mTimestepReduceLock, mTimeSwitchCounts, mUseTestdata, norm(), FsgrLevelData::omega, PRINT_IJK, QCELL, recalculateObjectSpeeds(), RFLAG, FsgrLevelData::setCurr, Parametrizer::setDesiredTimestep(), sqrt(), FsgrLevelData::timestep, and vec2L().

Referenced by stepMain().

void LbmFsgrSolver::addToNewInterList ( int  ni,
int  nj,
int  nk 
) [protected]

add point to mListNewInter list

Definition at line 1351 of file solver_main.cpp.

References LbmPoint::flag, mListNewInter, LbmPoint::x, LbmPoint::y, and LbmPoint::z.

Referenced by reinitFlags().

void LbmFsgrSolver::advanceCell ( CellIdentifierInterface basecid) [virtual]
void LbmFsgrSolver::advanceParticles ( ) [virtual]

move all particles

Implements LbmSolverInterface.

Definition at line 604 of file solver_util.cpp.

References ABS, ParticleObject::addToVel(), ParticleObject::advance(), ParticleObject::advanceVec(), ParticleObject::advanceVel(), CellFlagType, CFBnd, CFEmpty, CFFluid, CFInter, CFNoBndFluid, CFNoNbFluid, CFUnused, ParticleTracer::cleanup(), dB, dE, debMsgStd, DEL_PART, dfDvecX, dfDvecY, dfDvecZ, dFfrac, DM_MSG, dMass, dN, dS, dT, dW, credits_svn_gen::e, errMsg, fb(), FFGET_NORM, FLOAT_JITTBNDRAND, FLOAT_JITTER, FORDF0, FORDF1, Parametrizer::getCellSize(), Parametrizer::getGravity(), ParticleObject::getLifeTime(), ParticleObject::getMass(), ParticleTracer::getNumParticles(), ParticleTracer::getParticlesBegin(), ParticleTracer::getParticlesEnd(), ParticleObject::getPos(), ParticleObject::getSize(), ParticleObject::getStatus(), getTime(), Parametrizer::getTimestep(), getTimeString(), ParticleObject::getType(), ParticleObject::getVel(), FsgrLevelData::gravity, handleObstacleParticle(), i, LBMDIM, M_PI, mCutoff, LbmSolverInterface::mFarFieldSize, mLevel, mMaxRefine, LbmSolverInterface::mNumParticlesLost, LbmSolverInterface::mPartDropMassSub, LbmSolverInterface::mPartUsePhysModel, LbmSolverInterface::mpParam, LbmSolverInterface::mpParticles, mSimulationTime, LbmSolverInterface::mSizex, LbmSolverInterface::mSizey, LbmSolverInterface::mSizez, LbmSolverInterface::mStepCnt, norm(), normNoSqrt(), FsgrLevelData::omega, p, P_CHANGETYPE, PART_BUBBLE, PART_DROP, PART_FLOAT, PART_IN, PART_INTER, PART_OUT, PART_TRACER, QCELL, RAC, RACPNT, RFLAG, FsgrLevelData::setCurr, ParticleObject::setInFluid(), ParticleObject::setLifeTime(), ParticleObject::setPos(), ParticleObject::setStatus(), ParticleObject::setVel(), si, size(), sqrtf, FsgrLevelData::timestep, TRACE_RAND, vec2G(), vec2L(), and simple_enum_gen::w.

Referenced by stepMain().

void LbmFsgrSolver::changeFlag ( int  level,
int  xx,
int  yy,
int  zz,
int  set,
CellFlagType  newflag 
)
bool LbmFsgrSolver::checkDomainBounds ( int  lev,
int  i,
int  j,
int  k 
) [protected]

Definition at line 979 of file solver_class.h.

References mLevel.

Referenced by handleObstacleParticle().

bool LbmFsgrSolver::checkDomainBoundsPos ( int  lev,
LbmVec  pos 
) [protected]

Definition at line 988 of file solver_class.h.

References i, and mLevel.

bool LbmFsgrSolver::checkSymmetry ( string  idstring) [protected]
void LbmFsgrSolver::coarseAdvance ( int  lev)
void LbmFsgrSolver::coarseCalculateFluxareas ( int  lev)

update flux area values on coarse grids

coarse step functions

Definition at line 25 of file solver_adap.cpp.

References cDirNum, CFEmpty, CFFluid, CFGrFromCoarse, CFUnused, debMsgStd, dFlux, dfVecX, dfVecY, dfVecZ, DM_MSG, FSGR_FORIJK_BOUNDS, i, mFsgrCellArea, mLevel, LbmSolverInterface::mSilent, QCELL, and RFLAG.

Referenced by adaptTimestep(), and coarseAdvance().

void LbmFsgrSolver::coarseRestrictCell ( int  lev,
int  i,
int  j,
int  k,
int  srcSet,
int  dstSet 
) [protected]
void LbmFsgrSolver::coarseRestrictFromFine ( int  lev)
void LbmFsgrSolver::collideArrays ( int  lev,
int  i,
int  j,
int  k,
LbmFloat  df[],
LbmFloat outrho,
LbmFloat mux,
LbmFloat muy,
LbmFloat muz,
LbmFloat  omega,
LbmVec  gravity,
LbmFloat  csmago,
LbmFloat newOmegaRet,
LbmFloat newQoRet 
) [inline, protected]
void LbmFsgrSolver::computeFluidSurfaceNormal ( LbmFloat cell,
CellFlagType *  cellflag,
LbmFloat snret 
) [protected]

compute surface normals: fluid, fluid more accurate, and for obstacles

Definition at line 1245 of file solver_main.cpp.

References CellFlagType, CFBnd, CFFluid, CFInter, dFfrac, FsgrLevelData::lOffsx, FsgrLevelData::lOffsy, mLevel, mMaxRefine, QCELLSTEP, and RAC.

Referenced by getMassdWeight(), and mainLoop().

void LbmFsgrSolver::computeFluidSurfaceNormalAcc ( LbmFloat cell,
CellFlagType *  cellflag,
LbmFloat snret 
) [protected]

Definition at line 1285 of file solver_main.cpp.

References NULL.

void LbmFsgrSolver::computeObstacleSurfaceNormal ( LbmFloat cell,
CellFlagType *  cellflag,
LbmFloat snret 
) [protected]
void LbmFsgrSolver::computeObstacleSurfaceNormalAcc ( int  i,
int  j,
int  k,
LbmFloat snret 
) [protected]
LbmFsgrSolver::stdCellId * LbmFsgrSolver::convertBaseCidToStdCid ( CellIdentifierInterface basecid)
void LbmFsgrSolver::cpDebugDisplay ( int  dispset) [protected]
void LbmFsgrSolver::debugDisplay ( int  set) [virtual]

show simulation info (implement LbmSolverInterface pure virtual func)

show simulation info (implement SimulationObject pure virtual func)

Implements LbmSolverInterface.

Definition at line 1569 of file solver_util.cpp.

References lbmDebugDisplay().

void LbmFsgrSolver::debugDisplayNode ( int  dispset,
CellIdentifierInterface cell 
) [virtual]
void LbmFsgrSolver::debugMarkCellCall ( int  level,
int  vi,
int  vj,
int  vk 
) [protected]
void LbmFsgrSolver::debugPrintNodeInfo ( CellIdentifierInterface cell,
int  forceSet = -1 
) [virtual]
void LbmFsgrSolver::deleteCellIterator ( CellIdentifierInterface **  ) [virtual]

clean up iteration, this should be called, when the iteration is not completely finished

Implements LbmSolverInterface.

Definition at line 1337 of file solver_util.cpp.

References NULL.

void LbmFsgrSolver::fineAdvance ( )
void LbmFsgrSolver::forceChangeFlag ( int  level,
int  xx,
int  yy,
int  zz,
int  set,
CellFlagType  newflag 
)

Definition at line 917 of file solver_class.h.

References RFLAG.

Referenced by initMovingObstacles().

CellIdentifierInterface * LbmFsgrSolver::getCellAt ( ntlVec3Gfx  pos) [virtual]
LbmFloat LbmFsgrSolver::getCellDensity ( CellIdentifierInterface basecid,
int  set 
) [virtual]
LbmFloat LbmFsgrSolver::getCellDf ( CellIdentifierInterface ,
int  set,
int  dir 
) [virtual]
LbmFloat LbmFsgrSolver::getCellFill ( CellIdentifierInterface basecid,
int  set 
) [virtual]
CellFlagType LbmFsgrSolver::getCellFlag ( CellIdentifierInterface basecid,
int  set 
) [virtual]
int LbmFsgrSolver::getCellLevel ( CellIdentifierInterface basecid) [virtual]

Implements LbmSolverInterface.

Definition at line 1392 of file solver_util.cpp.

References convertBaseCidToStdCid(), and UniformFsgrCellIdentifier::level.

LbmFloat LbmFsgrSolver::getCellMass ( CellIdentifierInterface basecid,
int  set 
) [virtual]
ntlVec3Gfx LbmFsgrSolver::getCellOrigin ( CellIdentifierInterface basecid) [virtual]
int LbmFsgrSolver::getCellSet ( CellIdentifierInterface ) [virtual]

return node information

Implements LbmSolverInterface.

Definition at line 1386 of file solver_util.cpp.

References convertBaseCidToStdCid(), UniformFsgrCellIdentifier::level, mLevel, and FsgrLevelData::setCurr.

Referenced by debugDisplayNode(), and debugPrintNodeInfo().

ntlVec3Gfx LbmFsgrSolver::getCellSize ( CellIdentifierInterface basecid) [virtual]
LbmVec LbmFsgrSolver::getCellVelocity ( CellIdentifierInterface basecid,
int  set 
) [virtual]
LbmFloat LbmFsgrSolver::getCollideEq ( int  l,
LbmFloat  rho,
LbmFloat  ux,
LbmFloat  uy,
LbmFloat  uz 
) [inline, static, protected]

calculate equilibrium DF for given values

Definition at line 902 of file solver_class.h.

References dfLength, errFatal, getVelVecLen(), LBM_DFNUM, and SIMWORLD_PANIC.

Referenced by adaptTimestep(), coarseRestrictCell(), collideArrays(), initMovingObstacles(), initVelocityCell(), LbmFsgrSolver(), mainLoop(), and reinitFlags().

vector< ntlGeometryObject * > LbmFsgrSolver::getDebugObjects ( ) [virtual]

check whether to add particle bool checkAddParticle(); void performAddParticle();

debug object display (used e.g. for preview surface)

debug object display

Reimplemented from LbmSolverInterface.

Definition at line 414 of file solver_util.cpp.

References i, LbmSolverInterface::mOutputSurfacePreview, mpPreviewSurface, and mUseTestdata.

LbmFloat LbmFsgrSolver::getEquilDf ( int  ) [virtual]

get equilibrium distribution functions

Implements LbmSolverInterface.

Definition at line 1505 of file solver_util.cpp.

References dfEquil.

CellIdentifierInterface * LbmFsgrSolver::getFirstCell ( ) [virtual]
int LbmFsgrSolver::getForZMax1 ( int  lev) [protected]
int LbmFsgrSolver::getForZMaxBnd ( int  lev) [protected]
int LbmFsgrSolver::getForZMin1 ( ) [protected]
int LbmFsgrSolver::getForZMinBnd ( ) [protected]

minimal and maximal z-coords (for 2D/3D loops)

Definition at line 962 of file solver_class.h.

Referenced by handleCpdata(), initStandingFluidGradient(), notifySolverOfDump(), and prepareVisualization().

virtual string LbmFsgrSolver::getIdString ( ) [inline, protected, virtual]

id string of solver

Implements LbmSolverInterface.

Definition at line 562 of file solver_class.h.

LbmFloat LbmFsgrSolver::getLesNoneqTensorCoeff ( LbmFloat  df[],
LbmFloat  feq[] 
) [inline, protected]

relaxation LES functions

Definition at line 1069 of file solver_relax.h.

References cDfNum, LBMDIM, lesCoeffDiag, lesCoeffOffdiag, and sqrt().

Referenced by adaptTimestep(), coarseRestrictCell(), and collideArrays().

LbmFloat LbmFsgrSolver::getLesOmega ( LbmFloat  omega,
LbmFloat  csmago,
LbmFloat  Qo 
) [inline, protected]

Definition at line 1094 of file solver_relax.h.

References C, and sqrt().

Referenced by adaptTimestep(), coarseRestrictCell(), and collideArrays().

LbmFloat LbmFsgrSolver::getMassdWeight ( bool  dirForw,
int  i,
int  j,
int  k,
int  workSet,
int  l 
) [protected]

mass dist weights

Definition at line 1217 of file solver_main.cpp.

References CellFlagType, computeFluidSurfaceNormal(), LBM_EPSILON, mDvecNrm, mMaxRefine, RACPNT, and RFLAG.

Referenced by reinitFlags().

ntlVec3Gfx LbmFsgrSolver::getVelocityAt ( float  x,
float  y,
float  z 
) [virtual]
LbmFloat LbmFsgrSolver::getVelVecLen ( int  l,
LbmFloat  ux,
LbmFloat  uy,
LbmFloat  uz 
) [inline, static, protected]

equilibrium functions

calculate length of velocity vector

Definition at line 897 of file solver_class.h.

References dfDvecX, dfDvecY, and dfDvecZ.

Referenced by getCollideEq().

void LbmFsgrSolver::handleCpdata ( ) [protected]

Definition at line 411 of file solver_control.cpp.

References ABS, ControlParticle::avgVel, ControlParticle::avgVelAcc, ControlParticle::avgVelWeight, BOUNDCHECK, ControlParticles::calculateCpInfluenceOpt(), ControlParticles::calculateKernelWeight(), ControlParticles::calculateMaxdForce(), cDirNum, CellFlagType, CFEmpty, CFFluid, CFInter, CFUnused, ControlForces::compAv, ControlForces::compAvWeight, CPODEBUG, debMsgStd, ControlParticle::density, ControlParticle::densityWeight, dfDvecX, dfDvecY, dfDvecZ, dfVecX, dfVecY, dfVecZ, DM_MSG, credits_svn_gen::e, errMsg, ControlForces::forceAtt, ControlForces::forceMaxd, ControlForces::forceVel, FORDF1, FSGR_FORIJK_BOUNDS, AnimChannel< Scalar >::get(), ControlParticles::getControlTimEnd(), ControlParticles::getControlTimStart(), getForZMaxBnd(), getForZMinBnd(), ControlParticles::getInfluenceMaxdist(), ControlParticles::getParticle(), ControlParticles::getRadiusAtt(), ControlParticles::getRadiusMaxd(), ControlParticles::getRadiusMinMaxd(), ControlParticles::getRadiusVel(), ControlParticles::getSize(), getTime(), Parametrizer::getTimestep(), getTimeString(), i, ControlParticle::influence, KERN, LBMDIM, LBMGET_FORCE, FsgrLevelData::lSizex, FsgrLevelData::lSizey, FsgrLevelData::lSizez, MAX, ControlForces::maxDistance, LbmControlSet::mcCpOffset, LbmControlSet::mcCpScale, LbmControlSet::mcForceAtt, LbmControlSet::mcForceMaxd, LbmControlSet::mcForceVel, LbmControlData::mCons, LbmControlData::mCpForces, LbmControlData::mCpKernel, LbmControlData::mCpUpdateInterval, LbmControlSet::mcRadiusAtt, LbmControlSet::mcRadiusMaxd, LbmControlSet::mcRadiusMind, LbmControlSet::mcRadiusVel, MDKERN, MIN, mLastSimTime, mLevel, mMaxRefine, LbmControlData::mMdKernel, mpControl, LbmSolverInterface::mpParam, mSimulationTime, LbmSolverInterface::mStepCnt, LbmSolverInterface::mTForceStrength, LbmSolverInterface::mvGeoEnd, LbmSolverInterface::mvGeoStart, FsgrLevelData::nodeSize, NOFORCEENTRY, NULL, ControlParticle::pos, ControlParticles::prepareControl(), PRINT_IJK, PRINT_VEC, QCELL, ControlParticle::reset(), ControlForces::resetForces(), RFLAG, FsgrLevelData::setCurr, ControlParticles::setInfluenceAttraction(), ControlParticles::setInfluenceMaxdist(), ControlParticles::setInfluenceVelocity(), ControlParticles::setLastOffset(), ControlParticles::setLastScale(), ControlParticles::setOffset(), ControlParticles::setRadiusAtt(), ControlParticles::setRadiusMaxd(), ControlParticles::setRadiusMinMaxd(), ControlParticles::setRadiusVel(), ControlParticles::setScale(), FsgrLevelData::timestep, vec2L(), ControlParticle::vel, ControlForces::weightAtt, and ControlForces::weightVel.

Referenced by stepMain().

void LbmFsgrSolver::handleObstacleParticle ( ParticleObject p)
void LbmFsgrSolver::initCpdata ( ) [protected]

Definition at line 220 of file solver_control.cpp.

References ControlParticles::calculateKernelWeight(), CFFluid, debMsgStd, DM_MSG, errMsg, FGI_CONTROL, FSGR_FORIJK_BOUNDS, ControlParticles::getCharLength(), ControlParticles::getControlTimEnd(), ControlParticles::getControlTimStart(), ntlGeometryObject::getCpsAttrFRad(), ntlGeometryObject::getCpsAttrFStr(), ntlGeometryObject::getCpsQuality(), ntlGeometryObject::getCpsTimeEnd(), ntlGeometryObject::getCpsTimeStart(), ntlGeometryObject::getCpsVelFRad(), ntlGeometryObject::getCpsVelFStr(), ParticleTracer::getDumpTextInterval(), ntlGeometryObject::getGeoInitType(), ParticleTracer::getNumInitialParticles(), ParticleTracer::getNumParticles(), ControlParticles::getSize(), Parametrizer::getTimestep(), ControlParticles::getTotalSize(), i, LbmControlSet::initCparts(), ControlParticles::initFromTextFile(), LBM_EPSILON, LBMDIM, LONGINT, FsgrLevelData::lSizex, FsgrLevelData::lSizey, FsgrLevelData::lSizez, LbmControlSet::mcForceAtt, LbmControlSet::mcForceVel, LbmControlData::mCons, LbmControlSet::mContrPartFile, LbmControlSet::mCparts, LbmControlData::mCpForces, LbmControlData::mCpOutfile, LbmSolverInterface::mCppfStage, LbmControlSet::mcRadiusAtt, LbmControlSet::mcRadiusVel, mLevel, mMaxRefine, mpControl, LbmSolverInterface::mpGiObjects, LbmSolverInterface::mpParam, LbmSolverInterface::mpParticles, LbmControlData::mSetForceStrength, LbmSolverInterface::mTForceStrength, RFLAG, ControlParticles::setCharLength(), ControlParticles::setCPSMvmWeightFac(), ControlParticles::setCPSTimeEnd(), ControlParticles::setCPSTimeStart(), ControlParticles::setCPSWith(), FsgrLevelData::setCurr, ParticleTracer::setDumpParts(), ParticleTracer::setDumpTextFile(), ParticleTracer::setDumpTextInterval(), ControlParticles::setFluidSpacing(), ControlParticles::setInfluenceVelocity(), ParticleTracer::setNumInitialParticles(), and FsgrLevelData::timestep.

Referenced by initializeSolverPostinit().

void LbmFsgrSolver::initEmptyCell ( int  level,
int  i,
int  j,
int  k,
CellFlagType  flag,
LbmFloat  rho,
LbmFloat  mass 
)

init a given cell with flag, density, mass and equilibrium dist. funcs

Definition at line 928 of file solver_class.h.

References changeFlag(), dfEquil, dFfrac, dFlux, dMass, FLUX_INIT, FORDF0, mLevel, RAC, RACPNT, and FsgrLevelData::setCurr.

Referenced by initFreeSurfaces(), initializeSolverGrids(), initializeSolverMemory(), and initMovingObstacles().

void LbmFsgrSolver::initFreeSurfaces ( )
bool LbmFsgrSolver::initGeometryFlags ( )

perform geometry init (if switched on)

Definition at line 1774 of file solver_init.cpp.

References BND_FILL, Parametrizer::calculateAllMissingValues(), Parametrizer::calculateLattVelocityFromRw(), CellFlagType, CFBnd, CFBndFreeslip, CFBndNoslip, CFBndPartslip, CFEmpty, CFFluid, CFInvalid, CFMbndInflow, CFMbndOutflow, debMsgStd, distance(), DM_MSG, FGI_ALLBOUNDS, FGI_BNDFREE, FGI_BNDNO, FGI_BNDPART, FGI_FLUID, FGI_MBNDINFLOW, FGI_MBNDOUTFLOW, LbmSolverInterface::freeGeoTree(), LbmSolverInterface::geoInitCheckPointInside(), getForZMax1(), getForZMin1(), ntlGeometryObject::getGeoInitType(), LbmSolverInterface::getGeoMaxMovementVelocity(), ntlGeometryObject::getIsAnimated(), ntlGeometryObject::getMeshAnimated(), ntlGeometryClass::getName(), GETPOS, Parametrizer::getSimulationMaxSpeed(), Parametrizer::getTadapMaxSpeed(), getTime(), Parametrizer::getTimestep(), getTimeString(), ntlGeometryObject::getVolumeInit(), i, LbmSolverInterface::initGeoTree(), initMovingObstacles(), ntlGeometryObject::initMovingPoints(), initVelocityCell(), LBMDIM, FsgrLevelData::lSizex, FsgrLevelData::lSizey, LbmSolverInterface::mAllfluid, LbmSolverInterface::mLbmInitId, mLevel, mMaxRefine, mObjectSpeeds, LbmSolverInterface::mpGiObjects, LbmSolverInterface::mpParam, LbmSolverInterface::mSilent, mSimulationTime, LbmSolverInterface::mvGeoEnd, LbmSolverInterface::mvGeoStart, norm(), recalculateObjectSpeeds(), RFLAG, Parametrizer::setDesiredTimestep(), Parametrizer::setSimulationMaxSpeed(), vec2G(), vec2P(), and VOLUMEINIT_SHELL.

Referenced by initializeSolverGrids().

bool LbmFsgrSolver::initializeSolverGrids ( ) [virtual]
bool LbmFsgrSolver::initializeSolverMemory ( ) [virtual]

finish the init with config file values (allocate arrays...)

Implements LbmSolverInterface.

Definition at line 650 of file solver_init.cpp.

References ABS, FsgrLevelData::avgOmega, FsgrLevelData::avgOmegaCnt, Parametrizer::calculateAllMissingValues(), calculateMemreqEstimate(), CellFlagType, CellFlagTypeSize, CFEmpty, CFFluid, COMPRESSGRIDS, debMsgStd, DM_MSG, DM_WARNING, dTotalNum, errFatal, errMsg, FSGR_FORIJK_BOUNDS, FSGR_LISTTRICK, FSGR_LISTTTHRESHEMPTY, FSGR_LISTTTHRESHFULL, FSGR_MAGICNR, FSGR_STRICT_DEBUG, fssgNoBottom, fssgNoEast, fssgNoNorth, fssgNoObs, fssgNormal, fssgNoSouth, fssgNoTop, fssgNoWest, Parametrizer::getCellSize(), IsoSurface::getData(), ntlGeometryObject::getMaterialName(), Parametrizer::getTimestep(), glob_mpactive, glob_mpindex, glob_mpnum, FsgrLevelData::gravity, i, FsgrLevelData::id, initEmptyCell(), initGridSizes(), IsoSurface::initializeIsosurface(), initLevelOmegas(), LBM_EPSILON, LBMDIM, FsgrLevelData::lcellfactor, FsgrLevelData::lmass, FsgrLevelData::lOffsx, FsgrLevelData::lOffsy, FsgrLevelData::lOffsz, LONGINT, FsgrLevelData::lSizex, FsgrLevelData::lSizey, FsgrLevelData::lSizez, FsgrLevelData::lsteps, FsgrLevelData::lvolume, LbmSolverInterface::mAllfluid, MASS_INVALID, mAvgNumUsedCells, LbmSolverInterface::mCppfStage, LbmSolverInterface::mFarFieldSize, LbmSolverInterface::mFixMass, mForceTadapRefine, mFsSurfGenSetting, mFVHeight, LbmSolverInterface::mInitDone, LbmSolverInterface::mIsoSubdivs, LbmSolverInterface::mIsoValue, mIsoWeight, mIsoWeightMethod, mLevel, mMaxRefine, mMaxTimestep, mMinTimestep, LbmSolverInterface::mOutputSurfacePreview, LbmSolverInterface::mpIso, LbmSolverInterface::mpParam, mpPreviewSurface, LbmSolverInterface::mPreviewFactor, FsgrLevelData::mprsCells, FsgrLevelData::mprsFlags, mSimulationTime, LbmSolverInterface::mSizex, LbmSolverInterface::mSizey, LbmSolverInterface::mSizez, LbmSolverInterface::mSmoothNormals, LbmSolverInterface::mSmoothSurface, mUseTestdata, LbmSolverInterface::mvGeoEnd, LbmSolverInterface::mvGeoStart, FsgrLevelData::nodeSize, NULL, FsgrLevelData::omega, OPT3D, PARALLEL, preinitGrids(), PRINT_VEC, RFLAG, FsgrLevelData::setCurr, IsoSurface::setEnd(), Parametrizer::setFluidVolumeHeight(), IsoSurface::setIsolevel(), ntlGeometryObject::setMaterialName(), ntlGeometryClass::setName(), FsgrLevelData::setOther, Parametrizer::setSimulationMaxSpeed(), Parametrizer::setSize(), IsoSurface::setSmoothNormals(), IsoSurface::setSmoothSurface(), IsoSurface::setStart(), IsoSurface::setSubdivs(), Parametrizer::setTadapLevels(), IsoSurface::setUseFulledgeArrays(), ntlGeometryClass::setVisible(), FsgrLevelData::simCellSize, SIMWORLD_GENERICERROR, SIMWORLD_INITERROR, sqrt(), FsgrLevelData::time, FsgrLevelData::timestep, USE_LES, vec2G(), and vec2L().

bool LbmFsgrSolver::initializeSolverPostinit ( ) [virtual]
void LbmFsgrSolver::initInterfaceVars ( int  level,
int  i,
int  j,
int  k,
int  workSet,
bool  initMass 
)

Definition at line 1001 of file solver_class.h.

References dFfrac, dFlux, dMass, FLUX_INIT, FORDF0, QCELL, and RAC.

Referenced by reinitFlags().

void LbmFsgrSolver::initLevelOmegas ( )
void LbmFsgrSolver::initMovingObstacles ( bool  staticInit) [protected]

init moving obstacles for next sim step sim

Definition at line 1362 of file solver_init.cpp.

References ntlGeometryObject::applyTransformation(), BND_FILL, Parametrizer::calculateLattVelocityFromRw(), ntlGeometryObject::calculateMaxVel(), CellFlagType, CFBnd, CFBndFreeslip, CFBndMoving, CFBndNoslip, CFBndPartslip, CFEmpty, CFFluid, CFInter, CFInvalid, CFMbndInflow, CFMbndOutflow, CFNoBndFluid, CFNoInterpolSrc, CFNoPersistMask, changeFlag(), dC, debMsgStd, dfDvecX, dfDvecY, dfDvecZ, dFfrac, dfLength, dFlux, DM_MSG, DM_WARNING, dMass, errMsg, FGI_ALLBOUNDS, FGI_BNDFREE, FGI_BNDNO, FGI_BNDPART, FGI_FLUID, FGI_MBNDINFLOW, FGI_MBNDOUTFLOW, FLUX_INIT, forceChangeFlag(), FORDF0, FORDF1, getCollideEq(), ntlGeometryObject::getGeoActive(), ntlGeometryObject::getGeoImpactFactor(), ntlGeometryClass::getGeoInitId(), ntlGeometryObject::getGeoInitType(), ntlGeometryObject::getIsAnimated(), ntlGeometryObject::getMeshAnimated(), ntlGeometryObject::getMovingPoints(), ntlGeometryClass::getName(), getTime(), Parametrizer::getTimestep(), getTimeString(), i, initEmptyCell(), ntlGeometryObject::initMovingPointsAnim(), initVelocityCell(), interpolateCellValues(), LBMDIM, LbmSolverInterface::mInitDone, mInitialMass, mLastSimTime, LbmSolverInterface::mLbmInitId, mLevel, mListEmpty, mMaxRefine, mMaxVlen, mMOINormals, mMOIVertices, mMOIVerticesOld, mMxvx, mMxvy, mMxvz, mObjectMassMovnd, mObjectSpeeds, LbmSolverInterface::mpGiObjects, LbmSolverInterface::mpParam, mSimulationTime, LbmSolverInterface::mvGeoEnd, LbmSolverInterface::mvGeoStart, normNoSqrt(), NULL, OBJVEL_CALC, POS2GRID_CHECK, QCELL, RAC, RACPNT, RFLAG, RFLAG_NB, FsgrLevelData::setCurr, FsgrLevelData::setOther, USQRMAXCHECK, vec2L(), vec2P(), LbmPoint::x, LbmPoint::y, and LbmPoint::z.

Referenced by initGeometryFlags(), and stepMain().

int LbmFsgrSolver::initParticles ( ) [virtual]
void LbmFsgrSolver::initStandingFluidGradient ( )
void LbmFsgrSolver::initVelocityCell ( int  level,
int  i,
int  j,
int  k,
CellFlagType  flag,
LbmFloat  rho,
LbmFloat  mass,
LbmVec  vel 
)
void LbmFsgrSolver::interpolateCellFromCoarse ( int  lev,
int  i,
int  j,
int  k,
int  dstSet,
LbmFloat  t,
CellFlagType  flagSet,
bool  markNbs 
) [protected]

cell is interpolated from coarse level (inited into set, source sets are determined by t)

Definition at line 845 of file solver_adap.cpp.

References ADD_INT_DFS, CAUSE_PANIC, CFFluid, CFGrFromCoarse, CFUnused, dfVecX, dfVecY, dfVecZ, errFatal, FORDF1, IDF_WRITEBACK, LBM_DFNUM, mNumInterdCells, RFLAG, SIMWORLD_GENERICERROR, WO1D1, WO1D2, and WO1D3.

Referenced by adaptGrid(), coarseAdvance(), and mainLoop().

void LbmFsgrSolver::interpolateCellValues ( int  level,
int  ei,
int  ej,
int  ek,
int  workSet,
LbmFloat retrho,
LbmFloat retux,
LbmFloat retuy,
LbmFloat retuz 
)

interpolate velocity and density at a given position

Definition at line 2328 of file solver_init.cpp.

References cDfNum, CFFluid, CFInter, CFNoInterpolSrc, dfDvecX, dfDvecY, dfDvecZ, errMsg, nbdf, PRINT_VEC, QCELL_NB, and RFLAG_NB.

Referenced by initFreeSurfaces(), initMovingObstacles(), and reinitFlags().

void LbmFsgrSolver::lbmDebugDisplay ( int  dispset) [virtual]

debug display function

Implements LbmSolverInterface.

Definition at line 1845 of file solver_util.cpp.

References advanceCell(), cpDebugDisplay(), debugDisplayNode(), FLUIDDISPNothing, getFirstCell(), mUseTestdata, and noEndCell().

Referenced by debugDisplay().

void LbmFsgrSolver::lbmMarkedCellDisplay ( ) [virtual]
void LbmFsgrSolver::mainLoop ( int  lev) [protected]

fine step function

Definition at line 358 of file solver_main.cpp.

References ABS, add(), CAUSE_PANIC, cDfNum, CellFlagType, CFBnd, CFBndNoslip, CFEmpty, CFFluid, CFGrFromCoarse, CFInter, CFMbndInflow, CFMbndOutflow, CFNoBndFluid, CFNoDelete, CFNoInterpolSrc, CFNoNbEmpty, CFNoNbFluid, CFUnused, changeFlag(), computeFluidSurfaceNormal(), dB, dC, dE, dEB, DEFAULT_COLLIDEG, DEFAULT_STREAM, dET, dfDvecX, dfDvecY, dfDvecZ, dFfrac, dfInv, dfLength, dFlux, dMass, dN, dNB, dNE, dNT, dNW, dS, dSB, dSE, dST, dSW, dT, dW, dWB, dWT, EQB, EQE, EQEB, EQET, EQN, EQNB, EQNE, EQNT, EQNW, EQS, EQSB, EQSE, EQST, EQSW, EQT, EQW, EQWB, EQWT, errMsg, LbmPoint::flag, FLUX_INIT, FORDF0, FORDF1, FSGR_ADDPART, FSGR_LISTTTHRESHEMPTY, FSGR_LISTTTHRESHFULL, FSGR_MAGICNR, getCollideEq(), ParticleObject::getMass(), FsgrLevelData::gravity, GRID_LOOP_START, GRID_LOOPREG_END, GRID_REGION_INIT, GRID_REGION_START, i, interpolateCellFromCoarse(), LBM_DFNUM, LBM_EPSILON, LIST_EMPTY, LIST_FULL, FsgrLevelData::lmass, FsgrLevelData::lOffsx, FsgrLevelData::lOffsy, FsgrLevelData::lSizex, FsgrLevelData::lSizey, FsgrLevelData::lvolume, mCutoff, LbmSolverInterface::mInitDone, mInitialMass, mLevel, mMaxRefine, LbmSolverInterface::mNumEmptiedCells, LbmSolverInterface::mNumFilledCells, mNumInvIfCells, LbmSolverInterface::mNumUsedCells, mObjectSpeeds, LbmSolverInterface::mPartDropMassSub, LbmSolverInterface::mPartGenProb, LbmSolverInterface::mPartUsePhysModel, LbmSolverInterface::mSizex, LbmSolverInterface::mSizey, LbmSolverInterface::mSizez, LbmSolverInterface::mStepCnt, mUseTestdata, MYDF, nbdf, norm(), normalize(), OPTIMIZED_STREAMCOLLIDE, P_LCSMQO, PART_DROP, PART_IN, PERFORM_USQRMAXCHECK, PRINT_IJK, QCELL, QCELL_NB, RAC, REFERENCE_PRESSURE, RFLAG, RFLAG_NB, RWVEL_THRESH, RWVEL_WINDTHRESH, ParticleObject::setSize(), ParticleObject::setStatus(), ParticleObject::setType(), ParticleObject::setVel(), FsgrLevelData::simCellSize, SLOWDOWNREGION, SRCS, FsgrLevelData::timestep, TSET, LbmPoint::x, LbmPoint::y, and LbmPoint::z.

Referenced by fineAdvance().

bool LbmFsgrSolver::noEndCell ( CellIdentifierInterface basecid) [virtual]

Implements LbmSolverInterface.

Definition at line 1332 of file solver_util.cpp.

References convertBaseCidToStdCid(), and CellIdentifierInterface::getEnd().

Referenced by lbmDebugDisplay().

void LbmFsgrSolver::notifySolverOfDump ( int  dumptype,
int  frameNr,
char *  frameNrStr,
string  outfilename 
) [virtual]
void LbmFsgrSolver::parseAttrList ( void  ) [virtual]
void LbmFsgrSolver::preinitGrids ( ) [protected]
void LbmFsgrSolver::prepareVisualization ( void  ) [virtual]
void LbmFsgrSolver::printLbmCell ( int  level,
int  i,
int  j,
int  k,
int  set 
) [protected]

internal quick print function (for debugging)

Definition at line 1244 of file solver_util.cpp.

References debugPrintNodeInfo(), i, UniformFsgrCellIdentifier::level, UniformFsgrCellIdentifier::x, UniformFsgrCellIdentifier::y, and UniformFsgrCellIdentifier::z.

Referenced by fineAdvance().

void LbmFsgrSolver::recalculateObjectSpeeds ( ) [protected]
void LbmFsgrSolver::reinitFlags ( int  workSet) [protected]
void LbmFsgrSolver::setSurfGenSettings ( short  value) [virtual]

Implements LbmSolverInterface.

Definition at line 544 of file solver_init.cpp.

References mFsSurfGenSetting.

void LbmFsgrSolver::standingFluidPreinit ( ) [protected]
void LbmFsgrSolver::step ( void  ) [virtual]

Implements LbmSolverInterface.

Definition at line 31 of file solver_main.cpp.

References stepMain().

void LbmFsgrSolver::stepMain ( )

perform a single LBM step

Definition at line 37 of file solver_main.cpp.

References ABS, adaptGrid(), adaptTimestep(), advanceParticles(), FsgrLevelData::avgOmega, FsgrLevelData::avgOmegaCnt, CAUSE_PANIC, CFFluid, CFGrFromCoarse, CFGrFromFine, CFGrNorm, CFInter, ParticleTracer::checkDumpTextPositions(), ParticleTracer::checkTrails(), coarseAdvance(), coarseRestrictFromFine(), debMsgDirect, debMsgStd, dFfrac, DM_MSG, DM_NOTIFY, dMass, credits_svn_gen::e, errMsg, fineAdvance(), FORDF0, FSGR_FORIJK1, getForZMax1(), getForZMin1(), getTime(), getTimeString(), glob_mpindex, handleCpdata(), i, initLevelOmegas(), initMovingObstacles(), FsgrLevelData::lmass, LONGINT, FsgrLevelData::lSizex, FsgrLevelData::lvolume, LbmSolverInterface::markedClearList(), mAvgMLSUPS, mAvgMLSUPSCnt, mAvgNumUsedCells, mCurrentMass, mCurrentVolume, messageOutputForce(), LbmSolverInterface::mFixMass, LbmSolverInterface::mInitDone, mInitialMass, mLevel, mMaxNoCells, mMaxRefine, mMaxVlen, mMinNoCells, LbmSolverInterface::mMLSUPS, mMxvx, mMxvy, mMxvz, LbmSolverInterface::mName, LbmSolverInterface::mNumEmptiedCells, LbmSolverInterface::mNumFilledCells, mNumFsgrChanges, mNumInterdCells, mNumInvIfCells, mNumInvIfTotal, mNumProblems, LbmSolverInterface::mNumUsedCells, LbmSolverInterface::mpParticles, LbmSolverInterface::mSilent, mSimulationTime, LbmSolverInterface::mStepCnt, mTimeAdap, mTimeSwitchCounts, mUseTestdata, PRINT_VEC, QCELL, RFLAG, and FsgrLevelData::setCurr.

Referenced by initializeSolverPostinit(), and step().


Member Data Documentation

const LbmFloat LbmFsgrSolver::cCollenOne = (1.0/18.0) [protected]

Definition at line 569 of file solver_class.h.

const LbmFloat LbmFsgrSolver::cCollenSqrtTwo = (1.0/36.0) [protected]

Definition at line 570 of file solver_class.h.

const LbmFloat LbmFsgrSolver::cCollenZero = (1.0/3.0) [protected]

Definition at line 568 of file solver_class.h.

const int LbmFsgrSolver::cDfNum = 19 [protected]

size of a single set of distribution functions

Definition at line 579 of file solver_class.h.

Referenced by adaptTimestep(), collideArrays(), fineAdvance(), getLesNoneqTensorCoeff(), getVelocityAt(), interpolateCellValues(), LbmFsgrSolver(), mainLoop(), and reinitFlags().

const int LbmFsgrSolver::cDimension = 3 [protected]

how many dimensions? UNUSED? replace by LBMDIM?

common variables

3D implementation D3Q19 how many dimensions?

Definition at line 565 of file solver_class.h.

const int LbmFsgrSolver::cDirNum = 27 [protected]

direction vector contain vecs for all spatial dirs, even if not used for LBM model

Definition at line 581 of file solver_class.h.

Referenced by adaptGrid(), coarseCalculateFluxareas(), coarseRestrictCell(), handleCpdata(), initFreeSurfaces(), initializeSolverPostinit(), and LbmFsgrSolver().

const LbmFloat LbmFsgrSolver::cMagicNr = 1.010001 [protected]

Definition at line 575 of file solver_class.h.

const LbmFloat LbmFsgrSolver::cMagicNr2 = 1.0005 [protected]

threshold value for filled/emptied cells

Definition at line 573 of file solver_class.h.

const LbmFloat LbmFsgrSolver::cMagicNr2Neg = -0.0005 [protected]

Definition at line 574 of file solver_class.h.

const LbmFloat LbmFsgrSolver::cMagicNrNeg = -0.010001 [protected]

Definition at line 576 of file solver_class.h.

const LbmFloat LbmFsgrSolver::dfDvecX [protected]
Initial value:
 {
        0, 0,0, 1,-1, 0,0,
        1,-1,1,-1,
        0,0,0,0,
        1,1,-1,-1,
         1,-1, 1,-1,
         1,-1, 1,-1
    }

arrays as before with doubles

Definition at line 637 of file solver_class.h.

Referenced by adaptTimestep(), advanceParticles(), coarseRestrictCell(), collideArrays(), fineAdvance(), getCellVelocity(), getVelocityAt(), getVelVecLen(), handleCpdata(), initMovingObstacles(), interpolateCellValues(), LbmFsgrSolver(), and mainLoop().

const LbmFloat LbmFsgrSolver::dfDvecY [protected]
Initial value:
 {
        0, 1,-1, 0,0,0,0,
        1,1,-1,-1,
        1,1,-1,-1,
        0,0,0,0,
         1, 1,-1,-1,
         1, 1,-1,-1
    }

Definition at line 638 of file solver_class.h.

Referenced by adaptTimestep(), advanceParticles(), coarseRestrictCell(), collideArrays(), fineAdvance(), getCellVelocity(), getVelocityAt(), getVelVecLen(), handleCpdata(), initMovingObstacles(), interpolateCellValues(), LbmFsgrSolver(), and mainLoop().

const LbmFloat LbmFsgrSolver::dfDvecZ [protected]
Initial value:
 {
        0, 0,0,0,0,1,-1,
        0,0,0,0,
        1,-1,1,-1,
        1,-1,1,-1,
         1, 1, 1, 1,
        -1,-1,-1,-1
    }

Definition at line 639 of file solver_class.h.

Referenced by adaptTimestep(), advanceParticles(), coarseRestrictCell(), collideArrays(), fineAdvance(), getCellVelocity(), getVelocityAt(), getVelVecLen(), handleCpdata(), initMovingObstacles(), interpolateCellValues(), LbmFsgrSolver(), and mainLoop().

LbmFloat LbmFsgrSolver::dfEquil [static, protected]

equilibrium distribution functions, precalculated = getCollideEq(i, 0,0,0,0)

Definition at line 650 of file solver_class.h.

Referenced by getEquilDf(), initEmptyCell(), and LbmFsgrSolver().

const int LbmFsgrSolver::dfInv [protected]
Initial value:

index of inverse dist func, not fast, but useful...

Definition at line 622 of file solver_class.h.

Referenced by LbmFsgrSolver(), and mainLoop().

const LbmFloat LbmFsgrSolver::dfLength [protected]
const int LbmFsgrSolver::dfNorm [protected]
Initial value:

index of normal dist func, not used so far?...

Definition at line 619 of file solver_class.h.

const int LbmFsgrSolver::dfRefX [protected]
Initial value:
 { 
        0,  0, 0, 0, 0, 0, 0,
        cDirSE, cDirSW, cDirNE, cDirNW,
        0, 0, 0, 0, 
        cDirEB, cDirET, cDirWB, cDirWT
    }

index of x reflected dist func for free slip, not valid for all DFs...

Definition at line 625 of file solver_class.h.

const int LbmFsgrSolver::dfRefY [protected]
Initial value:
 { 
        0,  0, 0, 0, 0, 0, 0,
        cDirNW, cDirNE, cDirSW, cDirSE,
        cDirNB, cDirNT, cDirSB, cDirST,
        0, 0, 0, 0
    }

index of x reflected dist func for free slip, not valid for all DFs...

Definition at line 627 of file solver_class.h.

const int LbmFsgrSolver::dfRefZ [protected]
Initial value:
 { 
        0,  0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 
        cDirST, cDirSB, cDirNT, cDirNB,
        cDirWT, cDirWB, cDirET, cDirEB
    }

index of x reflected dist func for free slip, not valid for all DFs...

Definition at line 629 of file solver_class.h.

const char * LbmFsgrSolver::dfString [protected]
Initial value:
 { 
        " C", " N"," S"," E"," W"," T"," B",
        "NE","NW","SE","SW",
        "NT","NB","ST","SB",
        "ET","EB","WT","WB"
    }

name of the dist. function only for nicer output

Definition at line 616 of file solver_class.h.

const int LbmFsgrSolver::dfVecX [protected]
Initial value:
 { 
        0, 0,0, 1,-1, 0,0,
        1,-1,1,-1,
        0,0,0,0,
        1,1,-1,-1,
         1,-1, 1,-1,
         1,-1, 1,-1,
    }

dist func vectors

Definition at line 632 of file solver_class.h.

Referenced by adaptGrid(), coarseCalculateFluxareas(), coarseRestrictCell(), getVelocityAt(), handleCpdata(), initFreeSurfaces(), initializeSolverPostinit(), interpolateCellFromCoarse(), LbmFsgrSolver(), prepareVisualization(), and reinitFlags().

const int LbmFsgrSolver::dfVecY [protected]
Initial value:
 { 
        0, 1,-1, 0,0,0,0,
        1,1,-1,-1,
        1,1,-1,-1,
        0,0,0,0,
         1, 1,-1,-1,
         1, 1,-1,-1
    }

Definition at line 633 of file solver_class.h.

Referenced by adaptGrid(), coarseCalculateFluxareas(), coarseRestrictCell(), getVelocityAt(), handleCpdata(), initFreeSurfaces(), initializeSolverPostinit(), interpolateCellFromCoarse(), LbmFsgrSolver(), prepareVisualization(), and reinitFlags().

const int LbmFsgrSolver::dfVecZ [protected]
Initial value:
 { 
        0, 0,0,0,0,1,-1,
        0,0,0,0,
        1,-1,1,-1,
        1,-1,1,-1,
         1, 1, 1, 1,
        -1,-1,-1,-1
    }

Definition at line 634 of file solver_class.h.

Referenced by adaptGrid(), coarseCalculateFluxareas(), coarseRestrictCell(), getVelocityAt(), handleCpdata(), initFreeSurfaces(), initializeSolverPostinit(), interpolateCellFromCoarse(), LbmFsgrSolver(), prepareVisualization(), and reinitFlags().

arrays for les model coefficients

arrays for les model coefficients, inited in lbmsolver constructor

Definition at line 653 of file solver_class.h.

Referenced by getLesNoneqTensorCoeff(), and LbmFsgrSolver().

Definition at line 654 of file solver_class.h.

Referenced by getLesNoneqTensorCoeff(), and LbmFsgrSolver().

double LbmFsgrSolver::mAvgMLSUPS [protected]

Definition at line 369 of file solver_class.h.

Referenced by stepMain(), and ~LbmFsgrSolver().

double LbmFsgrSolver::mAvgMLSUPSCnt [protected]

Definition at line 370 of file solver_class.h.

Referenced by stepMain(), and ~LbmFsgrSolver().

LONGINT LbmFsgrSolver::mAvgNumUsedCells [protected]

Definition at line 438 of file solver_class.h.

Referenced by initializeSolverMemory(), and stepMain().

mass calculated during streaming step

Definition at line 361 of file solver_class.h.

Referenced by adaptTimestep(), fineAdvance(), initializeSolverGrids(), and stepMain().

Definition at line 362 of file solver_class.h.

Referenced by adaptTimestep(), initializeSolverGrids(), and stepMain().

int LbmFsgrSolver::mCutoff [protected]

border cutoff value

Definition at line 493 of file solver_class.h.

Referenced by advanceParticles(), initializeSolverPostinit(), and mainLoop().

LES stats for non OPT3D

Definition at line 475 of file solver_class.h.

Definition at line 465 of file solver_class.h.

Referenced by initLevelOmegas().

df scale factors for level up/down

Definition at line 465 of file solver_class.h.

Referenced by coarseRestrictCell(), and initLevelOmegas().

debug function to disable standing f init

Definition at line 487 of file solver_class.h.

Referenced by initStandingFluidGradient(), and parseAttrList().

normalized vectors for all neighboring cell directions (for e.g. massdweight calc)

Definition at line 431 of file solver_class.h.

Referenced by getMassdWeight(), and LbmFsgrSolver().

debug function to force tadap syncing

Definition at line 491 of file solver_class.h.

Referenced by initializeSolverMemory(), and parseAttrList().

force smaller timestep for next LBM step? (eg for mov obj)

Definition at line 378 of file solver_class.h.

Referenced by adaptTimestep().

precomputed cell area values

Definition at line 468 of file solver_class.h.

Referenced by coarseCalculateFluxareas(), and initializeSolverPostinit().

Definition at line 382 of file solver_class.h.

Referenced by fineAdvance(), and parseAttrList().

fluid vol height

Definition at line 381 of file solver_class.h.

Referenced by fineAdvance(), initializeSolverMemory(), and parseAttrList().

restriction interpolation weights

Definition at line 470 of file solver_class.h.

Referenced by coarseRestrictCell(), and LbmFsgrSolver().

force quit for gfx

Definition at line 386 of file solver_class.h.

bool LbmFsgrSolver::mInit2dYZ [protected]

init 2d with skipped Y/Z coords

Definition at line 489 of file solver_class.h.

Referenced by initLevelOmegas(), and parseAttrList().

float LbmFsgrSolver::mInitialCsmago [protected]

LES C_smago paramter for finest grid

Definition at line 473 of file solver_class.h.

Referenced by initLevelOmegas(), and parseAttrList().

Definition at line 363 of file solver_class.h.

Referenced by initializeSolverGrids(), initMovingObstacles(), mainLoop(), and stepMain().

smoother surface initialization?

Definition at line 388 of file solver_class.h.

Referenced by initFreeSurfaces(), and parseAttrList().

float LbmFsgrSolver::mIsoWeight[27] [protected]

Definition at line 454 of file solver_class.h.

Referenced by initializeSolverMemory(), and prepareVisualization().

get isofield weights

Definition at line 453 of file solver_class.h.

Referenced by initializeSolverMemory(), and parseAttrList().

Definition at line 478 of file solver_class.h.

Referenced by adaptTimestep(), and initLevelOmegas().

remember last init for animated params

Definition at line 477 of file solver_class.h.

Referenced by adaptTimestep(), and initLevelOmegas().

Definition at line 412 of file solver_class.h.

Referenced by handleCpdata(), initializeSolverGrids(), and initMovingObstacles().

FsgrLevelData LbmFsgrSolver::mLevel[FSGR_MAXNOOFLEVELS] [protected]
vector<LbmPoint> LbmFsgrSolver::mListEmpty [protected]

list of the cells to empty at the end of the step

Definition at line 419 of file solver_class.h.

Referenced by initMovingObstacles(), and reinitFlags().

vector<LbmPoint> LbmFsgrSolver::mListFull [protected]

list of the cells to make fluid at the end of the step

Definition at line 421 of file solver_class.h.

Referenced by reinitFlags().

list of new interface cells to init

Definition at line 423 of file solver_class.h.

Referenced by addToNewInterList(), and reinitFlags().

int LbmFsgrSolver::mMaxNoCells [protected]

kepp track of max/min no. of filled cells

Definition at line 437 of file solver_class.h.

Referenced by stepMain().

int LbmFsgrSolver::mMaxRefine [protected]

Definition at line 414 of file solver_class.h.

Referenced by adaptTimestep(), and initializeSolverMemory().

Definition at line 416 of file solver_class.h.

Referenced by fineAdvance(), initMovingObstacles(), and stepMain().

int LbmFsgrSolver::mMinNoCells [protected]

Definition at line 437 of file solver_class.h.

Referenced by stepMain().

smallest and largest step size so far

Definition at line 414 of file solver_class.h.

Referenced by adaptTimestep(), and initializeSolverMemory().

Definition at line 450 of file solver_class.h.

Referenced by initMovingObstacles().

permanent movobj vert storage

Definition at line 448 of file solver_class.h.

Referenced by initMovingObstacles().

Definition at line 449 of file solver_class.h.

Referenced by initMovingObstacles().

track max. velocity

Definition at line 416 of file solver_class.h.

Referenced by initMovingObstacles(), and stepMain().

Definition at line 416 of file solver_class.h.

Referenced by initMovingObstacles(), and stepMain().

Definition at line 416 of file solver_class.h.

Referenced by initMovingObstacles(), and stepMain().

Definition at line 484 of file solver_class.h.

Referenced by adaptGrid(), initializeSolverPostinit(), and stepMain().

fluid stats

Definition at line 481 of file solver_class.h.

Referenced by coarseRestrictFromFine(), interpolateCellFromCoarse(), and stepMain().

Definition at line 482 of file solver_class.h.

Referenced by mainLoop(), and stepMain().

Definition at line 483 of file solver_class.h.

Referenced by stepMain().

int LbmFsgrSolver::mNumProblems [protected]

count problematic cases, that occured so far...

Definition at line 366 of file solver_class.h.

Referenced by stepMain().

moving object mass boundary condition values

Definition at line 445 of file solver_class.h.

Referenced by initMovingObstacles().

partslip bc. values for obstacle boundary conditions

Definition at line 443 of file solver_class.h.

Referenced by recalculateObjectSpeeds().

vector<LbmVec> LbmFsgrSolver::mObjectSpeeds [protected]

precalculated objects speeds for current parametrization

Definition at line 441 of file solver_class.h.

Referenced by initGeometryFlags(), initMovingObstacles(), mainLoop(), and recalculateObjectSpeeds().

Mcubes object for surface reconstruction.

Definition at line 373 of file solver_class.h.

Referenced by getDebugObjects(), initializeSolverMemory(), prepareVisualization(), and ~LbmFsgrSolver().

bool LbmFsgrSolver::mTimeAdap [protected]

use time adaptivity?

Definition at line 376 of file solver_class.h.

Referenced by parseAttrList(), and stepMain().

Definition at line 409 of file solver_class.h.

Referenced by adaptTimestep().

lock time step down switching

Definition at line 405 of file solver_class.h.

Referenced by adaptTimestep().

count no. of switches

Definition at line 407 of file solver_class.h.

Referenced by adaptTimestep(), and stepMain().

Definition at line 383 of file solver_class.h.

Referenced by fineAdvance().

bool LbmFsgrSolver::mUseTestdata [protected]
const int LbmFsgrSolver::princDirX [protected]
Initial value:
 { 
        1,-1, 0,0, 0,0
    }

principal directions

Definition at line 642 of file solver_class.h.

const int LbmFsgrSolver::princDirY [protected]
Initial value:
 { 
        0,0, 1,-1, 0,0
    }

Definition at line 643 of file solver_class.h.

const int LbmFsgrSolver::princDirZ [protected]
Initial value:
 { 
        0,0, 0,0, 1,-1
    }

Definition at line 644 of file solver_class.h.


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