Skip to content
This repository has been archived by the owner on Mar 2, 2022. It is now read-only.

Releases: ModiaSim/ModiaLang.jl

v0.8.4

15 Dec 11:20
Compare
Choose a tag to compare

ModiaLang v0.8.4

Diff since v0.8.3

  • 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

24 Nov 08:17
Compare
Choose a tag to compare

ModiaLang v0.8.3

Diff since v0.8.2

  • 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

23 Nov 22:56
Compare
Choose a tag to compare

ModiaLang v0.8.2

Diff since v0.8.1

  • 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 default lu!(..) and ldiv!(..), if length(v) <= useRecursiveFactorizationUptoSize.
      According to RecursiveFactorization.jl docu, it is faster as lu!(..) with OpenBLAS,
      for length(v) <= 500 (typically, more as a factor of two).
      Since there had been some cases where lu!(..)! was successful,
      but RecursiveFactorization.jl failed due to a singular system, the default is to use lu!(..)!.
    • 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

27 Jul 21:29
Compare
Choose a tag to compare

ModiaLang v0.8.1

Diff since v0.8.0

  • 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

27 Jul 13:47
Compare
Choose a tag to compare

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 internally sol = 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 if solve(..) 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 select NoPlot, to ignore plot(..) calls
    or SilenNoPlot to ignore plot(..) calls silently. The latter is useful for runtests.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 to startTime (which has a default value of 0.0 s), and is no longer 1.0 s.
  • Plotting is defined slightly differently (@useModiaPlot, instead of using ModiaPlot).