(k)
| 1041 | |
| 1042 | def rootfun(b): |
| 1043 | def _rootfun(k): |
| 1044 | # First, look in the cached table |
| 1045 | tab_val = bktab.get((b, k), None) |
| 1046 | if tab_val: |
| 1047 | if verbosity.mpb > 0: |
| 1048 | print(f"find-k {b} at {k}: {tab_val[0]} (cached)") |
| 1049 | return tab_val |
| 1050 | else: |
| 1051 | self.num_bands = b |
| 1052 | self.k_points = [korig + kdir1.scale(k)] |
| 1053 | self.run_parity(p, False) |
| 1054 | v = self.mode_solver.compute_group_velocity_component(kdir1) |
| 1055 | |
| 1056 | # Cache computed values |
| 1057 | for _b, _f, _v in zip( |
| 1058 | range(band_min, b - band_min + 1), |
| 1059 | self.freqs[band_min - 1 :], |
| 1060 | v[band_min - 1 :], |
| 1061 | ): |
| 1062 | tabval = bktab.get((_b, k0s[_b - band_min]), None) |
| 1063 | |
| 1064 | if not tabval or abs(_f - omega) < abs(tabval[0]): |
| 1065 | k0s[_b - band_min + 1] = k |
| 1066 | |
| 1067 | bktab[(_b, k)] = (_f - omega, _v) |
| 1068 | |
| 1069 | fun = self.freqs[-1] - omega |
| 1070 | if verbosity.mpb > 0: |
| 1071 | print(f"find-k {b} at {k}: {fun}") |
| 1072 | return (fun, v[-1]) |
| 1073 | |
| 1074 | return _rootfun |
| 1075 |
nothing calls this directly
no test coverage detected