F
fatma1000
Guest
to je matlab koda za upml
rabim spremeniti to v c
d = 8;% globine PML regiji (d v številu celic)
NXA% = 100 x = 50 NYA original računalniških domene
NXA = 100; NYA = 50;
NX NXA = 2 * d;% y razsežnosti
NY NYA = 2 * d;% x dimenzija
EY (1: NX, 1: NY) = 0;% Ey komponente
DY (1: NX, 1: NY) = 0;% Dy komponente
DY1 (1: NX, 1: NY) = 0;% prejšnjega časa korak
EX (1: NX, 1: NY) = 0;% Ex komponente
DX (1: NX, 1: NY) = 0;% Dx komponente
DX1 (1: NX, 1: NY) = 0;% prejšnjega časa korak
HZ (NX, NY) = 0;% Hz komponente
BZ (NX, NY) = 0;% BZ komponente
BZ1 (NX, NY) = 0;% prejšnjega časa korakje NX = / 2; js = NY / 2;cc = 2.99792458e8;
m0 = 4,0 * pi * 1.0e-7;% permability prostega prostora
E0 = 1,0 / (cc cc * * m0);% dielektričnost prostega prostora
dx = 1.5E-2; dy = 1.5E-2;% celic velikosti
dt = dx / (2,0 * cc);% časa korak velikost
% c = 1/sqrt (m0 * E0);% hitrosti svetlobe
N = 700;% več časa korakov
H (N) = 0;% vzbujanje funkcijo
W (N) = 0;% gledanjem točke
% Koeficient matrike
cadx (1: NX, 1: NY) = 1;
cbdx (1: NX, 1: NY) = dt;
cady (1: NX, 1: NY) = 1;
cbdy (1: NX, 1: NY) = dt;
caex (1: NX, 1: NY) = 1;
cbex (1: NX, 1: NY) = 1/e0;
ccex (1: NX, 1: NY) = 1/e0;
caey (1: NX, 1: NY) = 1;
cbey (1: NX, 1: NY) = 1/e0;
ccey (1: NX, 1: NY) = 1/e0;
cabz (1: NX, 1: NY) = 1;
cbbz (1: NX, 1: NY) = dt;
cahz (1: NX, 1: NY) = 1;
cbhz (1: NX, 1: NY) = 1/m0;
cchz (1: NX, 1: NY) = 1/m0;
sigma_x (1: NX, 1: NY) = 0;
sigma_y (1: NX, 1: NY) = 0;
% vir
za n = 1: N
če je n * dt <1E-9
H
= (1 / 320) * (10-15 * cos (2 * pi * 1E9 * dt * n) 6 * cos (4 * pi * 1E9 * dt * n) ...-cos(6*pi*1E9*dt*n)); konec
konec
% caculation za coefficints v PML
m = 2, spremembe% (Da)
R = 1E-5;% reflecion koeficient
sm =- (sqrt (e0/m0 ))*(( m 1) * log (R) / (2 * d * dx));
za i = 1: d
sigma (i) = sm * ((i-1) / d) ^ m;
sigmas (i) = sm * ((i-0,5) / d) ^ m;
konec
%
% PEC po layer PML
EX (1: NX, NY) = 0;% PEC
EX (1: NX, 1) = 0;% PEC
EY (1,1: NY) = 0;% PEC
EY (NX, 1: NY) = 0;% PECza ii = 1: NX
za jj = 1: NY
sigma_x (ii, jj) = 0;
sigma_y (ii, jj) = 0;
sigmas_x (ii, jj) = 0;
sigmas_y (ii, jj) = 0;
if (ii <= d)
sigma_x (ii, jj) = sigma (d ii-1);
sigmas_x (ii, jj) = sigmas (d ii-1);
konec
if (ii> NX-d)
sigma_x (ii, jj) = sigma (ii-NX d);
sigmas_x (ii, jj) = sigmas (ii-NX d);
konecif (jj <= d)
sigma_y (ii, jj) = sigma (d-jj 1);
sigmas_y (ii, jj) = sigmas (d-jj 1);
konec
if (jj> NY-d)
sigma_y (ii, jj) = sigma (jj-NY d);
sigmas_y (ii, jj) = sigmas (jj-NY d);
konec
cbex (ii, jj) = (2 * E0 sigma_x (ii, jj) * dt) / (2 * E0 * E0);
ccex (ii, jj) = (2 * E0-sigma_x (ii, jj) * dt) / (2 * E0 * E0);
caey (ii, jj) = (2 * E0-sigma_x (ii, jj) * dt) / (2 * E0 sigma_x (ii, jj) * dt);
cbey (ii, jj) = (2 * E0 sigma_y (ii, jj) * dt) / (2 * E0 * E0 sigma_x (ii, jj) * E0 * dt);
ccey (ii, jj) = (2 * E0-sigma_y (ii, jj) * dt) / (2 * E0 * E0 sigma_x (ii, jj) * E0 * dt);
cadx (ii, jj) = (2 * E0-sigma_y (ii, jj) * dt) / (2 * E0 sigma_y (ii, jj) * dt);
cbdx (ii, jj) = 2 * E0 * dt / (2 * E0 sigma_y (ii, jj) * dt);
cahz (ii, jj) = (2 * E0-sigmas_y (ii, jj) * dt) / (2 * E0 sigma_y (ii, jj) * dt);
cbhz (ii, jj) = (2 * E0) / (2 * E0 sigmas_y (ii, jj) * dt) / m0;
cchz (ii, jj) = (2 * E0) / (2 * E0 sigmas_y (ii, jj) * dt) / m0;
cabz (ii, jj) = (2 * E0-sigmas_x (ii, jj) * dt) / (2 * E0 sigmas_x (ii, jj) * dt);
cbbz (ii, jj) = (2 * E0 * dt) / (2 * E0 sigmas_x (ii, jj) * dt);
konec
konecza n = 1: N
DX1 = DX;
DY1 = DY;
za ii = 1: NX
za jj = 1: NY
if (jj> 1)
DX (ii, jj) = cadx (ii, jj) * DX (ii, jj) cbdx (ii, jj) * (HZ (ii, jj)-HZ (ii, jj-1)) / dy;
še
DX (ii, jj) = 0;
konec
konec
konecza ii = 1: NX
za jj = 1: NY
if (ii> 1)
DY (ii, jj) = cady (ii, jj) * DY (ii, jj)-cbdy (ii, jj) * (HZ (ii, jj)-HZ (ii-1, jj)) / dx;
še
DY (ii, jj) = 0;
konec
konec
konec
za ii = 1: NX
za jj = 1: NY
EX (ii, jj) = caex (ii, jj) * EX (ii, jj) cbex (ii, jj) * DX (ii, jj)-ccex (ii, jj) * DX1 (ii, jj);
konec
konec
za ii = 1: NX
za jj = 1: NY
EY (ii, jj) = caey (ii, jj) * EY (ii, jj) cbey (ii, jj) * DY (ii, jj)-ccey (ii, jj) * DY1 (ii, jj);
konec
konecBZ1 = BZ;
za ii = 1: NX-1
za jj = 1: NY-1
BZ (ii, jj) = cabz (ii, jj) * BZ (ii, jj)-cbbz (ii, jj) * ((EY (ii 1, JJ)-EY (ii, jj)) / dx-( EX (ii, jj 1)-EX (ii, jj)) / dy);
konec
konec
za ii = 1: NX-1
za jj = 1: NY-1
HZ (ii, jj) = cahz (ii, jj) * HZ (ii, jj) cbhz (ii, jj) * BZ (ii, jj)-cchz (ii, jj) * BZ1 (ii, jj);
konec
konec
HZ (je, js) = HZ (je, js) H
;
% W
= HZ (je, d 2);
W
= HZ (je, d 2);
konec
n = 1: N;
zemljišče (n, W
)
rabim spremeniti to v c
d = 8;% globine PML regiji (d v številu celic)
NXA% = 100 x = 50 NYA original računalniških domene
NXA = 100; NYA = 50;
NX NXA = 2 * d;% y razsežnosti
NY NYA = 2 * d;% x dimenzija
EY (1: NX, 1: NY) = 0;% Ey komponente
DY (1: NX, 1: NY) = 0;% Dy komponente
DY1 (1: NX, 1: NY) = 0;% prejšnjega časa korak
EX (1: NX, 1: NY) = 0;% Ex komponente
DX (1: NX, 1: NY) = 0;% Dx komponente
DX1 (1: NX, 1: NY) = 0;% prejšnjega časa korak
HZ (NX, NY) = 0;% Hz komponente
BZ (NX, NY) = 0;% BZ komponente
BZ1 (NX, NY) = 0;% prejšnjega časa korakje NX = / 2; js = NY / 2;cc = 2.99792458e8;
m0 = 4,0 * pi * 1.0e-7;% permability prostega prostora
E0 = 1,0 / (cc cc * * m0);% dielektričnost prostega prostora
dx = 1.5E-2; dy = 1.5E-2;% celic velikosti
dt = dx / (2,0 * cc);% časa korak velikost
% c = 1/sqrt (m0 * E0);% hitrosti svetlobe
N = 700;% več časa korakov
H (N) = 0;% vzbujanje funkcijo
W (N) = 0;% gledanjem točke
% Koeficient matrike
cadx (1: NX, 1: NY) = 1;
cbdx (1: NX, 1: NY) = dt;
cady (1: NX, 1: NY) = 1;
cbdy (1: NX, 1: NY) = dt;
caex (1: NX, 1: NY) = 1;
cbex (1: NX, 1: NY) = 1/e0;
ccex (1: NX, 1: NY) = 1/e0;
caey (1: NX, 1: NY) = 1;
cbey (1: NX, 1: NY) = 1/e0;
ccey (1: NX, 1: NY) = 1/e0;
cabz (1: NX, 1: NY) = 1;
cbbz (1: NX, 1: NY) = dt;
cahz (1: NX, 1: NY) = 1;
cbhz (1: NX, 1: NY) = 1/m0;
cchz (1: NX, 1: NY) = 1/m0;
sigma_x (1: NX, 1: NY) = 0;
sigma_y (1: NX, 1: NY) = 0;
% vir
za n = 1: N
če je n * dt <1E-9
H
konec
% caculation za coefficints v PML
m = 2, spremembe% (Da)
R = 1E-5;% reflecion koeficient
sm =- (sqrt (e0/m0 ))*(( m 1) * log (R) / (2 * d * dx));
za i = 1: d
sigma (i) = sm * ((i-1) / d) ^ m;
sigmas (i) = sm * ((i-0,5) / d) ^ m;
konec
%
% PEC po layer PML
EX (1: NX, NY) = 0;% PEC
EX (1: NX, 1) = 0;% PEC
EY (1,1: NY) = 0;% PEC
EY (NX, 1: NY) = 0;% PECza ii = 1: NX
za jj = 1: NY
sigma_x (ii, jj) = 0;
sigma_y (ii, jj) = 0;
sigmas_x (ii, jj) = 0;
sigmas_y (ii, jj) = 0;
if (ii <= d)
sigma_x (ii, jj) = sigma (d ii-1);
sigmas_x (ii, jj) = sigmas (d ii-1);
konec
if (ii> NX-d)
sigma_x (ii, jj) = sigma (ii-NX d);
sigmas_x (ii, jj) = sigmas (ii-NX d);
konecif (jj <= d)
sigma_y (ii, jj) = sigma (d-jj 1);
sigmas_y (ii, jj) = sigmas (d-jj 1);
konec
if (jj> NY-d)
sigma_y (ii, jj) = sigma (jj-NY d);
sigmas_y (ii, jj) = sigmas (jj-NY d);
konec
cbex (ii, jj) = (2 * E0 sigma_x (ii, jj) * dt) / (2 * E0 * E0);
ccex (ii, jj) = (2 * E0-sigma_x (ii, jj) * dt) / (2 * E0 * E0);
caey (ii, jj) = (2 * E0-sigma_x (ii, jj) * dt) / (2 * E0 sigma_x (ii, jj) * dt);
cbey (ii, jj) = (2 * E0 sigma_y (ii, jj) * dt) / (2 * E0 * E0 sigma_x (ii, jj) * E0 * dt);
ccey (ii, jj) = (2 * E0-sigma_y (ii, jj) * dt) / (2 * E0 * E0 sigma_x (ii, jj) * E0 * dt);
cadx (ii, jj) = (2 * E0-sigma_y (ii, jj) * dt) / (2 * E0 sigma_y (ii, jj) * dt);
cbdx (ii, jj) = 2 * E0 * dt / (2 * E0 sigma_y (ii, jj) * dt);
cahz (ii, jj) = (2 * E0-sigmas_y (ii, jj) * dt) / (2 * E0 sigma_y (ii, jj) * dt);
cbhz (ii, jj) = (2 * E0) / (2 * E0 sigmas_y (ii, jj) * dt) / m0;
cchz (ii, jj) = (2 * E0) / (2 * E0 sigmas_y (ii, jj) * dt) / m0;
cabz (ii, jj) = (2 * E0-sigmas_x (ii, jj) * dt) / (2 * E0 sigmas_x (ii, jj) * dt);
cbbz (ii, jj) = (2 * E0 * dt) / (2 * E0 sigmas_x (ii, jj) * dt);
konec
konecza n = 1: N
DX1 = DX;
DY1 = DY;
za ii = 1: NX
za jj = 1: NY
if (jj> 1)
DX (ii, jj) = cadx (ii, jj) * DX (ii, jj) cbdx (ii, jj) * (HZ (ii, jj)-HZ (ii, jj-1)) / dy;
še
DX (ii, jj) = 0;
konec
konec
konecza ii = 1: NX
za jj = 1: NY
if (ii> 1)
DY (ii, jj) = cady (ii, jj) * DY (ii, jj)-cbdy (ii, jj) * (HZ (ii, jj)-HZ (ii-1, jj)) / dx;
še
DY (ii, jj) = 0;
konec
konec
konec
za ii = 1: NX
za jj = 1: NY
EX (ii, jj) = caex (ii, jj) * EX (ii, jj) cbex (ii, jj) * DX (ii, jj)-ccex (ii, jj) * DX1 (ii, jj);
konec
konec
za ii = 1: NX
za jj = 1: NY
EY (ii, jj) = caey (ii, jj) * EY (ii, jj) cbey (ii, jj) * DY (ii, jj)-ccey (ii, jj) * DY1 (ii, jj);
konec
konecBZ1 = BZ;
za ii = 1: NX-1
za jj = 1: NY-1
BZ (ii, jj) = cabz (ii, jj) * BZ (ii, jj)-cbbz (ii, jj) * ((EY (ii 1, JJ)-EY (ii, jj)) / dx-( EX (ii, jj 1)-EX (ii, jj)) / dy);
konec
konec
za ii = 1: NX-1
za jj = 1: NY-1
HZ (ii, jj) = cahz (ii, jj) * HZ (ii, jj) cbhz (ii, jj) * BZ (ii, jj)-cchz (ii, jj) * BZ1 (ii, jj);
konec
konec
HZ (je, js) = HZ (je, js) H
% W
W
konec
n = 1: N;
zemljišče (n, W