コード例 #1
0
ファイル: MOL2comparison.py プロジェクト: neharty/FDTDtests
from scipy.integrate import solve_ivp
from scipy.integrate import quad
import helper as h
import time
import sys

#for q in range(qnum):
t0 = time.time()
L = 1
numints = 1000
dx = float(L) / numints
print(int(L / dx))
xx = np.linspace(0, L, num=numints + 1)
N = len(xx)

Einit = h.initial(xx, L)
Hinit = h.initial(xx, L)

H00 = h.D0(xx, L)

a1 = 0.5 * np.ones(N - 1)

Dx = np.diag(a1, k=1) + np.diag(-a1, k=-1)
np.set_printoptions(precision=3, threshold=10)

Dx[0, 0] = -3 / 2
Dx[0, 1] = 2
Dx[0, 2] = -1 / 2

Dx[-1, -1] = 3 / 2
Dx[-1, -2] = -2
コード例 #2
0
ファイル: MOL-analytic_plt.py プロジェクト: neharty/FDTDtests
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import solve_ivp
from scipy.integrate import quad
import helper as h

L = 10
dx = 0.1
xx = np.linspace(0, L, num=(L / dx) + 1)
N = len(xx)

Einit = h.initial(xx)
#Einit = np.sin(np.pi*x/L)
Einit[0] = 0
Einit[-1] = 0

Hinit = h.initial(xx)
#Hinit = np.sin(np.pi*x/L)
Hinit[0] = Hinit[1]
Hinit[-1] = Hinit[-2]

initial = np.concatenate((Hinit, Einit))

A = np.diag([1 for b in range(N - 1)], k=1) + np.diag(
    [-1 for c in range(N - 1)], k=-1)

Hm = np.copy(A)

Hm[0, :] = 0
Hm[-1, :] = 0
コード例 #3
0
ファイル: yeeepsilon.py プロジェクト: neharty/FDTDtests
import numpy as np
import helper as h
#from scipy.integrate import solve_ivp

numints = 1000
L = 1.
dx = L / numints
x = np.linspace(0, L, num=numints + 1)
N = len(x)


def n(z):
    return 1 + z / L


Ea = h.initial(x, L)
#Ea[-1] = Ea[-2]
#Ea[0] = Ea[1]
#Ea[0] = Ea[-1]

Ea[0] = 0
Ea[-1] = 0

Ha = h.initial(x, L)
#Ha[-1] = Ha[-2]
#Ha[0] = Ha[1]
#Ha[0] = Ha[-1]

Ha[0] = (18. / 11) * Ha[1] - (9. / 11) * Ha[2] + (2. / 11) * Ha[3]
Ha[-1] = (18. / 11) * Ha[-2] - (9. / 11) * Ha[-3] + (2. / 11) * Ha[-4]
コード例 #4
0
    L = 1
    dx = L / qs[q]
    hs[q] = dx
    xx = np.linspace(0, L, num=qs[q] + 1)
    N = len(xx)

    H00 = h.D0(xx, L)

    dt = dx / 2
    s = dt / dx

    T = 2
    m = int(round(T / dt))

    Ha = np.zeros((N, m + 1))
    Ha[:, 0] = h.initial(xx, L)

    Ea = np.zeros((N, m + 1))
    Ea[:, 0] = h.initial(xx, L)
    Ea[0, 0] = 0
    Ea[-1, 0] = 0

    for j in range(1, m + 1):
        Ha[1:-1, j] = Ha[1:-1, j - 1] + s * (Ea[2:, j - 1] - Ea[1:-1, j - 1])
        Ha[0, j] = (4. / 3) * Ha[1, j] - (1. / 3) * Ha[2, j]
        Ha[-1, j] = (4. / 3) * Ha[-2, j] - (1. / 3) * Ha[-3, j]

        Ea[1:-1, j] = Ea[1:-1, j - 1] + s * (Ha[1:-1, j] - Ha[:-2, j])
        Ea[0, j] = 0
        Ea[-1, j] = 0
コード例 #5
0
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import solve_ivp
from scipy.integrate import quad
import helper as h

