--- /dev/null
+IDENTIFICATION DIVISION
+PROGRAM-ID HollowCylinder
+VERSION 20240312
+COMMENT A homogeneous hollow cylinder (mass m, ration inner to outer radius epsilon) is connected to a massless spring (constant lambda).
+COMMENT The system is deflected from its rest position by the distance a.
+COMMENT The cylinder rolls without sliding.
+COMMENT x'' = - 2*lambda * 1/m * 1/(3+epsilon²) * x
+
+ENVIRONMENT DIVISION
+ENGINE Anabrid-THAT
+TIMEBASE 1ms
+REQUIRES COEFFICIENT 4, INTEGRATOR 2, INVERTER 1
+
+DATA DIVISION
+OUTPUT OUTPUT.X x
+COEFFICIENT.1 2*lambda
+COEFFICIENT.2 1/m
+COEFFICIENT.3 1/(3+epsilon²) # = 1/3 (0,333) for epsilon=0 and 1/4 (0,25) for epsiolon=1 or anything in between
+COEFFICIENT.4 a
+
+PROGRAM DIVISION
++1 -> COEFFICIENT.A -> a
+
+x'' -> INTEGRATOR -> -x'
+-x', IC:a -> INTEGRATOR -> x
+x -> COEFFICIENT.2*lambda -> 2*lambda*x
+2*lambda*x -> COEFFICIENT.1/m -> 2*lambda*1/m*x
+2*lambda*1/m*x -> COEFFICIENT.1/(3+epsilon²) -> 2*lambda*1/m*1/(3+epsilon²)*x
+2*lambda*1/m*1/(3+epsilon²)*x -> INVERTER -> -2*lambda*1/m*1/(3+epsilon²)*x = x''
+
+OPERATION DIVISION
+MODE REPEAT
+OP-TIME 52ms
--- /dev/null
+coefficient(1): a
+
+integrate (y'') -> -y':
+ IC: +1
+integrate (-y') -> y
+invert (y) -> -y
+sin = y
+
+integrate (omega') -> -omega
+a * sin -> a_times_sin
+omega' = a_times_sin
+
+invert (-omega) -> omega
+multiply (omega, omega) -> omega²
+multiply (omega², -y) -> -omega²y
+y'' = -omega²y
--- /dev/null
+# a rope slides frictionlessly down the edge of a table
+# x'' = g/l * x
+
+coefficient(1): 1 -> x0' # initial speed
+coefficient(2): -1 -> -x0 # initial length of rope already over the edge of the table
+coefficient(3): g/l # gravity constant (g) devided by the length of the rope (l)
+
+iintegrate (x'') -> -x':
+ IC: x0'
+iintegrate (-x') -> x:
+ IC: -x0
+x * g/l -> g/l*x = x''
+
+# note: positive x-axis in the direction of the falling rope (so down)
+# for visualization, -x is displayed
+invert (x) -> -x # goes to output x