From b22b3f9fe25a47746ca0a3ae2ac40bac23bb4371 Mon Sep 17 00:00:00 2001 From: Joakim Hove Date: Mon, 6 Jan 2014 15:13:32 +0100 Subject: [PATCH] Moved struct WellControls to the implementation file well_controls.c. --- opm/core/well_controls.h | 74 ++++------------------------------ opm/core/wells.h | 4 +- opm/core/wells/well_controls.c | 61 +++++++++++++++++++++++++++- 3 files changed, 68 insertions(+), 71 deletions(-) diff --git a/opm/core/well_controls.h b/opm/core/well_controls.h index 8e59e2403..3e0626707 100644 --- a/opm/core/well_controls.h +++ b/opm/core/well_controls.h @@ -21,80 +21,20 @@ #define OPM_WELL_CONTROLS_H_INCLUDED #include -#include + + #ifdef __cplusplus extern "C" { #endif - - - -/** - * Controls for a single well. - * Each control specifies a well rate or bottom-hole pressure. Only - * one control can be active at a time, indicated by current. The - * meaning of each control's target value depends on the control type: - * - * - BHP -> target pressure in Pascal. - * - RESERVOIR_RATE -> target reservoir volume rate in cubic(meter)/second - * - SURFACE_RATE -> target surface volume rate in cubic(meter)/second - * - * The sign convention for RATE targets is as follows: - * - * - (+) Fluid flowing into reservoir, i.e. injecting. - * - (-) Fluid flowing out of reservoir, i.e. producing. - * - * For *_RATE controls, the distribution of phases used for the control - * is also needed. For example, a total rate control should have 1.0 - * for each phase, whereas a control on oil rate should have 1.0 for - * the oil phase and 0.0 for the rest. For BHP controls, this is unused. - * The active control acts as an equality constraint, whereas the - * non-active controls should be interpreted as inequality - * constraints (upper or lower bounds). For instance, a PRODUCER's - * BHP constraint defines a minimum acceptable bottom-hole pressure - * value for the well. - */ - -#ifdef HAVE_WELLCONTROLS -struct WellControls -{ - /** - * Number of controls. - */ - int num; - - int number_of_phases; - - /** - * Array of control types. - */ - enum WellControlType *type; - - /** - * Array of control targets. - */ - double *target; - - /** - * Array of rate control distributions, - * number_of_phases numbers for each control - */ - double *distr; - - /** - * Index of current active control. - */ - int current; - - /* - The capacity allocated. - */ - int cpty; +enum WellControlType { + BHP, /**< Well constrained by BHP target */ + RESERVOIR_RATE, /**< Well constrained by reservoir volume flow rate */ + SURFACE_RATE /**< Well constrained by surface volume flow rate */ }; -#else + struct WellControls; -#endif bool well_controls_equal(const struct WellControls *ctrls1, const struct WellControls *ctrls2); diff --git a/opm/core/wells.h b/opm/core/wells.h index 726c6337f..dfc9be176 100644 --- a/opm/core/wells.h +++ b/opm/core/wells.h @@ -21,7 +21,7 @@ #define OPM_WELLS_H_INCLUDED #include -#include +#include /** * \file @@ -44,8 +44,6 @@ enum WellType { }; - -struct WellControls; /** * Data structure aggregating static information about all wells in a scenario. */ diff --git a/opm/core/wells/well_controls.c b/opm/core/wells/well_controls.c index 900da3f97..11d729034 100644 --- a/opm/core/wells/well_controls.c +++ b/opm/core/wells/well_controls.c @@ -36,14 +36,73 @@ #include "config.h" -#define HAVE_WELLCONTROLS #include #include #include #include #include +/** + * Controls for a single well. + * Each control specifies a well rate or bottom-hole pressure. Only + * one control can be active at a time, indicated by current. The + * meaning of each control's target value depends on the control type: + * + * - BHP -> target pressure in Pascal. + * - RESERVOIR_RATE -> target reservoir volume rate in cubic(meter)/second + * - SURFACE_RATE -> target surface volume rate in cubic(meter)/second + * + * The sign convention for RATE targets is as follows: + * + * - (+) Fluid flowing into reservoir, i.e. injecting. + * - (-) Fluid flowing out of reservoir, i.e. producing. + * + * For *_RATE controls, the distribution of phases used for the control + * is also needed. For example, a total rate control should have 1.0 + * for each phase, whereas a control on oil rate should have 1.0 for + * the oil phase and 0.0 for the rest. For BHP controls, this is unused. + * The active control acts as an equality constraint, whereas the + * non-active controls should be interpreted as inequality + * constraints (upper or lower bounds). For instance, a PRODUCER's + * BHP constraint defines a minimum acceptable bottom-hole pressure + * value for the well. + */ +struct WellControls +{ + /** + * Number of controls. + */ + int num; + + int number_of_phases; + + /** + * Array of control types. + */ + enum WellControlType *type; + + /** + * Array of control targets. + */ + double *target; + + /** + * Array of rate control distributions, + * number_of_phases numbers for each control + */ + double *distr; + + /** + * Index of current active control. + */ + int current; + + /* + The capacity allocated. + */ + int cpty; +}; /* ---------------------------------------------------------------------- */