Releases: IDAES/idaes-pse
2.8 Release
2.8 Release
Start with our online documentation to get started with install instructions, examples, etc.
IDAES-PSE 2.8.0 Release Highlights
- Pyomo 6.9.1 update
- Improvements to
get-extensions
to list platform details - Improvements to the Greybox, Price Taker following models
- Improvements to the Helmholtz and SmoothVLE2 property packages
- Add support for isothermal conditions in control volumes
- Various documentation and UI improvements
Detailed changes from 2.7.0 release
Detailed changes from 2.7.0 release:
- List binary platforms and architectures by @dangunter in #1546
- Add support for Greybox model DOF counitng in degrees_of_freedom function by @avdudchenko in #1512
- Add support for isothermal conditions in control volumes. by @andrewlee94 in #1558
- Add explicit configuration path for ReadtheDocs by @mrmundt in #1553
- Fix
set_parameter_path
in Helmholtz Property Package by @bertkdowns in #1530 - Checks for variables with None value in NLP by @dallan-keylogic in #1564
- Small fixes for instructions on how to build docs locally by @ksbeattie in #1568
- changed macosx tutorial to properly handle different mac arch possibi⦠by @azaidi06 in #1544
- Price taker model for DISPATCHES, Rehashed by @djlaky, @radhakrishnatg & @MarcusHolly in #1358
- Wrap 0D Fixed Bed TSA unit model in
extra_models/fixed_bed_tsa0d
for Flowsheet Processor UI by @dangunter in #1493 - updated importlib.resources to stop using deprecated path function by @azaidi06 in #1550
- Fix bugs in SmoothVLE2 initialization by @dallan-keylogic in #1563
- Add mapping to use ubuntu2204 build of idaes-ext on Ubuntu 24.04 by @lbianchi-lbl in #1559
- Temporarily exclude sphinx 8.2.0 to fix doctests by @blnicho in #1572
- Update Pyomo requirement to the 6.9.1 release by @blnicho in #1587
New Contributors
- @bertkdowns made their first contribution in #1530
- @djlaky made their first contribution in #1358
Full Changelog: 2.7.0...2.8.0
2.7 Release
2.7 Release
Start with our online documentation to get started with install instructions, examples, etc.
IDAES-PSE 2.7.0 Release Highlights
New features
- AutoScaler and CustomScalerBase classes
- Scaler for equilibrium reactor and saponification properties
- ONNX Surrogate support from OMLT
- 1D Membrane Model for CO2 Capture and Utilization
- StreamScaler unit model
Bug fixes or improvements:
- Scaling, EoS, Diagnostics tool, Modular Properties, tests & documentation
Deprecations:
- Old Cubic EoS
Detailed Changes from 2.6 Release
Detailed Changes (by PR)
- Fixing scaling bug related to external functions with string arguments by @andrewlee94 in #1487
- Add minimal pytest plugin to verify that generated files are cleaned up by tests by @lbianchi-lbl in #1488
- Add new AutoScaler and CustomScalerBase classes by @andrewlee94 in #1429
- Fix issue with enthalpy based states trying to use EoS before construciton by @andrewlee94 in #1505
- pinned ubuntu version to resolve failing gha jobs until support avail⦠by @azaidi06 in #1506
- Scaler for equilibrium reactor and saponification properties by @andrewlee94 in #1500
- Minor improvements to scaling API by @andrewlee94 in #1507
- Address minor issues identified in 10/24 Code Audit by @andrewlee94 in #1504
- Better error messages for Modular Properties when config dict in not unpacked by @andrewlee94 in #1515
- Adds ONNX Surrogate support from OMLT by @avdudchenko in #1308
- Diagnostics tool for ill-posed constraints by @andrewlee94 in #1454
- New URL for Downloads Badge by @mrmundt in #1526
- Bumping the IDAES tag of Pyomo to check for issues by @blnicho in #1523
- Prune down unused dev dependencies by @lbianchi-lbl in #1533
- removed jenkinsfile and entire docker folder by @azaidi06 in #1535
- Deprecate old Cubic EoS by @dallan-keylogic in #1519
- updated all mentions/use of anaconda/miniconda to reflect usage of mi⦠by @azaidi06 in #1513
- Update conda install commands after idaes-pse was added to conda-forge by @lbianchi-lbl in #1543
- Add a mapping for Pop!_OS (default for System76 laptops) to get-extensions by @dangunter in #1534
- Shorten names of files causing installation errors (#1540) by @lbianchi-lbl in #1545
- 1D Membrane Model for CO2 Capture and Utilization by @Morgan88888888 in #1378
- Adding StreamScaler unit model, along with the test and rst file. by @tannerpolley in #1517
New Contributors
- @azaidi06 made their first contribution in #1506
- @avdudchenko made their first contribution in #1308
- @tannerpolley made their first contribution in #1517
Full Changelog: 2.6.0...2.7.0
2.6 Release
2.6 Release
Start with our online documentation to get started with install instructions, examples, etc.
IDAES-PSE 2.6.0 Release Highlights
Upcoming Changes
- IDAES will be switching to the new Pyomo solver interface in the next release. Whilst this will hopefully be a smooth transition for most users, there are a few important changes to be aware of.
- The new solver interface uses a different version of the IPOPT writer (βipopt_v2β) and thus any custom configuration options you might have set for IPOPT will not carry over and will need to be reset.
- By default, the new Pyomo linear presolver will be activated with ipopt_v2. Whilst are working to identify any bugs in the presolver, it is possible that some edge cases will remain.
- IDAES will begin deploying a new set of scaling tools and APIs over the next few releases that make use of the new solver writers.
- The old scaling tools and APIs will remain for backward compatibility but will begin to be deprecated.
New Models, Tools and Features
- New Intersphinx extension automatically linking Jupyter notebook examples to project documentation
- New end-to-end diagnostics example demonstrated on a real problem
- New complementarity formulation for VLE with cubic equations of state, backward compatibility for old formulation
- New solver interface with presolve (ipopt_v2) in support of upcoming changes to the initialization and APIs methods, with default set to ipopt to maintain backwards compatibility; this will deprecate once all examples have been updated
- New forecaster and parameterized bidder methods within grid integration library
- Updated surrogates API and examples to support Keras 3, with backwards compatibility for older formats such as TensorFlow SavedModel (TFSM)
- Updated costing base dictionary to include the 2023 cost year index value
- Updated
ProcessBlock
to include information on the constructing block class - Updated Flowsheet Visualizer to allow
visualize()
method to return value and functions
Bug Fixes
- Fixed bug in the Modular Property Framework that would cause errors when trying to use phase-based material balances with phase equilibria.
- Fixed bug in Modular Properties Framework that caused errors when initializing models with non-vapor-liquid phase equilibria.
- Fixed typos flagged by June update to
crate-ci/typos
and removed DMF-related exceptions - Minor corrections of units of measurement handling in power plant waste/transport costing expressions, control volume material holdup expressions, and BTX property package parameters
- Fixed throwing >7500
numpy
deprecation warnings by replacing scalar value assignment with element extraction and item iteration calls
Testing and Robustness
- Migrated slow tests (>10s) to integration, impacting test coverage but also yielding a nearly 30% decrease in local test runtime
- Pinned
pint
to avoid issues with older supported Python versions - Pinned
codecov
versions to avoid tokenless upload behavior with latest version - Bumped
extensions
to version 3.4.2 to allow pointing to non-standard install location
Deprecations and Removals
- Python 3.8 is no longer supported. The supported Python versions are 3.9 through 3.12
- The Data Management Framework (DMF) is no longer supported. Importing
idaes.core.dmf
will cause a deprecation warning to be displayed until the next release - The SOFC Keras surrogates have been removed. The current version of the SOFC surrogate model in the examples repository is a PySMO Kriging model.
Detailed changes from 2.5.0 release
Detailed changes from 2.5.0 release
- Fix some bugs in the modular properties implementation by @andrewlee94 in #1425
- Limiting pint version by @andrewlee94 in #1438
- Add new Complementarity formualtion for VLE with cubic EoSs by @andrewlee94 in #1397
- Activating IPOPT_V2 with presolver by @andrewlee94 in #1436
- Moving some slow tests to integration by @andrewlee94 in #1442
- Fix Typos From June Spell Checker Update by @bpaul4 in #1448
- Add 2023 CEPCI Value by @bpaul4 in #1447
- Specify Codecov version to work around codecov/codecov-action#1487 by @lbianchi-lbl in #1441
- Minor Power Plant Costing Fixes by @bpaul4 in #1418
- Updating copyright to 2024 by @ksbeattie in #1440
- Add code references to gas solid contactors docs by @bpaul4 in #1451
- Renewable + PEM Parameterized Bidder by @Xinhe-Chen in #1407
- Remove support for Python 3.8 by @lbianchi-lbl in #1467
- Repair erroneous units for material_holdup in CV0D when mass basis defined by @adam-a-a in #1460
- Keras file format updates by @rundxdi in #1401
- Bump extensions version to 3.4.2 by @Robbybp in #1473
- Add reference to constructing class in ProcessBlock by @bknueven in #1414
- Update Pyomo requirement to 6.8.0 release by @blnicho in #1465
- PySMO: fix warnings by @OOAmusat in #1472
- Remove SOFC Keras Surrogates And Tests by @bpaul4 in #1475
- add UI return, then visualize() can return now by @CopyDemon in #1466
- Updating BTX param with units by @JavalVyas2000 in #1478
- Pin typos version to latest currently available tag v1.24.5 by @lbianchi-lbl in #1486
- Remove idaes.core.dmf and related code by @lbianchi-lbl in #1484
- Add basis to conc example on property naming conventions docs by @kurbansitterley in #1482
New Contributors
- @Xinhe-Chen made their first contribution in #1407
- @CopyDemon made their first contribution in #1466
- @kurbansitterley made their first contribution in #1482
Full Changelog: 2.5.0...2.6.0
2.5 Release
2.5 Release
Start with our online documentation to get started with install instructions, examples, etc.
IDAES-PSE 2.5.0 Release Highlights
Upcoming Changes
- IDAES will be switching to the new Pyomo solver interface in the next release. Whilst this will hopefully be a smooth transition for most users, there are a few important changes to be aware of.
- The new solver interface uses a different version of the IPOPT writer (βipopt_v2β) and thus any custom configuration options you might have set for IPOPT will not carry over and will need to be reset.
- By default, the new Pyomo linear presolver will be activated with ipopt_v2. Whilst are working to identify any bugs in the presolver, it is possible that some edge cases will remain.
- IDAES will begin deploying a new set of scaling tools and APIs over the next few releases that make use of the new solver writers.
- The old scaling tools and APIs will remain for backward compatibility but will begin to be deprecated.
New Models, Tools and Features
- New diagnostics check for near-parallel variables and constraints.
- New diagnostics tools for identifying causes of infeasibility in models.
- New example for creating a custom model of a liquid-liquid extractor unit operation.
Bug Fixes
- Fixed bug in Gibbs reactor that caused it to appear to have additional spurious degrees of freedom.
- Fixed bug in the Modular Property Framework that would cause errors when trying to use phase-based material balances with phase equilibria.
- Fixed bug in Modular Properties Framework that caused errors when initializing models with non-vapor-liquid phase equilibria.
Testing and Robustness
- Deployed the IDAES Diagnostics Toolbox to confirm that there are no structural or numerical issues in the core model libraries.
- Additional robustness tests for core model, and some associated improvements in the converge tester class.
- Fixed a number of issues that were causing unexpected warnings to be emitted during testing.
Deprecations and Removals
Removed examples for RIPE tool which has not been supported for a number of releases.
What's Changed
- Add constraint to exclude TensorFlow 2.16.1 and above by @lbianchi-lbl in #1373
- Update imports of
native_types
andpyomo_constant_types
in scaling module by @Robbybp in #1366 - Restore ability to run pytest on individual files or directories by @lbianchi-lbl in #1362
- Tweaks to convergence tester by @andrewlee94 in #1377
- Add diagnostics tests for all unit models by @andrewlee94 in #1375
- Resolve CI failures from new version (1.20.4) of spellchecker by @lbianchi-lbl in #1389
- Fix target for 'fv' (flowsheet visualizer) reference by @dangunter in #1391
- Updating black and rerunning it on all files by @ksbeattie in #1388
- Fixing spurious DoF in Gibbs reactor model by @andrewlee94 in #1393
- Update parameter sweep tool to support indexed vars by @andrewlee94 in #1387
- Adding attributes to hold units used by MSContactor by @andrewlee94 in #1396
- Crossflow hx by @dallan-keylogic in #1382
- bug fix for issue #1364: catch AttributeError in set_scaling_from_default by @jasonmbray-p66 in #1400
- Add parallel constraint/variable check to
report_numerical_issues
by @Robbybp in #1385 - Address many unexpected warnings in pytest by @andrewlee94 in #1403
- Renaming components by @andrewlee94 in #1402
- Update the Pyomo tag to the 6.7.2 release by @blnicho in #1406
- Infeasibility diagnostic tool by @bknueven in #1409
- Allow upwinding in 1D Heat exchanger by @dallan-keylogic in #1383
- Adding USD_2022 to units library as the most recently published value by @hunterbarber in #1413
- Option to skip parallel component checks by @andrewlee94 in #1417
- Update pyomo requirement to 6.7.3 by @lbianchi-lbl in #1420
New Contributors
- @jasonmbray-p66 made their first contribution in #1400
Full Changelog: 2.4.0...2.5.0
2.4 Release
2.4 Release
Start with our online documentation to get started with install instructions, examples, etc.
IDAES-PSE 2.4.0 Release Highlights
Deprecations
- Convergence Analysis tool (idaes/core/util/convergence): deprecated in favor of new Parameter Sweep tools. To be removed in v3.0.0.
New Beta Capabilities
- Parameter Sweep Tool (
idaes.core.util.parameter_sweep
)- A new API for defining and performing parameter sweep studies on IDAES models has been developed
- Diagnostics Tools (
idaes.core.util.model_diagnostics
)- New methods for identifying duplicate variables and constraints have been added to the diagnostics toolbox
- New tools for detecting ill conditioning in Jacobians have been developed and are available in the model_diagnostics module. These provide alternatives to the existing DegeneracyHunter toolbox, and will eventually be merged with this capability, but initial working versions have been provided as beta capabilities for interested users
IpoptConvergenceAnalysis
(replaces deprecated Convergence Analysis tool):- A new tool for performing convergence analysis studies that leverages the new Parameter Sweep tools has been developed. This tool allows users to define the input parameters to their model and sampling methods for these (leveraging Pysmo's sampling tools) and to then solve their model across the sampled domains and return a summary of the solver performance (IPOPT only)
Improved Models
- Thickener model (
idaes.models.unit_models.solid_liquid.thickener
)- Improved model to include predictive correlations for unit sizing based on settling velocity measurements (steady-state only)
- Modular Property Packages
- Added general support for calculating critical properties of mixtures using defined Equation of State modules. New API defined for Equation of State modules in order to define the necessary constraints for calculating critical properties (most EoS modules DO NOT support calculation of critical properties (yet))
- Added new methods to Cubic Equation of State module to support calculation of critical properties
2.3 Release
2.3 Release
Start with our online documentation to get started with install instructions, examples, etc.
IDAES-PSE 2.3.0 Release Highlights
New Features and Models
- New diagnostics toolboxes and examples
- Tutorial for using the DiagnosticsToolbox
- Methods to identify potential evaluation errors in models
SVDToolbox
for performing singular value decomposition analysis on models to identify possible degeneracies and poor scaling- DegeneracyHunter for identifying irreducible degenerate sets in models
- Model for solid-liquid separation which takes two inputs (solid and liquid streams) and produces three outlets (solids, liquid entrained with solids and pure liquid)
- Example of temperature swing adsorption in
models_extra
Deprecation Warnings
- With the update to Pyomo 6.7.0, the plate heat exchanger model has begun failing tests on some CI platforms. If this is not addressed by the February release, this model may be removed due to failing tests. See #1294. Offers to help identify the cause and fix this issue are welcome.
Improvements and bug fixes
- Fixed oversight which precluded using
Mixer
andSeparator
models when inherent reactions were present in property package - Added reporting methods to the
MSContactor
model - Minor corrections in some examples where values were being fixed outside of declared variable bounds
2.2 Release
2.2 Release
Start with our online documentation to get started with install instructions, examples, etc.
IDAES-PSE 2.2.0 Release Highlights
New Features: DiagnosticsToolbox
DiagnosticsToolbox (idaes.core.util.model_diagnostics.DiagnosticsToolbox
is a new self-guiding toolbox for assisting with diagnosing modeling issues. The toolbox contains a wide range of tools for identifying common modeling issues and conveying these to the user, and more features will be added in the coming months.
To try the new toolbox, use the following steps:
from idaes.core.util import DiagnosticsToolbox
- Build an instance of your model
- Ensure your models has zero degrees of freedom (as best you can)
dt = DiagnosticsToolbox(model)
dt.report_structural_issues()
- Follow the prompts
Deprecations
- DegeneracyHunter is being deprecated in favor of the new DiagnosticsToolbox. The features and capabilities of DegeneracyHunter will be moved over to the DiagnositcsToolbox in the coming months.
- Removal of usage of Pyomo's
expr.current
due to deprecation upstream. - Removed support for radial basis functions in ALAMOpy as these did not work in the current implementation. Those wishing to use radial basis functions should use Pysmo instead.
New Capabilities
- MSContactor model for unit operations involving mass transfer between 2 or more streams, such as membrane, solvent extraction and solids leaching operations.
Other Improvements
- Improved formulation for solubility products with additional parameters for better scaling of terms
- Better backward compatibility, verification and robustness testing of core models and APIs
- Added support for Separator models without energy balances
2023 May Release
2023 May Release
Start with our online documentation to get started with install instructions, examples, etc.
IDAES-PSE 2.1.0 Release Highlights
New IDAES Examples Repository
Starting with this release, the IDAES examples are developed in the new IDAES/examples repository.
Along with many content and usability improvements, the most significant changes are:
- To install the examples, after installing IDAES, run
pip install idaes-examples
- The
idaes get-examples
command, previously used for this, has been removed
- The
- The HTML version is now available at https://idaes-examples.readthedocs.io
- The previous URL, https://idaes.github.io/examples-pse, will not be updated and may be removed at some point in the future
For more details, refer to the resources available at IDAES/examples.
Removal of Non-Functional Apps
A review of the code in the idaes/apps and idaes/models_extra folders was undertaken, and a number of tools were identified as being outdated or non-functional and no longer supported by their development teams. Due to this, the following tools have been removed:
idaes/apps/alamopy_depr (note that the new ALAMOpy interface remains avaialble in idaes/core/surrogates)
idaes/apps/helmet
idaes/apps/ripe
idaes/apps/roundingRegression
idaes/models_extra/carbon_capture
Pyomo 6.6
This version of IDAES is the first requiring Pyomo 6.6. This version of Pyomo contains multiple internal improvements and refactorings.
While for the majority of cases this should have positive or no impact on solvability of IDAES models, we are aware of a small number of models that have been affected as a result of these changes.
For more information, refer to the Pyomo 6.6.1 release notes.
Other highlights
- Model Initialization
- A prototype API for a new approach to initializing IDAES models is now available which makes available some new techniques for initializing models. This is documented in the Initializing Models Reference Guide
- Modular Properties Framework
- Support for some transport properties
- Helmholtz Equation of State properties
- Better error checking for case where unit models are set to include phase equilibrium but the property package is set to support only a single phase
- Multi-Stream Contactor model: a new base model for systems involving contacting of two or more streams with mass transfer. This model is intended to be used as the foundation for models such as membrane separators, solvent extraction and other similar processes. This is documented in the Multi-Stream Contactor Reference Guide
idaes/models_extra/power_generation
report()
methods for unit models using Helmholtz equation of state
- General Code Maintenance
- Streamlining of dependencies and creation of new optional dependency groupings to support non-core tools
- General linting of codebase to ensure compliance with most pylint checks
- Spell checking of all code and doc strings
- Removal of backward compatibility code for Python 2
2023 Feb Release
2023 Feb Release
Start with our online documentation to get started with install instructions, examples, etc.
IDAES-PSE 2.0.0 Release Highlights
- Removal of deprecated features from IDAES v1
- Update to Pyomo v6.5 β this required a number of updates to support the new NL solver writer and to address some changes in Pyomo
- Creation of new testing suite for backward compatibility, model robustness and verification
- More general implementation of the Helmholtz EoS. This brings some new features like standard property diagrams, choice of mass or mole basis, and new state variable options
- Standardizing names in Heat Exchanger models (breaking change from v2.0.0a2):
- Control Volumes named
hot_side
andcold_side
- Ports names
hot_side_inlet
,hot_side_outlet
,cold_side_inlet
andcold_side_outlet
- Config Blocks names
hot_side_config
andcold_side_config
- Config arguments for user provided names for each side:
hot_side_name
andcold_side_name
.
- Control Volumes named
- Updating Keras surrogate tool to use v1.1 of OMLT
- New prototype API for model initialization (
idaes.core.initialization
)- The new API uses "Model Initializer" objects instead of class methods, allowing for the definition of multiple initialization routines for a single model
- A number of common, model agnostic initialization routines have also been defined, including initialization from data, block-decomposition and a general hierarchical approach equivalent to the existing method for common unit models
- New metadata for thermophysical properties β
valid_range
- This can be used to record the range of values over which a property value can be trusted, such as the range of experimental data used to regress parameters
- A number of new utility functions have been added to check for properties with values outside the valid range and to set bounds based on this metadata
- Updated construction of balance expressions in Control Volumes to remove unneeded terms
- In the past, unneeded terms were added as a constant 0 term, however they will now be dropped entirely from the expression
- This was necessary due to more strict unit checking in the new Pyomo solver writer which no longer ignores 0 terms
- Updates to metadata for thermophysical properties to better define known properties and units of measurement
- This results in more strict enforcement of standard naming for thermophysical and reaction properties
- Users can still define custom properties, but these must be done explicitly using the
define_custom_properties()
method instead of being implicitly created byadd_property()
- Updated convergence tester utility tool to support definition of benchmark files (JSON format) and comparison of performance to benchmarks
- Set default iteration limit for IPOPT in IDAES config to 200 iterations
- Update scaling of example models to work with new Pyomo NL solver writer
- Improve testing of extensions and examples infrastructure to avoid need for downloading files
- Updated distillation column to centralize common functionality and remove a number of Pyomo warnings
2022 Nov Release
2022 Nov Release (2.0.0b2)
Start with our online documentation to get started with install instructions, examples, etc.
Quickstart
conda create --yes --name idaes-v2-env python=3.10 && conda activate idaes-v2-env
pip install idaes-pse==2.0.0b2
idaes get-extensions
idaes get-examples --unstable --version 2.0.0b2
IDAES-PSE 2.0.0b2 Release Highlights
IDAES v2 migration support
To help migrate their code to IDAES v2, the following support material is available:
IDAES v2 changes and deprecations
- As a consequence of the standardization of the
HeatExchanger
API, support for old methods and attributes (i.e.side_1
,inlet_1
,outlet_1
etc) has been removed- Refer to the "IDAES v2 migration support" for more information
- Numerous instances where deprecated APIs were being used internally in IDAES, causing deprecation warnings to be emitted, have been removed
- Old process costing code has been fully deprecated and removed in favor of the new API
New features
- Improved support for defining new components for use in Helmholtz equations of state
- Standardized naming in heat exchanger models
- Documentation of process costing tools and examples
- Implementation of an IDAES Performance Testing Suite, which has been used to establish baseline performance metrics
- Improved metadata structure for defining Units of Measurement in property packages and updated all code to use the new format
Supported Python versions
- Support for Python 3.11 is planned for the upcoming February release
- Following the NumPy NEP29 schedule, the February release of IDAES will also be the last to support Python 3.8