MCPcopy Create free account
hub / github.com/NanoComp/meep / main

Function main

tests/array-slice-ll.cpp:95–258  ·  view source on GitHub ↗

/ / /

Source from the content-addressed store, hash-verified

93/***************************************************************/
94/***************************************************************/
95int 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;

Callers

nothing calls this directly

Calls 15

master_printfFunction · 0.85
usageFunction · 0.85
voltwoFunction · 0.85
mirrorFunction · 0.85
identityFunction · 0.85
pmlFunction · 0.85
material_freeFunction · 0.85
make_dielectricFunction · 0.85
abortFunction · 0.85
CompareFunction · 0.85
unset_default_materialFunction · 0.85

Tested by

no test coverage detected