mirror of
				https://github.com/OPM/opm-simulators.git
				synced 2025-02-25 18:55:30 -06:00 
			
		
		
		
	Moved struct WellControls to the implementation file well_controls.c.
This commit is contained in:
		| @@ -21,80 +21,20 @@ | ||||
| #define OPM_WELL_CONTROLS_H_INCLUDED | ||||
|  | ||||
| #include <stdbool.h> | ||||
| #include <opm/core/well_control_type.h> | ||||
|  | ||||
|  | ||||
|  | ||||
| #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, | ||||
|      * <CODE>number_of_phases</CODE> 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); | ||||
|   | ||||
| @@ -21,7 +21,7 @@ | ||||
| #define OPM_WELLS_H_INCLUDED | ||||
|  | ||||
| #include <stdbool.h> | ||||
| #include <opm/core/well_control_type.h> | ||||
| #include <opm/core/well_controls.h> | ||||
|  | ||||
| /** | ||||
|  * \file | ||||
| @@ -44,8 +44,6 @@ enum WellType { | ||||
| }; | ||||
|  | ||||
|  | ||||
|  | ||||
| struct WellControls; | ||||
| /** | ||||
|  *  Data structure aggregating static information about all wells in a scenario. | ||||
|  */ | ||||
|   | ||||
| @@ -36,14 +36,73 @@ | ||||
|  | ||||
| #include "config.h" | ||||
|  | ||||
| #define HAVE_WELLCONTROLS | ||||
| #include <opm/core/well_controls.h> | ||||
| #include <assert.h> | ||||
| #include <string.h> | ||||
| #include <stdlib.h> | ||||
| #include <stdio.h> | ||||
|  | ||||
| /** | ||||
|  * 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, | ||||
|      * <CODE>number_of_phases</CODE> numbers for each control | ||||
|      */ | ||||
|     double *distr; | ||||
|  | ||||
|     /** | ||||
|      * Index of current active control. | ||||
|      */ | ||||
|     int current; | ||||
|  | ||||
|     /*  | ||||
|        The capacity allocated. | ||||
|     */ | ||||
|     int cpty; | ||||
| }; | ||||
|  | ||||
|  | ||||
| /* ---------------------------------------------------------------------- */ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user