|
[Date Index]
[Thread Index]
[Author Index]
Re: Strange behavior of System Modeler
- To: mathgroup at smc.vnet.net
- Subject: [mg130007] Re: Strange behavior of System Modeler
- From: awnl <awnl at gmx-topmail.de>
- Date: Sun, 3 Mar 2013 23:00:37 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-newout@smc.vnet.net
- Delivered-to: mathgroup-newsend@smc.vnet.net
- References: <kgse56$jar$1@smc.vnet.net>
Hi,
>
> I have just started studying WSM and the Modelica language by
> implementing the simple pendulum model (class) es. described on p.33 of
> Peter Fritzson's book Introduction to "Modeling and Simulation of
> Technical and Physical Systems with Modelica". The code (pendulum
> equation written as a DAE) is:
> model DAEExample "DAEExample"
> constant Real PI=3.14159265358979;
> parameter Real m=1,g=9.81,l=0.5;
> output Real F;
> output Real x(start=0.5),y(start=0);
> output Real vx,vy;
> equation
> m*der(vx)=-x/l*F;
> m*der(vy)=-y/l*F - m*g;
> der(x)=vx;
> der(y)=vy;
> x^2 + y^2=l^2;
> end DAEExample;
>
> I run the example in WSM and I get totally meaningless results. The
> solver is the default one (DASSL) which, I think, is the right one
> for handling DAEs.
>
> Any ideas?
If your meaningless results look similar to the ones I get it might be a deficiency of the WSM solver. The way it is written the problem is quite "unfriendly" for a numeric DAE solver and needs some more involved tricks to be solved, see e.g.:
<https://www.modelica.org/events/workshop2000/proceedings/old/Mattsson.pdf>
where the tricks that Dymola uses to get this solved are described. It came as a pleasant surprise to me that Mathematicas NDSolve (with the IndexReduction option) solves this correctly, so it might be a problem that WRI actually knows how to solve and you probably want to report this.
A workaround is of course to use a formulation that is more "friendly" to the solver, e.g. by reformulating in terms of polar coordinates (but I think Peter Fritzson might well use it in this form to demonstrate something...).
hth,
albert
(* Mathematica code for the above: *)
m=1;g=9.81;l=0.5;
res=NDSolve[{
m*vx'[t]==-x[t]/l*f[t],
m*vy'[t]==-y[t]/l*f[t]-m*g,
x'[t]==vx[t],
y'[t]==vy[t],
x[t]^2+y[t]^2==l^2,
x[0]==0.5,
vx[0]==0,
y[0]==0,
vy[0]==0
},{x,vx,y,vy,f},{t,0,5},
Method->{"IndexReduction"->Automatic}
]
xsol=x/.res[[1]]
ysol=y/.res[[1]]
Plot[{xsol[t],ysol[t]},{t,0,5}]
Prev by Date:
Separating space and time functions
Next by Date:
Re: Strange behavior of System Modeler
Previous by thread:
Strange behavior of System Modeler
Next by thread:
Re: Strange behavior of System Modeler
|