add the greyscale effective viscosity back, but by default it is set equal to the normal viscosity
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
#include <math.h>
|
||||
|
||||
extern "C" void ScaLBL_D3Q19_AAeven_Greyscale(double *dist, int start, int finish, int Np, double rlx, double Gx, double Gy, double Gz,
|
||||
extern "C" void ScaLBL_D3Q19_AAeven_Greyscale(double *dist, int start, int finish, int Np, double rlx, double rlx_eff, double Gx, double Gy, double Gz,
|
||||
double *Poros,double *Perm, double *Velocity, double *Pressure){
|
||||
int n;
|
||||
// conserved momemnts
|
||||
@@ -14,7 +14,7 @@ extern "C" void ScaLBL_D3Q19_AAeven_Greyscale(double *dist, int start, int finis
|
||||
double porosity;
|
||||
double perm;//voxel permeability
|
||||
double c0, c1; //Guo's model parameters
|
||||
double mu = (1.0/rlx-0.5)/3.0;//kinematic viscosity
|
||||
double mu_eff = (1.0/rlx_eff-0.5)/3.0;//kinematic viscosity
|
||||
double Fx, Fy, Fz;//The total body force including Brinkman force and user-specified (Gx,Gy,Gz)
|
||||
|
||||
for (int n=start; n<finish; n++){
|
||||
@@ -42,7 +42,7 @@ extern "C" void ScaLBL_D3Q19_AAeven_Greyscale(double *dist, int start, int finis
|
||||
porosity = Poros[n];
|
||||
perm = Perm[n];
|
||||
|
||||
c0 = 0.5*(1.0+porosity*0.5*mu/perm);
|
||||
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);
|
||||
@@ -60,9 +60,9 @@ extern "C" void ScaLBL_D3Q19_AAeven_Greyscale(double *dist, int start, int finis
|
||||
u_mag=sqrt(ux*ux+uy*uy+uz*uz);
|
||||
|
||||
//Update the total force to include linear (Darcy) and nonlinear (Forchheimer) drags due to the porous medium
|
||||
Fx = -porosity*mu/perm*ux - porosity*GeoFun/sqrt(perm)*u_mag*ux + porosity*Gx;
|
||||
Fy = -porosity*mu/perm*uy - porosity*GeoFun/sqrt(perm)*u_mag*uy + porosity*Gy;
|
||||
Fz = -porosity*mu/perm*uz - porosity*GeoFun/sqrt(perm)*u_mag*uz + porosity*Gz;
|
||||
Fx = -porosity*mu_eff/perm*ux - porosity*GeoFun/sqrt(perm)*u_mag*ux + porosity*Gx;
|
||||
Fy = -porosity*mu_eff/perm*uy - porosity*GeoFun/sqrt(perm)*u_mag*uy + porosity*Gy;
|
||||
Fz = -porosity*mu_eff/perm*uz - porosity*GeoFun/sqrt(perm)*u_mag*uz + porosity*Gz;
|
||||
if (porosity==1.0){
|
||||
Fx=Gx;
|
||||
Fy=Gy;
|
||||
@@ -166,7 +166,7 @@ extern "C" void ScaLBL_D3Q19_AAeven_Greyscale(double *dist, int start, int finis
|
||||
}
|
||||
}
|
||||
|
||||
extern "C" void ScaLBL_D3Q19_AAodd_Greyscale(int *neighborList, double *dist, int start, int finish, int Np, double rlx, double Gx, double Gy, double Gz,
|
||||
extern "C" void ScaLBL_D3Q19_AAodd_Greyscale(int *neighborList, double *dist, int start, int finish, int Np, double rlx, double rlx_eff, double Gx, double Gy, double Gz,
|
||||
double *Poros,double *Perm, double *Velocity,double *Pressure){
|
||||
int n;
|
||||
// conserved momemnts
|
||||
@@ -181,7 +181,7 @@ extern "C" void ScaLBL_D3Q19_AAodd_Greyscale(int *neighborList, double *dist, in
|
||||
double porosity;
|
||||
double perm;//voxel permeability
|
||||
double c0, c1; //Guo's model parameters
|
||||
double mu = (1.0/rlx-0.5)/3.0;//kinematic viscosity
|
||||
double mu_eff = (1.0/rlx_eff-0.5)/3.0;//kinematic viscosity
|
||||
double Fx, Fy, Fz;//The total body force including Brinkman force and user-specified (Gx,Gy,Gz)
|
||||
|
||||
int nread;
|
||||
@@ -264,7 +264,7 @@ extern "C" void ScaLBL_D3Q19_AAodd_Greyscale(int *neighborList, double *dist, in
|
||||
porosity = Poros[n];
|
||||
perm = Perm[n];
|
||||
|
||||
c0 = 0.5*(1.0+porosity*0.5*mu/perm);
|
||||
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);
|
||||
@@ -282,9 +282,9 @@ extern "C" void ScaLBL_D3Q19_AAodd_Greyscale(int *neighborList, double *dist, in
|
||||
u_mag=sqrt(ux*ux+uy*uy+uz*uz);
|
||||
|
||||
//Update the total force to include linear (Darcy) and nonlinear (Forchheimer) drags due to the porous medium
|
||||
Fx = -porosity*mu/perm*ux - porosity*GeoFun/sqrt(perm)*u_mag*ux + porosity*Gx;
|
||||
Fy = -porosity*mu/perm*uy - porosity*GeoFun/sqrt(perm)*u_mag*uy + porosity*Gy;
|
||||
Fz = -porosity*mu/perm*uz - porosity*GeoFun/sqrt(perm)*u_mag*uz + porosity*Gz;
|
||||
Fx = -porosity*mu_eff/perm*ux - porosity*GeoFun/sqrt(perm)*u_mag*ux + porosity*Gx;
|
||||
Fy = -porosity*mu_eff/perm*uy - porosity*GeoFun/sqrt(perm)*u_mag*uy + porosity*Gy;
|
||||
Fz = -porosity*mu_eff/perm*uz - porosity*GeoFun/sqrt(perm)*u_mag*uz + porosity*Gz;
|
||||
if (porosity==1.0){
|
||||
Fx=Gx;
|
||||
Fy=Gy;
|
||||
@@ -389,7 +389,7 @@ extern "C" void ScaLBL_D3Q19_AAodd_Greyscale(int *neighborList, double *dist, in
|
||||
}
|
||||
|
||||
|
||||
extern "C" void ScaLBL_D3Q19_AAeven_Greyscale_IMRT(double *dist, int start, int finish, int Np, double rlx, double Gx, double Gy, double Gz,
|
||||
extern "C" void ScaLBL_D3Q19_AAeven_Greyscale_IMRT(double *dist, int start, int finish, int Np, double rlx, double rlx_eff, double Gx, double Gy, double Gz,
|
||||
double *Poros,double *Perm, double *Velocity, double Den,double *Pressure){
|
||||
int n;
|
||||
double vx,vy,vz,v_mag;
|
||||
@@ -405,7 +405,7 @@ extern "C" void ScaLBL_D3Q19_AAeven_Greyscale_IMRT(double *dist, int start, int
|
||||
double porosity;
|
||||
double perm;//voxel permeability
|
||||
double c0, c1; //Guo's model parameters
|
||||
double mu = (1.0/rlx-0.5)/3.0;//kinematic viscosity
|
||||
double mu_eff = (1.0/rlx_eff-0.5)/3.0;//kinematic viscosity
|
||||
double Fx, Fy, Fz;//The total body force including Brinkman force and user-specified (Gx,Gy,Gz)
|
||||
double rlx_setA = rlx;
|
||||
double rlx_setB = 8.f*(2.f-rlx_setA)/(8.f-rlx_setA);
|
||||
@@ -702,7 +702,7 @@ extern "C" void ScaLBL_D3Q19_AAeven_Greyscale_IMRT(double *dist, int start, int
|
||||
porosity = Poros[n];
|
||||
perm = Perm[n];
|
||||
|
||||
c0 = 0.5*(1.0+porosity*0.5*mu/perm);
|
||||
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);
|
||||
@@ -718,9 +718,9 @@ extern "C" void ScaLBL_D3Q19_AAeven_Greyscale_IMRT(double *dist, int start, int
|
||||
u_mag=sqrt(ux*ux+uy*uy+uz*uz);
|
||||
|
||||
//Update the total force to include linear (Darcy) and nonlinear (Forchheimer) drags due to the porous medium
|
||||
Fx = Den*(-porosity*mu/perm*ux - porosity*GeoFun/sqrt(perm)*u_mag*ux + porosity*Gx);
|
||||
Fy = Den*(-porosity*mu/perm*uy - porosity*GeoFun/sqrt(perm)*u_mag*uy + porosity*Gy);
|
||||
Fz = Den*(-porosity*mu/perm*uz - porosity*GeoFun/sqrt(perm)*u_mag*uz + porosity*Gz);
|
||||
Fx = Den*(-porosity*mu_eff/perm*ux - porosity*GeoFun/sqrt(perm)*u_mag*ux + porosity*Gx);
|
||||
Fy = Den*(-porosity*mu_eff/perm*uy - porosity*GeoFun/sqrt(perm)*u_mag*uy + porosity*Gy);
|
||||
Fz = Den*(-porosity*mu_eff/perm*uz - porosity*GeoFun/sqrt(perm)*u_mag*uz + porosity*Gz);
|
||||
if (porosity==1.0){
|
||||
Fx=Den*Gx;
|
||||
Fy=Den*Gy;
|
||||
@@ -850,7 +850,7 @@ extern "C" void ScaLBL_D3Q19_AAeven_Greyscale_IMRT(double *dist, int start, int
|
||||
}
|
||||
}
|
||||
|
||||
extern "C" void ScaLBL_D3Q19_AAodd_Greyscale_IMRT(int *neighborList, double *dist, int start, int finish, int Np, double rlx, double Gx, double Gy, double Gz,
|
||||
extern "C" void ScaLBL_D3Q19_AAodd_Greyscale_IMRT(int *neighborList, double *dist, int start, int finish, int Np, double rlx, double rlx_eff, double Gx, double Gy, double Gz,
|
||||
double *Poros,double *Perm, double *Velocity, double Den,double *Pressure){
|
||||
int n, nread;
|
||||
double vx,vy,vz,v_mag;
|
||||
@@ -866,7 +866,7 @@ extern "C" void ScaLBL_D3Q19_AAodd_Greyscale_IMRT(int *neighborList, double *dis
|
||||
double porosity;
|
||||
double perm;//voxel permeability
|
||||
double c0, c1; //Guo's model parameters
|
||||
double mu = (1.0/rlx-0.5)/3.0;//kinematic viscosity
|
||||
double mu_eff = (1.0/rlx_eff-0.5)/3.0;//kinematic viscosity
|
||||
double Fx, Fy, Fz;//The total body force including Brinkman force and user-specified (Gx,Gy,Gz)
|
||||
double rlx_setA = rlx;
|
||||
double rlx_setB = 8.f*(2.f-rlx_setA)/(8.f-rlx_setA);
|
||||
@@ -1181,7 +1181,7 @@ extern "C" void ScaLBL_D3Q19_AAodd_Greyscale_IMRT(int *neighborList, double *dis
|
||||
porosity = Poros[n];
|
||||
perm = Perm[n];
|
||||
|
||||
c0 = 0.5*(1.0+porosity*0.5*mu/perm);
|
||||
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);
|
||||
@@ -1197,9 +1197,9 @@ extern "C" void ScaLBL_D3Q19_AAodd_Greyscale_IMRT(int *neighborList, double *dis
|
||||
u_mag=sqrt(ux*ux+uy*uy+uz*uz);
|
||||
|
||||
//Update the total force to include linear (Darcy) and nonlinear (Forchheimer) drags due to the porous medium
|
||||
Fx = Den*(-porosity*mu/perm*ux - porosity*GeoFun/sqrt(perm)*u_mag*ux + porosity*Gx);
|
||||
Fy = Den*(-porosity*mu/perm*uy - porosity*GeoFun/sqrt(perm)*u_mag*uy + porosity*Gy);
|
||||
Fz = Den*(-porosity*mu/perm*uz - porosity*GeoFun/sqrt(perm)*u_mag*uz + porosity*Gz);
|
||||
Fx = Den*(-porosity*mu_eff/perm*ux - porosity*GeoFun/sqrt(perm)*u_mag*ux + porosity*Gx);
|
||||
Fy = Den*(-porosity*mu_eff/perm*uy - porosity*GeoFun/sqrt(perm)*u_mag*uy + porosity*Gy);
|
||||
Fz = Den*(-porosity*mu_eff/perm*uz - porosity*GeoFun/sqrt(perm)*u_mag*uz + porosity*Gz);
|
||||
if (porosity==1.0){
|
||||
Fx=Den*Gx;
|
||||
Fy=Den*Gy;
|
||||
|
||||
Reference in New Issue
Block a user