44#pragma clang diagnostic push
45#pragma clang diagnostic ignored "-Wgnu-zero-variadic-macro-arguments"
46#pragma clang diagnostic ignored "-Wunused-but-set-parameter"
48#include <curand_kernel.h>
50#pragma clang diagnostic pop
72 this->numprocs = numberOfProcesses;
73 this->myProcessId =
myId;
83 initDefaultLBMkernelAllLevels();
85 this->cudaStreamManager = std::make_unique<CudaStreamManager>();
110 if (
configData.contains(
"calc2ndOrderMoments"))
113 if (
configData.contains(
"calc3rdOrderMoments"))
116 if (
configData.contains(
"calcHigherOrderMoments"))
123 this->calcCp =
configData.getValue<
bool>(
"calcCp");
126 this->calcDragLift =
configData.getValue<
bool>(
"calcDrafLift");
167 if (
configData.contains(
"Viscosity_Ratio_World_to_LB"))
170 if (
configData.contains(
"Velocity_Ratio_World_to_LB"))
173 if (
configData.contains(
"Density_Ratio_World_to_LB"))
192 if (configData.
contains(
"useStreams")) {
197 if (configData.
contains(
"useReducedCommunicationInInterpolation")) {
199 configData.
getValue<
bool>(
"useReducedCommunicationInInterpolation");
288void Parameter::initGridPaths(){
292 if (gridPath.back() !=
'/') {
294 this->gridPath = gridPath;
300 this->gridPath = gridPath;
305 this->
setgeoVec(gridPath +
"geoVec.dat");
306 this->
setcoordX(gridPath +
"coordX.dat");
307 this->
setcoordY(gridPath +
"coordY.dat");
308 this->
setcoordZ(gridPath +
"coordZ.dat");
325 this->
settopBcQs(gridPath +
"topBoundaryQs.dat");
331 this->
setbackBcQs(gridPath +
"backBoundaryQs.dat");
336 this->
setcpTop(gridPath +
"cpTop.dat");
367void Parameter::initGridBasePoints()
377void Parameter::initDefaultLBMkernelAllLevels(){
379 std::vector<int>
tmp;
387 std::vector<std::string>
tmp;
389 tmp.push_back(
"CumulantK17Comp");
398 for (
int i = coarse;
i <= fine;
i++) {
399 parH[
i] = std::make_shared<LBMSimulationParameter>();
400 parH[
i]->numberofthreads = 64;
405 parH[
i]->diffusivity = this->Diffusivity * std::exp2((
real)
i);
408 parH[
i]->referenceTemperature = this->referenceTemperature;
413 for (
int i = coarse;
i <= fine;
i++) {
414 parD[
i] = std::make_shared<LBMSimulationParameter>();
415 parD[
i]->numberofthreads =
parH[
i]->numberofthreads;
422 parD[
i]->omegaDiffusivity =
parH[
i]->omegaDiffusivity;
423 parD[
i]->referenceTemperature =
parH[
i]->referenceTemperature;
431 for (
int i = 0;
i < (
int)
parH[
lev]->MeasurePointVector.size();
i++) {
434 parH[
lev]->MeasurePointVector[
i].Vx.push_back(
parH[
lev]->velocityInXdirectionAtMeasurePoints[index]);
435 parH[
lev]->MeasurePointVector[
i].Vy.push_back(
parH[
lev]->velocityInYdirectionAtMeasurePoints[index]);
436 parH[
lev]->MeasurePointVector[
i].Vz.push_back(
parH[
lev]->velocityInZdirectionAtMeasurePoints[index]);
437 parH[
lev]->MeasurePointVector[
i].Rho.push_back(
parH[
lev]->densityAtMeasurePoints[index]);
459 this->stepEnsight = step;
467 this->buoyancyEnabled = buoyancyEnabled;
468 if(!this->isBodyForce)
477 this->maxlevel = numberOfLevels - 1;
478 this->fine = this->maxlevel;
479 parH.resize(this->maxlevel + 1);
480 parD.resize(this->maxlevel + 1);
492 this->tStartOut = tStartOut;
496 this->timestep = timestep;
525 if (oPath.back() !=
'/')
533 this->oPrefix = oPrefix;
536void Parameter::setPathAndFilename(std::string fname)
542 this->gridPath = gridPath;
543 this->initGridPaths();
551 this->readGeo = readGeo;
555 this->Diffusivity = Diffusivity;
584 return this->vis_ratio;
588 return this->u0_ratio;
592 return this->delta_rho;
596 return this->delta_press;
649 return this->
getGravity() * std::exp2(-level);
666 this->maxdev = maxdev;
670 this->myProcessId =
myid;
674 this->numprocs = numprocs;
678 this->devices = devices;
686 this->turbulentPrandtlNumber = turbulentPrandtlNumber;
690 this->buoyancyFactor = buoyancyFactor;
693 this->gravity = gravity;
696 this->referenceTemperature = referenceTemperature;
700 this->factorPressBC = factorPressBC;
724 this->turbulenceModel = turbulenceModel;
732 this->advectionDiffusionTurbulenceModel = turbulenceModel;
736 this->SGSConstant = SGSConstant;
741 this->isBodyForce = isBodyForce;
745 this->allNodesAllFeatures = allNodesAllFeatures;
762 this->scaleLBMtoSI = scaleLBMtoSI;
766 this->translateLBMtoSI = translateLBMtoSI;
794 this->geoVec = geoVec;
798 this->coordX = coordX;
802 this->coordY = coordY;
806 this->coordZ = coordZ;
810 this->neighborX = neighborX;
814 this->neighborY = neighborY;
818 this->neighborZ = neighborZ;
822 this->neighborWSB = neighborWSB;
826 this->scaleCFC = scaleCFC;
830 this->scaleCFF = scaleCFF;
834 this->scaleFCC = scaleFCC;
838 this->scaleFCF = scaleFCF;
842 this->scaleOffsetCF = scaleOffsetCF;
846 this->scaleOffsetFC = scaleOffsetFC;
850 this->geomBoundaryBcQs = geomBoundaryBcQs;
854 this->geomBoundaryBcValues = geomBoundaryBcValues;
858 this->noSlipBcPos = noSlipBcPos;
862 this->noSlipBcQs = noSlipBcQs;
866 this->noSlipBcValue = noSlipBcValue;
870 this->noSlipBcValues = noSlipBcValues;
874 this->slipBcPos = slipBcPos;
878 this->slipBcQs = slipBcQs;
882 this->slipBcValue = slipBcValue;
886 this->pressBcPos = pressBcPos;
890 this->pressBcQs = pressBcQs;
894 this->pressBcValue = pressBcValue;
898 this->pressBcValues = pressBcValues;
902 this->velBcQs = velBcQs;
906 this->velBcValues = velBcValues;
910 this->inletBcQs = inletBcQs;
914 this->inletBcValues = inletBcValues;
918 this->outletBcQs = outletBcQs;
922 this->outletBcValues = outletBcValues;
926 this->topBcQs = topBcQs;
930 this->topBcValues = topBcValues;
934 this->bottomBcQs = bottomBcQs;
938 this->bottomBcValues = bottomBcValues;
942 this->frontBcQs = frontBcQs;
946 this->frontBcValues = frontBcValues;
950 this->backBcQs = backBcQs;
954 this->backBcValues = backBcValues;
958 this->wallBcQs = wallBcQs;
962 this->wallBcValues = wallBcValues;
966 this->periodicBcQs = periodicBcQs;
970 this->periodicBcValues = periodicBcValues;
974 this->measurePoints = measurePoints;
978 this->numberNodes = numberNodes;
982 this->LBMvsSI = LBMvsSI;
990 this->cpBottom = cpBottom;
994 this->cpBottom2 = cpBottom2;
1006 this->tDoCheckPoint = tDoCheckPoint;
1010 this->tDoRestart = tDoRestart;
1014 this->doCheckPoint = doCheckPoint;
1018 this->doRestart = doRestart;
1028 }
else if (
str ==
"cp") {
1038 this->is2ndOrderMoments = is2ndOrderMoments;
1042 this->is3rdOrderMoments = is3rdOrderMoments;
1046 this->isHighOrderMoments = isHighOrderMoments;
1050 if (reset ==
true) {
1051 this->memsizeGPU = 0.;
1053 this->memsizeGPU +=
admem;
1059 if (
sor ==
"send") {
1061 }
else if (
sor ==
"recv") {
1067 if (
sor ==
"send") {
1069 }
else if (
sor ==
"recv") {
1075 if (
sor ==
"send") {
1077 }
else if (
sor ==
"recv") {
1083 if (
sor ==
"send") {
1084 parH[level]->sendProcessNeighborsX.resize(numberOfProcessNeighbors);
1085 parD[level]->sendProcessNeighborsX.resize(numberOfProcessNeighbors);
1087 }
else if (
sor ==
"recv") {
1088 parH[level]->recvProcessNeighborsX.resize(numberOfProcessNeighbors);
1089 parD[level]->recvProcessNeighborsX.resize(numberOfProcessNeighbors);
1095 if (
sor ==
"send") {
1096 parH[level]->sendProcessNeighborsY.resize(numberOfProcessNeighbors);
1097 parD[level]->sendProcessNeighborsY.resize(numberOfProcessNeighbors);
1099 }
else if (
sor ==
"recv") {
1100 parH[level]->recvProcessNeighborsY.resize(numberOfProcessNeighbors);
1101 parD[level]->recvProcessNeighborsY.resize(numberOfProcessNeighbors);
1107 if (
sor ==
"send") {
1108 parH[level]->sendProcessNeighborsZ.resize(numberOfProcessNeighbors);
1109 parD[level]->sendProcessNeighborsZ.resize(numberOfProcessNeighbors);
1111 }
else if (
sor ==
"recv") {
1112 parH[level]->recvProcessNeighborsZ.resize(numberOfProcessNeighbors);
1113 parD[level]->recvProcessNeighborsZ.resize(numberOfProcessNeighbors);
1131 this->
getParH(level)->sendProcessNeighborsAfterFtoCX[
arrayIndex].numberOfNodes = numberOfNodes;
1132 this->
getParD(level)->sendProcessNeighborsAfterFtoCX[
arrayIndex].numberOfNodes = numberOfNodes;
1133 this->
getParH(level)->sendProcessNeighborsAfterFtoCX[
arrayIndex].memsizeFs =
sizeof(
real) * numberOfNodes;
1134 this->
getParD(level)->sendProcessNeighborsAfterFtoCX[
arrayIndex].memsizeFs =
sizeof(
real) * numberOfNodes;
1135 this->
getParH(level)->sendProcessNeighborsAfterFtoCX[
arrayIndex].numberOfFs = this->D3Qxx * numberOfNodes;
1136 this->
getParD(level)->sendProcessNeighborsAfterFtoCX[
arrayIndex].numberOfFs = this->D3Qxx * numberOfNodes;
1140 this->
getParH(level)->sendProcessNeighborsAfterFtoCY[
arrayIndex].numberOfNodes = numberOfNodes;
1141 this->
getParD(level)->sendProcessNeighborsAfterFtoCY[
arrayIndex].numberOfNodes = numberOfNodes;
1142 this->
getParH(level)->sendProcessNeighborsAfterFtoCY[
arrayIndex].memsizeFs =
sizeof(
real) * numberOfNodes;
1143 this->
getParD(level)->sendProcessNeighborsAfterFtoCY[
arrayIndex].memsizeFs =
sizeof(
real) * numberOfNodes;
1144 this->
getParH(level)->sendProcessNeighborsAfterFtoCY[
arrayIndex].numberOfFs = this->D3Qxx * numberOfNodes;
1145 this->
getParD(level)->sendProcessNeighborsAfterFtoCY[
arrayIndex].numberOfFs = this->D3Qxx * numberOfNodes;
1149 this->
getParH(level)->sendProcessNeighborsAfterFtoCZ[
arrayIndex].numberOfNodes = numberOfNodes;
1150 this->
getParD(level)->sendProcessNeighborsAfterFtoCZ[
arrayIndex].numberOfNodes = numberOfNodes;
1151 this->
getParH(level)->sendProcessNeighborsAfterFtoCZ[
arrayIndex].memsizeFs =
sizeof(
real) * numberOfNodes;
1152 this->
getParD(level)->sendProcessNeighborsAfterFtoCZ[
arrayIndex].memsizeFs =
sizeof(
real) * numberOfNodes;
1153 this->
getParH(level)->sendProcessNeighborsAfterFtoCZ[
arrayIndex].numberOfFs = this->D3Qxx * numberOfNodes;
1154 this->
getParD(level)->sendProcessNeighborsAfterFtoCZ[
arrayIndex].numberOfFs = this->D3Qxx * numberOfNodes;
1158 this->
getParH(level)->recvProcessNeighborsAfterFtoCX[
arrayIndex].numberOfNodes = numberOfNodes;
1159 this->
getParD(level)->recvProcessNeighborsAfterFtoCX[
arrayIndex].numberOfNodes = numberOfNodes;
1160 this->
getParH(level)->recvProcessNeighborsAfterFtoCX[
arrayIndex].memsizeFs =
sizeof(
real) * numberOfNodes;
1161 this->
getParD(level)->recvProcessNeighborsAfterFtoCX[
arrayIndex].memsizeFs =
sizeof(
real) * numberOfNodes;
1162 this->
getParH(level)->recvProcessNeighborsAfterFtoCX[
arrayIndex].numberOfFs = this->D3Qxx * numberOfNodes;
1163 this->
getParD(level)->recvProcessNeighborsAfterFtoCX[
arrayIndex].numberOfFs = this->D3Qxx * numberOfNodes;
1167 this->
getParH(level)->recvProcessNeighborsAfterFtoCY[
arrayIndex].numberOfNodes = numberOfNodes;
1168 this->
getParD(level)->recvProcessNeighborsAfterFtoCY[
arrayIndex].numberOfNodes = numberOfNodes;
1169 this->
getParH(level)->recvProcessNeighborsAfterFtoCY[
arrayIndex].memsizeFs =
sizeof(
real) * numberOfNodes;
1170 this->
getParD(level)->recvProcessNeighborsAfterFtoCY[
arrayIndex].memsizeFs =
sizeof(
real) * numberOfNodes;
1171 this->
getParH(level)->recvProcessNeighborsAfterFtoCY[
arrayIndex].numberOfFs = this->D3Qxx * numberOfNodes;
1172 this->
getParD(level)->recvProcessNeighborsAfterFtoCY[
arrayIndex].numberOfFs = this->D3Qxx * numberOfNodes;
1176 this->
getParH(level)->recvProcessNeighborsAfterFtoCZ[
arrayIndex].numberOfNodes = numberOfNodes;
1177 this->
getParD(level)->recvProcessNeighborsAfterFtoCZ[
arrayIndex].numberOfNodes = numberOfNodes;
1178 this->
getParH(level)->recvProcessNeighborsAfterFtoCZ[
arrayIndex].memsizeFs =
sizeof(
real) * numberOfNodes;
1179 this->
getParD(level)->recvProcessNeighborsAfterFtoCZ[
arrayIndex].memsizeFs =
sizeof(
real) * numberOfNodes;
1180 this->
getParH(level)->recvProcessNeighborsAfterFtoCZ[
arrayIndex].numberOfFs = this->D3Qxx * numberOfNodes;
1181 this->
getParD(level)->recvProcessNeighborsAfterFtoCZ[
arrayIndex].numberOfFs = this->D3Qxx * numberOfNodes;
1185 this->mainKernel = kernel;
1186 if (kernel == vf::collision_kernel::compressible::K17CompressibleNavierStokes)
1187 this->kernelNeedsFluidNodeIndicesToRun =
true;
1191 this->multiKernelOn = isOn;
1199 this->multiKernel = kernel;
1203 this->adKernel = adKernel;
1211 interactors.push_back(interactor);
1247 return this->stepEnsight;
1260 return *
parD[level];
1265 return *
parH[level];
1287 return parD[level]->isEvenTimestep;
1295 return buoyancyEnabled;
1300 return allNodesAllFeatures;
1304 return factor_gridNZ;
1312 return this->maxlevel;
1340 return this->tStartOut;
1344 return this->calcMean;
1348 return this->calcDragLift;
1352 return this->calcCp;
1356 return this->tCalcMedStart;
1360 return this->tCalcMedEnd;
1368 return this->oPrefix;
1376 return this->gridPath;
1380 return this->printFiles;
1384 return this->readGeo;
1388 return this->calcVelocityAndFluctuations;
1392 return this->Diffusivity;
1412 return this->outflowPressureCorrectionFactor;
1416 return this->maxdev;
1420 return this->myProcessId;
1424 return this->numprocs;
1428 return this->devices;
1436 return this->turbulentPrandtlNumber;
1440 return this->buoyancyFactor;
1444 return this->gravity;
1448 return this->referenceTemperature;
1452 return this->factorPressBC;
1468 return this->scaleLBMtoSI;
1472 return this->translateLBMtoSI;
1476 return this->minCoordX;
1480 return this->minCoordY;
1484 return this->minCoordZ;
1488 return this->maxCoordX;
1492 return this->maxCoordY;
1496 return this->maxCoordZ;
1500 return this->geoVec;
1504 return this->coordX;
1508 return this->coordY;
1512 return this->coordZ;
1516 return this->neighborX;
1520 return this->neighborY;
1524 return this->neighborZ;
1528 return this->neighborWSB;
1532 return this->scaleCFC;
1536 return this->scaleCFF;
1540 return this->scaleFCC;
1544 return this->scaleFCF;
1548 return this->scaleOffsetCF;
1552 return this->scaleOffsetFC;
1556 return this->geomBoundaryBcQs;
1560 return this->geomBoundaryBcValues;
1564 return this->noSlipBcPos;
1568 return this->noSlipBcQs;
1572 return this->noSlipBcValue;
1576 return this->noSlipBcValues;
1580 return this->slipBcPos;
1584 return this->slipBcQs;
1588 return this->slipBcValue;
1592 return this->pressBcPos;
1596 return this->pressBcQs;
1600 return this->pressBcValue;
1604 return this->pressBcValues;
1608 return this->velBcQs;
1612 return this->velBcValues;
1616 return this->inletBcQs;
1620 return this->inletBcValues;
1624 return this->outletBcQs;
1628 return this->outletBcValues;
1632 return this->topBcQs;
1636 return this->topBcValues;
1640 return this->bottomBcQs;
1644 return this->bottomBcValues;
1648 return this->frontBcQs;
1652 return this->frontBcValues;
1656 return this->backBcQs;
1660 return this->backBcValues;
1664 return this->wallBcQs;
1668 return this->wallBcValues;
1672 return this->periodicBcQs;
1676 return this->periodicBcValues;
1680 return this->measurePoints;
1684 return this->LBMvsSI;
1688 return this->numberNodes;
1696 return this->cpBottom;
1700 return this->cpBottom2;
1704 return this->concentration;
1708 return this->clockCycleForMeasurePoints;
1712 return this->tDoCheckPoint;
1716 return this->tDoRestart;
1727 if(level>this->
getMaxLevel())
throw std::runtime_error(
"Parameter::getTimeStep: level>this->getMaxLevel()!");
1740 return this->doCheckPoint;
1744 return this->doRestart;
1756 return this->isMeasurePoints;
1760 return this->turbulenceModel;
1764 return this->advectionDiffusionTurbulenceModel;
1768 return this->turbulentViscosityEnabled;
1772 return this->turbulentDiffusivityEnabled;
1776 return this->SGSConstant;
1788 return this->isInitNeq;
1793 return this->isBodyForce;
1798 return this->GeometryValues;
1802 return this->is2ndOrderMoments;
1806 return this->is3rdOrderMoments;
1810 return this->isHighOrderMoments;
1818 return this->timeStepForMeasurePoints;
1822 return this->timestep;
1826 return this->memsizeGPU;
1831 if (
sor ==
"send") {
1832 return this->possNeighborFilesSendX;
1833 }
else if (
sor ==
"recv") {
1834 return this->possNeighborFilesRecvX;
1836 throw std::runtime_error(
"Parameter string invalid.");
1840 if (
sor ==
"send") {
1841 return this->possNeighborFilesSendY;
1842 }
else if (
sor ==
"recv") {
1843 return this->possNeighborFilesRecvY;
1845 throw std::runtime_error(
"Parameter string invalid.");
1849 if (
sor ==
"send") {
1850 return this->possNeighborFilesSendZ;
1851 }
else if (
sor ==
"recv") {
1852 return this->possNeighborFilesRecvZ;
1854 throw std::runtime_error(
"Parameter string invalid.");
1858 if (
sor ==
"send") {
1859 return (
unsigned int)
parH[level]->sendProcessNeighborsX.size();
1860 }
else if (
sor ==
"recv") {
1861 return (
unsigned int)
parH[level]->recvProcessNeighborsX.size();
1863 throw std::runtime_error(
"getNumberOfProcessNeighborsX: Parameter string invalid.");
1867 if (
sor ==
"send") {
1868 return (
unsigned int)
parH[level]->sendProcessNeighborsY.size();
1869 }
else if (
sor ==
"recv") {
1870 return (
unsigned int)
parH[level]->recvProcessNeighborsY.size();
1872 throw std::runtime_error(
"getNumberOfProcessNeighborsY: Parameter string invalid.");
1876 if (
sor ==
"send") {
1877 return (
unsigned int)
parH[level]->sendProcessNeighborsZ.size();
1878 }
else if (
sor ==
"recv") {
1879 return (
unsigned int)
parH[level]->recvProcessNeighborsZ.size();
1881 throw std::runtime_error(
"getNumberOfProcessNeighborsZ: Parameter string invalid.");
1886 return this->isNeigborX;
1890 return this->isNeigborY;
1894 return this->isNeigborZ;
1903 return multiKernelOn;
1907 return multiKernelLevel;
1922 this->initialCondition = initialCondition;
1927 return this->initialCondition;
1933 this->initialConditionAD = std::move(initialConditionAD);
1938 return this->initialConditionAD;
1947 return initialLocalReferenceTemperature;
1955 this->useStreams = useStreams;
1958 VF_LOG_INFO(
"Can't use streams with only one process!");
1961 this->useStreams =
false;
1966 return this->useStreams;
1971 return this->cudaStreamManager;
1976 return this->kernelNeedsFluidNodeIndicesToRun;
1980 this->kernelNeedsFluidNodeIndicesToRun = kernelNeedsFluidNodeIndicesToRun;
1986 parH[level]->sendProcessNeighborsAfterFtoCX.resize(
parH[level]->sendProcessNeighborsX.size());
1987 parH[level]->recvProcessNeighborsAfterFtoCX.resize(
parH[level]->recvProcessNeighborsX.size());
1988 parD[level]->sendProcessNeighborsAfterFtoCX.resize(
parH[level]->sendProcessNeighborsAfterFtoCX.size());
1989 parD[level]->recvProcessNeighborsAfterFtoCX.resize(
parH[level]->recvProcessNeighborsAfterFtoCX.size());
1994 parH[level]->sendProcessNeighborsAfterFtoCY.resize(
parH[level]->sendProcessNeighborsY.size());
1995 parH[level]->recvProcessNeighborsAfterFtoCY.resize(
parH[level]->recvProcessNeighborsY.size());
1996 parD[level]->sendProcessNeighborsAfterFtoCY.resize(
parH[level]->sendProcessNeighborsAfterFtoCY.size());
1997 parD[level]->recvProcessNeighborsAfterFtoCY.resize(
parH[level]->recvProcessNeighborsAfterFtoCY.size());
2002 parH[level]->sendProcessNeighborsAfterFtoCZ.resize(
parH[level]->sendProcessNeighborsZ.size());
2003 parH[level]->recvProcessNeighborsAfterFtoCZ.resize(
parH[level]->recvProcessNeighborsZ.size());
2004 parD[level]->sendProcessNeighborsAfterFtoCZ.resize(
parH[level]->sendProcessNeighborsAfterFtoCZ.size());
2005 parD[level]->recvProcessNeighborsAfterFtoCZ.resize(
parH[level]->recvProcessNeighborsAfterFtoCZ.size());
#define VF_LOG_WARNING(...)
std::vector< T > getVector(const std::string &key) const
get vector with key
bool contains(const std::string &key) const
check if value associated with given key exists
T getValue(const std::string &key) const
get value with key
Class for LBM-parameter management.
void setIsNeighborZ(bool isNeighbor)
void setUseTurbulentDiffusivity(bool useTurbulentDiffusivity)
void setmeasurePoints(std::string measurePoints)
void setslipBcValue(std::string slipBcValue)
std::string getnoSlipBcValues()
std::string getneighborX()
unsigned int getTimestepStart() const
std::string getpressBcQs()
void setMemsizeGPU(double admem, bool reset)
void setCalcHighOrderMoments(bool isHighOrderMoments)
std::string getbackBcQs()
real getForceRatio() const
void setbottomBcValues(std::string bottomBcValues)
double * getForcesDouble()
real getScaledLengthRatio(int level) const
vf::lbm::advection_diffusion::TurbulenceModel getADTurbulenceModel()
int getTimeCalcMedStart()
std::vector< std::shared_ptr< LBMSimulationParameter > > parH
void setNumberOfProcessNeighborsX(unsigned int numberOfProcessNeighbors, int level, std::string sor)
void addSampler(SPtr< Sampler > sampler)
real getViscosityRatio() const
void setRecvProcessNeighborsAfterFtoCZ(int numberOfNodes, int level, int arrayIndex)
void setscaleOffsetCF(std::string scaleOffsetCF)
std::string getbottomBcValues()
std::vector< std::string > getMultiKernel()
real getclockCycleForMeasurePoints()
std::string getslipBcValue()
int getMyProcessID() const
void setcoordZ(std::string coordZ)
void setPossNeighborFilesX(std::vector< std::string > possNeighborFiles, std::string sor)
void setfrontBcValues(std::string frontBcValues)
std::vector< real > getMaxCoordZ()
void setTimestepOut(unsigned int tout)
void setTurbulenceModel(vf::lbm::TurbulenceModel turbulenceModel)
void setslipBcQs(std::string slipBcQs)
void setDoCheckPoint(bool doCheckPoint)
void initLBMSimulationParameter()
void settimestepForMeasurePoints(unsigned int timestepForMeasurePoints)
void setinletBcValues(std::string inletBcValues)
std::string getinletBcQs()
unsigned int getTimestepStartOut()
void setTimeCalcMedStart(int CalcMedStart)
std::vector< real > getMinCoordZ()
void setneighborZ(std::string neighborZ)
unsigned int getNumberOfProcessNeighborsX(int level, std::string sor)
bool getEvenOrOdd(int level)
real getViscosity() const
void setclockCycleForMeasurePoints(real clockCycleForMeasurePoints)
void setMinCoordX(std::vector< real > MinCoordX)
void setbackBcValues(std::string backBcValues)
std::string getbackBcValues()
void setpressBcQs(std::string pressBcQs)
real getScaledViscosityRatio(int level) const
void setscaleFCC(std::string scaleFCC)
void setslipBcPos(std::string slipBcPos)
std::string getscaleOffsetCF()
void setCalc2ndOrderMoments(bool is2ndOrderMoments)
bool getCalcTurbulenceIntensity()
void setTimestepStartOut(unsigned int tStartOut)
void setinletBcQs(std::string inletBcQs)
void setKernelNeedsFluidNodeIndicesToRun(bool kernelNeedsFluidNodeIndicesToRun)
real getBuoyancyFactor() const
void setGravity(real gravity)
void setUseInitNeq(bool useInitNeq)
std::string getwallBcQs()
void setDensityRatio(real DensityRatio)
void settopBcQs(std::string topBcQs)
void setDiffOn(bool isDiff)
void setcoordY(std::string coordY)
void setRealX(real RealX)
std::vector< real > getTranslateLBMtoSI()
std::string getscaleFCF()
std::shared_ptr< LBMSimulationParameter > getParH(int level) const
Pointer to instance of LBMSimulationParameter - stored on Host System.
vf::lbm::TurbulenceModel getTurbulenceModel()
std::vector< std::shared_ptr< LBMSimulationParameter > > parD
std::vector< real > getScaleLBMtoSI()
unsigned int getNumberOfProcessNeighborsY(int level, std::string sor)
void setcpBottom2(std::string cpBottom2)
std::function< real(real, real, real)> & getInitialLocalReferenceTemperature()
std::string getwallBcValues()
bool useReducedCommunicationAfterFtoC
void initProcessNeighborsAfterFtoCZ(int level)
void setcoordX(std::string coordX)
void setSendProcessNeighborsAfterFtoCY(int numberOfNodes, int level, int arrayIndex)
std::string getoutletBcQs()
std::string getgeomBoundaryBcQs()
std::string getnoSlipBcQs()
void setneighborX(std::string neighborX)
std::string getpressBcPos()
void setBuoyancyFactor(real buoyancyFactor)
std::string getneighborWSB()
std::vector< int > getGridX()
void setgeomBoundaryBcValues(std::string geomBoundaryBcValues)
unsigned int getTimeDoCheckPoint()
std::string getscaleFCC()
bool getCalc2ndOrderMoments()
real getScaledTimeRatio(int level) const
std::string getfrontBcValues()
void setRealY(real RealY)
real getScaledDensityRatio(int level) const
std::string getscaleCFC()
void setReadGeo(bool readGeo)
std::string getMainKernel() const
void setbottomBcQs(std::string bottomBcQs)
void setfrontBcQs(std::string frontBcQs)
real getVelocityRatio() const
void setMaxLevel(int numberOfLevels)
void copyMeasurePointsArrayToVector(int lev)
void setForcing(real forcingX, real forcingY, real forcingZ)
std::function< real(real, real, real)> & getInitialConditionAD()
void setDoRestart(bool doRestart)
void setbackBcQs(std::string backBcQs)
void setConcentration(std::string concFile)
bool getCalc3rdOrderMoments()
void setAllNodesAllFeatures(bool allNodesAllFeatures)
void setperiodicBcValues(std::string periodicBcValues)
std::vector< std::string > getPossNeighborFilesZ(std::string sor)
void setvelBcQs(std::string velBcQs)
void setperiodicBcQs(std::string periodicBcQs)
void setwallBcQs(std::string wallBcQs)
std::unique_ptr< CudaStreamManager > & getStreamManager()
std::string getGridPath()
unsigned int getTimestepForMeasurePoints()
void setMaxCoordY(std::vector< real > MaxCoordY)
void setInitialLocalReferenceTemperature(std::function< real(real, real, real)> initialReferenceTemperature)
std::vector< uint > getDevices() const
bool getKernelNeedsFluidNodeIndicesToRun()
void setVelocityRatio(real VelocityRatio)
void setTurbulentPrandtlNumber(real turbulentPrandtlNumber)
void setnoSlipBcValues(std::string noSlipBcValues)
void setRecvProcessNeighborsAfterFtoCX(int numberOfNodes, int level, int arrayIndex)
std::string getmeasurePoints()
void setCalcTurbulenceIntensity(bool calcVelocityAndFluctuations)
bool overWritingRestart(unsigned int t)
void setADKernel(std::string adKernel)
std::string getbottomBcQs()
bool getDoRestart() const
bool getUseTurbulentViscosity()
unsigned int getTimestepInit()
void initProcessNeighborsAfterFtoCY(int level)
std::string getfrontBcQs()
std::vector< SPtr< Sampler > > getSamplers()
void setoutletBcQs(std::string outletBcQs)
unsigned int getTimestepOfCoarseLevel()
std::shared_ptr< LBMSimulationParameter > getParD(int level)
Pointer to instance of LBMSimulationParameter - stored on Device (GPU)
real * getQuadricLimitersDev()
void setUseStreams(bool useStreams)
sets whether streams and thus communication hiding should be used
real getOutflowPressureCorrectionFactor()
void initProcessNeighborsAfterFtoCX(int level)
real * getQuadricLimitersHost() const
void setCalcCp(bool calcCp)
void setScaleLBMtoSI(std::vector< real > scaleLBMtoSI)
bool getCalcHighOrderMoments()
void setCalcDragLift(bool calcDragLift)
real getReferenceTemperature() const
real getScaledBuoyancyFactor(int level) const
std::string getOutputPrefix() const
void setscaleFCF(std::string scaleFCF)
void setOutputPath(std::string oPath)
void setoutletBcValues(std::string outletBcValues)
std::string getpressBcValue()
std::string getslipBcPos()
bool getIsGeometryValues()
void setFactorPressBC(real factorPressBC)
void setcpTop(std::string cpTop)
void setMaxDev(int maxdev)
void setPossNeighborFilesY(std::vector< std::string > possNeighborFiles, std::string sor)
void setUseGeometryValues(bool GeometryValues)
void setTimestepOfCoarseLevel(unsigned int timestep)
void setwallBcValues(std::string wallBcValues)
real getDensityRatio() const
void setNumberOfProcessNeighborsY(unsigned int numberOfProcessNeighbors, int level, std::string sor)
std::vector< int > getGridY()
void setCalcMean(bool calcMean)
void setMinCoordY(std::vector< real > MinCoordY)
std::string getscaleCFF()
std::vector< real > getMaxCoordX()
real getScaledVelocityRatio(int level) const
std::string getvelBcValues()
std::string getgeomBoundaryBcValues()
std::string getneighborY()
void setUseTurbulentViscosity(bool useTurbulentViscosity)
void setTimeCalcMedEnd(int CalcMedEnd)
void setvelBcValues(std::string velBcValues)
void setSendProcessNeighborsAfterFtoCZ(int numberOfNodes, int level, int arrayIndex)
unsigned int getNumberOfProcessNeighborsZ(int level, std::string sor)
std::function< void(real, real, real, real &, real &, real &, real &)> & getInitialCondition()
void setOutflowPressureCorrectionFactor(real correctionFactor)
void setnoSlipBcValue(std::string noSlipBcValue)
void setscaleCFC(std::string scaleCFC)
void settopBcValues(std::string topBcValues)
unsigned int getTimestepOut()
std::string getperiodicBcQs()
void setNumberOfProcessNeighborsZ(unsigned int numberOfProcessNeighbors, int level, std::string sor)
void configureMainKernel(std::string kernel)
real getScaledStressRatio(int level) const
void setIsGeo(bool isGeo)
std::vector< real > getMinCoordX()
void setAdvectionDiffusionTurbulenceModel(vf::lbm::advection_diffusion::TurbulenceModel turbulenceModel)
void setgeomBoundaryBcQs(std::string geomBoundaryBcQs)
void setpressBcValue(std::string pressBcValue)
real getLengthRatio() const
std::vector< int > getMultiKernelLevel()
void setneighborY(std::string neighborY)
std::string getcpBottom()
void setRecvProcessNeighborsAfterFtoCY(int numberOfNodes, int level, int arrayIndex)
void setLBMvsSI(std::string LBMvsSI)
real getScaledGravity(int level) const
void setIsNeighborY(bool isNeighbor)
void setgeoVec(std::string geoVec)
void setscaleOffsetFC(std::string scaleOffsetFC)
std::string getFName() const
void setCalc3rdOrderMoments(bool is3rdOrderMoments)
std::string getscaleOffsetFC()
void setStepEnsight(unsigned int step)
void addInteractor(SPtr< PreCollisionInteractor > interactor)
void setMultiKernelLevel(std::vector< int > kernelLevel)
void setMultiKernel(std::vector< std::string > kernel)
void setGridPath(std::string gridPath)
void setpressBcPos(std::string pressBcPos)
void setPossNeighborFilesZ(std::vector< std::string > possNeighborFiles, std::string sor)
void setscaleCFF(std::string scaleCFF)
std::string getOutputPath()
real getScaledForceRatio(int level) const
real getScaledPressureRatio(int level) const
bool getBuoyancyEnabled() const
std::string getnoSlipBcValue()
double * getQuadricLimitersDouble()
std::string getslipBcQs()
unsigned int getTimeDoRestart() const
std::string getcpBottom2()
unsigned int getStepEnsight()
void setInitialCondition(std::function< void(real, real, real, real &, real &, real &, real &)> initialCondition)
const std::vector< std::shared_ptr< LBMSimulationParameter > > & getParHallLevels()
void setnumberNodes(std::string numberNodes)
std::string getinletBcValues()
std::string getneighborZ()
unsigned int getTimeStep(int level, unsigned int t, bool isPostCollision)
Get current (sub)time step of a given level.
std::vector< real > getMaxCoordY()
void setObj(std::string str, bool isObj)
void setMinCoordZ(std::vector< real > MinCoordZ)
void setMultiKernelOn(bool isOn)
void setReferenceTemperature(real referenceTemperature)
void setSGSConstant(real SGSConstant)
const std::vector< std::shared_ptr< LBMSimulationParameter > > & getParDallLevels()
unsigned int getTimestepEnd() const
void setTimeDoRestart(unsigned int tDoRestart)
void setViscosityLB(real Viscosity)
void setOutputPrefix(std::string oPrefix)
std::string getnoSlipBcPos()
std::string getperiodicBcValues()
std::vector< SPtr< PreCollisionInteractor > > getInteractors()
void setBuoyancyEnabled(bool buoyancyEnabled)
std::vector< std::string > getPossNeighborFilesY(std::string sor)
void setnoSlipBcPos(std::string noSlipBcPos)
void setUseMeasurePoints(bool useMeasurePoints)
bool getUseMeasurePoints()
LBMSimulationParameter & getParHostAsReference(int level) const
void setMaxCoordX(std::vector< real > MaxCoordX)
void setPrintFiles(bool printfiles)
real getPressureRatio() const
void setSendProcessNeighborsAfterFtoCX(int numberOfNodes, int level, int arrayIndex)
real getTurbulentPrandtlNumber() const
void setpressBcValues(std::string pressBcValues)
void setTranslateLBMtoSI(std::vector< real > translateLBMtoSI)
std::vector< int > getGridZ()
void setGridZ(std::vector< int > GridZ)
std::vector< real > getMinCoordY()
std::string getADKernel()
void setMaxCoordZ(std::vector< real > MaxCoordZ)
void setneighborWSB(std::string neighborWSB)
void setTimestepEnd(unsigned int tend)
void setQuadricLimiters(real quadricLimiterP, real quadricLimiterM, real quadricLimiterD)
void setInitialConditionAD(std::function< real(real, real, real)> initialConditionAD)
bool getUseTurbulentDiffusivity()
void setTimeDoCheckPoint(unsigned int tDoCheckPoint)
LBMSimulationParameter & getParDeviceAsReference(int level) const
std::string getnumberNodes()
void setDiffusivity(real Diffusivity)
void setnoSlipBcQs(std::string noSlipBcQs)
bool getAllNodesAllFeatures() const
void setDevices(std::vector< uint > devices)
void setViscosityRatio(real ViscosityRatio)
std::vector< std::string > getPossNeighborFilesX(std::string sor)
std::string getpressBcValues()
void setVelocityLB(real Velocity)
void setGridY(std::vector< int > GridY)
void setPressRatio(real PressRatio)
double hostQuadricLimiters[3]
void setIsNeighborX(bool isNeighbor)
void setIsBodyForce(bool isBodyForce)
std::string getoutletBcValues()
void setcpBottom(std::string cpBottom)
void setGridX(std::vector< int > GridX)
std::string getConcentration()
void setNumprocs(int numprocs)
real getTimeRatio() const
std::string gettopBcValues()
static std::string toString(const T &t)
std::shared_ptr< T > SPtr
void calcDragLift(Parameter *para, CudaMemoryManager *cudaMemoryManager, int lev)
Calculate drag and lift for a geometry.
void calcVelocityAndFluctuations(Parameter *para, CudaMemoryManager *cudaMemoryManager, uint tdiff)
void calcCp(Parameter *para, CudaMemoryManager *cudaMemoryManager, int lev)
void calcMean(Parameter *para, uint tdiff)
TurbulenceModel
An enumeration for selecting a template of the advection-diffusion turbulence model.
TurbulenceModel
An enumeration for selecting a turbulence model.
constexpr real computeRelaxationFrequency(real viscosity)
struct holds and manages the LB-parameter of the simulation