/* CP_GAA2.c / OpenMOM / ch.15 */ #include #include "omm_datalib.h" int main(void) { const double fstart = 11.5e9; const double fstop = 12.5e9; const int fdiv = 20; const int N = 5; const double L12 = 25e-3; const double h = 0.07 * L12; const double Lx = 0.53 * L12; const double Ly = 1.06 * L12; const double a = 0.006 * L12; // 要調整パラメーター const double dfeed = 0.05 * L12; // 給電点間隔/2 const double lfeed = 1.25 * Lx; // 給電線水平長さ const double rfeed = 8 * a; // 給電点半径 const double d = 2e-3; // 基本要素長 double x, y; // initialize omm_init(); // title omm_title("Circularly Polarized Grid Array Antenna"); // geometry // ground omm_ground(); // division const int divf = NINT(h, d); const int div1 = NINT(Lx, d); int div2 = NINT(Ly, d); if (div2 % 2 == 1) div2++; // even const int div3 = NINT(lfeed, d); // feed // F1 omm_geometry_zline(0, h, +dfeed, 0, divf); omm_feed(1, 0); omm_radius(rfeed); // F2 omm_geometry_zline(0, h, 0, +dfeed, divf); omm_feed(1, 90); omm_radius(rfeed); // F3 omm_geometry_zline(0, h, -dfeed, 0, divf); omm_feed(1, 180); omm_radius(rfeed); // F4 omm_geometry_zline(0, h, 0, -dfeed, divf); omm_feed(1, 270); omm_radius(rfeed); // -X, +X for (int side = -1; side <= +1; side += 2) { x = dfeed + lfeed; omm_geometry_xline(side * dfeed, side * x, 0, h, div3); y = 0; for (int i = 0; i < N; i++) { y += Ly / 2; omm_geometry_yline(-y, +y, h, side * x, (i + 1) * div2); x += Lx; } omm_geometry_yline(-y, +y, h, side * x, N * div2); x = dfeed + lfeed; for (int i = 0; i < N; i++) { for (int j = 0; j < i + 2; j++) { y = -(i + 1) * Ly / 2 + (j * Ly); omm_geometry_xline(side * x, side * (x + Lx), y, h, div1); } x += Lx; } } // -Y, +Y for (int side = -1; side <= +1; side += 2) { y = dfeed + lfeed; omm_geometry_yline(side * dfeed, side * y, h, 0, div3); x = 0; for (int i = 0; i < N; i++) { x += Ly / 2; omm_geometry_xline(-x, +x, side * y, h, (i + 1) * div2); y += Lx; } omm_geometry_xline(-x, +x, side * y, h, N * div2); y = dfeed + lfeed; for (int i = 0; i < N; i++) { for (int j = 0; j < i + 2; j++) { x = -(i + 1) * Ly / 2 + (j * Ly); omm_geometry_yline(side * y, side * (y + Lx), h, x, div1); } y += Lx; } } // radius omm_radiusall(1, a); // frequency omm_frequency(fstart, fstop, fdiv); // frequency char. //omm_plotsmith(); omm_plotzin(1, 0, 0, 0); omm_plotyin(1, 0, 0, 0); omm_plotref(1, 0, 0, 0); //omm_freqdiv(5); // far1d field omm_plotfar1d('Y', 360, 0); omm_far1dcomponent(0, 1, 0); omm_far1dscale(-10, +25, 7); // window omm_window3d(400, 400, 12, 60, 30); // output omm_outdata("CP_GAA2.omm"); return 0; }