Пример #1
0
def __generate_property_input_iterator(self, values_iterator, parameters):
    chunk = Properties_pb2.PropertyInputChunk()
    chunk.params.CopyFrom(parameters)
    yield chunk

    for values in values_iterator:
        valmsg = Properties_pb2.PropertyChunk(values=values)
        chunk.values.CopyFrom(valmsg)
        yield chunk
Пример #2
0
def set_grid_property(self,
                      values,
                      property_type,
                      property_name,
                      time_step,
                      grid_index=0,
                      porosity_model="MATRIX_MODEL"):
    """Set a cell property for all grid cells.

        Arguments:
            values(list): a list of double precision floating point numbers
            property_type(str): string enum. See available()
            property_name(str): name of an Eclipse property
            time_step(int): the time step for which to get the property for
            grid_index(int): index to the grid we're setting values for
            porosity_model(str): string enum. See available()
    """
    property_type_enum = Properties_pb2.PropertyType.Value(property_type)
    porosity_model_enum = Case_pb2.PorosityModelType.Value(porosity_model)
    request = Properties_pb2.PropertyRequest(
        case_request=self.__request(),
        property_type=property_type_enum,
        property_name=property_name,
        time_step=time_step,
        grid_index=grid_index,
        porosity_model=porosity_model_enum,
    )
    request_iterator = self.__generate_property_input_chunks(values, request)
    reply = self.__properties_stub.SetGridProperty(request_iterator)
    if reply.accepted_value_count < len(values):
        raise IndexError
Пример #3
0
def set_active_cell_property_async(self,
                                   values_iterator,
                                   property_type,
                                   property_name,
                                   time_step,
                                   porosity_model="MATRIX_MODEL"):
    """Set cell property for all active cells Async. Takes an iterator to the input values

        Arguments:
            values_iterator(iterator): an iterator to the properties to be set
            property_type(str): string enum. See available()
            property_name(str): name of an Eclipse property
            time_step(int): the time step for which to get the property for
            porosity_model(str): string enum. See available()
    """
    property_type_enum = Properties_pb2.PropertyType.Value(property_type)
    porosity_model_enum = Case_pb2.PorosityModelType.Value(porosity_model)
    request = Properties_pb2.PropertyRequest(
        case_request=self.__request(),
        property_type=property_type_enum,
        property_name=property_name,
        time_step=time_step,
        porosity_model=porosity_model_enum,
    )

    request_iterator = self.__generate_property_input_iterator(
        values_iterator, request)
    self.__properties_stub.SetActiveCellProperty(request_iterator)
Пример #4
0
def grid_property_async(self,
                        property_type,
                        property_name,
                        time_step,
                        grid_index=0,
                        porosity_model="MATRIX_MODEL"):
    """Get a cell property for all grid cells. Async, so returns an iterator

        Arguments:
            property_type(str): string enum. See available()
            property_name(str): name of an Eclipse property
            time_step(int): the time step for which to get the property for
            gridIndex(int): index to the grid we're getting values for
            porosity_model(str): string enum. See available()

        Returns:
            An iterator to a chunk object containing an array of double values
            Loop through the chunks and then the values within the chunk to get all values.
    """
    property_type_enum = Properties_pb2.PropertyType.Value(property_type)
    porosity_model_enum = Case_pb2.PorosityModelType.Value(porosity_model)
    request = Properties_pb2.PropertyRequest(
        case_request=self.__request(),
        property_type=property_type_enum,
        property_name=property_name,
        time_step=time_step,
        grid_index=grid_index,
        porosity_model=porosity_model_enum,
    )
    for chunk in self.__properties_stub.GetGridProperty(request):
        yield chunk
