Property Interrogator Tool#
When preparing to model a process flowsheet, it is necessary to specify models for all the thermophysical and kinetic properties that will be required by the different unit operations to simulate the process. However, it is often difficult to know what properties will be required a priori. The IDAES Property Interrogator tool allows a user to define a general flowsheet structure and interrogate it for the full list of properties that will be required, thus informing them of what methods they will need to define in their property package(s).
Tool Usage#
The IDAES Properties Interrogator tool consists of two classes; a PropertiesInterrogatorBlock and a ReactionInterrogatorBlock. These blocks are used in place of the normal PhysicalParameterBlock and ReactionParameterBlock whilst declaring a flowsheet, however rather than constructing a solvable flowsheet they record all calls for properties made whilst constructing the flowsheet. These Blocks then contain a number of methods for reporting the logged property calls for the user.
An example of how Property Interrogator tool is used is shown below:
import pyomo.environ as pyo # Pyomo environment
from idaes.core import FlowsheetBlock
from idaes.models.unit_models import CSTR
from idaes.models.properties.interrogator import PropertyInterrogatorBlock, ReactionInterrogatorBlock
m = pyo.ConcreteModel()
m.fs = FlowsheetBlock(dynamic=True, time_units=pyo.units.s)
m.fs.params = PropertyInterrogatorBlock()
m.fs.rxn_params = ReactionInterrogatorBlock(
property_package=m.fs.params
)
m.fs.R01 = CSTR(
property_package=m.fs.params,
reaction_package=m.fs.rxn_params,
has_heat_of_reaction=True
)
Note
Flowsheets constructed using the Property Interrogator tools are not solvable flowsheets, and will result in errors if sent to a solver.
Output and Display Methods#
Both the PropertiesInterrogatorBlock and ReactionInterrogatorBlock support the following methods for reporting the results of the flowsheet interrogation. The PropertiesInterrogatorBlock will contain a summary of all thermophysical properties expected of a StateBlock in the flowsheet, whilst the ReactionInterrogatorBlock will contain a summary of all reaction related properties required of a ReactionBlock.
list_required_properties() - returns a list containing all properties called for by the flowsheet.
print_required_properties() - prints a summary of the required properties
list_models_requiring_property(property) - returns a list of unit models within the flowsheet that require the given property
print_models_requiring_property(property) - prints the name of all unit models within the flowsheet that require the given property
list_properties_required_by_model(model) - returns a list of all properties required by a given unit model in the flowsheet
print_properties_required_by_model(model) - prints a summary of all properties required by a given unit model in the flowsheet
For more details on these methods, see the detailed class documentation below.
Additionally, the PropertiesInterrogatorBlock and ReactionInterrogatorBlock contain a dict named required_properties which stores the data regarding the properties required by the model. The keys of this dict are the names of all the properties required (as strings) and the values are a list of names for the unit models requiring the given property.
Class Documentation#
- class idaes.models.properties.interrogator.properties_interrogator.PropertyInterrogatorBlock(*args, **kwds)#
- Parameters:
rule (function) – A rule function or None. Default rule calls build().
concrete (bool) – If True, make this a toplevel model. Default - False.
ctype (class) –
Pyomo ctype of the block. Default - pyomo.environ.Block
Config args
- default_arguments
Default arguments to use with Property Package
- phase_list
User defined phase list. Dict with form {name: Type}
- component_list
User defined component list. Dict with form {name: Type}
initialize (dict) – ProcessBlockData config for individual elements. Keys are BlockData indexes and values are dictionaries with config arguments as keys.
idx_map (function) – Function to take the index of a BlockData element and return the index in the initialize dict from which to read arguments. This can be provided to override the default behavior of matching the BlockData index exactly to the index in initialize.
- Returns:
(PropertyInterrogatorBlock) New instance
- class idaes.models.properties.interrogator.properties_interrogator.PropertyInterrogatorData(component)[source]#
Interrogator Parameter Block Class
This class contains the methods and attributes for recording and displaying the properties required by the flowsheet.
- classmethod define_metadata(obj)[source]#
Set all the metadata for properties and units.
This method should be implemented by subclasses. In the implementation, they should set information into the object provided as an argument.
- Parameters:
pcm (PropertyClassMetadata) – Add metadata to this object.
- Returns:
None
- list_models_requiring_property(prop)[source]#
Method to list all models in the flowsheet requiring the given property.
- Parameters:
prop – the property of interest
- Returns:
A list of unit model names which require prop
- list_properties_required_by_model(model)[source]#
Method to list all thermophysical properties required by a given unit model.
- Parameters:
model – the unit model of interest. Can be given as either a model component or the unit name as a string
- Returns:
A list of thermophysical properties required by model
- list_required_properties()[source]#
Method to list all thermophysical properties required by the flowsheet.
- Parameters:
None
- Returns:
A list of properties required
- print_models_requiring_property(prop, ostream=None)[source]#
Method to print a summary of the models in the flowsheet requiring a given property.
- Parameters:
prop – the property of interest.
ostream – output stream to print to. If not provided will print to sys.stdout
- Returns:
None
- class idaes.models.properties.interrogator.reactions_interrogator.ReactionInterrogatorBlock(*args, **kwds)#
- Parameters:
rule (function) – A rule function or None. Default rule calls build().
concrete (bool) – If True, make this a toplevel model. Default - False.
ctype (class) –
Pyomo ctype of the block. Default - pyomo.environ.Block
Config args
- property_package
Reference to associated PropertyPackageParameter object
- default_arguments
Default arguments to use with Property Package
initialize (dict) – ProcessBlockData config for individual elements. Keys are BlockData indexes and values are dictionaries with config arguments as keys.
idx_map (function) – Function to take the index of a BlockData element and return the index in the initialize dict from which to read arguments. This can be provided to override the default behavior of matching the BlockData index exactly to the index in initialize.
- Returns:
(ReactionInterrogatorBlock) New instance
- class idaes.models.properties.interrogator.reactions_interrogator.ReactionInterrogatorData(component)[source]#
Interrogator Parameter Block Class
This class contains the methods and attributes for recording and displaying the reaction properties required by the flowsheet.
- classmethod define_metadata(obj)[source]#
Set all the metadata for properties and units.
This method should be implemented by subclasses. In the implementation, they should set information into the object provided as an argument.
- Parameters:
pcm (PropertyClassMetadata) – Add metadata to this object.
- Returns:
None
- list_models_requiring_property(prop)[source]#
Method to list all models in the flowsheet requiring the given property.
- Parameters:
prop – the property of interest
- Returns:
A list of unit model names which require prop
- list_properties_required_by_model(model)[source]#
Method to list all reaction properties required by a given unit model.
- Parameters:
model – the unit model of interest. Can be given as either a model component or the unit name as a string
- Returns:
A list of reaction properties required by model
- list_required_properties()[source]#
Method to list all reaction properties required by the flowsheet.
- Parameters:
None
- Returns:
A list of properties required
- print_models_requiring_property(prop, ostream=None)[source]#
Method to print a summary of the models in the flowsheet requiring a given property.
- Parameters:
prop – the property of interest.
ostream – output stream to print to. If not provided will print to sys.stdout
- Returns:
None