TNO Intern

Commit 66a17136 authored by Florian Knappers's avatar Florian Knappers
Browse files

start constants, and no redifining results

parent c84a522c
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
DARCY_SI = 1.0e-12 / 1.01325
 No newline at end of file
+16 −32
Original line number Diff line number Diff line
@@ -2,8 +2,6 @@ import timeit
from dataclasses import dataclass
from typing import NamedTuple

import numpy as np

from pythermogis.utils.timer import print_time
from pythermogis.workflow.utc.cooling_temp import calculate_cooling_temperature
from pythermogis.workflow.utc.doublet_utils import (
@@ -13,6 +11,7 @@ from pythermogis.workflow.utc.doublet_utils import (
from pythermogis.workflow.utc.pressure import calculate_max_pressure, optimize_pressure
from pythermogis.workflow.utc.utc_properties import UTCConfiguration
from pythermogis.workflow.utc.well_distance import optimize_well_distance
from pythermogis.workflow.utc.constants import DARCY_SI

EUR_PER_CT_PER_KWH = 0.36
NPV_SCALE = 1e-6
@@ -31,7 +30,6 @@ class DoubletInput:

    @property
    def permeability(self) -> float:
        DARCY_SI = 1.0e-12 / 1.01325
        return self.transmissivity / self.thickness * 1e-3 * DARCY_SI


@@ -62,7 +60,7 @@ def calculate_doublet_performance(
    timer = timeit.default_timer()
    # determine initial well distance
    well_distance = (
        np.mean([props.optim_dist_well_dist_min + props.optim_dist_well_dist_max])
        (props.optim_dist_well_dist_min + props.optim_dist_well_dist_max) / 2
        if props.optim_well_dist
        else props.default_well_distance
    )
@@ -142,27 +140,13 @@ def calculate_doublet_performance(
    if pressure_results is None:
        return None

    # everything underneath here is fast, no point in optimizing
    heat_power_per_doublet = pressure_results.heat_power_per_doublet
    flowrate = pressure_results.flowrate
    discounted_heat_produced_p = pressure_results.discounted_heat_produced
    variable_opex = pressure_results.variable_opex
    fixed_opex = pressure_results.fixed_opex
    total_opex_ts = pressure_results.total_opex_ts
    cop = pressure_results.cop
    drawdown_pressure = pressure_results.drawdown_pressure  # overwrite like Java
    sum_capex = pressure_results.sum_capex
    utc = pressure_results.utc
    hp_added_power = pressure_results.hp_added_power
    production_temp = pressure_results.production_temp

    total_variable_opex = sum(variable_opex)
    total_fixed_opex = sum(fixed_opex)
    total_variable_opex = sum(pressure_results.variable_opex)
    total_fixed_opex = sum(pressure_results.fixed_opex)

    utc_eur_ct_per_kwh = (
        input.unknown_input_value
        if utc == input.unknown_input_value
        else utc * EUR_PER_CT_PER_KWH
        if pressure_results.utc == input.unknown_input_value
        else pressure_results.utc * EUR_PER_CT_PER_KWH
    )

    if abs(input.unknown_input_value) < 10:
@@ -178,7 +162,7 @@ def calculate_doublet_performance(
        input.thickness * input.ntg,
        0.001,
        input.porosity,
        flowrate,
        pressure_results.flowrate,
        input.depth,
        input.temperature,
        props.salinity_surface,
@@ -197,29 +181,29 @@ def calculate_doublet_performance(
        NPV_SCALE
        * (utc_cutoff - utc_eur_ct_per_kwh)
        * 3.6
        * discounted_heat_produced_p
        * pressure_results.discounted_heat_produced
        * (1 - props.tax_rate)
    )
    opex_first_prod_year = total_opex_ts[props.drilling_time]
    opex_first_prod_year = pressure_results.total_opex_ts[props.drilling_time]
    print_time(timer, "economics: ", verbose=verbose)

    return DoubletOutput(
        power=heat_power_per_doublet,
        hppower=hp_added_power,
        capex=sum_capex,
        power=pressure_results.heat_power_per_doublet,
        hppower=pressure_results.hp_added_power,
        capex=pressure_results.sum_capex,
        var_opex=total_variable_opex,
        fixed_opex=total_fixed_opex,
        opex=opex_first_prod_year,
        utc=utc_eur_ct_per_kwh,
        npv=npv,
        hprod=discounted_heat_produced_p,
        cop=cop,
        hprod=pressure_results.discounted_heat_produced,
        cop=pressure_results.cop,
        cophp=pressure_results.heat_pump_cop,
        pres=drawdown_pressure / 1e5,
        flow=flowrate,
        flow=pressure_results.flowrate,
        welld=well_distance,
        breakthrough=breakthrough_years,
        cooling=end_temperature_p,
        production_temp=production_temp,
        production_temp=pressure_results.production_temp,
        injection_temp=injection_temperature,
    )