Running PyZFS with Quantum ESPRESSO
This tutorial assumes that a density functional theory calculation with Quantum ESPRESSO has already been completed.
[1]:
%cd ../../examples/o2_qe_hdf5
/pyzfs/examples/o2_qe_hdf5
1 Command line interface
[2]:
%%bash
pyzfs --wfcfmt qeh5
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PyZFS code 2.3
2026-03-14 22:45:43
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
pyzfs.run: setting working directory as "."...
QEHDF5WavefunctionLoader: scanning current working directory "/Soft/pyzfs/examples/o2_qe_hdf5"...
nuwfcs = 7, ndwfcs = 5, nwfcs = 12
spin = up band = 1 file = wfcup1.hdf5
spin = up band = 2 file = wfcup1.hdf5
spin = up band = 3 file = wfcup1.hdf5
spin = up band = 4 file = wfcup1.hdf5
spin = up band = 5 file = wfcup1.hdf5
spin = up band = 6 file = wfcup1.hdf5
spin = up band = 7 file = wfcup1.hdf5
spin = down band = 1 file = wfcdw1.hdf5
spin = down band = 2 file = wfcdw1.hdf5
spin = down band = 3 file = wfcdw1.hdf5
spin = down band = 4 file = wfcdw1.hdf5
spin = down band = 5 file = wfcdw1.hdf5
System Overview:
Cell:
{ 'G1': array([0.6649793, 0. , 0. ]),
'G2': array([0. , 0.6649793, 0. ]),
'G3': array([0. , 0. , 0.6649793]),
'R1': array([9.44869303, 0. , 0. ]),
'R2': array([0. , 9.44869303, 0. ]),
'R3': array([0. , 0. , 9.44869303]),
'ase_cell': Atoms(symbols='', pbc=True, cell=[5.000059375176199, 5.000059375176199, 5.000059375176199]),
'omega': 843.5585251245784}
FFT Grid:
{'N': 2197, 'n1': 13, 'n2': 13, 'n3': 13}
pyzfs.run: instantializing ZFSCalculation with following arguments...
{ 'ae': False,
'ae_reduce': 4,
'comm': <mpi4py.MPI.Intracomm object at 0x1045dc3f0>,
'memory': 'critical',
'wfcloader': <pyzfs.common.wfc.qeh5loader.QEHDF5WavefunctionLoader object at 0x105060e30>}
Zero Field Splitting Calculation Created...
ProcessGrid (square) info:
rank -> (irow, icol) mapping:
[[0 0]]
(irow, icol) -> rank mapping:
[[0]]
rank onroot nrow ncol size irow icol is_active rowcomm_rank colcomm_rank
0 True 1 1 1 0 0 True 0 0
Creating I array...
DistributedMatrix info: I
irow icol nrow ncol m mloc mstart mend n nloc nstart nend val.shape
0 0 1 1 12 12 0 12 12 12 0 12 (12, 12, 6)
Index map:
[[[ 0 12 12 0 12 12]]]
Memory usage (on process 0):
iorb_psir_map 0.00 MB
iorb_rhog_map 0.00 MB
I 0.01 MB
Total memory usage (on process 0): 71.33 MB
Total memory usage (all processes): 71.33 MB
QEHDF5WavefunctionLoader: loading orbitals into memory... (memory mode: "critical")
(process 0) 2 orbitals (16%) loaded in 0.000457s...
(process 0) 4 orbitals (33%) loaded in 0.000009s...
(process 0) 6 orbitals (50%) loaded in 0.000006s...
(process 0) 8 orbitals (66%) loaded in 0.000550s...
(process 0) 10 orbitals (83%) loaded in 0.000011s...
(process 0) 12 orbitals (100%) loaded in 0.000006s...
QEHDF5WavefunctionLoader: root -> first column scattering
QEHDF5WavefunctionLoader: first column -> other column bcast
QEHDF5WavefunctionLoader: root -> first row scattering
QEHDF5WavefunctionLoader: first row -> other row bcast
Memory usage (on process 0):
iorb_psir_map 0.00 MB
iorb_rhog_map 0.00 MB
I 0.01 MB
Total memory usage (on process 0): 73.97 MB
Total memory usage (all processes): 73.97 MB
Time elapsed for loading wfc: 0s
Computing dipole-dipole interaction tensor in G space...
Memory usage (on process 0):
iorb_psir_map 0.00 MB
iorb_rhog_map 0.00 MB
ddig 0.10 MB
I 0.01 MB
Total memory usage (on process 0): 74.19 MB
Total memory usage (all processes): 74.19 MB
Iterating over pairs...
(process 0) 1 pairs (1%) computed in 0.000018s...
(process 0) 2 pairs (2%) computed in 0.001202s...
(process 0) 3 pairs (3%) computed in 0.000985s...
(process 0) 4 pairs (5%) computed in 0.000961s...
(process 0) 5 pairs (6%) computed in 0.000953s...
(process 0) 6 pairs (7%) computed in 0.000947s...
(process 0) 7 pairs (8%) computed in 0.000950s...
(process 0) 8 pairs (10%) computed in 0.000947s...
(process 0) 9 pairs (11%) computed in 0.000952s...
(process 0) 10 pairs (12%) computed in 0.000942s...
(process 0) 11 pairs (14%) computed in 0.000946s...
(process 0) 12 pairs (15%) computed in 0.000945s...
(process 0) 13 pairs (16%) computed in 0.000003s...
(process 0) 14 pairs (17%) computed in 0.004230s...
(process 0) 15 pairs (19%) computed in 0.001041s...
(process 0) 16 pairs (20%) computed in 0.000952s...
(process 0) 17 pairs (21%) computed in 0.000946s...
(process 0) 18 pairs (23%) computed in 0.000938s...
(process 0) 19 pairs (24%) computed in 0.000943s...
(process 0) 20 pairs (25%) computed in 0.000928s...
(process 0) 21 pairs (26%) computed in 0.000927s...
(process 0) 22 pairs (28%) computed in 0.000928s...
(process 0) 23 pairs (29%) computed in 0.000921s...
(process 0) 24 pairs (30%) computed in 0.000003s...
(process 0) 25 pairs (32%) computed in 0.000922s...
(process 0) 26 pairs (33%) computed in 0.000921s...
(process 0) 27 pairs (34%) computed in 0.000926s...
(process 0) 28 pairs (35%) computed in 0.000926s...
(process 0) 29 pairs (37%) computed in 0.000926s...
(process 0) 30 pairs (38%) computed in 0.000921s...
(process 0) 31 pairs (39%) computed in 0.002386s...
(process 0) 32 pairs (41%) computed in 0.002148s...
(process 0) 33 pairs (42%) computed in 0.002111s...
(process 0) 34 pairs (43%) computed in 0.000006s...
(process 0) 35 pairs (44%) computed in 0.002117s...
(process 0) 36 pairs (46%) computed in 0.001665s...
(process 0) 37 pairs (47%) computed in 0.000928s...
(process 0) 38 pairs (48%) computed in 0.000926s...
(process 0) 39 pairs (50%) computed in 0.000924s...
(process 0) 40 pairs (51%) computed in 0.000921s...
(process 0) 41 pairs (52%) computed in 0.000920s...
(process 0) 42 pairs (53%) computed in 0.000918s...
(process 0) 43 pairs (55%) computed in 0.000002s...
(process 0) 44 pairs (56%) computed in 0.000919s...
(process 0) 45 pairs (57%) computed in 0.000918s...
(process 0) 46 pairs (58%) computed in 0.000920s...
(process 0) 47 pairs (60%) computed in 0.000919s...
(process 0) 48 pairs (61%) computed in 0.000927s...
(process 0) 49 pairs (62%) computed in 0.000919s...
(process 0) 50 pairs (64%) computed in 0.000919s...
(process 0) 51 pairs (65%) computed in 0.000002s...
(process 0) 52 pairs (66%) computed in 0.002188s...
(process 0) 53 pairs (67%) computed in 0.002234s...
(process 0) 54 pairs (69%) computed in 0.002291s...
(process 0) 55 pairs (70%) computed in 0.002171s...
(process 0) 56 pairs (71%) computed in 0.001795s...
(process 0) 57 pairs (73%) computed in 0.000951s...
(process 0) 58 pairs (74%) computed in 0.000003s...
(process 0) 59 pairs (75%) computed in 0.000942s...
(process 0) 60 pairs (76%) computed in 0.000937s...
(process 0) 61 pairs (78%) computed in 0.000935s...
(process 0) 62 pairs (79%) computed in 0.000934s...
(process 0) 63 pairs (80%) computed in 0.000938s...
(process 0) 64 pairs (82%) computed in 0.000002s...
(process 0) 65 pairs (83%) computed in 0.000934s...
(process 0) 66 pairs (84%) computed in 0.000941s...
(process 0) 67 pairs (85%) computed in 0.000937s...
(process 0) 68 pairs (87%) computed in 0.000937s...
(process 0) 69 pairs (88%) computed in 0.000002s...
(process 0) 70 pairs (89%) computed in 0.001776s...
(process 0) 71 pairs (91%) computed in 0.002149s...
(process 0) 72 pairs (92%) computed in 0.002127s...
(process 0) 73 pairs (93%) computed in 0.000005s...
(process 0) 74 pairs (94%) computed in 0.002114s...
(process 0) 75 pairs (96%) computed in 0.002120s...
(process 0) 76 pairs (97%) computed in 0.000005s...
(process 0) 77 pairs (98%) computed in 0.001114s...
(process 0) 78 pairs (100%) computed in 0.000005s...
Total D tensor (MHz):
[[-8.12869282e+03 -1.13306984e-02 -9.48395672e-02]
[-1.13306984e-02 -8.12864850e+03 6.11415721e-02]
[-9.48395672e-02 6.11415721e-02 1.62573413e+04]]
D eigenvalues (MHz):
[16257.34132152 -8128.69554578 -8128.64577574]
D eigenvectors:
[ 3.88909468e-06 -2.50724357e-06 -1.00000000e+00]
[9.72196405e-01 2.34166928e-01 3.19385034e-06]
[-2.34166928e-01 9.72196405e-01 -3.34823054e-06]
Dx, Dy, Dz (|Dz| > |Dx| > |Dy|) (MHz):
-8128.695545782452 -8128.645775741561 16257.341321523892
Scalar D = 24386.01 MHz, E = -0.02 MHz
Time elapsed for pair iteration: 0s
2 Python library interface
2.1 Load PyZFS
[3]:
from pyzfs.common.wfc.qeh5loader import QEHDF5WavefunctionLoader
from pyzfs.zfs.main import ZFSCalculation
2.2 Construct wavefunction loader
[4]:
wfcloader = QEHDF5WavefunctionLoader(fftgrid="wave")
QEHDF5WavefunctionLoader: scanning current working directory "/Soft/pyzfs/examples/o2_qe_hdf5"...
nuwfcs = 7, ndwfcs = 5, nwfcs = 12
spin = up band = 1 file = wfcup1.hdf5
spin = up band = 2 file = wfcup1.hdf5
spin = up band = 3 file = wfcup1.hdf5
spin = up band = 4 file = wfcup1.hdf5
spin = up band = 5 file = wfcup1.hdf5
spin = up band = 6 file = wfcup1.hdf5
spin = up band = 7 file = wfcup1.hdf5
spin = down band = 1 file = wfcdw1.hdf5
spin = down band = 2 file = wfcdw1.hdf5
spin = down band = 3 file = wfcdw1.hdf5
spin = down band = 4 file = wfcdw1.hdf5
spin = down band = 5 file = wfcdw1.hdf5
System Overview:
Cell:
{ 'G1': array([0.6649793, 0. , 0. ]),
'G2': array([0. , 0.6649793, 0. ]),
'G3': array([0. , 0. , 0.6649793]),
'R1': array([9.44869303, 0. , 0. ]),
'R2': array([0. , 9.44869303, 0. ]),
'R3': array([0. , 0. , 9.44869303]),
'ase_cell': Atoms(symbols='', pbc=True, cell=[5.000059375176199, 5.000059375176199, 5.000059375176199]),
'omega': 843.5585251245784}
FFT Grid:
{'N': 2197, 'n1': 13, 'n2': 13, 'n3': 13}
2.3 Construct ZFSCalculation
[5]:
zfscalc = ZFSCalculation(wfcloader=wfcloader)
Zero Field Splitting Calculation Created...
ProcessGrid (square) info:
rank -> (irow, icol) mapping:
[[0 0]]
(irow, icol) -> rank mapping:
[[0]]
rank onroot nrow ncol size irow icol is_active rowcomm_rank colcomm_rank
0 True 1 1 1 0 0 True 0 0
Creating I array...
DistributedMatrix info: I
irow icol nrow ncol m mloc mstart mend n nloc nstart nend val.shape
0 0 1 1 12 12 0 12 12 12 0 12 (12, 12, 6)
Index map:
[[[ 0 12 12 0 12 12]]]
Memory usage (on process 0):
iorb_psir_map 0.00 MB
iorb_rhog_map 0.00 MB
I 0.01 MB
Total memory usage (on process 0): 175.22 MB
Total memory usage (all processes): 175.22 MB
2.4 Perform ZFS calculation
[6]:
zfscalc.solve()
QEHDF5WavefunctionLoader: loading orbitals into memory... (memory mode: "critical")
(process 0) 2 orbitals (16%) loaded in 0.001204s...
(process 0) 4 orbitals (33%) loaded in 0.000067s...
(process 0) 6 orbitals (50%) loaded in 0.000026s...
(process 0) 8 orbitals (66%) loaded in 0.001220s...
(process 0) 10 orbitals (83%) loaded in 0.000043s...
(process 0) 12 orbitals (100%) loaded in 0.000023s...
QEHDF5WavefunctionLoader: root -> first column scattering
QEHDF5WavefunctionLoader: first column -> other column bcast
QEHDF5WavefunctionLoader: root -> first row scattering
QEHDF5WavefunctionLoader: first row -> other row bcast
Memory usage (on process 0):
iorb_psir_map 0.00 MB
iorb_rhog_map 0.00 MB
I 0.01 MB
Total memory usage (on process 0): 177.41 MB
Total memory usage (all processes): 177.41 MB
Time elapsed for loading wfc: 0s
Computing dipole-dipole interaction tensor in G space...
Memory usage (on process 0):
iorb_psir_map 0.00 MB
iorb_rhog_map 0.00 MB
ddig 0.10 MB
I 0.01 MB
Total memory usage (on process 0): 177.44 MB
Total memory usage (all processes): 177.44 MB
Iterating over pairs...
(process 0) 1 pairs (1%) computed in 0.000070s...
(process 0) 2 pairs (2%) computed in 0.005600s...
(process 0) 3 pairs (3%) computed in 0.007995s...
(process 0) 4 pairs (5%) computed in 0.002362s...
(process 0) 5 pairs (6%) computed in 0.002402s...
(process 0) 6 pairs (7%) computed in 0.001789s...
(process 0) 7 pairs (8%) computed in 0.001507s...
(process 0) 8 pairs (10%) computed in 0.008006s...
(process 0) 9 pairs (11%) computed in 0.001806s...
(process 0) 10 pairs (12%) computed in 0.001392s...
(process 0) 11 pairs (14%) computed in 0.001427s...
(process 0) 12 pairs (15%) computed in 0.004495s...
(process 0) 13 pairs (16%) computed in 0.000048s...
(process 0) 14 pairs (17%) computed in 0.001733s...
(process 0) 15 pairs (19%) computed in 0.005424s...
(process 0) 16 pairs (20%) computed in 0.003515s...
(process 0) 17 pairs (21%) computed in 0.001599s...
(process 0) 18 pairs (23%) computed in 0.001585s...
(process 0) 19 pairs (24%) computed in 0.002625s...
(process 0) 20 pairs (25%) computed in 0.002453s...
(process 0) 21 pairs (26%) computed in 0.002372s...
(process 0) 22 pairs (28%) computed in 0.002324s...
(process 0) 23 pairs (29%) computed in 0.002390s...
(process 0) 24 pairs (30%) computed in 0.000021s...
(process 0) 25 pairs (32%) computed in 0.001504s...
(process 0) 26 pairs (33%) computed in 0.001189s...
(process 0) 27 pairs (34%) computed in 0.001152s...
(process 0) 28 pairs (35%) computed in 0.001214s...
(process 0) 29 pairs (37%) computed in 0.001169s...
(process 0) 30 pairs (38%) computed in 0.001128s...
(process 0) 31 pairs (39%) computed in 0.001117s...
(process 0) 32 pairs (41%) computed in 0.001123s...
(process 0) 33 pairs (42%) computed in 0.001074s...
(process 0) 34 pairs (43%) computed in 0.000007s...
(process 0) 35 pairs (44%) computed in 0.001060s...
(process 0) 36 pairs (46%) computed in 0.001057s...
(process 0) 37 pairs (47%) computed in 0.001052s...
(process 0) 38 pairs (48%) computed in 0.001047s...
(process 0) 39 pairs (50%) computed in 0.001106s...
(process 0) 40 pairs (51%) computed in 0.001048s...
(process 0) 41 pairs (52%) computed in 0.001047s...
(process 0) 42 pairs (53%) computed in 0.001049s...
(process 0) 43 pairs (55%) computed in 0.000007s...
(process 0) 44 pairs (56%) computed in 0.001077s...
(process 0) 45 pairs (57%) computed in 0.001062s...
(process 0) 46 pairs (58%) computed in 0.001073s...
(process 0) 47 pairs (60%) computed in 0.001053s...
(process 0) 48 pairs (61%) computed in 0.001055s...
(process 0) 49 pairs (62%) computed in 0.001094s...
(process 0) 50 pairs (64%) computed in 0.001064s...
(process 0) 51 pairs (65%) computed in 0.000007s...
(process 0) 52 pairs (66%) computed in 0.001061s...
(process 0) 53 pairs (67%) computed in 0.001059s...
(process 0) 54 pairs (69%) computed in 0.001089s...
(process 0) 55 pairs (70%) computed in 0.001707s...
(process 0) 56 pairs (71%) computed in 0.001053s...
(process 0) 57 pairs (73%) computed in 0.001042s...
(process 0) 58 pairs (74%) computed in 0.000007s...
(process 0) 59 pairs (75%) computed in 0.001043s...
(process 0) 60 pairs (76%) computed in 0.001707s...
(process 0) 61 pairs (78%) computed in 0.002411s...
(process 0) 62 pairs (79%) computed in 0.002365s...
(process 0) 63 pairs (80%) computed in 0.002350s...
(process 0) 64 pairs (82%) computed in 0.000015s...
(process 0) 65 pairs (83%) computed in 0.002495s...
(process 0) 66 pairs (84%) computed in 0.001052s...
(process 0) 67 pairs (85%) computed in 0.001035s...
(process 0) 68 pairs (87%) computed in 0.001096s...
(process 0) 69 pairs (88%) computed in 0.000007s...
(process 0) 70 pairs (89%) computed in 0.002327s...
(process 0) 71 pairs (91%) computed in 0.002350s...
(process 0) 72 pairs (92%) computed in 0.001077s...
(process 0) 73 pairs (93%) computed in 0.000006s...
(process 0) 74 pairs (94%) computed in 0.001041s...
(process 0) 75 pairs (96%) computed in 0.001046s...
(process 0) 76 pairs (97%) computed in 0.000007s...
(process 0) 77 pairs (98%) computed in 0.005601s...
(process 0) 78 pairs (100%) computed in 0.000041s...
Total D tensor (MHz):
[[-8.12869282e+03 -1.13306984e-02 -9.48395672e-02]
[-1.13306984e-02 -8.12864850e+03 6.11415721e-02]
[-9.48395672e-02 6.11415721e-02 1.62573413e+04]]
D eigenvalues (MHz):
[16257.34132152 -8128.69554578 -8128.64577574]
D eigenvectors:
[ 3.88909468e-06 -2.50724357e-06 -1.00000000e+00]
[9.72196405e-01 2.34166928e-01 3.19385034e-06]
[-2.34166928e-01 9.72196405e-01 -3.34823054e-06]
Dx, Dy, Dz (|Dz| > |Dx| > |Dy|) (MHz):
-8128.695545782452 -8128.645775741561 16257.341321523892
Scalar D = 24386.01 MHz, E = -0.02 MHz
Time elapsed for pair iteration: 0s