Releases: ModiaSim/Modia3D.jl
v0.12.2
Modia3D v0.12.2
- Add Force Element PolygonalContactModel and tests
- Add Result Element infrastructure and Result Element ContactResult
- Bugfix: Correct parent Object3D torque calculation for Fix Joint with non-zero rotation
- Bugfix: Enable AnimationExport in case of no renderer available
- Bugfix: Enable position/orientation result signals independent of visualization/animation configuration
- Segmented Simulation: add flag
enableContactDetection
to action commands (ActionAttach
,ActionReleaseAndAttach
,ActionRelease
,ActionDelete
) to enable or disable collision handling for the whole model in the actual segment
Merged pull requests:
- Gh result elements (#123) (@GerhardHippmann)
- Enable AnimationExport in case of no renderer available (#125) (@GerhardHippmann)
- Fix Fix joint (#126) (@GerhardHippmann)
- An more tests (#127) (@AndreaNeumayr)
- Fix position/orientation results (#128) (@GerhardHippmann)
- change version number of MeshIO (#129) (@AndreaNeumayr)
Closed issues:
- Can't create json animation files on mac (#124)
v0.12.1
Modia3D v0.12.1
Merged pull requests:
- use Julia 1.9.0 (#121) (@AndreaNeumayr)
- Release0.12.1 (#122) (@MartinOtter)
v0.12.0
Modia3D v0.12.0
- Support for variable-structure systems where variables (states) can appear and disappear during simulation
- A simulation run is partitioned into phases that are called segments or modes (multi-mode modeling)
- The transition between modes is triggered by a full restart
- The number of modes is usually not known in advance
- Modia3D is a built-in component for Modia
- Using segmented simulation for Modia3D models defined in an action program, the following actions trigger a full restart for next mode (segment)
ActionAttach
,ActionReleaseAndAttach
,ActionRelease
,ActionDelete
- Enable modeling and simulation of 3D mechanical systems with dynamically changing degrees of freedom during simulation, see corresponding paper: DOI: 10.3390/electronics12030500
- All applications and models mentioned in this paper, can be found in Modia3D release v0.12.0 or Modia release v0.10.0
- Add Force Elements WorldForce and WorldTorque for force/torque vector application by functions of time.
- Enable Force Element results by interface extension (element path and simulation model).
- Improve efficiency of FileMesh contact (faster support point calculation).
- Fix Animation Export:
- Update three.js geometry type names, e.g.
SphereBufferGeometry
->SphereGeometry
. - Enable/fix FileMesh options useMaterialColor and doubleSided.
- Disable double side rendering for standard objects.
- Update three.js geometry type names, e.g.
Non-backwards compatible changes
- Requires Modia 0.10.0. Some internal interfaces have been changed
(should not have an influence on user models).
Closed issues:
- Examples throw error, don't seem to import in Three.js (#119)
Merged pull requests:
- Improve efficiency of FileMesh support point calculation (#118) (@GerhardHippmann)
- Release0.12.0 (#120) (@AndreaNeumayr)
v0.11.2
Modia3D 0.11.2
- Require Modia 0.9.3
v0.11.1
Modia3D 0.11.1
- Bug fix: integrator IDA() can be used (especially to avoid solving large linear equation systems in the model).
Extend some test models to use IDA().
v0.11.0
Modia3D 0.11.0
-
Requires Modia 0.9.1 or later.
-
Additional keyword arguments of Object3D:
Object3D(..., fixedInParent=true, velocity=[0.0, 0.0, 0.0], angularVelocity=[0.0, 0.0, 0.0])
, besides the existingparent, translation, rotation, feature
. A freely moving Object3D is defined withObject3D(..., fixedInParent=false, ...)
, wherevelocity=.., angularVelocity=..
are the initial conditions (resolved in the parent frame). For more details, see Object3D.
The states and other code for such Object3Ds are not part of the generated code (so compilation is faster, and the objects can be changed after code generation). -
The
FreeMotion
joints in all test models have been removed and replaced by Object3Ds withfixedInParent=false
. A new test model test/Basic/FreeShaftAdaptiveRotSequenceWithFreeMotion.jl has been introduced with aFreeMotion
joint, to still have one test for aFreeMotion
joint. -
Revolute(..)
andPrismatic(..)
joints can define axis of rotation/translation optionally as vector, e.g.,axis = [1.0, 2.0, 3.0]
. -
New function
Modia3D.rot1(angle,v)
which is an efficient implementation ofModia3D.rot1(angle)*v
whererot1(angle)
returns a transformation matrix andv
is a vector androt1(angle,v)
returns the product of the transformation matrix and a vector in an efficient way. Correspondingly, there are new functionsModia3D.rot2(angle,v), Modia3D.rot3(angle,v), Modia3D.resolve1(rotation,v2), Modia3D.resolve2(rotation,v1)
. -
Simulation speed improved, if contact of FileMesh objects.
-
contactPairMaterials.json updated with more material pairs (e.g. results in less warning messages for runtests).
-
New file
Modia3D.create_Modia3D_sysimage.jl
to create a sysimage. Using this sysimage has the advantage thatusing Modia3D
is nearly immediately executed (instead of > 30 seconds). For details, see README.md file. -
Internal: Timer included in Scene (scene.timer), so that a timer is more easily accessible for debugging.
-
Internal: Cleanup and improvements of Modia3D/src/Frames.jl
Deprecated
- Joint
FreeMotion
is deprecated. Use insteadObject3D(..., fixedInParent=false, ...)
. Note, Object3D has variablestranslation, rotation, velocity, angularVelocity, rotationXYZ
instead ofr, rot, v, w, isrot123
ofFreeMotion
. Furthermore,angularVelocity
is resolved in the parentObject3D
whereasw
inFreeMotion(obj1=.., obj2=..., ..)
is resolved inobj2
and not inobj1
. This means in particular that the init/start valueFreeMotion(.., w=Var(start=w_start)...)
needs to be transformed in Object3D withObject3D(..., fixedInParent=false, rotation=XXX, angularVelocity = Modia3D.resolve1(XXX,w_start))
and the results ofangularVelocity
will be different tow
because resolved in different coordinate systems.
Non-backwards compatible changes
- Since Modia3D 0.11.0 is based on Modia 0.9.0, the non-backwards compatible changes of Modia have also an effect on Modia3D (for details, see the release notes of Modia 0.9.0). Typically, this should give problems only in seldom occurring corner cases.
v0.10.4
Modia3D v0.10.4
Creation of Modia3D sysimage improved
Merged pull requests:
- Improved generation of sysimage (#113) (@MartinOtter)
v0.10.3
Modia3D v0.10.3
-
New script
Modia3D/create_Modia3D_sysimage.jl
to create a sysimage for a much faster startup
(usage: see README.md file). -
New keyword
Scene(provideAnimationHistory=true)
in order to store animation data compactly during a simulation run.
Aftersimulate!(instantiatedModel, ...)
, the animation data of aModel3D(..)
can be retrieved as dictionary via the new
functionget_animationHistory(instantiatedModel, modelPathAsString)
-
Improvements of the MPR algorithm (which determines the distances between Object3Ds).
Merged pull requests:
- New function get_animationHistory(..) (#108) (@MartinOtter)
- An mpr improvements (#109) (@AndreaNeumayr)
- Mo preparations (#110) (@MartinOtter)
- Project.toml and Manifest.toml updated (#111) (@MartinOtter)
- create_Modia3D_sysimage.jl added (to generate a Modia3D sysimage) (#112) (@MartinOtter)
v0.10.2
Modia3D v0.10.2
-
Model3D(..) with no degrees of freedom is now supported (previously, an error was triggered).
-
Massless solid is now supported (previously, an error was triggered if Solid(..) had zero mass).
-
SolidMaterial, MassProperties, VisualMaterial in Solid(..) and VisualMaterial in Visual(..) improved to handle corner cases:
- SolidMaterial=="" is treated as SolidMaterial = nothing
- VisualMaterial=="" is treated as Shapes.VisualMaterial(), that is the default VisualMaterial.
- massProperties==nothing && solidMaterial==nothing is treated as MassProperties(), that is as massless solid.
-
Error message improved, if closed kinematic loop is detected. Especially, the names of all Object3Ds in the kinematic loop are printed.
-
Error message improved, if no Scene is defined.
-
solid(..., contactSphereRadius::Union{Nothing,FloatType}=xxx) improved:
- changed to contactSphereRadius::Union{Nothing,Number} (e.g. Int is also allowed).
- contactSphereRadius <= 0 is the same as contactSphereRadius = nothing.
-
Removed keyword "path" from the docu of Prismatic, Revolute, FreeMotion, since not to be set by the user (path is set when calling Model3D(..) to store the absolute path name in the joint).
-
New function
loadPalettes!
. Example:
Modia3D.loadPalettes!(solidMaterialPalette = "file1.json", contactPairMaterialPalette = "file2.json", visualMaterialPalette = "file3.json", log=true)
to use the palettes from the provided files instead of the default palettes fromModia3D/palettes/*.json
.
Merged pull requests:
- New function loadPalettes! (#104) (@MartinOtter)
- Add missing file (#105) (@MartinOtter)
- Improve corner cases and error messages (#106) (@MartinOtter)
- New version 0.10.2 (#107) (@MartinOtter)
v0.10.1
Modia3D v0.10.1
- Reduce memory allocations, especially in case of collisions and FreeMotion joints.
- Require Modia 0.8.2 (drastically reduces memory allocations for FreeMotion joints).
Merged pull requests:
- An alloc collision (#102) (@AndreaNeumayr)
- Reduce memory allocation for FreeMotion joints (#103) (@MartinOtter)