Skip to content

v0.6.0

Compare
Choose a tag to compare
@github-actions github-actions released this 03 Feb 10:37
· 298 commits to main since this release
93dec8f

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: