aboutsummaryrefslogtreecommitdiffstats
path: root/chapters/5-Integration.scm
blob: ab81784e4bec4df26fa05698a380f740de841a15 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166

; deps
(define R2->R (-> (UP Real Real) Real))
(define R2-rect-chi (chart R2-rect))
(define R2-rect-chi-inverse (point R2-rect))
(define R2-rect-point (R2-rect-chi-inverse (up 'x0 'y0)))

(define R3->R (-> (UP Real Real Real) Real))
(define R3-rect-chi (chart R3-rect))
(define R3-rect-chi-inverse (point R3-rect))
(define R3-rect-point (R3-rect-chi-inverse (up 'x0 'y0 'z0)))

(define-coordinates (up x y z) R3-rect)

; two regular old vectors
(define u (+ (* 'u^0 d/dx) (* 'u^1 d/dy)))
(define v (+ (* 'v^0 d/dx) (* 'v^1 d/dy)))

(((wedge dx dy) u v) R3-rect-point)
; (+ (* u^0 v^1)
;    (* -1 u^1 v^0))

(define-coordinates (up r theta z) R3-cyl)

; two more vectors
(define a (+ (* 'a^0 d/dr) (* 'a^1 d/dtheta)))
(define b (+ (* 'b^0 d/dr) (* 'b^1 d/dtheta)))

(((wedge dr dtheta) a b) ((point R3-cyl) (up 'r0 'theta0 'z0)))
; (+ (* a^0 b^1) (* -1 a^1 b^0))

; the same thing, as expected

; fancy verification of determinant
; note that we are re-defining u,v

(define u (+ (* 'u^0 d/dx) (* 'u^1 d/dy) (* 'u^2 d/dz)))
(define v (+ (* 'v^0 d/dx) (* 'v^1 d/dy) (* 'v^2 d/dz)))
(define w (+ (* 'w^0 d/dx) (* 'w^1 d/dy) (* 'w^2 d/dz)))

(((wedge dx dy dz) u v w) R3-rect-point)
; (+ (* u^0 v^1 w^2)
;    (* -1 u^0 v^2 w^1)
;    (* -1 u^1 v^0 w^2)
;    (* u^1 v^2 w^0)
;    (* u^2 v^0 w^1)
;    (* -1 u^2 v^1 w^0))

(- (((wedge dx dy dz) u v w) R3-rect-point)
   (determinant
     (matrix-by-rows (list 'u^0 'u^1 'u^2)
                     (list 'v^0 'v^1 'v^2)
                     (list 'w^0 'w^1 'w^2))))
; 0

; continuing with bits after exersize 5.1...

(define a (literal-manifold-function 'alpha R3-rect))
(define b (literal-manifold-function 'beta R3-rect))
(define c (literal-manifold-function 'gamma R3-rect))

(define theta (+ (* a dx) (* b dy) (* c dz)))

(define X (literal-vector-field 'X-rect R3-rect))
(define Y (literal-vector-field 'Y-rect R3-rect))

(((- (d theta)
     (+ (wedge (d a) dx)
        (wedge (d b) dy)
        (wedge (d c) dz)))
  X Y)
 R3-rect-point)
; 0 

(define omega
  (+ (* a (wedge dy dz))
     (* b (wedge dz dx))
     (* c (wedge dx dy))))

(define Z (literal-vector-field 'Z-rect R3-rect))

(((- (d omega)
     (+ (wedge (d a) dy dz)
        (wedge (d b) dz dx)
        (wedge (d c) dx dy)))
  X Y Z)
 R3-rect-point)
; 0

(define v (literal-vector-field 'v-rect R2-rect))
(define w (literal-vector-field 'w-rect R2-rect))

(define R2-rect-basis (coordinate-system->basis R2-rect))

(define alpha (literal-function 'alpha R2->R))
(define beta (literal-function 'beta R2->R))

(let ((dx (ref (basis->1form-basis R2-rect-basis) 0))
      (dy (ref (basis->1form-basis R2-rect-basis) 1)))
  (((- (d (+ (* (compose alpha (chart R2-rect)) dx)
             (* (compose beta (chart R2-rect)) dy)))
       (* (compose (- ((partial 0) beta)
                      ((partial 1) alpha))
                   (chart R2-rect))
          (wedge dx dy)))
    v w)
   R2-rect-point))
; 0

(define a (literal-manifold-function 'a-rect R3-rect))
(define b (literal-manifold-function 'b-rect R3-rect))
(define c (literal-manifold-function 'c-rect R3-rect))

(define flux-through-boundary-element
  (+ (* a (wedge dy dz))
     (* b (wedge dz dx))
     (* c (wedge dx dy))))

(define production-in-volume-element
  (* (+ (d/dx a) (d/dy b) (d/dz c))
     (wedge dx dy dz)))

(define X (literal-vector-field 'X-rect R3-rect))
(define Y (literal-vector-field 'Y-rect R3-rect))
(define Z (literal-vector-field 'Z-rect R3-rect))

(((- production-in-volume-element
     (d flux-through-boundary-element))
  X Y Z)
 R3-rect-point)
; 0

;;; Exercise 5.1: Wedge Product

; let's do R2-polar! small and simple

(define-coordinates (up r theta) R2-polar)
(define R2-polar-chi (chart R2-polar))
(define R2-polar-chi-inverse (point R2-polar))
(define R2-polar-point (R2-polar-chi-inverse (up 'r0 'theta0)))

; a) verify that the wedge product is associative for forms in R2-polar

; A wedge ( B wedge C ) == ( A wedge B) wedge C

(define A (literal-1form-field 'a R2-polar))
(define B (literal-1form-field 'b R2-polar))
(define C (literal-1form-field 'c R2-polar))

(define m (+ (* 'm^0 d/dr) (* 'm^1 d/dtheta)))
(define n (+ (* 'n^0 d/dr) (* 'n^1 d/dtheta)))
(define p (+ (* 'p^0 d/dr) (* 'p^1 d/dtheta)))


(((- (wedge (wedge A B) C)
     (wedge A (wedge B C))) m n p) R2-polar-point)
; 0

; b) verify that formula (5.17) is true in R2-polar
; (dx wedge dy wedge ...) (d/dx, d/dy, ...) = 1

(((wedge dr dtheta) d/dr d/dtheta) R2-polar-point)
; 1

; exersize 5.2 and 5.3 would be in notebook, but not planning to do these right
; now