@@ -962,7 +962,7 @@ def to_json(self, version=2, basisref=None):
962
962
"""
963
963
basisref= {'Atom':{"s":"2s", "p":"2p", "d":"3d", "f":"4f"}}
964
964
"""
965
-
965
+ print ( basisref )
966
966
to_uniform = False
967
967
new_basis = self .basis .copy ()
968
968
if basisref is not None :
@@ -1023,25 +1023,29 @@ def to_json(self, version=2, basisref=None):
1023
1023
fiorb , fjorb = orbpair .split ("-" )
1024
1024
iorb = self .idp_sk .full_basis_to_basis [iasym ].get (fiorb )
1025
1025
jorb = self .idp_sk .full_basis_to_basis [jasym ].get (fjorb )
1026
- if to_uniform :
1027
- iorb = basisref [iasym ][iorb ]
1028
- jorb = basisref [jasym ][jorb ]
1026
+
1029
1027
if iorb != None and jorb != None :
1028
+ if to_uniform :
1029
+ iorb = basisref [iasym ][iorb ]
1030
+ jorb = basisref [jasym ][jorb ]
1030
1031
# iasym-jasym-iorb-jorb
1031
1032
for i in range (slices .stop - slices .start ):
1032
1033
if ian < jan :
1033
- continue
1034
+ if fiorb == fjorb :
1035
+ hopping_param [f"{ jasym } -{ iasym } -{ jorb } -{ iorb } -{ i } " ] = ((hopping [pos_line , slices ][i ] + hopping [rev_line , slices ][i ])* 0.5 ).tolist ()
1036
+ else :
1037
+ hopping_param [f"{ jasym } -{ iasym } -{ jorb } -{ iorb } -{ i } " ] = hopping [pos_line , slices ][i ].tolist ()
1034
1038
elif ian > jan :
1035
1039
if fiorb == fjorb : # this might have problems
1036
1040
hopping_param [f"{ iasym } -{ jasym } -{ iorb } -{ jorb } -{ i } " ] = ((hopping [pos_line , slices ][i ] + hopping [rev_line , slices ][i ])* 0.5 ).tolist ()
1037
1041
else :
1038
1042
hopping_param [f"{ iasym } -{ jasym } -{ iorb } -{ jorb } -{ i } " ] = hopping [pos_line , slices ][i ].tolist ()
1039
- iiorb = self .idp_sk .full_basis_to_basis [iasym ].get (fjorb )
1040
- jjorb = self .idp_sk .full_basis_to_basis [jasym ].get (fiorb )
1041
- if to_uniform :
1042
- iiorb = basisref [iasym ][iiorb ]
1043
- jjorb = basisref [jasym ][jjorb ]
1044
- hopping_param [f"{ iasym } -{ jasym } -{ iiorb } -{ jjorb } -{ i } " ] = hopping [rev_line , slices ][i ].tolist ()
1043
+ # iiorb = self.idp_sk.full_basis_to_basis[iasym].get(fjorb)
1044
+ # jjorb = self.idp_sk.full_basis_to_basis[jasym].get(fiorb)
1045
+ # if to_uniform:
1046
+ # iiorb = basisref[iasym][iiorb]
1047
+ # jjorb = basisref[jasym][jjorb]
1048
+ # hopping_param[f"{iasym}-{jasym}-{iiorb}-{jjorb}-{i}"] = hopping[rev_line, slices][i].tolist()
1045
1049
elif ian == jan :
1046
1050
if self .idp_sk .full_basis .index (fiorb ) <= self .idp_sk .full_basis .index (fjorb ):
1047
1051
hopping_param [f"{ iasym } -{ jasym } -{ iorb } -{ jorb } -{ i } " ] = hopping [pos_line , slices ][i ].tolist ()
@@ -1062,25 +1066,29 @@ def to_json(self, version=2, basisref=None):
1062
1066
fiorb , fjorb = orbpair .split ("-" )
1063
1067
iorb = self .idp_sk .full_basis_to_basis [iasym ].get (fiorb )
1064
1068
jorb = self .idp_sk .full_basis_to_basis [jasym ].get (fjorb )
1065
- if to_uniform :
1066
- iorb = basisref [iasym ][iorb ]
1067
- jorb = basisref [jasym ][jorb ]
1069
+
1068
1070
if iorb != None and jorb != None :
1071
+ if to_uniform :
1072
+ iorb = basisref [iasym ][iorb ]
1073
+ jorb = basisref [jasym ][jorb ]
1069
1074
# iasym-jasym-iorb-jorb
1070
1075
for i in range (slices .stop - slices .start ):
1071
1076
if ian < jan :
1072
- continue
1077
+ if fiorb == fjorb : # this might have problems
1078
+ overlap_param [f"{ jasym } -{ iasym } -{ jorb } -{ iorb } -{ i } " ] = ((overlap [pos_line , slices ][i ] + overlap [rev_line , slices ][i ])* 0.5 ).tolist ()
1079
+ else :
1080
+ overlap_param [f"{ jasym } -{ iasym } -{ jorb } -{ iorb } -{ i } " ] = overlap [pos_line , slices ][i ].tolist ()
1073
1081
elif ian > jan :
1074
1082
if fiorb == fjorb : # this might have problems
1075
1083
overlap_param [f"{ iasym } -{ jasym } -{ iorb } -{ jorb } -{ i } " ] = ((overlap [pos_line , slices ][i ] + overlap [rev_line , slices ][i ])* 0.5 ).tolist ()
1076
1084
else :
1077
1085
overlap_param [f"{ iasym } -{ jasym } -{ iorb } -{ jorb } -{ i } " ] = overlap [pos_line , slices ][i ].tolist ()
1078
- iiorb = self .idp_sk .full_basis_to_basis [iasym ].get (fjorb )
1079
- jjorb = self .idp_sk .full_basis_to_basis [jasym ].get (fiorb )
1080
- if to_uniform :
1081
- iiorb = basisref [iasym ][iiorb ]
1082
- jjorb = basisref [jasym ][jjorb ]
1083
- overlap_param [f"{ iasym } -{ jasym } -{ iiorb } -{ jjorb } -{ i } " ] = overlap [rev_line , slices ][i ].tolist ()
1086
+ # iiorb = self.idp_sk.full_basis_to_basis[iasym].get(fjorb)
1087
+ # jjorb = self.idp_sk.full_basis_to_basis[jasym].get(fiorb)
1088
+ # if to_uniform:
1089
+ # iiorb = basisref[iasym][iiorb]
1090
+ # jjorb = basisref[jasym][jjorb]
1091
+ # overlap_param[f"{iasym}-{jasym}-{iiorb}-{jjorb}-{i}"] = overlap[rev_line, slices][i].tolist()
1084
1092
elif ian == jan :
1085
1093
if self .idp_sk .full_basis .index (fiorb ) <= self .idp_sk .full_basis .index (fjorb ):
1086
1094
overlap_param [f"{ iasym } -{ jasym } -{ iorb } -{ jorb } -{ i } " ] = overlap [pos_line , slices ][i ].tolist ()
@@ -1093,6 +1101,8 @@ def to_json(self, version=2, basisref=None):
1093
1101
for asym in self .idp_sk .type_names :
1094
1102
for orbpair , slices in self .idp_sk .skonsite_maps .items ():
1095
1103
fiorb , fjorb = orbpair .split ("-" )
1104
+ if fiorb not in self .idp_sk .full_basis_to_basis [asym ] or fjorb not in self .idp_sk .full_basis_to_basis [asym ]:
1105
+ continue
1096
1106
if fiorb != fjorb :
1097
1107
iorb = self .idp_sk .full_basis_to_basis [asym ][fiorb ]
1098
1108
jorb = self .idp_sk .full_basis_to_basis [asym ][fjorb ]
@@ -1112,6 +1122,8 @@ def to_json(self, version=2, basisref=None):
1112
1122
ian , jan = torch .tensor (atomic_num_dict [iasym ]), torch .tensor (atomic_num_dict [jasym ])
1113
1123
for orbpair , slices in self .idp_sk .orbpair_maps .items ():
1114
1124
fiorb , fjorb = orbpair .split ("-" )
1125
+ if fiorb not in self .idp_sk .full_basis_to_basis [iasym ] or fjorb not in self .idp_sk .full_basis_to_basis [jasym ]:
1126
+ continue
1115
1127
iorb = self .idp_sk .full_basis_to_basis [iasym ].get (fiorb )
1116
1128
jorb = self .idp_sk .full_basis_to_basis [jasym ].get (fjorb )
1117
1129
if to_uniform :
@@ -1128,6 +1140,8 @@ def to_json(self, version=2, basisref=None):
1128
1140
for asym in self .idp_sk .type_names :
1129
1141
for orbpair , slices in self .idp_sk .skonsite_maps .items ():
1130
1142
fiorb , fjorb = orbpair .split ("-" )
1143
+ if fiorb not in self .idp_sk .full_basis_to_basis [asym ] or fjorb not in self .idp_sk .full_basis_to_basis [asym ]:
1144
+ continue
1131
1145
iorb = self .idp_sk .full_basis_to_basis [asym ][fiorb ]
1132
1146
jorb = self .idp_sk .full_basis_to_basis [asym ][fjorb ]
1133
1147
if to_uniform :
@@ -1154,6 +1168,8 @@ def to_json(self, version=2, basisref=None):
1154
1168
for asym in self .idp_sk .type_names :
1155
1169
for fiorb , slices in self .idp_sk .sksoc_maps .items ():
1156
1170
iorb = self .idp_sk .full_basis_to_basis [asym ][fiorb ]
1171
+ if fiorb not in self .idp_sk .full_basis_to_basis [asym ]:
1172
+ continue
1157
1173
if to_uniform :
1158
1174
iorb = basisref [asym ][iorb ]
1159
1175
for i in range (slices .start , slices .stop ):
0 commit comments