Unverified Commit e86aa5b0 authored by René Fritze's avatar René Fritze Committed by GitHub
Browse files

Merge pull request #1394 from pymor/releasenotes_2021_1

Release notes for 2021.1
parents b8fb7c77 f9ad6474
Pipeline #102094 passed with stages
in 53 minutes and 36 seconds
pyMOR 2021.1 (September 24, 2021)
---------------------------------
We are proud to announce the release of pyMOR 2021.1! This release includes
several new reductors for LTI systems. In particular, methods for reducing and
analyzing unstable systems have been added. ANNs can now be used in order to
directly approximate output quantities. Furthermore, it is now possible to
work with time-dependent parameters in pyMOR.
Over 700 single commits have entered this release. For a full list of changes
see `here <https://github.com/pymor/pymor/compare/2020.2.x...2021.1.x>`__.
pyMOR 2021.1 contains contributions by Tim Keil, Hendrik Kleikamp, Josefine Zeller
and Meret Behrens. See `here <https://github.com/pymor/pymor/blob/main/AUTHORS.md>`__
for more details.
Release highlights
^^^^^^^^^^^^^^^^^^
Methods for unstable LTI systems
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Many popular system-theoretic model order reduction methods are not applicable
to unstable LTI systems out of the box. In
`[#1149] <https://github.com/pymor/pymor/pull/1149>`_ two reductors and several
methods for working with and analyzing unstable |LTIModels| have been added.
The :class:`~pymor.reductors.bt.FDBTReductor` allows for applying the balanced
truncation technique to unstable systems by performing a Bernoulli stabilization
before using the classical BT method. The :class:`~pymor.reductors.h2.GapIRKAReductor`
aims to compute a reduced-order model such that the approximation error with
respect to the :math:`\mathcal{H}_2`-Gap norm is small. Additionally,
a variety of numerical linear algebra methods have been a part of
`[#1149] <https://github.com/pymor/pymor/pull/1149>`_: Riccati equation solvers
for small and dense matrices, Bernoulli matrix equation solver, new options for
for pyMOR's eigensolver such as shift-and-invert mode and :math:`\mathcal{L}_2`-norm
computation for |LTIModels|. The new methods and reductors are showcased in
:doc:`../tutorial_unstable_lti_systems`.
Modal truncation
~~~~~~~~~~~~~~~~
Based on the previously added :meth:`~pymor.algorithms.samdp.samdp` method for
computing dominant poles of an LTI system,
a modal truncation reductor :class:`~pymor.reductors.mt.MTReductor` was added in
`[#1151] <https://github.com/pymor/pymor/pull/1151>`_.
It constructs a reduced-order model from dominant poles of the full-order model,
with different possible dominance measures.
The reductor also implements a dense method for small to medium problems.
Time-dependent parameter values
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- `[#1379] Time dependent parameter values <https://github.com/pymor/pymor/pull/1379>`_
Additional new features
^^^^^^^^^^^^^^^^^^^^^^^
Output reductor using ANNs
~~~~~~~~~~~~~~~~~~~~~~~~~~
To further extend the neural network based reductors, in
`[#1282] <https://github.com/pymor/pymor/pull/1282>`_ a reductor that only
approximates the mapping from parameter space to output space using a neural
network was added. Furthermore, a corresponding reductor for the instationary
case was implemented. The new reductor for the stationary case is used in
:doc:`../tutorial_mor_with_anns` and compared to the
:class:`~pymor.reductors.neural_network.NeuralNetworkReductor`.
As part of `[#1282] <https://github.com/pymor/pymor/pull/1282>`_, the
ANN-reductors were refactored, and in
`[#1274] <https://github.com/pymor/pymor/pull/1274>`_, the neural network
training routines have been separated from the reductors.
Improvements to the HAPOD algorithm
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- `[#1322] Various Improvements to the HAPOD algorithm (v2) <https://github.com/pymor/pymor/pull/1322>`_
Empirical Interpolation improvements
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- `[#1240] Several EI improvements <https://github.com/pymor/pymor/pull/1240>`_
Methods for exporting matrices of system models
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The system classes :class:`~pymor.models.iosys.LTIModel` and
:class:`~pymor.models.iosys.SecondOrderModel` have had various `from_*` methods
for constructing models from matrices.
In `[#1309] <https://github.com/pymor/pymor/pull/1309>`_,
the corresponding `to_*` methods were added for exporting matrices from a model.
pyMOR is now a pure-Python package
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- `[#1314] Replace all Cython modules by equivalent NumPy code <https://github.com/pymor/pymor/pull/1314>`_
Symbolic ExpressionFunctions
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- `[#1277] Use symbolic expressions in ExpressionFunction <https://github.com/pymor/pymor/pull/1277>`_
Backward incompatible changes
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Drop python 3.6 support
~~~~~~~~~~~~~~~~~~~~~~~
Symbolic ExpressionFunctions
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Further notable improvements
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- `[#1196] Add outputs to FV discretizers <https://github.com/pymor/pymor/pull/1196>`_
- `[#1234] [operators/block] skip ZeroOperators in apply and apply_adjoint <https://github.com/pymor/pymor/pull/1234>`_
- `[#1243] Fixed computation of intersection_codim in _neighbours <https://github.com/pymor/pymor/pull/1243>`_
- `[#1246] Fix bug in apply_inverse for LincombOperators <https://github.com/pymor/pymor/pull/1246>`_
- `[#1270] Simplify SecondOrderModel-related operators <https://github.com/pymor/pymor/pull/1270>`_
- `[#1294] Let sample_randomly return a Mu instance in case count=None <https://github.com/pymor/pymor/pull/1294>`_
- `[#1296] Simplify semantics of assemble_lincomb / fix #1276 <https://github.com/pymor/pymor/pull/1296>`_
- `[#1302] Drop python 3.6 support <https://github.com/pymor/pymor/pull/1302>`_
- `[#1304] Several improvements to Qt-based visualizations <https://github.com/pymor/pymor/pull/1304>`_
- `[#1309] Add methods to models.iosys for exporting matrices <https://github.com/pymor/pymor/pull/1309>`_
- `[#1317] Add FenicsMatrixOperator._real_apply_inverse_adjoint_one_vector <https://github.com/pymor/pymor/pull/1317>`_
- `[#1323] Switch tutorials from rst to myst-markdown <https://github.com/pymor/pymor/pull/1323>`_
- `[#1325] Let MPIOperator.assemble return self when operator is unchanged <https://github.com/pymor/pymor/pull/1325>`_
- `[#1326] Fix almost_less for negative numbers <https://github.com/pymor/pymor/pull/1326>`_
- `[#1327] Use complex vector handling of wrapped object in MPIVectorArray <https://github.com/pymor/pymor/pull/1327>`_
- `[#1331] Improve shift selection in lradi <https://github.com/pymor/pymor/pull/1331>`_
- `[#1363] [logging] implement a LOG_once facility <https://github.com/pymor/pymor/pull/1363>`_
- `[#1378] Bugfixes in lrradi <https://github.com/pymor/pymor/pull/1378>`_
- `[#1388] Fix qt config check <https://github.com/pymor/pymor/pull/1388>`_
- `[#1408] Introduce ListVectorSpace.vector_type and make make_array smarter <https://github.com/pymor/pymor/pull/1408>`_
- `[#1410] Add StationaryModel.deaffinize <https://github.com/pymor/pymor/pull/1410>`_
......@@ -4,6 +4,7 @@
Release Notes
*************
.. include:: 2021.1.rst
.. include:: 2020.2.rst
.. include:: 2020.1.rst
.. include:: 2019.2.rst
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment