Ticket #3424: TestDiff.mos

File TestDiff.mos, 1.8 KB (added by Adeel Asghar, 9 years ago)
Line 
1echo(false);
2s1 := "model BouncingBall
3 parameter Real e=0.7 \"coefficient of restitution\";
4 parameter Real g=9.81 \"gravity acceleration\";
5 Real h(start=1) \"height of ball\";
6 Real v \"velocity of ball\";
7 Boolean flying(start=true) \"true, if ball is flying\";
8 Boolean impact;
9 Real v_new;
10 Integer foo;
11
12equation
13 impact = h <= 0.0;
14 foo = if impact then 1 else 2;
15 der(v) = if flying then -g else 0;
16 der(h) = v;
17
18 when {h <= 0.0 and v <= 0.0,impact} then
19 v_new = if edge(impact) then -e*pre(v) else 0;
20 flying = v_new > 0;
21 reinit(v, v_new);
22 end when;
23
24end BouncingBall;";
25loadString(s1, "BouncingBall");
26getErrorString();
27addClassAnnotation(BouncingBall, annotate=experiment(StartTime=0,StopTime=3,Tolerance=1e-6,Interval=0.006));
28getErrorString();
29answer := "model BouncingBall
30 parameter Real e=0.7 \"coefficient of restitution\";
31 parameter Real g=9.81 \"gravity acceleration\";
32 Real h(start=1) \"height of ball\";
33 Real v \"velocity of ball\";
34 Boolean flying(start=true) \"true, if ball is flying\";
35 Boolean impact;
36 Real v_new;
37 Integer foo;
38
39equation
40 impact = h <= 0.0;
41 foo = if impact then 1 else 2;
42 der(v) = if flying then -g else 0;
43 der(h) = v;
44
45 when {h <= 0.0 and v <= 0.0,impact} then
46 v_new = if edge(impact) then -e*pre(v) else 0;
47 flying = v_new > 0;
48 reinit(v, v_new);
49 end when;
50 annotation(experiment(StartTime = 0, StopTime = 3, Tolerance = 1e-6, Interval = 0.006));
51end BouncingBall;";
52s2 := listFile(BouncingBall);
53print(s2);
54if answer<>diffModelicaFileListings(s1, s2, OpenModelica.Scripting.DiffFormat.plain) then
55 print("\nFailed \n");
56 print("\nStart model:\n\n" + s1 + "\n");
57 print("\nExperiment annotation+listFile:\n\n" + s2 + "\n");
58 print("\nDiff:\n\n" + diffModelicaFileListings(s1, s2) + "\n");
59 print(getErrorString());
60end if;