]> permondes.de Git - Analog_Engine.git/commitdiff
Harmonic Oscillator basics, some changes to AESL
authorPermondes <machen@permondes.de>
Thu, 1 Feb 2024 08:55:59 +0000 (09:55 +0100)
committerPermondes <machen@permondes.de>
Thu, 1 Feb 2024 08:55:59 +0000 (09:55 +0100)
Applicaton: new Harmonic Oscillator basics
Scripting language:
- Operators are not numbered any more
. Coefficients are addressed by their “name”
- Removed ALIAS, it does not support readability

AESL/Damped Harmonic Osciallator scaled.AESL
AESL/Damped Harmonic Oscillator.AESL
AESL/Radioactive Decay.AESL
AESL/TP1 03.08 Charge in em field.AESL [moved from AESL/Charge in em field.AESL with 55% similarity]
AESL/TP1 04.10 MassOnSphere.AESL [moved from AESL/4.10 MassOnSphere.AESL with 77% similarity]
AESL/TP1 04.11 TwoRaindrops.AESL [moved from AESL/4.11 TwoRaindrops.AESL with 58% similarity]
AESL/TP1 04.12 Harmonic Oscillator.AESL [new file with mode: 0644]
AESL/Template.AESL
Analog Engine Example Applications.odt
Analog Engine Scripting Language.odt

index 06a7a9e83a493275558b608a083c3c088f6896f5..8bae8f39efc7c664f1c93baf4e15643b37fc5fe6 100644 (file)
@@ -26,14 +26,14 @@ PROGRAM DIVISION
 # - red:    y
 -1 -> InitialPosition -> -y0 # -initial position of the mass
 -1 -> InitialSpeed -> y0s’ # y’ is scaled to be within -1..+1
-+1, y0s’, y0s’ -> Summer.1 -> y0’
++1, y0s’, y0s’ -> Summer -> y0’
 
-y’’, IC:y0’ -> INTEGRATOR.1 -> -y’
--y’,IC:-y0 -> INTEGRATOR.2 -> y
+y’’, IC:y0’ -> INTEGRATOR -> -y’
+-y’,IC:-y0 -> INTEGRATOR -> y
 y -> SpringForce -> S*y # springforce times displacement
--y’ -> INVERTER.1 -> y’
+-y’ -> INVERTER -> y’
 y’ -> Damping -> D*y’ # damping times speed
-10:S*y, 10:D*y’ -> SUMMER.2 -> -(Dy’+Sy)
+10:S*y, 10:D*y’ -> SUMMER -> -(Dy’+Sy)
 -(Dy’+Sy) -> Mass -> -1/m*(Dy’+Sy)=y’’
 
 OPERATION DIVISION
index 12a995e7dbb08f701d23a26076401e45bf31712f..7451fcb1489f06c88fccf261a63da0cc8090e705 100644 (file)
@@ -10,11 +10,11 @@ REQUIRES SUMMER 2
 
 DATA DIVISION
 OUTPUT OUTPUT.U y
-ALIAS COEFFICIENT.1 InitialPosition
-ALIAS COEFFICIENT.2 InitialSpeed
-ALIAS COEFFICIENT.3 SpringForce
-ALIAS COEFFICIENT.4 Damping # linear to speed
-ALIAS COEFFICIENT.5 Mass # 1 / mass
+COEFFICIENT.1 InitialPosition
+COEFFICIENT.2 InitialSpeed
+COEFFICIENT.3 SpringForce
+COEFFICIENT.4 Damping # linear to speed
+COEFFICIENT.5 Mass # 1 / mass
 
 PROGRAM DIVISION
 # Colors being used for wiring
@@ -23,16 +23,16 @@ PROGRAM DIVISION
 # - green:  y0’’
 # - yellow: y’’, y’
 # - red:    y
