VirtualFluids 0.2.0
Parallel CFD LBM Solver
Loading...
Searching...
No Matches
Parameter.h
Go to the documentation of this file.
1//=======================================================================================
2// ____ ____ __ ______ __________ __ __ __ __
3// \ \ | | | | | _ \ |___ ___| | | | | / \ | |
4// \ \ | | | | | |_) | | | | | | | / \ | |
5// \ \ | | | | | _ / | | | | | | / /\ \ | |
6// \ \ | | | | | | \ \ | | | \__/ | / ____ \ | |____
7// \ \ | | |__| |__| \__\ |__| \________/ /__/ \__\ |_______|
8// \ \ | | ________________________________________________________________
9// \ \ | | | ______________________________________________________________|
10// \ \| | | | __ __ __ __ ______ _______
11// \ | | |_____ | | | | | | | | | _ \ / _____)
12// \ | | _____| | | | | | | | | | | \ \ \_______
13// \ | | | | |_____ | \_/ | | | | |_/ / _____ |
14// \ _____| |__| |________| \_______/ |__| |______/ (_______/
15//
16// This file is part of VirtualFluids. VirtualFluids is free software: you can
17// redistribute it and/or modify it under the terms of the GNU General Public
18// License as published by the Free Software Foundation, either version 3 of
19// the License, or (at your option) any later version.
20//
21// VirtualFluids is distributed in the hope that it will be useful, but WITHOUT
22// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
23// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
24// for more details.
25//
26// SPDX-License-Identifier: GPL-3.0-or-later
27// SPDX-FileCopyrightText: Copyright © VirtualFluids Project contributors, see AUTHORS.md in root folder
28//
33//=======================================================================================
34#ifndef GPU_PARAMETER_H
35#define GPU_PARAMETER_H
36
37#include <functional>
38#include <memory>
39#include <string>
40#include <vector>
41#include <optional>
42
44#include "lbm/constants/D3Q27.h"
47#include "Samplers/Sampler.h"
50
52
53
54
57
58namespace vf::basics
59{
60class ConfigurationFile;
61}
62
63
64namespace vf::gpu {
65
66class CudaStreamManager;
67
68class TransientBCInputFileReader;
69
70
117 unsigned long long numberOfNodes;
149 std::vector<QforDirectionalBoundaryCondition> pressureBCDirectional;
152 std::vector<QforDirectionalADBoundaryCondition> concentrationBCDirectional;
165
166
177 std::vector<SPtr<TransientBCInputFileReader>> transientBCInputFileReader;
184
185
187 // Advection Diffusion
204
205
207 // Grid Refinement
225
226
228 // Inter-GPU-Communication
231 // 3D domain decomposition
232 std::vector<ProcessNeighbor27> sendProcessNeighborsX;
233 std::vector<ProcessNeighbor27> sendProcessNeighborsY;
234 std::vector<ProcessNeighbor27> sendProcessNeighborsZ;
235 std::vector<ProcessNeighbor27> recvProcessNeighborsX;
236 std::vector<ProcessNeighbor27> recvProcessNeighborsY;
237 std::vector<ProcessNeighbor27> recvProcessNeighborsZ;
238
239 std::vector<ProcessNeighbor27> sendProcessNeighborsAfterFtoCX;
240 std::vector<ProcessNeighbor27> sendProcessNeighborsAfterFtoCY;
241 std::vector<ProcessNeighbor27> sendProcessNeighborsAfterFtoCZ;
242 std::vector<ProcessNeighbor27> recvProcessNeighborsAfterFtoCX;
243 std::vector<ProcessNeighbor27> recvProcessNeighborsAfterFtoCY;
244 std::vector<ProcessNeighbor27> recvProcessNeighborsAfterFtoCZ;
246 // 3D domain decomposition: position (index in array) of corner nodes in ProcessNeighbor27
259 std::vector<EdgeNodePositions> edgeNodesXtoY;
260 std::vector<EdgeNodePositions> edgeNodesXtoZ;
261 std::vector<EdgeNodePositions> edgeNodesYtoZ;
262
274
275 std::vector<CollisionTemplate> allocatedBulkFluidNodeTags = {};
276
278 // Drag and Lift
285 std::vector<double> DragLiftVectorInXdirection;
286 std::vector<double> DragLiftVectorInYdirection;
287 std::vector<double> DragLiftVectorInZdirection;
289
290
292 // Cp
295 // Cp Top
297 double* cpPressTop;
299 std::vector<std::vector<double>> cpTop;
300 std::vector<double> pressMirror;
301 std::vector<bool> isOutsideInterface;
304 // Cp Bottom 1
308 std::vector<std::vector<double>> cpBottom;
310 // Cp Bottom 2
314 std::vector<std::vector<double>> cpBottom2;
316
317
319 // Measure Points
322 std::vector<MeasurePoints> MeasurePointVector;
330
331
333 // Turbulent Viscosity/Intensity
339 real *vxx, *vyy, *vzz, *vxy, *vxz, *vyz; // fluctuations
340 std::vector<real> turbulenceIntensity;
342
343
345 // Mean Macroscopic Values
353
354};
355
356
359{
360public:
361 Parameter();
363 explicit Parameter(const int numberOfProcesses, const int myId);
364 explicit Parameter(const int numberOfProcesses, const int myId, std::optional<const vf::basics::ConfigurationFile*> configData);
366
368
370 std::shared_ptr<LBMSimulationParameter> getParH(int level) const;
372 std::shared_ptr<LBMSimulationParameter> getParD(int level);
373
376
377 const std::vector<std::shared_ptr<LBMSimulationParameter>>& getParHallLevels();
378 const std::vector<std::shared_ptr<LBMSimulationParameter>>& getParDallLevels();
379
381
383 // setter
386 void setStepEnsight(unsigned int step);
387 void setDiffOn(bool isDiff);
388 void setBuoyancyEnabled(bool buoyancyEnabled);
389 void setDiffusivity(real Diffusivity);
390 void setD3Qxx(int d3qxx);
391 void setMaxLevel(int numberOfLevels);
392 void setTimestepEnd(unsigned int tend);
393 void setTimestepOut(unsigned int tout);
394 void setTimestepStartOut(unsigned int tStartOut);
395 void setTimestepOfCoarseLevel(unsigned int timestep);
396 void setCalcTurbulenceIntensity(bool calcVelocityAndFluctuations);
397 void setCalcMean(bool calcMean);
398 void setCalcDragLift(bool calcDragLift);
399 void setCalcCp(bool calcCp);
402 void setMaxDev(int maxdev);
403 void setMyID(int myid);
404 void setNumprocs(int numprocs);
406 void setOutputPath(std::string oPath);
407 void setOutputPrefix(std::string oPrefix);
408 void setGridPath(std::string gridPath);
409 void setgeoVec(std::string geoVec);
410 void setcoordX(std::string coordX);
411 void setcoordY(std::string coordY);
412 void setcoordZ(std::string coordZ);
413 void setneighborX(std::string neighborX);
414 void setneighborY(std::string neighborY);
415 void setneighborZ(std::string neighborZ);
416 void setneighborWSB(std::string neighborWSB);
417 void setscaleCFC(std::string scaleCFC);
418 void setscaleCFF(std::string scaleCFF);
419 void setscaleFCC(std::string scaleFCC);
420 void setscaleFCF(std::string scaleFCF);
421 void setscaleOffsetCF(std::string scaleOffsetCF);
422 void setscaleOffsetFC(std::string scaleOffsetFC);
423 void setgeomBoundaryBcQs(std::string geomBoundaryBcQs);
424 void setgeomBoundaryBcValues(std::string geomBoundaryBcValues);
425 void setnoSlipBcPos(std::string noSlipBcPos);
426 void setnoSlipBcQs(std::string noSlipBcQs);
427 void setnoSlipBcValue(std::string noSlipBcValue);
428 void setnoSlipBcValues(std::string noSlipBcValues);
429 void setslipBcPos(std::string slipBcPos);
430 void setslipBcQs(std::string slipBcQs);
431 void setslipBcValue(std::string slipBcValue);
432 void setpressBcPos(std::string pressBcPos);
433 void setpressBcQs(std::string pressBcQs);
434 void setpressBcValue(std::string pressBcValue);
436 void setpressBcValues(std::string pressBcValues);
437 void setvelBcQs(std::string velBcQs);
438 void setvelBcValues(std::string velBcValues);
439 void setinletBcQs(std::string inletBcQs);
440 void setinletBcValues(std::string inletBcValues);
441 void setoutletBcQs(std::string outletBcQs);
442 void setoutletBcValues(std::string outletBcValues);
443 void settopBcQs(std::string topBcQs);
444 void settopBcValues(std::string topBcValues);
445 void setbottomBcQs(std::string bottomBcQs);
446 void setbottomBcValues(std::string bottomBcValues);
447 void setfrontBcQs(std::string frontBcQs);
448 void setfrontBcValues(std::string frontBcValues);
449 void setbackBcQs(std::string backBcQs);
450 void setbackBcValues(std::string backBcValues);
451 void setwallBcQs(std::string wallBcQs);
452 void setwallBcValues(std::string wallBcValues);
453 void setperiodicBcQs(std::string periodicBcQs);
454 void setperiodicBcValues(std::string periodicBcValues);
455 void setmeasurePoints(std::string measurePoints);
456 void setnumberNodes(std::string numberNodes);
457 void setLBMvsSI(std::string LBMvsSI);
458 void setcpTop(std::string cpTop);
459 void setcpBottom(std::string cpBottom);
460 void setcpBottom2(std::string cpBottom2);
461 void setConcentration(std::string concFile);
462 void setPrintFiles(bool printfiles);
463 void setReadGeo(bool readGeo);
465 void setVelocityLB(real Velocity);
470 void setRealX(real RealX);
471 void setRealY(real RealY);
472 void setRe(real Re);
473 void setTurbulentPrandtlNumber(real turbulentPrandtlNumber);
474 void setBuoyancyFactor(real buoyancyFactor);
475 void setGravity(real gravity);
476 void setReferenceTemperature(real referenceTemperature);
477 void setFactorPressBC(real factorPressBC);
478 void setIsGeo(bool isGeo);
479 void setIsCp(bool isCp);
481 void setTurbulenceModel(vf::lbm::TurbulenceModel turbulenceModel);
485 void setSGSConstant(real SGSConstant);
486 void setUseInitNeq(bool useInitNeq);
487 void setIsBodyForce(bool isBodyForce);
488 void setAllNodesAllFeatures(bool allNodesAllFeatures);
489 void setclockCycleForMeasurePoints(real clockCycleForMeasurePoints);
490 void setDevices(std::vector<uint> devices);
491 void setGridX(std::vector<int> GridX);
492 void setGridY(std::vector<int> GridY);
493 void setGridZ(std::vector<int> GridZ);
494 void setScaleLBMtoSI(std::vector<real> scaleLBMtoSI);
495 void setTranslateLBMtoSI(std::vector<real> translateLBMtoSI);
496 void setMinCoordX(std::vector<real> MinCoordX);
497 void setMinCoordY(std::vector<real> MinCoordY);
498 void setMinCoordZ(std::vector<real> MinCoordZ);
499 void setMaxCoordX(std::vector<real> MaxCoordX);
500 void setMaxCoordY(std::vector<real> MaxCoordY);
501 void setMaxCoordZ(std::vector<real> MaxCoordZ);
502 void setTimeDoCheckPoint(unsigned int tDoCheckPoint);
503 void setTimeDoRestart(unsigned int tDoRestart);
504 void setDoCheckPoint(bool doCheckPoint);
505 void setDoRestart(bool doRestart);
506 void setObj(std::string str, bool isObj);
507 void setUseGeometryValues(bool GeometryValues);
508 void setCalc2ndOrderMoments(bool is2ndOrderMoments);
509 void setCalc3rdOrderMoments(bool is3rdOrderMoments);
510 void setCalcHighOrderMoments(bool isHighOrderMoments);
511 void setMemsizeGPU(double admem, bool reset);
512 // 3D domain decomposition
513 void setPossNeighborFilesX(std::vector<std::string> possNeighborFiles, std::string sor);
514 void setPossNeighborFilesY(std::vector<std::string> possNeighborFiles, std::string sor);
515 void setPossNeighborFilesZ(std::vector<std::string> possNeighborFiles, std::string sor);
516 void setNumberOfProcessNeighborsX(unsigned int numberOfProcessNeighbors, int level, std::string sor);
517 void setNumberOfProcessNeighborsY(unsigned int numberOfProcessNeighbors, int level, std::string sor);
518 void setNumberOfProcessNeighborsZ(unsigned int numberOfProcessNeighbors, int level, std::string sor);
519 void setIsNeighborX(bool isNeighbor);
520 void setIsNeighborY(bool isNeighbor);
521 void setIsNeighborZ(bool isNeighbor);
522 void setSendProcessNeighborsAfterFtoCX(int numberOfNodes, int level, int arrayIndex);
523 void setSendProcessNeighborsAfterFtoCY(int numberOfNodes, int level, int arrayIndex);
524 void setSendProcessNeighborsAfterFtoCZ(int numberOfNodes, int level, int arrayIndex);
525 void setRecvProcessNeighborsAfterFtoCX(int numberOfNodes, int level, int arrayIndex);
526 void setRecvProcessNeighborsAfterFtoCY(int numberOfNodes, int level, int arrayIndex);
527 void setRecvProcessNeighborsAfterFtoCZ(int numberOfNodes, int level, int arrayIndex);
528 // Kernel
529 void configureMainKernel(std::string kernel);
530 void setMultiKernelOn(bool isOn);
531 void setMultiKernelLevel(std::vector<int> kernelLevel);
532 void setMultiKernel(std::vector<std::string> kernel);
533
534 void setADKernel(std::string adKernel);
535
536 // adder
539
540 // getter
541 double *getForcesDouble();
544 double *getQuadricLimitersDouble();
547 unsigned int getStepEnsight();
548 bool getEvenOrOdd(int level);
549 bool getDiffOn();
550 bool getBuoyancyEnabled() const;
551 bool getAllNodesAllFeatures() const;
552 bool getPrintFiles();
553 bool getReadGeo();
555 bool getCalcMean();
556 bool getCalcDragLift();
557 bool getCalcCp();
559 int getFine() const;
561 int getCoarse() const;
562 int getFactorNZ();
563 int getD3Qxx();
565 int getMaxLevel() const;
567 int getTimeCalcMedEnd();
568 int getMaxDev();
570 int getMyProcessID() const;
571 int getNumprocs() const;
572 std::string getOutputPath();
573 std::string getOutputPrefix() const;
574 std::string getFName() const;
575 std::string getGridPath();
576 std::string getgeoVec();
577 std::string getcoordX();
578 std::string getcoordY();
579 std::string getcoordZ();
580 std::string getneighborX();
581 std::string getneighborY();
582 std::string getneighborZ();
583 std::string getneighborWSB();
584 std::string getscaleCFC();
585 std::string getscaleCFF();
586 std::string getscaleFCC();
587 std::string getscaleFCF();
588 std::string getscaleOffsetCF();
589 std::string getscaleOffsetFC();
590 std::string getgeomBoundaryBcQs();
591 std::string getgeomBoundaryBcValues();
592 std::string getnoSlipBcPos();
593 std::string getnoSlipBcQs();
594 std::string getnoSlipBcValue();
595 std::string getnoSlipBcValues();
596 std::string getslipBcPos();
597 std::string getslipBcQs();
598 std::string getslipBcValue();
599 std::string getpressBcPos();
600 std::string getpressBcQs();
601 std::string getpressBcValue();
602 std::string getpressBcValues();
603 std::string getvelBcQs();
604 std::string getvelBcValues();
605 std::string getinletBcQs();
606 std::string getinletBcValues();
607 std::string getoutletBcQs();
608 std::string getoutletBcValues();
609 std::string gettopBcQs();
610 std::string gettopBcValues();
611 std::string getbottomBcQs();
612 std::string getbottomBcValues();
613 std::string getfrontBcQs();
614 std::string getfrontBcValues();
615 std::string getbackBcQs();
616 std::string getbackBcValues();
617 std::string getwallBcQs();
618 std::string getwallBcValues();
619 std::string getperiodicBcQs();
620 std::string getperiodicBcValues();
621 std::string getmeasurePoints();
622 std::string getnumberNodes();
623 std::string getLBMvsSI();
624 std::string getcpTop();
625 std::string getcpBottom();
626 std::string getcpBottom2();
627 std::string getConcentration();
628 unsigned int getTimestepStart() const;
629 unsigned int getTimestepInit();
630 unsigned int getTimestepEnd() const;
631 unsigned int getTimestepOut();
632 unsigned int getTimestepStartOut();
633 unsigned int getTimestepForMeasurePoints();
634 unsigned int getTimestepOfCoarseLevel();
636 real getViscosity() const;
637 real getVelocity() const;
639 real getViscosityRatio() const;
641 real getVelocityRatio() const;
643 real getDensityRatio() const;
645 real getPressureRatio() const;
647 real getTimeRatio() const;
649 real getLengthRatio() const;
651 real getForceRatio() const;
653 real getScaledViscosityRatio(int level) const;
655 real getScaledVelocityRatio(int level) const;
657 real getScaledDensityRatio(int level) const;
659 real getScaledPressureRatio(int level) const;
661 real getScaledStressRatio(int level) const;
663 real getScaledTimeRatio(int level) const;
665 real getScaledLengthRatio(int level) const;
667 real getScaledForceRatio(int level) const;
668 real getRealX();
669 real getRealY();
670 real getRe() const;
672 real getBuoyancyFactor() const;
673 real getScaledBuoyancyFactor(int level) const;
674 real getGravity() const;
675 real getScaledGravity(int level) const;
679 std::vector<uint> getDevices() const;
680 std::vector<int> getGridX();
681 std::vector<int> getGridY();
682 std::vector<int> getGridZ();
683 std::vector<real> getScaleLBMtoSI();
684 std::vector<real> getTranslateLBMtoSI();
685 std::vector<real> getMinCoordX();
686 std::vector<real> getMinCoordY();
687 std::vector<real> getMinCoordZ();
688 std::vector<real> getMaxCoordX();
689 std::vector<real> getMaxCoordY();
690 std::vector<real> getMaxCoordZ();
691 std::vector<SPtr<PreCollisionInteractor>> getInteractors();
692 std::vector<SPtr<Sampler>> getSamplers();
693 unsigned int getTimeDoCheckPoint();
694 unsigned int getTimeDoRestart() const;
695 unsigned int getTimeStep(int level, unsigned int t, bool isPostCollision);
696 bool getDoCheckPoint();
697 bool getDoRestart() const;
698 bool overWritingRestart(unsigned int t);
699 bool getIsGeo();
700 bool getIsCp();
701 bool getIsGeometryValues();
705 bool getUseMeasurePoints();
711 bool getUseInitNeq();
712 bool getIsBodyForce();
713 double getMemsizeGPU();
714 // 3D domain decomposition
715 std::vector<std::string> getPossNeighborFilesX(std::string sor);
716 std::vector<std::string> getPossNeighborFilesY(std::string sor);
717 std::vector<std::string> getPossNeighborFilesZ(std::string sor);
718 unsigned int getNumberOfProcessNeighborsX(int level, std::string sor);
719 unsigned int getNumberOfProcessNeighborsY(int level, std::string sor);
720 unsigned int getNumberOfProcessNeighborsZ(int level, std::string sor);
721 bool getIsNeighborX();
722 bool getIsNeighborY();
723 bool getIsNeighborZ();
725 // Kernel
726 std::string getMainKernel() const;
727 bool getMultiKernelOn();
728 std::vector<int> getMultiKernelLevel();
729 std::vector<std::string> getMultiKernel();
730
731 std::string getADKernel();
732
733 // Forcing///////////////
735 double hostForcing[3];
736
738 // limiters
741
743 // initial condition fluid
744 void setInitialCondition(std::function<void(real, real, real, real &, real &, real &, real &)> initialCondition);
745 std::function<void(real, real, real, real &, real &, real &, real &)>& getInitialCondition();
746
747 // initial condition concentration
748 void setInitialConditionAD(std::function<real(real, real, real)> initialConditionAD);
749 std::function<real(real, real, real)>& getInitialConditionAD();
753
754 std::vector<std::shared_ptr<LBMSimulationParameter>> parH = std::vector<std::shared_ptr<LBMSimulationParameter>>(1);
755 std::vector<std::shared_ptr<LBMSimulationParameter>> parD = std::vector<std::shared_ptr<LBMSimulationParameter>>(1);
756
758
759private:
760 void readConfigData(const vf::basics::ConfigurationFile &configData);
761 void initGridPaths();
762 void initGridBasePoints();
763 void initDefaultLBMkernelAllLevels();
764
765 void setPathAndFilename(std::string fname);
766
767private:
768 real Re;
769 real factorPressBC{ 1.0 };
770 real Diffusivity{ 0.001 };
771 real RealX{ 1.0 };
772 real RealY{ 1.0 };
773 real clockCycleForMeasurePoints{ 1.0 };
774 real vis{ 0.001 };
775 real vis_ratio{ 1.0 };
776 real u0{ 0.01 };
777 real u0_ratio{ 1.0 };
778 real delta_rho{ 1.0 };
779 real delta_press{ 1.0 };
780 real SGSConstant{ 0.0 };
781 real outflowPressureCorrectionFactor{ 0.0 };
782 real turbulentPrandtlNumber{ 0.0 };
783 real buoyancyFactor{ 0.0 };
784 real gravity{ 0.0 };
785 real referenceTemperature{ 0.0 };
786 bool diffOn{ false };
787 bool buoyancyEnabled { false };
788 bool calcDragLift{ false };
789 bool calcCp{ false };
790 bool calcVelocityAndFluctuations{ false };
791 bool isBodyForce{ false };
792 bool allNodesAllFeatures{ false };
793 bool printFiles{ false };
794 bool doRestart{ false };
795 bool doCheckPoint{ false };
796 bool readGeo{ false };
797 bool isGeo;
798 bool isCp;
799 bool GeometryValues{ false };
800 bool is2ndOrderMoments{ false };
801 bool is3rdOrderMoments{ false };
802 bool isHighOrderMoments{ false };
803 bool calcMean{ false };
804 bool turbulentViscosityEnabled{ false };
805 bool turbulentDiffusivityEnabled{ false };
806 bool isMeasurePoints{ false };
807 bool isInitNeq{ false };
808
810 int maxlevel{ 0 };
811 int coarse{ 0 };
812 int fine{ 0 };
813 int factor_gridNZ{ 2 };
814 int D3Qxx{ 27 };
815 int numprocs{ 1 };
816 int myProcessId{ 0 };
817 int maxdev{ 1 };
818
819 double memsizeGPU;
820
821 uint timestep;
822 uint tDoCheckPoint{ 0 };
823 uint tDoRestart{ 0 };
824 uint tCalcMedStart{ 0 };
825 uint tCalcMedEnd{ 10 };
826 uint tend{ 10 };
827 uint tout{ 1 };
828 uint tStartOut{ 0 };
829 uint timeStepForMeasurePoints{ 10 };
830
831 std::vector<uint> devices{ 0, 1 }; // one device with ID = 0
832 std::vector<int> GridX, GridY, GridZ;
833 std::vector<real> scaleLBMtoSI, translateLBMtoSI;
834 std::vector<real> minCoordX, minCoordY, minCoordZ, maxCoordX, maxCoordY, maxCoordZ;
835
836 std::string fname{ "output/simulation" };
837 std::string oPath{ "output/" };
838 std::string gridPath{ "grid/" };
839 std::string oPrefix{ "simulation" };
840 std::string geoVec, coordX, coordY, coordZ, neighborX, neighborY, neighborZ, neighborWSB, scaleCFC, scaleCFF, scaleFCC, scaleFCF, scaleOffsetCF, scaleOffsetFC;
841 std::string noSlipBcPos, noSlipBcQs, noSlipBcValue;
842 std::string slipBcPos, slipBcQs, slipBcValue;
843 std::string pressBcPos, pressBcQs, pressBcValue;
844 std::string geomBoundaryBcQs, velBcQs;
845 std::string geomBoundaryBcValues, velBcValues, pressBcValues, noSlipBcValues;
846 std::string measurePoints;
847 std::string inletBcQs, inletBcValues;
848 std::string outletBcQs, outletBcValues;
849 std::string topBcQs, topBcValues;
850 std::string bottomBcQs, bottomBcValues;
851 std::string frontBcQs, frontBcValues;
852 std::string backBcQs, backBcValues;
853 std::string wallBcQs, wallBcValues;
854 std::string periodicBcQs, periodicBcValues;
855 std::string numberNodes, LBMvsSI;
856 std::string cpTop, cpBottom, cpBottom2;
857 std::string concentration;
858
861
862
863 // Kernel
864 std::string mainKernel{ vf::collision_kernel::compressible::K17CompressibleNavierStokes };
865 bool multiKernelOn{ false };
866 std::vector<int> multiKernelLevel;
867 std::vector<std::string> multiKernel;
868 bool kernelNeedsFluidNodeIndicesToRun = false;
869 std::string adKernel;
870
871 std::vector<SPtr<PreCollisionInteractor>> interactors;
872 std::vector<SPtr<Sampler>> samplers;
873
874 // Step of Ensight writing//
875 unsigned int stepEnsight;
876
877private:
878 // Multi GPU
879 // 3D domain decomposition
880 std::vector<std::string> possNeighborFilesSendX, possNeighborFilesSendY, possNeighborFilesSendZ;
881 std::vector<std::string> possNeighborFilesRecvX, possNeighborFilesRecvY, possNeighborFilesRecvZ;
882 bool isNeigborX, isNeigborY, isNeigborZ;
883
886 std::function<void(real, real, real, real &, real &, real &, real &)> initialCondition;
888 std::function<real(real, real, real)> initialConditionAD;
889 std::function<real(real, real, real)> initialLocalReferenceTemperature;
890
892 // cuda streams
893
895 bool useStreams{ false };
896 std::unique_ptr<CudaStreamManager> cudaStreamManager;
897
898public:
902 void setUseStreams(bool useStreams);
903 bool getUseStreams();
904 std::unique_ptr<CudaStreamManager> &getStreamManager();
906 void setKernelNeedsFluidNodeIndicesToRun(bool kernelNeedsFluidNodeIndicesToRun);
907
908 void initProcessNeighborsAfterFtoCX(int level);
909 void initProcessNeighborsAfterFtoCY(int level);
910 void initProcessNeighborsAfterFtoCZ(int level);
911
913
914 real worldLength { 0 }; // needed for meta data output
915};
916}
917
918#endif
919
Class for LBM-parameter management.
Definition Parameter.h:359
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 getcpTop()
std::string getbackBcQs()
void setMyID(int myid)
real getForceRatio() const
void setbottomBcValues(std::string bottomBcValues)
double * getForcesDouble()
real getScaledLengthRatio(int level) const
vf::lbm::advection_diffusion::TurbulenceModel getADTurbulenceModel()
std::vector< std::shared_ptr< LBMSimulationParameter > > parH
Definition Parameter.h:754
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)
void setD3Qxx(int d3qxx)
real getViscosity() const
void setclockCycleForMeasurePoints(real clockCycleForMeasurePoints)
int getNumprocs() const
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
Definition Parameter.h:755
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
Definition Parameter.h:912
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()
std::string getcoordY()
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 setRe(real Re)
void setAllNodesAllFeatures(bool allNodesAllFeatures)
real * quadricLimitersH
Definition Parameter.h:739
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)
int getCoarse() const
std::vector< uint > getDevices() const
bool getKernelNeedsFluidNodeIndicesToRun()
std::string getvelBcQs()
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)
int getMaxLevel() const
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)
std::string getgeoVec()
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()
void setFactorPressBC(real factorPressBC)
void setcpTop(std::string cpTop)
void setIsCp(bool isCp)
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)
int getFine() const
std::string getcoordX()
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
std::string gettopBcQs()
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()
real getGravity() const
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)
std::string getLBMvsSI()
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()
real getRe() const
unsigned int getTimestepEnd() const
void setTimeDoRestart(unsigned int tDoRestart)
void setViscosityLB(real Viscosity)
real getVelocity() const
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)
LBMSimulationParameter & getParHostAsReference(int level) const
void setMaxCoordX(std::vector< real > MaxCoordX)
void setPrintFiles(bool printfiles)
real getPressureRatio() const
std::string getcoordZ()
double hostForcing[3]
Definition Parameter.h:735
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)
real * quadricLimitersD
Definition Parameter.h:739
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]
Definition Parameter.h:740
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()
std::shared_ptr< T > SPtr
float real
Definition DataTypes.h:42
unsigned int uint
Definition DataTypes.h:47
curandStateXORWOW curandState
Definition Parameter.h:56
Simple configuration file.
TurbulenceModel
An enumeration for selecting a template of the advection-diffusion turbulence model.
TurbulenceModel
An enumeration for selecting a turbulence model.
stores location of neighboring cell (necessary for refinement into the wall)
Definition Calculation.h:85
EdgeNodePositions(uint indexOfProcessNeighborRecv, uint indexInRecvBuffer, uint indexOfProcessNeighborSend, uint indexInSendBuffer)
Definition Parameter.h:252
struct holds and manages the LB-parameter of the simulation
Definition Parameter.h:74
std::map< CollisionTemplate, uint * > taggedFluidNodeIndices
Definition Parameter.h:264
InterpolationCells coarseToFineBorder
Definition Parameter.h:216
std::vector< ProcessNeighbor27 > sendProcessNeighborsX
stores the base-node-indices of coarse and fine refinement cells
Definition Parameter.h:232
InterpolationCellNeighbor neighborFineToCoarseBulk
Definition Parameter.h:223
std::vector< MeasurePoints > MeasurePointVector
store the indices, velocities and density at distinct measure points
Definition Parameter.h:322
uint * typeOfGridNode
stores the type for every lattice node (f.e. fluid node)
Definition Parameter.h:86
real * concentration
stores a field of concentration values
Definition Parameter.h:194
real * CUMbbb
3rd order moments
Definition Parameter.h:112
std::vector< ProcessNeighbor27 > sendProcessNeighborsAfterFtoCZ
Definition Parameter.h:241
AdvectionDiffusionNoFluxBoundaryConditions AdvectionDiffusionNoFluxBC
stores the advection diffusion noFlux boundary condition data
Definition Parameter.h:155
Distributions27 distributions
store all distribution functions for the D3Q27
Definition Parameter.h:83
InterpolationCellNeighbor neighborFineToCoarse
Definition Parameter.h:222
int * cpTopIndex
stores pressure values at distinct locations
Definition Parameter.h:296
std::vector< ProcessNeighbor27 > sendProcessNeighborsY
Definition Parameter.h:233
real * coordinateX
store the coordinates for every lattice node
Definition Parameter.h:96
std::vector< ProcessNeighbor27 > recvProcessNeighborsZ
Definition Parameter.h:237
WallModelParameters momentumWallModel
stores parameters for a wall model
Definition Parameter.h:172
QforBoundaryConditions pressureBC
stores the pressure boundary condition data
Definition Parameter.h:134
std::vector< ProcessNeighbor27 > sendProcessNeighborsAfterFtoCX
Definition Parameter.h:239
std::vector< ProcessNeighbor27 > sendProcessNeighborsZ
Definition Parameter.h:234
real gravity
stores non-dimensional scaled gravity
Definition Parameter.h:200
bool isEvenTimestep
decides if the simulation timestep is even or odd
Definition Parameter.h:78
QforBoundaryConditions velocityBC
stores the velocity boundary condition data
Definition Parameter.h:128
std::vector< EdgeNodePositions > edgeNodesYtoZ
Definition Parameter.h:261
real * localReferenceTemperature
stores a field of local reference temperature when using buoyancy
Definition Parameter.h:196
InterpolationCellNeighbor neighborCoarseToFine
stores location of neighboring cell (necessary for refinement into the wall)
Definition Parameter.h:220
QforBoundaryConditions noSlipBC
stores the no slip boundary condition data
Definition Parameter.h:125
AdvectionDiffusionNeumannBoundaryConditions AdvectionDiffusionNeumannBC
stores the advection diffusion Dirichlet boundary condition data
Definition Parameter.h:161
InterpolationCells fineToCoarseBulk
Definition Parameter.h:215
QforBoundaryConditions geometryBC
stores the geometry boundary condition data
Definition Parameter.h:131
QforBoundaryConditions surfaceLayerBC
stores the surface layer boundary condition data
Definition Parameter.h:143
std::vector< bool > isOutsideInterface
Definition Parameter.h:301
std::vector< real > turbulenceIntensity
Definition Parameter.h:340
std::vector< double > pressMirror
Definition Parameter.h:300
std::vector< ProcessNeighbor27 > sendProcessNeighborsAfterFtoCY
Definition Parameter.h:240
real * CUMcbb
higher order moments
Definition Parameter.h:114
std::vector< std::vector< double > > cpTop
Definition Parameter.h:299
std::vector< double > DragLiftVectorInXdirection
Definition Parameter.h:285
QforBoundaryConditions stressBC
stores the stress boundary condition data
Definition Parameter.h:140
std::vector< double > DragLiftVectorInYdirection
Definition Parameter.h:286
uint gridNX
store the grid dimensions of the domain
Definition Parameter.h:89
real gridSpacing
stores the space between the grid nodes
Definition Parameter.h:106
std::vector< EdgeNodePositions > edgeNodesXtoY
Definition Parameter.h:259
InterpolationCells fineToCoarse
Definition Parameter.h:211
unsigned int * indicesOfMeasurePoints
Definition Parameter.h:323
Distributions27 distributionsAD
store all distribution functions for the D3Q27 advection diffusion field
Definition Parameter.h:202
std::vector< ProcessNeighbor27 > recvProcessNeighborsAfterFtoCY
Definition Parameter.h:243
unsigned long long memSizeRealLBnodes
stores the size of the memory consumption for real/int values of the arrays (e.g. coordinates,...
Definition Parameter.h:119
unsigned int memSizeRealMeasurePoints
Definition Parameter.h:328
InterpolationCells coarseToFineBulk
Definition Parameter.h:217
InterpolationCellNeighbor neighborCoarseToFineBulk
Definition Parameter.h:221
double * DragLiftPreProcessingInXdirection
stores pre- an post-processing values for the calculation
Definition Parameter.h:282
real diffusivity
stores the diffusivity
Definition Parameter.h:190
unsigned long long numberOfNodes
stores the number of nodes (based on indirect addressing scheme)
Definition Parameter.h:117
uint * neighborX
store the neighbors in +X, +Y, +Z, and in diagonal negative direction
Definition Parameter.h:93
real * meanConcentration
store mean macroscopic advection diffusion values
Definition Parameter.h:351
real * meanVelocityInXdirection
store mean macroscopic fluid flow values
Definition Parameter.h:348
QforBoundaryConditions outflowBC
stores the outflow boundary condition data
Definition Parameter.h:137
std::vector< ProcessNeighbor27 > recvProcessNeighborsAfterFtoCX
Definition Parameter.h:242
real * vx_mean
store the turbulent intensity and related values
Definition Parameter.h:338
std::vector< std::vector< double > > cpBottom2
Definition Parameter.h:314
real outflowPressureCorrectionFactor
can be used for pressure correction at outflow boundary condition
Definition Parameter.h:180
real * velocityX
store the macroscopic values (velocity, density, pressure)
Definition Parameter.h:100
unsigned int memSizeIntegerMeasurePoints
Definition Parameter.h:328
std::vector< SPtr< TransientBCInputFileReader > > transientBCInputFileReader
allows reading values for a boundary condition from a file
Definition Parameter.h:177
std::vector< CollisionTemplate > allocatedBulkFluidNodeTags
Definition Parameter.h:275
real * forceX_SP
store the values of body forces for all 3 dimensions
Definition Parameter.h:183
std::vector< ProcessNeighbor27 > recvProcessNeighborsAfterFtoCZ
Definition Parameter.h:244
unsigned long long memSizeLonglongLBnodes
Definition Parameter.h:119
std::vector< ProcessNeighbor27 > recvProcessNeighborsX
Definition Parameter.h:235
InterpolationCells coarseToFine
stores the base-node-indices of coarse and fine refinement cells
Definition Parameter.h:210
std::vector< double > DragLiftVectorInZdirection
Definition Parameter.h:287
uint numberofthreads
stores the number of threads per GPU block
Definition Parameter.h:81
unsigned int numberOfPointsPressWindow
Definition Parameter.h:302
real * forcing
sets a uniform forcing on each fluid node in all three spatial dimensions
Definition Parameter.h:169
real referenceTemperature
\biref stores temperature that is set as reference temperature in simulation
Definition Parameter.h:198
AdvectionDiffusionFluxBoundaryConditions AdvectionDiffusionFluxBC
stores the advection diffusion Dirichlet boundary condition data
Definition Parameter.h:164
real * turbulentViscosity
store the turbulent viscosity and diffusivity
Definition Parameter.h:336
real omegaDiffusivity
stores the value for omega (for the diffusivity)
Definition Parameter.h:192
QforBoundaryConditions slipBC
stores the slip boundary condition data
Definition Parameter.h:122
QforPrecursorBoundaryConditions precursorBC
stores the precursor boundary condition data
Definition Parameter.h:146
SurfaceLayerWallModelParameters surfaceLayerWallModel
stores parameters for a temperature wall model
Definition Parameter.h:174
real omega
stores the value for omega
Definition Parameter.h:102
std::vector< std::vector< double > > cpBottom
Definition Parameter.h:308
std::vector< ProcessNeighbor27 > recvProcessNeighborsY
Definition Parameter.h:236
std::vector< QforDirectionalBoundaryCondition > pressureBCDirectional
stores the data for a directional pressure boundary condition
Definition Parameter.h:149
AdvectionDiffusionDirichletBoundaryConditions AdvectionDiffusionDirichletBC
stores the advection diffusion Dirichlet boundary condition data
Definition Parameter.h:158
std::map< CollisionTemplate, uint > numberOfTaggedFluidNodes
Definition Parameter.h:269
std::vector< QforDirectionalADBoundaryCondition > concentrationBCDirectional
stores the data for directional advection-diffusion (temperature) boundary conditions
Definition Parameter.h:152
std::vector< EdgeNodePositions > edgeNodesXtoZ
Definition Parameter.h:260
real * kxyFromfcNEQ
store higher order moments
Definition Parameter.h:110
real viscosity
stores the value for viscosity
Definition Parameter.h:104
InterpolationCells fineToCoarseBorder
distinguish between bulk and border interpolation cells (necessary for communication hiding)
Definition Parameter.h:214