Skip to content

Releases: ModiaSim/Modia3D.jl

v0.12.2

23 Nov 14:48
22f3af5
Compare
Choose a tag to compare

Modia3D v0.12.2

Diff since v0.12.1

  • 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:

Closed issues:

  • Can't create json animation files on mac (#124)

v0.12.1

04 Jun 23:19
cd95187
Compare
Choose a tag to compare

Modia3D v0.12.1

Diff since v0.12.0

Merged pull requests:

v0.12.0

30 May 14:25
8d4318e
Compare
Choose a tag to compare

Modia3D v0.12.0

Diff since v0.11.2

  • 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.

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:

v0.11.2

05 Aug 08:47
Compare
Choose a tag to compare

Modia3D 0.11.2

  • Require Modia 0.9.3

v0.11.1

13 Jul 04:11
6d3de5b
Compare
Choose a tag to compare

Modia3D 0.11.1

Diff since v0.11.0

  • 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

08 Jul 03:50
e6a0431
Compare
Choose a tag to compare

Modia3D 0.11.0

Diff since v0.10.4

  • 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 existing parent, translation, rotation, feature. A freely moving Object3D is defined with Object3D(..., fixedInParent=false, ...), where velocity=.., 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 with fixedInParent=false. A new test model test/Basic/FreeShaftAdaptiveRotSequenceWithFreeMotion.jl has been introduced with a FreeMotion joint, to still have one test for a FreeMotion joint.

  • Revolute(..) and Prismatic(..) 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 of Modia3D.rot1(angle)*v where rot1(angle) returns a transformation matrix and v is a vector and rot1(angle,v) returns the product of the transformation matrix and a vector in an efficient way. Correspondingly, there are new functions Modia3D.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 that using 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 instead Object3D(..., fixedInParent=false, ...). Note, Object3D has variables translation, rotation, velocity, angularVelocity, rotationXYZ instead of r, rot, v, w, isrot123 of FreeMotion. Furthermore, angularVelocity is resolved in the parent Object3D whereas w in FreeMotion(obj1=.., obj2=..., ..) is resolved in obj2 and not in obj1. This means in particular that the init/start value FreeMotion(.., w=Var(start=w_start)...) needs to be transformed in Object3D with Object3D(..., fixedInParent=false, rotation=XXX, angularVelocity = Modia3D.resolve1(XXX,w_start)) and the results of angularVelocity will be different to w 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

18 Apr 19:45
8849af7
Compare
Choose a tag to compare

Modia3D v0.10.4

Diff since v0.10.3

Creation of Modia3D sysimage improved

Merged pull requests:

v0.10.3

18 Apr 09:16
6408163
Compare
Choose a tag to compare

Modia3D v0.10.3

Diff since v0.10.2

  • 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.
    After simulate!(instantiatedModel, ...), the animation data of a Model3D(..) can be retrieved as dictionary via the new
    function get_animationHistory(instantiatedModel, modelPathAsString)

  • Improvements of the MPR algorithm (which determines the distances between Object3Ds).

Merged pull requests:

v0.10.2

26 Mar 22:40
d835812
Compare
Choose a tag to compare

Modia3D v0.10.2

Diff since v0.10.1

  • 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 from Modia3D/palettes/*.json.

Merged pull requests:

v0.10.1

06 Mar 22:49
Compare
Choose a tag to compare

Modia3D v0.10.1

Diff since v0.10.0

  • 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: