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

Function check_integral

tests/integrate.cpp:171–195  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

169}
170
171void check_integral(fields &f, linear_integrand_data &d, const volume &v, component cgrid) {
172 double x1 = v.in_direction_min(d.dx);
173 double x2 = v.in_direction_max(d.dx);
174 double y1 = v.in_direction_min(d.dy);
175 double y2 = v.in_direction_max(d.dy);
176 double z1 = v.in_direction_min(d.dz);
177 double z2 = v.in_direction_max(d.dz);
178
179 master_printf("Check %d-dim. %s integral in %s cell with %s integrand...",
180 (x2 - x1 > 0) + (y2 - y1 > 0) + (z2 - z1 > 0), component_name(cgrid),
181 v.dim == D3 ? "3d" : (v.dim == D2 ? "2d" : (v.dim == Dcyl ? "cylindrical" : "1d")),
182 (d.c == 1.0 && !d.axy && !d.ax && !d.ay && !d.az && !d.axy && !d.ayz && !d.axz)
183 ? "unit"
184 : "linear");
185 if (0)
186 master_printf("\n... grid_volume (%g,%g,%g) at (%g,%g,%g) with integral (%g, %g,%g,%g, "
187 "%g,%g,%g, %g)...\n",
188 x2 - x1, y2 - y1, z2 - z1, (x1 + x2) / 2, (y1 + y2) / 2, (z1 + z2) / 2, d.c, d.ax,
189 d.ay, d.az, d.axy, d.ayz, d.axz, d.axyz);
190
191 double sum = real(f.integrate(0, 0, linear_integrand, (void *)&d, v));
192 if (fabs(sum - correct_integral(v, d)) > 1e-9 * fabs(sum))
193 meep::abort("FAILED: %0.16g instead of %0.16g\n", sum, correct_integral(v, d));
194 master_printf("...PASSED.\n");
195}
196
197void check_splitsym(const grid_volume &gv, int splitting, const symmetry &S, const char *Sname) {
198 const int num_random_trials = 100;

Callers 1

check_splitsymFunction · 0.85

Calls 7

master_printfFunction · 0.85
component_nameFunction · 0.85
correct_integralFunction · 0.85
abortFunction · 0.85
in_direction_minMethod · 0.80
in_direction_maxMethod · 0.80
integrateMethod · 0.80

Tested by

no test coverage detected