flatten mass for fractional flow protocol
This commit is contained in:
parent
fd10e3d35e
commit
44c45d277f
@ -2086,6 +2086,76 @@ double FlowAdaptor::UpdateFractionalFlow(ScaLBL_ColorModel &M){
|
|||||||
return(TOTAL_MASS_CHANGE);
|
return(TOTAL_MASS_CHANGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FlowAdaptor::Flatten(ScaLBL_ColorModel &M){
|
||||||
|
|
||||||
|
int Np = M.Np;
|
||||||
|
double dA, dB, phi;
|
||||||
|
|
||||||
|
double mass_a, mass_b, mass_a_global, mass_b_global;
|
||||||
|
|
||||||
|
double *Aq_tmp, *Bq_tmp;
|
||||||
|
double *Vel_x, *Vel_y, *Vel_z, *Phase;
|
||||||
|
|
||||||
|
Aq_tmp = new double [7*Np];
|
||||||
|
Bq_tmp = new double [7*Np];
|
||||||
|
|
||||||
|
ScaLBL_CopyToHost(Aq_tmp, M.Aq, 7*Np*sizeof(double));
|
||||||
|
ScaLBL_CopyToHost(Bq_tmp, M.Bq, 7*Np*sizeof(double));
|
||||||
|
|
||||||
|
|
||||||
|
for (int n=0; n < M.ScaLBL_Comm->LastExterior(); n++){
|
||||||
|
dA = Aq_tmp[n] + Aq_tmp[n+Np] + Aq_tmp[n+2*Np] + Aq_tmp[n+3*Np] + Aq_tmp[n+4*Np] + Aq_tmp[n+5*Np] + Aq_tmp[n+6*Np];
|
||||||
|
dB = Bq_tmp[n] + Bq_tmp[n+Np] + Bq_tmp[n+2*Np] + Bq_tmp[n+3*Np] + Bq_tmp[n+4*Np] + Bq_tmp[n+5*Np] + Bq_tmp[n+6*Np];
|
||||||
|
if (dA > 1.0){
|
||||||
|
double mass_change = dA - 1.0;
|
||||||
|
Aq_tmp[n] -= 0.333333333333333*mass_change;
|
||||||
|
Aq_tmp[n+Np] -= 0.111111111111111*mass_change;
|
||||||
|
Aq_tmp[n+2*Np] -= 0.111111111111111*mass_change;
|
||||||
|
Aq_tmp[n+3*Np] -= 0.111111111111111*mass_change;
|
||||||
|
Aq_tmp[n+4*Np] -= 0.111111111111111*mass_change;
|
||||||
|
Aq_tmp[n+5*Np] -= 0.111111111111111*mass_change;
|
||||||
|
Aq_tmp[n+6*Np] -= 0.111111111111111*mass_change;
|
||||||
|
}
|
||||||
|
if (dB > 1.0){
|
||||||
|
double mass_change = dB - 1.0;
|
||||||
|
Bq_tmp[n] -= 0.333333333333333*mass_change;
|
||||||
|
Bq_tmp[n+Np] -= 0.111111111111111*mass_change;
|
||||||
|
Bq_tmp[n+2*Np] -= 0.111111111111111*mass_change;
|
||||||
|
Bq_tmp[n+3*Np] -= 0.111111111111111*mass_change;
|
||||||
|
Bq_tmp[n+4*Np] -= 0.111111111111111*mass_change;
|
||||||
|
Bq_tmp[n+5*Np] -= 0.111111111111111*mass_change;
|
||||||
|
Bq_tmp[n+6*Np] -= 0.111111111111111*mass_change;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (int n=M.ScaLBL_Comm->FirstInterior(); n < M.ScaLBL_Comm->LastInterior(); n++){
|
||||||
|
dA = Aq_tmp[n] + Aq_tmp[n+Np] + Aq_tmp[n+2*Np] + Aq_tmp[n+3*Np] + Aq_tmp[n+4*Np] + Aq_tmp[n+5*Np] + Aq_tmp[n+6*Np];
|
||||||
|
dB = Bq_tmp[n] + Bq_tmp[n+Np] + Bq_tmp[n+2*Np] + Bq_tmp[n+3*Np] + Bq_tmp[n+4*Np] + Bq_tmp[n+5*Np] + Bq_tmp[n+6*Np];
|
||||||
|
if (dA > 1.0){
|
||||||
|
double mass_change = dA - 1.0;
|
||||||
|
Aq_tmp[n] -= 0.333333333333333*mass_change;
|
||||||
|
Aq_tmp[n+Np] -= 0.111111111111111*mass_change;
|
||||||
|
Aq_tmp[n+2*Np] -= 0.111111111111111*mass_change;
|
||||||
|
Aq_tmp[n+3*Np] -= 0.111111111111111*mass_change;
|
||||||
|
Aq_tmp[n+4*Np] -= 0.111111111111111*mass_change;
|
||||||
|
Aq_tmp[n+5*Np] -= 0.111111111111111*mass_change;
|
||||||
|
Aq_tmp[n+6*Np] -= 0.111111111111111*mass_change;
|
||||||
|
}
|
||||||
|
if (dB > 1.0){
|
||||||
|
double mass_change = dB - 1.0;
|
||||||
|
Bq_tmp[n] -= 0.333333333333333*mass_change;
|
||||||
|
Bq_tmp[n+Np] -= 0.111111111111111*mass_change;
|
||||||
|
Bq_tmp[n+2*Np] -= 0.111111111111111*mass_change;
|
||||||
|
Bq_tmp[n+3*Np] -= 0.111111111111111*mass_change;
|
||||||
|
Bq_tmp[n+4*Np] -= 0.111111111111111*mass_change;
|
||||||
|
Bq_tmp[n+5*Np] -= 0.111111111111111*mass_change;
|
||||||
|
Bq_tmp[n+6*Np] -= 0.111111111111111*mass_change;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ScaLBL_CopyToDevice(M.Aq, Aq_tmp, 7*Np*sizeof(double));
|
||||||
|
ScaLBL_CopyToDevice(M.Bq, Bq_tmp, 7*Np*sizeof(double));
|
||||||
|
}
|
||||||
|
|
||||||
double FlowAdaptor::MoveInterface(ScaLBL_ColorModel &M){
|
double FlowAdaptor::MoveInterface(ScaLBL_ColorModel &M){
|
||||||
|
|
||||||
double INTERFACE_CUTOFF = M.color_db->getWithDefault<double>( "move_interface_cutoff", 0.975 );
|
double INTERFACE_CUTOFF = M.color_db->getWithDefault<double>( "move_interface_cutoff", 0.975 );
|
||||||
|
@ -98,6 +98,7 @@ public:
|
|||||||
~FlowAdaptor();
|
~FlowAdaptor();
|
||||||
double MoveInterface(ScaLBL_ColorModel &M);
|
double MoveInterface(ScaLBL_ColorModel &M);
|
||||||
double UpdateFractionalFlow(ScaLBL_ColorModel &M);
|
double UpdateFractionalFlow(ScaLBL_ColorModel &M);
|
||||||
|
void Flatten(ScaLBL_ColorModel &M);
|
||||||
DoubleArray phi;
|
DoubleArray phi;
|
||||||
DoubleArray phi_t;
|
DoubleArray phi_t;
|
||||||
private:
|
private:
|
||||||
|
@ -100,6 +100,8 @@ int main( int argc, char **argv )
|
|||||||
Adapt.MoveInterface(ColorModel);
|
Adapt.MoveInterface(ColorModel);
|
||||||
skip_time += ANALYSIS_INTERVAL;
|
skip_time += ANALYSIS_INTERVAL;
|
||||||
}
|
}
|
||||||
|
Adapt.Flatten(ColorModel);
|
||||||
|
|
||||||
}
|
}
|
||||||
ColorModel.WriteDebug();
|
ColorModel.WriteDebug();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user