aboutsummaryrefslogtreecommitdiffstats
path: root/modelica-parser-lalrpop/examples/modelica_other/breaking_pendulum.mo
diff options
context:
space:
mode:
Diffstat (limited to 'modelica-parser-lalrpop/examples/modelica_other/breaking_pendulum.mo')
-rw-r--r--modelica-parser-lalrpop/examples/modelica_other/breaking_pendulum.mo29
1 files changed, 29 insertions, 0 deletions
diff --git a/modelica-parser-lalrpop/examples/modelica_other/breaking_pendulum.mo b/modelica-parser-lalrpop/examples/modelica_other/breaking_pendulum.mo
new file mode 100644
index 0000000..f719a04
--- /dev/null
+++ b/modelica-parser-lalrpop/examples/modelica_other/breaking_pendulum.mo
@@ -0,0 +1,29 @@
+record PendulumData
+ parameter Real m, g, L;
+end PendulumData;
+
+partial model BasePendulum
+ PendulumData p;
+ input
+ Real u;
+ output Real pos[2], vel[2];
+end BasePendulum;
+
+block Pendulum
+ extends BasePendulum;
+ constant Real PI=3.141592653589793;
+ output
+ Real phi(start=PI/4), phid;
+equation
+ phid = der(phi);
+ p.m*p.L*p.L*der(phid) + p.m*p.g*p.L*sin(phi) = u;
+ pos = [p.L*sin(phi); -p.L*cos(phi)];
+ vel = der(pos);
+end Pendulum;
+
+block BrokenPendulum
+ extends BasePendulum;
+equation
+ vel = der(pos);
+ p.m*der(vel) = p.m*[0; -p.g];
+end BrokenPendulum;