mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-11 11:25:34 -06:00
Add tentative implementation of surface-rate targets.
Not tested at present.
This commit is contained in:
parent
9f69e9fa51
commit
fb8e79857c
@ -820,7 +820,34 @@ welleq_coeff_resv(int np, struct cfs_tpfa_res_data *h,
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
static void
|
||||
assemble_completion_to_well(int w, int c, int nc, int np,
|
||||
welleq_coeff_surfrate(int i, int np, struct cfs_tpfa_res_data *h,
|
||||
struct WellControls *ctrl,
|
||||
double *res, double *w2c, double *w2w)
|
||||
/* ---------------------------------------------------------------------- */
|
||||
{
|
||||
int p;
|
||||
double f;
|
||||
const double *pflux, *dpflux_w, *dpflux_c, *distr;
|
||||
|
||||
pflux = h->pimpl->compflux_p + (i * (1 * np));
|
||||
dpflux_w = h->pimpl->compflux_deriv_p + (i * (2 * np));
|
||||
dpflux_c = dpflux_w + (1 * (1 * np));
|
||||
distr = ctrl->distr + (ctrl->current * (1 * np));
|
||||
|
||||
*res = *w2c = *w2w = 0.0;
|
||||
for (p = 0; p < np; p++) {
|
||||
f = distr[ p ];
|
||||
|
||||
*res += f * pflux [ p ];
|
||||
*w2w += f * dpflux_w[ p ];
|
||||
*w2c += f * dpflux_c[ p ];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
static void
|
||||
assemble_completion_to_well(int i, int w, int c, int nc, int np,
|
||||
double pw, double dt,
|
||||
struct cfs_tpfa_res_wells *wells,
|
||||
struct cfs_tpfa_res_data *h )
|
||||
@ -856,7 +883,7 @@ assemble_completion_to_well(int w, int c, int nc, int np,
|
||||
break;
|
||||
|
||||
case SURFACE_RATE:
|
||||
assert (0); /* Surface rate currently not supported */
|
||||
welleq_coeff_surfrate(i, np, h, ctrl, &res, &w2c, &w2w);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -925,7 +952,7 @@ assemble_well_contrib(struct cfs_tpfa_res_wells *wells ,
|
||||
h->pimpl->flux_work,
|
||||
h->pimpl->flux_work + np);
|
||||
|
||||
assemble_completion_to_well(w, c, nc, np, pw, dt, wells, h);
|
||||
assemble_completion_to_well(i, w, c, nc, np, pw, dt, wells, h);
|
||||
}
|
||||
|
||||
ctrl = W->ctrls[ w ];
|
||||
|
Loading…
Reference in New Issue
Block a user