TNO Intern

Commit cd47b683 authored by Florian Knappers's avatar Florian Knappers
Browse files

first changes - new jar, viscosity and fixed 1 test

parent 1302e75e
Loading
Loading
Loading
Loading
+25 −0
Original line number Diff line number Diff line
from pathlib import Path
import typing as t
import xml.etree.ElementTree as ET
from jpype import JClass

@@ -37,3 +38,27 @@ def instantiate_utc_properties_builder() -> JClass:
    """
    start_jvm()
    return JClass("thermogis.properties.builders.UTCPropertiesBuilder")()

def get_viscosity_mode(mode: t.Literal["kestin", "batzlewang"]) -> JClass:
    """
    Map a string to the Java ViscosityMode enum.

    Parameters
    ----------
    mode : Literal["kestin", "batzlewang"]
        The viscosity mode to select.

    Returns
    -------
    viscosity_mode_enum : jpype.JClass
        The corresponding Java enum instance.
    """
    start_jvm()
    viscosity_mode = JClass("tno.geoenergy.ViscosityMode")

    if mode == "kestin":
        return viscosity_mode.KESTIN
    elif mode == "batzlewang":
        return viscosity_mode.BATZLEWANG
    else:
        raise ValueError(f"Unknown viscosity mode: {mode}")
 No newline at end of file
+14 −7
Original line number Diff line number Diff line
@@ -155,7 +155,13 @@ class ThermoGISDoubletBenchmark(TestCase):
        ViscosityMode = JClass("tno.geoenergy.ViscosityMode")

        # Instantiate the UTC properties class
        utc_properties = self.setup_template_utc_properties_builder().setOpexPerPower(100).setOpexBase(0).build()
        utc_properties = (self.setup_template_utc_properties_builder()
                          .setOpexPerPower(100)
                          .setOpexBase(0)
                          .setUseHeatPump(True)
                          .setHpApplicationMode(True)
                          .setHpDirectHeatInputTemp(80)
                          .build())
        # Create an instance of a ThermoGISDoublet
        doublet = ThermoGISDoublet(Mockito.mock(Logger), RNG(0), utc_properties)

@@ -166,7 +172,7 @@ class ThermoGISDoubletBenchmark(TestCase):
        doublet.doubletCalc1DData.setReservoirTemp(50)
        doublet.doubletCalc1DData.setDepth(2000)
        doublet.doubletCalc1DData.setDhReturnTemp(35)
        doublet.doubletCalc1DData.setInjectionTemp(doublet.calculateInjectionTempWithHeatPump(50, 70))
        doublet.doubletCalc1DData.setInjectionTemp(15)
        doublet.doubletCalc1DData.setNtg(1.0)
        doublet.doubletCalc1DData.setViscosityMode(ViscosityMode.KESTIN)
        doublet.setNoStimulation()
@@ -178,11 +184,12 @@ class ThermoGISDoubletBenchmark(TestCase):
        self.assertTrue(np.isclose(17499.99940, transmissivity, 0.001))
        self.assertTrue(np.isclose(163.99771118164062, doublet.doubletCalc1DData.getFlowrate(), 1))
        self.assertTrue(np.isclose(60, doublet.doubletCalc1DData.getDrawdownPressure() / 1e5, 0.001))
        self.assertTrue(np.isclose(4.97566556930542, doublet.doubletCalc1DData.getHeatPowerPerDoublet(), 0.001))
        self.assertTrue(np.isclose(989.2578125, doublet.doubletCalc1DData.getWellDistance(), 0.001))
        self.assertTrue(np.isclose(10.922356605529785, doublet.doubletCalc1DData.getCop(), 0.001))
        self.assertTrue(np.isclose(8.45577723033848, doublet.getUtcPeurctkWh(), 0.001))
        self.assertTrue(np.isclose(15.046041336220961, doublet.economicalData.getSumcapex(), 0.001))
        self.assertTrue(np.isclose(5.67, doublet.doubletCalc1DData.getHeatPowerPerDoublet(), 0.001))
        self.assertTrue(np.isclose(955.27, doublet.doubletCalc1DData.getWellDistance(), 0.001))
        self.assertTrue(np.isclose(3.51, doublet.doubletCalc1DData.getCop(), 0.001))
        self.assertTrue(np.isclose(10.9, doublet.getUtcPeurctkWh(), 0.001))
        self.assertTrue(np.isclose(17.56, doublet.economicalData.getSumcapex(), 0.001))


    def test_calculateDoubletPerformance_ORC(self):
        """
+5 −3
Original line number Diff line number Diff line
@@ -8,9 +8,10 @@ class ThermoGISDoubletBenchmark(TestCase):
    """

    def test_calculateDoubletPerformanceTest(self):
        viscosity_mode = get_viscosity_mode("kestin")
        utc_properties = (instantiate_utc_properties_builder()
                          .setDhReturnTemp(40)
                          .setUseKestinViscosity(True)
                          .setViscosityMode(viscosity_mode)
                          .build())

        input_data = xr.Dataset({
@@ -146,9 +147,10 @@ class ThermoGISDoubletBenchmark(TestCase):
        self.assertTrue(np.isclose(12.44409167482118, results.capex.data[0], 0.001))

    def setup_template_utc_properties_builder(self):
        viscosity_mode = get_viscosity_mode("kestin")

        return (instantiate_utc_properties_builder()
         .setSalinityGradient(47.0)
         .setUseKestinViscosity(True)
         .setDrillingTime(1)
         .setTaxRate(20)
         .setEquityReturn(15)
@@ -160,4 +162,4 @@ class ThermoGISDoubletBenchmark(TestCase):
         .setWellCostZ(1050)
         .setWellCostZ2(0.3)
         .setDhReturnTemp(40)
         .setUseKestinViscosity(True))
 No newline at end of file
         .setViscosityMode(viscosity_mode))
 No newline at end of file