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

Function check_convergence

tests/2D_convergence.cpp:67–101  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

65}
66
67void check_convergence(component c, double best_guess, double beta) {
68 const double amin = 5.0, amax = 30.0, adelta = 5.0;
69
70 master_printf("Checking convergence for %s field...\n", component_name(c));
71 if (beta != 0) master_printf("... using exp(i beta z) z-dependence with beta=%g\n", beta);
72 if (best_guess) master_printf("(The correct frequency should be %g.)\n", best_guess);
73
74 for (double a = amax; a >= amin; a -= adelta) {
75 const double freq = freq_at_resolution(holey_2d, a, c, beta);
76 const double freq_shifted = freq_at_resolution(holey_shifted_2d, a, c, beta);
77
78 // Initialize best guess at the correct freq.
79 if (!best_guess) {
80 best_guess = freq + 0.5 * (freq_shifted - freq);
81 master_printf("The frequency is approximately %g\n", best_guess);
82 }
83 else {
84 master_printf("frequency for a=%g is %g, %g (shifted), %g (mean)\n", a, freq, freq_shifted,
85 0.5 * (freq + freq_shifted));
86 master_printf("Unshifted freq error is %g/%g/%g\n", (freq - best_guess) * a * a, a, a);
87 if (fabs(freq - best_guess) * a * a > 0.4)
88 meep::abort("Frequency doesn't converge properly with a.\n");
89 master_printf("Shifted freq error is %g/%g/%g\n", (freq_shifted - best_guess) * a * a, a, a);
90 if (fabs(freq_shifted - best_guess) * a * a > 0.4)
91 meep::abort("Frequency doesn't converge properly with a.\n");
92 }
93
94 // Check frequency difference...
95 master_printf("Frequency difference with a of %g is %g/%g/%g\n", a,
96 (freq - freq_shifted) * a * a, a, a);
97 if (fabs(freq - freq_shifted) * a * a > 0.4)
98 meep::abort("Frequency difference = doesn't converge properly with a.\n");
99 }
100 master_printf("Passed 2D resolution convergence test for %s!\n", component_name(c));
101}
102
103int main(int argc, char **argv) {
104 initialize mpi(argc, argv);

Callers 1

mainFunction · 0.85

Calls 4

master_printfFunction · 0.85
component_nameFunction · 0.85
freq_at_resolutionFunction · 0.85
abortFunction · 0.85

Tested by

no test coverage detected