Skip to content

Commit 1040555

Browse files
author
root
committed
Merge branch 'master' of https://github.com/aboys-cb/dpdata into stru
2 parents 6b57f35 + bff8f16 commit 1040555

1 file changed

Lines changed: 30 additions & 28 deletions

File tree

dpdata/abacus/stru.py

Lines changed: 30 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -751,66 +751,68 @@ def process_file_input(file_input, atom_names, input_name):
751751
out += "0.0\n"
752752
out += str(data["atom_numbs"][iele]) + "\n"
753753
for iatom in range(data["atom_numbs"][iele]):
754-
iatomtype = np.nonzero(data["atom_types"] == iele)[0][iatom]
754+
iatomtype = np.nonzero(data["atom_types"] == iele)[0][
755+
iatom
756+
] # it is the atom index
755757
iout = f"{data['coords'][frame_idx][iatomtype, 0]:.12f} {data['coords'][frame_idx][iatomtype, 1]:.12f} {data['coords'][frame_idx][iatomtype, 2]:.12f}"
756758
# add flags for move, velocity, mag, angle1, angle2, and sc
757759
if move is not None:
758760
if (
759-
isinstance(ndarray2list(move[natom_tot]), (list, tuple))
760-
and len(move[natom_tot]) == 3
761+
isinstance(ndarray2list(move[iatomtype]), (list, tuple))
762+
and len(move[iatomtype]) == 3
761763
):
762764
iout += " " + " ".join(
763-
["1" if ii else "0" for ii in move[natom_tot]]
765+
["1" if ii else "0" for ii in move[iatomtype]]
764766
)
765-
elif isinstance(ndarray2list(move[natom_tot]), (int, float, bool)):
766-
iout += " 1 1 1" if move[natom_tot] else " 0 0 0"
767+
elif isinstance(ndarray2list(move[iatomtype]), (int, float, bool)):
768+
iout += " 1 1 1" if move[iatomtype] else " 0 0 0"
767769
else:
768770
iout += " 1 1 1"
769771

770772
if (
771773
velocity is not None
772-
and isinstance(ndarray2list(velocity[natom_tot]), (list, tuple))
773-
and len(velocity[natom_tot]) == 3
774+
and isinstance(ndarray2list(velocity[iatomtype]), (list, tuple))
775+
and len(velocity[iatomtype]) == 3
774776
):
775-
iout += " v " + " ".join([f"{ii:.12f}" for ii in velocity[natom_tot]])
777+
iout += " v " + " ".join([f"{ii:.12f}" for ii in velocity[iatomtype]])
776778

777779
if mag is not None:
778-
if isinstance(ndarray2list(mag[natom_tot]), (list, tuple)) and len(
779-
mag[natom_tot]
780+
if isinstance(ndarray2list(mag[iatomtype]), (list, tuple)) and len(
781+
mag[iatomtype]
780782
) in [1, 3]:
781-
iout += " mag " + " ".join([f"{ii:.12f}" for ii in mag[natom_tot]])
782-
elif isinstance(ndarray2list(mag[natom_tot]), (int, float)):
783-
iout += " mag " + f"{mag[natom_tot]:.12f}"
783+
iout += " mag " + " ".join([f"{ii:.12f}" for ii in mag[iatomtype]])
784+
elif isinstance(ndarray2list(mag[iatomtype]), (int, float)):
785+
iout += " mag " + f"{mag[iatomtype]:.12f}"
784786

785787
if angle1 is not None and isinstance(
786-
ndarray2list(angle1[natom_tot]), (int, float)
788+
ndarray2list(angle1[iatomtype]), (int, float)
787789
):
788-
iout += " angle1 " + f"{angle1[natom_tot]:.12f}"
790+
iout += " angle1 " + f"{angle1[iatomtype]:.12f}"
789791

790792
if angle2 is not None and isinstance(
791-
ndarray2list(angle2[natom_tot]), (int, float)
793+
ndarray2list(angle2[iatomtype]), (int, float)
792794
):
793-
iout += " angle2 " + f"{angle2[natom_tot]:.12f}"
795+
iout += " angle2 " + f"{angle2[iatomtype]:.12f}"
794796

795797
if sc is not None:
796-
if isinstance(ndarray2list(sc[natom_tot]), (list, tuple)) and len(
797-
sc[natom_tot]
798+
if isinstance(ndarray2list(sc[iatomtype]), (list, tuple)) and len(
799+
sc[iatomtype]
798800
) in [1, 3]:
799801
iout += " sc " + " ".join(
800-
["1" if ii else "0" for ii in sc[natom_tot]]
802+
["1" if ii else "0" for ii in sc[iatomtype]]
801803
)
802-
elif isinstance(ndarray2list(sc[natom_tot]), (int, float, bool)):
803-
iout += " sc " + "1" if sc[natom_tot] else "0"
804+
elif isinstance(ndarray2list(sc[iatomtype]), (int, float, bool)):
805+
iout += " sc " + "1" if sc[iatomtype] else "0"
804806

805807
if lambda_ is not None:
806-
if isinstance(ndarray2list(lambda_[natom_tot]), (list, tuple)) and len(
807-
lambda_[natom_tot]
808+
if isinstance(ndarray2list(lambda_[iatomtype]), (list, tuple)) and len(
809+
lambda_[iatomtype]
808810
) in [1, 3]:
809811
iout += " lambda " + " ".join(
810-
[f"{ii:.12f}" for ii in lambda_[natom_tot]]
812+
[f"{ii:.12f}" for ii in lambda_[iatomtype]]
811813
)
812-
elif isinstance(ndarray2list(lambda_[natom_tot]), (int, float)):
813-
iout += " lambda " + f"{lambda_[natom_tot]:.12f}"
814+
elif isinstance(ndarray2list(lambda_[iatomtype]), (int, float)):
815+
iout += " lambda " + f"{lambda_[iatomtype]:.12f}"
814816

815817
out += iout + "\n"
816818
natom_tot += 1

0 commit comments

Comments
 (0)