grggrav.sl 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912
  1. %==========================================================================%
  2. % GRGgrav.sl Gravitation %
  3. %==========================================================================%
  4. % GRG 3.2 Standard Lisp Source Code (C) 1988-96 Vadim V. Zhytnikov %
  5. %==========================================================================%
  6. % This file is distributed without any warranty. You may modify it but you %
  7. % are not allowed to remove author's name and/or distribute modified file. %
  8. %==========================================================================%
  9. % Various constants of Physics Equations ...
  10. (de aconst!> nil
  11. (setq !#!A!C!O!N!S!T (copy '( !A!C0 ))))
  12. (de mconst!> nil
  13. (setq !#!M!C!O!N!S!T (copy '(nil !M!C1 !M!C2 !M!C3 ))))
  14. (de lconst!> nil
  15. (setq !#!L!C!O!N!S!T
  16. (copy '( !L!C0 !L!C1 !L!C2 !L!C3 !L!C4 !L!C5 !L!C6 ))))
  17. %---- Irreducible Torsion 2-forms in general case 10.96 -------------------
  18. (de qtfcomp!> nil
  19. (prog (w)
  20. (makebox!> '!#!T!H!Q!T)
  21. (setq w (list 'quotient -1 ![dim1!]))
  22. (fordim!> a do
  23. (putel1!> (evalform!> (fndfpr!> w (dfprod2!> (getframe!> a)
  24. (car !#!Q!Q))))
  25. !#!T!H!Q!T a)) ))
  26. (de qafcomp!> nil
  27. (prog (w)
  28. (makebox!> '!#!T!H!Q!A)
  29. (setq w (list 'quotient 1 3))
  30. (fordim!> a do
  31. (putel1!> (evalform!> (fndfpr!> w (vform!> (getup!> !#!D a)
  32. (car !#!Q!Q!A))))
  33. !#!T!H!Q!A a)) ))
  34. (de qcfcomp!> nil
  35. (prog (w)
  36. (makebox!> '!#!T!H!Q!C)
  37. (fordim!> a do
  38. (putel1!> (evalform!> (dfsum!> (list
  39. (getel1!> !#!T!H!E!T!A a)
  40. (chsign!> t (getel1!> !#!T!H!Q!A a))
  41. (chsign!> t (getel1!> !#!T!H!Q!T a)) )))
  42. !#!T!H!Q!C a)) ))
  43. %----- Irreducible Nonmetricity 1-forms. 10.96 ----------------------------
  44. (de compnnw!> nil
  45. (prog (w)
  46. (fordim!> a do
  47. (setq w (cons (getm!> '!#!N nil (list2 a a) '(1 nil)) w)))
  48. (setq !#!N!N!W (ncons (evalform!> (dfsum!> w))))))
  49. (de compnnt!> nil
  50. (prog (w)
  51. (fordim!> a do (fordim!> m do
  52. (setq w (cons (fndfpr!> (vform1!> (getup!> !#!D m)
  53. (getel2s!> !#!N a m))
  54. (getframe!> a)) w))))
  55. (setq w (cons (fndfpr!> (list 'quotient -1 ![dim!])
  56. (car !#!N!N!W)) w))
  57. (setq !#!N!N!T (ncons (evalform!> (dfsum!> w))))))
  58. (de compnw!> nil
  59. (prog (w)
  60. (setq !#!N!W (mkt!> 2))
  61. (setq w (list 'quotient 1 ![dim!]))
  62. (fordim!> a do (fordim!> b do (cond ((leq a b)
  63. (putel!> (evalform!> (fndfpr!> (list 'times w (getmetr!> a b))
  64. (car !#!N!N!W)))
  65. !#!N!W (list2 a b)))))) ))
  66. (de compnt!> nil
  67. (prog (w ww)
  68. (setq !#!N!T (mkt!> 2))
  69. (setq w (list 'quotient ![dim!] (times (sub1 ![dim!])
  70. (add1 (add1 ![dim!])))))
  71. (setq ww (list 'quotient -2 ![dim!]))
  72. (fordim!> a do (fordim!> b do (cond ((leq a b)
  73. (putel!> (evalform!> (fndfpr!> w (dfsum!> (list
  74. (fndfpr!> (vform1!> (getiframe!> a) (car !#!N!N!T))
  75. (getlo!> !#!T b))
  76. (fndfpr!> (vform1!> (getiframe!> b) (car !#!N!N!T))
  77. (getlo!> !#!T a))
  78. (fndfpr!> (list 'times ww (getmetr!> a b))
  79. (car !#!N!N!T))))))
  80. !#!N!T (list2 a b)))))) ))
  81. (de compna!> nil
  82. (prog (w wa)
  83. (setq !#!N!A (mkt!> 2))
  84. (setq wa (mkt!> 1))
  85. (fordim!> a do (progn
  86. (setq w nil)
  87. (fordim!> m do
  88. (setq w (cons (dfprod2!> (getframe!> m)
  89. (dfsum!> (list
  90. (getel2s!> !#!N a m)
  91. (chsign!> t (getel2s!> !#!N!W a m))
  92. (chsign!> t (getel2s!> !#!N!T a m)))))
  93. w)))
  94. (putel1!> (dfsum!> w) wa a)))
  95. (fordim!> a do (fordim!> b do (cond ((leq a b)
  96. (putel!> (evalform!> (fndfpr!> (list 'quotient 1 3)
  97. (dfsum!> (list (vform!> (getiframe!> a) (getel1!> wa b))
  98. (vform!> (getiframe!> b) (getel1!> wa a))))))
  99. !#!N!A (list2 a b)))))) ))
  100. (de compnc!> nil
  101. (prog (w)
  102. (setq !#!N!C (mkt!> 2))
  103. (setq w (list 'quotient 1 ![dim!]))
  104. (fordim!> a do (fordim!> b do (cond ((leq a b)
  105. (putel!> (evalform!> (dfsum!> (list
  106. (getel2s!> !#!N a b)
  107. (cond ((geq ![dim!] 3)
  108. (chsign!> t (getel2s!> !#!N!A a b)) )
  109. (t nil))
  110. (chsign!> t (getel2s!> !#!N!W a b))
  111. (chsign!> t (getel2s!> !#!N!T a b)) )))
  112. !#!N!C (list2 a b)))))) ))
  113. %----- Irreducible Curvature 2-forms. 10.96 -------------------------------
  114. % OMEGA[.a.b]
  115. (de getoma!> (wa wb)
  116. (cond (!*nonmetr (fndfpr!> '(quotient 1 2) (dfsum!> (list2
  117. (getm!> '!#!O!M!E!G!A nil (list2 wa wb) '(2 nil))
  118. (chsign!> t
  119. (getm!> '!#!O!M!E!G!A nil (list2 wb wa) '(2 nil))) ))))
  120. (t (getm!> '!#!O!M!E!G!A nil (list2 wa wb) '(2 nil)))))
  121. % OMEGA(.a.b)
  122. (de getoms!> (wa wb)
  123. (cond (!*nonmetr (fndfpr!> '(quotient 1 2) (dfsum!> (list2
  124. (getm!> '!#!O!M!E!G!A nil (list2 wa wb) '(2 nil))
  125. (getm!> '!#!O!M!E!G!A nil (list2 wb wa) '(2 nil)) ))))
  126. (t nil)))
  127. (de getomao!> (wa wb)
  128. (dfsum!> (list (getoma!> wa wb)
  129. (chsign!> t (getasy2!> !#!O!M!C wa wb t))
  130. (chsign!> t (getasy2!> !#!O!M!R wa wb t))
  131. (chsign!> t (getasy2!> !#!O!M!A wa wb t))
  132. (chsign!> t (getasy2!> !#!O!M!D wa wb t)) )))
  133. (de getomso!> (wa wb)
  134. (dfsum!> (list (getoms!> wa wb)
  135. (chsign!> t (getel2s!> !#!O!S!H wa wb))
  136. (chsign!> t (getel2s!> !#!O!S!C wa wb))
  137. (chsign!> t (getel2s!> !#!O!S!A wa wb)) )))
  138. % Ricci Tensor ...
  139. (de riccio!> nil
  140. (prog (w woo)
  141. (setq !#!R!I!C (mkt!> 2))
  142. (setq woo (mkt!> 1))
  143. (fordim!> b do (progn
  144. (setq w nil)
  145. (fordim!> m do
  146. (setq w (cons (vform!> (getiframe!> m)
  147. (getel2!> !#!O!M!E!G!A m b)) w)))
  148. (putel1!> (dfsum!> w) woo b)))
  149. (fordim!> a do (fordim!> b do
  150. (cond ((or !*torsion !*nonmetr (leq a b))
  151. (putel!> (evalalg!> (vform1!> (getiframe!> b) (getel1!> woo a)))
  152. !#!R!I!C (list2 a b))))))))
  153. % A-Ricci Tensor ...
  154. (de riccioa!> nil
  155. (prog (w woo)
  156. (setq !#!R!I!C!A (mkt!> 2))
  157. (setq woo (mkt!> 1))
  158. (fordim!> b do (progn
  159. (setq w nil)
  160. (fordim!> m do
  161. (setq w (cons (vform!> (getup!> !#!D m) (getoma!> m b)) w)))
  162. (putel1!> (dfsum!> w) woo b)))
  163. (fordim!> a do (fordim!> b do
  164. (putel!> (evalalg!> (vform1!> (getiframe!> b) (getel1!> woo a)))
  165. !#!R!I!C!A (list2 a b))))))
  166. % S-Ricci Tensor ...
  167. (de riccios!> nil
  168. (prog (w woo)
  169. (setq !#!R!I!C!S (mkt!> 2))
  170. (setq woo (mkt!> 1))
  171. (fordim!> b do (progn
  172. (setq w nil)
  173. (fordim!> m do
  174. (setq w (cons (vform!> (getup!> !#!D m) (getoms!> m b)) w)))
  175. (putel1!> (dfsum!> w) woo b)))
  176. (fordim!> a do (fordim!> b do
  177. (putel!> (evalalg!> (vform1!> (getiframe!> b) (getel1!> woo a)))
  178. !#!R!I!C!S (list2 a b))))))
  179. % RR from ARIC
  180. (de rscalara!> nil
  181. (prog (w)
  182. (fordim!> wa do (fordim!> wb do
  183. (setq w (cons (multa!> (getimetr!> wa wb)
  184. (getel2!> !#!R!I!C!A wa wb))
  185. w))))
  186. (setq w (summa!> w))
  187. (setq !#!R!R (ncons w)) ))
  188. (de mkrrf!> nil
  189. (prog (wc)
  190. (setq !#!O!M!R (mkt!> 2))
  191. (setq wc (list 'quotient 1 (times ![dim!] (sub1 ![dim!]))))
  192. (fordim!> a do (fordim!> b do (cond ((lessp a b)
  193. (putel!> (evalform!> (fndfpr!> (list 'times wc (car !#!R!R))
  194. (getm!> '!#!S nil (list2 a b) '(2 2))))
  195. !#!O!M!R (list2 a b))))))))
  196. (de getra!> (wa wb)
  197. (cond (!*nonmetr (list 'times '(quotient 1 2)
  198. (list 'difference (getel2!> !#!R!I!C!A wa wb)
  199. (getel2!> !#!R!I!C!A wb wa))))
  200. (t (list 'times '(quotient 1 2)
  201. (list 'difference (getel2!> !#!R!I!C wa wb)
  202. (getel2!> !#!R!I!C wb wa)))) ))
  203. (de getrsa!> (wa wb)
  204. (list 'difference
  205. (list 'times '(quotient 1 2)
  206. (list 'difference (getel2!> !#!R!I!C!S wa wb)
  207. (getel2!> !#!R!I!C!S wb wa)))
  208. (list 'times (list 'quotient 1 ![dim!])
  209. (vform1!> (getiframe!> wb)
  210. (vform!> (getiframe!> wa)
  211. (car !#!O!M!E!G!A!H))))))
  212. %(de getrsa!> (wa wb)
  213. % (list 'times '(quotient 1 2)
  214. % (list 'difference (getel2!> !#!R!I!C!S wa wb)
  215. % (getel2!> !#!R!I!C!S wb wa))))
  216. (de getrsc!> (wa wb)
  217. (list 'times '(quotient 1 2)
  218. (list 'plus (getel2!> !#!R!I!C!S wa wb)
  219. (getel2!> !#!R!I!C!S wb wa))))
  220. (de getrc!> (wa wb)
  221. (cond (!*nonmetr (list 'times '(quotient 1 2)
  222. (list 'plus (getel2!> !#!R!I!C!A wa wb)
  223. (getel2!> !#!R!I!C!A wb wa)
  224. (list 'times (list 'quotient -2 ![dim!])
  225. (getmetr!> wa wb)
  226. (car !#!R!R)))))
  227. (!*torsion (list 'times '(quotient 1 2)
  228. (list 'plus (getel2!> !#!R!I!C wa wb)
  229. (getel2!> !#!R!I!C wb wa)
  230. (list 'times (list 'quotient -2 ![dim!])
  231. (getmetr!> wa wb)
  232. (car !#!R!R)))))
  233. (t (list 'plus (getel2s!> !#!R!I!C wa wb)
  234. (list 'times (list 'quotient -1 ![dim!])
  235. (getmetr!> wa wb)
  236. (car !#!R!R))))))
  237. (de mkrcf!> nil
  238. (prog (wc wx w)
  239. (setq !#!O!M!C (mkt!> 2))
  240. (setq wx (mkt!> 1))
  241. (fordim!> a do (progn
  242. (setq w nil)
  243. (fordim!> m do
  244. (setq w (cons (fndfpr!> (getrc!> a m) (getframe!> m)) w)))
  245. (putel1!> (dfsum!> w) wx a)))
  246. (setq wc (list 'quotient 1 (sub1(sub1 ![dim!]))))
  247. (fordim!> a do (fordim!> b do (cond ((lessp a b)
  248. (putel!> (evalform!> (fndfpr!> wc (dfsum!> (list
  249. (dfprod2!> (getel1!> wx a) (getlo!> !#!T b))
  250. (chsign!> t
  251. (dfprod2!> (getel1!> wx b) (getlo!> !#!T a)))))))
  252. !#!O!M!C (list2 a b))))))))
  253. (de mkraf!> nil
  254. (prog (wc wx w)
  255. (setq !#!O!M!A (mkt!> 2))
  256. (setq wx (mkt!> 1))
  257. (fordim!> a do (progn
  258. (setq w nil)
  259. (fordim!> m do
  260. (setq w (cons (fndfpr!> (getra!> a m) (getframe!> m)) w)))
  261. (putel1!> (dfsum!> w) wx a)))
  262. (setq wc (list 'quotient 1 (sub1(sub1 ![dim!]))))
  263. (fordim!> a do (fordim!> b do (cond ((lessp a b)
  264. (putel!> (evalform!> (fndfpr!> wc (dfsum!> (list
  265. (dfprod2!> (getel1!> wx a) (getlo!> !#!T b))
  266. (chsign!> t
  267. (dfprod2!> (getel1!> wx b) (getlo!> !#!T a)))))))
  268. !#!O!M!A (list2 a b))))))))
  269. (de mkrdf!> nil
  270. (prog (wc w)
  271. (setq !#!O!M!D (mkt!> 2))
  272. (fordim!> m do (fordim!> n do (cond ((lessp m n)
  273. (setq w (cons (dfprod2!> (getoma!> m n) (getel2!> !#!S m n)) w))))))
  274. (setq w (evalform!>(dfsum!> w)))
  275. (setq wc (list 'quotient 1 6))
  276. (fordim!> a do (fordim!> b do (cond ((lessp a b)
  277. (putel!> (evalform!> (fndfpr!> wc
  278. (vform!> (getiframe!> b) (vform!> (getiframe!> a) w))))
  279. !#!O!M!D (list2 a b))))))))
  280. (de mkrbf!> nil
  281. (prog (wc wx w)
  282. (setq !#!O!M!B (mkt!> 2))
  283. (setq wx (mkt!> 1))
  284. (fordim!> a do (progn
  285. (setq w nil)
  286. (fordim!> m do
  287. (setq w (cons (dfprod2!> (getomao!> a m) (getframe!> m)) w)))
  288. (putel1!> (dfsum!> w) wx a)))
  289. (setq wc (list 'quotient 1 2))
  290. (fordim!> a do (fordim!> b do (cond ((lessp a b)
  291. (putel!> (evalform!> (fndfpr!> wc (dfsum!> (list
  292. (vform!> (getiframe!> b) (getel1!> wx a))
  293. (chsign!> t (vform!> (getiframe!> a) (getel1!> wx b)))))))
  294. !#!O!M!B (list2 a b))))))))
  295. (de mkrwf!> nil
  296. (prog nil
  297. (setq !#!O!M!W (mkt!> 2))
  298. (fordim!> a do (fordim!> b do (cond ((lessp a b)
  299. (putel!> (evalform!> (dfsum!> (list
  300. (getoma!> a b)
  301. (chsign!> t (getel2!> !#!O!M!C a b))
  302. (chsign!> t (getel2!> !#!O!M!R a b))
  303. (cond ((or !*torsion !*nonmetr)
  304. (chsign!> t (getel2!> !#!O!M!A a b))) (t nil))
  305. (cond ((or !*torsion !*nonmetr)
  306. (chsign!> t (getel2!> !#!O!M!B a b))) (t nil))
  307. (cond ((or !*torsion !*nonmetr)
  308. (chsign!> t (getel2!> !#!O!M!D a b))) (t nil))
  309. )))
  310. !#!O!M!W (list2 a b))))))))
  311. (de mkomegah!> nil
  312. (prog (w)
  313. (fordim!> m do
  314. (setq w (cons (getel2!> !#!O!M!E!G!A m m) w)))
  315. (setq !#!O!M!E!G!A!H (ncons (evalform!> (dfsum!> w))))))
  316. (de mkrshf!> nil
  317. (prog (wc wcc w)
  318. (setq !#!O!S!H (mkt!> 2))
  319. (setq wc (list 'quotient 1 ![dim!]))
  320. (fordim!> a do (fordim!> b do (cond ((leq a b)
  321. (putel!> (evalform!> (fndfpr!> (list 'times wc (getmetr!> a b))
  322. (car !#!O!M!E!G!A!H)))
  323. !#!O!S!H (list2 a b))))))))
  324. %(de mkrshf!> nil
  325. % (prog (wc wcc w)
  326. % (setq !#!O!S!H (mkt!> 2))
  327. % (setq wc (list 'quotient -1 (difference (expt ![dim!] 2) 4)))
  328. % (setq wcc (minus ![dim!]))
  329. % (fordim!> a do (fordim!> b do (cond ((leq a b)
  330. % (putel!> (evalform!> (fndfpr!> wc (dfsum!> (list
  331. % (dfprod2!> (getlo!> !#!T a)
  332. % (vform!> (getiframe!> b) (car !#!O!M!E!G!A!H)))
  333. % (dfprod2!> (getlo!> !#!T b)
  334. % (vform!> (getiframe!> a) (car !#!O!M!E!G!A!H)))
  335. % (fndfpr!> (list 'times wcc (getmetr!> a b))
  336. % (car !#!O!M!E!G!A!H) )))))
  337. % !#!O!S!H (list2 a b))))))))
  338. (de mkrscf!> nil
  339. (prog (wc wx w)
  340. (setq !#!O!S!C (mkt!> 2))
  341. (setq wx (mkt!> 1))
  342. (fordim!> a do (progn
  343. (setq w nil)
  344. (fordim!> m do
  345. (setq w (cons (fndfpr!> (getrsc!> a m) (getframe!> m)) w)))
  346. (putel1!> (dfsum!> w) wx a)))
  347. (setq wc (list 'quotient 1 ![dim!]))
  348. (fordim!> a do (fordim!> b do (cond ((leq a b)
  349. (putel!> (evalform!> (fndfpr!> wc (dfsum!> (list
  350. (dfprod2!> (getlo!> !#!T a) (getel1!> wx b))
  351. (dfprod2!> (getlo!> !#!T b) (getel1!> wx a))))))
  352. !#!O!S!C (list2 a b))))))))
  353. (de mkrshf2!> nil
  354. (prog (wc wx w)
  355. (setq !#!O!S!H (mkt!> 2))
  356. (fordim!> a do (fordim!> b do (cond ((leq a b)
  357. (putel!> (evalform!> (dfsum!> (list
  358. (getoms!> a b)
  359. (chsign!> t (getel2!> !#!O!S!C a b)))))
  360. !#!O!S!H (list2 a b))))))))
  361. (de mkrsaf!> nil
  362. (prog (wc wx wxx wcc w)
  363. (setq !#!O!S!A (mkt!> 2))
  364. (setq wx (mkt!> 1))
  365. (fordim!> a do (progn
  366. (setq w nil)
  367. (fordim!> m do
  368. (setq w (cons (fndfpr!> (getrsa!> a m) (getframe!> m)) w)))
  369. (putel1!> (dfsum!> w) wx a)))
  370. (setq w nil)
  371. (fordim!> m do
  372. (setq w (cons (dfprod2!> (getframe!> m) (getel1!> wx m)) w)))
  373. (setq wxx (dfsum!> w))
  374. (setq w nil)
  375. (setq wc (list 'quotient 1 ![dim!]))
  376. (setq wc (list 'quotient ![dim!] (difference (expt ![dim!] 2) 4)))
  377. (setq wcc (list 'quotient -2 ![dim!]))
  378. (fordim!> a do (fordim!> b do (cond ((leq a b)
  379. (putel!> (evalform!> (fndfpr!> wc (dfsum!> (list
  380. (dfprod2!> (getlo!> !#!T a) (getel1!> wx b))
  381. (dfprod2!> (getlo!> !#!T b) (getel1!> wx a))
  382. (fndfpr!> (list 'times wcc (getmetr!> a b)) wxx)
  383. ))))
  384. !#!O!S!A (list2 a b))))))))
  385. (de mkrsvf!> nil
  386. (prog (wc wx w)
  387. (setq !#!O!S!V (mkt!> 2))
  388. (setq wx (mkt!> 1))
  389. (fordim!> a do (progn
  390. (setq w nil)
  391. (fordim!> m do
  392. (setq w (cons (dfprod2!> (getomso!> a m) (getframe!> m)) w)))
  393. (putel1!> (dfsum!> w) wx a)))
  394. (setq wc (list 'quotient 1 4))
  395. (fordim!> a do (fordim!> b do (cond ((leq a b)
  396. (putel!> (evalform!> (fndfpr!> wc (dfsum!> (list
  397. (vform!> (getiframe!> b) (getel1!> wx a))
  398. (vform!> (getiframe!> a) (getel1!> wx b))))))
  399. !#!O!S!V (list2 a b))))))))
  400. (de mkrsuf!> nil
  401. (prog nil
  402. (setq !#!O!S!U (mkt!> 2))
  403. (fordim!> a do (fordim!> b do (cond ((leq a b)
  404. (putel!> (evalform!> (dfsum!> (list
  405. (getoms!> a b)
  406. (chsign!> t (getel2!> !#!O!S!H a b))
  407. (chsign!> t (getel2!> !#!O!S!A a b))
  408. (chsign!> t (getel2!> !#!O!S!C a b))
  409. (cond
  410. ((geq ![dim!] 4) (chsign!> t (getel2!> !#!O!S!V a b)))
  411. (t nil))
  412. )))
  413. !#!O!S!U (list2 a b))))))))
  414. %------- Einstein Equations. 10.96 ----------------------------------------
  415. (de einstein!> nil
  416. (prog (wl wr)
  417. (setq !#!E!E!q (mkt!> 2))
  418. (fordim!> wa do (fordim!> wb do (cond ((leq wa wb)
  419. (setq wl (list (getel2!> !#!R!I!C wa wb)
  420. (list 'times '(quotient -1 2) (getmetr!> wa wb)
  421. (car !#!R!R))
  422. (cond (!*cconst
  423. (list 'times (getmetr!> wa wb) '!C!C!O!N!S!T)))))
  424. (setq wr (list 'times 8 'pi '!G!C!O!N!S!T
  425. (getel2!> !#!T!E!N!M!O!M wa wb)))
  426. (putel!> (equation!> (summa!> wl) (evalalg!> wr))
  427. !#!E!E!q (list2 wa wb))))))))
  428. (de einsteint!> nil
  429. (setq !#!T!E!E!q (ncons (equation!>
  430. (evalalg!> (cond (!*cconst (list 'plus (car !#!R!R)
  431. (list 'times -4 '!C!C!O!N!S!T)))
  432. (t (car !#!R!R))))
  433. (evalalg!> (list 'times -8 'pi '!G!C!O!N!S!T
  434. (car !#!T!E!N!M!O!M!T)))))))
  435. (de einsteinc!> nil
  436. (prog (wl wr)
  437. (makebox!> '!#!C!E!E!q)
  438. (for!> wa (0 1 2) do (for!> wb (0 1 2) do (cond ((leq wa wb)
  439. (setq wl (getel2!> !#!R!C wa wb))
  440. (setq wr (list 'times 8 'pi '!G!C!O!N!S!T
  441. (getel2!> !#!T!E!N!M!O!M!S wa wb)))
  442. (putel!> (equation!> (evalalg!> wl) (evalalg!> wr))
  443. !#!C!E!E!q (list2 wa wb))))))))
  444. %------ Gravitational Equations -------------------------------------------
  445. % Curvature Momentum ...
  446. (de pomegau!> nil
  447. (prog (wc objlst finlst w w0 w1 w2 obj)
  448. % we are trying to calculate required parts ...
  449. (setq wc 0)
  450. (setq objlst (cond
  451. (!*torsion '( !#!O!M!W!U !#!O!M!C!U !#!O!M!R!U
  452. !#!O!M!A!U !#!O!M!B!U !#!O!M!D!U ))
  453. (t '( !#!O!M!W!U !#!O!M!C!U !#!O!M!R!U ))))
  454. (foreach!> obj in objlst do (progn
  455. (setq wc (add1 wc))
  456. (cond
  457. ((evalalg!> (getel1!> !#!L!C!O!N!S!T wc))
  458. (setq finlst (cons (cons wc obj) finlst))
  459. (setq ![chain!] nil)
  460. (setq w (request!> obj))
  461. (cond ((eq w !!er!!) (setq finlst (cons !!er!! finlst))
  462. %(return !!er!!)
  463. )
  464. ((null w) (setq ![er!] 6046)
  465. (setq finlst (cons !!er!! finlst))
  466. (trsf!> obj)
  467. %(return !!er!!)
  468. ) )))))
  469. % (foreach!> obj in objlst do (progn
  470. % (setq wc (add1 wc))
  471. % (cond
  472. % ((evalalg!> (getel1!> !#!L!C!O!N!S!T wc))
  473. % (setq finlst (cons (cons wc obj) finlst))
  474. % (setq ![chain!] nil)
  475. % (setq w (request!> obj))
  476. % (cond ((eq w !!er!!) (setq finlst (cons !!er!! finlst))
  477. % (return !!er!!) )
  478. % ((null w) (setq ![er!] 6046)
  479. % (setq finlst (cons !!er!! finlst))
  480. % (trsf!> obj)
  481. % (return !!er!!) ) )))))
  482. (cond ((memq !!er!! finlst) (return !!er!!)))
  483. % now we go on ...
  484. (makebox!> '!#!P!O!M!E!G!A!U)
  485. (foreach!> obj in finlst do (progn
  486. (setq wc (cond ((memq (car obj) '(1 3 4 6)) 'i)
  487. (t '(minus i))))
  488. (setq w0 (cons (fndfpr!>
  489. (list 'times wc (getel1!> !#!L!C!O!N!S!T (car obj)))
  490. (getel1!> (eval(cdr obj)) 0)) w0))
  491. (setq w1 (cons (fndfpr!>
  492. (list 'times wc (getel1!> !#!L!C!O!N!S!T (car obj)))
  493. (getel1!> (eval(cdr obj)) 1)) w1))
  494. (setq w2 (cons (fndfpr!>
  495. (list 'times wc (getel1!> !#!L!C!O!N!S!T (car obj)))
  496. (getel1!> (eval(cdr obj)) 2)) w2))
  497. ))
  498. (setq wc (list 'times 'i
  499. (list 'plus (getel1!> !#!L!C!O!N!S!T 0)
  500. (cond (!*nonmin (list 'times
  501. (mp!> 8) 'pi
  502. '!G!C!O!N!S!T
  503. (getel1!> !#!A!C!O!N!S!T 0)
  504. (car !#!F!I) (car !#!F!I)
  505. ))))))
  506. (setq w0 (cons (fndfpr!> wc (getel1!> !#!S!U 0)) w0))
  507. (setq w1 (cons (fndfpr!> wc (getel1!> !#!S!U 1)) w1))
  508. (setq w2 (cons (fndfpr!> wc (getel1!> !#!S!U 2)) w2))
  509. (putel1!> (evalform!>(dfsum!> w0)) !#!P!O!M!E!G!A!U 0) (setq w0 nil)
  510. (putel1!> (evalform!>(dfsum!> w1)) !#!P!O!M!E!G!A!U 1) (setq w1 nil)
  511. (putel1!> (evalform!>(dfsum!> w2)) !#!P!O!M!E!G!A!U 2) (setq w2 nil)
  512. (return t)))
  513. % Torsion Momentum ...
  514. (de ptheta!> nil
  515. (prog (wc objlst finlst w w0 w1 w2 w3)
  516. % we are trying to calculate required parts ...
  517. (setq wc 0)
  518. (setq objlst '( !#!T!H!Q!C!U !#!T!H!Q!T!U !#!T!H!Q!A!U ))
  519. (foreach!> obj in objlst do (progn
  520. (setq wc (add1 wc))
  521. (cond
  522. ((evalalg!> (getel1!> !#!M!C!O!N!S!T wc))
  523. (setq finlst (cons (cons wc obj) finlst))
  524. (setq ![chain!] nil)
  525. (setq w (request!> obj))
  526. (cond ((eq w !!er!!) (setq finlst (cons !!er!! finlst))
  527. %(return !!er!!)
  528. )
  529. ((null w) (setq ![er!] 6046)
  530. (setq finlst (cons !!er!! finlst))
  531. (trsf!> obj)
  532. %(return !!er!!)
  533. ) )))))
  534. % (foreach!> obj in objlst do (progn
  535. % (setq wc (add1 wc))
  536. % (cond
  537. % ((evalalg!> (getel1!> !#!M!C!O!N!S!T wc))
  538. % (setq finlst (cons (cons wc obj) finlst))
  539. % (setq ![chain!] nil)
  540. % (setq w (request!> obj))
  541. % (cond ((eq w !!er!!) (setq finlst (cons !!er!! finlst))
  542. % (return !!er!!))
  543. % ((null w) (setq ![er!] 6046)
  544. % (setq finlst (cons !!er!! finlst))
  545. % (trsf!> obj)
  546. % (return !!er!!)) )))))
  547. (cond ((memq !!er!! finlst) (return !!er!!)))
  548. % now we go on ...
  549. (makebox!> '!#!P!T!H!E!T!A)
  550. (foreach!> obj in finlst do (progn
  551. (setq wc 'i)
  552. (setq w0 (cons (fndfpr!>
  553. (list 'times wc (getel1!> !#!M!C!O!N!S!T (car obj)))
  554. (getel1!> (eval(cdr obj)) 0)) w0))
  555. (setq w1 (cons (fndfpr!>
  556. (list 'times wc (getel1!> !#!M!C!O!N!S!T (car obj)))
  557. (getel1!> (eval(cdr obj)) 1)) w1))
  558. (setq w2 (cons (fndfpr!>
  559. (list 'times wc (getel1!> !#!M!C!O!N!S!T (car obj)))
  560. (getel1!> (eval(cdr obj)) 2)) w2))
  561. (setq w3 (cons (fndfpr!>
  562. (list 'times wc (getel1!> !#!M!C!O!N!S!T (car obj)))
  563. (getel1!> (eval(cdr obj)) 3)) w3))
  564. ))
  565. (setq w0 (ncons (evalform!> (dfsum!> w0))))
  566. (setq w1 (ncons (evalform!> (dfsum!> w1))))
  567. (setq w2 (ncons (evalform!> (dfsum!> w2))))
  568. (setq w3 (ncons (evalform!> (dfsum!> w3))))
  569. (setq w0 (append w0 (mapcar w0 'coform!>)))
  570. (setq w1 (append w1 (mapcar w1 'coform!>)))
  571. (setq w2 (append w2 (mapcar w3 'coform!>)))
  572. (setq w3 (mapcar w2 'coform!>))
  573. (putel1!> (evalform!>(dfsum!> w0)) !#!P!T!H!E!T!A 0) (setq w0 nil)
  574. (putel1!> (evalform!>(dfsum!> w1)) !#!P!T!H!E!T!A 1) (setq w1 nil)
  575. (putel1!> (evalform!>(dfsum!> w2)) !#!P!T!H!E!T!A 2) (setq w2 nil)
  576. (putel1!> (evalform!>(dfsum!> w3)) !#!P!T!H!E!T!A 3) (setq w3 nil)
  577. (return t)))
  578. %----- Gravitational action 4-form. 12.90 ---------------------------------
  579. (de lact!> nil
  580. (prog (w)
  581. (setq w (list
  582. (dfprod2!> (getel1!> !#!P!O!M!E!G!A!U 0)
  583. (getel1!> !#!O!M!E!G!A!U 2))
  584. (dfprod2!> (getel1!> !#!P!O!M!E!G!A!U 2)
  585. (getel1!> !#!O!M!E!G!A!U 0))
  586. (fndfpr!> -2 (dfprod2!> (getel1!> !#!P!O!M!E!G!A!U 1)
  587. (getel1!> !#!O!M!E!G!A!U 1)))
  588. ))
  589. (setq w (ncons (evalform!> (dfsum!> w))))
  590. (setq w (append w (mapcar w 'coform!>)))
  591. (cond (!*cconst
  592. (setq w (cons
  593. (fndfpr!> (list 'times -2 '!C!C!O!N!S!T) (car !#!V!O!L)) w))))
  594. (cond (!*torsion (setq w (append w (list
  595. (fndfpr!> (list 'quotient (mp!> 1) 2)
  596. (dfprod2!> (getel1!> !#!P!T!H!E!T!A 0)
  597. (getel1!> !#!T!H!E!T!A 1)))
  598. (fndfpr!> (list 'quotient (mp!> 1) 2)
  599. (dfprod2!> (getel1!> !#!P!T!H!E!T!A 1)
  600. (getel1!> !#!T!H!E!T!A 0)))
  601. (fndfpr!> (list 'quotient (pm!> 1) 2)
  602. (dfprod2!> (getel1!> !#!P!T!H!E!T!A 2)
  603. (getel1!> !#!T!H!E!T!A 3)))
  604. (fndfpr!> (list 'quotient (pm!> 1) 2)
  605. (dfprod2!> (getel1!> !#!P!T!H!E!T!A 3)
  606. (getel1!> !#!T!H!E!T!A 2)))
  607. )))))
  608. (setq w (cons
  609. (fndfpr!> (list 'plus
  610. (list 'quotient (getel1!> !#!L!C!O!N!S!T 0) 2)
  611. (cond (!*nonmin
  612. (list 'times (mp!> 4) 'pi '!G!C!O!N!S!T
  613. (getel1!> !#!A!C!O!N!S!T 0)
  614. (car !#!F!I) (car !#!F!I)))
  615. (t nil)))
  616. (fndfpr!> (car !#!R!R) (car !#!V!O!L))) w))
  617. (setq !#!L!A!C!T (ncons (evalform!> (dfsum!> w))))
  618. (return t)))
  619. % Torsion equation. 01.91
  620. (de torsequation!> nil
  621. (prog (wc)
  622. (setq wc '(times -16 pi !G!C!O!N!S!T))
  623. (makebox!> '!#!T!O!R!S!q)
  624. (putel1!> (equation!> (evalform!> (chsign!> t (dfsum!> (list
  625. (dex!> (getel1!> !#!P!O!M!E!G!A!U 0 ))
  626. (fndfpr!> -2 (dfprod2!> (connecu!> 1)
  627. (getel1!> !#!P!O!M!E!G!A!U 0 )))
  628. (fndfpr!> 2 (dfprod2!> (connecu!> 0)
  629. (getel1!> !#!P!O!M!E!G!A!U 1 )))
  630. (fndfpr!> '(quotient -1 2) (dfprod2!> (getframe!> 0)
  631. (getel1!> !#!P!T!H!E!T!A 2)))
  632. (fndfpr!> '(quotient 1 2) (dfprod2!> (getframe!> 2)
  633. (getel1!> !#!P!T!H!E!T!A 0)))
  634. ))))
  635. (evalform!> (fndfpr!> wc (getel1!> !#!S!P!I!N!U 0))))
  636. !#!T!O!R!S!q 0)
  637. (putel1!> (equation!> (evalform!> (chsign!> t (dfsum!> (list
  638. (dex!> (getel1!> !#!P!O!M!E!G!A!U 1 ))
  639. (fndfpr!> -1 (dfprod2!> (connecu!> 2)
  640. (getel1!> !#!P!O!M!E!G!A!U 0 )))
  641. (dfprod2!> (connecu!> 0)
  642. (getel1!> !#!P!O!M!E!G!A!U 2 ))
  643. (fndfpr!> '(quotient -1 4) (dfprod2!> (getframe!> 1)
  644. (getel1!> !#!P!T!H!E!T!A 0)))
  645. (fndfpr!> '(quotient 1 4) (dfprod2!> (getframe!> 0)
  646. (getel1!> !#!P!T!H!E!T!A 1)))
  647. (fndfpr!> '(quotient 1 4) (dfprod2!> (getframe!> 3)
  648. (getel1!> !#!P!T!H!E!T!A 2)))
  649. (fndfpr!> '(quotient -1 4) (dfprod2!> (getframe!> 2)
  650. (getel1!> !#!P!T!H!E!T!A 3)))
  651. ))))
  652. (evalform!> (fndfpr!> wc (getel1!> !#!S!P!I!N!U 1))))
  653. !#!T!O!R!S!q 1)
  654. (putel1!> (equation!> (evalform!> (chsign!> t (dfsum!>( list
  655. (dex!> (getel1!> !#!P!O!M!E!G!A!U 2 ))
  656. (fndfpr!> 2 (dfprod2!> (connecu!> 1)
  657. (getel1!> !#!P!O!M!E!G!A!U 2 )))
  658. (fndfpr!> -2 (dfprod2!> (connecu!> 2)
  659. (getel1!> !#!P!O!M!E!G!A!U 1 )))
  660. (fndfpr!> '(quotient 1 2) (dfprod2!> (getframe!> 1)
  661. (getel1!> !#!P!T!H!E!T!A 3)))
  662. (fndfpr!> '(quotient -1 2) (dfprod2!> (getframe!> 3)
  663. (getel1!> !#!P!T!H!E!T!A 1)))
  664. ))))
  665. (evalform!> (fndfpr!> wc (getel1!> !#!S!P!I!N!U 2))))
  666. !#!T!O!R!S!q 2)
  667. ))
  668. (de connecu!> (w)
  669. (pmf!> (getel1!> !#!o!m!e!g!a!u w)))
  670. % Metric Equation. 01.91
  671. (de metrequation!> nil
  672. (prog (wc woo wcc wtt wtheta wa wb)
  673. (setq wc '(times 8 pi !G!C!O!N!S!T))
  674. (setq woo (mkt!> 1))
  675. % OMEGAU/\POMEGAU
  676. (for!> x (0 1 3) do
  677. (putel1!> (evalform!>(dfsum!>(list
  678. (fndfpr!> 2 (dfprod2!> (vform!> (getiframe!> x)
  679. (getel1!> !#!O!M!E!G!A!U 0 ))
  680. (getel1!> !#!P!O!M!E!G!A!U 2 )))
  681. (fndfpr!> 2 (dfprod2!> (vform!> (getiframe!> x)
  682. (getel1!> !#!O!M!E!G!A!U 2 ))
  683. (getel1!> !#!P!O!M!E!G!A!U 0 )))
  684. (fndfpr!> -4 (dfprod2!> (vform!> (getiframe!> x)
  685. (getel1!> !#!O!M!E!G!A!U 1 ))
  686. (getel1!> !#!P!O!M!E!G!A!U 1 ))) )))
  687. woo x))
  688. (setq wcc (mkt!> 1))
  689. % OMEGAU/\POMEGAU + cc
  690. (for!> x (0 1 3) do
  691. (putel1!> (list2 (getel1!> woo x)
  692. (coform!> (getel1!> woo (ccin!> x))))
  693. wcc x))
  694. (setq woo nil)
  695. (setq wtt (mkt!> 1))
  696. % Effective PTHETA
  697. (cond
  698. % If TORSION is On then wtheta = PTHETA
  699. (!*torsion (setq wtheta !#!P!T!H!E!T!A))
  700. % If TORSION is Off then wtheta = D POMEGA
  701. (t (setq wa (mkt!> 1))
  702. (dcpomega!> wa) % wa - D POMEGA
  703. (setq wb (mkt!> 1))
  704. (crsigma!> wb wa) % wb - SIGMAi
  705. (setq wa
  706. (list
  707. (vform!> (getiframe!> 2) (getel1!> wb 2))
  708. (vform!> (getiframe!> 0) (getel1!> wb 0))
  709. (vform!> (getiframe!> 1) (getel1!> wb 1)) ))
  710. (setq wa (cons (coform!> (car wa)) wa))
  711. (setq wa (dfsum!> wa)) % wa - SIGMA
  712. (setq wtheta (mkt!> 1))
  713. (for!> x (0 1 2) do
  714. (putel1!> (evalform!> (dfsum!> (list
  715. (fndfpr!> 2 (getel1!> wb x))
  716. (fndfpr!> '(quotient -1 2) (dfprod2!> (getframe!> x) wa)) )))
  717. wtheta x)) % wtheta - THETAeff
  718. (putel1!> (coform!>(getel1!> wtheta 2)) wtheta 3)
  719. (setq wa nil)
  720. (setq wb nil)
  721. ))
  722. (for!> x (0 1 3) do (putel1!> (evalform!> (dfsum!> (append
  723. (cons (dctheta!> x wtheta) (getel1!> wcc x) ) % D PTHETA
  724. (list
  725. (chsign!> t (vform!> (getiframe!> x) % LACT
  726. (car !#!L!A!C!T)))
  727. % THETA/\PTHETA iff TORSION is On
  728. (cond (!*torsion (dfprod2!> (vform!> (getdsgn!> x)
  729. (getel1!> !#!T!H!E!T!A 0))
  730. (getel1!> !#!P!T!H!E!T!A 1))))
  731. (cond (!*torsion (dfprod2!> (vform!> (getdsgn!> x)
  732. (getel1!> !#!T!H!E!T!A 1))
  733. (getel1!> !#!P!T!H!E!T!A 0))))
  734. (cond (!*torsion (chsign!> t
  735. (dfprod2!> (vform!> (getdsgn!> x)
  736. (getel1!> !#!T!H!E!T!A 2))
  737. (getel1!> !#!P!T!H!E!T!A 3))) ))
  738. (cond (!*torsion (chsign!> t
  739. (dfprod2!> (vform!> (getdsgn!> x)
  740. (getel1!> !#!T!H!E!T!A 3))
  741. (getel1!> !#!P!T!H!E!T!A 2)))) )))))
  742. wtt x))
  743. (setq wcc nil)
  744. (setq !#!M!E!T!R!q (mkt!> 2))
  745. (for!> x (0 1 3) do (for!> y (0 1 3) do
  746. (cond ((and (leq x y) (or !*full (member (list2 x y)
  747. '((0 0)(0 1)(0 2)(1 1)(1 2)(2 2)(2 3)))))
  748. (putel!> (equation!> (evalalg!> (makezz!> x y wtt))
  749. (evalalg!> (list 'times wc
  750. (getel2s!> !#!T!E!N!M!O!M x y))))
  751. !#!M!E!T!R!q (list2 x y))))))
  752. (return t)))
  753. (de getdsgn!> (wa) (mpf!> (getiframe!> wa)))
  754. (de makezz!> (wa wb wss)
  755. (prog (waa wbb)
  756. (setq waa (getel1!> wss wa))
  757. (setq wbb (getel1!> wss wb))
  758. (return (duald!> (fndfpr!> '(quotient -1 4) (dfsum!> (list
  759. (dfprod2!> (getlo!> !#!T wa) wbb)
  760. (dfprod2!> (getlo!> !#!T wb) waa) )))))))
  761. (de dctheta!> (x wth)
  762. (cond ((eqn x 3) (coform!> (evalform!> (dfsum!> (dctheta0!> 2 wth)))))
  763. (t (evalform!> (dfsum!> (dctheta0!> x wth))))))
  764. (de dctheta0!> (x wth)
  765. (cond
  766. ((eqn x 0) (list
  767. (dexsgn!> (getel1!> wth 1))
  768. (chsign!> t
  769. (dfprod2!> (dfsum!> (list2 (getel1!> !#!o!m!e!g!a!u 1)
  770. (getel1!> !#!o!m!e!g!a!d 1)))
  771. (getel1!> wth 1)) )
  772. (chsign!> t
  773. (dfprod2!> (getel1!> !#!o!m!e!g!a!u 2)
  774. (getel1!> wth 2)) )
  775. (chsign!> t
  776. (dfprod2!> (getel1!> !#!o!m!e!g!a!d 2)
  777. (getel1!> wth 3)) ) ))
  778. ((eqn x 1) (list
  779. (dexsgn!> (getel1!> wth 0))
  780. (dfprod2!> (dfsum!> (list2 (getel1!> !#!o!m!e!g!a!u 1 )
  781. (getel1!> !#!o!m!e!g!a!d 1 )))
  782. (getel1!> wth 0))
  783. (dfprod2!> (getel1!> !#!o!m!e!g!a!u 0 )
  784. (getel1!> wth 3))
  785. (dfprod2!> (getel1!> !#!o!m!e!g!a!d 0 )
  786. (getel1!> wth 2)) ))
  787. ((eqn x 2) (list
  788. (chsign!> t (dexsgn!> (getel1!> wth 3)))
  789. (chsign!> t
  790. (dfprod2!> (dfsum!> (list2 (chsign!> t (getel1!> !#!o!m!e!g!a!u 1 ))
  791. (getel1!> !#!o!m!e!g!a!d 1 )))
  792. (getel1!> wth 3)) )
  793. (dfprod2!> (getel1!> !#!o!m!e!g!a!u 2 )
  794. (getel1!> wth 0))
  795. (chsign!> t
  796. (dfprod2!> (getel1!> !#!o!m!e!g!a!d 0 )
  797. (getel1!> wth 1))) ))
  798. ((eqn x 3) (mapcar (dctheta!> 2 wth) 'coform!>))
  799. ))
  800. (de dexsgn!> (lst) (mpf!> (dex!> lst)))
  801. (de dcpomega!> (w)
  802. (progn
  803. (putel1!> (dfsum!> (list
  804. (dex!> (getel1!> !#!P!O!M!E!G!A!U 0))
  805. (fndfpr!> -2 (dfprod2!> (connecu!> 1)
  806. (getel1!> !#!P!O!M!E!G!A!U 0)))
  807. (fndfpr!> 2 (dfprod2!> (connecu!> 0)
  808. (getel1!> !#!P!O!M!E!G!A!U 1)))))
  809. w 0)
  810. (putel1!> (dfsum!> (list
  811. (dex!>(getel1!> !#!P!O!M!E!G!A!U 1))
  812. (fndfpr!> -1 (dfprod2!> (connecu!> 2)
  813. (getel1!> !#!P!O!M!E!G!A!U 0)))
  814. (dfprod2!> (connecu!> 0)
  815. (getel1!> !#!P!O!M!E!G!A!U 2)) ))
  816. w 1)
  817. (putel1!> (dfsum!> (list
  818. (dex!>(getel1!> !#!P!O!M!E!G!A!U 2))
  819. (fndfpr!> 2 (dfprod2!> (connecu!> 1)
  820. (getel1!> !#!P!O!M!E!G!A!U 2)))
  821. (fndfpr!> -2 (dfprod2!> (connecu!> 2)
  822. (getel1!> !#!P!O!M!E!G!A!U 1))) ))
  823. w 2) ))
  824. (de crsigma!> (lst w)
  825. (prog (wa wb)
  826. (setq wa(vform!>(getiframe!> 1)(getel1!> w 1)))
  827. (setq wb(chsign!> t(vform!>(getiframe!> 2)(getel1!> w 0))))
  828. (putel1!>(dfsum!>(list wa wb (coform!> wa)(coform!> wb))) lst 0)
  829. (setq wa(vform!>(getiframe!> 3)(getel1!> w 2)))
  830. (setq wb(chsign!> t(vform!>(getiframe!> 0)(getel1!> w 1))))
  831. (putel1!>(dfsum!>(list wa wb (coform!> wa)(coform!> wb))) lst 1)
  832. (putel1!>(evalform!>(dfsum!>(list
  833. (vform!>(getiframe!> 0)(getel1!> w 0))
  834. (chsign!> t(vform!>(getiframe!> 1)(coform!>(getel1!> w 2))))
  835. (vform!>(getiframe!> 3)(coform!>(getel1!> w 1)))
  836. (chsign!> t(vform!>(getiframe!> 3)(getel1!> w 1))) )))
  837. lst 2) ))
  838. %========= End of GRGgrav.sl ==============================================%