Skip to content

Releases: ModiaSim/Modia3D.jl

v0.10.0

01 Mar 19:55
fbd9a9d
Compare
Choose a tag to compare

Modia3D v0.10.0

Diff since v0.9.1

Non-backwards compatible changes:

The Modia packages are slightly restructured to allow more efficient operations.
Previously, Modia was planned to include all the functionality with all model libraries.
This is now changed and Modia includes now equation-oriented modeling and basic model libraries.
Further model libraries, such as Modia3D (and other model libraries in the future) must be
explicitly imported and are no longer automatically imported by Modia.
To simplify the structuring, ModiaLang is merged into Modia
and some functionality for the code generation is moved from ModiaBase to Modia.
Overall, the benefit is that loading and compilation times are reduced, if Modia3D is not needed.
Furthermore, the generated code contains only references to Modia functionality and no longer to ModiaBase.
The effect on Modia3D is:

  • Modia3D is removed from Modia (so when a model is using Modia3D, the package must be explicitly imported
    and is no longer automatically imported from Modia).

  • In user models, all references to ModiaBase and to ModiaLang should be replaced by Modia
    (otherwise, it is highly likely that the model does not longer compile and/or simulate).

Merged pull requests:

  • Adapted to Modia 0.8 (= nonbackwards compatible change). (#101) (@MartinOtter)

v0.9.1

28 Feb 18:33
Compare
Choose a tag to compare

Modia3D v0.9.1

Diff since v0.9.0

  • Require ModiaLang 0.11.3 (avoids unnecessary double instantiation of Modia3D models).
  • Reduce memory allocation of force elements.
  • Update docu for contact force law (docs/src/internal/ContactForceLaw.md).

Merged pull requests:

v0.9.0

23 Feb 09:59
fb64b8a
Compare
Choose a tag to compare

Modia3D v0.9.0

Diff since v0.8.2

Non-backwards compatible changes

  • Operator buildModia3D(..) is removed. Instead, the new constructor Model3D(..) must be used at the top level of a
    Modia3D definition. It is now possible to define several, independent multibody systems
    (currently, only one of them can have animation and animation export).
  • If init/start vectors are defined (e.g. initial state of a FreeMotion joint), they must be defined as SVector{3,Float64}(..).
    Otherwise, errors occur during compilation.

Other changes

  • All test models changed, due to the non-backwards compatible change.
  • Code generation changed significantly, in order that the interface to Modia3D functions is type stable.
    As a result, simulation is more efficient and much less memory is allocated during simulation.
  • Efficiency improvements for collisions (less memory is allocated during simulation + faster simulation).

Closed issues:

  • Tutorials throw error (#28)

Merged pull requests:

v0.8.2

20 Feb 17:43
Compare
Choose a tag to compare

Modia3D v0.8.2

Diff since v0.8.1

  • Fix Cone contact detection
  • Add rattleback test (Modia3D/test/Collisions/Rattleback.jl)

Merged pull requests:

v0.8.1

11 Feb 16:14
e5f35a3
Compare
Choose a tag to compare

Modia3D v0.8.1

Diff since v0.8.0

  • collisionSmoothingRadius: edges are smoothed with collisionSmoothingRadius
    • its default value is 0.001, if it is set to 0.0 no smoothing takes place
    • the edges of Box, Cylinder, Cone, and Beam are smoothened with collisionSmoothingRadius
  • For using Herz' pressure contactSphereRadius is introduced for each shape
    • it can be user set
    • otherwise, it is calculated from shape geometry

Merged pull requests:

v0.8.0

06 Feb 15:43
ba98eda
Compare
Choose a tag to compare

Modia3D v0.8.0

Diff since v0.7.0

  • Require ModiaLang 0.10.0 (e.g. require DifferentialEquations 7)
  • Support animation export for FloatType = Measurements.XXX (animation is performed for the nominal value).
  • Remove PathPlanning struct und functions (and instead use the functionality from ModiaLang 0.9.1).
  • Reactivate test model test/old/Test_PathPlanning.jl
  • Remove unused files: .codecov.yml, .travis.yml, appveyor.yml
  • Fix import/using of some tests.

Merged pull requests:

v0.7.0

04 Feb 10:31
509fdfc
Compare
Choose a tag to compare

Modia3D v0.7.0

Diff since v0.6.0

  • Modia3D is updated and restricted to Julia 1.7
  • cyclic dependencies with Modia package are removed

Merged pull requests:

v0.6.0

03 Feb 10:37
93dec8f
Compare
Choose a tag to compare

Modia3D v0.6.0

Diff since v0.5.2

  • Modia3D supports @instantiatedModel(FloatType = Float64, ...) as default FloatType. Now, further FloatTypes, such as Float32, DoubleFloats.Double64, Measurements.Measurement{Float64}, MonteCarloMeasurements.StaticParticles{Float64} are supported. If FloatType is not Float64, the default integrator selected from DifferentialEquations.jl is utilized and no longer Sundials.CVODE_BDF (because CVODE_BDF is only supported for Float64). Since ModiaLang does not yet support integrators with analytic Jacobians, integrators with this feature cannot be used, e.g., this feature needs to be switched off with option autodiff=false, if necessary. Recommendation: use QBDF(autodiff=false) if FloatType is not Float64. Note, Tsit5 usually does not work well for collisions, due to the stiff behavior in the contact area. Current limitations:
    • FloatType = Float32: usually fails when collisions occur
    • FloatType = Measurements.xxx, or MonteCarloMeasurements.xxx fail if events occur (e.g. collision handling, switching between different sequences of rotation angles)
    • FloatType = Measurements.xxx: Animation is performed for the nominal values (plots show nominal values and the area of the variances)
    • FloatType = MonteCarloMeasurements.yyy: Animation is automatically switched off with a warning message (due to severe performance issues that will be fixed in the future)
  • Object3D: use vectors instead of matrices for rotation
  • Scene
    • maximumContactDamping = 2000.0: The maximum damping used in the elastice response calculation (previously, this was set to the literal value of 1000 and could not be changed). This value is, for example, used if the normal contact velocity at contact start is small.
  • Shape FileMesh is reading mesh-files with MeshIO.jl and no longer with an own parser. As a result, more input formats are supported, in particular also STL and OBJ with non-triangles. Furthermore, duplicate vertices in FileMesh are removed after reading a file. This reduces the computational effort of collision support point calculation.
  • Collision handling slightly improved, e.g., if colliding shapes get in contact with a small normal contact velocity at contact start, the colliding shapes are quickly fixed relative to each other (previously, a lot of events occured in this phase).
  • Updated documentation and some bugs fixed
  • Internal
    • Changed most structs to parameterized structs with type parameter F (short for FloatType)
    • Changed some remaining vectors and matrices to SVector and SMatrix, respectively, to improve efficiency
    • Cleanup of Modia3D and of Modia (e.g. removed duplicate definition of ModiaInterface in Modia.jl)
    • Event handling slightly changed, in particular the large contact hysteresis in the order of 1e-8 was reduced to 1e-13, after ModiaLang was using the new option RightRootFind of DifferentialEquations.jl. As a result, unnecessary events (signaled via restart = NoRestart) should no longer occur
    • Elastic response calculation simplified and improved. In particular, if the normal contact velocity at contact start is below vsmall (default = 0.01 m/s), coefficient of restitution is set to zero and no longer to 0.001. As a result, colliding shapes are quickly fixed relative to each other
    • Bug fixed: In some rare situations, it was not correctly checked that a multibody system has exactly one Object3D without parent and with feature=Scene (and no other Object3D has feature=Scene)

Merged pull requests:

v0.5.2

29 Nov 09:26
Compare
Choose a tag to compare

Modia3D v0.5.2

Diff since v0.5.1

  • version number and date updated

v0.5.1

25 Nov 13:43
Compare
Choose a tag to compare

Modia3D v0.5.1

Diff since v0.5.0

  • Collision handling - MPR algorithm improved to enhance speed and robustness
    • collision pairing material
      • at initialization: a warning is given if a collision pairing material is not defined
    • improve support points computation of
      • FileMesh: use SVectors and better computation of support points
      • Capsule: a Capsule is already smooth therefore collisionSmoothingRadius is removed
    • MPR algorithm
      • Double64 from DoubleFloats.jl package is used for mpr algorithm to increase accuracy
      • amount of iteration steps is increased if more are needed for phase 2 and phase 3
      • if it's not possible to quit with the predefined mprTolerance the iteration quits with the best possible tolerance instead
      • collisions between ellipsoids and other shapes are treated like collisions between spheres and other shapes
    • store information like centroid in Object3D
    • remove some type instabilities
  • FreeMotion joint
    • enable adaptive rotation sequence
    • add test model
  • Enable ForceElements
    • add infrastructure
    • add Bushing and SpringDamperPtP
    • add test models and documentation
  • Animation export (three.js JSON object scene)
    • fix initial orientation
    • enable visualization of bounding boxes (AABB)
    • enable Beam support
    • enable Capsule support
    • enable inner cylinder radius support (pipe)
    • enable CoordinateSystem support
    • enable Grid support
  • Visualization with DLR Visualization Library
    • add visual shape kind ModelicaShape
    • remove some type instabilities
  • improve testing
    • enable short and complete test runs
    • add planar motion test
  • update documentation and installation guide
  • clean up: remove unused code snippets

Closed issues:

  • DLR Visualization library Community Edition problem with Julia 1.0.1 on Ubuntu 18.04 (#3)
  • Error: dynamics1 not defined on cut joint (#9)
  • __IDASolve not defined and __N_VDestroy_Serial not defined (#11)
  • Modiator (#15)

Merged pull requests: