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);
|
||||
}
|
||||
|
||||
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 INTERFACE_CUTOFF = M.color_db->getWithDefault<double>( "move_interface_cutoff", 0.975 );
|
||||
|
@ -98,6 +98,7 @@ public:
|
||||
~FlowAdaptor();
|
||||
double MoveInterface(ScaLBL_ColorModel &M);
|
||||
double UpdateFractionalFlow(ScaLBL_ColorModel &M);
|
||||
void Flatten(ScaLBL_ColorModel &M);
|
||||
DoubleArray phi;
|
||||
DoubleArray phi_t;
|
||||
private:
|
||||
|
@ -100,6 +100,8 @@ int main( int argc, char **argv )
|
||||
Adapt.MoveInterface(ColorModel);
|
||||
skip_time += ANALYSIS_INTERVAL;
|
||||
}
|
||||
Adapt.Flatten(ColorModel);
|
||||
|
||||
}
|
||||
ColorModel.WriteDebug();
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user