Skip to content

Commit a7513d3

Browse files
Adjust Reservoir Gradient/Thickness heuristics to work with Gradients & Thicknesses (input as list params)
1 parent d523d3f commit a7513d3

File tree

3 files changed

+352
-15
lines changed

3 files changed

+352
-15
lines changed

src/geophires_x/Reservoir.py

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -597,26 +597,11 @@ def read_parameters(self, model: Model) -> None:
597597
parts = ParameterReadIn.Name.split(' ')
598598
position = int(parts[1]) - 1
599599
model.reserv.gradient.value[position] = ParameterToModify.value
600-
if model.reserv.gradient.value[position] > 1.0:
601-
# TODO refactor to avoid heuristic-based unit conversions
602-
model.reserv.gradient.value[position] = model.reserv.gradient.value[
603-
position] / 1000.0 # convert C/m
604-
model.reserv.gradient.CurrentUnits = TemperatureGradientUnit.DEGREESCPERM
605-
606-
if model.reserv.gradient.value[position] < 1e-6:
607-
# convert 0 C/m gradients to very small number, avoids divide by zero errors later
608-
model.reserv.gradient.value[position] = 1e-6
609600

610601
elif ParameterToModify.Name.startswith('Thickness '):
611602
parts = ParameterReadIn.Name.split(' ')
612603
position = int(parts[1]) - 1
613604
model.reserv.layerthickness.value[position] = ParameterToModify.value
614-
if model.reserv.layerthickness.value[position] < 100.0:
615-
model.reserv.layerthickness.value[position] = model.reserv.layerthickness.value[
616-
position] * 1000.0 # convert m
617-
model.reserv.layerthickness.CurrentUnits = LengthUnit.METERS
618-
# set thickness of bottom segment to large number to override lower, unused segments
619-
model.reserv.layerthickness.value[position + 1] = 100_000.0
620605

621606
elif ParameterToModify.Name.startswith("Fracture Separation"):
622607
self.fracsepcalc.value = self.fracsep.value
@@ -635,6 +620,31 @@ def read_parameters(self, model: Model) -> None:
635620

636621
coerce_int_params_to_enum_values(self.ParameterDict)
637622

623+
for position in range(len(model.reserv.gradient.value)):
624+
if model.reserv.gradient.value[position] > 1.0:
625+
# TODO refactor to avoid heuristic-based unit conversions
626+
model.reserv.gradient.value[position] = model.reserv.gradient.value[
627+
position] / 1000.0 # convert to C/m
628+
model.reserv.gradient.CurrentUnits = TemperatureGradientUnit.DEGREESCPERM
629+
630+
if model.reserv.gradient.value[position] < 1e-6:
631+
# convert 0 C/m gradients to very small number, avoids divide by zero errors later
632+
model.reserv.gradient.value[position] = 1e-6
633+
634+
for position in range(len(model.reserv.layerthickness.value)):
635+
if model.reserv.layerthickness.value[position] < 100.0:
636+
# TODO refactor to avoid heuristic-based unit conversions
637+
model.reserv.layerthickness.value[position] = model.reserv.layerthickness.value[
638+
position] * 1000.0 # convert to m
639+
model.reserv.layerthickness.CurrentUnits = LengthUnit.METERS
640+
641+
# set thickness of bottom segment to large number to override lower, unused segments
642+
while len(model.reserv.layerthickness.value) < model.reserv.numseg.value:
643+
model.reserv.layerthickness.value.append(100_000.0)
644+
645+
model.reserv.layerthickness.value[model.reserv.numseg.value-1] = 100_000.0
646+
647+
638648
model.logger.info(f'complete {str(__class__)}: {sys._getframe().f_code.co_name}')
639649

640650
@lru_cache(maxsize=1024)

0 commit comments

Comments
 (0)