(self, p, reset_fields, *band_functions)
| 890 | self.freqs = self.get_freqs() |
| 891 | |
| 892 | def run_parity(self, p, reset_fields, *band_functions): |
| 893 | if self.random_fields and self.randomize_fields not in band_functions: |
| 894 | band_functions.append(self.randomize_fields) |
| 895 | |
| 896 | start = time.time() |
| 897 | |
| 898 | self.all_freqs = np.zeros((len(self.k_points), self.num_bands)) |
| 899 | self.band_range_data = [] |
| 900 | |
| 901 | init_time = time.time() |
| 902 | |
| 903 | if verbosity.mpb > 0: |
| 904 | print("Initializing eigensolver data") |
| 905 | print(f"Computing {self.num_bands} bands with {self.tolerance} tolerance") |
| 906 | |
| 907 | self.init_params(p, reset_fields) |
| 908 | |
| 909 | if isinstance(reset_fields, basestring): |
| 910 | self.load_eigenvectors(reset_fields) |
| 911 | |
| 912 | if verbosity.mpb > 0: |
| 913 | print(f"{len(self.k_points)} k-points") |
| 914 | |
| 915 | for kp in self.k_points: |
| 916 | print(f" {kp}") |
| 917 | |
| 918 | print(f"elapsed time for initialization: {time.time() - init_time}") |
| 919 | |
| 920 | # TODO: Split over multiple processes |
| 921 | # k_split = list_split(self.k_points, self.k_split_num, self.k_split_index) |
| 922 | k_split = (0, self.k_points) |
| 923 | self.mode_solver.set_kpoint_index(k_split[0]) |
| 924 | |
| 925 | if self.num_bands > 0: |
| 926 | for i, k in enumerate(k_split[1]): |
| 927 | self.current_k = k |
| 928 | solve_kpoint_time = time.time() |
| 929 | self.solve_kpoint(k) |
| 930 | self.iterations = self.mode_solver.get_iterations() |
| 931 | if verbosity.mpb > 0: |
| 932 | print( |
| 933 | f"elapsed time for k point: {time.time() - solve_kpoint_time}" |
| 934 | ) |
| 935 | self.all_freqs[i, :] = np.array(self.freqs) |
| 936 | self.band_range_data = self.update_band_range_data( |
| 937 | self.band_range_data, self.freqs, k |
| 938 | ) |
| 939 | self.eigensolver_iters += [self.iterations / self.num_bands] |
| 940 | |
| 941 | for f in band_functions: |
| 942 | num_args = get_num_args(f) |
| 943 | if num_args == 1: |
| 944 | f(self) |
| 945 | elif num_args == 2: |
| 946 | band = 1 |
| 947 | while band <= self.num_bands: |
| 948 | f(self, band) |
| 949 | band += 1 |
no test coverage detected