61 para->getParH(level)->numberOfNodes = (
unsigned long long)numberOfNodes;
62 para->getParD(level)->numberOfNodes = (
unsigned long long)numberOfNodes;
63 para->getParH(level)->memSizeRealLBnodes =
sizeof(
real) *
para->getParH(level)->numberOfNodes;
64 para->getParD(level)->memSizeRealLBnodes =
sizeof(
real) *
para->getParD(level)->numberOfNodes;
65 para->getParH(level)->memSizeLonglongLBnodes =
sizeof(
unsigned long long) *
para->getParH(level)->numberOfNodes;
66 para->getParD(level)->memSizeLonglongLBnodes =
sizeof(
unsigned long long) *
para->getParD(level)->numberOfNodes;
71 para->getParH(level)->numberOfTaggedFluidNodes[tag] = numberOfNodes;
72 para->getParD(level)->numberOfTaggedFluidNodes[tag] = numberOfNodes;
79 const real coordX =
para->getParH(level)->coordinateX[
pos];
80 const real coordY =
para->getParH(level)->coordinateY[
pos];
81 const real coordZ =
para->getParH(level)->coordinateZ[
pos];
86 if(
para->getInitialCondition() )
88 para->getInitialCondition()(coordX,coordY,coordZ,rho,vx,vy,vz);
98 para->getParH(level)->rho[
pos] = rho;
99 para->getParH(level)->velocityX[
pos] = vx;
100 para->getParH(level)->velocityY[
pos] = vy;
101 para->getParH(level)->velocityZ[
pos] = vz;
105 if (
para->getCalcMean()) {
106 para->getParH(level)->meanVelocityInXdirection[
pos] = 0.0f;
107 para->getParH(level)->meanVelocityInYdirection[
pos] = 0.0f;
108 para->getParH(level)->meanVelocityInZdirection[
pos] = 0.0f;
109 para->getParH(level)->meanDensity[
pos] = 0.0f;
110 para->getParH(level)->meanPressure[
pos] = 0.0f;
113 if (
para->getIsBodyForce()) {
114 para->getParH(level)->forceX_SP[
pos] = 0.0f;
115 para->getParH(level)->forceY_SP[
pos] = 0.0f;
116 para->getParH(level)->forceZ_SP[
pos] = 0.0f;
124 auto parH =
para->getParH(level);
125 for (
uint index = 1; index <= numberOfNodes; index++) {
126 const real coordX = parH->coordinateX[index];
127 const real coordY = parH->coordinateY[index];
128 const real coordZ = parH->coordinateZ[index];
129 parH->concentration[index] =
para->getInitialConditionAD() ?
para->getInitialConditionAD()(coordX, coordY, coordZ) : c0o1;
130 if (
para->getUseTurbulentDiffusivity())
131 parH->turbulentDiffusivity[index] = c0o1;
132 if(
para->getBuoyancyEnabled())
133 parH->localReferenceTemperature[index] =
para->getInitialLocalReferenceTemperature() ?
para->getInitialLocalReferenceTemperature()(coordX, coordY, coordZ) : c0o1;
162 for (
int level =
para->getCoarse(); level <=
para->getFine(); level++)
177 for (
int level =
para->getCoarse(); level <=
para->getFine(); level++)
mapping the grid of grid generator to data structure for simulation
std::shared_ptr< Parameter > para
void setOutflowSizePerLevel(int level, int sizePerLevel) const
virtual void allocAndCopyForcing()
void setInitialNodeValuesAD(uint numberOfNodes, int level) const
void setNumberOfTaggedFluidNodes(uint numberOfNodes, CollisionTemplate tag, int level) const
void setVelocitySizePerLevel(int level, int sizePerLevel) const
static std::shared_ptr< GridProvider > makeGridGenerator(std::shared_ptr< GridBuilder > builder, std::shared_ptr< Parameter > para, std::shared_ptr< CudaMemoryManager > cudaMemoryManager, vf::parallel::Communicator &communicator)
void setPressSizePerLevel(int level, int sizePerLevel) const
virtual void setInitialNodeValues(uint numberOfNodes, int level) const
static std::shared_ptr< GridProvider > makeGridReader(FILEFORMAT format, std::shared_ptr< Parameter > para, std::shared_ptr< CudaMemoryManager > cudaMemoryManager)
std::shared_ptr< CudaMemoryManager > cudaMemoryManager
virtual void cudaCopyDataToHost(int level)
void setNumberOfNodes(uint numberOfNodes, int level) const
virtual void freeMemoryOnHost()
virtual void allocAndCopyQuadricLimiters()
An abstract class for communication between processes in parallel computation.
std::shared_ptr< T > SPtr
CollisionTemplate
An enumeration for selecting a template of the collision kernel (CumulantK17)