diff --git a/apps/cpu/MultiphaseDropletTest/DropletTest.cfg b/apps/cpu/MultiphaseDropletTest/DropletTest.cfg index 78b53897a1977f713ec9b3a0327ac85f3dee3b31..174066574a3a105b3735cf3c36181326cce7d1b0 100644 --- a/apps/cpu/MultiphaseDropletTest/DropletTest.cfg +++ b/apps/cpu/MultiphaseDropletTest/DropletTest.cfg @@ -1,33 +1,33 @@ #pathname = d:/temp/MultiphaseDropletTest -pathname = E:/Multiphase/DropletTest +pathname = E:/Multiphase/DropletTestImpVel-Hesam2 numOfThreads = 4 availMem = 10e9 #Grid -boundingBox = 0 50 0 150 0 50 -blocknx = 10 10 10 +boundingBox = 0 256 512 768 0 3 +blocknx = 16 16 3 dx = 1 refineLevel = 0 #Simulation -uLB = 0#0.01#0.005#0.005 +uLB = 0.01#0.005#0.005 Re = 10 -nuL = 1e-3 #1e-5# 1.0e-5 #!1e-2 -nuG = 1e-6 # 1e-8 # 1.16e-4 #!1e-2 +nuL = 1e-2 #1e-5# 1.0e-5 #!1e-2 +nuG = 0.015811388300841892 #5e-2 #1e-4 # 1e-8 # 1.16e-4 #!1e-2 densityRatio = 10 -sigma = 1.111111111111111e-07 #1e-10 #1e-6 # 1e-5 #4.66e-3 #surface tension 1e-4 ./. 1e-5 -interfaceThickness = 5 -radius = 5 #16 +sigma = 1.0850694444444444e-06 #1e-10 #1e-6 # 1e-5 #4.66e-3 #surface tension 1e-4 ./. 1e-5 +interfaceThickness = 4.096 +radius = 25.6 contactAngle = 110.0 #gravity = 0.0 -gravity = -1.111111111111111e-07 #-5.04e-6 +gravity = -1.0348028606838648e-08 #-5.04e-6 phi_L = 0.0 phi_H = 1.0 Phase-field Relaxation = 0.6 -Mobility = 0.1 # 0.01 ./. 0.08, fine correction of Phase-field Relaxation parameter, to activate it need to change in kernel tauH to tauH1 +Mobility = 0.056 # 0.01 ./. 0.08, fine correction of Phase-field Relaxation parameter, to activate it need to change in kernel tauH to tauH1 logToFile = false @@ -35,8 +35,10 @@ logToFile = false newStart = true restartStep = 100000 -cpStart = 100000 -cpStep = 100000 +cpStart = 1000 +cpStep = 1000 outTime = 100 -endTime = 1000000 \ No newline at end of file +endTime = 10000 + +rStep = 159990 #160000 \ No newline at end of file diff --git a/apps/cpu/MultiphaseDropletTest/droplet.cpp b/apps/cpu/MultiphaseDropletTest/droplet.cpp index 51a1b7be17ba34944be354fa403bab112359806e..2695446006d6c6cd1be439b6ffb3d7347a18ebd6 100644 --- a/apps/cpu/MultiphaseDropletTest/droplet.cpp +++ b/apps/cpu/MultiphaseDropletTest/droplet.cpp @@ -141,18 +141,18 @@ void run(string configname) SPtr<LBMKernel> kernel; //kernel = SPtr<LBMKernel>(new MultiphaseScratchCumulantLBMKernel()); - //kernel = SPtr<LBMKernel>(new MultiphaseCumulantLBMKernel()); - kernel = SPtr<LBMKernel>(new MultiphaseTwoPhaseFieldsPressureFilterLBMKernel()); + kernel = SPtr<LBMKernel>(new MultiphaseCumulantLBMKernel()); + //kernel = SPtr<LBMKernel>(new MultiphaseTwoPhaseFieldsPressureFilterLBMKernel()); - mu::Parser fgr; - fgr.SetExpr("-(rho-rho_l)*g_y"); - fgr.DefineConst("rho_l", rho_l); - fgr.DefineConst("g_y", g_y); + //mu::Parser fgr; + //fgr.SetExpr("-(rho-rho_l)*g_y"); + //fgr.DefineConst("rho_l", rho_l); + //fgr.DefineConst("g_y", g_y); - kernel->setWithForcing(true); - kernel->setForcingX1(0.0); - kernel->setForcingX2(fgr); - kernel->setForcingX3(0.0); + //kernel->setWithForcing(true); + //kernel->setForcingX1(0.0); + //kernel->setForcingX2(fgr); + //kernel->setForcingX3(0.0); kernel->setPhiL(phiL); kernel->setPhiH(phiH); @@ -184,7 +184,7 @@ void run(string configname) grid->setPeriodicX1(true); grid->setPeriodicX2(true); grid->setPeriodicX3(true); - grid->setGhostLayerWidth(2); + grid->setGhostLayerWidth(1); SPtr<Grid3DVisitor> metisVisitor(new MetisPartitioningGridVisitor(comm, MetisPartitioningGridVisitor::LevelBased, D3Q27System::BSW, MetisPartitioner::RECURSIVE)); @@ -306,6 +306,7 @@ void run(string configname) fct2.DefineConst("interfaceThickness", interfaceThickness); MultiphaseInitDistributionsBlockVisitor initVisitor(densityRatio); + //MultiphaseVelocityFormInitDistributionsBlockVisitor initVisitor; initVisitor.setPhi(fct1); initVisitor.setVx1(fct2); grid->accept(initVisitor); @@ -343,12 +344,12 @@ void run(string configname) grid->accept(bcVisitor); - // TwoDistributionsSetConnectorsBlockVisitor setConnsVisitor(comm); - // grid->accept(setConnsVisitor); - - ThreeDistributionsDoubleGhostLayerSetConnectorsBlockVisitor setConnsVisitor(comm); + TwoDistributionsSetConnectorsBlockVisitor setConnsVisitor(comm); grid->accept(setConnsVisitor); + //ThreeDistributionsDoubleGhostLayerSetConnectorsBlockVisitor setConnsVisitor(comm); + //grid->accept(setConnsVisitor); + SPtr<UbScheduler> visSch(new UbScheduler(outTime)); SPtr<WriteMultiphaseQuantitiesCoProcessor> pp(new WriteMultiphaseQuantitiesCoProcessor( grid, visSch, pathname, WbWriterVtkXmlBinary::getInstance(), conv, comm)); diff --git a/src/cpu/VirtualFluidsCore/Visitors/MultiphaseInitDistributionsBlockVisitor.cpp b/src/cpu/VirtualFluidsCore/Visitors/MultiphaseInitDistributionsBlockVisitor.cpp index a59e8d476a07f305aa74f155248f3485eb42c21e..3df7fbcc90c551876b4886e44c85d0bd965346ef 100644 --- a/src/cpu/VirtualFluidsCore/Visitors/MultiphaseInitDistributionsBlockVisitor.cpp +++ b/src/cpu/VirtualFluidsCore/Visitors/MultiphaseInitDistributionsBlockVisitor.cpp @@ -50,13 +50,13 @@ MultiphaseInitDistributionsBlockVisitor::MultiphaseInitDistributionsBlockVisitor this->setRho(0.0); } ////////////////////////////////////////////////////////////////////////// -MultiphaseInitDistributionsBlockVisitor::MultiphaseInitDistributionsBlockVisitor( LBMReal densityRatio, LBMReal vx1, LBMReal vx2, LBMReal vx3) +MultiphaseInitDistributionsBlockVisitor::MultiphaseInitDistributionsBlockVisitor( LBMReal densityRatio, LBMReal vx1, LBMReal vx2, LBMReal vx3, LBMReal rho) : Block3DVisitor(0, Grid3DSystem::MAXLEVEL), densityRatio(densityRatio) { this->setVx1(vx1); this->setVx2(vx2); this->setVx3(vx3); -} + this->setRho(rho);} ////////////////////////////////////////////////////////////////////////// void MultiphaseInitDistributionsBlockVisitor::setVx1( const mu::Parser& parser) { @@ -194,7 +194,7 @@ void MultiphaseInitDistributionsBlockVisitor::visit(const SPtr<Grid3D> grid, SPt p1 = 0.0; - //p1 = muRho.Eval(); + p1 = muRho.Eval(); vx1 = muVx1.Eval(); vx2 = muVx2.Eval(); vx3 = muVx3.Eval(); @@ -220,8 +220,10 @@ void MultiphaseInitDistributionsBlockVisitor::visit(const SPtr<Grid3D> grid, SPt LBMReal gamma = WEIGTH[dir]*(3*velProd + 4.5*velSq1 - 1.5*(vx1Sq+vx2Sq+vx3Sq)); feq[dir] = rho*WEIGTH[dir]*(1 + 3*velProd + 4.5*velSq1 - 1.5*(vx1Sq+vx2Sq+vx3Sq)); - //geq[dir] = p1*WEIGTH1[dir] + gamma; - geq[dir] = p1*WEIGTH[dir]/(rho*UbMath::c1o3) + gamma*rho; + //geq[dir] = p1*WEIGTH[dir] + gamma; + //geq[dir] = p1*WEIGTH[dir]/(rho*UbMath::c1o3) + gamma*rho; + //geq[dir] = (p1*WEIGTH[dir]/(rho*UbMath::c1o3) + gamma*rho)*UbMath::c1o3; + geq[dir] = (gamma*rho)*UbMath::c1o3; } diff --git a/src/cpu/VirtualFluidsCore/Visitors/MultiphaseInitDistributionsBlockVisitor.h b/src/cpu/VirtualFluidsCore/Visitors/MultiphaseInitDistributionsBlockVisitor.h index e351b901ce63a89a5d422a7b508c302332c97b66..6ff60387daeef966da6143ef459fa7b7d247fbd5 100644 --- a/src/cpu/VirtualFluidsCore/Visitors/MultiphaseInitDistributionsBlockVisitor.h +++ b/src/cpu/VirtualFluidsCore/Visitors/MultiphaseInitDistributionsBlockVisitor.h @@ -56,7 +56,7 @@ public: //! \param vx1 - velocity in x //! \param vx2 - velocity in y //! \param vx3 - velocity in z - MultiphaseInitDistributionsBlockVisitor( LBMReal densityRatio, LBMReal vx1=0.0, LBMReal vx2=0.0, LBMReal vx3=0.0); + MultiphaseInitDistributionsBlockVisitor( LBMReal densityRatio, LBMReal vx1=0.0, LBMReal vx2=0.0, LBMReal vx3=0.0, LBMReal rho=0.0); ////////////////////////////////////////////////////////////////////////// //automatic vars are: x1,x2, x3 //ussage example: setVx1("x1*0.01+x2*0.003")