--1 -> InitialPosition -> -y0 # -initial position of the mass
--1 -> InitialSpeed -> y0s’ # y’ is scaled to be within -1..+1
-+1, y0s’, y0s’ -> Summer.1 -> y0’
-y’’, IC:y0’ -> INTEGRATOR.1 -> -y’
--y’,IC:-y0 -> INTEGRATOR.2 -> y
-y -> SpringForce -> S*y # springforce times displacement
--y’ -> INVERTER.1 -> y’
-y’ -> Damping -> D*y’ # damping times speed
-S*y, D*y’ -> SUMMER.2 -> -(Dy’+Sy)
--(Dy’+Sy) -> Mass -> -1/m*(Dy’+Sy)=y’’
+-1 -> COEFFICIENT.InitialPosition -> -y0 # -initial position of the mass
+-1 -> COEFFICIENT.InitialSpeed -> y0s’ # y’ is scaled to be within -1..+1
++1, y0s’, y0s’ -> SUMMER -> y0’
+y’’, IC:y0’ -> INTEGRATOR -> -y’
+-y’,IC:-y0 -> INTEGRATOR -> y
+y -> COEFFICIENT.SpringForce -> S*y # springforce times displacement
+-y’ -> INVERTER -> y’
+y’ -> COEFFICIENT.Damping -> D*y’ # damping times speed
+S*y, D*y’ -> SUMMER -> -(Dy’+Sy)
+-(Dy’+Sy) -> COEFFICIENT.Mass -> -1/m*(Dy’+Sy)=y’’
 
 OPERATION DIVISION
 MODE REPEAT
index e225eef3b37195e5debd94219ebce0563717b46d..ef7fcdf49b3568aabdaa90f13fad9401971b71f8 100644 (file)
@@ -3,20 +3,20 @@ PROGRAM-ID Radioactive_Decay
 
 ENVIRONMENT DIVISION
 ENGINE Anabrid-THAT
-REQUIRES Coefficient 2
-REQUIRES Integrator 1
-REQUIRES Inverter 1
+REQUIRES COEFFICIENT 2
+REQUIRES INTEGRATOR 1
+REQUIRES INVERTER 1
 
 DATA DIVISION
 OUTPUT OUTPUT.X N
-ALIAS COEFFICIENT.1 InitialValue
-ALIAS COEFFICIENT.2 Decay 
+COEFFICIENT.1 InitialValue
+COEFFICIENT.2 Decay 
 
 PROGRAM DIVISION
-+1 -> InitialValue -> N0
-N’, IC:N0 -> Integrator.1 -> -N
--N -> Decay -> -lambda*N=N’
--N -> Inverter.1 -> N
++1 -> COEFFICIENT.InitialValue -> N0
+N’, IC:N0 -> INTEGRATOR -> -N
+-N -> COEFFICIENT.Decay -> -lambda*N=N’
+-N -> INVERTER -> N
 
 OPERATION DIVISION
 MODE REPEAT
similarity index 55%
rename from AESL/Charge in em field.AESL
rename to AESL/TP1 03.08 Charge in em field.AESL
index 2a301fc2de4d8e981690ae9e19b29b8a14bbc845..e56c9bd975dd475efe56d4852189b12651c6acc5 100644 (file)
@@ -9,23 +9,24 @@ COMMENT good start settings are omega=0,92, a*omega^2=0,05
 ENVIRONMENT DIVISION
 ENGINE Anabrid-THAT
 TIMEBASE 1ms # corresponds to 1s
-REQUIRES INTEGRATOR 4
-REQUIRES INVERTER 1
-REQUIRES COEFFICIENT 3
+REQUIRES INTEGRATOR 4, INVERTER 1, COEFFICIENT 3
 
 DATA DIVISION
 OUTPUT OUTPUT.X x
 OUTPUT OUTPUT.Z z
+COEFFICIENT.1 OMEGA_X # -omega for x'
+COEFFICIENT.2 A*OMEGA^2 
+COEFFICIENT.3 OMEGA_z # omega for z'
 
 PROGRAM DIVISION
-x'' -> INTEGRATOR.1 -> -x'
--x' -> INTEGRATOR.2 -> x
--x' -> COEFFICIENT.6 -> -omega*x'
-+1  -> COEFFICIENT.7 -> a*omega^2
-a*omega^2, -omega*x' -> INTEGRATOR.4 -> -z' # input is z''
--z' -> INTEGRATOR.5 -> z
--z' -> INVERTER.1 -> z'
-z'  -> COEFFICIENT.5 -> omega*z' = x''
+x'' -> INTEGRATOR -> -x'
+-x' -> INTEGRATOR -> x
+-x' -> COEFFICIENT.OMEGA_X -> -omega*x'
++1  -> COEFFICIENT.A*OMEGA^2 -> a*omega^2
+a*omega^2, -omega*x' -> INTEGRATOR -> -z' # input is z''
+-z' -> INTEGRATOR -> z
+-z' -> INVERTER -> z'
+z'  -> COEFFICIENT.OMEGA_Z -> omega*z' = x''
 
 OPERATION DIVISION
 MODE REPEAT
