Source code for gemini_model.reservoir.reservoir_pressuredrop

"""Bottomhole and reservoir pressure drop calculations with skin and hydrostatic.

Computes pressure components due to radial flow (Darcy), skin, and hydrostatic
column for given reservoir and fluid parameters.
Reference: Akin (2019), Geothermal re-injection performance evaluation
using surveillance analysis methods. Renewable Energy. https://doi.org/10.1016/j.renene.2019.03.103
"""

import numpy as np

from gemini_model.model_abstract import Model


[docs] class bottomhole_skin_dp(Model): """Calculate bottomhole/reservoir dp including skin and hydrostatic terms.""" def __init__(self): """Model initialization.""" self.parameters = {} self.output = {}
[docs] def update_parameters(self, parameters): """Update model parameters. Parameters ---------- parameters: dict Parameters dict as defined by the model. """ for key, value in parameters.items(): self.parameters[key] = value
[docs] def initialize_state(self, x): """Generate an initial state based on user parameters.""" pass
[docs] def update_state(self, u, x): """Update the state based on input u and state x.""" pass
[docs] def calculate_output(self, u, x): """Calculate output based on input u and state x.""" # constant g = 9.81 # get input flow = u["flow"] viscosity = u["viscosity"] density = u["density"] well_radius = u["well_radius"] skin_factor = u["skin_factor"] reservoir_pressure = self.parameters["reservoir_pressure"] reservoir_radius = self.parameters["reservoir_radius"] reservoir_permeability = self.parameters["reservoir_permeability"] reservoir_thickness = self.parameters["reservoir_thickness"] reservoir_top = self.parameters["reservoir_top"] deltaP_flow = (flow * viscosity * np.log(reservoir_radius / well_radius)) / ( 2 * np.pi * reservoir_permeability * reservoir_thickness ) deltaP_skin = (flow * viscosity * skin_factor) / ( 2 * np.pi * reservoir_permeability * reservoir_thickness ) deltaP_HH = reservoir_top * density * g self.output["Hydrostatic_dp"] = deltaP_HH self.output["skin_dp"] = deltaP_skin self.output["bottomhole_dp"] = deltaP_flow self.output["reservoir_dp"] = reservoir_pressure + deltaP_flow + deltaP_skin
[docs] def get_output(self): """Get output of the model.""" return self.output