L = 50
L = float(L)
numints = 1000
dx = float(L) / numints
print(int(L / dx))
xx = np.linspace(0, L, num=numints + 1)
N = len(xx)

Einit = h.initial(xx, L)
Einit[0] = 0
Einit[-1] = 0

Hinit = -h.initial(xx, L)
Hinit[0] = 0
Hinit[-1] = 0

a1 = np.zeros(N - 3)

initial = np.concatenate((Hinit, Einit))
A = np.diag(a1 + (1.0 / 2), k=1) + np.diag(a1 - (1.0 / 2), k=-1)

np.set_printoptions(precision=3, threshold=100)
Hm = np.copy(A)
'''
コード例 #6
0
ファイル: MOL2yee.py プロジェクト: neharty/FDTDtests
from scipy.integrate import quad
import helper as h
import time
import sys

#for q in range(qnum):
t0 = time.time()
L = 10
numints = 500
dx = float(L) / numints
#dx = 0.1
print(int(L / dx))
xx = np.linspace(0, L, num=numints + 1)
N = len(xx)

Einit = h.initial(xx)
Einit[0] = 0
Einit[-1] = 0

Hinit = h.initial(xx)
#Hinit = np.zeros(N)
Hinit[0] = 0
Hinit[-1] = 0

H00 = h.D0(xx, L)

a1 = np.zeros(N - 1)

initial = np.concatenate((Hinit, Einit))
A = np.diag(a1 + (1.0 / 2), k=1) + np.diag(a1 - (1.0 / 2), k=-1)
コード例 #7
0
ファイル: yeetest.py プロジェクト: neharty/FDTDtests
from matplotlib import pyplot as plt
import numpy as np
import helper as h
#from scipy.integrate import solve_ivp

numints = 1000
L = 10.
dx = L / numints
x = np.linspace(0, L, num=numints + 1)
N = len(x)

Ea = h.initial(x)
Ea[0] = 0
Ea[-1] = 0

Ha = h.initial(x)
Ha[0] = 0
Ha[-1] = 0

T = 10
dt = dx / 2

s = dt / (2 * dx)

m = int(round(T / dt))

Herr = np.zeros(N)
Eerr = np.zeros(N)

H00 = h.D0(L)
コード例 #8
0
ファイル: yeecomparison.py プロジェクト: neharty/FDTDtests
from matplotlib import pyplot as plt
import numpy as np
from scipy.integrate import quad
import helper as h

L = 10.0
numints = 500
dx = L / numints
xx = np.linspace(0, L, num=numints + 1)
N = len(xx)

T = 100

H00 = h.D0(xx, L)

Eyee = h.initial(xx)
Eyee[0] = 0
Eyee[-1] = 0

Hyee = h.initial(xx)
Hyee[0] = 0
Hyee[-1] = 0

dt = dx / 2

s = dt / (2 * dx)

m = int(round(T / dt))
Herr = np.zeros(m)
Eerr = np.zeros(m)
コード例 #9
0
    #etmp = Ea[0]
    #Ea[0] = Ea[-1]
    #Ea[-1] = etmp

    Ea[0] = 0
    Ea[-1] = 0

    t = (j + 1) * dt
    if (2 * np.pi / T * t <= np.pi):
        Ea[int((N - 1) / 2)] = np.sin(2 * np.pi / T * t)

    #if(t%(3*L)==0):
    if (t == int(t)):
        print(
            str(np.max(np.abs(Ea - h.initial(x, L)))) + '\t' +
            str(np.max(np.abs(Ha - h.initial(x, L)))))
        ax11.plot(x, Ea, label='t=' + str(t))
        ax11.set_ylabel('E_z')
        #ax11.set_ylim([-1,1])

        ax12.plot(x, Ha)
        ax12.set_ylabel('H_y')
        #ax12.set_ylim([-1, 1])
        '''
        H = H00 + np.zeros(N)
        E = np.zeros(N)
        for k in range(1,151):
            H = H + h.Hn(x, t, k, L)
            E = E + h.En(x, t, k, L)
        Herr = np.abs(Ha - H)