/* ansitsu.c “d”gˆΓŽΊ OpenFDTDƒf[ƒ^μ¬ƒ‰ƒCƒuƒ‰ƒŠ */ #include "ofd_datalib.h" int main(void) { const int model = 3; // 1=30MHz, 2=100MHz, 3=300MHz, 4=1000MHz const double D = 10.0; // ‰œs(X•ϋŒό) const double W = 5.0; // •(Y•ϋŒό) const double H = 5.0; // ‚‚³(Z•ϋŒό) const double dtx = 1.5; // ‘—MƒAƒ“ƒeƒiˆΚ’u const double htx = 1.5; // ‘—MƒAƒ“ƒeƒi‚‚³ const double h1 = 40e-3; // ‹zŽϋ‘Μ•½–Κ•”‚‚³ const double h2 = 150e-3; // ‹zŽϋ‘Μ“Λ‹N•”‚‚³ const double w2 = 100e-3; // ‹zŽϋ‘Μ“Λ‹N•”• const double d = 10e-3; // ƒZƒ‹ƒTƒCƒY const double p1[] = {10.0, 0.2, 10.0, 30000.0}; // ƒtƒFƒ‰ƒCƒg const double p2[] = {10.0, 0.1, 1.0, 0.0}; // —U“d‘Μ const char title[] = "anechoic chamber 10x5x5m"; // ƒ^ƒCƒgƒ‹ char fn[256] = "ansitsu10m"; int i, j, k, m; int mx, my, mz; double x0, x1, y0, y1, y2, z0, z1; double gx1, gx2, gy1, gy2, gz1, gz2; double ltx, freq, volt; if (model == 1) { freq = 30e6; ltx = 1.0; volt = 30; strcat(fn, "_30MHz.ofd"); } else if (model == 2) { freq = 100e6; ltx = 1.0; volt = 1; strcat(fn, "_100MHz.ofd"); } else if (model == 3) { freq = 300e6; ltx = 0.4; volt = 0.3; strcat(fn, "_300MHz.ofd"); } else if (model == 4) { freq = 1000e6; ltx = 0.12; volt = 0.1; strcat(fn, "_1000MHz.ofd"); } else { return 1; } x0 = 0; x1 = D; y1 = -W / 2; y2 = +W / 2; y0 = 0; z0 = 0; z1 = H; // initialize ofd_init(); //ofd_geometry_size(300000); // title ofd_title(title); // mesh ofd_xsection(2, x0, x1); ofd_xdivision(1, (int)((x1 - x0) / d + 0.5)); ofd_ysection(2, y1, y2); ofd_ydivision(1, (int)((y2 - y1) / d + 0.5)); ofd_zsection(2, z0, z1); ofd_zdivision(1, (int)((z1 - z0) / d + 0.5)); // material ofd_material(p1[0], p1[1], p1[2], p1[3], "ƒtƒFƒ‰ƒCƒg"); // =2 ofd_material(p2[0], p2[1], p2[2], p2[3], "—U“d‘Μ"); // =3 // geometry ofd_geometry(1, 1, dtx, dtx, y0, y0, htx - ltx / 2, htx + ltx / 2, "dipole"); // PEC•Η m = 1; ofd_geometry(m, 1, x0, x1, y1, y2, z0, z0, "°"); ofd_geometry(m, 1, x0, x1, y1, y2, z1, z1, "“Vˆδ"); ofd_geometry(m, 1, x0, x0, y1, y2, z0, z1, "‘€•Η"); ofd_geometry(m, 1, x1, x1, y1, y2, z0, z1, "‘€•Η"); ofd_geometry(m, 1, x0, x1, y1, y1, z0, z1, "‘€•Η"); ofd_geometry(m, 1, x0, x1, y2, y2, z0, z1, "‘€•Η"); // •½–Κ‹zŽϋή(•¨«’l”ԍ†=2) m = 2; ofd_geometry(m, 1, x0, x1, y1, y2, z0, z0 + h1, "-Z"); ofd_geometry(m, 1, x0, x1, y1, y2, z1, z1 - h1, "+Z"); ofd_geometry(m, 1, x0, x0 + h1, y1, y2, z0, z1, "-X"); ofd_geometry(m, 1, x1, x1 - h1, y1, y2, z0, z1, "+X"); ofd_geometry(m, 1, x0, x1, y1, y1 + h1, z0, z1, "-Y"); ofd_geometry(m, 1, x0, x1, y2, y2 - h1, z0, z1, "+Y"); // ŽRŒ^‹zŽϋή(•¨«’l”ԍ†=2/3) m = 2; mx = (int)((x1 - x0) / w2); my = (int)((y2 - y1) / w2); mz = (int)((z1 - z0) / w2); // -Z/+Z for (i = 0; i < mx; i++) { for (j = 0; j < my; j++) { gx1 = x0 + (i * w2); gx2 = gx1 + w2; gy1 = y1 + (j * w2); gy2 = gy1 + w2; gz1 = z0 + h1; gz2 = gz1 + h2; ofd_geometry(m, 46, gx1, gx2, gy1, gy2, gz1, gz2, ""); gz1 = z1 - h1; gz2 = gz1 - h2; ofd_geometry(m, 46, gx1, gx2, gy1, gy2, gz1, gz2, ""); } } // -Y/+Y•Η for (i = 0; i < mx; i++) { for (k = 0; k < mz; k++) { gx1 = x0 + (i * w2); gx2 = gx1 + w2; gy1 = y1 + h1; gy2 = gy1 + h2; gz1 = z0 + (k * w2); gz2 = gz1 + w2; ofd_geometry(m, 45, gx1, gx2, gy1, gy2, gz1, gz2, ""); gy1 = y2 - h1; gy2 = gy1 - h2; ofd_geometry(m, 45, gx1, gx2, gy1, gy2, gz1, gz2, ""); } } // -X/+X•Η for (j = 0; j < my; j++) { for (k = 0; k < mz; k++) { gx1 = x0 + h1; gx2 = gx1 + h2; gy1 = y1 + (j * w2); gy2 = gy1 + w2; gz1 = z0 + (k * w2); gz2 = gz1 + w2; ofd_geometry(m, 44, gx1, gx2, gy1, gy2, gz1, gz2, ""); gx1 = x1 - h1; gx2 = gx1 - h2; ofd_geometry(m, 44, gx1, gx2, gy1, gy2, gz1, gz2, ""); } } // feed ofd_feed('Z', dtx, y0, htx, volt, 0, 50); //ofd_rfeed(10); // ABC // frequency ofd_frequency1(freq, freq, 0); ofd_frequency2(freq, freq, 0); // solver ofd_solver(10000, 100, 1e-3); // near1d field ofd_near1d('E', 'X', y0, htx); // near2d field ofd_near2d("E", 'Y', y0); ofd_near2d("E", 'Z', htx); ofd_near2dobj(0); ofd_near2dcolor(20); // near scale ofd_nearscale(1, -40, +10); // far field // output options //ofd_plotiter(0); ofd_plotfreq(0, 0, 0, 0); // output ofd_outdat(fn); return 0; }