diff --git a/common/ScaLBL.h b/common/ScaLBL.h index 42c51525..007bb35f 100644 --- a/common/ScaLBL.h +++ b/common/ScaLBL.h @@ -87,6 +87,16 @@ extern "C" void ScaLBL_D3Q19_AAodd_GreyscaleColor(int *d_neighborList, int *Map, double rhoA, double rhoB, double tauA, double tauB, double tauA_eff,double tauB_eff, double alpha, double beta, double Fx, double Fy, double Fz, int strideY, int strideZ, int start, int finish, int Np); +extern "C" void ScaLBL_D3Q19_AAeven_GreyscaleColor_CP(int *Map, double *dist, double *Aq, double *Bq, double *Den, + double *Phi,double *GreySolidGrad, double *Poros,double *Perm,double *Vel, double *Pressure, + double rhoA, double rhoB, double tauA, double tauB,double tauA_eff,double tauB_eff, double alpha, double beta, + double Fx, double Fy, double Fz, bool RecoloringOff, double W, int strideY, int strideZ, int start, int finish, int Np); + +extern "C" void ScaLBL_D3Q19_AAodd_GreyscaleColor_CP(int *d_neighborList, int *Map, double *dist, double *Aq, double *Bq, double *Den, + double *Phi, double *GreySolidGrad, double *Poros,double *Perm,double *Vel,double *Pressure, + double rhoA, double rhoB, double tauA, double tauB, double tauA_eff,double tauB_eff, double alpha, double beta, + double Fx, double Fy, double Fz, bool RecoloringOff, double W, int strideY, int strideZ, int start, int finish, int Np); + // ION TRANSPORT MODEL extern "C" void ScaLBL_D3Q7_AAodd_IonConcentration(int *neighborList, double *dist, double *Den, int start, int finish, int Np); diff --git a/cuda/GreyscaleColor.cu b/cuda/GreyscaleColor.cu index 0cc49bcd..906782c9 100644 --- a/cuda/GreyscaleColor.cu +++ b/cuda/GreyscaleColor.cu @@ -1452,7 +1452,7 @@ __global__ void dvc_ScaLBL_D3Q19_AAeven_GreyscaleColor(int *Map, double *dist, __global__ void dvc_ScaLBL_D3Q19_AAodd_GreyscaleColor_CP(int *neighborList, int *Map, double *dist, double *Aq, double *Bq, double *Den, double *Phi, double *GreySolidGrad, double *Poros,double *Perm, double *Velocity, double *Pressure, double rhoA, double rhoB, double tauA, double tauB,double tauA_eff,double tauB_eff,double alpha, double beta, - double Gx, double Gy, double Gz, bool RecoloringOff, int strideY, int strideZ, int start, int finish, int Np){ + double Gx, double Gy, double Gz, bool RecoloringOff, double W, int strideY, int strideZ, int start, int finish, int Np){ int n,nn,ijk,nread; int nr1,nr2,nr3,nr4,nr5,nr6; @@ -1472,12 +1472,12 @@ __global__ void dvc_ScaLBL_D3Q19_AAodd_GreyscaleColor_CP(int *neighborList, int double a1,b1,a2,b2,nAB,delta; double C,nx,ny,nz; //color gradient magnitude and direction double phi,tau,rho0,rlx_setA,rlx_setB; - double Fcpx,Fcpy,Fcpz; + double cp;//capillary pressure penalty - pressure term //double GeoFun=0.0;//geometric function from Guo's PRE 66, 036304 (2002) double porosity; double perm;//voxel permeability - double c0, c1; //Guo's model parameters + //double c0, c1; //Guo's model parameters double tau_eff; double mu_eff;//kinematic viscosity double nx_gs,ny_gs,nz_gs;//grey-solid color gradient @@ -1606,16 +1606,6 @@ __global__ void dvc_ScaLBL_D3Q19_AAodd_GreyscaleColor_CP(int *neighborList, int nx = nx/ColorMag; ny = ny/ColorMag; nz = nz/ColorMag; - //----------- Introduce capillary penalty force ------------------------- - //NOTE: apply only to grey nodes - Fcpx = 0.5*alpha*C*W/sqrt(perm)*nx; - Fcpy = 0.5*alpha*C*W/sqrt(perm)*ny; - Fcpz = 0.5*alpha*C*W/sqrt(perm)*nz; - if (porosity==1.0){ - Fcpx = 0.0; - Fcpy = 0.0; - Fcpz = 0.0; - } // q=0 fq = dist[n]; @@ -1939,14 +1929,14 @@ __global__ void dvc_ScaLBL_D3Q19_AAodd_GreyscaleColor_CP(int *neighborList, int m18 -= fq; //// Compute greyscale related parameters - ux = (jx/rho0+0.5*porosity*Gx+0.5*Fcpx/rho0)/(1.0+0.5*porosity*mu_eff/perm); - uy = (jy/rho0+0.5*porosity*Gy+0.5*Fcpy/rho0)/(1.0+0.5*porosity*mu_eff/perm); - uz = (jz/rho0+0.5*porosity*Gz+0.5*Fcpz/rho0)/(1.0+0.5*porosity*mu_eff/perm); + ux = (jx/rho0+0.5*porosity*Gx)/(1.0+0.5*porosity*mu_eff/perm); + uy = (jy/rho0+0.5*porosity*Gy)/(1.0+0.5*porosity*mu_eff/perm); + uz = (jz/rho0+0.5*porosity*Gz)/(1.0+0.5*porosity*mu_eff/perm); //Update the total force to include linear (Darcy) and nonlinear (Forchheimer) drags due to the porous medium - Fx = rho0*(-porosity*mu_eff/perm*ux + porosity*Gx)+Fcpx; - Fy = rho0*(-porosity*mu_eff/perm*uy + porosity*Gy)+Fcpy; - Fz = rho0*(-porosity*mu_eff/perm*uz + porosity*Gz)+Fcpz; + Fx = rho0*(-porosity*mu_eff/perm*ux + porosity*Gx); + Fy = rho0*(-porosity*mu_eff/perm*uy + porosity*Gy); + Fz = rho0*(-porosity*mu_eff/perm*uz + porosity*Gz); if (porosity==1.0){ Fx=rho0*(porosity*Gx); Fy=rho0*(porosity*Gy); @@ -1960,6 +1950,14 @@ __global__ void dvc_ScaLBL_D3Q19_AAodd_GreyscaleColor_CP(int *neighborList, int //Pressure[n] = rho/3.f/porosity; Pressure[n] = rho/3.f; + //----------- Introduce capillary penalty force ------------------------- + //NOTE: apply only to grey nodes + cp = 0.1*tanh(W*alpha*phi/sqrt(perm));//the extra factor of 0.1 is to make sure cp is bounded within [-0.1,0.1] + if (porosity==1.0){ + cp = 0.0; + } + rho += cp;//pressure perturbation + //........................................................................ //..............carry out relaxation process.............................. //..........Toelke, Fruediger et. al. 2006................................ @@ -2220,7 +2218,7 @@ __global__ void dvc_ScaLBL_D3Q19_AAodd_GreyscaleColor_CP(int *neighborList, int __global__ void dvc_ScaLBL_D3Q19_AAeven_GreyscaleColor_CP(int *Map, double *dist, double *Aq, double *Bq, double *Den, double *Phi, double *GreySolidGrad, double *Poros,double *Perm, double *Velocity, double *Pressure, double rhoA, double rhoB, double tauA, double tauB,double tauA_eff,double tauB_eff, double alpha, double beta, - double Gx, double Gy, double Gz, bool RecoloringOff, int strideY, int strideZ, int start, int finish, int Np){ + double Gx, double Gy, double Gz, bool RecoloringOff, double W, int strideY, int strideZ, int start, int finish, int Np){ int ijk,nn,n; double fq; // conserved momemnts @@ -2235,12 +2233,12 @@ __global__ void dvc_ScaLBL_D3Q19_AAeven_GreyscaleColor_CP(int *Map, double *dis double a1,b1,a2,b2,nAB,delta; double C,nx,ny,nz; //color gradient magnitude and direction double phi,tau,rho0,rlx_setA,rlx_setB; - double Fcpx,Fcpy,Fcpz; + double cp;//capillary pressure penalty - pressure term //double GeoFun=0.0;//geometric function from Guo's PRE 66, 036304 (2002) double porosity; double perm;//voxel permeability - double c0, c1; //Guo's model parameters + //double c0, c1; //Guo's model parameters double tau_eff; double mu_eff;//kinematic viscosity double nx_gs,ny_gs,nz_gs;//grey-solid color gradient @@ -2640,30 +2638,19 @@ __global__ void dvc_ScaLBL_D3Q19_AAeven_GreyscaleColor_CP(int *Map, double *dis m17 -= fq; m18 -= fq; - // Compute greyscale related parameters - c0 = 0.5*(1.0+porosity*0.5*mu_eff/perm); - if (porosity==1.0) c0 = 0.5;//i.e. apparent pore nodes - //GeoFun = 1.75/sqrt(150.0*porosity*porosity*porosity); - c1 = porosity*0.5*GeoFun/sqrt(perm); - if (porosity==1.0) c1 = 0.0;//i.e. apparent pore nodes - - vx = jx/rho0+0.5*(porosity*Gx); - vy = jy/rho0+0.5*(porosity*Gy); - vz = jz/rho0+0.5*(porosity*Gz); - v_mag=sqrt(vx*vx+vy*vy+vz*vz); - ux = vx/(c0+sqrt(c0*c0+c1*v_mag)); - uy = vy/(c0+sqrt(c0*c0+c1*v_mag)); - uz = vz/(c0+sqrt(c0*c0+c1*v_mag)); - u_mag=sqrt(ux*ux+uy*uy+uz*uz); + //// Compute greyscale related parameters + ux = (jx/rho0+0.5*porosity*Gx)/(1.0+0.5*porosity*mu_eff/perm); + uy = (jy/rho0+0.5*porosity*Gy)/(1.0+0.5*porosity*mu_eff/perm); + uz = (jz/rho0+0.5*porosity*Gz)/(1.0+0.5*porosity*mu_eff/perm); //Update the total force to include linear (Darcy) and nonlinear (Forchheimer) drags due to the porous medium - Fx = rho0*(-porosity*mu_eff/perm*ux - porosity*GeoFun/sqrt(perm)*u_mag*ux + porosity*Gx); - Fy = rho0*(-porosity*mu_eff/perm*uy - porosity*GeoFun/sqrt(perm)*u_mag*uy + porosity*Gy); - Fz = rho0*(-porosity*mu_eff/perm*uz - porosity*GeoFun/sqrt(perm)*u_mag*uz + porosity*Gz); + Fx = rho0*(-porosity*mu_eff/perm*ux + porosity*Gx); + Fy = rho0*(-porosity*mu_eff/perm*uy + porosity*Gy); + Fz = rho0*(-porosity*mu_eff/perm*uz + porosity*Gz); if (porosity==1.0){ - Fx=rho0*(Gx); - Fy=rho0*(Gy); - Fz=rho0*(Gz); + Fx=rho0*(porosity*Gx); + Fy=rho0*(porosity*Gy); + Fz=rho0*(porosity*Gz); } // write the velocity @@ -2673,6 +2660,14 @@ __global__ void dvc_ScaLBL_D3Q19_AAeven_GreyscaleColor_CP(int *Map, double *dis //Pressure[n] = rho/3.f/porosity; Pressure[n] = rho/3.f; + //----------- Introduce capillary penalty force ------------------------- + //NOTE: apply only to grey nodes + cp = 0.1*tanh(W*alpha*phi/sqrt(perm));//the extra factor of 0.1 is to make sure cp is bounded within [-0.1,0.1] + if (porosity==1.0){ + cp = 0.0; + } + rho += cp;//pressure perturbation + //........................................................................ //..............carry out relaxation process.............................. //..........Toelke, Fruediger et. al. 2006................................ @@ -2854,6 +2849,7 @@ __global__ void dvc_ScaLBL_D3Q19_AAeven_GreyscaleColor_CP(int *Map, double *dis // Cq = {1,0,0}, {0,1,0}, {0,0,1} delta = beta*nA*nB*nAB*0.1111111111111111*nx; if (!(nA*nB*nAB>0)) delta=0; + if (RecoloringOff==true && porosity !=1.0) delta=0; a1 = nA*(0.1111111111111111*(1+4.5*ux))+delta; b1 = nB*(0.1111111111111111*(1+4.5*ux))-delta; a2 = nA*(0.1111111111111111*(1-4.5*ux))-delta; @@ -2869,6 +2865,7 @@ __global__ void dvc_ScaLBL_D3Q19_AAeven_GreyscaleColor_CP(int *Map, double *dis // Cq = {0,1,0} delta = beta*nA*nB*nAB*0.1111111111111111*ny; if (!(nA*nB*nAB>0)) delta=0; + if (RecoloringOff==true && porosity !=1.0) delta=0; a1 = nA*(0.1111111111111111*(1+4.5*uy))+delta; b1 = nB*(0.1111111111111111*(1+4.5*uy))-delta; a2 = nA*(0.1111111111111111*(1-4.5*uy))-delta; @@ -2883,6 +2880,7 @@ __global__ void dvc_ScaLBL_D3Q19_AAeven_GreyscaleColor_CP(int *Map, double *dis // Cq = {0,0,1} delta = beta*nA*nB*nAB*0.1111111111111111*nz; if (!(nA*nB*nAB>0)) delta=0; + if (RecoloringOff==true && porosity !=1.0) delta=0; a1 = nA*(0.1111111111111111*(1+4.5*uz))+delta; b1 = nB*(0.1111111111111111*(1+4.5*uz))-delta; a2 = nA*(0.1111111111111111*(1-4.5*uz))-delta; @@ -4448,6 +4446,37 @@ extern "C" void ScaLBL_PhaseField_InitFromRestart(double *Den, double *Aq, doubl printf("CUDA error in ScaLBL_PhaseField_InitFromRestart: %s \n",cudaGetErrorString(err)); } } + +//Model-1 & 4 with capillary pressure penalty +extern "C" void ScaLBL_D3Q19_AAeven_GreyscaleColor_CP(int *Map, double *dist, double *Aq, double *Bq, double *Den, + double *Phi,double *GreySolidGrad, double *Poros,double *Perm,double *Vel, double *Pressure, + double rhoA, double rhoB, double tauA, double tauB,double tauA_eff,double tauB_eff, double alpha, double beta, + double Fx, double Fy, double Fz, bool RecoloringOff, double W, int strideY, int strideZ, int start, int finish, int Np){ + + dvc_ScaLBL_D3Q19_AAeven_GreyscaleColor_CP<<>>(Map, dist, Aq, Bq, Den, Phi, GreySolidGrad, Poros, Perm, Vel, Pressure, + rhoA, rhoB, tauA, tauB, tauA_eff, tauB_eff, alpha, beta, Fx, Fy, Fz, RecoloringOff, W, strideY, strideZ, start, finish, Np); + cudaError_t err = cudaGetLastError(); + if (cudaSuccess != err){ + printf("CUDA error in ScaLBL_D3Q19_AAeven_GreyscaleColor_CP: %s \n",cudaGetErrorString(err)); + } + +} + +//Model-1 & 4 with capillary pressure penalty +extern "C" void ScaLBL_D3Q19_AAodd_GreyscaleColor_CP(int *d_neighborList, int *Map, double *dist, double *Aq, double *Bq, double *Den, + double *Phi, double *GreySolidGrad, double *Poros,double *Perm,double *Vel,double *Pressure, + double rhoA, double rhoB, double tauA, double tauB, double tauA_eff,double tauB_eff, double alpha, double beta, + double Fx, double Fy, double Fz, bool RecoloringOff, double W, int strideY, int strideZ, int start, int finish, int Np){ + + dvc_ScaLBL_D3Q19_AAodd_GreyscaleColor_CP<<>>(d_neighborList, Map, dist, Aq, Bq, Den, Phi, GreySolidGrad, Poros, Perm,Vel,Pressure, + rhoA, rhoB, tauA, tauB, tauA_eff, tauB_eff,alpha, beta, Fx, Fy, Fz, RecoloringOff, W, strideY, strideZ, start, finish, Np); + + cudaError_t err = cudaGetLastError(); + if (cudaSuccess != err){ + printf("CUDA error in ScaLBL_D3Q19_AAodd_GreyscaleColor_CP: %s \n",cudaGetErrorString(err)); + } +} + ////Model-2&3 //extern "C" void ScaLBL_D3Q19_AAeven_GreyscaleColor(int *Map, double *dist, double *Aq, double *Bq, double *Den, // double *Phi,double *GreySolidGrad, double *Poros,double *Perm,double *Vel, diff --git a/models/GreyscaleColorModel.cpp b/models/GreyscaleColorModel.cpp index 5d2b4d07..d5ecea2d 100644 --- a/models/GreyscaleColorModel.cpp +++ b/models/GreyscaleColorModel.cpp @@ -17,7 +17,7 @@ void DeleteArray( const TYPE *p ) ScaLBL_GreyscaleColorModel::ScaLBL_GreyscaleColorModel(int RANK, int NP, const Utilities::MPI& COMM): rank(RANK), nprocs(NP), Restart(0),timestep(0),timestepMax(0),tauA(0),tauB(0),tauA_eff(0),tauB_eff(0),rhoA(0),rhoB(0),alpha(0),beta(0), -Fx(0),Fy(0),Fz(0),flux(0),din(0),dout(0),inletA(0),inletB(0),outletA(0),outletB(0),GreyPorosity(0), +Fx(0),Fy(0),Fz(0),flux(0),din(0),dout(0),inletA(0),inletB(0),outletA(0),outletB(0),GreyPorosity(0),RecoloringOff(0),W(0), Nx(0),Ny(0),Nz(0),N(0),Np(0),nprocx(0),nprocy(0),nprocz(0),BoundaryCondition(0),Lx(0),Ly(0),Lz(0),comm(COMM) { REVERSE_FLOW_DIRECTION = false; @@ -43,6 +43,8 @@ void ScaLBL_GreyscaleColorModel::ReadParams(string filename){ Restart=false; din=dout=1.0; flux=0.0; + RecoloringOff = false; + W=1.0; // Color Model parameters if (greyscaleColor_db->keyExists( "timestepMax" )){ @@ -85,6 +87,12 @@ void ScaLBL_GreyscaleColorModel::ReadParams(string filename){ if (greyscaleColor_db->keyExists( "flux" )){ flux = greyscaleColor_db->getScalar( "flux" ); } + if (greyscaleColor_db->keyExists( "RecoloringOff" )){ + RecoloringOff = greyscaleColor_db->getScalar( "RecoloringOff" ); + } + if (greyscaleColor_db->keyExists( "W" )){ + W = greyscaleColor_db->getScalar( "W" ); + } inletA=1.f; inletB=0.f; outletA=0.f; @@ -943,10 +951,14 @@ void ScaLBL_GreyscaleColorModel::Run(){ } // Halo exchange for phase field ScaLBL_Comm_Regular->SendHalo(Phi); - //Model-1&4 - ScaLBL_D3Q19_AAodd_GreyscaleColor(NeighborList, dvcMap, fq, Aq, Bq, Den, Phi,GreySolidGrad,Porosity_dvc,Permeability_dvc,Velocity,Pressure, + //Model-1&4 with capillary pressure penalty for grey nodes + ScaLBL_D3Q19_AAodd_GreyscaleColor_CP(NeighborList, dvcMap, fq, Aq, Bq, Den, Phi,GreySolidGrad,Porosity_dvc,Permeability_dvc,Velocity,Pressure, rhoA, rhoB, tauA, tauB,tauA_eff, tauB_eff, - alpha, beta, Fx, Fy, Fz, Nx, Nx*Ny, ScaLBL_Comm->FirstInterior(), ScaLBL_Comm->LastInterior(), Np); + alpha, beta, Fx, Fy, Fz, RecoloringOff, W, Nx, Nx*Ny, ScaLBL_Comm->FirstInterior(), ScaLBL_Comm->LastInterior(), Np); + //Model-1&4 + //ScaLBL_D3Q19_AAodd_GreyscaleColor(NeighborList, dvcMap, fq, Aq, Bq, Den, Phi,GreySolidGrad,Porosity_dvc,Permeability_dvc,Velocity,Pressure, + // rhoA, rhoB, tauA, tauB,tauA_eff, tauB_eff, + // alpha, beta, Fx, Fy, Fz, Nx, Nx*Ny, ScaLBL_Comm->FirstInterior(), ScaLBL_Comm->LastInterior(), Np); ////Model-2&3 //ScaLBL_D3Q19_AAodd_GreyscaleColor(NeighborList, dvcMap, fq, Aq, Bq, Den, Phi,GreySolidPhi,Porosity_dvc,Permeability_dvc,Velocity, // rhoA, rhoB, tauA, tauB,tauA_eff, tauB_eff, @@ -968,10 +980,14 @@ void ScaLBL_GreyscaleColorModel::Run(){ ScaLBL_Comm->D3Q19_Reflection_BC_Z(fq); } - //Model-1&4 - ScaLBL_D3Q19_AAodd_GreyscaleColor(NeighborList, dvcMap, fq, Aq, Bq, Den, Phi,GreySolidGrad,Porosity_dvc,Permeability_dvc,Velocity,Pressure, + //Model-1&4 with capillary pressure penalty for grey nodes + ScaLBL_D3Q19_AAodd_GreyscaleColor_CP(NeighborList, dvcMap, fq, Aq, Bq, Den, Phi,GreySolidGrad,Porosity_dvc,Permeability_dvc,Velocity,Pressure, rhoA, rhoB, tauA, tauB,tauA_eff, tauB_eff, - alpha, beta, Fx, Fy, Fz, Nx, Nx*Ny, 0, ScaLBL_Comm->LastExterior(), Np); + alpha, beta, Fx, Fy, Fz, RecoloringOff, W, Nx, Nx*Ny, 0, ScaLBL_Comm->LastExterior(), Np); + //Model-1&4 + //ScaLBL_D3Q19_AAodd_GreyscaleColor(NeighborList, dvcMap, fq, Aq, Bq, Den, Phi,GreySolidGrad,Porosity_dvc,Permeability_dvc,Velocity,Pressure, + // rhoA, rhoB, tauA, tauB,tauA_eff, tauB_eff, + // alpha, beta, Fx, Fy, Fz, Nx, Nx*Ny, 0, ScaLBL_Comm->LastExterior(), Np); ////Model-2&3 //ScaLBL_D3Q19_AAodd_GreyscaleColor(NeighborList, dvcMap, fq, Aq, Bq, Den, Phi,GreySolidPhi,Porosity_dvc,Permeability_dvc,Velocity, // rhoA, rhoB, tauA, tauB,tauA_eff, tauB_eff, @@ -995,10 +1011,14 @@ void ScaLBL_GreyscaleColorModel::Run(){ ScaLBL_Comm->Color_BC_Z(dvcMap, Phi, Den, outletA, outletB); } ScaLBL_Comm_Regular->SendHalo(Phi); - //Model-1&4 - ScaLBL_D3Q19_AAeven_GreyscaleColor(dvcMap, fq, Aq, Bq, Den, Phi,GreySolidGrad,Porosity_dvc,Permeability_dvc,Velocity,Pressure, + //Model-1&4 with capillary pressure penalty for grey nodes + ScaLBL_D3Q19_AAeven_GreyscaleColor_CP(dvcMap, fq, Aq, Bq, Den, Phi,GreySolidGrad,Porosity_dvc,Permeability_dvc,Velocity,Pressure, rhoA, rhoB, tauA, tauB,tauA_eff, tauB_eff, - alpha, beta, Fx, Fy, Fz, Nx, Nx*Ny, ScaLBL_Comm->FirstInterior(), ScaLBL_Comm->LastInterior(), Np); + alpha, beta, Fx, Fy, Fz, RecoloringOff, W, Nx, Nx*Ny, ScaLBL_Comm->FirstInterior(), ScaLBL_Comm->LastInterior(), Np); + //Model-1&4 + //ScaLBL_D3Q19_AAeven_GreyscaleColor(dvcMap, fq, Aq, Bq, Den, Phi,GreySolidGrad,Porosity_dvc,Permeability_dvc,Velocity,Pressure, + // rhoA, rhoB, tauA, tauB,tauA_eff, tauB_eff, + // alpha, beta, Fx, Fy, Fz, Nx, Nx*Ny, ScaLBL_Comm->FirstInterior(), ScaLBL_Comm->LastInterior(), Np); ////Model-2&3 //ScaLBL_D3Q19_AAeven_GreyscaleColor(dvcMap, fq, Aq, Bq, Den, Phi,GreySolidPhi,Porosity_dvc,Permeability_dvc,Velocity, // rhoA, rhoB, tauA, tauB,tauA_eff, tauB_eff, @@ -1020,10 +1040,14 @@ void ScaLBL_GreyscaleColorModel::Run(){ ScaLBL_Comm->D3Q19_Reflection_BC_Z(fq); } - //Model-1&4 - ScaLBL_D3Q19_AAeven_GreyscaleColor(dvcMap, fq, Aq, Bq, Den, Phi,GreySolidGrad,Porosity_dvc,Permeability_dvc,Velocity,Pressure, + //Model-1&4 with capillary pressure penalty for grey nodes + ScaLBL_D3Q19_AAeven_GreyscaleColor_CP(dvcMap, fq, Aq, Bq, Den, Phi,GreySolidGrad,Porosity_dvc,Permeability_dvc,Velocity,Pressure, rhoA, rhoB, tauA, tauB,tauA_eff, tauB_eff, - alpha, beta, Fx, Fy, Fz, Nx, Nx*Ny, 0, ScaLBL_Comm->LastExterior(), Np); + alpha, beta, Fx, Fy, Fz, RecoloringOff, W, Nx, Nx*Ny, 0, ScaLBL_Comm->LastExterior(), Np); + //Model-1&4 + //ScaLBL_D3Q19_AAeven_GreyscaleColor(dvcMap, fq, Aq, Bq, Den, Phi,GreySolidGrad,Porosity_dvc,Permeability_dvc,Velocity,Pressure, + // rhoA, rhoB, tauA, tauB,tauA_eff, tauB_eff, + // alpha, beta, Fx, Fy, Fz, Nx, Nx*Ny, 0, ScaLBL_Comm->LastExterior(), Np); ////Model-2&3 //ScaLBL_D3Q19_AAeven_GreyscaleColor(dvcMap, fq, Aq, Bq, Den, Phi,GreySolidPhi,Porosity_dvc,Permeability_dvc,Velocity, // rhoA, rhoB, tauA, tauB,tauA_eff, tauB_eff, diff --git a/models/GreyscaleColorModel.h b/models/GreyscaleColorModel.h index 667099e9..dd25e613 100644 --- a/models/GreyscaleColorModel.h +++ b/models/GreyscaleColorModel.h @@ -39,6 +39,8 @@ public: double Fx,Fy,Fz,flux; double din,dout,inletA,inletB,outletA,outletB; double GreyPorosity; + bool RecoloringOff;//recoloring can be turn off for grey nodes if this is true + double W;//wetting strength paramter for capillary pressure penalty for grey nodes int Nx,Ny,Nz,N,Np; int rank,nprocx,nprocy,nprocz,nprocs;