mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
142 lines
5.0 KiB
Python
142 lines
5.0 KiB
Python
import sys
|
|
import os
|
|
import math
|
|
import contextlib
|
|
import os
|
|
import shutil
|
|
import tempfile
|
|
|
|
sys.path.insert(1, os.path.join(sys.path[0], "../../"))
|
|
import rips
|
|
|
|
import dataroot
|
|
|
|
|
|
def test_summary_import_and_find(rips_instance, initialize_test):
|
|
casePath = dataroot.PATH + "/flow_diagnostics_test/SIMPLE_SUMMARY2.SMSPEC"
|
|
summary_case = rips_instance.project.import_summary_case(casePath)
|
|
assert summary_case.id == 1
|
|
|
|
case_id = 234
|
|
found_summary_case = rips_instance.project.summary_case(case_id)
|
|
assert found_summary_case is None
|
|
|
|
correct_case_id = 1
|
|
found_summary_case = rips_instance.project.summary_case(correct_case_id)
|
|
assert found_summary_case is not None
|
|
|
|
rips_instance.project.close()
|
|
correct_case_id = 1
|
|
found_summary_case = rips_instance.project.summary_case(correct_case_id)
|
|
assert found_summary_case is None
|
|
|
|
|
|
def test_summary_data(rips_instance, initialize_test):
|
|
casePath = dataroot.PATH + "/flow_diagnostics_test/SIMPLE_SUMMARY2.SMSPEC"
|
|
summary_case = rips_instance.project.import_summary_case(casePath)
|
|
assert summary_case.id == 1
|
|
|
|
addresses = summary_case.available_addresses()
|
|
# Summary reader type is controlled from Preferences. libecl reports 343 vectors, opm_common (ESMRY) reports 339.
|
|
# As this configuration can be different, allow both variants
|
|
assert len(addresses.values) == 343 or len(addresses.values) == 339
|
|
|
|
summary_data = summary_case.summary_vector_values("FOPT")
|
|
assert len(summary_data.values) == 60
|
|
|
|
|
|
def test_summary_resample(rips_instance, initialize_test):
|
|
casePath = dataroot.PATH + "/flow_diagnostics_test/SIMPLE_SUMMARY2.SMSPEC"
|
|
summary_case = rips_instance.project.import_summary_case(casePath)
|
|
assert summary_case.id == 1
|
|
|
|
summary_data_sampled = summary_case.resample_values("FOPT", "NONE")
|
|
assert len(summary_data_sampled.values) == 60
|
|
assert len(summary_data_sampled.time_steps) == 60
|
|
|
|
summary_data_sampled = summary_case.resample_values("FOPT", "DAY")
|
|
assert len(summary_data_sampled.values) == 721
|
|
assert len(summary_data_sampled.time_steps) == 721
|
|
|
|
summary_data_sampled = summary_case.resample_values("FOPT", "MONTH")
|
|
assert len(summary_data_sampled.values) == 24
|
|
assert len(summary_data_sampled.time_steps) == 24
|
|
|
|
summary_data_sampled = summary_case.resample_values("FOPT", "QUARTER")
|
|
assert len(summary_data_sampled.values) == 8
|
|
assert len(summary_data_sampled.time_steps) == 8
|
|
|
|
summary_data_sampled = summary_case.resample_values("FOPT", "YEAR")
|
|
assert len(summary_data_sampled.values) == 3
|
|
assert len(summary_data_sampled.time_steps) == 3
|
|
|
|
|
|
@contextlib.contextmanager
|
|
def cd(newdir, cleanup=lambda: True):
|
|
prevdir = os.getcwd()
|
|
os.chdir(os.path.expanduser(newdir))
|
|
try:
|
|
yield
|
|
finally:
|
|
os.chdir(prevdir)
|
|
cleanup()
|
|
|
|
|
|
@contextlib.contextmanager
|
|
def tempdir():
|
|
dirpath = tempfile.mkdtemp()
|
|
|
|
def cleanup():
|
|
shutil.rmtree(dirpath)
|
|
|
|
with cd(dirpath, cleanup):
|
|
yield dirpath
|
|
|
|
|
|
# This test ensures that missing unsmry file is handeled gracefully
|
|
def test_summary_no_unsmry(rips_instance, initialize_test):
|
|
casePathRelative = dataroot.PATH + "/flow_diagnostics_test/SIMPLE_SUMMARY2.SMSPEC"
|
|
|
|
# create an absolute path, as the helper functions used to create a temporary folder does not work
|
|
# with the relative (..\..\) part of the file path
|
|
casePath = os.path.abspath(casePathRelative)
|
|
|
|
with tempdir() as dirpath:
|
|
base_path = os.path.basename(casePath)
|
|
temp_path = os.path.join(dirpath, base_path)
|
|
shutil.copy2(casePath, temp_path)
|
|
|
|
summary_case = rips_instance.project.import_summary_case(temp_path)
|
|
assert summary_case is None
|
|
|
|
def test_summary_set_values(rips_instance, initialize_test):
|
|
casePath = dataroot.PATH + "/flow_diagnostics_test/SIMPLE_SUMMARY2.SMSPEC"
|
|
summary_case = rips_instance.project.import_summary_case(casePath)
|
|
assert summary_case.id == 1
|
|
|
|
addresses = summary_case.available_addresses()
|
|
original_keyword_count = len(addresses.values)
|
|
|
|
summary_data = summary_case.summary_vector_values("FOPT")
|
|
assert len(summary_data.values) == 60
|
|
|
|
summary_case.set_summary_values("FOPT_1", "", summary_data.values)
|
|
generated_summary_data = summary_case.summary_vector_values("FOPT_1")
|
|
assert len(generated_summary_data.values) == 60
|
|
|
|
addresses = summary_case.available_addresses()
|
|
current_keyword_count = len(addresses.values)
|
|
assert current_keyword_count == original_keyword_count + 1
|
|
|
|
# Using existing keyword will overwrite existing data
|
|
summary_case.set_summary_values("FOPT_1", "", summary_data.values)
|
|
addresses = summary_case.available_addresses()
|
|
current_keyword_count = len(addresses.values)
|
|
assert current_keyword_count == original_keyword_count + 1
|
|
|
|
# invalid value count, check that available addresses are unchanged
|
|
summary_case.set_summary_values("FOPT_2", "", [])
|
|
addresses = summary_case.available_addresses()
|
|
current_keyword_count = len(addresses.values)
|
|
assert current_keyword_count == original_keyword_count + 1
|