build pass; TODO: verify the slippingBC model

This commit is contained in:
Rex Zhe Li
2021-05-15 02:27:02 -04:00
parent fee3d9eadc
commit cd2bcfba85
4 changed files with 26 additions and 20 deletions

View File

@@ -95,8 +95,8 @@ void ScaLBL_StokesModel::ReadParams(string filename,int num_iter){
if (stokes_db->keyExists( "UseElectroosmoticVelocityBC" )){
UseSlippingVelBC = stokes_db->getScalar<bool>( "UseElectroosmoticVelocityBC" );
}
if (electric_db->keyExists( "epsilonR" )){
epsilonR = electric_db->getScalar<double>( "epsilonR" );
if (stokes_db->keyExists( "epsilonR" )){
epsilonR = stokes_db->getScalar<double>( "epsilonR" );
}
// Re-calculate model parameters due to parameter read
@@ -182,8 +182,8 @@ void ScaLBL_StokesModel::ReadParams(string filename){
if (stokes_db->keyExists( "UseElectroosmoticVelocityBC" )){
UseSlippingVelBC = stokes_db->getScalar<bool>( "UseElectroosmoticVelocityBC" );
}
if (electric_db->keyExists( "epsilonR" )){
epsilonR = electric_db->getScalar<double>( "epsilonR" );
if (stokes_db->keyExists( "epsilonR" )){
epsilonR = stokes_db->getScalar<double>( "epsilonR" );
}
// Re-calculate model parameters due to parameter read
@@ -282,14 +282,14 @@ void ScaLBL_StokesModel::ReadInput(){
if (rank == 0) cout << " Domain set." << endl;
}
void ScaLBL_IonModel::AssignZetaPotentialSolid(double *zeta_potential_solid)
void ScaLBL_StokesModel::AssignZetaPotentialSolid(double *zeta_potential_solid)
{
size_t NLABELS=0;
signed char VALUE=0;
double AFFINITY=0.f;
auto LabelList = ion_db->getVector<int>( "SolidLabels" );
auto AffinityList = ion_db->getVector<double>( "ZetaPotentialSolidList" );
auto LabelList = stokes_db->getVector<int>( "SolidLabels" );
auto AffinityList = stokes_db->getVector<double>( "ZetaPotentialSolidList" );
NLABELS=LabelList.size();
if (NLABELS != AffinityList.size()){
@@ -335,9 +335,8 @@ void ScaLBL_IonModel::AssignZetaPotentialSolid(double *zeta_potential_solid)
}
}
void ScaLBL_IonModel::AssignSolidGrad(double *solid_grad)
void ScaLBL_StokesModel::AssignSolidGrad(double *solid_grad)
{
//TODO need to normalize the computed solid grad!!!
double *Dst;
Dst = new double [3*3*3];
for (int kk=0; kk<3; kk++){
@@ -424,9 +423,12 @@ void ScaLBL_IonModel::AssignSolidGrad(double *solid_grad)
}
}
}
solid_grad[idx+0*Np] = phi_x;
solid_grad[idx+1*Np] = phi_y;
solid_grad[idx+2*Np] = phi_z;
//solid_grad normalization
double phi_mag=sqrt(phi_x*phi_x+phi_y*phi_y+phi_z*phi_z);
if (phi_mag==0.0) phi_mag=1.0;
solid_grad[idx+0*Np] = phi_x/phi_mag;
solid_grad[idx+1*Np] = phi_y/phi_mag;
solid_grad[idx+2*Np] = phi_z/phi_mag;
}
}
}
@@ -543,7 +545,7 @@ void ScaLBL_StokesModel::Run_Lite(double *ChargeDensity, double *ElectricField){
if (UseSlippingVelBC==true){
ScaLBL_Comm->SolidSlippingVelocityBCD3Q19(fq, ZetaPotentialSolid, ElectricField, SolidGrad,
epslion_LB, 1.0/rlx_setA, rho0, den_scale, h, time_conv);
epsilon_LB, 1.0/rlx_setA, rho0, den_scale, h, time_conv);
}
ScaLBL_Comm->Barrier(); comm.barrier();
@@ -570,7 +572,7 @@ void ScaLBL_StokesModel::Run_Lite(double *ChargeDensity, double *ElectricField){
0, ScaLBL_Comm->LastExterior(), Np);
if (UseSlippingVelBC==true){
ScaLBL_Comm->SolidSlippingVelocityBCD3Q19(fq, ZetaPotentialSolid, ElectricField, SolidGrad,
epslion_LB, 1.0/rlx_setA, rho0, den_scale, h, time_conv);
epsilon_LB, 1.0/rlx_setA, rho0, den_scale, h, time_conv);
}
ScaLBL_Comm->Barrier(); comm.barrier();
//************************************************************************/

View File

@@ -73,6 +73,7 @@ public:
double *Velocity;
double *Pressure;
double *ZetaPotentialSolid;
double *SolidGrad;
//Minkowski Morphology;
DoubleArray Velocity_x;
@@ -91,5 +92,7 @@ private:
void LoadParams(std::shared_ptr<Database> db0);
void Velocity_LB_to_Phys(DoubleArray &Vel_reg);
vector<double> computeElectricForceAvg(double *ChargeDensity, double *ElectricField);
void AssignSolidGrad(double *solid_grad);
void AssignZetaPotentialSolid(double *zeta_potential_solid);
};
#endif