Пример #5
0
def available_properties(self, property_type, porosity_model="MATRIX_MODEL"):
    """Get a list of available properties

    Arguments:
        property_type (str): string corresponding to property_type enum. Choices:
            - DYNAMIC_NATIVE
            - STATIC_NATIVE
            - SOURSIMRL
            - GENERATED
            - INPUT_PROPERTY
            - FORMATION_NAMES
            - FLOW_DIAGNOSTICS
            - INJECTION_FLOODING

        porosity_model(str): 'MATRIX_MODEL' or 'FRACTURE_MODEL'.
    """

    property_type_enum = Properties_pb2.PropertyType.Value(property_type)
    porosity_model_enum = Case_pb2.PorosityModelType.Value(porosity_model)
    request = Properties_pb2.AvailablePropertiesRequest(
        case_request=self.__request(),
        property_type=property_type_enum,
        porosity_model=porosity_model_enum,
    )
    return self.__properties_stub.GetAvailableProperties(
        request).property_names
Пример #6
0
def set_active_cell_property(self,
                             values,
                             property_type,
                             property_name,
                             time_step,
                             porosity_model="MATRIX_MODEL"):
    """Set a cell property for all active cells. For argument details, see :ref:`result-definition-label`

        Arguments:
            values(list): a list of double precision floating point numbers
            property_type(str): string enum
            property_name(str): name of an Eclipse property
            time_step(int): the time step for which to get the property for
            porosity_model(str): string enum
    """
    property_type_enum = Properties_pb2.PropertyType.Value(property_type)
    porosity_model_enum = Case_pb2.PorosityModelType.Value(porosity_model)
    request = Properties_pb2.PropertyRequest(
        case_request=self.__request(),
        property_type=property_type_enum,
        property_name=property_name,
        time_step=time_step,
        porosity_model=porosity_model_enum,
    )
    request_iterator = self.__generate_property_input_chunks(values, request)
    reply = self.__properties_stub.SetActiveCellProperty(request_iterator)
    if reply.accepted_value_count < len(values):
        raise IndexError
Пример #7
0
def selected_cell_property_async(self,
                                 property_type,
                                 property_name,
                                 time_step,
                                 porosity_model="MATRIX_MODEL"):
    """Get a cell property for all selected cells. Async, so returns an iterator. For argument details, see :ref:`result-definition-label`

        Arguments:
            property_type(str): string enum
            property_name(str): name of an Eclipse property
            time_step(int): the time step for which to get the property for
            porosity_model(str): string enum

        Returns:
            An iterator to a chunk object containing an array of double values
            Loop through the chunks and then the values within the chunk to get all values.
    """
    property_type_enum = Properties_pb2.PropertyType.Value(property_type)
    porosity_model_enum = Case_pb2.PorosityModelType.Value(porosity_model)
    request = Properties_pb2.PropertyRequest(
        case_request=self.__request(),
        property_type=property_type_enum,
        property_name=property_name,
        time_step=time_step,
        porosity_model=porosity_model_enum,
    )
    for chunk in self.__properties_stub.GetSelectedCellProperty(request):
        yield chunk
Пример #8
0
def __generate_property_input_chunks(self, array, parameters):
    index = -1
    while index < len(array):
        chunk = Properties_pb2.PropertyInputChunk()
        if index is -1:
            chunk.params.CopyFrom(parameters)
            index += 1
        else:
            actual_chunk_size = min(len(array) - index + 1, self.chunk_size)
            chunk.values.CopyFrom(
                Properties_pb2.PropertyChunk(values=array[index:index +
                                                          actual_chunk_size]))
            index += actual_chunk_size

        yield chunk
    # Final empty message to signal completion
    chunk = Properties_pb2.PropertyInputChunk()
    yield chunk
Пример #9
0
def available_properties(self, property_type, porosity_model="MATRIX_MODEL"):
    """Get a list of available properties

    For argument details, see :ref:`result-definition-label`

    Arguments:
        property_type (str): string corresponding to property_type enum.
        porosity_model(str): 'MATRIX_MODEL' or 'FRACTURE_MODEL'.
    """

    property_type_enum = Properties_pb2.PropertyType.Value(property_type)
    porosity_model_enum = Case_pb2.PorosityModelType.Value(porosity_model)
    request = Properties_pb2.AvailablePropertiesRequest(
        case_request=self.__request(),
        property_type=property_type_enum,
        porosity_model=porosity_model_enum,
    )
    return self.__properties_stub.GetAvailableProperties(
        request).property_names