diff --git a/.gitignore b/.gitignore index a5b8d0a8b8c6dd4f119e9dd5a6a7b7678eb43eb3..4879d82bb2c5ce51f43be6ea9fb183cd6e28097c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ # build directories +buildDev/ build/ buildDev/ bin/ diff --git a/apps/cpu/HerschelBulkleyModel/hbf1.cfg b/apps/cpu/HerschelBulkleyModel/hbf1.cfg index b5f8ef94d68a4b7355778d309df2c42c94a6956f..2eed172d57ee45a3c8884de41f67194381ee746a 100644 --- a/apps/cpu/HerschelBulkleyModel/hbf1.cfg +++ b/apps/cpu/HerschelBulkleyModel/hbf1.cfg @@ -1,4 +1,6 @@ -pathname = d:/temp/BinghamNewConvergenceAcousticScaling_it1/128 +pathname = d:/temp/BinghamNewNewConvergenceAcousticScaling_20it/256 + +#pathname = d:/temp/Newton45/32 numOfThreads = 4 availMem = 8e9 @@ -18,15 +20,18 @@ blocknx = 2 32 2 boundingBox = 2 32 2 deltax = 1 -#nuLB = 0.05 -forcing = 8e-6 +scaleFactor = 8 + +nuLB = 0.005 +forcing = 6e-9 +tau0 = 3e-8 + #n = 0.8 -#tau0 = 3e-6 velocity = 1e-3 n = 0.4 Re = 1 Bn = 0.01 -outTime = 10000 -endTime = 300000 \ No newline at end of file +outTime = 1000 +endTime = 1000000 \ No newline at end of file diff --git a/apps/cpu/HerschelBulkleyModel/hbflow.cpp b/apps/cpu/HerschelBulkleyModel/hbflow.cpp index e0a24aba93819245049f7708150aa925ec605e3d..d83f0f6d0494e2da4e1771273d14b447c13850f9 100644 --- a/apps/cpu/HerschelBulkleyModel/hbflow.cpp +++ b/apps/cpu/HerschelBulkleyModel/hbflow.cpp @@ -17,7 +17,7 @@ void bflow(string configname) int numOfThreads = config.getValue<int>("numOfThreads"); vector<int> blocknx = config.getVector<int>("blocknx"); vector<double> boundingBox = config.getVector<double>("boundingBox"); - //double nuLB = config.getValue<double>("nuLB"); + double nuLB = config.getValue<double>("nuLB"); double endTime = config.getValue<double>("endTime"); double outTime = config.getValue<double>("outTime"); double availMem = config.getValue<double>("availMem"); @@ -31,11 +31,12 @@ void bflow(string configname) double forcing = config.getValue<double>("forcing"); //double n = config.getValue<double>("n"); //double k = config.getValue<double>("k"); - //double tau0 = config.getValue<double>("tau0"); + double tau0 = config.getValue<double>("tau0"); double velocity = config.getValue<double>("velocity"); double n = config.getValue<double>("n"); double Re = config.getValue<double>("Re"); double Bn = config.getValue<double>("Bn"); + double scaleFactor = config.getValue<double>("scaleFactor"); SPtr<Communicator> comm = MPICommunicator::getInstance(); int myid = comm->getProcessID(); @@ -63,13 +64,13 @@ void bflow(string configname) SPtr<LBMUnitConverter> conv = SPtr<LBMUnitConverter>(new LBMUnitConverter()); //bounding box - //double g_minX1 = 0; - //double g_minX2 = 0; - //double g_minX3 = 0; + //double g_minX1 = -0.707107+1.0; + //double g_minX2 = -1.41421+1.0; + //double g_minX3 = 1.0; //double g_maxX1 = boundingBox[0]; //double g_maxX2 = boundingBox[1]; - //double g_maxX3 = boundingBox[2]; + //double g_maxX3 = boundingBox[2]+1.0; double g_minX1 = 0.0; double g_minX2 = -boundingBox[1]/2.0; @@ -79,6 +80,8 @@ void bflow(string configname) double g_maxX2 = boundingBox[1]/2.0; double g_maxX3 = boundingBox[2]/2.0; + + double blockLength = 3.0 * deltax; double h = (g_maxX2) / 2.0; @@ -93,7 +96,7 @@ void bflow(string configname) double U = velocity; double Gamma = U / d; - double scaleFactor = 4.0; + //double scaleFactor = 2.0; // Diffusive Scaling @@ -105,13 +108,13 @@ void bflow(string configname) // Acoustic Scaling - double k = 0.005 * scaleFactor; - double tau0 = 3e-5; + double k = nuLB * scaleFactor; + //double tau0 = 3e-5; forcing /= scaleFactor; endTime *= scaleFactor; deltax /= scaleFactor; - outTime = endTime; + //outTime = endTime; double beta = 14; double c = 10; // 1.0 / 6.0; @@ -130,11 +133,11 @@ void bflow(string configname) SPtr<BCAdapter> noSlipBCAdapter(new NoSlipBCAdapter()); //noSlipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new HerschelBulkleyModelNoSlipBCAlgorithm())); //noSlipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new PowellEyringModelNoSlipBCAlgorithm())); - noSlipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new BinghamModelNoSlipBCAlgorithm())); + //noSlipBCAdapter->setBcAlgorithm(SPtr<BCAlgorithm>(new BinghamModelNoSlipBCAlgorithm())); //BS visitor BoundaryConditionsBlockVisitor bcVisitor; - bcVisitor.addBC(noSlipBCAdapter); + //bcVisitor.addBC(noSlipBCAdapter); SPtr<BCProcessor> bcProc; bcProc = SPtr<BCProcessor>(new BCProcessor()); @@ -142,6 +145,11 @@ void bflow(string configname) //SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new HerschelBulkleyModelLBMKernel()); SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new RheologyK17LBMKernel()); //SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new BinghamModelLBMKernel()); + //SPtr<LBMKernel> kernel = SPtr<LBMKernel>(new CompressibleCumulant4thOrderViscosityLBMKernel()); + + //double forcingXY = forcing / sqrt(2.0); + //kernel->setForcingX1(forcingXY); + //kernel->setForcingX2(forcingXY); kernel->setForcingX1(forcing); kernel->setWithForcing(true); kernel->setBCProcessor(bcProc); @@ -192,6 +200,13 @@ void bflow(string configname) GbCuboid3DPtr addWallYmax(new GbCuboid3D(g_minX1 - blockLength, g_maxX2, g_minX3 - blockLength, g_maxX1 + blockLength, g_maxX2 + blockLength, g_maxX3 + blockLength)); if (myid == 0) GbSystem3D::writeGeoObject(addWallYmax.get(), pathname + "/geo/addWallYmax", WbWriterVtkXmlASCII::getInstance()); + //GbCuboid3DPtr addWallXY(new GbCuboid3D(g_minX1 - 0.5*deltax, g_minX2 - 0.5 * deltax, g_minX3 - 0.5 * deltax, g_maxX1 + 0.5 * deltax, g_maxX2 + 0.5 * deltax, g_maxX3 + 0.5 * deltax)); + //if (myid == 0) GbSystem3D::writeGeoObject(addWallXY.get(), pathname + "/geo/addWallXY", WbWriterVtkXmlASCII::getInstance()); + + //SPtr<GbTriFaceMesh3D> wall45(new GbTriFaceMesh3D()); + //wall45->readMeshFromSTLFile("d:/Projects/TRR277/Project/WP1/PF45/Geo/wall45_ASCII.stl", true); + + //wall interactors //SPtr<D3Q27Interactor> addWallZminInt(new D3Q27Interactor(addWallZmin, grid, noSlipBCAdapter, Interactor3D::SOLID)); //SPtr<D3Q27Interactor> addWallZmaxInt(new D3Q27Interactor(addWallZmax, grid, noSlipBCAdapter, Interactor3D::SOLID)); @@ -199,9 +214,11 @@ void bflow(string configname) SPtr<D3Q27Interactor> addWallYminInt(new D3Q27Interactor(addWallYmin, grid, noSlipBCAdapter, Interactor3D::SOLID)); SPtr<D3Q27Interactor> addWallYmaxInt(new D3Q27Interactor(addWallYmax, grid, noSlipBCAdapter, Interactor3D::SOLID)); + //SPtr<D3Q27TriFaceMeshInteractor> wall45Int(new D3Q27TriFaceMeshInteractor(wall45, grid, noSlipBCAdapter, Interactor3D::SOLID)); + //////////////////////////////////////////// //METIS - SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::BSW, MetisPartitioner::KWAY)); + SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::BSW, MetisPartitioner::RECURSIVE)); //////////////////////////////////////////// /////delete solid blocks if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - start"); @@ -210,6 +227,7 @@ void bflow(string configname) //intHelper.addInteractor(addWallZmaxInt); intHelper.addInteractor(addWallYminInt); intHelper.addInteractor(addWallYmaxInt); + //intHelper.addInteractor(wall45Int); intHelper.selectBlocks(); if (myid == 0) UBLOG(logINFO, "deleteSolidBlocks - end"); ////////////////////////////////////// diff --git a/apps/cpu/rheometer/rheometer.cfg b/apps/cpu/rheometer/rheometer.cfg index c65d950969e079a9874aa14ed0a140ebce094dab..f5d9fef26c61f9756875823c4b8a809d8bbb94e8 100644 --- a/apps/cpu/rheometer/rheometer.cfg +++ b/apps/cpu/rheometer/rheometer.cfg @@ -1,4 +1,4 @@ -outputPath = d:/temp/rheometer/rheometerBinghamqQBB/rheometerBingham_nu_1.5e-3_newBC_K17 +outputPath = d:/temp/rheometer/rheometerBinghamqQBB/rheometerBingham_tau_20e-7_nu_1.5e-3_new_lim viscosityPath = d:/Projects/VirtualFluidsCombined/apps/cpu/rheometer @@ -15,11 +15,11 @@ deltax = 1 refineLevel = 0 -OmegaLB = 1e-4 -tau0 = 5e-7 +OmegaLB = 4e-5 +tau0 = 20e-7 -resolution = 128 -scaleFactor = 4 +resolution = 32 +scaleFactor = 1 newStart = true restartStep = 100000 diff --git a/apps/cpu/rheometer/rheometer.cpp b/apps/cpu/rheometer/rheometer.cpp index 47851a944eb55283b599cce826933bcc4a107989..96c50e5c3c2640ac76b8582ab24432316c130397 100644 --- a/apps/cpu/rheometer/rheometer.cpp +++ b/apps/cpu/rheometer/rheometer.cpp @@ -67,7 +67,7 @@ void bflow(string configname) OmegaLB /= scaleFactor; nuLB *=scaleFactor; endTime *= scaleFactor; - outTime = endTime; + //outTime = endTime; cpStart = endTime; cpStep = endTime; diff --git a/src/cpu/VirtualFluidsCore/LBM/RheologyK17LBMKernel.cpp b/src/cpu/VirtualFluidsCore/LBM/RheologyK17LBMKernel.cpp index 9df968e1219d44083462b5fb3edac061cd97d099..42c3240077e4b6cc3e3a279608bca0325b304b8c 100644 --- a/src/cpu/VirtualFluidsCore/LBM/RheologyK17LBMKernel.cpp +++ b/src/cpu/VirtualFluidsCore/LBM/RheologyK17LBMKernel.cpp @@ -616,7 +616,7 @@ void RheologyK17LBMKernel::calculate(int step) //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //non Newtonian fluid collision factor - LBMReal shearRate = sqrt(dxux * dxux + dyuy * dyuy + dzuz * dzuz + Dxy * Dxy + Dxz * Dxz + Dyz * Dyz) / (drho + c1); + LBMReal shearRate = sqrt(c2 * (dxux * dxux + dyuy * dyuy + dzuz * dzuz) + Dxy * Dxy + Dxz * Dxz + Dyz * Dyz) / (drho + c1); //omega = getThyxotropyCollFactor(omega, shearRate, rho); //omega = Thixotropy::getHerschelBulkleyCollFactor(omega, shearRate, drho); omega = Thixotropy::getBinghamCollFactor(omega, shearRate, drho); @@ -639,7 +639,7 @@ void RheologyK17LBMKernel::calculate(int step) if(omega < c1) { omega = c1; } //arbitrary limit (24.09.2020) - omega = collFactor; + //omega = collFactor; //magic parameter for rheology LBMReal a = 10; diff --git a/src/cpu/VirtualFluidsCore/LBM/Thixotropy.h b/src/cpu/VirtualFluidsCore/LBM/Thixotropy.h index 0b2aee9469f371d3ab114570297085c08e6fb05e..a5ad23dabe7f4d048e854ac9d42a1674d73458a5 100644 --- a/src/cpu/VirtualFluidsCore/LBM/Thixotropy.h +++ b/src/cpu/VirtualFluidsCore/LBM/Thixotropy.h @@ -71,7 +71,7 @@ inline LBMReal Thixotropy::getBinghamCollFactor(LBMReal omegaInf, LBMReal shearR LBMReal omega = omegaInf*cs2 * shearRate * rho / (cs2 * shearRate * rho + omegaInf * tau0); LBMReal shearRateNew = shearRate * (omega / omegaInf); - for (int i = 0; i < 3; i++) + for (int i = 0; i < 20; i++) { omega = omegaInf * cs2 * shearRateNew * rho / (cs2 * shearRateNew * rho + omegaInf * tau0); shearRateNew = shearRate * (omega / omegaInf);