Skip to content

Commit

Permalink
Merge branch 'main' into add-prescient
Browse files Browse the repository at this point in the history
  • Loading branch information
lbianchi-lbl authored Feb 8, 2022
2 parents 131827a + 7406eff commit e53a1ab
Show file tree
Hide file tree
Showing 452 changed files with 10,554 additions and 4,208 deletions.
2 changes: 1 addition & 1 deletion .github/actions/setup-idaes/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,5 +40,5 @@ runs:
shell: bash -l {0}
run: |
echo '::group::Output of "idaes get-extensions" command'
idaes get-extensions --verbose
idaes get-extensions --extra petsc --verbose
echo '::endgroup::'
11 changes: 10 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,15 @@ computational tools and models to support the design, analysis, optimization,
scale-up, operation and troubleshooting of innovative, advanced energy systems.

<!-- BEGIN Status badges -->
## Build statuses
## Project Build and Download Statuses
![Tests](https://github.com/IDAES/idaes-pse/workflows/Tests/badge.svg?branch=main)
![Integration](https://github.com/IDAES/idaes-pse/workflows/Integration/badge.svg?branch=main)
[![codecov](https://codecov.io/gh/IDAES/idaes-pse/branch/main/graph/badge.svg?token=1lNQNbSB29)](https://codecov.io/gh/IDAES/idaes-pse)
[![Documentation Status](https://readthedocs.org/projects/idaes-pse/badge/?version=latest)](https://idaes-pse.readthedocs.io/en/latest/?badge=latest)
[![GitHub contributors](https://img.shields.io/github/contributors/IDAES/idaes-pse.svg)](https://github.com/IDAES/idaes-pse/graphs/contributors)
[![Merged PRs](https://img.shields.io/github/issues-pr-closed-raw/IDAES/idaes-pse.svg?label=merged+PRs)](https://github.com/IDAES/idaes-pse/pulls?q=is:pr+is:merged)
[![Issue stats](http://isitmaintained.com/badge/resolution/IDAES/idaes-pse.svg)](http://isitmaintained.com/project/IDAES/idaes-pse)
[![Downloads](https://pepy.tech/badge/idaes-pse)](https://pepy.tech/project/idaes-pse)
<!-- END Status badges -->

## Getting Started
Expand Down Expand Up @@ -88,6 +89,14 @@ General, background and overview information is available at the [IDAES main web
Framework development happens at our [GitHub repo](https://github.com/IDAES/idaes-pse) where you can ask questions by starting a [discussion](https://github.com/IDAES/idaes-pse/discussions), [report issues/bugs](https://github.com/IDAES/idaes-pse/issues) or [make contributions](https://github.com/IDAES/idaes-pse/pulls).
For further enquiries, send an email to: <[email protected]>

## Funding acknowledgements

This work was conducted as part of the [Institute for the Design of Advanced Energy Systems (IDAES)](https://idaes.org)
with support through the [Simulation-Based Engineering, Crosscutting Research Program](https://netl.doe.gov/coal/simulation-based-engineering)
within the U.S. Department of Energy’s [Office of Fossil Energy and Carbon Management (FECM)](https://www.energy.gov/fecm/office-fossil-energy-and-carbon-management).
As of 2021, additional support was provided by FECM’s [Solid Oxide Fuel Cell Program](https://www.energy.gov/fecm/science-innovation/clean-coal-research/solid-oxide-fuel-cells),
and [Transformative Power Generation Program](https://www.energy.gov/fecm/science-innovation/office-clean-coal-and-carbon-management/advanced-energy-systems/transformative).

## Contributing

Please see our [Advanced User Guide](https://idaes-pse.readthedocs.io/en/stable/advanced_user_guide/) and [Developer Documentation](https://idaes-pse.readthedocs.io/en/stable/advanced_user_guide/developer/) on how to work with the idaes-pse source code and contirbute changes to the project.
Expand Down
9 changes: 0 additions & 9 deletions docs/advanced_user_guide/index.rst

This file was deleted.

3 changes: 0 additions & 3 deletions docs/copyright.rst

This file was deleted.

File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -4,28 +4,28 @@
.. toctree::
:glob:
:hidden:

*

Flowsheet models are the top level of the IDAES modeling hierarchy. The
flowsheet is implemented with a
:ref:`FlowsheetBlock <technical_specs/core/flowsheet_block:Flowsheet Block>`,
which provides a container for other components. Flowsheet models generally contain
Flowsheet models are the top level of the IDAES modeling hierarchy. The
flowsheet is implemented with a
:ref:`FlowsheetBlock <reference_guides/core/flowsheet_block:Flowsheet Block>`,
which provides a container for other components. Flowsheet models generally contain
three types of components:

1. :ref:`Unit models<user_guide/components/unit_model/index:Unit Model>`, representing unit operations
2. :ref:`Property packages<user_guide/components/property_package/index:Property Package>`, representing the parameters and relationships for property calculations
1. :ref:`Unit models<explanations/components/unit_model/index:Unit Model>`, representing unit operations
2. :ref:`Property packages<explanations/components/property_package/index:Property Package>`, representing the parameters and relationships for property calculations
3. Arcs, representing connections between unit models

The FlowsheetBlock is also where the
:ref:`time domain<user_guide/components/flowsheet/time_domain:Time Domain>`
:ref:`time domain<explanations/components/flowsheet/time_domain:Time Domain>`
is implemented. While the time domain is essential for dynamic modeling,
the time domain exists even for steady state models (single point in time).

Flowsheet models may also contain additional constraints relating to how different unit models
behave and interact, such as control and operational constraints. Generally speaking, if a
constraint is purely internal to a single unit, and does not depend on information from other
units in the flowsheet, then the constraint should be placed inside the relevant unit model.
Flowsheet models may also contain additional constraints relating to how different unit models
behave and interact, such as control and operational constraints. Generally speaking, if a
constraint is purely internal to a single unit, and does not depend on information from other
units in the flowsheet, then the constraint should be placed inside the relevant unit model.
Otherwise, the constraint should be placed at the flowsheet level.


Expand Down
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
Time Domain
===========

Time domain is an essential component of the IDAES framework. When a user first declares a
Flowsheet model a time domain is created, the form of which depends on whether the Flowsheet
is declared to be dynamic or steady-state
(see :ref:`FlowsheetBlock <technical_specs/core/flowsheet_block:Flowsheet Block>`).
In situations where the user makes use of nested flowsheets, each sub-flowsheet refers to its
Time domain is an essential component of the IDAES framework. When a user first declares a
Flowsheet model a time domain is created, the form of which depends on whether the Flowsheet
is declared to be dynamic or steady-state
(see :ref:`FlowsheetBlock <reference_guides/core/flowsheet_block:Flowsheet Block>`).
In situations where the user makes use of nested flowsheets, each sub-flowsheet refers to its
parent flowsheet for the time domain.

Different models may handle the time domain differently, but in general all IDAES models refer
to the time domain of their parent flowsheet. The only exception to this are blocks associated
with Property calculations. PropertyBlocks (i.e. StateBlocks and ReactionBlocks) represent the state of the material at a single point
in space and time, and thus do not contain the time domain. Instead, PropertyBlocks are indexed
by time (and space where applicable) - i.e. there is a separate StateBlock for each point in
time. The user should keep this in mind when working with IDAES models, as it is important for
Different models may handle the time domain differently, but in general all IDAES models refer
to the time domain of their parent flowsheet. The only exception to this are blocks associated
with Property calculations. PropertyBlocks (i.e. StateBlocks and ReactionBlocks) represent the state of the material at a single point
in space and time, and thus do not contain the time domain. Instead, PropertyBlocks are indexed
by time (and space where applicable) - i.e. there is a separate StateBlock for each point in
time. The user should keep this in mind when working with IDAES models, as it is important for
understanding where the time index appears within a model.

In order to facilitate referencing of the time domain, all Flowsheet objects have a `time`
configuration argument which is a reference to the time domain for that flowsheet. All IDAES
models contain a `flowsheet` method which returns the parent flowsheet object, thus a reference
In order to facilitate referencing of the time domain, all Flowsheet objects have a `time`
configuration argument which is a reference to the time domain for that flowsheet. All IDAES
models contain a `flowsheet` method which returns the parent flowsheet object, thus a reference
to the time domain can always be found using the following code: `flowsheet().config.time`.

Another important thing to note is that steady-state models do contain a time domain. While the
time domain for steady-stage models is a single point at time = 0.0, they still contain a
time domain for steady-stage models is a single point at time = 0.0, they still contain a
reference to the time domain and the components (e.g. StateBlocks) are indexed by time.
Original file line number Diff line number Diff line change
Expand Up @@ -22,24 +22,24 @@ detail with a link in their description.

.. rubric:: Flowsheet

:ref:`Flowsheet models<user_guide/components/flowsheet/index:Flowsheet>`
:ref:`Flowsheet models<explanations/components/flowsheet/index:Flowsheet>`
are the top level of the modeling heirachy. Flowsheet models represent
traditional process flowsheets, containing a number of unit models connected together into a
flow network and the property packages.

.. rubric:: Property Package

:ref:`Property packages<user_guide/components/property_package/index:Property Package>` are a
:ref:`Property packages<explanations/components/property_package/index:Property Package>` are a
collection of related models that represent the physical, thermodynamic, and reactive
properties of the process streams.

.. rubric:: Unit Model

:ref:`Unit models<user_guide/components/unit_model/index:Unit Model>`
:ref:`Unit models<explanations/components/unit_model/index:Unit Model>`
represent individual pieces of equipment and their processes.

.. rubric:: Data Management Framework

The :ref:`Data Management Framework <user_guide/components/dmf/index:Data Management Framework>`
The :ref:`Data Management Framework <explanations/components/dmf/index:Data Management Framework>`
is used to manage all the data needed by the platform, including flowsheets, models,
and results. It stores metadata and data in persistent storage.
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
Component Object
================

Component objects are used to identify the chemical
species of interest in a property package and to contain information describing the behavior
of that component (such as properties of that component). Additional information on the
:ref:`Component Class<technical_specs/core/comp:Component Class>` is provided in the technical
Component objects are used to identify the chemical
species of interest in a property package and to contain information describing the behavior
of that component (such as properties of that component). Additional information on the
:ref:`Component Class<reference_guides/core/comp:Component Class>` is provided in the technical
specifications.

The following types of components are currently supported.
Expand All @@ -16,11 +16,11 @@ The following types of components are currently supported.
* `Anion` - component object for representing ion species with a negative charge (`LiquidPhase` only).
* `Cation` - component object for representing ion species with a positive charger(`LiquidPhase` only).

Component objects are intended to store all the necessary information regarding a given
chemical species for use within a process model. Examples of such information include the
methods and parameters required for calculating thermophysical properties. Additionally,
certain unit operations handle components in different ways depending on certain criteria.
An example of this is Reverse Osmosis, where the driving force across the membrane is calculated
Component objects are intended to store all the necessary information regarding a given
chemical species for use within a process model. Examples of such information include the
methods and parameters required for calculating thermophysical properties. Additionally,
certain unit operations handle components in different ways depending on certain criteria.
An example of this is Reverse Osmosis, where the driving force across the membrane is calculated
differently for solvent species and solute species.

Component objects implement the following methods for determining species behavior:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Defining Components
===================

The first step in defining a generic property package is to describe each of the chemical species of interest within the system, including methods for calculating the necessary thermophysical properties of the pure component. Components are defined using :ref:`IDAES Component objects<user_guide/components/property_package/comp:Component Object>`, and are automatically constructed using the `components` configuration argument from the `GenericParameterBlock`.
The first step in defining a generic property package is to describe each of the chemical species of interest within the system, including methods for calculating the necessary thermophysical properties of the pure component. Components are defined using :ref:`IDAES Component objects<explanations/components/property_package/comp:Component Object>`, and are automatically constructed using the `components` configuration argument from the `GenericParameterBlock`.

The `components` Argument
-------------------------
Expand All @@ -17,7 +17,7 @@ Each `GenericParameterBlock` has a configuration argument named `components` whi
Configuration Arguments
-----------------------

The configuration arguments for each chemical species are used to define methods for calculating pure component properties and defining the parameters associated with these. A full list of the supported configuration arguments for `Component` objects can be found :ref:`here<user_guide/components/property_package/comp:Component Object>`.
The configuration arguments for each chemical species are used to define methods for calculating pure component properties and defining the parameters associated with these. A full list of the supported configuration arguments for `Component` objects can be found :ref:`here<explanations/components/property_package/comp:Component Object>`.

Type Argument
^^^^^^^^^^^^^
Expand Down Expand Up @@ -53,7 +53,7 @@ Within the IDAES Generic Property Package Framework, pure component property cor
* functions are used for self-contained correlations with hard-coded parameters,
* classes are used for more generic correlations which require associated parameters.

When providing a method via the `components` configuration argument, users can either provide a pointer to the desired class/method directly, or to a Python module containing a class or method with the same name as the property to be calculated. More details on the uses of these and how to construct your own can be found in the :ref:`developer documentation<user_guide/components/property_package/general/developers:Developing New Property Libraries>`.
When providing a method via the `components` configuration argument, users can either provide a pointer to the desired class/method directly, or to a Python module containing a class or method with the same name as the property to be calculated. More details on the uses of these and how to construct your own can be found in the :ref:`developer documentation<explanations/components/property_package/general/developers:Developing New Property Libraries>`.

Pure Component Libraries
""""""""""""""""""""""""
Expand Down Expand Up @@ -86,7 +86,7 @@ As a given system may incorporate multiple phase equilibria, the `phase_equilibr
"phase_equilibrium_form": {("Vap", "Liq"): fugacity}
The IDAES Generic Property Package Framework contains a library of common forms for the equilibrium condition, which is described :ref:`here<user_guide/components/property_package/general/pe/pe_forms:Library of Common Equilibrium Forms>`.
The IDAES Generic Property Package Framework contains a library of common forms for the equilibrium condition, which is described :ref:`here<explanations/components/property_package/general/pe/pe_forms:Library of Common Equilibrium Forms>`.

Parameter Data
^^^^^^^^^^^^^^
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ In order to create and use a property package using the IDAES Generic Property P
Units of Measurement
--------------------

When defining a property package using the generic framework, users must define the base units for the property package (see :ref:`link<user_guide/components/property_package/uom:Defining Units of Measurement>`). The approach for setting the base units depends on the approach used to define the property package, and is discussed in more detail in each section.
When defining a property package using the generic framework, users must define the base units for the property package (see :ref:`link<explanations/components/property_package/uom:Defining Units of Measurement>`). The approach for setting the base units depends on the approach used to define the property package, and is discussed in more detail in each section.

The Generic Property Package Framework includes the necessary code to convert between different units of measurement as required, allowing users to combine property methods with different sets of units into a single property package. In these cases, each property method is written in its natural units (including parameters), and the final result is automatically converted to the base units.

Expand Down
Loading

0 comments on commit e53a1ab

Please sign in to comment.