c richiesta

F

fatma1000

Guest
questo è un codice MATLAB per upml
Ho bisogno di convertirlo in c
d = 8;% profondità della regione di PML (d in numero di cellule)
NXA% = 100 x NYA = 50 di dominio originale computazionale
NXA = 100; NYA = 50;
NX = NXA 2 * d,% Y Dimension
NY NYA = 2 * d;% x dimensione
EY (1: NX, 1: NY) = 0;% componente Ey
DY (1: NX, 1: NY) = 0;% componente Dy
DY1 (1: NX, 1: NY) = 0;% volta precedente passo
EX (1: NX, 1: NY) = 0; componente% Ex
DX (1: NX, 1: NY) = 0;% Dx componente
DX1 (1: NX, 1: NY) = 0;% volta precedente passo
HZ (NX, NY) = 0; componente% Hz
BZ (NX, NY) = 0;% dei componenti Bz
BZ1 (NX, NY) = 0;% volta precedente passoè = NX / 2; js = NY / 2;cc = 2.99792458e8;
m0 = 4,0 * pi * 1.0e-7;% permability di spazio libero
e0 = 1.0 / (cc * cc * m0);% permittività dello spazio libero
dx = 1.5E-2; dy = 1.5E-2;% dimensione della cella
dt = dx / (2.0 * cc); passo temporale size%

% C = 1/sqrt (m0 * e0);% velocità della luce
N = 700;% il numero di passi il tempo
H (N) = 0;% funzione di eccitazione
W (N) = 0;% watching punto
Matrici% coefficiente
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;

% source
per n = 1: N
se n * dt <1E-9
H (n) = (1 / 320) * (10-15 * cos (2 * pi * 1E9 * dt * N) 6 * cos (4 * pi * 1E9 * dt * N) ...
-cos (6 * pi * 1E9 * dt * N));
fine
fine
caculation% per coefficints in PML
m = 2; variazione% (fine)
1E-R = 5; reflecion% coefficiente di

sm =- (sqrt (e0/m0 ))*(( m 1) * log (R) / (2 * D * dx));

per i = 1: d
sigma (i) = sm * ((i-1) / d) ^ m;
sigmas (i) = sm * ((i-0.5) / d) ^ m;
fine
%
PEC% dopo strato PML
EX (1: NX, NY) = 0;% PEC
EX (1: NX, 1) = 0;% PEC
EY (1,1: NY) = 0;% PEC
EY (NX, 1: NY) = 0;% PECper ii = 1: NX
per 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);
fine
if (ii> NX-d)
sigma_x (ii, jj) = sigma (II-NX d);
sigmas_x (ii, jj) = sigmas (II-NX d);
fineif (jj <= d)
sigma_y (ii, jj) = sigma (d jj-1);
sigmas_y (ii, jj) = sigmas (d jj-1);
fine
if (jj> NY-d)
sigma_y (ii, jj) = sigma (jj-NY d);
sigmas_y (ii, jj) = sigmas (jj-NY d);
fine
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);

fine
fineper n = 1: N

DX1 = DX;
DY1 = DY;
per ii = 1: NX
per 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;
altro
DX (ii, jj) = 0;
fine
fine
fineper ii = 1: NX
per 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;
altro
DY (ii, jj) = 0;
fine

fine
fine

per ii = 1: NX
per jj = 1: NY
EX (ii, jj) = caex (ii, jj) * EX (ii, jj) CBEX (ii, jj) * DX (ii, jj)-ccex (ii, jj) * DX1 (ii, jj);

fine
fine
per ii = 1: NX
per jj = 1: NY
EY (ii, jj) = caey (ii, jj) * EY (ii, jj) cbey (ii, jj) * DY (ii, jj)-ccey (ii, jj) * DY1 (ii, jj);
fine
fineBZ1 = BZ;
per ii = 1: NX-1
per 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);
fine
fine

per ii = 1: NX-1
per 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);
fine
fine
HZ (è, js) = HZ (è, JS) H (n);
% W (n) = HZ (è, d 2);
W (n) = HZ (è, d 2);

fine
n = 1: N;
n (trama, W (n))

 

Welcome to EDABoard.com

Sponsor

Back
Top