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
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. For argument details, see :ref:`Result Definition <result-definition-label>` Arguments: values_iterator(iterator): an iterator to the properties to be set 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_iterator( values_iterator, request) self.__properties_stub.SetActiveCellProperty(request_iterator)
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. For argument details, see :ref:`Result Definition <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 grid_index(int): index to the grid we're setting values 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, 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
def activeCellPropertyAsync(self, propertyType, propertyName, timeStep, porosityModel='MATRIX_MODEL'): """Get a cell property for all active cells. Async, so returns an iterator Arguments: propertyType(str): string enum. See available() propertyName(str): name of an Eclipse property timeStep(int): the time step for which to get the property for porosityModel(str): string enum. See available() Returns: An iterator to a chunk object containing an array of double values You first loop through the chunks and then the values within the chunk to get all values. """ propertyTypeEnum = Properties_pb2.PropertyType.Value(propertyType) porosityModelEnum = Case_pb2.PorosityModelType.Value(porosityModel) request = Properties_pb2.PropertyRequest( case_request=Case_pb2.CaseRequest(id=self.case.id), property_type=propertyTypeEnum, property_name=propertyName, time_step=timeStep, porosity_model=porosityModelEnum) for chunk in self.propertiesStub.GetActiveCellProperty(request): yield chunk
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. For argument details, see :ref:`Result Definition <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 gridIndex(int): index to the grid we're getting values 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, grid_index=grid_index, porosity_model=porosity_model_enum, ) for chunk in self.__properties_stub.GetGridProperty(request): yield chunk
def available(self, propertyType, porosityModel='MATRIX_MODEL'): """Get a list of available properties Arguments: propertyType (str): string corresponding to propertyType enum. Can be one of the following: - DYNAMIC_NATIVE - STATIC_NATIVE - SOURSIMRL - GENERATED - INPUT_PROPERTY - FORMATION_NAMES - FLOW_DIAGNOSTICS - INJECTION_FLOODING porosityModel(str): 'MATRIX_MODEL' or 'FRACTURE_MODEL'. """ propertyTypeEnum = Properties_pb2.PropertyType.Value(propertyType) porosityModelEnum = Case_pb2.PorosityModelType.Value(porosityModel) request = Properties_pb2.AvailablePropertiesRequest( case_request=Case_pb2.CaseRequest(id=self.case.id), property_type=propertyTypeEnum, porosity_model=porosityModelEnum) return self.propertiesStub.GetAvailableProperties( request).property_names
def setGridProperty(self, values, propertyType, propertyName, timeStep, gridIndex=0, porosityModel='MATRIX_MODEL'): """Set a cell property for all grid cells. Arguments: values(list): a list of double precision floating point numbers propertyType(str): string enum. See available() propertyName(str): name of an Eclipse property timeStep(int): the time step for which to get the property for gridIndex(int): index to the grid we're setting values for porosityModel(str): string enum. See available() """ propertyTypeEnum = Properties_pb2.PropertyType.Value(propertyType) porosityModelEnum = Case_pb2.PorosityModelType.Value(porosityModel) request = Properties_pb2.PropertyRequest( case_request=self.case.request, property_type=propertyTypeEnum, property_name=propertyName, time_step=timeStep, grid_index=gridIndex, porosity_model=porosityModelEnum) request_iterator = self.__generatePropertyInputChunks(values, request) reply = self.propertiesStub.SetGridProperty(request_iterator) if reply.accepted_value_count < len(values): raise IndexError
def setActiveCellPropertyAsync(self, values_iterator, propertyType, propertyName, timeStep, porosityModel='MATRIX_MODEL'): """Set a cell property for all active cells. Async, and so takes an iterator to the input values Arguments: values_iterator(iterator): an iterator to the properties to be set propertyType(str): string enum. See available() propertyName(str): name of an Eclipse property timeStep(int): the time step for which to get the property for porosityModel(str): string enum. See available() """ propertyTypeEnum = Properties_pb2.PropertyType.Value(propertyType) porosityModelEnum = Case_pb2.PorosityModelType.Value(porosityModel) request = Properties_pb2.PropertyRequest( case_request=self.case.request, property_type=propertyTypeEnum, property_name=propertyName, time_step=timeStep, porosity_model=porosityModelEnum) request_iterator = self.__generatePropertyInputIterator( values_iterator, request) self.propertiesStub.SetActiveCellProperty(request_iterator)
def __generate_property_input_chunks(self, array, parameters): index = -1 while index < len(array): chunk = Properties_pb2.PropertyInputChunk() if index == -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
def available_properties(self, property_type, porosity_model="MATRIX_MODEL"): """Get a list of available properties For argument details, see :ref:`Result Definition <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