Skip to content

Commit 430b3bf

Browse files
Skip setting Thickness for invalid segments (log error message)
1 parent 1ea4276 commit 430b3bf

File tree

3 files changed

+37
-18
lines changed

3 files changed

+37
-18
lines changed

src/geophires_x/Parameter.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -412,6 +412,7 @@ def default_parameter_value_message(new_val: Any, param_to_modify_name: str, def
412412
if x.strip() != '']
413413

414414
# FIXME WIP TODO validate entries comply with min/max (as implemented in commented code below)
415+
# FIXME WIP TODO set ParamToModify.Valid/Provided
415416

416417
# def _read_list_parameter():
417418
# read_list = []

src/geophires_x/Reservoir.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -606,7 +606,14 @@ def read_parameters(self, model: Model) -> None:
606606
elif ParameterToModify.Name.startswith('Thickness '):
607607
parts = ParameterReadIn.Name.split(' ')
608608
position = int(parts[1]) - 1
609-
model.reserv.layerthickness.value[position] = ParameterToModify.value
609+
num_segments = len(model.reserv.layerthickness.value)
610+
if position < num_segments:
611+
model.reserv.layerthickness.value[position] = ParameterToModify.value
612+
else:
613+
model.logger.error(f'Cannot set {ParameterToModify.Name} to {ParameterToModify.value} '
614+
f'because only {num_segments} segments are defined.')
615+
# Don't raise exception since we can ignore and the user will see the incorrectly configured
616+
# segment(s) in the result.
610617

611618
elif ParameterToModify.Name.startswith("Fracture Separation"):
612619
self.fracsepcalc.value = self.fracsep.value

tests/geophires_x_tests/test_reservoir.py

Lines changed: 28 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -171,22 +171,22 @@ def _get_result() -> GeophiresXResult:
171171
from_file_path=self._get_test_file_path('generic-egs-case.txt'),
172172
params={
173173
'Number of Segments': 3,
174-
'Gradient 2': '30',
175-
'Gradient 3': '30',
176-
'Thicknesses': '1.75,0.56,0.65',
174+
'Gradient 2': '40',
175+
'Gradient 3': '40',
176+
'Thicknesses': '2.5,0.49,0.87',
177177
},
178178
)
179179
)
180180

181181
r = _get_result()
182-
183182
summary = r.result['SUMMARY OF RESULTS']
183+
184184
expected = {
185185
'Segment 1 Geothermal gradient': {'unit': 'degC/km', 'value': 36.7},
186-
'Segment 1 Thickness': {'unit': 'kilometer', 'value': 1.75},
187-
'Segment 2 Geothermal gradient': {'unit': 'degC/km', 'value': 30},
188-
'Segment 2 Thickness': {'unit': 'kilometer', 'value': 0.56},
189-
'Segment 3 Geothermal gradient': {'unit': 'degC/km', 'value': 30},
186+
'Segment 1 Thickness': {'unit': 'kilometer', 'value': 2.5},
187+
'Segment 2 Geothermal gradient': {'unit': 'degC/km', 'value': 40},
188+
'Segment 2 Thickness': {'unit': 'kilometer', 'value': 0.49},
189+
'Segment 3 Geothermal gradient': {'unit': 'degC/km', 'value': 40},
190190
'Segment 3 Thickness': None,
191191
'Segment 4 Geothermal gradient': None,
192192
}
@@ -195,25 +195,36 @@ def _get_result() -> GeophiresXResult:
195195
self.assertEqual(summary[k], v)
196196

197197
def test_number_of_segments(self):
198-
"""FIXME WIP"""
199-
200198
def _get_result() -> GeophiresXResult:
201199
return GeophiresXClient().get_geophires_result(
202200
GeophiresInputParameters(
203201
from_file_path=self._get_test_file_path('generic-egs-case.txt'),
204202
params={
205203
'Number of Segments': 3,
206-
'Gradient 2': '30',
207-
'Gradient 3': '30',
208-
'Gradient 4': '30',
209-
'Thickness 1': '1.75',
210-
'Thickness 2': '0.56',
211-
'Thicknesses': '1.75,0.56,0.65',
204+
'Gradient 2': '40',
205+
'Gradient 3': '40',
206+
'Gradient 4': '40',
207+
'Thickness 1': '2.5',
208+
'Thickness 2': '0.49',
209+
'Thicknesses': '2.5,0.49,0.87',
212210
'Thickness 3': '0.65',
213211
'Thickness 4': '0.85',
214212
},
215213
)
216214
)
217215

218216
r = _get_result()
219-
self.assertIsNotNone(r) # FIXME WIP
217+
summary = r.result['SUMMARY OF RESULTS']
218+
219+
expected = {
220+
'Segment 1 Geothermal gradient': {'unit': 'degC/km', 'value': 36.7},
221+
'Segment 1 Thickness': {'unit': 'kilometer', 'value': 2.5},
222+
'Segment 2 Geothermal gradient': {'unit': 'degC/km', 'value': 40},
223+
'Segment 2 Thickness': {'unit': 'kilometer', 'value': 0.49},
224+
'Segment 3 Geothermal gradient': {'unit': 'degC/km', 'value': 40},
225+
'Segment 3 Thickness': None,
226+
'Segment 4 Geothermal gradient': None,
227+
}
228+
229+
for k, v in expected.items():
230+
self.assertEqual(summary[k], v)

0 commit comments

Comments
 (0)