similarity index 77%
rename from AESL/4.10 MassOnSphere.AESL
rename to AESL/TP1 04.10 MassOnSphere.AESL
index 795a794007c08283ece664bc2075cd994c832446..b6dfbbe246f12111a559812d0394ce6216eda5ad 100644 (file)
@@ -36,22 +36,22 @@ PROGRAM DIVISION
 -1 -> COEFFICIENT.6 -> -y0
 -1 -> COEFFICIENT.7 -> -x0
 
-x'' -> INTEGRATOR.1 -> -x'
--x', IC:-x0 -> INTEGRATOR.2 -> x
-y'' -> INTEGRATOR.3 -> -y'
--y', IC:-y0 -> INTEGRATOR.4 -> y
-x,y -> MULTIPLIER.1 -> x*y
-y,y -> MULTIPLIER.2 -> y^2
+x'' -> INTEGRATOR -> -x'
+-x', IC:-x0 -> INTEGRATOR -> x
+y'' -> INTEGRATOR -> -y'
+-y', IC:-y0 -> INTEGRATOR -> y
+x,y -> MULTIPLIER -> x*y
+y,y -> MULTIPLIER -> y^2
 x*y -> COEFFICIENT.1 -> 3g/a²*x*y/10
 y^2 -> COEFFICIENT.2 -> 3g/a²*y^2/10
 x -> COEFFICIENT.3 -> 2g/a*x/10
 y -> COEFFICIENT.4 -> 2g/a*y/10
-2g/a*x/10 -> INVERTER.1 -> -2g/a*x/10
-2g/a*y/10 -> INVERTER.2 -> -2g/a*y/10
-10:3g/a²*x*y/10, 10:-2g/a*x/10 -> SUMMER.1 -> -x''
--x'' -> INVERTER.3 -> x''
-10:3g/a²*y^2/10, 10:-2g/a*y/10, 1:-g -> SUMMER.2 -> -y''
--y'' -> INVERTER.4 -> y''
+2g/a*x/10 -> INVERTER -> -2g/a*x/10
+2g/a*y/10 -> INVERTER -> -2g/a*y/10
+10:3g/a²*x*y/10, 10:-2g/a*x/10 -> SUMMER -> -x''
+-x'' -> INVERTER -> x''
+10:3g/a²*y^2/10, 10:-2g/a*y/10, 1:-g -> SUMMER -> -y''
+-y'' -> INVERTER -> y''
 
 OPERATION DIVISION
 MODE REPEAT
similarity index 58%
rename from AESL/4.11 TwoRaindrops.AESL
rename to AESL/TP1 04.11 TwoRaindrops.AESL
index 4c83095044ca265b4567b68d1eeda7dcb85ae505..2f67350077e9b116c594d2c19851c36348bb9d5c 100644 (file)
@@ -1,6 +1,6 @@
 IDENTIFICATION DIVISION
 PROGRAM-ID TwoRaindrops
-VERSION 20240131
+VERSION 20240201
 COMMENT Two raindrops of same size and altitude are falling from a cloud.
 COMMENT How long does it take until the touch?
 COMMENT s'' = -2*gamma*m/s^2
@@ -12,27 +12,27 @@ REQUIRES COEFFICIENT 3, INVERTER 1, INTEGRATOR 2, COMPARATOR 1, MULTIPLIER 2, OP
 
 DATA DIVISION
 OUTPUT OUTPUT.X s_limited
-COEFFICIENT.1 2*radius of the raindrop
-COEFFICIENT.2 initial distance -s0
-COEFFICIENT.3 2*gamma*m
+COEFFICIENT.1 MIN_DISTANCE  # 2*radius of the raindrop
+COEFFICIENT.2 INIT_DISTANCE # initial distance -s0
+COEFFICIENT.3 FACTOR        # 2*gamma*m
 
 PROGRAM DIVISION
