- Sparse-dense Sylvester solver, see
mess_sylvester_sparse_dense
. - Krylov subspace projection methods for Lyapunov equations and AREs
using extended and rational Krylov subspaces, see
mess_KSM
, as well as demonstration examples inKSM_FDM
,KSM_Rail
. - A new logging system allowing to print messages to both console
and files, and switch between various output file format. See
mess_log_*
. mess_tf_plot
as unified backend formess_sigma_plot
,mess_Frobenius_TF_errorplot
mess_version
a function to get the current version of M-M.E.S.S.
mess_galerkin_projection_acceleration
has been replaced bymess_solve_projected_eqn
, which now covers both the acceleration case and the case of projected equations in the context ofmess_KSM
.eqn.st
andeqn.nd
from DAE usfs are now unified and calledeqn.manifold_dim
everywhere.- the LDL^T ADI for Lyapunov now expects W T W^T rather than
G S G^T as the constant term. Consequently,
eqn.S
andeqn.G
are now calledeqn.T
andeqn.W
. - missing demonstration models are now loaded from the web on user request. The first run with a model may, thus, need to be interactive to confirm the download request.
- usfs have been optimized further to not use unnecessary hidden data.
mess_lrnm
, andmess_lrradi
now requireeqn.R
andeqn.Q
to be set in LDL^T mode.operatormanager
now has a mandatory pass-through argumentopts
for correct logging.
- many functions did not warn users about non-convergence
- minor bugs in DRE methods were addressed
get_ritz_vals
usfs andmess_para
behavior has been unified- removed dead code in
mess_lrnm
lyap
in Octave and MATLAB had different behavior which is now properly wrapped to give consistent results- BDF methods of higher order now use lower order methods with smaller step sizes for a successive wind-up procedure to guarantee the expected order of convergence.
- exact line search in
mess_lrnm
now uses a more expensive, yet far more numerically stable way to compute the relevant norms.
- all functions in the
mor
folder are not going to be maintained in future releases in favor of using M-M.E.S.S. as the sparse solver backend for MORLAB in their version 6.0 and newer.
- Rail data are now available in additional sizes, via automatic downloads at runtime.
mess_balanced_truncation
now adapts the default Lyapunov residual tolerances to the right hand side (RHS) and densifies RHS factors prior to compression.- Documentation has been updated especially for usfs sets
mess_balanced_truncation
would fail on certain incompleteopts
structures, which are now reporting proper errors so users can adapt.- various smaller issues (outdated API, typographic errors) in the documentation have been fixed.
- automatic downloading of additional examples now also works in Octave
mess_get_BIPS
was failing on some models that used a differing naming scheme- some comments in the
default
usfs have been updated to better match the current implementation - figures now use consistent line-width for all graphs
- typographic errors and outdated defaults in the help texts have been corrected
- Contribution guide & Code of Conduct
- README file for the usfs available via
help mess_usfs
. - New solver for "Lyapunov plus positive" equations and related balancing based MOR of bilinear systems.
- basic support for sparss and mechss system classes.
- We changed the license to BSD 2-Clause!
README.md
received some improvements pointing to references and documentation more explicitly.- Sigma magnitude plots now allow presampling of the full order model when, e.g. a sequence of ROMs is being processed.
mess_balanced_truncation
now always performs a column compression of the right hand side factors in the two Gramian equations before starting the ADI.mess_lradi
does not require precomputed shifts anymore. It computes them automatically independent of the type now.- The RADI now allows for LDL^T factored right-hand sides in the Riccati equation and solution factors are expanded more efficiently.
LQR_FDM_unstable
is nowLQG_FDM_unstable_nwt
and got fixed for appropriate computation of dual regulator and filter Riccati equations in ZZ^T and LDL^T formats. In this context, the new demoLQG_FDM_unstable_radi
has been added to show the same computations using the RADI method.- Backend of
mess_care
changed from Newton method to RADI. - time recording in the demos is safer now.
- dae_1_so usfs got rewritten completely and are documented much better now.
- documentation of the second order usfs was improved.
- the shift change criterion's default bound in tangential IRKA got lowered to 1e-6 (was 1e-2).
mess_balanced_truncation
would fail on certain incompleteopts
structures, which are now filled automatically.- The TV2 model in the second order index-3 demo file had a typo.
LICENSE.md
was showing a different license (fixed GPLv2) than the other files (GPLV2+)- dead code was removed or received better documentation of its purpose.
- DRE solver received various minor fixes.
- the tangential IRKA received some minor fixes, such that IRKA options are used more reliably and shift change monitory is more correct.
- bugs in
mess_lrradi
for initial solutions and residuals in case of filter Riccati equation ('N') have been fixed.
- many function headers and help texts got improved/completed
- DAE_1 usfs failed for certain systems with non-symmetric A.
- LTV BDF could break in certain situations and was not following the general naming scheme for some variables.
- mess_res2_norms would break when more than 4 output arguments were requested
- New RADI iteration for AREs
- New splitting methods for autonomous DREs
- New splitting and BDF methods for non-autonomous DREs
- New operator manager only requires non-empty functions and replaces
non-existent ones with a general
mess_do_nothing
function - renamed
opts.bdf.stage
toopts.bdf.step
. - CI testing
- demos serve as system tests
- additional unit tests for the smaller building blocks and backend routines
- improved Riccati iteration
- updated minimum required/recommended Matlab and Octave versions
(see
DEPENDENCIES.md
) - unified function interfaces for top level calls
- unified handling of low-rank updated operators. Now always A+UV' is used. (Note the sign of the update and the transposition in V)
- major updates in the MOR routines
- some restructuring in the opts structure.
opts.adi.shifts
has moved toopts.shifts
such that also RADI can use it independent of ADIopts.norm
now determines the norm for all methods rather than having to consistently specify the same norm in each substructure- initial feedbacks for the Riccati solvers are now stored in the
opts
structure for the method rather thaneqn
- The projection shift routine uses the flag
opts.shifts.implicitVtAV
. Default istrue
. If set tofalse
A*V is computed explicitly. - redesign of the demos
- turned scripts into actual demo functions
- new demos for indefinite AREs and H-infinity control
- several consistency updates and bug fixes
- general code cleaning and pretty printing
- updated documentation
- Removed replacements directory since its content was not needed for Matlab after release 2010b and Octave after 4.0.
- Minor consistency and bug fixes and improved integrity of metafiles.
- CI testing
- demos serve as system tests
- additional unit tests for the smaller building blocks and backend routines
Compared to the predecessor LyaPack a couple of things have changed.
- The user supplied functions are now managed by an operator manager
- The low-rank ADI now has:
- optimized treatment of E matrices in generalized equations
- more choices for shift selection, including completely automatic generation of shifts
- improved stopping criteria based on low-rank factors of the current residual
- automatic generation of real low-rank factors also for complex shifts
- The Newton-Kleinman iteration features:
- optimized treatment of E matrices in generalized equations
- improved stopping criteria based on low-rank factors of the current residual
- inexact Newton, line search and Galerkin projection acceleration
- Examples have been extended
- The Riccati iteration for H-infinity Riccati equations was added
- DSPMR has not yet been ported to the new infrastructure
- The SRM routine for balanced truncation is only available for none-DAE systems. Still, DAE versions are included in the corresponding DEMOS.
- A tangential IRKA implementation for non-DAE systems was added