mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#4477 Add python methods to get NNC values (dynamic, static and generated).
Equivalent to GetDynamicNNCValues and GetStaticNNCValues in Octave. Also adds support for generated values which is currently not in Octave.
This commit is contained in:
committed by
Gaute Lindkvist
parent
1a05430123
commit
34d3785709
@@ -1013,3 +1013,81 @@ class Case(PdmObject):
|
||||
for value in chunk.connections:
|
||||
connections.append(value)
|
||||
return connections
|
||||
|
||||
def __nnc_connections_values_async(self, property_name, property_type, time_step):
|
||||
request = NNCProperties_pb2.NNCValuesRequest(case_id=self.case_id,
|
||||
property_name=property_name,
|
||||
property_type=property_type,
|
||||
time_step=time_step)
|
||||
return self.__nnc_properties_stub.GetNNCValues(request)
|
||||
|
||||
def __nnc_values_generator_to_list(self, generator):
|
||||
"""Converts a NNC values generator to a list."""
|
||||
vals = []
|
||||
for chunk in generator:
|
||||
for value in chunk.values:
|
||||
vals.append(value)
|
||||
return vals
|
||||
|
||||
def nnc_connections_static_values_async(self, property_name):
|
||||
"""Get the static NNC values. Async, so returns an iterator.
|
||||
Returns:
|
||||
An iterator to a chunk object containing an list of doubles.
|
||||
Loop through the chunks and then the values within the chunk to get values
|
||||
for all the connections. The order of the list matches the list from
|
||||
nnc_connections, i.e. the nth object of nnc_connections() refers to nth
|
||||
value in this list.
|
||||
"""
|
||||
return self.__nnc_connections_values_async(property_name, NNCProperties_pb2.NNC_STATIC, 0)
|
||||
|
||||
def nnc_connections_static_values(self, property_name):
|
||||
"""Get the static NNC values.
|
||||
Returns:
|
||||
A list of doubles. The order of the list matches the list from
|
||||
nnc_connections, i.e. the nth object of nnc_connections() refers to nth
|
||||
value in this list.
|
||||
"""
|
||||
generator = self.nnc_connections_static_values_async(property_name)
|
||||
return self.__nnc_values_generator_to_list(generator)
|
||||
|
||||
def nnc_connections_dynamic_values_async(self, property_name, time_step):
|
||||
"""Get the dynamic NNC values. Async, so returns an iterator.
|
||||
Returns:
|
||||
An iterator to a chunk object containing an list of doubles.
|
||||
Loop through the chunks and then the values within the chunk to get values
|
||||
for all the connections. The order of the list matches the list from
|
||||
nnc_connections, i.e. the nth object of nnc_connections() refers to nth
|
||||
value in this list.
|
||||
"""
|
||||
return self.__nnc_connections_values_async(property_name, NNCProperties_pb2.NNC_DYNAMIC, time_step)
|
||||
|
||||
def nnc_connections_dynamic_values(self, property_name, time_step):
|
||||
"""Get the dynamic NNC values.
|
||||
Returns:
|
||||
A list of doubles. The order of the list matches the list from
|
||||
nnc_connections, i.e. the nth object of nnc_connections() refers to nth
|
||||
value in this list.
|
||||
"""
|
||||
generator = self.nnc_connections_dynamic_values_async(property_name, time_step)
|
||||
return self.__nnc_values_generator_to_list(generator)
|
||||
|
||||
def nnc_connections_generated_values_async(self, property_name, time_step):
|
||||
"""Get the generated NNC values. Async, so returns an iterator.
|
||||
Returns:
|
||||
An iterator to a chunk object containing an list of doubles.
|
||||
Loop through the chunks and then the values within the chunk to get values
|
||||
for all the connections. The order of the list matches the list from
|
||||
nnc_connections, i.e. the nth object of nnc_connections() refers to nth
|
||||
value in this list.
|
||||
"""
|
||||
return self.__nnc_connections_values_async(property_name, NNCProperties_pb2.NNC_GENERATED, time_step)
|
||||
|
||||
def nnc_connections_generated_values(self, property_name, time_step):
|
||||
"""Get the generated NNC values.
|
||||
Returns:
|
||||
A list of doubles. The order of the list matches the list from
|
||||
nnc_connections, i.e. the nth object of nnc_connections() refers to nth
|
||||
value in this list.
|
||||
"""
|
||||
generator = self.nnc_connections_generated_values_async(property_name, time_step)
|
||||
return self.__nnc_values_generator_to_list(generator)
|
||||
|
||||
@@ -23,7 +23,7 @@ def test_10kSync(rips_instance, initialize_test):
|
||||
assert("Binary Formation Allen" == properties[1].name)
|
||||
assert(NNCProperties_pb2.NNCPropertyType.NNC_GENERATED == properties[1].property_type)
|
||||
assert("Formation Allen" == properties[2].name)
|
||||
assert(NNCProperties_pb2.NNCPropertyType.NNC_GENERATED == properties[2].property_type)
|
||||
assert(NNCProperties_pb2.NNCPropertyType.NNC_GENERATED == properties[2].property_type)
|
||||
|
||||
nnc_connections = case.nnc_connections()
|
||||
assert(len(nnc_connections) == 84759)
|
||||
@@ -33,3 +33,28 @@ def test_10kSync(rips_instance, initialize_test):
|
||||
assert(connection.cell1.j == 40)
|
||||
assert(connection.cell1.k == 14)
|
||||
assert(connection.cell_grid_index1 == 0)
|
||||
|
||||
tran_vals = case.nnc_connections_static_values("TRAN")
|
||||
assert(len(tran_vals) == len(nnc_connections))
|
||||
|
||||
for t in tran_vals:
|
||||
assert(isinstance(t, float))
|
||||
|
||||
allen_vals = case.nnc_connections_generated_values("Formation Allen", 0)
|
||||
assert(len(allen_vals) == len(nnc_connections))
|
||||
|
||||
for a in allen_vals:
|
||||
assert(isinstance(a, float))
|
||||
|
||||
def test_non_existing_dynamic_values(rips_instance, initialize_test):
|
||||
casePath = dataroot.PATH + "/TEST10K_FLT_LGR_NNC/TEST10K_FLT_LGR_NNC.EGRID"
|
||||
case = rips_instance.project.load_case(path=casePath)
|
||||
|
||||
with pytest.raises(grpc.RpcError):
|
||||
case.nnc_connections_dynamic_values("x", 0)
|
||||
|
||||
def test_invalid_time_steps(rips_instance, initialize_test):
|
||||
casePath = dataroot.PATH + "/TEST10K_FLT_LGR_NNC/TEST10K_FLT_LGR_NNC.EGRID"
|
||||
case = rips_instance.project.load_case(path=casePath)
|
||||
with pytest.raises(grpc.RpcError):
|
||||
case.nnc_connections_generated_values("Formation Allen", 9999)
|
||||
|
||||
Reference in New Issue
Block a user