[ICP]Introduction to Computational Physics
Professor: Andreas Adelmann
1. Random Number Generator
Congruential RNG
x i = ( c x i − 1 ) m o d p x_i = (cx_{i-1})mod~p
x i = ( c x i − 1 ) m o d p
maximal period is p − 1 p-1 p − 1 , maximal period reach if c p − 1 m o d p = 1 c^{p-1}mod~p = 1 c p − 1 m o d p = 1
Lagged Fibonacci RNG
x b + 1 = ( ∑ j ∈ J x b + 1 − j ) m o d 2 j ⊂ { 1 , ⋯ , b } x_{b+1} = (\sum_{j\in\mathcal J}x_{b+1-j}) mod ~ 2\\
j\subset\{1,\cdots, b\}
x b + 1 = ( j ∈ J ∑ x b + 1 − j ) m o d 2 j ⊂ { 1 , ⋯ , b }
initial sequence at least c c c bits
usually use congruential RNG to obtain seed sequence
When ∣ j ∣ = 2 |j| = 2 ∣ j ∣ = 2
x i + 1 = ( x i − c + x i − d ) m o d 2 c , d ∈ { 1 , ⋯ , i − 1 } x_{i+1} = (x_{i-c}+x_{i-d}) mod ~ 2
\\
c,d\in\{1,\cdots, i-1\}
x i + 1 = ( x i − c + x i − d ) m o d 2 c , d ∈ { 1 , ⋯ , i − 1 }
max period: 2 c − 1 2^c - 1 2 c − 1
Zierler-Trinomial condition
1 + z c + z d 1+z^c+z^d 1 + z c + z d cannot be factorized by in subpolynomials, smallest ( c , d ) = ( 250 , 103 ) (c,d) = (250,103) ( c , d ) = ( 250 , 103 )
Square/Cubic Test
square test:( s i , s i + 1 ) (s_i, s_{i+1}) ( s i , s i + 1 )
cubic test: ( s i , s i + 1 , s i + 2 ) (s_i, s_{i+1}, s_{i+2}) ( s i , s i + 1 , s i + 2 )
χ 2 \chi^2 χ 2 test
fluctuation of mean value, mean value should be gaussian
χ 2 = ∑ i = 1 k N i − n k n k \chi^2 = \sum_{i=1}^k\frac{N_i-\frac{n}{k}}{\frac{n}{k}}
χ 2 = i = 1 ∑ k k n N i − k n
n n n : number of samples
N i N_i N i : count number for each bin
k k k : number of bins
Monte Carlo
expected error for MC sampling is O ( 1 N ) \mathcal O(\frac{1}{\sqrt N}) O ( N 1 )
error bound in quasi-MC is O ( ( l o g N ) d N ) \mathcal O(\frac{(log~N)^d}{N}) O ( N ( l o g N ) d )
D-star Discrepency
D N ∗ = m a x 0 ≤ v j ≤ 1 ∣ 1 N ∑ i = 1 N ∏ j = 1 d 1 0 ≤ x j i ≤ v j − ∏ j = 1 d v j ∣ D^*_N = \underset{0\le v_j \le 1}{max}\left|\frac{1}{N}\sum_{i=1}^N\prod_{j=1}^d1_{0\le x_j^i \le v_j} - \prod_{j=1}^dv_j\right|
D N ∗ = 0 ≤ v j ≤ 1 ma x N 1 i = 1 ∑ N j = 1 ∏ d 1 0 ≤ x j i ≤ v j − j = 1 ∏ d v j
it measure how dense the points distributed inside a given volume
N N N : number of dataset points { x 1 , ⋯ , x n } \{x^1,\cdots,x^n\} { x 1 , ⋯ , x n }
d d d : dimension of the points
low-discrepancy : D N ∗ ≤ c ( d ) l o g ( N ) d N D^*_N \le c(d)\frac{log(N)^d}{N} D N ∗ ≤ c ( d ) N l o g ( N ) d
given uniform distribution X , Y ∼ U n i f ( 0 , 1 ) X,Y\sim Unif(0,1) X , Y ∼ U ni f ( 0 , 1 ) , get 3d sphere uniform distribution
∫ 0 X ∫ 0 Y d x d y = ∫ 0 Φ ∫ 0 Θ 1 4 π s i n θ d ϕ d θ ⇒ X Y = 1 4 π ( 1 − c o s Θ ) Φ \int_0^X\int_0^Y dxdy = \int_0^\Phi\int_0^\Theta \frac{1}{4\pi} sin\theta d\phi d\theta
\\
\Rightarrow XY = \frac{1}{4\pi}(1-cos\Theta)\Phi
∫ 0 X ∫ 0 Y d x d y = ∫ 0 Φ ∫ 0 Θ 4 π 1 s in θ d ϕ d θ ⇒ X Y = 4 π 1 ( 1 − cos Θ ) Φ
let Φ = 2 π X \Phi = 2\pi X Φ = 2 π X then Θ = a c o s ( 1 − 2 Y ) \Theta = acos(1-2Y) Θ = a cos ( 1 − 2 Y )
∴ S ∼ [ R s i n Θ c o s Φ , R s i n Θ s i n Φ , R c o s Θ ] \therefore S\sim [Rsin\Theta cos\Phi, Rsin\Theta sin\Phi, Rcos\Theta] ∴ S ∼ [ R s in Θ cos Φ , R s in Θ s in Φ , R cos Θ ]
rejection sampling, sample X ∼ U n i f ( − a , a ) , Y ∼ U n i f ( − b , b ) X\sim Unif(-a, a), Y\sim Unif(-b,b) X ∼ U ni f ( − a , a ) , Y ∼ U ni f ( − b , b ) , accept the points inside ellipse
draw X , Y ∼ U n i f ( 0 , 1 ) X,Y\sim Unif(0,1) X , Y ∼ U ni f ( 0 , 1 ) , ψ = a t a n ( b a t a n ( 2 π X ) ) \psi = atan(\frac{b}{a}tan(2\pi X)) ψ = a t an ( a b t an ( 2 π X )) , r = Y a b ( b c o s ψ ) 2 + ( a sin ψ ) 2 r = \sqrt Y \frac{ab}{\sqrt{(b cos\psi)^2 + (a\sin\psi)^2}} r = Y ( b cos ψ ) 2 + ( a s i n ψ ) 2 ab , E ∼ [ r c o s ψ , r s i n ψ ] E\sim [rcos\psi, rsin\psi] E ∼ [ rcos ψ , rs in ψ ]
y 1 = − σ l n ( 1 − z 2 ) s i n ( 2 π z 1 ) y 2 = − σ l n ( 1 − z 2 ) c o s ( 2 π z 1 ) y_1 = \sqrt{-\sigma~ln(1-z_2)}sin(2\pi z_1)\\
y_2 = \sqrt{-\sigma~ln(1-z_2)}cos(2\pi z_1)
y 1 = − σ l n ( 1 − z 2 ) s in ( 2 π z 1 ) y 2 = − σ l n ( 1 − z 2 ) cos ( 2 π z 1 )
using uniform z 1 z_1 z 1 and z 2 z_2 z 2 could get two gaussian y 1 y_1 y 1 and y 2 y_2 y 2
2. Percolation
cirtical point p c p_c p c : occupation probabilty p p p , a phase transition from non-percolated system to percolated system containing an infinitely-sized cluster
percolation strength β \beta β : P ( p ≳ p c ) ∼ ∣ p − p c ∣ β P(p\gtrsim p_c) \sim |p-p_c|^\beta P ( p ≳ p c ) ∼ ∣ p − p c ∣ β , how fast the transition
wrapping probability : W ( p ) = { 0 0 ≤ p < p c 1 p c < p ≤ 1 W(p) = \begin{cases}0 & 0\leq p<p_c \\ 1 & p_c< p\le 1\end{cases} W ( p ) = { 0 1 0 ≤ p < p c p c < p ≤ 1
cluster-size distribution : n s ( p ) = l i m L → ∞ N s ( p , L ) L n_s(p)=\underset{L\rightarrow \infin}{lim}\frac{N_s(p,L)}{L} n s ( p ) = L → ∞ l im L N s ( p , L ) , N s ( p , L ) N_s(p,L) N s ( p , L ) is the number of cluster of size s s s given occupation probability p p p and system’s side length L L L
Burning Method
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 def burning_method (lattice ): """ lattice: np.ndarray[L, L] 0 means empty, 1 means occupied """ t = 2 lattice[0 , lattice[0 , :] == 1 ] == t while True : t += 1 has_changed = False for node in np.where(lattice == t): for neighbor in get_neighbors(node): if lattice[neighbor] == 1 : lattice[neighbor] = t has_changed = True at_bottom = (node[0 ] == lattice.shape[0 ] - 1 ).any () if not has_changed or at_bottom: break
Hoshen-Kopelman Algorithm
compute how many clusters
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 def hoshen_kopelman_algorithm (lattice ): """ lattice: np.ndarray[L, L] 0 means empty, 1 means occupied """ cluster_sizes = [None , None ] k = 2 for i in range (lattice.shape[0 ]): for j in range (lattice.shape[1 ]): if is_top_and_left_empty(lattice[i, j]): lattice[i, j] = k cluster_sizes.append(1 ) k += 1 else is_top_left_same_cluster(lattice[i, j]): lattice[i, j] = get_top_left_cluster(lattice[i,j]) cluster_sizes[lattice[i, j]] += 1 else : k1, k2 = get_top_left_cluster(lattice[i, j]) lattice[i, j] = k1 cluster_sizes[k1] += cluster_sizes[k2] mark_cluster_size_as_transferred(cluster_sizes, k2)
3. Fractals
fractal dimension d f d_f d f : stretch the object by a a a , the volume grows a d f a^{d_f} a d f
V ε ∗ ε d = ( L ε ) d f \frac{V_\varepsilon^*}{\varepsilon^d} = \left(\frac{L}{\varepsilon}\right)^{d_f}
ε d V ε ∗ = ( ε L ) d f
correlation function c ( r ) c(r) c ( r ) : number of filled sites with in sphere r r r shell Δ r \Delta r Δ r normalized by surface
c ( r ) ∝ { C + e x p ( − r ξ ) p < p c r − ( d − 2 + η ) p ≈ p c c(r) \propto \begin{cases}
C + exp(-\frac{r}{\xi}) & p<p_c\\
r^{-(d-2 + \eta)} & p\approx p_c
\end{cases}
c ( r ) ∝ { C + e x p ( − ξ r ) r − ( d − 2 + η ) p < p c p ≈ p c
ξ \xi ξ is the correlation length
ξ ∝ ∣ p − p c ∣ ν w h e r e ν = { 4 3 2 d 0.88 3 d \xi \propto |p-p_c|^\nu~where~\nu=\begin{cases}\frac{4}{3}&2d \\ 0.88 & 3d\end{cases}
ξ ∝ ∣ p − p c ∣ ν w h ere ν = { 3 4 0.88 2 d 3 d
η = { 5 24 2 d − 0.05 3 d \eta = \begin{cases} \frac{5}{24} & 2d \\ -0.05 & 3d\end{cases}
η = { 24 5 − 0.05 2 d 3 d
d f = d − β ν d_f = d - \frac{\beta}{\nu}
d f = d − ν β
β \beta β : percolation strength
d d d : dimension
Sandbox Method
1 2 3 4 5 6 7 8 9 10 11 12 def sandbox_method (lattice ): """ lattice: np.ndarray[L, L] 0 means empty, 1 means occupied """ R = [] N_R = [] c = lattice.shape[0 ]/2 - 1 for r in range (1 , int (L//2 )): R.append(r) N_R.append(sum (lattice[c-r:c+r, c-r:c+r]==1 )) plot_log(R, N_R)
Box Counting Method
1 2 3 4 5 6 7 8 9 10 11 12 13 def box_counting_method (lattice ): """ lattice: np.ndarray[L, L] 0 means empty, 1 means occupied """ epsilon_inv = [] N_epsilon = [] for epsilon in range (1 , lattice.shape[0 ]): boxes = maxpool2d(lattice, kernel=np.ones([epsilon, epsilon]), padding=0 ) N_epsilon.append(sum (boxes > 0 )) epsilon_inv.append(1 / epsilon) plot_log(epsilon_inv, N_epsilon)
4. Cellular Automata
cellular automata:( L , ψ , R , N ) (\mathcal L, \psi, R,\mathcal N) ( L , ψ , R , N )
L \mathcal L L : d d d dimension lattice of cells
ψ \psi ψ : m m m dimension boolean state for each site at time t t t
R R R : m m m rules to update the ψ \psi ψ
neighborhoods
left:Von Neumann neighborhood : 4 (north-east-south-west)
right:Moore neighborhood : 8 (3x3 region)
boundary conditions
assume x[1:] is the actual space
periodic : x[0] = x[-1]
fixed : x[0] = C
adiabtic : x[0] = x[1]
reflection: x[0] = x[2]
Game of Life
moore neighborhood
n < 2 n < 2 n < 2 : 0 dead because of isolation
n = 2 n = 2 n = 2 : stay as before
n = 3 n = 3 n = 3 : 1 birth
n > 3 n>3 n > 3 : 0 dead because of over population
Langton Ant
enter white cell, turn left and paint cell gray
enter gray cell, turn right and paint cell white
observation
chaotic phase of about 10000 steps
formation highway
walking on highway
Traffic Models
( ψ i − 1 , ψ i , ψ i + 1 ) t → ( ψ i ) t + 1 (\psi_{i-1},\psi_i,\psi_{i+1})_t \rightarrow (\psi_i)_{t+1}
( ψ i − 1 , ψ i , ψ i + 1 ) t → ( ψ i ) t + 1
rule \( ψ i − 1 ψ i ψ i + 1 ) t (\psi_{i-1}\psi_{i}\psi_{i+1})_t ( ψ i − 1 ψ i ψ i + 1 ) t
111
110
101
100
011
010
001
000
184 ( ψ i ) t (\psi_{i})_t ( ψ i ) t
1
0
1
1
1
0
0
0
Gas of Particles ( HPP model )
ψ ( r , t ) = ( 1011 ) \psi(r, t) = (1011) ψ ( r , t ) = ( 1011 )
5. Monte Carlo Method
Error
Δ ∝ 1 N \Delta \propto \frac{1}{\sqrt N}
Δ ∝ N 1
π \boldsymbol \pi π Buffon’s Needle Experiment
π ( N ) = 4 N c ( N ) N \pi(N) = 4\frac{N_c(N)}{N}\\
π ( N ) = 4 N N c ( N )
N c N_c N c : points in the quarter circle
Monte Carlo Integral
∫ a b g ( x ) d x ≈ b − a N ∑ i = 1 N g ( x i ) ≡ Q \int_a^b g(x)dx \approx \frac{b-a}{N}\sum_{i=1}^N g(x_i) \equiv Q
∫ a b g ( x ) d x ≈ N b − a i = 1 ∑ N g ( x i ) ≡ Q
x i x_i x i is uniform sampled in [ a , b ] [a, b] [ a , b ]
N N N is the number of samples
error ∝ ( Δ x ) 2 ∝ N − 2 d \propto (\Delta x)^2 \propto N^{-\frac{2}{d}} ∝ ( Δ x ) 2 ∝ N − d 2
Center Limit Theorem
δ Q = ( b − a ) σ N = V σ N σ 2 = 1 N − 1 ∑ i = 1 N ( g ( x i ) − Q N ) \delta Q = (b-a) \frac{\sigma}{\sqrt{N}} = V\frac{\sigma}{\sqrt{N}}\\
\sigma^2 = \frac{1}{N-1}\sum_{i=1}^N
\left(g(x_i) - \frac{Q}{N}\right)
δ Q = ( b − a ) N σ = V N σ σ 2 = N − 1 1 i = 1 ∑ N ( g ( x i ) − N Q )
V V V : is the volume of hypercube for integration in high dimension
the error independent of dimension d d d
cirtical point
N − 2 d = c r i t 1 N N^{-\frac{2}{d}}\overset{crit}{=}\frac{1}{\sqrt{N}}
N − d 2 = cr i t N 1
for d > 4 d>4 d > 4 , MC more efficient
high dimension integration
hard-sphere, overlap → \rightarrow → rejective
Importance Sampling
∫ a b f ( x ) d x ≈ 1 N ∑ i = 1 N f ( x i G ) g ( x i G ) \int_a^b f(x)dx \approx \frac{1}{N}\sum_{i=1}^N \frac{f(x_i^G)}{g(x_i^G)}
∫ a b f ( x ) d x ≈ N 1 i = 1 ∑ N g ( x i G ) f ( x i G )
x i G x_i^G x i G is sampled according to distribution g ( x ) g(x) g ( x )
G ( x ) G(x) G ( x ) is the cdf of g ( x ) g(x) g ( x ) , G ( x ) = ∫ a x g ( x ) d x G(x) = \int_a^x g(x)dx G ( x ) = ∫ a x g ( x ) d x
f f f and g g g need to be positively correlated
Control Variates
∫ a b f ( x ) d x = ∫ a b ( f ( x ) − g ( x ) ) d x + ∫ a b g ( x ) d x \int_a^b f(x)dx = \int_a^b (f(x)-g(x))dx + \int_a^b g(x)dx
∫ a b f ( x ) d x = ∫ a b ( f ( x ) − g ( x )) d x + ∫ a b g ( x ) d x
f f f and g g g need to be positively coorelated
V a r ( f − g ) < V a r ( f ) Var(f-g) < Var(f) Va r ( f − g ) < Va r ( f )
∫ a b g ( x ) d x \int_a^b g(x)dx ∫ a b g ( x ) d x is known
Quasi Monte Carlo
D N ∗ = O ( ( l o g N ) d N ) D^*_N = \mathcal O\left(\frac{(log N)^d}{N}\right)
D N ∗ = O ( N ( l o g N ) d )
O ( ( l o g N ) d N ) < O ( 1 N ) ⇒ N > 2 d \mathcal O(\frac{(logN)^d}{N}) < \mathcal O(\frac{1}{\sqrt{ N}}) \Rightarrow N > 2^d
O ( N ( l o g N ) d ) < O ( N 1 ) ⇒ N > 2 d
Markov Chain
d p ( X , τ ) d τ = ∑ Y ≠ X p ( Y ) W ( Y → X ) − ∑ Y ≠ X p ( X ) W ( X → Y ) W ( X → Y ) = T ( X → Y ) A ( X → Y ) \frac{dp(X,\tau)}{d\tau} = \sum_{Y\neq X} p(Y)W(Y\rightarrow X) - \sum_{Y\neq X} p(X)W(X\rightarrow Y)\\
W(X\rightarrow Y) = T(X\rightarrow Y) A(X\rightarrow Y)
d τ d p ( X , τ ) = Y = X ∑ p ( Y ) W ( Y → X ) − Y = X ∑ p ( X ) W ( X → Y ) W ( X → Y ) = T ( X → Y ) A ( X → Y )
A ( X → Y ) A(X\rightarrow Y) A ( X → Y ) means the accpet probability from X X X to Y Y Y
T ( X → Y ) T(X\rightarrow Y) T ( X → Y ) means the transition probablity from X X X to Y Y Y
ergodicity: $\forall X,Y: W(X\rightarrow Y) > 0 $
normalization: ∑ Y W ( X → Y ) = 1 \sum_Y W(X\rightarrow Y) = 1 ∑ Y W ( X → Y ) = 1
homogeneity: ∑ Y p ( Y ) W ( Y → X ) = p ( X ) \sum_Y p(Y)W(Y\rightarrow X) = p(X) ∑ Y p ( Y ) W ( Y → X ) = p ( X )
Detailed Balance : d p ( X , τ ) d τ = 0 \frac{d~p(X,\tau)}{d\tau} = 0 d τ d p ( X , τ ) = 0
M(RT)^2^ Algorithm
random choose a configuration X X X
compute Δ E = E ( Y ) − E ( X ) \Delta E = E(Y) - E(X) Δ E = E ( Y ) − E ( X )
spinflip if Δ E < 0 \Delta E < 0 Δ E < 0 else accept iwth probability e x p ( − Δ E k B T ) exp(-\frac{\Delta E}{k_BT}) e x p ( − k B T Δ E )
Ising Model
simulate the magnetic properties of a material
H = − J ∑ i , j S i S j − H ∑ i S i \mathcal H = - J \sum_{i,j}S_iS_j - H\sum_i S_i
H = − J i , j ∑ S i S j − H i ∑ S i
S i S_i S i means the spin at position i i i
j j j : is the neighbor off i i i
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 def ising_model (lattice, M, E, J, beta, steps ): """ lattice: np.ndarray[L, L] 1 means spin up, -1 means spin down M: float magnetic field E: float energy J: float coupling constant beta: float inverse of temperature `beta = 1 / T / kB` steps: int """ L = lattice.shape[0 ] for i in range (steps): x, y = np.random.randint(0 , L, [2 ]) sigma_j = lattice[get_neighbors(lattice, x, y)].sum () sigma_i = lattice[x, y] delta_E = 2 * J * sigma_i * sigma_j accept = min (1. , exp(-beta * delta_E)) > rand() if accpet: M -= 2 *lattice[x, y] E += delta_E lattice[x, y] *= -1 return M, E
random choose a configuration X X X
compute Δ E = E ( Y ) − E ( X ) = 2 J σ i σ j \Delta E = E(Y) - E(X) = 2J\sigma_i\sigma_j Δ E = E ( Y ) − E ( X ) = 2 J σ i σ j
spinflip if Δ E < 0 \Delta E < 0 Δ E < 0 else accept with probability e x p ( − Δ E k B T ) exp(-\frac{\Delta E}{k_BT}) e x p ( − k B T Δ E )
Multilevel Monte Carlo(MLMC)
E [ P L ] = E [ P 0 ] + ∑ l = 1 L E [ P l − P l − 1 ] \mathbb E[P_L ] = \mathbb E[P_0] + \sum_{l=1}^L \mathbb E [P_l - P_{l-1}]
E [ P L ] = E [ P 0 ] + l = 1 ∑ L E [ P l − P l − 1 ]
N l = μ V l C l C = ∑ l = 1 L C l N l V a r = ∑ l = 1 L V l N l − 1 N_l = \mu \sqrt{\frac{V_l}{C_l}}\\
C = \sum_{l=1}^L C_l N_l \\
Var = \sum_{l=1}^L V_l N^{-1}_l
N l = μ C l V l C = l = 1 ∑ L C l N l Va r = l = 1 ∑ L V l N l − 1
C l C_l C l : cost at level l l l
V l V_l V l : variance at level l l l
N l N_l N l : sample number at level l l l
6. Finite Difference
Error
input data error
rounding error
truncation error
simplification in mathematical model
human & machine error
propogation
ε ≈ ∑ i n ( ∂ f ∂ x i ) 2 ε i 2 \varepsilon \approx \sqrt{\sum_{i}^n \left(\frac{\partial f}{\partial x_i}\right)^2\varepsilon_i^2}
ε ≈ i ∑ n ( ∂ x i ∂ f ) 2 ε i 2
Partial Differential Equation (PDE)
parabolic : D ∂ 2 ϕ ∂ 2 x − ∂ ϕ ∂ t = 0 D\frac{\partial ^2 \phi}{\partial ^ 2 x} - \frac{\partial \phi}{\partial t} = 0 D ∂ 2 x ∂ 2 ϕ − ∂ t ∂ ϕ = 0
hyperbolic : ∂ 2 ϕ ∂ 2 x − 1 c ∂ 2 ϕ ∂ 2 t = 0 \frac{\partial^2 \phi}{\partial ^2 x} - \frac{1}{c}\frac{\partial^2 \phi}{\partial^2 t} = 0 ∂ 2 x ∂ 2 ϕ − c 1 ∂ 2 t ∂ 2 ϕ = 0
generate solution is ϕ ( x , t ) = α f 0 ( x − c t ) + β g 0 ( x + c t ) \phi(x,t)=\alpha f_0(x-ct)+\beta g_0(x+ct) ϕ ( x , t ) = α f 0 ( x − c t ) + β g 0 ( x + c t )
elliptic : ∇ 2 ϕ = 0 \nabla^2\phi = 0 ∇ 2 ϕ = 0
Lagrange Derivative :
D ϕ D t = ∂ ϕ ∂ t + u → ⋅ ∇ ϕ \frac{D\phi}{Dt} = \frac{\partial \phi}{\partial t} + \overrightarrow u \cdot \nabla \phi
D t D ϕ = ∂ t ∂ ϕ + u ⋅ ∇ ϕ
Forward in Time, Backward in Space (FTBS)
∂ ϕ j n + 1 ∂ t = ϕ j n + 1 − ϕ j n Δ t + O ( Δ t ) ∂ ϕ j n ∂ x = ϕ j n − ϕ j − 1 n Δ x + O ( Δ x ) \begin{aligned}
\frac{\partial \phi^{n+1}_j}{\partial t} &= \frac{\phi_j^{n+1} - \phi_j^{n}}{\Delta t } + \mathcal O(\Delta t )
\\
\frac{\partial \phi^n_j}{\partial x} &= \frac{\phi_j^{n} - \phi_{j-1}^{n}}{\Delta x} + \mathcal O(\Delta x)
\end{aligned}
∂ t ∂ ϕ j n + 1 ∂ x ∂ ϕ j n = Δ t ϕ j n + 1 − ϕ j n + O ( Δ t ) = Δ x ϕ j n − ϕ j − 1 n + O ( Δ x )
first order accurate
explicit
Centred in Time, Centred in Space (CTCS)
∂ ϕ j n ∂ t = ϕ j ( n + 1 ) − ϕ j ( n − 1 ) 2 Δ t + O ( Δ t 2 ) ∂ ϕ j n ∂ x = ϕ j + 1 n − ϕ j − 1 n 2 Δ x + O ( Δ x 2 ) \begin{aligned}
\frac{\partial \phi_j^n}{\partial t } &= \frac{\phi_j^{(n+1)}-\phi_j^{(n-1)}}{2\Delta t} + \mathcal O(\Delta t^2)\\
\frac{\partial \phi_j^n}{\partial x} &= \frac{\phi_{j+1}^n - \phi_{j-1}^n}{2\Delta x} + \mathcal O(\Delta x^2)
\end{aligned}
∂ t ∂ ϕ j n ∂ x ∂ ϕ j n = 2Δ t ϕ j ( n + 1 ) − ϕ j ( n − 1 ) + O ( Δ t 2 ) = 2Δ x ϕ j + 1 n − ϕ j − 1 n + O ( Δ x 2 )
second order accurate
implicit
Backward in Time, Centred in Space (BTCS)
∂ ϕ j n ∂ t = ϕ j n + 1 − ϕ j n Δ t + O ( Δ t ) ∂ ϕ j n ∂ x = ϕ j + 1 n − ϕ j − 1 n Δ x + O ( Δ x ) \frac{\partial \phi_j^n}{\partial t} = \frac{\phi_j^{n+1}-\phi_j^n}{\Delta t}+ \mathcal O(\Delta t)\\
\frac{\partial \phi_j^n}{\partial x} = \frac{\phi_{j+1}^n - \phi_{j-1}^n}{\Delta x } + \mathcal O(\Delta x)\\
∂ t ∂ ϕ j n = Δ t ϕ j n + 1 − ϕ j n + O ( Δ t ) ∂ x ∂ ϕ j n = Δ x ϕ j + 1 n − ϕ j − 1 n + O ( Δ x )
first order accurate
implicit
Stability
Dissipation : smooth out sharp corners, gradients, discontinuities
Dispersion : dependence of wave speed on wavelength
Lax-Equivalence Theorem
consistency + stability ⇔ \Leftrightarrow ⇔ convergence
Courant-Friedrichs-Lewy(CFL) cirterion
C = u Δ t Δ x ≤ C m a x C = \frac{u\Delta t}{\Delta x} \le C_{max}
C = Δ x u Δ t ≤ C ma x
for explicit, C m a x = 1 C_{max} = 1 C ma x = 1 , much larger for implicit, as it’s much more stable
Domain of Dependence(DoD)
DoD for FTBS 0 ≤ c ≤ 1 0\le c \le 1 0 ≤ c ≤ 1
DoD for CTCS − 1 ≤ c ≤ 1 -1 \le c \le 1 − 1 ≤ c ≤ 1
Von-Neumann Stability Analysis
ϕ n + 1 = A ϕ n \phi^{n+1} = A\phi^n
ϕ n + 1 = A ϕ n
∣ A ∣ 2 < 1 |A|^2 < 1 ∣ A ∣ 2 < 1 stable and damping
∣ A ∣ 2 = 1 |A|^2 = 1 ∣ A ∣ 2 = 1 neutral stable
∣ A ∣ 2 > 1 |A|^2 > 1 ∣ A ∣ 2 > 1 unstable and amplyfying
for FTBS
ϕ j n + 1 = ϕ j n − c ( ϕ j n − ϕ j − 1 n ) A n + 1 e i k j Δ x = A n e e k j Δ x − c A n ( e i k j Δ x − e i k ( j − 1 ) Δ x ) A = 1 − c ( 1 − e − i k Δ x ) ∣ A ∣ 2 = 1 − 2 c ( 1 − c ) ( 1 − c o s k Δ x ) \begin{aligned}
\phi^{n+1}_j &= \phi^n_j - c(\phi^n_j -\phi^n_{j-1})
\\
A^{n+1} e^{ikj\Delta x} &= A^n e^{ekj\Delta x} - cA^n\left(e^{ikj\Delta x}-e^{ik(j-1)\Delta x}\right)
\\
A &= 1 - c(1-e^{-ik\Delta x})
\\
|A|^2 &= 1 - 2c(1-c)(1-cos k \Delta x)
\end{aligned}
ϕ j n + 1 A n + 1 e ikj Δ x A ∣ A ∣ 2 = ϕ j n − c ( ϕ j n − ϕ j − 1 n ) = A n e e kj Δ x − c A n ( e ikj Δ x − e ik ( j − 1 ) Δ x ) = 1 − c ( 1 − e − ik Δ x ) = 1 − 2 c ( 1 − c ) ( 1 − cos k Δ x )
c = u Δ t Δ x c = \frac{u\Delta t}{\Delta x} c = Δ x u Δ t
if $u < 0 $ or u Δ t Δ x > 1 \frac{u\Delta t}{\Delta x} > 1 Δ x u Δ t > 1 the FTBS is unstable , which is 0 ≤ c ≤ 1 0\le c\le 1 0 ≤ c ≤ 1
for FTCS
∣ A ∣ 2 = 1 + 4 c 2 s i n 2 ( k Δ x ) |A|^2 = 1 + 4c^2 sin^2(k\Delta x)
∣ A ∣ 2 = 1 + 4 c 2 s i n 2 ( k Δ x )
for CTCS
ϕ j n + 1 = ϕ j n − 1 − c ( ϕ j + 1 n − ϕ j − 1 n ) A = − i c s i n ( k Δ x ) ± 1 − c 2 s i n 2 k Δ x ∣ A ∣ 2 = 2 c 2 s i n 2 ( k Δ x ) − 1 ∓ s i n ( k Δ x ) c 2 s i n 2 ( k Δ x ) − 1 \begin{aligned}
\phi_j^{n+1} &= \phi_j^{n-1}- c(\phi_{j+1}^n - \phi_{j-1}^n)
\\
A & = -ic sin(k\Delta x)\pm \sqrt{1 - c^2 sin^2 k\Delta x}\\
|A|^2 &= 2c^2sin^2(k\Delta x) - 1 \mp sin(k\Delta x)\sqrt{c^2sin^2(k\Delta x) - 1}
\end{aligned}
ϕ j n + 1 A ∣ A ∣ 2 = ϕ j n − 1 − c ( ϕ j + 1 n − ϕ j − 1 n ) = − i cs in ( k Δ x ) ± 1 − c 2 s i n 2 k Δ x = 2 c 2 s i n 2 ( k Δ x ) − 1 ∓ s in ( k Δ x ) c 2 s i n 2 ( k Δ x ) − 1
∣ c ∣ > 1 |c| > 1 ∣ c ∣ > 1 unstable
∣ c ∣ ≤ 1 |c| \le 1 ∣ c ∣ ≤ 1 stable
there are two solutions ,should ignore the spurious solution
Conservation
M n + 1 = ∫ 0 1 ϕ x n + 1 d x = M n = ∫ 0 1 ϕ x n d x \begin{aligned}
M^{n+1} &= \int_0^1 \phi^{n+1}_x dx \\
= M^{n} &= \int_0^1 \phi^n_xdx
\end{aligned}
M n + 1 = M n = ∫ 0 1 ϕ x n + 1 d x = ∫ 0 1 ϕ x n d x
Phase Velocity
ϕ ( x , t ) = ϕ ( x − u t , 0 ) \phi(x,t )= \phi(x-ut,0)
ϕ ( x , t ) = ϕ ( x − u t , 0 )
u u u : phase speed
for CTCS, small k k k and Δ x \Delta x Δ x is correct
Shallow Water Equation
H = H 0 + η H = H_0 + \eta
H = H 0 + η
where H H H is the water height, η \eta η is the fluctuation
∂ u ∂ t + ( u ⋅ ∇ ) u = − 1 ρ ∇ p + g ∇ ⋅ u = 0 \frac{\partial u}{\partial t} + (u \cdot \nabla)u = -\frac{1}{\rho}\nabla p + g\\
\nabla \cdot u = 0
∂ t ∂ u + ( u ⋅ ∇ ) u = − ρ 1 ∇ p + g ∇ ⋅ u = 0
∂ u i ∂ t + u j ∂ u i ∂ x j = − 1 ρ ∂ p ∂ x i + g i ∂ u i ∂ x i = 0 \frac{\partial u_i}{\partial t} + u_j\frac{\partial u_i}{\partial x_j} = -\frac{1}{\rho} \frac{\partial p}{\partial x_i} + g_i
\\
\frac{\partial u_i}{\partial x_i} = 0
∂ t ∂ u i + u j ∂ x j ∂ u i = − ρ 1 ∂ x i ∂ p + g i ∂ x i ∂ u i = 0
where g = [ 0 , 0 , g z ] g = [0, 0, g_z] g = [ 0 , 0 , g z ] is the velocity
A-Grid(unstaggered)
η j n − η j n − 1 Δ t = − H 0 u j + 1 n − u j − 1 n Δ x u j n + 1 − u j n Δ t = − g η j + 1 n − η j − 1 n Δ x \frac{\eta^n_j - \eta^{n-1}_j}{\Delta t} = - H_0 \frac{u^n_{j+1} - u^n_{j-1}}{\Delta x}
\\
\frac{u^{n+1}_j - u^n_j}{\Delta t} = -g \frac{\eta^n_{j+1} - \eta^n_{j-1}}{\Delta x}
Δ t η j n − η j n − 1 = − H 0 Δ x u j + 1 n − u j − 1 n Δ t u j n + 1 − u j n = − g Δ x η j + 1 n − η j − 1 n
courant number c = g H 0 Δ t Δ x c = \sqrt{gH_0}\frac{\Delta t}{\Delta x} c = g H 0 Δ x Δ t
stable for c ≤ 2 c\le 2 c ≤ 2
**C-Grid(Staggered) **
η j n − η j n − 1 Δ t = − H 0 u j + 1 2 n − u j − 1 n Δ x u j + 1 2 n + 1 − u j + 1 2 n Δ t = − g η j + 1 n − η j − 1 n Δ x \frac{\eta_j^n- \eta^{n-1}_j}{\Delta t} = - H_0\frac{u^n_{j+\frac{1}{2}}-u^n_{j-1}}{\Delta x}
\\
\frac{u^{n+1}_{j+\frac{1}{2}} - u^n_{j+\frac{1}{2}}}{\Delta t} = - g \frac{\eta^n_{j+1} - \eta^n_{j-1}}{\Delta x}
Δ t η j n − η j n − 1 = − H 0 Δ x u j + 2 1 n − u j − 1 n Δ t u j + 2 1 n + 1 − u j + 2 1 n = − g Δ x η j + 1 n − η j − 1 n
stable for c ≤ 1 c\le 1 c ≤ 1
7. Time Integration
error
truncation error : taylor expansion in euler method, O ( Δ t 2 ) \mathcal O(\Delta t^2) O ( Δ t 2 ) for each step, O ( Δ t ) \mathcal O(\Delta t) O ( Δ t ) in total
round-off error : charcteristic number η \eta η , the smallest incremental, in euler method O ( η ) \mathcal O(\eta) O ( η ) for each step, O ( η Δ t ) \mathcal O(\frac{\eta}{\Delta t}) O ( Δ t η ) in total
total error : for euler method, ε ∼ η Δ t + Δ t \varepsilon \sim \frac{\eta}{\Delta t} + \Delta t ε ∼ Δ t η + Δ t
one step method
for ordinary differential equatiion (ODE)
∂ ϕ ∂ t = f ( t , ϕ ( t ) ) ϕ ( t 0 ) = ϕ 0 \frac{\partial \phi}{\partial t} = f(t, \phi(t))\quad \phi(t_0) = \phi^0
∂ t ∂ ϕ = f ( t , ϕ ( t )) ϕ ( t 0 ) = ϕ 0
ϕ n + 1 − ϕ n Δ t = γ f ( t + Δ t , ϕ n + 1 ) + ( 1 − γ ) f ( t , ϕ n ) \frac{\phi^{n+1}-\phi ^n}{\Delta t} = \gamma f(t+\Delta t, \phi^{n+1}) + (1-\gamma)f(t,\phi^n)
Δ t ϕ n + 1 − ϕ n = γ f ( t + Δ t , ϕ n + 1 ) + ( 1 − γ ) f ( t , ϕ n )
multi step method
( 1 + β ) ϕ n + 1 − ( 1 + 2 β ) ϕ n + β ϕ n − 1 Δ t = γ f ( t + Δ t , ϕ n + 1 ) + ( 1 − γ + α ) f ( t , ϕ n ) − α f ( t − Δ t , ϕ n − 1 ) \frac{(1+\beta)\phi^{n+1}-(1+2\beta)\phi^n + \beta\phi^{n-1}}{\Delta t} =
\gamma f(t+\Delta t, \phi^{n+1}) + (1-\gamma + \alpha) f(t, \phi^n) - \alpha f(t-\Delta t, \phi^{n-1})
Δ t ( 1 + β ) ϕ n + 1 − ( 1 + 2 β ) ϕ n + β ϕ n − 1 = γ f ( t + Δ t , ϕ n + 1 ) + ( 1 − γ + α ) f ( t , ϕ n ) − α f ( t − Δ t , ϕ n − 1 )
name
α \alpha α
β \beta β
γ \gamma γ
order
explicit euler
0
0
0
1
implicit euer
0
0
1
1
leapfrog
0
− 1 2 -\frac{1}{2} − 2 1
0
2
Runge-Kutta method
k 1 = Δ t f ( t n , ϕ n ) k 2 = Δ t f ( t n + 1 2 , ϕ n + k 1 2 ) k 3 = Δ t f ( t n + 1 2 , ϕ n + k 2 2 ) k 4 = Δ t f ( t n + 1 , ϕ n + k 3 ) ϕ n + 1 = ϕ n + k 1 6 + k 2 3 + k 3 3 + k 4 6 + O ( Δ t 5 ) \begin{aligned}
k_1 &= \Delta tf(t_n, \phi^n) \\
k_2 &= \Delta t f(t_{n+\frac{1}{2}}, \phi^n+\frac{k_1}{2})\\
k_3 &= \Delta t f(t_{n+\frac{1}{2}}, \phi^n+\frac{k_2}{2})\\
k_4 &= \Delta t f(t_{n+1}, \phi^n+k_3)\\
\phi^{n+1} &= \phi^n + \frac{k_1}{6} + \frac{k_2}{3} + \frac{k_3}{3} + \frac{k_4}{6} + \mathcal O(\Delta t^5)
\end{aligned}
k 1 k 2 k 3 k 4 ϕ n + 1 = Δ t f ( t n , ϕ n ) = Δ t f ( t n + 2 1 , ϕ n + 2 k 1 ) = Δ t f ( t n + 2 1 , ϕ n + 2 k 2 ) = Δ t f ( t n + 1 , ϕ n + k 3 ) = ϕ n + 6 k 1 + 3 k 2 + 3 k 3 + 6 k 4 + O ( Δ t 5 )
truncation error O ( Δ t 4 ) \mathcal O(\Delta t^4) O ( Δ t 4 )
round-off error O ( η Δ t ) \mathcal O(\frac{\eta}{\Delta t}) O ( Δ t η )
minimum error is smaller with bigger Δ t \Delta t Δ t compared to euler
Conservation
volume ↔ \leftrightarrow ↔ energy
left: conserve
middle: loss energy
right: gain energy
Symplectic
for Hamiltonian [ p , q ] [p, q] [ p , q ] and p = q ˙ p = \dot q p = q ˙
[ q ( τ ) p ( τ ) ] = A [ q ( 0 ) p ( 0 ) ] \left[\begin{matrix}
q(\tau)\\
p(\tau)
\end{matrix}\right]
= A
\left[\begin{matrix}
q(0)\\
p(0)
\end{matrix}\right]
[ q ( τ ) p ( τ ) ] = A [ q ( 0 ) p ( 0 ) ]
for energy conservation ∣ A ∣ = 1 |A| = 1 ∣ A ∣ = 1
8. Maxwell Equation
Valsov-Maxwell-Bolzmann equation
computational plasma
∂ f s ∂ t + ∇ x ⋅ ( v f s ) + ∇ v ⋅ ( ( E + v × B ) q s f s m s ) = ( ∂ f s ∂ t ) c ∇ ⋅ E = ρ ε 0 ∇ ⋅ H = 0 ∇ × E + ∂ H ∂ t = 0 ∇ × H − μ 0 ε 0 ∂ E ∂ t = μ 0 ∑ s q s ∫ − ∞ ∞ v f s d v 3 \begin{aligned}
\frac{\partial f_s}{\partial t} + \nabla_x \cdot(\boldsymbol vf_s) + \nabla_{\boldsymbol v}\cdot ((\boldsymbol E + \boldsymbol v \times \boldsymbol B)\frac{q_sf_s}{m_s}) &= (\frac{\partial f_s}{\partial t})_c \\
\nabla \cdot \boldsymbol E &= \frac{\rho}{\varepsilon_0}\\
\nabla \cdot \boldsymbol H &= 0 \\
\nabla \times \boldsymbol E + \frac{\partial \boldsymbol H}{\partial t} &= 0\\
\nabla \times \boldsymbol H - \mu_0 \varepsilon_0 \frac{\partial \boldsymbol E}{\partial t} &= \mu_0\sum_s q_s \int_{-\infin}^{\infin} \boldsymbol vf_s d\boldsymbol v^3
\end{aligned}
∂ t ∂ f s + ∇ x ⋅ ( v f s ) + ∇ v ⋅ (( E + v × B ) m s q s f s ) ∇ ⋅ E ∇ ⋅ H ∇ × E + ∂ t ∂ H ∇ × H − μ 0 ε 0 ∂ t ∂ E = ( ∂ t ∂ f s ) c = ε 0 ρ = 0 = 0 = μ 0 s ∑ q s ∫ − ∞ ∞ v f s d v 3
where f ( x , v , t ) ∈ R 3 × 3 × f(x, \boldsymbol v, t)\in \mathbb R^{3\times 3\times} f ( x , v , t ) ∈ R 3 × 3 × is the distribution
D = ε 0 ε r E B = μ 0 μ r H \begin{aligned}
\boldsymbol D &= \varepsilon_0\varepsilon_r \boldsymbol E\\
\boldsymbol B &= \mu_0 \mu_r \boldsymbol H
\end{aligned}
D B = ε 0 ε r E = μ 0 μ r H
Particle In Cell Method (PIC)
d x d t = v d v d t = q m ( E ( x , t ) , v × B ( x , t ) ) \begin{aligned}
\frac{d\boldsymbol x}{dt} &= \boldsymbol v\\
\frac{d\boldsymbol v}{dt} &= \frac{q}{m}(\boldsymbol E(\boldsymbol x,t), \boldsymbol v\times \boldsymbol B(\boldsymbol x, t))
\end{aligned}
d t d x d t d v = v = m q ( E ( x , t ) , v × B ( x , t ))
Boris algorithm
v − = v n − 1 2 + q m E n Δ t 2 v + − v − Δ t = q 2 m ( v + + v − ) × B n v n + 1 2 = v + + q m E n Δ t 2 \begin{aligned}
\boldsymbol v^- &= \boldsymbol v^{n-\frac{1}{2}} + \frac{q}{m} \boldsymbol E^n\frac{\Delta t}{2} \\
\frac{\boldsymbol v^+ - \boldsymbol v^-}{\Delta t} &= \frac{q}{2m}(\boldsymbol v^+ + \boldsymbol v^-) \times \boldsymbol B^n\\
\boldsymbol v^{n+\frac{1}{2}} &= \boldsymbol v^+ + \frac{q}{m}\boldsymbol E^n\frac{\Delta t}{2}
\end{aligned}
v − Δ t v + − v − v n + 2 1 = v n − 2 1 + m q E n 2 Δ t = 2 m q ( v + + v − ) × B n = v + + m q E n 2 Δ t
without E \boldsymbol E E
t ≈ q B Δ t 2 m s = 2 t 1 + ∣ t ∣ 2 v ′ = v − + v − × t v + = v − + v ′ × s \begin{aligned}
\boldsymbol t &\approx \frac{q\boldsymbol B \Delta t}{2m}\\
\boldsymbol s &= \frac{2\boldsymbol t}{1 + |\boldsymbol t|^2}\\
\boldsymbol v' &= \boldsymbol v^- + \boldsymbol v^- \times \boldsymbol t\\
\boldsymbol v^+ &= \boldsymbol v^- + \boldsymbol v' \times \boldsymbol s
\end{aligned}
t s v ′ v + ≈ 2 m q B Δ t = 1 + ∣ t ∣ 2 2 t = v − + v − × t = v − + v ′ × s
Yee Cell
∂ H ∂ t = − 1 μ 0 ∇ × E ∂ E ∂ t = 1 ε 0 ∇ × H \begin{aligned}
\frac{\partial \boldsymbol H}{\partial t} & = -\frac{1}{\mu_0} \nabla \times \boldsymbol E\\
\frac{\partial \boldsymbol E}{\partial t} &= \frac{1}{\varepsilon_0} \nabla \times \boldsymbol H
\end{aligned}
∂ t ∂ H ∂ t ∂ E = − μ 0 1 ∇ × E = ε 0 1 ∇ × H
∂ H x ∂ t = − 1 μ 0 ( ∂ E y ∂ z − ∂ E z ∂ y ) ∂ E x ∂ t = 1 ε 0 ( ∂ E y ∂ z − ∂ E z ∂ y ) ∂ H y ∂ t = − 1 μ 0 ( ∂ E z ∂ x − ∂ E x ∂ z ) ∂ E y ∂ t = 1 ε 0 ( ∂ E z ∂ x − ∂ E x ∂ z ) ∂ H z ∂ t = − 1 μ 0 ( ∂ E x ∂ y − ∂ E y ∂ x ) ∂ E z ∂ t = 1 ε 0 ( ∂ E x ∂ y − ∂ E y ∂ x ) \begin{aligned}
\frac{\partial \boldsymbol H_x}{\partial t} &= \frac{-1}{\mu_0} \left(\frac{\partial \boldsymbol E_y}{\partial z} - \frac{\partial \boldsymbol E_z}{\partial y}\right)
&
\frac{\partial \boldsymbol E_x}{\partial t} &= \frac{1}{\varepsilon_0}\left(\frac{\partial \boldsymbol E_y}{\partial z} - \frac{\partial \boldsymbol E_z}{\partial y}\right)
\\
\frac{\partial \boldsymbol H_y}{\partial t} &= \frac{-1}{\mu_0}\left(\frac{\partial \boldsymbol E_z}{\partial x} -\frac{\partial \boldsymbol E_x}{\partial z}\right)
&
\frac{\partial \boldsymbol E_y}{\partial t} &=\frac{1}{\varepsilon_0}\left(\frac{\partial \boldsymbol E_z}{\partial x} - \frac{\partial \boldsymbol E_x}{\partial z}\right)
\\
\frac{\partial \boldsymbol H_z}{\partial t} &=\frac{-1}{\mu_0}\left(\frac{\partial \boldsymbol E_x}{\partial y} - \frac{\partial \boldsymbol E_y}{\partial x}\right)
&
\frac{\partial \boldsymbol E_z}{\partial t} & = \frac{1}{\varepsilon_0}\left(\frac{\partial \boldsymbol E_x}{\partial y}-\frac{\partial \boldsymbol E_y}{\partial x}\right)
\end{aligned}
∂ t ∂ H x ∂ t ∂ H y ∂ t ∂ H z = μ 0 − 1 ( ∂ z ∂ E y − ∂ y ∂ E z ) = μ 0 − 1 ( ∂ x ∂ E z − ∂ z ∂ E x ) = μ 0 − 1 ( ∂ y ∂ E x − ∂ x ∂ E y ) ∂ t ∂ E x ∂ t ∂ E y ∂ t ∂ E z = ε 0 1 ( ∂ z ∂ E y − ∂ y ∂ E z ) = ε 0 1 ( ∂ x ∂ E z − ∂ z ∂ E x ) = ε 0 1 ( ∂ y ∂ E x − ∂ x ∂ E y )
E x k n + 1 2 − E x k n − 1 2 Δ t = − 1 ε 0 H y k + 1 2 n − H y k − 1 2 n Δ z H y k + 1 2 n + 1 − H y k + 1 2 n Δ t = − 1 μ 0 E x k + 1 n + 1 2 − E x k n + 1 2 Δ z \frac{E_{x_k}^{n+\frac{1}{2}}-E_{x_k}^{n-\frac{1}{2}}}{\Delta t} = -\frac{1}{\varepsilon_0}\frac{H_{y_{k+\frac{1}{2}}}^n - H_{y_{k-\frac{1}{2}}}^n}{\Delta z}
\\
\frac{H_{y_{k+\frac{1}{2}}}^{n+1}-H_{y_{k+\frac{1}{2}}}^n}{\Delta t} = -\frac{1}{\mu_0}\frac{E_{x_{k+1}}^{n+\frac{1}{2}}-E_{x_k}^{n+\frac{1}{2}}}{\Delta z}
Δ t E x k n + 2 1 − E x k n − 2 1 = − ε 0 1 Δ z H y k + 2 1 n − H y k − 2 1 n Δ t H y k + 2 1 n + 1 − H y k + 2 1 n = − μ 0 1 Δ z E x k + 1 n + 2 1 − E x k n + 2 1
error minimized by E ~ x = ε 0 μ 0 E x \tilde E_{x} = \sqrt{\frac{\varepsilon_0}{\mu_0}}E_x E ~ x = μ 0 ε 0 E x
stability : Δ t Δ x = 1 d c \frac{\Delta t}{\Delta x} = \frac{1}{\sqrt d c} Δ x Δ t = d c 1
9. N-Body Problems
Particle in Cell Method (PIC)
− Δ ϕ = ρ F = − ∇ ϕ -\Delta \phi = \rho\\
F = -\nabla \phi
− Δ ϕ = ρ F = − ∇ ϕ
ρ \rho ρ is the mass density, ϕ \phi ϕ is the potential field
ϕ ( x ) = G ( x , x ′ ) ∗ ρ ( x ′ ) \phi(x) = G(x,x') * \rho(x')
ϕ ( x ) = G ( x , x ′ ) ∗ ρ ( x ′ )
generate initial condition f 0 , F 0 f_0, F^0 f 0 , F 0
for loop
force field interpolate from grid to particles
push particles ( x , v ) k n → ( x , v ) k n + 1 (x,v)^n_k\rightarrow (x,v)^{n+1}_k ( x , v ) k n → ( x , v ) k n + 1
density field interpolation to grid ( x , v ) k → ( ρ , J ) j (x,v)_k \rightarrow (\rho, J)_j ( x , v ) k → ( ρ , J ) j
force field calculation F k n → F k n + 1 F_k^n\rightarrow F_k^{n+1} F k n → F k n + 1 , using FFT
ϕ ( x ) = ∫ ρ ( x ′ ) G ( x , x ′ ) d x ′ = F − 1 ( F ( ρ ) ⋅ F ( G ) ) \phi(x) = \int \rho(x') G(x,x')dx' = \mathcal F^{-1}(\mathcal F(\rho) \cdot \mathcal F(G)) ϕ ( x ) = ∫ ρ ( x ′ ) G ( x , x ′ ) d x ′ = F − 1 ( F ( ρ ) ⋅ F ( G ))
Particle particle Particle Mesh(P3M)
G ( r ) = 1 − e r f ( α r ) r ⏟ G p p + e r f ( α r ) r ⏟ G p m G(r) = \underbrace{\frac{1-erf(\alpha r)}{r}}_{G_{pp}} + \underbrace{\frac{erf(\alpha r)}{r}}_{G_{pm}}
G ( r ) = G pp r 1 − er f ( α r ) + G p m r er f ( α r )
G p p G_{pp} G pp : use the n-body solver for short-range
G p m G_{pm} G p m : use particle-mesh solver for long-range