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

Method run_parity

python/solver.py:892–969  ·  view source on GitHub ↗
(self, p, reset_fields, *band_functions)

Source from the content-addressed store, hash-verified

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

Callers 11

runMethod · 0.95
run_zevenMethod · 0.95
run_zoddMethod · 0.95
run_yevenMethod · 0.95
run_yoddMethod · 0.95
run_yeven_zevenMethod · 0.95
run_yeven_zoddMethod · 0.95
run_yodd_zevenMethod · 0.95
run_yodd_zoddMethod · 0.95
_rootfunMethod · 0.95
find_kMethod · 0.95

Calls 13

init_paramsMethod · 0.95
load_eigenvectorsMethod · 0.95
solve_kpointMethod · 0.95
output_gapsMethod · 0.95
get_num_argsFunction · 0.90
timeMethod · 0.80
set_kpoint_indexMethod · 0.80
get_iterationsMethod · 0.80
get_eigensolver_flopsMethod · 0.80
get_parity_stringMethod · 0.80

Tested by

no test coverage detected