|
|
|
@ -115,7 +115,6 @@ def parse_command_line() -> dict:
|
|
|
|
|
type=int,
|
|
|
|
|
help="Parameter tuning the distribution on the contour",
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
parser.add_argument(
|
|
|
|
|
"--parallel-green",
|
|
|
|
|
dest="parallel_solver_for_Gk",
|
|
|
|
@ -219,6 +218,10 @@ def main(simulation_parameters: dict, magnetic_entities: list, pairs: list) -> N
|
|
|
|
|
# reformat Hamiltonian and Overlap matrix for manipulations
|
|
|
|
|
hh, ss = build_hh_ss(dh)
|
|
|
|
|
|
|
|
|
|
# copy arrays for tests
|
|
|
|
|
if rank == root_node:
|
|
|
|
|
hh_test, ss_test = hh.copy(), ss.copy()
|
|
|
|
|
|
|
|
|
|
# symmetrizing Hamiltonian and Overlap matrix to make them hermitian
|
|
|
|
|
for i in range(dh.lattice.sc_off.shape[0]):
|
|
|
|
|
j = dh.lattice.sc_index(-dh.lattice.sc_off[i])
|
|
|
|
@ -227,6 +230,19 @@ def main(simulation_parameters: dict, magnetic_entities: list, pairs: list) -> N
|
|
|
|
|
s1, s1d = ss[i], ss[j]
|
|
|
|
|
ss[i], ss[j] = (s1 + s1d.T.conj()) / 2, (s1d + s1.T.conj()) / 2
|
|
|
|
|
|
|
|
|
|
# test symmetrization
|
|
|
|
|
if rank == root_node:
|
|
|
|
|
diff_hh = abs(hh - hh_test).max()
|
|
|
|
|
diff_ss = abs(ss - ss_test).max()
|
|
|
|
|
if diff_hh > 1e-12:
|
|
|
|
|
warnings.warn(
|
|
|
|
|
f"Hamiltonian changed after symmetrization. Largest change is {diff_hh}"
|
|
|
|
|
)
|
|
|
|
|
if diff_ss > 1e-12:
|
|
|
|
|
warnings.warn(
|
|
|
|
|
f"Overlap matrix changed after symmetrization. Largest change is {diff_hh}"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# identifying TRS and TRB parts of the Hamiltonian
|
|
|
|
|
TAUY: np.array = np.kron(np.eye(NO), TAU_Y)
|
|
|
|
|
hTR: np.array = np.array(
|
|
|
|
@ -537,5 +553,6 @@ if __name__ == "__main__":
|
|
|
|
|
simulation_parameters = process_input_args(
|
|
|
|
|
DEFAULT_ARGUMENTS, fdf_arguments, command_line_arguments, ACCEPTED_INPUTS
|
|
|
|
|
)
|
|
|
|
|
print(simulation_parameters)
|
|
|
|
|
|
|
|
|
|
# run grogupy
|
|
|
|
|
main(simulation_parameters, magnetic_entities, pairs)
|
|
|
|
|