/ / /
| 93 | /***************************************************************/ |
| 94 | /***************************************************************/ |
| 95 | int main(int argc, char *argv[]) { |
| 96 | initialize mpi(argc, argv); |
| 97 | |
| 98 | /***************************************************************/ |
| 99 | /* parse command-line options **********************************/ |
| 100 | /***************************************************************/ |
| 101 | bool use_symmetry = false; |
| 102 | bool write_files = false; |
| 103 | for (int narg = 1; narg < argc; narg++) { |
| 104 | if (argv[narg] == 0) continue; |
| 105 | if (!strcasecmp(argv[narg], "--use-symmetry")) { |
| 106 | use_symmetry = true; |
| 107 | master_printf("Using symmetry.\n"); |
| 108 | } |
| 109 | else if (!strcasecmp(argv[narg], "--write-files")) { |
| 110 | write_files = true; |
| 111 | master_printf("writing HDF5 data files"); |
| 112 | } |
| 113 | else { |
| 114 | master_printf("unknown command-line option %s", argv[narg]); |
| 115 | usage(argv[0]); |
| 116 | exit(1); |
| 117 | }; |
| 118 | }; |
| 119 | |
| 120 | /***************************************************************/ |
| 121 | /* initialize geometry, similar to holey_wvg_cavity **********/ |
| 122 | /***************************************************************/ |
| 123 | double eps = 13.0; // dielectric constant of waveguide |
| 124 | double w = 1.2; // width of waveguide |
| 125 | double r = 0.36; // radius of holes |
| 126 | double d = 1.4; // defect spacing (ordinary spacing = 1) |
| 127 | int N = 3; // number of holes on either side of defect |
| 128 | double sy = 6.0; // size of cell in y direction (perpendicular to wvg.) |
| 129 | double pad = 2.0; // padding between last hole and PML edge |
| 130 | double dpml = 1.0; // PML thickness |
| 131 | double sx = 2.0 * (pad + dpml + N) + d - 1.0; // size of cell in x dir |
| 132 | double resolution = 20.0; |
| 133 | geometry_lattice.size.x = sx; |
| 134 | geometry_lattice.size.y = sy; |
| 135 | geometry_lattice.size.z = 0.0; |
| 136 | grid_volume gv = voltwo(sx, sy, resolution); |
| 137 | gv.center_origin(); |
| 138 | symmetry sym = use_symmetry ? -mirror(Y, gv) : identity(); |
| 139 | structure the_structure(gv, dummy_eps, pml(dpml), sym); |
| 140 | meep_geom::material_type vacuum = meep_geom::vacuum; |
| 141 | auto material_deleter = [](meep_geom::material_data *m) { meep_geom::material_free(m); }; |
| 142 | std::unique_ptr<meep_geom::material_data, decltype(material_deleter)> dielectric( |
| 143 | meep_geom::make_dielectric(eps), material_deleter); |
| 144 | geometric_object objects[7]; |
| 145 | vector3 origin = v3(0.0, 0.0, 0.0); |
| 146 | vector3 xhat = v3(1.0, 0.0, 0.0); |
| 147 | vector3 yhat = v3(0.0, 1.0, 0.0); |
| 148 | vector3 zhat = v3(0.0, 0.0, 1.0); |
| 149 | vector3 size = v3(meep_geom::ENORMOUS, w, meep_geom::ENORMOUS); |
| 150 | double x0 = 0.5 * d; |
| 151 | double deltax = 1.0; |
| 152 | double height = meep_geom::ENORMOUS; |
nothing calls this directly
no test coverage detected