Releases: ModiaSim/Modia3D.jl
v0.10.0
Modia3D v0.10.0
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
Modia3D v0.9.1
- 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:
- reduce alloc in force addition (#99) (@AndreaNeumayr)
- Improve docu for contact force law (#100) (@MartinOtter)
v0.9.0
Modia3D v0.9.0
Non-backwards compatible changes
- Operator
buildModia3D(..)
is removed. Instead, the new constructorModel3D(..)
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:
- Otter next main 2022 02 06 (#97) (@MartinOtter)
- An alloc mpr (#98) (@AndreaNeumayr)
v0.8.2
Modia3D v0.8.2
- Fix Cone contact detection
- Add rattleback test (Modia3D/test/Collisions/Rattleback.jl)
Merged pull requests:
- Fix Cone contact detection (#95) (@GerhardHippmann)
- Add rattleback test (#96) (@GerhardHippmann)
v0.8.1
Modia3D v0.8.1
collisionSmoothingRadius
: edges are smoothed withcollisionSmoothingRadius
- its default value is
0.001
, if it is set to0.0
no smoothing takes place - the edges of Box, Cylinder, Cone, and Beam are smoothened with
collisionSmoothingRadius
- its default value is
- 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:
- Merge otter improve efficiency (#91) (@MartinOtter)
- Update GitHub Runtests workflow (#92) (@GerhardHippmann)
- An contact smoothing radius (#93) (@AndreaNeumayr)
- An elastic response (#94) (@AndreaNeumayr)
v0.8.0
Modia3D v0.8.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:
-
- Remove PathPlanning struct und functions (and instead use the funct… (#88) (@MartinOtter)
- Gh enable animation export with measurements (#89) (@GerhardHippmann)
- Require DifferentialEquations 7 (#90) (@MartinOtter)
v0.7.0
Modia3D v0.7.0
- Modia3D is updated and restricted to Julia 1.7
- cyclic dependencies with Modia package are removed
Merged pull requests:
- An use julia1.7 (#85) (@AndreaNeumayr)
- An use julia1.7 (#86) (@AndreaNeumayr)
- update release notes v0.7.0 (#87) (@AndreaNeumayr)
v0.6.0
Modia3D v0.6.0
- Modia3D supports
@instantiatedModel(FloatType = Float64, ...)
as defaultFloatType
. Now, further FloatTypes, such asFloat32
,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 optionautodiff=false
, if necessary. Recommendation: useQBDF(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 occurFloatType = Measurements.xxx
, orMonteCarloMeasurements.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 forFloatType
) - 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)
- Changed most structs to parameterized structs with type parameter
Merged pull requests:
- An use float type (#57) (@AndreaNeumayr)
- An use float type2 (#58) (@AndreaNeumayr)
- An use vector for rotation (#59) (@AndreaNeumayr)
- An use float type3 (#60) (@AndreaNeumayr)
- Parametrized float type for force elements (#61) (@GerhardHippmann)
- An use float type4 (#62) (@AndreaNeumayr)
- An use measurements (#63) (@AndreaNeumayr)
- rename AbstractFloat to VarFloatType (#64) (@AndreaNeumayr)
- update final states (#65) (@AndreaNeumayr)
- An use monte carlo (#66) (@AndreaNeumayr)
- An remove duplicates modia interface (#67) (@AndreaNeumayr)
- An remove duplicates interface2 (#68) (@AndreaNeumayr)
- An remove duplicates interface3 (#69) (@AndreaNeumayr)
- avoid visualization and animation if MonteCarloMeasurements is used (#70) (@AndreaNeumayr)
- cleanup models (#71) (@AndreaNeumayr)
- changes for type checks (#72) (@AndreaNeumayr)
- Enable FileMesh cleaning (#73) (@GerhardHippmann)
- Gh use mesh io.jl (#74) (@GerhardHippmann)
- Update testing (#75) (@GerhardHippmann)
- Contact hysteresis strategy slightly changed (and docu adapted + requ… (#76) (@MartinOtter)
- Gh enable push runtests (#77) (@GerhardHippmann)
- finalStates TwoCollidingBoxes.jl (Windows) (#78) (@AndreaNeumayr)
- update version numbers and date (#79) (@AndreaNeumayr)
- Revert contact hysteresis modification of #76 (#80) (@GerhardHippmann)
- update release notes v0.5.3 (#81) (@AndreaNeumayr)
- Require ModiaLang 0.8.6 + Project.toml/Manifest.toml files updated (#82) (@MartinOtter)
- update date (#83) (@AndreaNeumayr)
- version number 0.6.0 (#84) (@AndreaNeumayr)
v0.5.2
v0.5.1
Modia3D v0.5.1
- 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
- FileMesh: use
- 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
- collision pairing material
- 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:
- Neumayr visualize aabb (#17) (@AndreaNeumayr)
- Apply output interval (#18) (@GerhardHippmann)
- Neumayr improve collision handling (#19) (@AndreaNeumayr)
- Enable tests without graphics (#20) (@GerhardHippmann)
- Add visual shape kind ModelicaShape (#22) (@GerhardHippmann)
- Neumayr remove type instabilities (#23) (@AndreaNeumayr)
- Split setting of joint variables (improves efficiency) (#24) (@MartinOtter)
- Neumayr improve collision handling1 (#25) (@AndreaNeumayr)
- Improve data type of FileMesh.ScaleFactor (#26) (@GerhardHippmann)
- Add planar motion test (#27) (@GerhardHippmann)
- Enable Beam/Capsule/Pipe support in animation export (#29) (@GerhardHippmann)
- Documentation/tutorial: Use Beam instead of Box for pendulum models (#30) (@GerhardHippmann)
- Animation export: Fix initial orientation (#31) (@GerhardHippmann)
- Enable CoordinateSystem support in animation export (#32) (@GerhardHippmann)
- An docu installation guide (#33) (@AndreaNeumayr)
- An visualize aab bin threejs (#34) (@AndreaNeumayr)
- An cleanup (#35) (@AndreaNeumayr)
- Enable Grid support in animation export (#36) (@GerhardHippmann)
- An initialize scene (#37) (@AndreaNeumayr)
- check of valid collision pairings is done at initialization (#38) (@AndreaNeumayr)
- changed error message (#39) (@AndreaNeumayr)
- remove collisionSmoothingRadius from Capsule (#40) (@AndreaNeumayr)
- Gh free motion adaptive rotation sequence (#41) (@GerhardHippmann)
- An avoid collision errors (#42) (@AndreaNeumayr)
- Enable short and complete testing (#43) (@GerhardHippmann)
- throw a warning if a collision pairing material is not defined at ini… (#44) (@AndreaNeumayr)
- Gh force element infrastructure (#46) (@GerhardHippmann)
- An use mpr float type (#47) (@AndreaNeumayr)
- minor changes to mpr (remove two neps) (#48) (@AndreaNeumayr)
- Add force element documentation (#49) (@GerhardHippmann)
- Extend force element functionality (#50) (@GerhardHippmann)
- An mpr with double64 (#51) (@AndreaNeumayr)
- Gh extend bushing functionality (#52) (@GerhardHippmann)
- An switch to double64 (#53) (@AndreaNeumayr)
- Float64 -> Real numbers for force element parameters (#54) (@GerhardHippmann)
- An treat ellipsoids properly (#55) (@AndreaNeumayr)
- docu: update release notes (#56) (@AndreaNeumayr)