C_R

3762 Reputation

21 Badges

6 years, 233 days

MaplePrimes Activity


These are Posts that have been published by C_R

From a discussion about expanding unit expressions with compound units I concluded that expanding derived units such as Newton, Watt, Volt, Tesla,... to SI base units is difficult in Maple.

Unintentionally, I came across a rather simple solution for SI units.

toSIbu := x -> x = Units:-Unit(simplify(x/Unit('kg'))*Unit('kg'));

converts derived SI units to SI base units. It’s the inverse of what the units packages and simplify do (i.e. simplification to derived units).

What makes it maybe more interesting: It also works, again unintentionally, on other units than SI units. If, one day, you come along an erg or a hartree or or a kyne and you cannot guess the SI units convert/units needs, try

toSIbu(Unit('pound'));
toSIbu(Unit('hp'));
toSIbu(Unit('electron'));
toSIbu(Unit('hartree'));
toSIbu(Unit('bohr'));
toSIbu(Unit('barye'));
toSIbu(Unit('kyne'));
toSIbu(Unit('erg'));
toSIbu(Unit(mile/gal(petroleum)));

Maybe handy one day when you do not trust AI or the web.


 

NULL 

toSIbu := x -> x = Units:-Unit(simplify(x/Unit('kg'))*Unit('kg')):
toSIbu(Unit('N'));
toSIbu(Unit('J'));
toSIbu(Unit('W'));
toSIbu(Unit('Pa'));
toSIbu(Unit('C'));
toSIbu(Unit('F'));
toSIbu(Unit('S'));
toSIbu(Unit('H'));
toSIbu(Unit('T'));
toSIbu(Unit('V'));
toSIbu(Unit('Wb'));
toSIbu(Unit('Omega'));
toSIbu(Unit('lx'));
toSIbu(Unit('lm'));
toSIbu(Unit('degC'));
toSIbu(Unit('rad'));
toSIbu(Unit('sr'));

Units:-Unit(N) = Units:-Unit(m*kg/s^2)

 

Units:-Unit(J) = Units:-Unit(m^2*kg/s^2)

 

Units:-Unit(W) = Units:-Unit(m^2*kg/s^3)

 

Units:-Unit(Pa) = Units:-Unit(kg/(m*s^2))

 

Units:-Unit(C) = Units:-Unit(A*s)

 

Units:-Unit(F) = Units:-Unit(A^2*s^4/(m^2*kg))

 

Units:-Unit(S) = Units:-Unit(A^2*s^3/(m^2*kg))

 

Units:-Unit(H) = Units:-Unit(m^2*kg/(A^2*s^2))

 

Units:-Unit(T) = Units:-Unit(kg/(A*s^2))

 

Units:-Unit(V) = Units:-Unit(m^2*kg/(A*s^3))

 

Units:-Unit(Wb) = Units:-Unit(m^2*kg/(A*s^2))

 

Units:-Unit(`Ω`) = Units:-Unit(m^2*kg/(A^2*s^3))

 

Units:-Unit(lx) = Units:-Unit(cd/m^2)

 

Units:-Unit(lm) = Units:-Unit(cd)

 

Units:-Unit(`°C`) = Units:-Unit(K)

 

Units:-Unit(rad) = Units:-Unit(m/m(radius))

 

Units:-Unit(sr) = Units:-Unit(m^2/m(radius)^2)

(1)

NULL


 

Download toSIbu.mw


(All done with Maple 2024 without loading any package)

 

 

 

This post summarizes links for those who have not studied numerical integration methods from scratch and are interested in simulation settings in MapleSim (like me).

The MapleSim help pages simulation settings and advanced simulation settings give first guidance for the trained user but do not provide explanations or links for the terms used in the description of the settings (as for example: stiffness, constraint stabilization, constraint projection, events and event iteration,...).

It can easily be overlooked that Maple help pages provide further information for most of the terms. Under the assumption that MapleSim uses the same terminology as Maple, I recommend to first have a look at Maple help topics before consulting the web or other resources. Since searching and retrieving can be time consuming, I made a list of helpful links.

There are still some open points. I would be happy for more links and help in filling these gaps.

 

How Maple simulates

?MapleSimUserGuide,Chapter04:
section 4.1 How MapleSim Simulates a Model

?tasks,generatingCode

Ein Bild, das Text, Screenshot, Diagramm, Design enthält.

Automatisch generierte Beschreibung

 

Solvers

