porosity factor in effperm

This commit is contained in:
James McClure
2022-08-12 18:29:45 -04:00
parent f233ec616b
commit 189408f769
2 changed files with 211 additions and 192 deletions

View File

@@ -429,11 +429,11 @@ void SubPhase::Basic() {
//double total_flow_rate = water_flow_rate + not_water_flow_rate;
//double fractional_flow = water_flow_rate / total_flow_rate;
double h = Dm->voxel_length;
double krn = h * h * nu_n * not_water_flow_rate / force_mag;
double krw = h * h * nu_w * water_flow_rate / force_mag;
double krn = h * h * nu_n * Mask->Porosity() * not_water_flow_rate / force_mag;
double krw = h * h * nu_w * Mask->Porosity()* water_flow_rate / force_mag;
/* not counting films */
double krnf = krn - h * h * nu_n * not_water_film_flow_rate / force_mag;
double krwf = krw - h * h * nu_w * water_film_flow_rate / force_mag;
double krnf = krn - h * h * nu_n * Mask->Porosity() * not_water_film_flow_rate / force_mag;
double krwf = krw - h * h * nu_w * Mask->Porosity() * water_film_flow_rate / force_mag;
double eff_pressure = 1.0 / (krn + krw); // effective pressure drop
fprintf(TIMELOG,

View File

@@ -912,37 +912,41 @@ double ScaLBL_ColorModel::Run(int returntime) {
(vBd_x * dir_x + vBd_y * dir_y + vBd_z * dir_z);
double kAeff_connected =
h * h * muA * flow_rate_A_connected / (force_mag);
h * h * muA * Mask->Porosity()* flow_rate_A_connected / (force_mag);
double kBeff_connected =
h * h * muB * flow_rate_B_connected / (force_mag);
h * h * muB * Mask->Porosity()* flow_rate_B_connected / (force_mag);
// Saturation normalized effective permeability to account for decoupled phases and
// effective porosity.
double kAeff_connected_low =
(1.0 - current_saturation) * h * h * muA *
(1.0 - current_saturation) * h * h * muA* Mask->Porosity() *
flow_rate_A_connected / (force_mag);
double kBeff_connected_low = current_saturation * h * h *
muB * flow_rate_B_connected /
muB * Mask->Porosity()* flow_rate_B_connected /
(force_mag);
double kAeff_disconnected =
h * h * muA * flow_rate_A_disconnected / (force_mag);
h * h * muA * Mask->Porosity()* flow_rate_A_disconnected / (force_mag);
double kBeff_disconnected =
h * h * muB * flow_rate_B_disconnected / (force_mag);
h * h * muB * Mask->Porosity()* flow_rate_B_disconnected / (force_mag);
double kAeff = h * h * muA * (flow_rate_A) / (force_mag);
double kBeff = h * h * muB * (flow_rate_B) / (force_mag);
double kAeff = h * h * muA* Mask->Porosity() * (flow_rate_A) / (force_mag);
double kBeff = h * h * muB* Mask->Porosity() * (flow_rate_B) / (force_mag);
/* not counting films */
double krnf = kAeff - h * h * muA * not_water_film_flow_rate / force_mag;
double krwf = kBeff - h * h * muB * water_film_flow_rate / force_mag;
double krnf = kAeff - h * h * muA* Mask->Porosity() * not_water_film_flow_rate / force_mag;
double krwf = kBeff - h * h * muB* Mask->Porosity() * water_film_flow_rate / force_mag;
/* not counting films */
double krnf_low = (1.0 - current_saturation) * krnf;
double krwf_low = current_saturation * krwf;
// Saturation normalized effective permeability to account for decoupled phases and
// effective porosity.
double kAeff_low = (1.0 - current_saturation) * h * h *
muA * (flow_rate_A) / (force_mag);
double kBeff_low = current_saturation * h * h * muB *
muA* Mask->Porosity() * (flow_rate_A) / (force_mag);
double kBeff_low = current_saturation * h * h * muB* Mask->Porosity() *
(flow_rate_B) / (force_mag);
double viscous_pressure_drop =
@@ -964,6 +968,8 @@ double ScaLBL_ColorModel::Run(int returntime) {
"eff.perm.water.upper.bound ");
fprintf(kr_log_file, "eff.perm.oil.film "
"eff.perm.water.film ");
fprintf(kr_log_file, "eff.perm.oil.film.lower.bound "
"eff.perm.water.film.lower.bound ");
fprintf(kr_log_file, "eff.perm.oil.lower.bound "
"eff.perm.water.lower.bound ");
fprintf(kr_log_file,
@@ -982,6 +988,7 @@ double ScaLBL_ColorModel::Run(int returntime) {
current_saturation);
fprintf(kr_log_file, "%.5g %.5g ", kAeff, kBeff);
fprintf(kr_log_file, "%.5g %.5g ", krnf, krwf);
fprintf(kr_log_file, "%.5g %.5g ", krnf_low, krwf_low);
fprintf(kr_log_file, "%.5g %.5g ", kAeff_low, kBeff_low);
fprintf(kr_log_file, "%.5g %.5g ", kAeff_connected,
kBeff_connected);
@@ -1003,7 +1010,8 @@ double ScaLBL_ColorModel::Run(int returntime) {
WriteHeader = true;
scal_log_file = fopen("SCAL.csv", "a");
if (WriteHeader) {
fprintf(scal_log_file, "timesteps sat.water ");
fprintf(scal_log_file, "timesteps "
"sat.water ");
fprintf(scal_log_file, "eff.perm.oil.upper.bound "
"eff.perm.water.upper.bound ");
fprintf(scal_log_file,
@@ -1012,16 +1020,27 @@ double ScaLBL_ColorModel::Run(int returntime) {
fprintf(scal_log_file, "eff.perm.oil.disconnected "
"eff.perm.water.disconnected ");
fprintf(scal_log_file,
"cap.pressure cap.pressure.connected "
"Ca eff.pressure\n");
"eff.perm.oil.film.lower.bound "
"eff.perm.water.film.lower.bound ");
fprintf(scal_log_file,
"cap.pressure "
"cap.pressure.connected "
"Ca "
"eff.pressure\n");
}
// Adjust the effperms with porosity term to make the nominal
// values closer to measured data
fprintf(scal_log_file, "%i %.5g ", CURRENT_TIMESTEP,
current_saturation);
fprintf(scal_log_file, "%.5g %.5g ", kAeff_low, kBeff_low);
fprintf(scal_log_file, "%.5g %.5g ", kAeff_connected_low,
kBeff_connected_low);
fprintf(scal_log_file, "%.5g %.5g ", kAeff_disconnected,
kBeff_disconnected);
fprintf(scal_log_file, "%.5g %.5g ", kAeff_low * mDarcy_converter,
kBeff_low * mDarcy_converter);
fprintf(scal_log_file, "%.5g %.5g ", kAeff_connected_low * mDarcy_converter,
kBeff_connected_low * mDarcy_converter);
fprintf(scal_log_file, "%.5g %.5g ", kAeff_disconnected * mDarcy_converter,
kBeff_disconnected * mDarcy_converter);
fprintf(scal_log_file, "%.5g %.5g ", krnf_low * mDarcy_converter,
krwf_low * mDarcy_converter);
fprintf(scal_log_file, "%.5g %.5g %.5g ", pAB,
pAB_connected, Ca);
fprintf(scal_log_file, "%.5g\n", eff_pres);