Skip to content

Commit 22f8804

Browse files
committed
To support OpenMX 3.9 *scfout.
1 parent 36a0349 commit 22f8804

File tree

2 files changed

+58
-2
lines changed

2 files changed

+58
-2
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name = "DFTforge"
22
uuid = "bdfbc6b8-a7f8-11e8-26c1-51ecc9f04035"
33
authors = ["Hongkee Yoon <bluehope@gmail.com>"]
4-
version = "1.0.1"
4+
version = "1.1.0"
55

66

77

src/backend/OpenMX_read_scf.jl

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -184,12 +184,38 @@ function read_scf(scf_name::AbstractString)
184184

185185
f = open(scf_name,"r")
186186
atomnum = read(f,Int32)
187-
SpinP_switch = read(f,Int32)
187+
#SpinP_switch = read(f,Int32)
188+
version_info = read(f,Int32)
189+
190+
version = Int32(round(version_info / 4))
191+
SpinP_switch = rem(version_info, 4)
192+
193+
openmxVersion = "notset";
194+
if (version==0)
195+
openmxVersion="3.7, 3.8 or an older distribution";
196+
elseif (version==1)
197+
openmxVersion="3.7.x (for development of HWC)";
198+
elseif (version==2)
199+
openmxVersion="3.7.x (for development of HWF)";
200+
elseif (version==3)
201+
openmxVersion="3.9";
202+
end
203+
print("version: ",version," SpinP_switch:", SpinP_switch, " ", openmxVersion )
204+
# Endian conversion
205+
188206
Catomnum = read(f,Int32)
189207
Latomnum = read(f,Int32)
190208
Ratomnum = read(f,Int32)
191209
TCpyCell = read(f,Int32)
192210

211+
212+
# Added in OpenMX3.9
213+
order_max = 1
214+
if (0 < version)
215+
order_max = read(f,Int32)
216+
@assert(1==order_max) # if not 1 check the code
217+
end
218+
193219
# atv
194220
atv = zeros(Float64,TCpyCell+1,3)
195221
for Rn=1:TCpyCell+1
@@ -325,6 +351,9 @@ function read_scf(scf_name::AbstractString)
325351
OLPpoz = Array{Array{Array{Array{Float64}}}}(undef,atomnum);
326352
DM = Array{Array{Array{Array{Array{Float64}}}}}(undef,SpinP_switch+1)
327353

354+
iDM = Array{Array{Array{Array{Array{Float64}}}}}(undef,2) # OpenMx 3.9
355+
356+
328357
for spin = 1:SpinP_switch+1
329358
Hks[spin] = Array{Array{Array{Array{Float64}}}}(undef,atomnum)
330359
init_Hamil!(Hks, spin, atomnum, Total_NumOrbs, FNAN, natn)
@@ -355,6 +384,22 @@ function read_scf(scf_name::AbstractString)
355384
read_OLPmat!(f, OLPpoy, atomnum, Total_NumOrbs, FNAN, natn)
356385
read_OLPmat!(f, OLPpoz, atomnum, Total_NumOrbs, FNAN, natn)
357386

387+
# Added OpenMX 3.9 OLPmo
388+
OLPmox = Array{Array{Array{Array{Float64}}}}(undef,atomnum);
389+
OLPmoy = Array{Array{Array{Array{Float64}}}}(undef,atomnum);
390+
OLPmoz = Array{Array{Array{Array{Float64}}}}(undef,atomnum);
391+
392+
if 0 < version # OpenMx 3.9 or above
393+
init_OLPmat!(OLPmox, atomnum, Total_NumOrbs, FNAN, natn)
394+
init_OLPmat!(OLPmoy, atomnum, Total_NumOrbs, FNAN, natn)
395+
init_OLPmat!(OLPmoz, atomnum, Total_NumOrbs, FNAN, natn)
396+
397+
398+
read_OLPmat!(f, OLPmox, atomnum, Total_NumOrbs, FNAN, natn)
399+
read_OLPmat!(f, OLPmoy, atomnum, Total_NumOrbs, FNAN, natn)
400+
read_OLPmat!(f, OLPmoz, atomnum, Total_NumOrbs, FNAN, natn)
401+
402+
end
358403
#for spin = 1:3
359404
# iHks[spin] = Array(Array{Array{Array{Float64,},},},atomnum)
360405
# init_Hamil!(iHks,spin)
@@ -367,6 +412,16 @@ function read_scf(scf_name::AbstractString)
367412
for spin = 1:SpinP_switch+1
368413
read_Hamil(f, DM, spin, atomnum, Total_NumOrbs, FNAN, natn, 1.0)
369414
end
415+
416+
if 0 < version # OpenMx 3.9 or above
417+
for spin = 1:2
418+
iDM[spin] = Array{Array{Array{Array{Float64}}}}(undef,atomnum)
419+
init_Hamil!(iDM, spin, atomnum, Total_NumOrbs,FNAN, natn)
420+
end
421+
for spin = 1:2
422+
read_Hamil(f, iDM, spin, atomnum, Total_NumOrbs, FNAN, natn, 1.0)
423+
end
424+
end
370425
#############
371426
# Solver
372427
#############
@@ -388,6 +443,7 @@ function read_scf(scf_name::AbstractString)
388443
Total_SpinS = d_vec[10];
389444

390445

446+
print("ChemP ",ChemP, " E_temp:",E_Temp)
391447
#
392448
########################
393449
# input file

0 commit comments

Comments
 (0)