An overview of solvers: ?dsolve,numeric

Differential Algebraic Equation introduction: ?MaplePortal,DAE

Overview of numeric differential-algebraic equation solvers (index reduction, constraint drift, projection):
 ?examples/numeric_DAE and ?dsolve,numeric,DAE_extension

Stiffness and stiff solvers

Stiffness and stiff IVPs: ?dsolve,Stiffness

Events

?dsolve,numeric,Events

Time events and state events

Event handling:

?MapleSimUserGuide,Chapter04:
section 4.1 How MapleSim Simulates a Model

Event iteration:

?MapleSimUserGuide,Chapter05:
section 5.5 Selecting the Code Generation Options

Iteration, hysteresis, Intermediate steps: ?tasks,generatingCode

Hysteresis:

Hysteresis in value or also in time?

Do variable solvers adapt the value of event hysteresis during runtime?

 

Baumgarte constraint stabilization, unconstrained dynamics, constrained dynamics

?MapleSim,Multibody,Dynamic_Exports
(in combination with ?MapleSim,Multibody,Kinematic_Exports)

?examples/numeric_DAE

?tasks,generatingCode

?MapleSimUserGuide,Chapter05:
section 5.5 Selecting the Code Generation Options

Error control

              ?dsolve,numeric,Error_Control

              Absolute error: ?dsolve,numeric,IVP

              Relative error: (relative to what?)

Index1 error control and Index1 Tollerance: see solvers

Scaling

scalemethod (this does not seem to exist in Maple)

 

Examples (Multibody)

Events

                            Catapult
                            (from MapleSim>Help>Examples>Physical Domains>Multibody)
                            contact events

                          Catapult_-_Events.msim

                            Throwing a ball
                            (from MapleSim>Help>Examples>Physical Domains>Multibody)

                            conditional events (with boolean logic)

                          Throwing_a_Ball_-_Events.msim

              Solvers

              Conservation of energy of a pendulum depends on solvers.
                           Euler increases energy, implict Euler dissipates energy.

             Pendulum_for_solver_comparision.msim

           

Constraint dirft/projection

              2-d rigid slider crank

               (from MapleSim>Help>Examples>Physical Domains>Multibody)

              projection off leads to assembly desintegration after 2000 s simulation

             2D_Rigid_Slider_Crank_-_constraint_projection.msim

                         A stiff solver improves constraint drift, but only delays desintegration

                         Baumgarte constraint stabilization prevents simulation error but shows dislocated rigid body frames

 

It can happen when an operation is interrupted by  that Maple does not return to  and still shows .

This can give the false impression that the Maple server in charge of the evaluation did not get the message to stop whatever it was doing.

By giving Maple an impossible task to solve analytically

f1 := x1 - x1*sin(x1 + 5*x2) - x2*cos(5*x1 - x2);
f2 := x2 - x2*sin(5*x1 - 3*x2) + x1*cos(3*x1 + 5*x2);
solve({f1, f2});

I have noticed in the Windows Task Manager that freeing allocated memory can take much longer than one might think.

In one case it took 30 minutes to free 24 Gb of total allocated memory (21 Gb of it in RAM/physical memory). In this case the interrupt button became active (turned from grey to red ) two times and memory continued piling up  again.

Lessons learned for me:

  • The task manager is not only a valuable indicator for task activity but also for the interruption/memory freeing process.
  • Before killing a whole Maple session and potentially losing the last state of a worksheet it can pay off to wait and repeatedly interrupt an operation.

 

Suggestion: When the maple server gets an interrupt request, it could report to the GUI that it is in an interruption state and is no longer evaluating input. For example changing the message in the status bar from Evaluating... to Interrupting...

A ball on a turntable can move in circles instead of falling off the edge (provided the initial conditions are appropriate). The effect was demonstrated in a video and can be simulated with MapleSim. The amination below shows a simulation of a frictionless case (falling off the table) and the case with a coefficient of friction of one.

Also demonstrated in the video: Tilting the table leads to a sideward (not a downhill) movement of the ball.

The presenter of the video noted that in the untilted state, the ball eventually drifts off the table, attributing this to slippage. This drift is also observable in the animation above, where the ball starts moving in a spiral, whereas in a Maple simulation (below to the left), the ball follows a perfect circle. Only after optimizing contact and initial conditions, MapleSim produced a result (using the same parameters) that exhibits a similar circle, with a slight difference in angular orientation after completing two revolutions about the center of the circle.