Klausimas apie Sullivan knyga 2d PDL

S

sixfu

Guest
Aš mokymosi FDTD per Sullivan knyga --- Elektromagnetinio Modeliavimas naudojant FDTD metodas, ir aš negaliu gauti tinkamą rezultatą iš kodas nurodytas knygos fd2d_3.2.c.Aš atsisiųsti šį kodą savo svetainėje, ji neveikia per.Ar bet kuri įstaiga man padėti skaičių it out!

Thanks a lot!

Žemiau kodą iš knygos:

************************************************** *****

/ * Fd2d_3.2.c.2D TM programa su PDL * /
#
Include <math.h>
#
Include <stdlib.h>
#
Include <stdio.h>

# define IE 140
# define JE 140

main ()
(
flotacinio ga [IE] [V], dz [IE] [V] Ez [IE] [V] Gu [IE] [V], he [IE] [V];
int l, n, i, j, ic, jc, nsteps, npml;
flotacinio ddx, dt, T, epsz, pi, epsilon, sigma, EAF;
flotacinio Xn, xxn, xnum, Xd, curl_e;
flotacinio t0, platinti, impulso;
flotacinio gi2 [IE], gi3 [IE];
flotacinio gj2 [JE], GJ3 [IE];
flotacinio fi1 [IE], fi2 [IE], fi3 [JE];
flotacinio fj1 [JE], fj2 [JE], fj3 [JE];
flotacinio ihx [IE] [V], ihy [IE] [V];
FILE * fp, * fopen ();

ic = IE/2-20;
jc = JE/2-20;
ddx = ,01 / * Ląstelių dydis * /
dt = ddx/6e8 / * Laikas veiksmus * /
epsz = 8.8e-12;
Pi = 3,14159;

/ * Initialize į matricas * /
for (j = 0; j <JE j ) (
printf ( "% 2d", j);
for (i = 0; i <IE; i ) (
dz [j] = 0.0;
hx [j] = 0.0;
pr [j] = 0.0;
ihx [j] = 0.0;
ihy [j] = 0.0;
ga [j] = 1.0;
printf ( "% 5.2f", ga [j]);
)
printf ( "\ n");
)

/ * Apskaičiuokite PDL parametrus * /

for (i = 0; i <IE; i ) (
gi2 = 1.0;
gi3 = 1.0;
fi1 = 0.0;
fi2 = 1.0;
fi3 = 1.0;
)
for (j = 0; j <IE j ) (
gj2 [j] = 1.0;
GJ3 [j] = 1.0;
fj1 [j] = 0.0;
fj2 [j] = 1.0;
fj3 [j] = 1.0;
)

printf ( "skaičius PDL ląstelės ->");
scanf ( "% d", & npml);

for (i = 0; i <= npml; i ) (
xnum = npml - i;
Xd = npml;
xxn = xnum / Xd;
Xn = 0,25 * pow (xxn, 3,0);
printf ( "% d% 7.4f% 7.4f \ n", i, xxn, xn);
gi2 = 1,0 / (1,0 xn);
gi2 [IE-1-i] = 1,0 / (1,0 xn);
gi3 = (1,0 - xn) / (1,0 xn);
gi3 [IE-i-1] = (1,0 - xn) / (1,0 xn);
xxn = (xnum-.5) / Xd;
Xn = 0,25 * pow (xxn, 3,0);
fi1 = Xn;
fi1 [IE-2-i] = Xn;
fi2 = 1,0 / (1,0 xn);
fi2 [IE-2-i] = 1,0 / (1,0 xn);
fi3 = (1,0 - xn) / (1,0 xn);
fi3 [IE-2-i] = (1,0 - xn) / (1,0 xn);
)

for (j = 0; j <= npml j ) (
xnum = npml - j;
Xd = npml;
xxn = xnum / Xd;
Xn = 0,25 * pow (xxn, 3,0);
printf ( "% d% 7.4f% 7.4f \ n", i, xxn, xn);
gj2 [j] = 1,0 / (1,0 xn);
gj2 [V-1-j] = 1,0 / (1,0 xn);
GJ3 [j] = (1,0 - xn) / (1,0 xn);
GJ3 [JE-j-1] = (1,0 - xn) / (1,0 xn);
xxn = (xnum-.5) / Xd;
Xn = 0,25 * pow (xxn, 3,0);
fj1 [j] = Xn;
fj1 [JE-2-j] = Xn;
fj2 [j] = 1,0 / (1,0 xn);
fj2 [JE-2-j] = 1,0 / (1,0 xn);
fj3 [j] = (1,0 - xn) / (1,0 xn);
fj3 [JE-2-j] = (1,0 - xn) / (1,0 xn);
)

printf ( "gi fi \ n");
for (i = 0; i <IE; i ) (
printf ( "% 2d% 5.2f% 5.2f \ n"
i gi2 , gi3 ),
printf ( "% 5.2f% 5.2f% 5.2f \ n"
fi1 , fi2 , fi3 );
)

printf ( "GJ Fj \ n");
for (j = 0; j <JE j ) (
printf ( "% 2d% 5.2f% 5.2f \ n"
j, gj2 [j], GJ3 [j]),
printf ( "% 5.2f% 5.2f% 5.2f \ n"
fj1 [j], fj2 [j], fj3 [j]);
)

t0 = 40,0;
plitimo = 12,0;
T = 0;
nsteps = 1;

while (nsteps> 0) (
printf ( "nsteps ->");
scanf ( "% d", & nsteps);
printf ( "% d \ n" nsteps);

for (n = 1, n <= nsteps n ) (
T = T 1;

/ * ---- Pradėti Pagrindinis FDTD linija ---- * /

/ * Apskaičiuokite Dz srityje * /
for (j = 1; j <IE j ) (
for (i = 1, i <IE; i ) (
dz [j] = gi3 * GJ3 [j] * dz [j]
Gi2 * gj2 [j] *. 5 * (pr [j] - he [i-1] [j]
- Gu [j] hx [j-1]);
)
)

/ * Sinusoidinės šaltinio * /

/ * Impulso = sin (2 * pi * 1500 * 1e6 * dt * T); * /
impulso = exp (-. 5 * pow ((t-t0) / plitimu, 2.));
dz [ic] [jc] = impulso;

/ * Apskaičiuokite Ez srityje * /
/ * Palikite Ez kraštai iki 0, kaip ir PDL * /
for (j = 1; j <JE-1, j ) (
for (i = 1, i <IE-1; i ) (
Ez [j] = ga [j] * dz [j];
)
)

printf ( "% 3f% 6.2f \ n" T ez [ic] [jc]);

/ * Apskaičiuokite Hx srityje * /
for (j = 0; j <JE-1, j ) (
for (i = 0; i <IE; i ) (
curl_e = ez [j] - ez [j 1];
ihx [j] = ihx [j] fi1 * curl_e;
hx [j] = fj3 [j] * hx [j]
Fj2 [j] *. 5 * (curl_e ihx [j]);
)
)

/ * Apskaičiuokite Hy srityje * /
for (j = 0; j <= V-1, j ) (
for (i = 0; i <IE-1; i ) (
curl_e = ez [i 1] [j] - ez [j];
ihy [j] = ihy [j] fj1 [j] * curl_e;
pr [j] = fi3 * pr [j]
Fi2 *. 5 * (curl_e ihy [j]);
)
)

)
/ * ---- Pabaiga pagrindinių FDTD linija ---- * /

for (j = 1; j <JE j ) (
printf ( "% 2d", j);
for (i = 1, i <= IE; i ) (
printf ( "% 4.1f", ez [j]);
)
printf ( "\ n");
)

/ * Parašyti E srityje į failą "Ez" * /
fp = fopen ( "Ez", "w");
for (j = 0; j <JE j ) (
for (i = 0; i <IE; i ) (
fprintf (fp, "% 6.3f", ez [j]);
)
fprintf (fp, "\ n");
)

fclose (fp);

printf ( "T" = "% 6.0f \ n", T);

)

)

 
Mielas,
Pls nustatyti masyvas srityse iki main () funkciją.
Manau, kad programa veiks.
visi geriausi!Parašytas po 21 sekundžių:Mielas,
Pls nustatyti masyvas srityse iki main () funkciją.
Manau, kad programa veiks.
visi geriausi!

 
kodas jokių problemų, tik pradžioje deklaraciją vietoj
FILE * fp * fopen ();

rašyti tik
Failo * fp

sudaryti programą, nebus klaidų

paleisti programą ir įdėkite įvedimas

ačiū

 
Sveiki, Man reikia rasti šį algoritmą (FDTD 2D TM Modes su PDL sąlygos) ir MATLAB kodą!
Ar kas nors gali man padėti?

Thanks!

 
pippopamp rašė:

Sveiki, Man reikia rasti šį algoritmą (FDTD 2D TM Modes su PDL sąlygos) ir MATLAB kodą!

Ar kas nors gali man padėti?Thanks!
 

Welcome to EDABoard.com

Sponsor

Back
Top