Skip to content

Commit 4a23dca

Browse files
committed
add manually input overlap matrix feature with example
1 parent 6ba57b4 commit 4a23dca

19 files changed

+477
-31
lines changed

dptb/postprocess/elec_struc_cal.py

Lines changed: 24 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import os
2-
32
import h5py
43
import numpy as np
54
from ase.io import read
@@ -139,32 +138,34 @@ def get_data(self,
139138
data = data
140139
else:
141140
raise ValueError('data should be either a string, ase.Atoms, or AtomicData')
142-
143-
if device is None:
144-
device = self.device
145-
data = AtomicData.to_AtomicDataDict(data.to(device))
146-
data = self.model.idp(data)
147141

148142
if isinstance(override_overlap, str):
149143
assert os.path.exists(override_overlap), "Overlap file not found."
150144
overlap_blocks = h5py.File(override_overlap, "r")
151145
if len(overlap_blocks) != 1:
152146
log.info('Overlap file contains more than one overlap matrix, only first will be used.')
153-
data[AtomicDataDict.NODE_OVERLAP_KEY] = None
154-
data[AtomicDataDict.EDGE_OVERLAP_KEY] = None
147+
if self.overlap:
148+
log.warning('override_overlap is enabled while model contains overlap, override_overlap will be used.')
155149
if "0" in overlap_blocks:
156150
overlaps = overlap_blocks["0"]
157151
else:
158152
overlaps = overlap_blocks["1"]
159-
block_to_feature(data, self.model.idp, False, overlaps)
160-
self.eigv = Eigenvalues(
161-
idp=self.model.idp,
162-
device=self.device,
163-
s_edge_field=AtomicDataDict.EDGE_OVERLAP_KEY,
164-
s_node_field=AtomicDataDict.NODE_OVERLAP_KEY,
165-
s_out_field=AtomicDataDict.OVERLAP_KEY,
166-
dtype=self.model.dtype,
167-
)
153+
block_to_feature(data, self.model.idp, blocks=False, overlap_blocks=overlaps)
154+
if not self.overlap:
155+
self.eigv = Eigenvalues(
156+
idp=self.model.idp,
157+
device=self.device,
158+
s_edge_field=AtomicDataDict.EDGE_OVERLAP_KEY,
159+
s_node_field=AtomicDataDict.NODE_OVERLAP_KEY,
160+
s_out_field=AtomicDataDict.OVERLAP_KEY,
161+
dtype=self.model.dtype,
162+
)
163+
overlap_blocks.close()
164+
165+
if device is None:
166+
device = self.device
167+
data = AtomicData.to_AtomicDataDict(data.to(device))
168+
data = self.model.idp(data)
168169

169170
return data
170171

@@ -199,8 +200,14 @@ def get_eigs(self,
199200
# set the kpoint of the AtomicData
200201
data[AtomicDataDict.KPOINT_KEY] = \
201202
torch.nested.as_nested_tensor([torch.as_tensor(klist, dtype=self.model.dtype, device=self.device)])
203+
if isinstance(override_overlap, str):
204+
override_overlap_edge = data[AtomicDataDict.EDGE_OVERLAP_KEY]
205+
override_overlap_node = data[AtomicDataDict.NODE_OVERLAP_KEY]
202206
# get the eigenvalues
203207
data = self.model(data)
208+
if isinstance(override_overlap, str):
209+
data[AtomicDataDict.EDGE_OVERLAP_KEY] = override_overlap_edge
210+
data[AtomicDataDict.NODE_OVERLAP_KEY] = override_overlap_node
204211
if self.overlap or isinstance(override_overlap, str):
205212
assert data.get(AtomicDataDict.EDGE_OVERLAP_KEY) is not None
206213
data = self.eigv(data)
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
14
2+
14
3+
14
4+
14
5+
14
6+
14
7+
14
8+
14
9+
14
10+
14
11+
14
12+
14
13+
14
14+
14
15+
14
16+
14
17+
14
18+
14
19+
14
20+
14
21+
14
22+
14
23+
14
24+
14
25+
14
26+
14
27+
14
28+
14
29+
14
30+
14
31+
14
32+
14
33+
14
34+
14
35+
14
36+
14
37+
14
38+
14
39+
14
40+
14
41+
14
42+
14
43+
14
44+
14
45+
14
46+
14
47+
14
48+
14
49+
14
50+
14
51+
14
52+
14
53+
14
54+
14
55+
14
56+
14
57+
14
58+
14
59+
14
60+
14
61+
14
62+
14
63+
14
64+
14
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{'Si': '1s1p'}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
1.088740444183349609e+01 0.000000000000000000e+00 0.000000000000000000e+00
2+
0.000000000000000000e+00 1.088740444183349609e+01 0.000000000000000000e+00
3+
0.000000000000000000e+00 0.000000000000000000e+00 1.088740444183349609e+01
Binary file not shown.
992 Bytes
Binary file not shown.
2.21 MB
Binary file not shown.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
1.000000000000000000e+00
2+
1.000000000000000000e+00
3+
1.000000000000000000e+00
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
1.085161685943603516e+01 1.280032098293304443e-01 1.078928661346435547e+01
2+
1.841060072183609009e-02 1.989128626883029938e-02 5.386826038360595703e+00
3+
1.083230304718017578e+01 5.443179607391357422e+00 1.084113216400146484e+01
4+
1.073209476470947266e+01 5.354926109313964844e+00 5.515145301818847656e+00
5+
5.484899997711181641e+00 1.084975528717041016e+01 1.489288061857223511e-01
6+
5.495874404907226562e+00 5.350070446729660034e-02 5.522494316101074219e+00
7+
5.428655624389648438e+00 5.469603061676025391e+00 5.730040743947029114e-02
8+
5.486892223358154297e+00 5.412618637084960938e+00 5.512423515319824219e+00
9+
5.753992870450019836e-02 2.735220670700073242e+00 2.737147808074951172e+00
10+
9.110579639673233032e-02 2.743179321289062500e+00 8.217595100402832031e+00
11+
5.919481441378593445e-02 8.242929458618164062e+00 2.665236473083496094e+00
12+
1.213727816939353943e-01 8.150724411010742188e+00 8.206772804260253906e+00
13+
5.396494388580322266e+00 2.671355247497558594e+00 2.717561483383178711e+00
14+
5.411704063415527344e+00 2.765727281570434570e+00 8.161295890808105469e+00
15+
5.338889122009277344e+00 8.191737174987792969e+00 2.803484678268432617e+00
16+
5.485008716583251953e+00 8.147904396057128906e+00 8.188732147216796875e+00
17+
2.697985887527465820e+00 2.655328989028930664e+00 1.086999511718750000e+01
18+
2.803299665451049805e+00 2.753925323486328125e+00 5.408394336700439453e+00
19+
2.731758594512939453e+00 8.291128158569335938e+00 1.087376213073730469e+01
20+
2.743048667907714844e+00 8.140621185302734375e+00 5.500893592834472656e+00
21+
8.194023132324218750e+00 2.727316379547119141e+00 1.087789916992187500e+01
22+
8.145998954772949219e+00 2.603254556655883789e+00 5.454698085784912109e+00
23+
7.996123313903808594e+00 8.126315116882324219e+00 5.489429086446762085e-02
24+
8.157540321350097656e+00 8.178661346435546875e+00 5.396069526672363281e+00
25+
2.724681615829467773e+00 1.085770320892333984e+01 2.624702692031860352e+00
26+
2.642884731292724609e+00 1.709322445094585419e-02 8.155264854431152344e+00
27+
2.728481531143188477e+00 5.489842891693115234e+00 2.687501192092895508e+00
28+
2.719804286956787109e+00 5.382710933685302734e+00 8.202189445495605469e+00
29+
8.232271194458007812e+00 1.088958159089088440e-01 2.695187807083129883e+00
30+
8.190147399902343750e+00 1.076476860046386719e+01 8.095950126647949219e+00
31+
8.187970161437988281e+00 5.468699455261230469e+00 2.664496183395385742e+00
32+
8.083069801330566406e+00 5.405988216400146484e+00 8.226228713989257812e+00
33+
4.130180358886718750e+00 1.358443140983581543e+00 4.137616157531738281e+00
34+
4.051333904266357422e+00 1.297201514244079590e+00 9.625466346740722656e+00
35+
4.133435726165771484e+00 6.705410480499267578e+00 4.101284980773925781e+00
36+
4.076243877410888672e+00 6.794273376464843750e+00 9.562548637390136719e+00
37+
9.573958396911621094e+00 1.423081636428833008e+00 4.038333892822265625e+00
38+
9.454534530639648438e+00 1.340337395668029785e+00 9.410832405090332031e+00
39+
9.585140228271484375e+00 6.824736595153808594e+00 3.959444046020507812e+00
40+
9.489406585693359375e+00 6.853000164031982422e+00 9.511748313903808594e+00
41+
1.335405468940734863e+00 1.307370305061340332e+00 1.314915299415588379e+00
42+
1.366260290145874023e+00 1.351388096809387207e+00 6.778203964233398438e+00
43+
1.336178421974182129e+00 6.824344635009765625e+00 1.330636739730834961e+00
44+
1.347283601760864258e+00 6.734087944030761719e+00 6.762024879455566406e+00
45+
6.878825187683105469e+00 1.403963446617126465e+00 1.293412685394287109e+00
46+
6.797452926635742188e+00 1.434306621551513672e+00 6.866337299346923828e+00
47+
6.644256114959716797e+00 6.731377124786376953e+00 1.499554872512817383e+00
48+
6.844486236572265625e+00 6.848329544067382812e+00 6.809374332427978516e+00
49+
1.377604961395263672e+00 4.136429786682128906e+00 4.032868862152099609e+00
50+
1.389494061470031738e+00 4.109994888305664062e+00 9.576973915100097656e+00
51+
1.447992086410522461e+00 9.560729980468750000e+00 4.123854637145996094e+00
52+
1.328622579574584961e+00 9.550005912780761719e+00 9.473250389099121094e+00
53+
6.836505889892578125e+00 4.088655471801757812e+00 4.096276760101318359e+00
54+
6.809603214263916016e+00 4.098802566528320312e+00 9.570180892944335938e+00
55+
6.812346458435058594e+00 9.609702110290527344e+00 3.982939004898071289e+00
56+
6.827219009399414062e+00 9.470495223999023438e+00 9.475601196289062500e+00
57+
4.046401500701904297e+00 4.024322032928466797e+00 1.342819690704345703e+00
58+
4.066891670227050781e+00 4.043124675750732422e+00 6.784518241882324219e+00
59+
4.096853733062744141e+00 9.517572402954101562e+00 1.429788351058959961e+00
60+
4.126554965972900391e+00 9.538574218750000000e+00 6.838574409484863281e+00
61+
9.460348129272460938e+00 4.077964305877685547e+00 1.332836031913757324e+00
62+
9.455187797546386719e+00 3.956558942794799805e+00 6.875069141387939453e+00
63+
9.541971206665039062e+00 9.649669647216796875e+00 1.294305443763732910e+00
64+
9.570387840270996094e+00 9.492716789245605469e+00 6.793272018432617188e+00
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
Si64
2+
1.0
3+
1.088740444183349609e+01 0.000000000000000000e+00 0.000000000000000000e+00
4+
0.000000000000000000e+00 1.088740444183349609e+01 0.000000000000000000e+00
5+
0.000000000000000000e+00 0.000000000000000000e+00 1.088740444183349609e+01
6+
Si
7+
64
8+
Cart
9+
1.085161685943603516e+01 1.280032098293304443e-01 1.078928661346435547e+01
10+
1.841060072183609009e-02 1.989128626883029938e-02 5.386826038360595703e+00
11+
1.083230304718017578e+01 5.443179607391357422e+00 1.084113216400146484e+01
12+
1.073209476470947266e+01 5.354926109313964844e+00 5.515145301818847656e+00
13+
5.484899997711181641e+00 1.084975528717041016e+01 1.489288061857223511e-01
14+
5.495874404907226562e+00 5.350070446729660034e-02 5.522494316101074219e+00
15+
5.428655624389648438e+00 5.469603061676025391e+00 5.730040743947029114e-02
16+
5.486892223358154297e+00 5.412618637084960938e+00 5.512423515319824219e+00
17+
5.753992870450019836e-02 2.735220670700073242e+00 2.737147808074951172e+00
18+
9.110579639673233032e-02 2.743179321289062500e+00 8.217595100402832031e+00
19+
5.919481441378593445e-02 8.242929458618164062e+00 2.665236473083496094e+00
20+
1.213727816939353943e-01 8.150724411010742188e+00 8.206772804260253906e+00
21+
5.396494388580322266e+00 2.671355247497558594e+00 2.717561483383178711e+00
22+
5.411704063415527344e+00 2.765727281570434570e+00 8.161295890808105469e+00
23+
5.338889122009277344e+00 8.191737174987792969e+00 2.803484678268432617e+00
24+
5.485008716583251953e+00 8.147904396057128906e+00 8.188732147216796875e+00
25+
2.697985887527465820e+00 2.655328989028930664e+00 1.086999511718750000e+01
26+
2.803299665451049805e+00 2.753925323486328125e+00 5.408394336700439453e+00
27+
2.731758594512939453e+00 8.291128158569335938e+00 1.087376213073730469e+01
28+
2.743048667907714844e+00 8.140621185302734375e+00 5.500893592834472656e+00
29+
8.194023132324218750e+00 2.727316379547119141e+00 1.087789916992187500e+01
30+
8.145998954772949219e+00 2.603254556655883789e+00 5.454698085784912109e+00
31+
7.996123313903808594e+00 8.126315116882324219e+00 5.489429086446762085e-02
32+
8.157540321350097656e+00 8.178661346435546875e+00 5.396069526672363281e+00
33+
2.724681615829467773e+00 1.085770320892333984e+01 2.624702692031860352e+00
34+
2.642884731292724609e+00 1.709322445094585419e-02 8.155264854431152344e+00
35+
2.728481531143188477e+00 5.489842891693115234e+00 2.687501192092895508e+00
36+
2.719804286956787109e+00 5.382710933685302734e+00 8.202189445495605469e+00
37+
8.232271194458007812e+00 1.088958159089088440e-01 2.695187807083129883e+00
38+
8.190147399902343750e+00 1.076476860046386719e+01 8.095950126647949219e+00
39+
8.187970161437988281e+00 5.468699455261230469e+00 2.664496183395385742e+00
40+
8.083069801330566406e+00 5.405988216400146484e+00 8.226228713989257812e+00
41+
4.130180358886718750e+00 1.358443140983581543e+00 4.137616157531738281e+00
42+
4.051333904266357422e+00 1.297201514244079590e+00 9.625466346740722656e+00
43+
4.133435726165771484e+00 6.705410480499267578e+00 4.101284980773925781e+00
44+
4.076243877410888672e+00 6.794273376464843750e+00 9.562548637390136719e+00
45+
9.573958396911621094e+00 1.423081636428833008e+00 4.038333892822265625e+00
46+
9.454534530639648438e+00 1.340337395668029785e+00 9.410832405090332031e+00
47+
9.585140228271484375e+00 6.824736595153808594e+00 3.959444046020507812e+00
48+
9.489406585693359375e+00 6.853000164031982422e+00 9.511748313903808594e+00
49+
1.335405468940734863e+00 1.307370305061340332e+00 1.314915299415588379e+00
50+
1.366260290145874023e+00 1.351388096809387207e+00 6.778203964233398438e+00
51+
1.336178421974182129e+00 6.824344635009765625e+00 1.330636739730834961e+00
52+
1.347283601760864258e+00 6.734087944030761719e+00 6.762024879455566406e+00
53+
6.878825187683105469e+00 1.403963446617126465e+00 1.293412685394287109e+00
54+
6.797452926635742188e+00 1.434306621551513672e+00 6.866337299346923828e+00
55+
6.644256114959716797e+00 6.731377124786376953e+00 1.499554872512817383e+00
56+
6.844486236572265625e+00 6.848329544067382812e+00 6.809374332427978516e+00
57+
1.377604961395263672e+00 4.136429786682128906e+00 4.032868862152099609e+00
58+
1.389494061470031738e+00 4.109994888305664062e+00 9.576973915100097656e+00
59+
1.447992086410522461e+00 9.560729980468750000e+00 4.123854637145996094e+00
60+
1.328622579574584961e+00 9.550005912780761719e+00 9.473250389099121094e+00
61+
6.836505889892578125e+00 4.088655471801757812e+00 4.096276760101318359e+00
62+
6.809603214263916016e+00 4.098802566528320312e+00 9.570180892944335938e+00
63+
6.812346458435058594e+00 9.609702110290527344e+00 3.982939004898071289e+00
64+
6.827219009399414062e+00 9.470495223999023438e+00 9.475601196289062500e+00
65+
4.046401500701904297e+00 4.024322032928466797e+00 1.342819690704345703e+00
66+
4.066891670227050781e+00 4.043124675750732422e+00 6.784518241882324219e+00
67+
4.096853733062744141e+00 9.517572402954101562e+00 1.429788351058959961e+00
68+
4.126554965972900391e+00 9.538574218750000000e+00 6.838574409484863281e+00
69+
9.460348129272460938e+00 4.077964305877685547e+00 1.332836031913757324e+00
70+
9.455187797546386719e+00 3.956558942794799805e+00 6.875069141387939453e+00
71+
9.541971206665039062e+00 9.649669647216796875e+00 1.294305443763732910e+00
72+
9.570387840270996094e+00 9.492716789245605469e+00 6.793272018432617188e+00

0 commit comments

Comments
 (0)