1+ using ACEhamiltonians, ACE
2+ using JSON, HDF5, JuLIP, LinearAlgebra
3+
4+ using ACEhamiltonians: Data, Params, write_modeljson,
5+ write_atomjson, wm2fn, fname2index
6+ using ACEhamiltonians. Predict: predict_main, predict_offsite_HS
7+ using ACEhamiltonians. Dictionary: recover_at,recover_model,recover_error
8+
9+ # # Model read
10+
11+ const hartree2ev = 27.2114
12+
13+ Hmodelfile = " ACEhamiltonians-data/offsite_models_ord1/10204186688118368371_H.json"
14+ # Hmodelfile = "ACEhamiltonians-data/offsite_models_ord1/14750835312950641338_H.json"
15+ # Hmodelfile = "ACEhamiltonians-data/optimized_model/offsite/4570230078043807257_H.json"
16+
17+ Hmodel_whole = read_dict (load_json (Hmodelfile))
18+ # NOTE: A wrong read here - I should have removed this function!
19+ # Hmodel_whole1 = recover_model(load_json(Hmodelfile))
20+
21+ model_dd = Hmodel_whole. ModelDD[1 ]
22+ # basis and coeffs - we are checking a offsite model so the mean field is just 0
23+ basis = model_dd. basis
24+ C = model_dd. coeffs
25+
26+ # read reference data, including Hamiltonian, overlap and positions
27+ fname = " ACEhamiltonians-data/reference_data/FCC/FCC-supercell-000.h5"
28+ # fname = "ACEhamiltonians-data/training_data/FCC/SK-supercell-001.h5"
29+ h5 = h5open (fname)
30+ dict = HDF5. read (h5[" aitb" ])
31+ H = dict[" H" ]
32+ at = get_atoms (fname)[2 ]
33+ i,j = 54 ,55
34+ st = ACEhamiltonians. DataProcess. get_state (at,[(i,j)])[1 ]
35+ cfg = ACEConfig (st)
36+
37+ A = ACE. evaluate (basis,cfg)
38+ AA = ACEhamiltonians. Fitting. evaluateval_real (A)
39+
40+ Hpred = sum ([AA[i] * C[i] for i = 1 : length (C)])
41+ Href = H[14 (i- 1 )+ 10 : 14 (i- 1 )+ 14 ,14 (j- 1 )+ 10 : 14 (j- 1 )+ 14 ]. * hartree2ev
42+ E = Hpred - Href
43+ rmse = norm (E)/ 5
44+
45+ rmse_total = 0
46+ k = 0
47+ for i = 1 : 20 : 729
48+ for j = 2 : 20 : 729
49+ st = ACEhamiltonians. DataProcess. get_state (at,[(i,j)])[1 ]
50+ cfg = ACEConfig (st)
51+
52+ A = ACE. evaluate (basis,cfg)
53+ AA = ACEhamiltonians. Fitting. evaluateval_real (A)
54+
55+ Hpred = sum ([AA[t] * C[t] for t = 1 : length (C)])
56+ Href = H[14 (i- 1 )+ 10 : 14 (i- 1 )+ 14 ,14 (j- 1 )+ 10 : 14 (j- 1 )+ 14 ]. * hartree2ev
57+ E = Hpred - Href
58+ rmse_total += norm (E)^ 2
59+ k += 1
60+ @show k
61+ end
62+ end
63+ rmse_total = sqrt (rmse_total/ 25 / k)
64+ @show log10 (rmse_total)
65+
66+ # # It returns ~-1.73 for (1,8) and ~-2.43 for (1,14), which is consistent to what we had in the paper
67+
68+ # # Onsite check
69+
70+ Hmodelfile = " ACEhamiltonians-data/onsite_models_ord2/1646489440533135164_H.json"
71+ Hmodel_whole = read_dict (load_json (Hmodelfile));
72+
73+ model_dd = Hmodel_whole. ModelDD[1 ]
74+ # basis, coeffs and mean
75+ basis = model_dd. basis
76+ C = model_dd. coeffs
77+ Mean = model_dd. mean
78+
79+ # read reference data, including Hamiltonian, overlap and positions
80+ fname = " ACEhamiltonians-data/reference_data/FCC/FCC-supercell-000.h5"
81+ # fname = "ACEhamiltonians-data/training_data/FCC/SK-supercell-001.h5"
82+ h5 = h5open (fname)
83+ dict = HDF5. read (h5[" aitb" ])
84+ H = dict[" H" ]
85+ at = get_atoms (fname)[2 ]
86+ i = 1
87+ st = ACE. PositionState .(Vector (JuLIP. Potentials. neigsz (JuLIP. neighbourlist (at,20.0 ),at,i)[2 ]))
88+ cfg = ACEConfig (st)
89+
90+ A = ACE. evaluate (basis,cfg)
91+ AA = ACEhamiltonians. Fitting. evaluateval_real (A)
92+
93+ Hpred = (sum ([AA[i] * C[i] for i = 1 : length (C)])+ Mean)
94+ Href = H[14 (i- 1 )+ 10 : 14 (i- 1 )+ 14 ,14 (i- 1 )+ 10 : 14 (i- 1 )+ 14 ]. * hartree2ev
95+ E = Hpred - Href
96+ rmse = norm (E)/ 5
97+
98+ rmse_total = 0
99+ k = 0
100+ for i = 1 : 5 : 729
101+ st = ACEhamiltonians. DataProcess. get_state (at,[(i,j)])[1 ]
102+ cfg = ACEConfig (st)
103+
104+ A = ACE. evaluate (basis,cfg)
105+ AA = ACEhamiltonians. Fitting. evaluateval_real (A)
106+
107+ Hpred = (sum ([AA[i] * C[i] for i = 1 : length (C)])+ Mean)
108+ Href = H[14 (i- 1 )+ 10 : 14 (i- 1 )+ 14 ,14 (i- 1 )+ 10 : 14 (i- 1 )+ 14 ]. * hartree2ev
109+ E = Hpred - Href
110+ rmse_total += norm (E)^ 2
111+ k += 1
112+ @show k
113+ end
114+
115+ rmse_total = sqrt (rmse_total/ 25 / k)
116+ @show log10 (rmse_total)
0 commit comments