idaes-pse icon indicating copy to clipboard operation
idaes-pse copied to clipboard

Proposal for higher level abstraction of flowsheet models, flowsheet units, and automated flowsheet construction

Open avdudchenko opened this issue 1 year ago • 9 comments
trafficstars

There is a need for an abstraction layer that can support developing preconfigured unit models and flowsheets, that could enable automated construction of complex flowsheets and their use in GUI. Currently, unit models in IDAES/WaterTAP, etc are designed as abstract units that can be modified/used in an infinite number of ways, but many users want standard units that can be used right away for typical process simulation and analysis (example: Reverse osmosis, requires pump, RO unit and maybe ERD. This means a user needs to build a flowsheet with at least these three unit models to do a basic analysis, or adapt another flowsheet) Furthermore, there is a need to be able to easily assemble flowsheet units in any number of configurations, for example multi-stage processes or where unit order is changed. Right now this is done manually, resulting in the development of bespoke flowsheets and unit model configurations that are not portable, in many cases these flowsheets grow in complexity and become impossible to maintain or navigate. If a standard rigid structure is adopted for how flowsheet units are configured and built, it is possible to:

  1. Develop flowsheet units that can be duplicated and used in different places on a flowsheet
  2. Provide intuitive API for UI software or higher-level code-based API to interact with unit models
  3. Provide an automated method to assemble flowsheets, initialize them, and perform analysis. I propose the development of three classes within IDAES to support this capability:
  4. FlowsheetBase – provides base configuration for the flowsheet o This houses utilities/properties/functions accessible to all unit models on the flowsheet, and all unit models are built on the FlowsheetBase
  5. FlowsheetUnit – This houses all information for unit desi gned to be built on a flowsheet base, unlike a normal unit model, these units have to be preconfigured for a standard rigid operation expected of the underlying sub-unit model.
  6. FlowsheetBuilder - This is a tool that would manage the FlowsheetBase and FlowsheetUnits to provide automated construction, initialization, and scaling of unit models in order requested by user using simple API calls (Similar to flowsheet_builder tool – for example using strings to configure order of unit operations), this would act as code based UI. o This might not be a block constructed on a model, but a separate tool entirely

The detailed proposal that includes the functions for each class and requirements or more or less are in the attached word doc/pdf

Proposal for the higher level abstraction of flowsheet models.pdf

Proposal for higher level abstraction of flowsheet models.docx

Related Issues:

  • [ ] #66

avdudchenko avatar Oct 17 '24 19:10 avdudchenko