This repository has been archived by the owner on Mar 2, 2022. It is now read-only.
Releases: ModiaSim/ModiaLang.jl
Releases · ModiaSim/ModiaLang.jl
v0.8.4
ModiaLang v0.8.4
-
FloatType is included in the name space of Core.eval when evaluating parameters.
-
Version and Date updated
-
Included Version in printout of runtests.jl and runtests_withPlot.jl
-
Print difference of finalStates and requiredFinalStates in case they do not match with the given tolerance.
v0.8.3
ModiaLang v0.8.3
- Project.toml, Manifest.toml updated: Require newest version 0.7.7 of ModiaBase (containing a bug fix)
- Minor correction of simulate!(log=true) output
v0.8.2
ModiaLang v0.8.2
- Issue with tearing fixed: Variables are only explicitly solved, if linear factor is a non-zero literal number
(previously a division by zero could occur, if the linear factor became zero during simulation). - Issue with unit of tearing variable fixed, if it is a derivative of a variable
(previously, the generated code for unitless=false was wrong, if the tearing variable was
a derivative, since the unit was not taken into account). - simulate!(..):
- DAE integrators supported, especially IDA() from Sundials.
- New keyword
useRecursiveFactorizationUptoSize=0
: Linear equation systems A*v=b are solved with
RecursiveFactorization.jl instead of
the defaultlu!(..)
andldiv!(..)
, iflength(v) <= useRecursiveFactorizationUptoSize
.
According toRecursiveFactorization.jl
docu, it is faster aslu!(..)
with OpenBLAS,
forlength(v) <= 500
(typically, more as a factor of two).
Since there had been some cases wherelu!(..)!
was successful,
butRecursiveFactorization.jl
failed due to a singular system, the default is to uselu!(..)!
. - If log=true, sizes of linear equation systems are listed, as well as whether
RecursiveFactorization.jl is used for the respective system.
- Test for RecursiveFactorization.jl added in TestTwoInertiasAndIdealGear.jl
- Some test models corrected (since leading to errors with the bug fixes).
- Updated Project.toml and Manifest.toml with newest versions of packages
(including MonteCarloMeasurements, version >= 1)
and improved Project.toml file to reduce issues with package constraints
Closed issues:
- connector with 2 flow variables (#2)
v0.8.1
ModiaLang v0.8.1
- Added a minimal documentation, including release notes.
- No message anymore, when ModiaLang is started.
- Fixed bug that
using ModiaResult
is needed, when calling@usingModiaPlot
. - Updated Project.toml and Manifest.toml.
v0.8.0
ModiaLang v0.8.0
- Improved scalability by using OrderedDicts instead of named tuples for models, variables and parameter modifications.
- Speed improvements for structural and symbolic algorithms.
- Added support for state events, time events and synchronous operators.
- Added support for mixed linear equation systems having Real and Boolean unknowns.
- Added support for user-defined components defined by structs and functions
(multibody modeling with Modia3D is based on this feature).
This makes it possible to utilize algorithms specialized for a component. - Added support for numerical and analytic linearization.
- Added support for propagation of parameters (e.g. deep in a model, the value of a parameter can be defined as a function of some top level parameter and this parameter is changed before simulation starts).
- New small model libraries Translational.jl and PathPlanning.jl added.
- Result storage changed:
sol = simulate!(...)
calls internallysol = solve(..)
from DifferentialEquations.jl.sol
contains time and the states at the communication time grid and
at events. This is now kept in simulate(..), so the return value of simulate!(..) can be exactly used as ifsolve(..)
would have been used directly. - The plot(..) command now supports the following underlying plot packages:
PyPlot,
GLMakie,
WGLMakie, and
CairoMakie.
It is also possible to selectNoPlot
, to ignoreplot(..)
calls
orSilenNoPlot
to ignoreplot(..)
calls silently. The latter is useful forruntests.jl
.
Note, often PyPlot is the best choice.
Changes that are not backwards compatible to version 0.7.x:
-
Models are OrderedDicts and no longer NamedTuples.
-
simulate!(..):
- If FloatType=Float64 and no algorithm is defined, then Sundials.CVODE_BDF() is used
instead of the default algorithm of DifferentialEquations as in 0.7. The reason is that Modia models
are usually large and expensive to evaluate and have often stiff parts, so that multi-step
methods are often by far the best choice. CVODE_BDF() seems to be a good choice in many applications
(another algorithm should be used, if there are many events, highly oscillatory vibrations, or if all states are non-stiff). - The default value of
stopTime
is equal tostartTime
(which has a default value of 0.0 s), and is no longer 1.0 s.
- If FloatType=Float64 and no algorithm is defined, then Sundials.CVODE_BDF() is used
-
Plotting is defined slightly differently (
@useModiaPlot
, instead ofusing ModiaPlot
).