1;;;;;;;;;;;;;;;;; 2;; project to understand Riemannian geometry and general theory of relativity. 3;;; since 2021/5 4;;; 5 6 7;; make 4D vector 8(defun make-vector (x1 x2 x3 x4) 9 (let ((vector (create-vector 4 0))) 10 (setf (elt vector 0) x1) 11 (setf (elt vector 1) x2) 12 (setf (elt vector 2) x3) 13 (setf (elt vector 3) x4) 14 vector)) 15 16(defun make-metric (v1 v2) 17 (let ((tensor (create-tensor '(4 4)))) 18 (for ((i 0 (+ i 1))) 19 ((> i 3) tensor) 20 (for ((j 0 (+ j 1))) 21 ((> j 3) t) 22 (setf (aref tensor i j) (* (elt v1 i) (elt v2 j))))) 23 tensor)) 24 25(defun create-tensor (dimension) 26 (create-array dimension 0)) 27 28(defun symmetricp (tensor) 29 (block exit 30 (for ((i 0 (+ i 1))) 31 ((> i 3) t) 32 (for ((j 0 (+ j 1))) 33 ((> j 3) t) 34 (if (not (= (aref tensor i j) 35 (aref tensor j i))) 36 (return-from exit nil)))))) 37 38(defglobal a (make-vector 1 2 2 1)) 39(defglobal b (make-vector 2 1 1 2)) 40(defglobal c (make-metric a a)) 41 42 43(defun ds2 (g dx) 44 (for ((i 0 (+ i 1)) 45 (s 0)) 46 ((> i 3) s) 47 (for ((j 0 (+ j 1))) 48 ((> j 3) t) 49 (setq s (* (aref g i j) (elt dx i) (elt dx j)))))) 50 51#| 52(defun rank (x) 53 (length (array-dimensions x))) 54 55(defun metric-tensor (n) 56 (create-tensor `(,n ,n))) 57 58;;e.g. p203 tashiro 59(defglobal g 60 (#2a((1 0 0) 61 (0 (lambda (r) (* r r)) 0) 62 (0 0 (lambda (r sita) (* (^ r 2)(^ (sin sita) 2))))))) 63 64(defun ^ (base expo) 65 (expt base exp)) 66 67(defun gamma (i j k) 68 (* 0.5 (+ (round (g i j) (x k)) (round (g i k) (x i)) (round (g k j) (x i))))) 69 70(defun r (i j k l) 71 (+ (- (round (gamma i j l) (x k)) (round (gamma i j k) (x l))) 72 (- (* (gamma m j l) (gamma i m k)) (* (gamma m j k) (gamma i m l))))) 73 74(defmacro sum (x y) 75 (let ((dim1 (array-dimensions x)) 76 (dim2 (array-dimensions y))) 77 (cond ((= (length dim1) 2) (sum2 x y dim1)) 78 ((= (length dim1) 3) (sum3 x y dim1)) 79 ((= (length dim1) 4) (sum3 x y dim1))))) 80 81(defmacro sum4 (x y dim)) 82 83|# 84 85