/* car.c 乗用車 OpenFDTDデータ作成ライブラリ使用 */ #include "ofd_datalib.h" int main(void) { const double x0 = 0e-3; const double x1 = 640e-3; const double x2 = 750e-3; const double x3 = 1150e-3; const double x4 = 1200e-3; const double x5 = 1400e-3; const double x6 = 1900e-3; const double x7 = 1960e-3; const double x8 = 2550e-3; const double x9 = 2650e-3; const double x10 = 3250e-3; const double x11 = 3400e-3; const double x12 = 3600e-3; const double x13 = 4700e-3; const double y0 = 550e-3; const double y1 = 850e-3; const double z0 = 0e-3; const double z1 = 250e-3; const double z2 = 850e-3; const double z3 = 900e-3; const double z4 = 950e-3; const double z5 = 1400e-3; const double freq = 2.5e9; // 周波数 const double d = 10e-3; // セルサイズ const double hant = 30e-3; // アンテナ高さ /* const double freq = 5e9; // 周波数 const double d = 5e-3; // セルサイズ const double hant = 15e-3; // アンテナ高さ */ const double yant = 0e-3; // アンテナY座標 const double rtire = 300e-3; // タイヤ半径 const double hgnd = 200e-3; // 地面の厚さ const double spc = 500e-3; // 周囲余白 const double dglass = 15e-3; // ガラスの厚さ double g[10]; // initialize ofd_init(); // title ofd_title("car"); // mesh ofd_xsection(2, x0 - spc, x13 + spc); ofd_xdivision(1, (int)((x13 - x0 + 2 * spc) / d + 0.5)); ofd_ysection(2, -y1 - spc, +y1 + spc); ofd_ydivision(1, (int)(2 * (y1 + spc) / d + 0.5)); ofd_zsection(2, z0 - hgnd, z5 + spc); ofd_zdivision(1, (int)((z5 - z0 + spc + hgnd) / d + 0.5)); // material ofd_material(3.0, 0.1, 1.0, 0.0, "地面"); ofd_material(5.0, 0.3, 1.0, 0.0, "タイヤ"); ofd_material(4.0, 0.05, 1.0, 0.0, "ガラス"); // geometry // 地面 ofd_geometry(2, 1, x0 - spc, x13 + spc, -y1 - spc, +y1 + spc, z0 - hgnd, z0); ofd_geometry_name("地面"); // 左右ガラス for (int side = 0; side < 2; side++) { g[0] = (side == 0) ? -y1 : +y1; g[1] = (side == 0) ? -y1 + dglass : +y1 - dglass; g[2] = g[3] = z4; g[4] = g[5] = z5; g[6] = x3; g[7] = x10; g[8] = x8; g[9] = x5; ofd_geometry_pillar(4, 'Y', g); } // リアガラス g[0] = -y1; g[1] = +y1; g[2] = g[3] = z4; g[4] = g[5] = z5; g[6] = x1; g[7] = x1 + dglass; g[8] = x4 + dglass; g[9] = x4; ofd_geometry_pillar(4, 'Y', g); // フロントガラス g[0] = -y1; g[1] = +y1; g[2] = g[3] = z4; g[4] = g[5] = z5; g[6] = x11; g[7] = x11 - dglass; g[8] = x9 - dglass; g[9] = x9; ofd_geometry_pillar(4, 'Y', g); // 後部 g[0] = -y1; g[1] = +y1; g[2] = g[3] = z1; g[4] = z4; g[5] = z3; g[6] = g[9] = x0; g[7] = g[8] = x1; ofd_geometry_pillar(1, 'Y', g); // 前部 g[0] = -y1; g[1] = +y1; g[2] = g[3] = z1; g[4] = z4; g[5] = z2; g[6] = g[9] = x13; g[7] = g[8] = x11; ofd_geometry_pillar(1, 'Y', g); // 左右ドア for (int side = 0; side < 2; side++) { const double ya = (side == 0) ? -y1 : +y1; const double yb = (side == 0) ? ya + d : ya - d; ofd_geometry(1, 1, x1, x11, ya, yb, z1, z4); } // 床 ofd_geometry(1, 1, x1, x11, -y1, +y1, z1, z1 + d); // 屋根 ofd_geometry(1, 1, x4, x9, -y1, +y1, z5, z5 - d); // 左右ピラー(各3本) for (int side = 0; side < 2; side++) { g[0] = (side == 0) ? -y1 : +y1; g[1] = (side == 0) ? -y1 + d : +y1 - d; // ピラー後 g[2] = g[3] = z4; g[4] = g[5] = z5; g[6] = x1; g[7] = x3; g[8] = x5; g[9] = x4; ofd_geometry_pillar(1, 'Y', g); // ピラー前 g[2] = g[3] = z4; g[4] = g[5] = z5; g[6] = x11; g[7] = x10; g[8] = x8; g[9] = x9; ofd_geometry_pillar(1, 'Y', g); // ピラー中 ofd_geometry(1, 1, x6, x7, g[0], g[1], z4, z5); } // タイヤ for (int side = 0; side < 2; side++) { const double ya = (side == 0) ? -y1 : +y1; const double yb = (side == 0) ? -y0 : +y0; ofd_geometry(3, 12, x2 - rtire, x2 + rtire, ya, yb, z0, z0 + 2 * rtire); ofd_geometry(3, 12, x12 - rtire, x12 + rtire, ya, yb, z0, z0 + 2 * rtire); } // アンテナ ofd_geometry(1, 1, x1, x1, yant, yant, z4 - d, z4 + hant); ofd_geometry_name("アンテナ"); // feed ofd_feed('Z', x1, yant, z4 + d / 2, 100, 0, 50); // ABC //ofd_pml(8, 3, 1e-8); // frequency ofd_frequency1(freq, freq, 0); ofd_frequency2(freq, freq, 0); // solver ofd_solver(100000, 200, 3e-3); // iteration ofd_plotiter(1); // frequency chars. //ofd_plotfreq(0, 0, 0, 0, 0, 0); // near1d field //ofd_plotnear1d("E", 'X', 0e-3, 1000e-3); // near2d field ofd_plotnear2d("E", 'Y', 0e-3); ofd_near2ddim(1, 0); ofd_near2ddb(1); ofd_near2dscale(0, 70); ofd_near2dcontour(1); ofd_near2dobj(1); // far1d field ofd_plotfar1d('X', 360, 0); ofd_plotfar1d('Y', 360, 0); ofd_far1dstyle(0); ofd_far1dcomponent(1, 1, 1); ofd_far1dscale(-30, +10, 8); // window size ofd_window2d(750, 500, 12, 0); ofd_window3d(600, 600, 12, 60, 30); // output ofd_outdata("car.ofd"); return 0; }