From: Permondes Date: Fri, 5 Jul 2024 15:55:21 +0000 (+0200) Subject: Applications: Longitudinal oscillating chains; PDEs X-Git-Url: https://permondes.de/gitweb/Analog_Engine.git/commitdiff_plain/5696855722ffee5fe74137923409eeaf0c6cff24?hp=48debccd2fb1ede90115dd471fae71b2761e1299 Applications: Longitudinal oscillating chains; PDEs Applications: Longitudinal oscillating chains - Masses hanging on springs - 2 masses fixed to walls - linear molecule Technical topics: - Partial differential equations - Added capacitance of THAT integrators - building additional integrators Scripting language: - renamed DELACE to LACE - some minor adaptation --- diff --git a/Analog Engine Example Applications.odt b/Analog Engine Example Applications.odt index 0fba40a..96723b6 100644 Binary files a/Analog Engine Example Applications.odt and b/Analog Engine Example Applications.odt differ diff --git a/Analog Engine Scripting Language.odt b/Analog Engine Scripting Language.odt index f2ecf86..50ef933 100644 Binary files a/Analog Engine Scripting Language.odt and b/Analog Engine Scripting Language.odt differ diff --git a/Analog Engine Technical Topics.odt b/Analog Engine Technical Topics.odt index d3efb95..28d4ff1 100644 Binary files a/Analog Engine Technical Topics.odt and b/Analog Engine Technical Topics.odt differ diff --git a/DEscription Language for Analog Circuit Engines.odt b/DEscription Language for Analog Circuit Engines.odt deleted file mode 100644 index 6332b1e..0000000 Binary files a/DEscription Language for Analog Circuit Engines.odt and /dev/null differ diff --git a/description Language for Analog Circuit Engines.odt b/description Language for Analog Circuit Engines.odt new file mode 100644 index 0000000..979810d Binary files /dev/null and b/description Language for Analog Circuit Engines.odt differ diff --git a/scripts/TP1 07.19 Falling Mass.DELACE b/scripts/TP1 07.19 Falling Mass.LACE similarity index 100% rename from scripts/TP1 07.19 Falling Mass.DELACE rename to scripts/TP1 07.19 Falling Mass.LACE diff --git a/scripts/TP1 07.19 Falling Mass.SALSA b/scripts/TP1 07.19 Falling Mass.SALSA new file mode 100644 index 0000000..3f3dc6b --- /dev/null +++ b/scripts/TP1 07.19 Falling Mass.SALSA @@ -0,0 +1,55 @@ +# Wiring mache ich von links nach rechts !!! + +...IDENTIFICATION DIVISION +...PROGRAM-ID FallingParticle +...VERSION 20240225 +...COMMENT Calculate the deflection from the vertical caused by the Earth's rotation of a particle falling freely from rest from a height h. +...COMMENT Differential Equations: +...COMMENT x''=-bz'+ay' # x-axis is along latitude, directed to east +...COMMENT y''=-ax' # y-axis is along longitude, directed to north +...COMMENT z''=-g+ax' # z-axis is perpendicular to the surface of earth +...COMMENT g: gravitational acceleration = 9,81 m/s² +...COMMENT a: 2*omega*sin(phi) +...COMMENT b: 2*omega*cos(phi) +...COMMENT omega: rotation velocity of the earth = 2*pi/day +...COMMENT phi: Latitude of location (0-90°) +...COMMENT Initial Condition: z(0)=h +...COMMENT The full solution requires 6 INTEGRATORs, Anabrid-THAT just has 5. The deflection to longitude (y) is neglegible and can be omitted (marked #*). +...COMMENT It could also be solved in a separated algorithm omitting x. + +...ENVIRONMENT DIVISION +...TIMEBASE 1ms + +...DATA DIVISION +SET COEFFICIENT.1 TO AY # 2*2pi/day*sin(phi) +SET COEFFICIENT.2 TO AX # = AY +SET COEFFICIENT.3 TO B # 2*2pi/day*cos(phi) +SET COEFFICIENT.4 TO G # gravitational acceleration = 9,81 m/s² +SET COEFFICIENT.5 TO H # height h +SET OUTPUT.X TO x +SET OUTPUT.Y TO y +SET OUTPUT.Z TO z + +INITIALIZE H by -1 TO -h # same as COMPUTE -1 TIMES H TO -h +INITIALIZE G by +1 TO g + +INTEGRATE 1*-bz',1*ay' TO -x' # Input is x'' +INTEGRATE -x' TO x + +INTEGRATE y'' TO -y' +INTEGRATE -y' TO y + +INTEGRATE z'' TO -z' +INTEGRATE -z', IC:-h, LIMIT:(z >= 0) TO z + +-x' * AX -> -ax' +-ax' = y'' +-y' * AY -> -ay' +INVERT -ay' TO ay' +-z' * B -> -bz' +ADD 1*-ax', 1*g TO -g+ax' +-g+ax' = z'' + +...OPERATION DIVISION +...MODE REPEAT +...OP-TIME 7,3ms diff --git a/scripts/TP1 08.23a stick falling.DELACE b/scripts/TP1 08.23a stick falling.LACE similarity index 100% rename from scripts/TP1 08.23a stick falling.DELACE rename to scripts/TP1 08.23a stick falling.LACE diff --git a/scripts/TP1 09.26 rope over table edge.DELACE b/scripts/TP1 09.26 rope over table edge.LACE similarity index 100% rename from scripts/TP1 09.26 rope over table edge.DELACE rename to scripts/TP1 09.26 rope over table edge.LACE diff --git a/scripts/TP1 09.27 Bead on Cycloid.DELACE b/scripts/TP1 09.27 Bead on Cycloid.LACE similarity index 94% rename from scripts/TP1 09.27 Bead on Cycloid.DELACE rename to scripts/TP1 09.27 Bead on Cycloid.LACE index a936c75..3f28dd3 100644 --- a/scripts/TP1 09.27 Bead on Cycloid.DELACE +++ b/scripts/TP1 09.27 Bead on Cycloid.LACE @@ -24,11 +24,11 @@ mu * 4ax -> 4a*mu output(x): 4a*mu # calculating y -multiply (mu, mu) -> mu^2 +multiply mu, mu -> mu^2 mu^2 * 4ay -> 4ay*mu^2 isum 4a*mu^2 -> -2a*mu^2 # just serves to devide by 2 because we need 2a instead of 4a /2 -invert (-2a*mu^2) -> 2a*mu^2 +invert -2a*mu^2 -> 2a*mu^2 output(y): 2a*mu^2 # display mu, so the sinus diff --git a/scripts/TP1 10.28 Masses hanging on springs.LACE b/scripts/TP1 10.28 Masses hanging on springs.LACE new file mode 100644 index 0000000..c1ed4f7 --- /dev/null +++ b/scripts/TP1 10.28 Masses hanging on springs.LACE @@ -0,0 +1,24 @@ +# TP1 10.28 Masses hanging on springs +# Two identical masses m are hanging on 2 springs with same spring constant D. The system is performing small oscillations around the equilibrium position. +# m*s1'' + D*s1 + D*(s1-s2) = 0 => s1'' = D/m * (s2 - 2*s1) = D/m*s2 - D/m*s1 - D/m*s1 +# m*s2'' + D*(s2-s1) = 0 => s2'' = D/m * (s1 - s2) = D/m*s1 - D/m*s2 + +coefficient(1): D/m_1 # D/m for s1 +coefficient(2): D/m_2 # D/m for s2, identical to D/m_1 +coefficient(3): -1 -> -s1_0 # initial position of s1 +coefficient(4): -1 -> -s2_0 # initial position of s2 + +iintegrate D/m*s2, -D/m*s1, -D/m*s1 -> -s1' # input is s1'' +iintegrate -s1' -> s1 + IC: -s1_0 +s1 * D/m_1 -> D/m*s1 +invert D/m*s1 -> -D/m*s1 + +iintegrate D/m*s1, -D/m*s2 -> -s2' # input is s2'' +iintegrate -s2' -> s2 + IC: -s2_0 +s2 * D/m_2 -> D/m*s2 +invert D/m*s2 -> -D/m*s2 + +output(x): s1 +output(y): s2 diff --git a/scripts/TP1 10.29 Two masses fixed to walls.LACE b/scripts/TP1 10.29 Two masses fixed to walls.LACE new file mode 100644 index 0000000..f275e36 --- /dev/null +++ b/scripts/TP1 10.29 Two masses fixed to walls.LACE @@ -0,0 +1,25 @@ +# TP1 10.29 Two Masses fixed to walls +# Two equal masses m are connected to each other by a spring (spring constant D) and on either side to a fixed wall. + +# m*s1'' + 2D*s1 - D*s2 = 0 => s1'' = -D/m*s1 -D/m*s1 + D/m*s2 +# m*s2'' + 2D*s1 - D*s1 = 0 => s2'' = -D/m*s2 -D/m*s2 + D/m*s1 + +coefficient(1): D/m_1 # D/m for s1 +coefficient(2): D/m_2 # D/m for s2, identical to D/m_1 +coefficient(3): -1 -> -s1_0 # initial position of s1 +coefficient(4): -1 -> -s2_0 # initial position of s2 + +iintegrate -D/m*s1, -D/m*s1, D/m*s2 -> -s1' # input is s1'' +iintegrate -s1' -> s1 + IC: -s1_0 +s1 * D/m_1 -> D/m*s1 +invert D/m*s1 -> -D/m*s1 + +iintegrate -D/m*s2, -D/m*s2, D/m*s1 -> -s2' # input is s2'' +iintegrate -s2' -> s2 + IC: -s2_0 +s2 * D/m_2 -> D/m*s2 +invert D/m*s2 -> -D/m*s2 + +output(x): s1 +output(y): s2 diff --git a/scripts/TP1 10.30 Linear Molecule.LACE b/scripts/TP1 10.30 Linear Molecule.LACE new file mode 100644 index 0000000..fd9806e --- /dev/null +++ b/scripts/TP1 10.30 Linear Molecule.LACE @@ -0,0 +1,41 @@ +# TP1 10.30 Linear Molecule +# In a linear molecule of symmetric construction of type A-B-A the atoms are harmonically coupled and are performing small oscillations around the equilibrium positions. + +# s1'' = -omega0^2*s1 + omega0^2*s2 +# s2'' = -my (-omega0^2*s1 + omega0^2*s2 + omega0^2*s2 - omega0^2*s3) +# s3'' = omega0^2*s2 - omega0^2*s3 + +# NB: all integrators have to run with 100 nF capacitance, i.e. SLOW mode + +coefficient(1): omega0^2_1 # omega0^2 for s1 +coefficient(2): omega0^2_2 # omega0^2 for s2 # same as omega0^2_1 +coefficient(3): omega0^2_3 # omega0^2 for s3 # same as omega0^2_1 +coefficient(4): my +coefficient(5): -1 -> -s1_0 # initial position of s1 +coefficient(6): -1 -> -s3_0 # initial position of s3 +# initial positon of s2, the central mass, is set to 0 + +iintegrate -omega0^2_1*s1, omega0^2_2*s2 -> -s1' # input is s1'' +iintegrate -s1' -> s1 + IC: -s1_0 +invert s1 -> -s1 +-s1 * omega0^2_1 -> -omega0^2_1*s1 + +iintegrate -my*bracket -> -s2' # input is s2'' +# the following integrator has to be built up manually as THAT only has 5 integrators and we need 6 +# iintegrate -s2' -> s2 +openamp -s2' -> s2 + loopback: capacitor(100nF) +s2 * omega0^2_2 -> omega0^2_2*s2 +isum -omega0^2_1*s1, omega0^2_2*s2, omega0^2_2*s2, -omega0^2_3*s3 -> -bracket +-bracket * my -> -my*bracket + +iintegrate omega0^2_2*s2, -omega0^2_3*s3 -> -s3' # input is s3'' +iintegrate -s3' -> s3 + IC: -s3_0 +invert s3 -> -s3 +-s3 * omega0^2_3 -> -omega0^2_3*s3 + + output(x): s1 + output(y): s2 + output(z): s3 diff --git a/scripts/alpaca23 partial differential equation.LACE b/scripts/alpaca23 partial differential equation.LACE new file mode 100644 index 0000000..1e8499a --- /dev/null +++ b/scripts/alpaca23 partial differential equation.LACE @@ -0,0 +1,27 @@ +# Solving partial differential equations by descretizing space +# This is an adoption of the application note “alpaca_23” from Anabrid [https://analogparadigm.com/downloads/alpaca_23.pdf] +# THAT only has 5 integrators, thus we have to reduce the number of elements +# +# u_0 = delta_t +# u''_1 = u_0 - 2*u_1 + u_2 +# u''_2 = u_1 - 2*u_2 + u_3 +# u_3 = 0 + +coefficient(1): f1 # fix to 0.2 to get 2 for the integration +coefficient(2): f2 # fix to 0.2 to get 2 for the integration +coefficient(5): 1 -> delta_t +u_0 = delta_t +coefficient(6): 0 -> u_3 + +iintegrate u_0, 10*:-f1u_1, u_2 -> -u'_1 # input is u''_1 +iintegrate -u'_1 -> u_1 +invert u_1 -> -u_1 +-u_1 * f1 -> -f1u_1 + +iintegrate u_1, 10*:-f2u_2, u_3 -> -u'_2 # input is u''_2 +iintegrate -u'_2 -> u_2 +invert u_2 -> -u_2 +-u_2 * f2 -> -f2u_2 + +output(x): u_1 +output(y): u_2