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