Skip to content
Snippets Groups Projects
Commit 2d264199 authored by peters's avatar peters
Browse files

Finish parameter constructor.

parent 323580b0
No related branches found
No related tags found
1 merge request!56Clean up Configuration File mess. Closes #18
......@@ -44,31 +44,42 @@
#define INTERFACE_T 4
#define INTERFACE_B 5
//////////////////////////////////////////////////////////////////////////
// precision (change between double and float)
//
#include "Core/DataTypes.h"
//////////////////////////////////////////////////////////////////////////
#include <string>
#include <vector>
// Initial condition
typedef struct InitCond{
struct InitCondition
{
real Re;
real factorPressBC;
real Diffusivity, Temp, TempBC;
real RealX, RealY;
int numprocs, myid, maxdev;
unsigned int tend, tout, tStartOut, tCalcMedStart, tCalcMedEnd, tDoCheckPoint, tDoRestart;
unsigned int PressInID, PressOutID;
unsigned int PressInZ, PressOutZ;
std::vector<uint> devices;
real factorPressBC {1.0};
real Diffusivity {0.001};
real Temp {0.0};
real TempBC {1.0};
real RealX {1.0};
real RealY {1.0};
int numprocs, myid;
int maxdev {1};
uint tDoCheckPoint {0};
uint tDoRestart {0};
uint tCalcMedStart {0};
uint tCalcMedEnd {10};
uint tend {10};
uint tout {1};
uint tStartOut {0};
uint PressInID {0};
uint PressOutID {0};
uint PressInZ {1};
uint PressOutZ {2};
std::vector<uint> devices {1, 0}; // one device with ID = 0
std::vector<int> GridX, GridY, GridZ, DistX, DistY, DistZ;
std::vector<real> scaleLBMtoSI, translateLBMtoSI;
std::vector<real> minCoordX, minCoordY, minCoordZ, maxCoordX, maxCoordY, maxCoordZ;
std::vector<bool> NeedInterface;
std::string fname, oPath, oPrefix;
std::string fname, oPath;
std::string oPrefix {"MyFile"};
std::string geometryFileC, geometryFileM, geometryFileF;
std::string kFull, geoFull, geoVec, coordX, coordY, coordZ, neighborX, neighborY, neighborZ, neighborWSB, scaleCFC, scaleCFF, scaleFCC, scaleFCF, scaleOffsetCF, scaleOffsetFC;
std::string noSlipBcPos, noSlipBcQs, noSlipBcValue;
......@@ -89,16 +100,31 @@ typedef struct InitCond{
std::string cpTop, cpBottom, cpBottom2;
std::string concentration, streetVelocity;
std::string geomNormalX, geomNormalY, geomNormalZ, inflowNormalX, inflowNormalY, inflowNormalZ, outflowNormalX, outflowNormalY, outflowNormalZ;
unsigned int timeStepForMP;
real clockCycleForMP;
real vis, vis_ratio;
real u0, u0_ratio;
real delta_rho, delta_press;
bool printFiles, readGeo, doRestart, doCheckPoint, isGeo, isProp, isCp, calcMedian, GeometryValues, isConc, is2ndOrderMoments, is3rdOrderMoments, isHighOrderMoments, isWale, isMeasurePoints, isInitNeq;
uint timeStepForMP {10};
real clockCycleForMP {1.0};
real vis {0.001};
real vis_ratio {1.0};
real u0 {0.01};
real u0_ratio {1.0};
real delta_rho {0.0};
real delta_press {1.0};
bool printFiles {false};
bool doRestart {false};
bool doCheckPoint {false};
bool readGeo, isGeo, isProp, isCp;
bool GeometryValues {false};
bool is2ndOrderMoments {false};
bool is3rdOrderMoments {false};
bool isHighOrderMoments {false};
bool calcMedian {false};
bool isConc {false};
bool isWale {false};
bool isMeasurePoints {false};
bool isInitNeq {false};
bool isGeoNormal, isInflowNormal, isOutflowNormal;
bool simulatePorousMedia;
bool streetVelocityFile;
} InitCondition;
bool simulatePorousMedia {false};
bool streetVelocityFile {false};
};
//Interface Cells
typedef struct ICellCF{
......
......@@ -45,13 +45,9 @@ Parameter::Parameter(const vf::basics::ConfigurationFile& configData,
{
if (configData.contains("NumberOfDevices"))
this->setMaxDev(configData.getValue<int>("NumberOfDevices"));
else
this->setMaxDev(1);
//////////////////////////////////////////////////////////////////////////
if (configData.contains("Devices"))
this->setDevices(configData.getVector<uint>("Devices"));
else
this->setDevices(std::vector<uint>{(uint)0});
//////////////////////////////////////////////////////////////////////////
if (configData.contains("Path"))
this->setOutputPath(configData.getValue<std::string>("Path"));
......@@ -60,515 +56,381 @@ Parameter::Parameter(const vf::basics::ConfigurationFile& configData,
//////////////////////////////////////////////////////////////////////////
if (configData.contains("Prefix"))
this->setOutputPrefix(configData.getValue<std::string>("Prefix"));
else
this->setOutputPrefix("MyFile");
//////////////////////////////////////////////////////////////////////////
if (configData.contains("WriteGrid"))
this->setPrintFiles(configData.getValue<bool>("WriteGrid"));
else
this->setPrintFiles(false);
//////////////////////////////////////////////////////////////////////////
// if (configData->isGeometryValuesInConfigFile())
// this->setGeometryValues(configData->getGeometryValues());
// else
// this->setGeometryValues(false);
// //////////////////////////////////////////////////////////////////////////
// if (configData->isCalc2ndOrderMomentsInConfigFile())
// this->setCalc2ndOrderMoments(configData->getCalc2ndOrderMoments());
// else
// this->setCalc2ndOrderMoments(false);
// //////////////////////////////////////////////////////////////////////////
// if (configData->isCalc3rdOrderMomentsInConfigFile())
// this->setCalc3rdOrderMoments(configData->getCalc3rdOrderMoments());
// else
// this->setCalc3rdOrderMoments(false);
// //////////////////////////////////////////////////////////////////////////
// if (configData->isCalcHighOrderMomentsInConfigFile())
// this->setCalcHighOrderMoments(configData->getCalcHighOrderMoments());
// else
// this->setCalcHighOrderMoments(false);
// //////////////////////////////////////////////////////////////////////////
// if (configData->isCalcMedianInConfigFile())
// this->setCalcMedian(configData->getCalcMedian());
// else
// this->setCalcMedian(false);
// //////////////////////////////////////////////////////////////////////////
// if (configData->isCalcDragLiftInConfigFile())
// this->setCalcDragLift(configData->getCalcDragLift());
// else
// this->setCalcDragLift(false);
// //////////////////////////////////////////////////////////////////////////
// if (configData->isCalcCpInConfigFile())
// this->setCalcCp(configData->getCalcCp());
// else
// this->setCalcCp(false);
// //////////////////////////////////////////////////////////////////////////
// if (configData->isWriteVeloASCIIfilesInConfigFile())
// this->setWriteVeloASCIIfiles(configData->getWriteVeloASCIIfiles());
// else
// this->setWriteVeloASCIIfiles(false);
// //////////////////////////////////////////////////////////////////////////
// if (configData->isCalcPlaneConcInConfigFile())
// this->setCalcPlaneConc(configData->getCalcPlaneConc());
// else
// this->setCalcPlaneConc(false);
// //////////////////////////////////////////////////////////////////////////
// if (configData->isConcFileInConfigFile())
// this->setConcFile(configData->getConcFile());
// else
// this->setConcFile(false);
// //////////////////////////////////////////////////////////////////////////
// if (configData->isStreetVelocityFileInConfigFile())
// this->setStreetVelocityFile(configData->getStreetVelocityFile());
// else
// this->setStreetVelocityFile(false);
// //////////////////////////////////////////////////////////////////////////
// if (configData->isUseMeasurePointsInConfigFile())
// this->setUseMeasurePoints(configData->getUseMeasurePoints());
// else
// this->setUseMeasurePoints(false);
// //////////////////////////////////////////////////////////////////////////
// if (configData->isUseWaleInConfigFile())
// this->setUseWale(configData->getUseWale());
// else
// this->setUseWale(false);
// //////////////////////////////////////////////////////////////////////////
// if (configData->isUseInitNeqInConfigFile())
// this->setUseInitNeq(configData->getUseInitNeq());
// else
// this->setUseInitNeq(false);
// //////////////////////////////////////////////////////////////////////////
// if (configData->isSimulatePorousMediaInConfigFile())
// this->setSimulatePorousMedia(configData->getSimulatePorousMedia());
// else
// this->setSimulatePorousMedia(false);
// //////////////////////////////////////////////////////////////////////////
// if (configData->isD3QxxInConfigFile())
// this->setD3Qxx(configData->getD3Qxx());
// else
// this->setD3Qxx((int)27);
// //////////////////////////////////////////////////////////////////////////
// if (configData->isTEndInConfigFile())
// this->setTEnd(configData->getTEnd());
// else
// this->setTEnd((uint)10);
// //////////////////////////////////////////////////////////////////////////
// if (configData->isTOutInConfigFile())
// this->setTOut(configData->getTOut());
// else
// this->setTOut((uint)1);
// //////////////////////////////////////////////////////////////////////////
// if (configData->isTStartOutInConfigFile())
// this->setTStartOut(configData->getTStartOut());
// else
// this->setTStartOut((uint)0);
// //////////////////////////////////////////////////////////////////////////
// if (configData->isTimeCalcMedStartInConfigFile())
// this->setTimeCalcMedStart(configData->getTimeCalcMedStart());
// else
// this->setTimeCalcMedStart((int)0);
// //////////////////////////////////////////////////////////////////////////
// if (configData->isTimeCalcMedEndInConfigFile())
// this->setTimeCalcMedEnd(configData->getTimeCalcMedEnd());
// else
// this->setTimeCalcMedEnd((int)10);
// //////////////////////////////////////////////////////////////////////////
// if (configData->isPressInIDInConfigFile())
// this->setPressInID(configData->getPressInID());
// else
// this->setPressInID((uint)0);
// //////////////////////////////////////////////////////////////////////////
// if (configData->isPressOutIDInConfigFile())
// this->setPressOutID(configData->getPressOutID());
// else
// this->setPressOutID((uint)0);
// //////////////////////////////////////////////////////////////////////////
// if (configData->isPressInZInConfigFile())
// this->setPressInZ(configData->getPressInZ());
// else
// this->setPressInZ((uint)1);
// //////////////////////////////////////////////////////////////////////////
// if (configData->isPressOutZInConfigFile())
// this->setPressOutZ(configData->getPressOutZ());
// else
// this->setPressOutZ((uint)2);
if (configData.contains("GeometryValues"))
this->setGeometryValues(configData.getValue<bool>("GeometryValues"));
//////////////////////////////////////////////////////////////////////////
if (configData.contains("calc2ndOrderMoments"))
this->setCalc2ndOrderMoments(configData.getValue<bool>("calc2ndOrderMoments"));
//////////////////////////////////////////////////////////////////////////
if (configData.contains("calc3rdOrderMoments"))
this->setCalc3rdOrderMoments(configData.getValue<bool>("calc3rdOrderMoments"));
//////////////////////////////////////////////////////////////////////////
if (configData.contains("calcHigherOrderMoments"))
this->setCalcHighOrderMoments(configData.getValue<bool>("calcHigherOrderMoments"));
//////////////////////////////////////////////////////////////////////////
if (configData.contains("calcMedian"))
this->setCalcMedian(configData.getValue<bool>("calcMedian"));
//////////////////////////////////////////////////////////////////////////
if (configData.contains("calcCp"))
this->calcCp = configData.getValue<bool>("calcCp");
//////////////////////////////////////////////////////////////////////////
if (configData.contains("calcDrafLift"))
this->calcDragLift = configData.getValue<bool>("calcDrafLift");
//////////////////////////////////////////////////////////////////////////
if (configData.contains("writeVeloASCIIfiles"))
this->writeVeloASCII = configData.getValue<bool>("writeVeloASCIIfiles");
//////////////////////////////////////////////////////////////////////////
if (configData.contains("calcPlaneConc"))
this->calcPlaneConc = configData.getValue<bool>("calcPlaneConc");
//////////////////////////////////////////////////////////////////////////
if (configData.contains("UseConcFile"))
this->setConcFile(configData.getValue<bool>("UseConcFile"));
//////////////////////////////////////////////////////////////////////////
if (configData.contains("UseStreetVelocityFile"))
this->setStreetVelocityFile(configData.getValue<bool>("UseStreetVelocityFile"));
//////////////////////////////////////////////////////////////////////////
if (configData.contains("UseMeasurePoints"))
this->setUseMeasurePoints(configData.getValue<bool>("UseMeasurePoints"));
//////////////////////////////////////////////////////////////////////////
if (configData.contains("UseWale"))
this->setUseWale(configData.getValue<bool>("UseWale"));
//////////////////////////////////////////////////////////////////////////
if (configData.contains("UseInitNeq"))
this->setUseInitNeq(configData.getValue<bool>("UseInitNeq"));
//////////////////////////////////////////////////////////////////////////
if (configData.contains("SimulatePorousMedia"))
this->setSimulatePorousMedia(configData.getValue<bool>("SimulatePorousMedia"));
//////////////////////////////////////////////////////////////////////////
if (configData.contains("D3Qxx"))
this->setD3Qxx(configData.getValue<int>("D3Qxx"));
//////////////////////////////////////////////////////////////////////////
if (configData.contains("TimeEnd"))
this->setTEnd(configData.getValue<int>("TimeEnd"));
//////////////////////////////////////////////////////////////////////////
if (configData.contains("TimeOut"))
this->setTOut(configData.getValue<int>("TimeOut"));
//////////////////////////////////////////////////////////////////////////
if (configData.contains("TimeStartOut"))
this->setTStartOut(configData.getValue<int>("TimeStartOut"));
//////////////////////////////////////////////////////////////////////////
if (configData.contains("TimeStartCalcMedian"))
this->setTimeCalcMedStart(configData.getValue<int>("TimeStartCalcMedian"));
//////////////////////////////////////////////////////////////////////////
if (configData.contains("TimeEndCalcMedian"))
this->setTimeCalcMedEnd(configData.getValue<int>("TimeEndCalcMedian"));
//////////////////////////////////////////////////////////////////////////
if (configData.contains("PressInID"))
this->setTOut(configData.getValue<int>("PressInID"));
//////////////////////////////////////////////////////////////////////////
if (configData.contains("PressOutID"))
this->setTStartOut(configData.getValue<int>("PressOutID"));
//////////////////////////////////////////////////////////////////////////
if (configData.contains("PressInZ"))
this->setTimeCalcMedStart(configData.getValue<int>("PressInZ"));
//////////////////////////////////////////////////////////////////////////
if (configData.contains("PressOutZ"))
this->setTimeCalcMedEnd(configData.getValue<int>("PressOutZ"));
// //////////////////////////////////////////////////////////////////////////
// //second component
// if (configData->isDiffOnInConfigFile())
// this->setDiffOn(configData->getDiffOn());
// else
// this->setDiffOn(false);
// if (configData->isDiffModInConfigFile())
// this->setDiffMod(configData->getDiffMod());
// else
// this->setDiffMod((int)27);
// if (configData->isDiffusivityInConfigFile())
// this->setDiffusivity(configData->getDiffusivity());
// else
// this->setDiffusivity((real)0.001);
// if (configData->isTemperatureInitInConfigFile())
// this->setTemperatureInit(configData->getTemperatureInit());
// else
// this->setTemperatureInit((real)0.0);
// if (configData->isTemperatureBCInConfigFile())
// this->setTemperatureBC(configData->getTemperatureBC());
// else
// this->setTemperatureBC((real)1.0);
// //////////////////////////////////////////////////////////////////////////
// if (configData->isViscosityInConfigFile())
// this->setViscosity(configData->getViscosity());
// else
// this->setViscosity((real)0.001);
// //////////////////////////////////////////////////////////////////////////
// if (configData->isVelocityInConfigFile())
// this->setVelocity(configData->getVelocity());
// else
// this->setVelocity((real)0.01);
// //////////////////////////////////////////////////////////////////////////
// if (configData->isViscosityRatioInConfigFile())
// this->setViscosityRatio(configData->getViscosityRatio());
// else
// this->setViscosityRatio((real)1.0);
// //////////////////////////////////////////////////////////////////////////
// if (configData->isVelocityRatioInConfigFile())
// this->setVelocityRatio(configData->getVelocityRatio());
// else
// this->setVelocityRatio((real)1.0);
// //////////////////////////////////////////////////////////////////////////
// if (configData->isDensityRatioInConfigFile())
// this->setDensityRatio(configData->getDensityRatio());
// else
// this->setDensityRatio((real)1.0);
// //////////////////////////////////////////////////////////////////////////
// if (configData->isPressRatioInConfigFile())
// this->setPressRatio(configData->getPressRatio());
// else
// this->setPressRatio((real)1.0);
// //////////////////////////////////////////////////////////////////////////
// if (configData->isRealXInConfigFile())
// this->setRealX(configData->getRealX());
// else
// this->setRealX((real)1.0);
// //////////////////////////////////////////////////////////////////////////
// if (configData->isRealYInConfigFile())
// this->setRealY(configData->getRealY());
// else
// this->setRealY((real)1.0);
//////////////////////////////////////////////////////////////////////////
if (configData.contains("DiffOn"))
this->setDiffOn(configData.getValue<bool>("DiffOn"));
//////////////////////////////////////////////////////////////////////////
if (configData.contains("DiffMod"))
this->setDiffMod(configData.getValue<int>("DiffMod"));
//////////////////////////////////////////////////////////////////////////
if (configData.contains("Diffusivity"))
this->setDiffusivity(configData.getValue<real>("Diffusivity"));
//////////////////////////////////////////////////////////////////////////
if (configData.contains("Temp"))
this->setTemperatureInit(configData.getValue<real>("Temp"));
//////////////////////////////////////////////////////////////////////////
if (configData.contains("TempBC"))
this->setTemperatureBC(configData.getValue<real>("TempBC"));
//////////////////////////////////////////////////////////////////////////
if (configData.contains("Viscosity_LB"))
this->setViscosity(configData.getValue<real>("Viscosity_LB"));
//////////////////////////////////////////////////////////////////////////
if (configData.contains("Velocity_LB"))
this->setVelocity(configData.getValue<real>("Velocity_LB"));
//////////////////////////////////////////////////////////////////////////
if (configData.contains("Viscosity_Ratio_World_to_LB"))
this->setViscosityRatio(configData.getValue<real>("Viscosity_Ratio_World_to_LB"));
//////////////////////////////////////////////////////////////////////////
if (configData.contains("Velocity_Ratio_World_to_LB"))
this->setVelocityRatio(configData.getValue<real>("Velocity_Ratio_World_to_LB"));
// //////////////////////////////////////////////////////////////////////////
// if (configData->isFactorPressBCInConfigFile())
// this->setFactorPressBC(configData->getFactorPressBC());
// else
// this->setFactorPressBC((real)1.0);
if (configData.contains("Density_Ratio_World_to_LB"))
this->setDensityRatio(configData.getValue<real>("Density_Ratio_World_to_LB"));
if (configData.contains("Delta_Press"))
this->setPressRatio(configData.getValue<real>("Delta_Press"));
//////////////////////////////////////////////////////////////////////////
if (configData.contains("SliceRealX"))
this->setRealX(configData.getValue<real>("SliceRealX"));
//////////////////////////////////////////////////////////////////////////
if (configData.contains("SliceRealY"))
this->setRealY(configData.getValue<real>("SliceRealY"));
//////////////////////////////////////////////////////////////////////////
if (configData.contains("FactorPressBC"))
this->setFactorPressBC(configData.getValue<real>("FactorPressBC"));
// //////////////////////////////////////////////////////////////////////////
// //read Geometry (STL)
// if (configData->isReadGeoInConfigFile())
// this->setReadGeo(configData->getReadGeo());
// else
// this->setReadGeo(false);
// if (configData->isGeometryFileCInConfigFile())
// this->setGeometryFileC(configData->getGeometryFileC());
// else if (this->getReadGeo())
// {
// std::cout << "GeometryFileC has to be defined!" << std::endl;
// exit(1);
// }
// else
// this->setGeometryFileC("");
// if (configData->isGeometryFileMInConfigFile())
// this->setGeometryFileM(configData->getGeometryFileM());
// else if (this->getReadGeo())
// {
// std::cout << "GeometryFileM has to be defined!" << std::endl;
// exit(1);
// }
// else
// this->setGeometryFileM("");
// if (configData->isGeometryFileFInConfigFile())
// this->setGeometryFileF(configData->getGeometryFileF());
// else if (this->getReadGeo())
// {
// std::cout << "GeometryFileF has to be defined!" << std::endl;
// exit(1);
// }
// else
// this->setGeometryFileF("");
// //////////////////////////////////////////////////////////////////////////
// if (configData->isClockCycleForMPInConfigFile())
// this->setclockCycleForMP(configData->getClockCycleForMP());
// else
// this->setclockCycleForMP((real)1.0);
// if (configData->isTimestepForMPInConfigFile())
// this->settimestepForMP(configData->getTimestepForMP());
// else
// this->settimestepForMP((uint)10);
// //////////////////////////////////////////////////////////////////////////
// std::string gridPath = "";
// if (configData->isGridPathInConfigFile())
// gridPath = configData->getGridPath();
// else
// {
// std::cout << "GridPath has to be defined!" << std::endl;
// exit(1);
// }
// if (this->getNumprocs() == 1)
// gridPath += "/";
// else
// gridPath += "/" + StringUtil::toString(this->getMyID()) + "/";
// //////////////////////////////////////////////////////////////////////////
// this->setFName(this->getOutputPath() + "/" + this->getOutputPrefix());
// //////////////////////////////////////////////////////////////////////////
// this->setgeoVec( gridPath + "geoVec.dat");
// this->setcoordX( gridPath + "coordX.dat");
// this->setcoordY( gridPath + "coordY.dat");
// this->setcoordZ( gridPath + "coordZ.dat");
// this->setneighborX( gridPath + "neighborX.dat");
// this->setneighborY( gridPath + "neighborY.dat");
// this->setneighborZ( gridPath + "neighborZ.dat");
// this->setneighborWSB( gridPath + "neighborWSB.dat");
// this->setscaleCFC( gridPath + "scaleCFC.dat");
// this->setscaleCFF( gridPath + "scaleCFF.dat");
// this->setscaleFCC( gridPath + "scaleFCC.dat");
// this->setscaleFCF( gridPath + "scaleFCF.dat");
// this->setscaleOffsetCF( gridPath + "offsetVecCF.dat");
// this->setscaleOffsetFC( gridPath + "offsetVecFC.dat");
// this->setgeomBoundaryBcQs( gridPath + "geomBoundaryQs.dat");
// this->setgeomBoundaryBcValues( gridPath + "geomBoundaryValues.dat");
// this->setinletBcQs( gridPath + "inletBoundaryQs.dat");
// this->setinletBcValues( gridPath + "inletBoundaryValues.dat");
// this->setoutletBcQs( gridPath + "outletBoundaryQs.dat");
// this->setoutletBcValues( gridPath + "outletBoundaryValues.dat");
// this->settopBcQs( gridPath + "topBoundaryQs.dat");
// this->settopBcValues( gridPath + "topBoundaryValues.dat");
// this->setbottomBcQs( gridPath + "bottomBoundaryQs.dat");
// this->setbottomBcValues( gridPath + "bottomBoundaryValues.dat");
// this->setfrontBcQs( gridPath + "frontBoundaryQs.dat");
// this->setfrontBcValues( gridPath + "frontBoundaryValues.dat");
// this->setbackBcQs( gridPath + "backBoundaryQs.dat");
// this->setbackBcValues( gridPath + "backBoundaryValues.dat");
// this->setnumberNodes( gridPath + "numberNodes.dat");
// this->setLBMvsSI( gridPath + "LBMvsSI.dat");
// this->setmeasurePoints( gridPath + "measurePoints.dat");
// this->setpropellerValues( gridPath + "propellerValues.dat");
// this->setcpTop( gridPath + "cpTop.dat");
// this->setcpBottom( gridPath + "cpBottom.dat");
// this->setcpBottom2( gridPath + "cpBottom2.dat");
// this->setConcentration( gridPath + "conc.dat");
// this->setStreetVelocity( gridPath + "streetVector.dat");
// //////////////////////////////////////////////////////////////////////////
// //Normals - Geometry
// this->setgeomBoundaryNormalX(gridPath + "geomBoundaryNormalX.dat");
// this->setgeomBoundaryNormalY(gridPath + "geomBoundaryNormalY.dat");
// this->setgeomBoundaryNormalZ(gridPath + "geomBoundaryNormalZ.dat");
// //Normals - Inlet
// this->setInflowBoundaryNormalX(gridPath + "inletBoundaryNormalX.dat");
// this->setInflowBoundaryNormalY(gridPath + "inletBoundaryNormalY.dat");
// this->setInflowBoundaryNormalZ(gridPath + "inletBoundaryNormalZ.dat");
// //Normals - Outlet
// this->setOutflowBoundaryNormalX(gridPath + "outletBoundaryNormalX.dat");
// this->setOutflowBoundaryNormalY(gridPath + "outletBoundaryNormalY.dat");
// this->setOutflowBoundaryNormalZ(gridPath + "outletBoundaryNormalZ.dat");
if (configData.contains("ReadGeometry"))
this->setReadGeo(configData.getValue<bool>("ReadGeometry"));
if (configData.contains("GeometryC"))
this->setGeometryFileC(configData.getValue<std::string>("GeometryC"));
else if (this->getReadGeo())
throw std::runtime_error("readGeo is true, GeometryC has to be set as well!");
if (configData.contains("GeometryM"))
this->setGeometryFileM(configData.getValue<std::string>("GeometryM"));
else if (this->getReadGeo())
throw std::runtime_error("readGeo is true, GeometryM has to be set as well!");
if (configData.contains("GeometryF"))
this->setGeometryFileF(configData.getValue<std::string>("GeometryF"));
else if (this->getReadGeo())
throw std::runtime_error("readGeo is true, GeometryF has to be set as well!");
//////////////////////////////////////////////////////////////////////////
if (configData.contains("measureClockCycle"))
this->setclockCycleForMP(configData.getValue<real>("measureClockCycle"));
if (configData.contains("measureTimestep"))
this->settimestepForMP(configData.getValue<uint>("measureTimestep"));
//////////////////////////////////////////////////////////////////////////
std::string gridPath {""};
if (configData.contains("GridPath"))
gridPath = configData.getValue<std::string>("GridPath");
else
throw std::runtime_error("GridPath has to be defined in config file!");
if (this->getNumprocs() == 1)
gridPath += "/";
else
gridPath += "/" + StringUtil::toString(this->getMyID()) + "/";
// //////////////////////////////////////////////////////////////////////////
this->setFName(this->getOutputPath() + "/" + this->getOutputPrefix());
//////////////////////////////////////////////////////////////////////////
this->setgeoVec( gridPath + "geoVec.dat");
this->setcoordX( gridPath + "coordX.dat");
this->setcoordY( gridPath + "coordY.dat");
this->setcoordZ( gridPath + "coordZ.dat");
this->setneighborX( gridPath + "neighborX.dat");
this->setneighborY( gridPath + "neighborY.dat");
this->setneighborZ( gridPath + "neighborZ.dat");
this->setneighborWSB( gridPath + "neighborWSB.dat");
this->setscaleCFC( gridPath + "scaleCFC.dat");
this->setscaleCFF( gridPath + "scaleCFF.dat");
this->setscaleFCC( gridPath + "scaleFCC.dat");
this->setscaleFCF( gridPath + "scaleFCF.dat");
this->setscaleOffsetCF( gridPath + "offsetVecCF.dat");
this->setscaleOffsetFC( gridPath + "offsetVecFC.dat");
this->setgeomBoundaryBcQs( gridPath + "geomBoundaryQs.dat");
this->setgeomBoundaryBcValues( gridPath + "geomBoundaryValues.dat");
this->setinletBcQs( gridPath + "inletBoundaryQs.dat");
this->setinletBcValues( gridPath + "inletBoundaryValues.dat");
this->setoutletBcQs( gridPath + "outletBoundaryQs.dat");
this->setoutletBcValues( gridPath + "outletBoundaryValues.dat");
this->settopBcQs( gridPath + "topBoundaryQs.dat");
this->settopBcValues( gridPath + "topBoundaryValues.dat");
this->setbottomBcQs( gridPath + "bottomBoundaryQs.dat");
this->setbottomBcValues( gridPath + "bottomBoundaryValues.dat");
this->setfrontBcQs( gridPath + "frontBoundaryQs.dat");
this->setfrontBcValues( gridPath + "frontBoundaryValues.dat");
this->setbackBcQs( gridPath + "backBoundaryQs.dat");
this->setbackBcValues( gridPath + "backBoundaryValues.dat");
this->setnumberNodes( gridPath + "numberNodes.dat");
this->setLBMvsSI( gridPath + "LBMvsSI.dat");
this->setmeasurePoints( gridPath + "measurePoints.dat");
this->setpropellerValues( gridPath + "propellerValues.dat");
this->setcpTop( gridPath + "cpTop.dat");
this->setcpBottom( gridPath + "cpBottom.dat");
this->setcpBottom2( gridPath + "cpBottom2.dat");
this->setConcentration( gridPath + "conc.dat");
this->setStreetVelocity( gridPath + "streetVector.dat");
//////////////////////////////////////////////////////////////////////////
//Normals - Geometry
this->setgeomBoundaryNormalX(gridPath + "geomBoundaryNormalX.dat");
this->setgeomBoundaryNormalY(gridPath + "geomBoundaryNormalY.dat");
this->setgeomBoundaryNormalZ(gridPath + "geomBoundaryNormalZ.dat");
//Normals - Inlet
this->setInflowBoundaryNormalX(gridPath + "inletBoundaryNormalX.dat");
this->setInflowBoundaryNormalY(gridPath + "inletBoundaryNormalY.dat");
this->setInflowBoundaryNormalZ(gridPath + "inletBoundaryNormalZ.dat");
//Normals - Outlet
this->setOutflowBoundaryNormalX(gridPath + "outletBoundaryNormalX.dat");
this->setOutflowBoundaryNormalY(gridPath + "outletBoundaryNormalY.dat");
this->setOutflowBoundaryNormalZ(gridPath + "outletBoundaryNormalZ.dat");
//////////////////////////////////////////////////////////////////////////
// //Forcing
// real forcingX = 0.0;
// real forcingY = 0.0;
// real forcingZ = 0.0;
// if (configData->isForcingXInConfigFile())
// forcingX = configData->getForcingX();
// if (configData->isForcingYInConfigFile())
// forcingY = configData->getForcingY();
// if (configData->isForcingZInConfigFile())
// forcingZ = configData->getForcingZ();
// this->setForcing(forcingX, forcingY, forcingZ);
// //////////////////////////////////////////////////////////////////////////
// //quadricLimiters
// real quadricLimiterP = (real)0.01;
// real quadricLimiterM = (real)0.01;
// real quadricLimiterD = (real)0.01;
// if (configData->isQuadricLimiterPInConfigFile())
// quadricLimiterP = configData->getQuadricLimiterP();
// if (configData->isQuadricLimiterMInConfigFile())
// quadricLimiterM = configData->getQuadricLimiterM();
// if (configData->isQuadricLimiterDInConfigFile())
// quadricLimiterD = configData->getQuadricLimiterD();
// this->setQuadricLimiters(quadricLimiterP, quadricLimiterM, quadricLimiterD);
// //////////////////////////////////////////////////////////////////////////
// //Particles
// if (configData->isCalcParticlesInConfigFile())
// this->setCalcParticles(configData->getCalcParticles());
// else
// this->setCalcParticles(false);
// if (configData->isParticleBasicLevelInConfigFile())
// this->setParticleBasicLevel(configData->getParticleBasicLevel());
// else
// this->setParticleBasicLevel((int)0);
// if (configData->isParticleInitLevelInConfigFile())
// this->setParticleInitLevel(configData->getParticleInitLevel());
// else
// this->setParticleInitLevel((int)0);
// if (configData->isNumberOfParticlesInConfigFile())
// this->setNumberOfParticles(configData->getNumberOfParticles());
// else
// this->setNumberOfParticles((int)0);
// if (configData->isStartXHotWallInConfigFile())
// this->setStartXHotWall(configData->getStartXHotWall());
// else
// this->setStartXHotWall((real)0);
// if (configData->isEndXHotWallInConfigFile())
// this->setEndXHotWall(configData->getEndXHotWall());
// else
// this->setEndXHotWall((real)0);
// //////////////////////////////////////////////////////////////////////////
// //for Multi GPU
// if (this->getNumprocs() > 1)
// {
// //////////////////////////////////////////////////////////////////////////
// //3D domain decomposition
// std::vector<std::string> sendProcNeighborsX, sendProcNeighborsY, sendProcNeighborsZ;
// std::vector<std::string> recvProcNeighborsX, recvProcNeighborsY, recvProcNeighborsZ;
// for (int i = 0; i < this->getNumprocs(); i++)
// {
// sendProcNeighborsX.push_back(gridPath + StringUtil::toString(i) + "Xs.dat");
// sendProcNeighborsY.push_back(gridPath + StringUtil::toString(i) + "Ys.dat");
// sendProcNeighborsZ.push_back(gridPath + StringUtil::toString(i) + "Zs.dat");
// recvProcNeighborsX.push_back(gridPath + StringUtil::toString(i) + "Xr.dat");
// recvProcNeighborsY.push_back(gridPath + StringUtil::toString(i) + "Yr.dat");
// recvProcNeighborsZ.push_back(gridPath + StringUtil::toString(i) + "Zr.dat");
// }
// this->setPossNeighborFilesX(sendProcNeighborsX, "send");
// this->setPossNeighborFilesY(sendProcNeighborsY, "send");
// this->setPossNeighborFilesZ(sendProcNeighborsZ, "send");
// this->setPossNeighborFilesX(recvProcNeighborsX, "recv");
// this->setPossNeighborFilesY(recvProcNeighborsY, "recv");
// this->setPossNeighborFilesZ(recvProcNeighborsZ, "recv");
// }
// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //Restart
// if (configData->isTimeDoCheckPointInConfigFile())
// this->setTimeDoCheckPoint(configData->getTimeDoCheckPoint());
// else
// this->setTimeDoCheckPoint((uint)0);
// if (configData->isTimeDoRestartInConfigFile())
// this->setTimeDoRestart(configData->getTimeDoRestart());
// else
// this->setTimeDoRestart((uint)0);
// if (configData->isDoCheckPointInConfigFile())
// this->setDoCheckPoint(configData->getDoCheckPoint());
// else
// this->setDoCheckPoint(false);
// if (configData->isDoRestartInConfigFile())
// this->setDoRestart(configData->getDoRestart());
// else
// this->setDoRestart(false);
// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// if (configData->isMaxLevelInConfigFile())
// this->setMaxLevel(configData->getMaxLevel());
// else
// this->setMaxLevel((int)1);
// if (configData->isGridXInConfigFile())
// this->setGridX(configData->getGridX());
// else
// this->setGridX(std::vector<int>(this->getMaxLevel()+1, 32));
// if (configData->isGridYInConfigFile())
// this->setGridY(configData->getGridY());
// else
// this->setGridY(std::vector<int>(this->getMaxLevel()+1, 32));
// if (configData->isGridZInConfigFile())
// this->setGridZ(configData->getGridZ());
// else
// this->setGridZ(std::vector<int>(this->getMaxLevel()+1, 32));
// if (configData->isDistXInConfigFile())
// this->setDistX(configData->getDistX());
// else
// this->setDistX(std::vector<int>(this->getMaxLevel()+1, 32));
// if (configData->isDistYInConfigFile())
// this->setDistY(configData->getDistY());
// else
// this->setDistY(std::vector<int>(this->getMaxLevel()+1, 32));
// if (configData->isDistZInConfigFile())
// this->setDistZ(configData->getDistZ());
// else
// this->setDistZ(std::vector<int>(this->getMaxLevel()+1, 32));
// if (configData->isNeedInterfaceInConfigFile())
// this->setNeedInterface(configData->getNeedInterface());
// else
// this->setNeedInterface(std::vector<bool>(6, true));
real forcingX = 0.0;
real forcingY = 0.0;
real forcingZ = 0.0;
if (configData.contains("ForcingX"))
forcingX = configData.getValue<real>("ForcingX");
if (configData.contains("ForcingY"))
forcingY = configData.getValue<real>("ForcingY");
if (configData.contains("ForcingZ"))
forcingZ = configData.getValue<real>("ForcingZ");
this->setForcing(forcingX, forcingY, forcingZ);
//////////////////////////////////////////////////////////////////////////
//quadricLimiters
real quadricLimiterP = (real)0.01;
real quadricLimiterM = (real)0.01;
real quadricLimiterD = (real)0.01;
if (configData.contains("QuadricLimiterP"))
quadricLimiterP = configData.getValue<real>("QuadricLimiterP");
if (configData.contains("QuadricLimiterM"))
quadricLimiterM = configData.getValue<real>("QuadricLimiterM");
if (configData.contains("QuadricLimiterD"))
quadricLimiterD = configData.getValue<real>("QuadricLimiterD");
this->setQuadricLimiters(quadricLimiterP, quadricLimiterM, quadricLimiterD);
//////////////////////////////////////////////////////////////////////////
//Particles
if (configData.contains("calcParticles"))
this->setCalcParticles(configData.getValue<bool>("calcParticles"));
if (configData.contains("baseLevel"))
this->setParticleBasicLevel(configData.getValue<int>("baseLevel"));
if (configData.contains("initLevel"))
this->setParticleInitLevel(configData.getValue<int>("initLevel"));
if (configData.contains("numberOfParticles"))
this->setNumberOfParticles(configData.getValue<int>("numberOfParticles"));
if (configData.contains("startXHotWall"))
this->setEndXHotWall(configData.getValue<real>("startXHotWall"));
if (configData.contains("endXHotWall"))
this->setCalcParticles(configData.getValue<real>("endXHotWall"));
//////////////////////////////////////////////////////////////////////////
//for Multi GPU
if (this->getNumprocs() > 1)
{
//////////////////////////////////////////////////////////////////////////
//3D domain decomposition
std::vector<std::string> sendProcNeighborsX, sendProcNeighborsY, sendProcNeighborsZ;
std::vector<std::string> recvProcNeighborsX, recvProcNeighborsY, recvProcNeighborsZ;
for (int i = 0; i < this->getNumprocs(); i++)
{
sendProcNeighborsX.push_back(gridPath + StringUtil::toString(i) + "Xs.dat");
sendProcNeighborsY.push_back(gridPath + StringUtil::toString(i) + "Ys.dat");
sendProcNeighborsZ.push_back(gridPath + StringUtil::toString(i) + "Zs.dat");
recvProcNeighborsX.push_back(gridPath + StringUtil::toString(i) + "Xr.dat");
recvProcNeighborsY.push_back(gridPath + StringUtil::toString(i) + "Yr.dat");
recvProcNeighborsZ.push_back(gridPath + StringUtil::toString(i) + "Zr.dat");
}
this->setPossNeighborFilesX(sendProcNeighborsX, "send");
this->setPossNeighborFilesY(sendProcNeighborsY, "send");
this->setPossNeighborFilesZ(sendProcNeighborsZ, "send");
this->setPossNeighborFilesX(recvProcNeighborsX, "recv");
this->setPossNeighborFilesY(recvProcNeighborsY, "recv");
this->setPossNeighborFilesZ(recvProcNeighborsZ, "recv");
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Restart
if (configData.contains("TimeDoCheckPoint"))
this->setTimeDoCheckPoint(configData.getValue<uint>("TimeDoCheckPoint"));
if (configData.contains("TimeDoRestart"))
this->setTimeDoRestart(configData.getValue<uint>("TimeDoRestart"));
if (configData.contains("DoCheckPoint"))
this->setDoCheckPoint(configData.getValue<bool>("DoCheckPoint"));
if (configData.contains("DoRestart"))
this->setDoRestart(configData.getValue<bool>("DoRestart"));
// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// // Kernel
// if (configData->isMainKernelInConfigFile())
// this->setMainKernel(configData->getMainKernel());
// else
// this->setMainKernel("CumulantK15Comp");
// if (configData->isMultiKernelOnInConfigFile())
// this->setMultiKernelOn(configData->getMultiKernelOn());
// else
// this->setMultiKernelOn(false);
// if (configData->isMultiKernelLevelInConfigFile())
// this->setMultiKernelLevel(configData->getMultiKernelLevel());
// else if (this->getMultiKernelOn())
// {
// std::vector<int> tmp;
// for (int i = 0; i < this->getMaxLevel()+1; i++)
// {
// tmp.push_back(i);
// }
// this->setMultiKernelLevel(tmp);
// }
// else
// this->setMultiKernelLevel(std::vector<int>(0));
// if (configData->isMultiKernelNameInConfigFile()) {
// std::vector<std::string> kernels;
// for (std::size_t i = 0; i < configData->getMultiKernelName().size(); i++) {
// kernels.push_back(configData->getMultiKernelName().at(i));
// }
// this->setMultiKernel(kernels);
// }
// else if (this->getMultiKernelOn())
// {
// std::vector<std::string> tmp;
// for (int i = 0; i < this->getMaxLevel()+1; i++)
// {
// tmp.push_back("CumulantK15Comp");
// }
// this->setMultiKernel(tmp);
// }
// else {
// std::vector<std::string> tmp;
// this->setMultiKernel(tmp);
// }
// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if (configData.contains("NOGL"))
this->setMaxLevel(configData.getValue<int>("NOGL"));
this->setGridX(std::vector<int>(this->getMaxLevel()+1, 32));
this->setGridY(std::vector<int>(this->getMaxLevel()+1, 32));
this->setGridZ(std::vector<int>(this->getMaxLevel()+1, 32));
this->setDistX(std::vector<int>(this->getMaxLevel()+1, 32));
this->setDistY(std::vector<int>(this->getMaxLevel()+1, 32));
this->setDistZ(std::vector<int>(this->getMaxLevel()+1, 32));
this->setNeedInterface(std::vector<bool>(6, true));
if (configData.contains("GridX"))
this->setGridX(configData.getVector<int>("GridX"));
if (configData.contains("GridY"))
this->setGridY(configData.getVector<int>("GridY"));
if (configData.contains("GridZ"))
this->setGridZ(configData.getVector<int>("GridZ"));
if (configData.contains("DistX"))
this->setDistX(configData.getVector<int>("DistX"));
if (configData.contains("DistY"))
this->setDistY(configData.getVector<int>("DistY"));
if (configData.contains("DistZ"))
this->setDistZ(configData.getVector<int>("DistZ"));
if (configData.contains("NeedInterface"))
this->setNeedInterface(configData.getVector<bool>("NeedInterface"));
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Kernel
if (configData.contains("MainKernelName"))
this->setMainKernel(configData.getValue<std::string>("MainKernelName"));
if (configData.contains("MultiKernelOn"))
this->setMultiKernelOn(configData.getValue<bool>("MultiKernelOn"));
if (configData.contains("MultiKernelLevel"))
this->setMultiKernelLevel(configData.getVector<int>("MultiKernelLevel"));
else if (this->getMultiKernelOn())
{
std::vector<int> tmp;
for (int i = 0; i < this->getMaxLevel()+1; i++)
{
tmp.push_back(i);
}
this->setMultiKernelLevel(tmp);
}
if (configData.contains("MultiKernelName"))
this->setMultiKernel(StringUtil::toStringVector(configData.getValue<std::string>("MultiKernelName")));
else if (this->getMultiKernelOn())
{
std::vector<std::string> tmp;
for (int i = 0; i < this->getMaxLevel()+1; i++)
{
tmp.push_back("CumulantK17Comp");
}
this->setMultiKernel(tmp);
}
}
Parameter::Parameter(SPtr<ConfigData> configData, vf::gpu::Communicator* comm)
......
......@@ -743,16 +743,18 @@ public:
protected:
private:
bool compOn;
bool diffOn;
bool diffOn {false};
bool isF3;
bool calcDragLift, calcCp;
bool writeVeloASCII;
bool calcPlaneConc;
bool calcDragLift {false};
bool calcCp {false};
bool writeVeloASCII {false};
bool calcPlaneConc {false};
bool isBodyForce;
int diffMod;
int coarse, fine, maxlevel;
int diffMod {27};
int maxlevel {0};
int coarse, fine;
int factor_gridNZ;
int D3Qxx;
int D3Qxx {27};
InitCondition ic;
double memsizeGPU;
unsigned int limitOfNodesForVTK;
......@@ -761,8 +763,8 @@ private:
//Kernel
std::string mainKernel;
bool multiKernelOn;
std::string mainKernel {"CumulantK17Comp"};
bool multiKernelOn {false};
std::vector<int> multiKernelLevel;
std::vector<std::string> multiKernel;
......@@ -770,11 +772,13 @@ private:
//////////////////////////////////////////////////////////////////////////
//particles
int particleBasicLevel, particleInitLevel;
int numberOfParticles;
bool calcParticles;
real stickToSolid;
real startXHotWall, endXHotWall;
int particleBasicLevel {0};
int particleInitLevel {0};
int numberOfParticles {0};
bool calcParticles {false};
real stickToSolid {(real) 0.0};
real startXHotWall {(real) 0.0};
real endXHotWall {(real) 0.0};
//////////////////////////////////////////////////////////////////////////
//CUDA random number generation
curandState* devState;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment