TNO Intern

Commit 4af02acd authored by Hen Brett's avatar Hen Brett 🐔
Browse files

Using a JCLASS utcproperties instance instead of a python dictionary to handle...

Using a JCLASS utcproperties instance instead of a python dictionary to handle the properties of the simulation
parent 7c0ce179
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -33,9 +33,9 @@ def generate_thickness_permeability_transmissivity_for_pvalue(thickness_mean: fl

    # Sampling method for transmissivity
    thickness_samples = thickness_dist.rvs(nSamples)
    thickness_samples = np.where(thickness_samples < 0.0, 0.1, thickness_samples)   # Ensure no negative thicknesses
    transmissivity_samples = np.sort(np.exp(ln_permeability_dist.rvs(nSamples) + np.log(thickness_samples)))
    thickness_samples = np.clip(thickness_samples, a_min=0.01, a_max=None)

    transmissivity_samples = np.sort(np.exp(ln_permeability_dist.rvs(nSamples) + np.log(thickness_samples)))
    transmissivity_pvalues_sampled = transmissivity_samples[int((1 - p_value_fractions) * nSamples)]

    return thickness_pvalues, permeability_pvalues, transmissivity_pvalues_sampled
@@ -71,11 +71,10 @@ def generate_thickness_permeability_transmissivity_for_pvalues(thickness_mean: f

    # Sampling method for transmissivity
    thickness_samples = thickness_dist.rvs(nSamples)
    thickness_samples = np.where(thickness_samples < 0.0, 0.1, thickness_samples)   # Ensure no negative thicknesses
    thickness_samples = np.clip(thickness_samples, a_min=0.01, a_max=None)
    transmissivity_samples = np.sort(np.exp(ln_permeability_dist.rvs(nSamples) + np.log(thickness_samples)))

    sample_indexes = p_value_fractions * nSamples
    sample_indexes = sample_indexes.astype(int)
    transmissivity_pvalues_sampled = transmissivity_samples[sample_indexes]
    transmissivity_pvalues_sampled = transmissivity_samples[sample_indexes.astype(int)]

    return thickness_pvalues, permeability_pvalues, transmissivity_pvalues_sampled
 No newline at end of file
+2 −3
Original line number Diff line number Diff line
@@ -6,8 +6,7 @@ from jpype import JClass

from pythermogis.physics.temperature_grid_calculation import calculate_temperature_from_gradient
from pythermogis.statistics.calculate_thick_perm_trans import generate_thickness_permeability_transmissivity_for_pvalues
from pythermogis.thermogis_classes.jvm_start import start_jvm
from pythermogis.thermogis_classes.utc_properties import instantiate_utc_properties
from pythermogis.thermogis_classes.utc_properties import instantiate_utc_properties_builder


def calculate_doublet_performance(input_data: xr.Dataset,
@@ -37,7 +36,7 @@ def calculate_doublet_performance(input_data: xr.Dataset,
    validate_input_data(input_data)

    if utc_properties is None: # Instantiate utc_properties if none is provided
        utc_properties = instantiate_utc_properties()
        utc_properties = instantiate_utc_properties_builder().build()

    # convert p_values list to a xarray DataArray; needed to ensure the dimensionality of the calculations
    p_values = xr.DataArray(
+9 −12
Original line number Diff line number Diff line
from pathlib import Path
import xml.etree.ElementTree as ET
from pythermogis.thermogis_classes.jvm_start import start_jvm
from jpype import JClass

def instantiate_utc_properties_from_xml() ->
def instantiate_utc_properties_from_xml(xml_file: str | Path) -> JClass:
    start_jvm()
    xml_parser = JClass("thermogis.properties.parsers.UTCXmlParser")()
    tree = ET.parse(xml_file)
    root = tree.getroot()
    xmlstr = ET.tostring(root, encoding='utf8', method='xml')
    return xml_parser.parse(xmlstr)

def instantiate_utc_properties_builder() -> JClass:
    """
@@ -10,14 +18,3 @@ def instantiate_utc_properties_builder() -> JClass:
    """
    start_jvm()
    return JClass("thermogis.properties.builders.UTCPropertiesBuilder")()

def instantiate_utc_properties() -> JClass:
    """
    Start the JVM (if necessary) and return a baseCase UTC properties instance by instantiating the UTC Properties Builder and building
    :return:  (JClass, UTCProperties) utc_properties
    """
    utc_properties_builder = instantiate_utc_properties_builder()

    utc_properties = utc_properties_builder.build()

    return utc_properties
 No newline at end of file
+2 −2
Original line number Diff line number Diff line
@@ -2,9 +2,9 @@
<project ATES="false">
	<application_version>1.6.0</application_version>
	<application_name>ThermoGIS</application_name>
	<input_data_directory>/data/InputData</input_data_directory>
	<input_data_directory>C:</input_data_directory>
	<maps_prefix__can_be_empty_></maps_prefix__can_be_empty_>
	<results_directory>/data/Results</results_directory>
	<results_directory>C:</results_directory>
	<compare_results>0.0</compare_results>
	<comparison_directory></comparison_directory>
	<output_maps_for_petrel>0</output_maps_for_petrel>
+1 −4
Original line number Diff line number Diff line
@@ -9,8 +9,8 @@ from jpype.types import *
from pygridsio.pygridsio import read_grid

from pythermogis import calculate_doublet_performance
from pythermogis.thermogis_classes.doublet import instantiate_utc_properties, instantiate_utc_properties_builder
from pythermogis.thermogis_classes.jvm_start import start_jvm
from pythermogis.thermogis_classes.utc_properties import instantiate_utc_properties_builder


class PyThermoGIS(TestCase):
@@ -124,9 +124,6 @@ class PyThermoGIS(TestCase):

    def test_doublet_grid_HP_STIM(self):
        # This tests that the python API produces (approximately) the same output as the Java code, when running on the same set of input data for the heat pump and stimulation scenario
        # Read Input grids


        # Instantiate UTC properties, and set useStim to True
        utc_properties_builder = instantiate_utc_properties_builder()
        utc_properties = utc_properties_builder.setUseStimulation(True).setUseHeatPump(True).build()
Loading