Skip to content

pywellgeo.well_data

pywellgeo.well_data.dc1dwell

Dc1dwell

Class to calculate the productivity of a well in a confined, infinite, homogeneous reservoir

__init__

__init__(
    k: int,
    H: int,
    L: int,
    tvd: List[int],
    temp: List[Union[float, int]],
    salinity: List[int],
    skin: List[float],
    ahd: List[int],
    rw: List[float],
    roughness: float,
    tgrad: Optional[float] = 0.031,
    tsurface: Optional[float] = 10,
    use_tgrad: Optional[bool] = False,
    useheatloss: Optional[bool] = False,
) -> None

instantiate a dc1dwell object, tvd, temp, salinity, skin, ahd, rw are arrays of length 2, first index is production well, second index is injection well

:param k: permeability of the aquifer [mDarcy :param H: thickness of the aquifer [m] :param L: distance between the wells [m] :param tvd: true vertical depth of top of the reservoir in the wells [m] ndarray len = 2 :param temp: temperature of the wells ( tinj and tres) [C] ndarray len = 2 :param salinity: salinity [ppm] ndarray len = 2 :param skin: skin factor [-] ndarray len = 2 :param ahd: along hole depth of the wells [m] up till the bottom of the reservoir, ndarray len = 2 :param rw: well radius ndarray len = 2 :param roughness: roughness of the wells [ milli-inch ]

update_params

update_params(**kwargs) -> None

update the parameters of the dc1dwell object :param kwargs: parameter dictonary to update

:return:

get_params

get_params() -> Dict[str, Any]

get the parameters of the dc1dwell object :return: dictionary with the parameters of the dc1dwell object

from_configfile classmethod

from_configfile(configfile: str) -> Dc1dwell

create a dc1dwell object from a configfile

:param configfile: yaml file with the parameters of the dc1dwell object :return: dc1dwell object

getPseudoKop

getPseudoKop() -> float64

calculate the kick off depth for a linearized well trajectory, such that the Ahd for the top corresponds to ahd = kod + sqrt( 0.25*L^2 + (tvd-kod)^2) :return:

calculateQvol

calculateQvol(
    target_dp: int,
    initial_guess: Optional[float] = 0.05,
    tol: Optional[float] = 0.0001,
    max_iter: Optional[int] = 100,
) -> float64

Use Newton-Raphson method to find the flow rate that results in the target pressure drop.

:param target_dp: Target pressure drop :param initial_guess: Initial guess for the flow rate [m3/s] :param tol: Tolerance for the solution (default is 1e-4) :param max_iter: Maximum number of iterations :return: Flow rate that results in the target pressure drop

calculateDP_qvol

calculateDP_qvol() -> None

calculate the pressure drop and production temperature of the wells for a given flow rate (if self.qvol is set to positive number) or it caluclates achievable flow rate and production temperature for the given flowrate :return: sets self.qvol or self.dp, and sets self.tprod.

productivity

productivity() -> None

calculate the productivity index of the wells (i.e. pressure at reservoir level required for a unit flow rate [m3/s]

:return: productivity index

dp_friction

dp_friction(qvol: Union[float, float64]) -> None

calculate the frictional pressure drop in the wells

dp_syphon

dp_syphon() -> None

calculate the pressure in the well

:return: pressure

tproduction

tproduction() -> float64

calculate the heat loss of the wells W/m, asusming one year of operation

:param temp: fluid temperature in the well :param tempenv: environmental temperature :param rw: well radius :return:

find_kod_binary_search(
    ahd: float64,
    L: int,
    tvd: float64,
    tol: Optional[float] = 1e-06,
    max_iter: Optional[int] = 1000,
) -> float64

Find the solution for kod in the equation: ahd = kod + sqrt(0.25*L^2 + (tvd-kod)^2) using binary search.

Parameters

ahd : float Along hole depth. L : float Distance between the wells. tvd : float True vertical depth. tol : float, optional Tolerance for the solution (default is 1e-6). max_iter : int, optional Maximum number of iterations (default is 1000).

Returns

kod : float Kick off depth.

read_input

read_input(config: str) -> Dict[str, Any]

Read .yml file with settings