Advertisement
Guest User

Untitled

a guest
Mar 8th, 2021
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.97 KB | None | 0 0
  1. import os
  2. #import math
  3. #import std/strutils
  4. #import dual
  5. #import symplectic
  6.  
  7. type Parameters = tuple[r_min: float, r_max: float, theta_max: float, E: float, L: float, Q: float]
  8.  
  9. type Vector3 = tuple[a: float, b: float, c: float]
  10.  
  11. type Matrix3x3 = tuple[a: float, b: float, c: float, d: float, e: float, f: float, g: float, h: float, i: float]
  12.  
  13. func invert(m: Matrix3x3): Matrix3x3 =
  14. c: Matrix3x3 = ((m.e * m.i - m.f * m.h), -(m.d * m.i - m.f * m.g), (m.d * m.h - m.e * m.g),
  15. -(m.b * m.i - m.c * m.h), (m.a * m.i - m.c * m.g), -(m.a * m.h - m.b * m.g),
  16. (m.b * m.f - m.c * m.e), -(m.a * m.f - m.c * m.d), (m.a * m.e - m.b * m.d))
  17. d: float = m.a * c.a + m.b * c.b + m.c * c.c
  18. assert(d != 0.0);
  19. return (c.a / d, c.d / d, c.g / d,
  20. c.b / d, c.e / d, c.h / d,
  21. c.c / d, c.f / d, c.i / d)
  22.  
  23. func mv_mult(m: Matrix3x3, v: Vector3): Vector3 =
  24. return (m.a * v.a + m.b * v.b + m.c * v.c,
  25. m.d * v.a + m.e * v.b + m.f * v.c,
  26. m.g * v.a + m.h * v.b + m.i * v.c)
  27.  
  28. func R(p: Parameters, float r, E: Dual, L: Dual, Q: Dual): Dual =
  29. r2: float = r * r
  30. delta: Dual = r2 - 2.0 * p.m * r + p.a2
  31. P: Dual = E * (r2 + p.a2) - L * p.a)
  32. K: dual = (L - E * p.a) * (L - E * p.a) + Q
  33. P * P - delta * (p.mu2 * r2 + K)
  34.  
  35. func dR_dr(p: Parameters, float r, E: Dual, L: Dual, Q: Dual): Dual =
  36. r2: float = r * r
  37. delta: Dual = r2 - 2.0 * p.m * r + p.a2
  38. P: Dual = E * (r2 + p.a2) - L * p.a)
  39. K: dual = (L - E * p.a) * (L - E * p.a) + Q
  40. 4.0 * E * r * P - (2.0 * r - 2.0 * p.m) * (p.mu2 * r2 + K) - 2.0 * p.mu2 * r * delta
  41.  
  42. proc plot(p: Parameters) =
  43. echo p.q_r * sin(p.q_phi), " ", p.q_r * cos(p.q_phi), " ", 0.0, " ", t, " ", 10.0 * log10(if e >= 1e-36 : e else: 1e-36)
  44.  
  45. proc generate(p: Parameters):
  46. echo "Generate"
  47.  
  48. let
  49. args: seq[string] = commandLineParams()
  50. var
  51. p: Parameters = (parseFloat(args[1]), parseFloat(args[2]), parseFloat(args[3]), 1.0, 0.0, 0.0)
  52. generate(p)
  53.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement