friction_loss.utils.plugin_dataclasses
1from dataclasses import dataclass 2from typing import Optional, List, Union 3 4import numpy as np 5 6PRECISION = 1e-5 7 8 9@dataclass 10class PolypresInputParameter: 11 name: str # Parameter name 12 value: Union[float, np.ndarray, str, None] # Parameter value 13 unit: Optional[str] # Parameter unit 14 15 16@dataclass 17class TransientData: 18 pressure: Union[List, np.ndarray] # Pressure points array 19 qo: Union[float, np.ndarray] # Value oil flow rate 20 qg: Union[float, np.ndarray] # Value gas flow rate 21 qw: Union[float, np.ndarray] # Value water flow rate 22 pressure_unit: str # Pressure unit 23 qo_unit: str # Unit oil flow rate 24 qg_unit: str # Unit gas flow rate 25 qw_unit: str # Unit water flow rate 26 27 28@dataclass 29class ProjectInfo: 30 analyst: str 31 analyst_email: str 32 company: str 33 contractor: str 34 country: str 35 curator: str 36 curator_email: str 37 field: str 38 id: str 39 info_date: str 40 project_name: str 41 well_name: str 42 test_name: str 43 44 45@dataclass 46class Pump: 47 pumpsize: float 48 f_nominal: float 49 f_actual: float 50 q_nominal: float 51 dp_nominal: float 52 k_f: float 53 stages_count: float 54 custom_stages_count: int 55 pump_koeffs: List[float] 56 hp_koeffs: List[float] 57 58 def equality_check(self, other_pump) -> bool: 59 pump_values = np.array([i for i in vars(self).values() if not isinstance(i, list)][:-1]) 60 other_pump_values = np.array([i for i in vars(other_pump).values() if not isinstance(i, list)][:-1]) 61 62 if (np.allclose(pump_values, other_pump_values, PRECISION) and 63 np.allclose(np.array(self.pump_koeffs), np.array(other_pump.pump_koeffs), PRECISION) and 64 np.allclose(np.array(self.hp_koeffs), np.array(other_pump.hp_koeffs), PRECISION)): 65 return True 66 else: 67 return False
PRECISION =
1e-05
class
PolypresInputParameter:
11class PolypresInputParameter: 12 name: str # Parameter name 13 value: Union[float, np.ndarray, str, None] # Parameter value 14 unit: Optional[str] # Parameter unit
class
TransientData:
18class TransientData: 19 pressure: Union[List, np.ndarray] # Pressure points array 20 qo: Union[float, np.ndarray] # Value oil flow rate 21 qg: Union[float, np.ndarray] # Value gas flow rate 22 qw: Union[float, np.ndarray] # Value water flow rate 23 pressure_unit: str # Pressure unit 24 qo_unit: str # Unit oil flow rate 25 qg_unit: str # Unit gas flow rate 26 qw_unit: str # Unit water flow rate
class
ProjectInfo:
30class ProjectInfo: 31 analyst: str 32 analyst_email: str 33 company: str 34 contractor: str 35 country: str 36 curator: str 37 curator_email: str 38 field: str 39 id: str 40 info_date: str 41 project_name: str 42 well_name: str 43 test_name: str
class
Pump:
47class Pump: 48 pumpsize: float 49 f_nominal: float 50 f_actual: float 51 q_nominal: float 52 dp_nominal: float 53 k_f: float 54 stages_count: float 55 custom_stages_count: int 56 pump_koeffs: List[float] 57 hp_koeffs: List[float] 58 59 def equality_check(self, other_pump) -> bool: 60 pump_values = np.array([i for i in vars(self).values() if not isinstance(i, list)][:-1]) 61 other_pump_values = np.array([i for i in vars(other_pump).values() if not isinstance(i, list)][:-1]) 62 63 if (np.allclose(pump_values, other_pump_values, PRECISION) and 64 np.allclose(np.array(self.pump_koeffs), np.array(other_pump.pump_koeffs), PRECISION) and 65 np.allclose(np.array(self.hp_koeffs), np.array(other_pump.hp_koeffs), PRECISION)): 66 return True 67 else: 68 return False
Pump( pumpsize: float, f_nominal: float, f_actual: float, q_nominal: float, dp_nominal: float, k_f: float, stages_count: float, custom_stages_count: int, pump_koeffs: List[float], hp_koeffs: List[float])
def
equality_check(self, other_pump) -> bool:
59 def equality_check(self, other_pump) -> bool: 60 pump_values = np.array([i for i in vars(self).values() if not isinstance(i, list)][:-1]) 61 other_pump_values = np.array([i for i in vars(other_pump).values() if not isinstance(i, list)][:-1]) 62 63 if (np.allclose(pump_values, other_pump_values, PRECISION) and 64 np.allclose(np.array(self.pump_koeffs), np.array(other_pump.pump_koeffs), PRECISION) and 65 np.allclose(np.array(self.hp_koeffs), np.array(other_pump.hp_koeffs), PRECISION)): 66 return True 67 else: 68 return False