-+1 -> COEFFICIENT.1 -> 2r
-2r -> INVERTER.1 -> -2r
--1 -> COEFFICIENT.2 -> -s0
-+1 -> COEFFICIENT.3 -> 2gamma*m
-s'' -> INTEGRATOR.1 -> -s'
--s', IC:-s0 -> INTEGRATOR.2 -> s
++1 -> COEFFICIENT.MIN_DISTANCE -> 2r
+2r -> INVERTER -> -2r
+-1 -> COEFFICIENT.INIT_DISTANCE -> -s0
++1 -> COEFFICIENT.FACTOR -> 2gamma*m
+s'' -> INTEGRATOR -> -s'
+-s', IC:-s0 -> INTEGRATOR -> s
 
 # The raindrops may only approach until they touch. Our model does not include their unification
-A:s, B:-2r, GT0:s, LT0:2r -> COMPARATOR.1 -> s_limited
+A:s, B:-2r, GT0:s, LT0:2r -> COMPARATOR -> s_limited
 
-s_limited,s_limited -> MULTIPLIER.1 -> s^2
+s_limited,s_limited -> MULTIPLIER -> s^2
 
 # division 2gamma*m / s^2
 # Open amplifier is realized on THAT by FB:SUMMER.GND -> SUMMER
 2gamma*m, inp2 -> OPEN-AMP -> -2gamma*m/s^2=s''
-2gamma*m^2, s^2 -> MULTIPLIER.2 -> inp2
+2gamma*m^2, s^2 -> MULTIPLIER -> inp2
 
 OPERATION DIVISION
 MODE REPEAT
diff --git a/AESL/TP1 04.12 Harmonic Oscillator.AESL b/AESL/TP1 04.12 Harmonic Oscillator.AESL
new file mode 100644 (file)
index 0000000..2c0e512
--- /dev/null
@@ -0,0 +1,40 @@
+IDENTIFICATION DIVISION
+PROGRAM-ID HarmonicOscillator
+VERSION 20240201
+COMMENT A mass m is subject to a force F=-k*r.
+COMMENT What is the trajectory if the mass starts at position (a,0,0)?
+COMMENT How much time does it take to pass through zero?
+COMMENT What is the trajectory if it starts at (a,0,0) with velocity (0,v0,0)?
+COMMENT m*x'' = -k*x
+COMMENT m*y'' = -k*y (z can be set to 0).
+
+ENVIRONMENT DIVISION
+ENGINE Anabrid-THAT
+TIMEBASE 1ms
+REQUIRES COEFFICIENT 4, INTEGRATOR 4, INVERTER 2
+
+DATA DIVISION
+OUTPUT OUTPUT.X x
+OUTPUT OUTPUT.Y y
+COEFFICIENT.1 A     # (a,0,0)
+COEFFICIENT.2 K/M_x # k/m for x
+COEFFICIENT.3 V0    # (0,v0,0)
+COEFFICIENT.4 K/M_y # k/m for y, identical to k/m for x
+
+PROGRAM DIVISION
+-1 -> COEFFICIENT.A -> -a # has to be negative because x' is negative
++1 -> COEFFICIENT.V0 -> v0 # has to be positive because y'' is positive
+
+x'' -> INTEGRATOR -> -x'
+-x', IC:-a -> INTEGRATOR -> x
+x -> COEFFICIENT.K/M_x -> k/m*x
+k/m*x -> INVERTER -> -k/m*x = x''
+
+y'', IC:v0 -> INTEGRATOR -> -y'
+-y' -> INTEGRATOR -> y
+y -> COEFFICIENT.K/M_y -> k/m*y
+k/m*y -> INVERTER -> -k/m*y = y''
+
+OPERATION DIVISION
+MODE REPEAT
+OP-TIME 100 ms
index 7807ae739cd25875494b5ecd95409ac945f8f056..48143fb7eced33dfdec7770730105a60ef23fb9d 100644 (file)
@@ -14,7 +14,6 @@ OUTPUT OUTPUT.X ...
 OUTPUT OUTPUT.Y ...
 OUTPUT OUTPUT.Z ...
 OUTPUT OUTPUT.U ...
-ALIAS ...
 COEFFICIENT.n ...
 
 PROGRAM DIVISION
index c30807435c2304165e6de86b74dc023e6b068141..ec40f5f15a330f070a4b8bb4877d577834074722 100644 (file)
Binary files a/Analog Engine Example Applications.odt and b/Analog Engine Example Applications.odt differ
index 03a362e66a231dc5da043b77c3f506ef90193bf7..d45a6c1f1e38936c94645eee49d20ff2926c21ac 100644 (file)
Binary files a/Analog Engine Scripting Language.odt and b/Analog Engine Scripting Language.odt differ