Running PyZFS with Qbox

This tutorial assumes that a density functional theory calculation with Qbox has already been completed.

[1]:
%cd ../../examples/o2_qbox_xml
/pyzfs/examples/o2_qbox_xml

1 Command line interface

[2]:
%%bash
pyzfs --wfcfmt qbox --filename o2.xml
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PyZFS code 2.3
2026-03-14 22:43:42
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
pyzfs.run: setting working directory as "."...

QboxWavefunctionLoader: scanning current working directory "/pyzfs/examples/o2_qbox_xml"...

Reading wavefunction from file o2.xml
   nuwfcs = 7, ndwfcs = 5, nwfcs = 12
     spin = up     band = 1     file = o2.xml
     spin = up     band = 2     file = o2.xml
     spin = up     band = 3     file = o2.xml
     spin = up     band = 4     file = o2.xml
     spin = up     band = 5     file = o2.xml
     spin = up     band = 6     file = o2.xml
     spin = up     band = 7     file = o2.xml
     spin = down     band = 1     file = o2.xml
     spin = down     band = 2     file = o2.xml
     spin = down     band = 3     file = o2.xml
     spin = down     band = 4     file = o2.xml
     spin = down     band = 5     file = o2.xml

System Overview:
  Cell:
{   'G1': array([0.66497797, 0.        , 0.        ]),
    'G2': array([0.        , 0.66497797, 0.        ]),
    'G3': array([0.        , 0.        , 0.66497797]),
    'R1': array([9.448712, 0.      , 0.      ]),
    'R2': array([0.      , 9.448712, 0.      ]),
    'R3': array([0.      , 0.      , 9.448712]),
    'ase_cell': Atoms(symbols='O2', pbc=True, cell=[5.00006941616, 5.00006941616, 5.00006941616]),
    'omega': 843.5636071689257}
  FFT Grid:
{'N': 4096, 'n1': 16, 'n2': 16, 'n3': 16}


pyzfs.run: instantializing ZFSCalculation with following arguments...
{ 'ae': False,
  'ae_reduce': 4,
  'comm': <mpi4py.MPI.Intracomm object at 0x102a003b0>,
  'memory': 'critical',
  'prefix': 'pwscf',
  'wfcloader': <pyzfs.common.wfc.qboxloader.QboxWavefunctionLoader object at 0x102a4b260>}


  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): 62.28 MB
  Total memory usage (all processes): 62.28 MB
  (process 0) 2 orbitals (16%) loaded in 0.000315s...
  (process 0) 4 orbitals (33%) loaded in 0.000201s...
  (process 0) 6 orbitals (50%) loaded in 0.000195s...
  (process 0) 8 orbitals (66%) loaded in 0.000186s...
  (process 0) 10 orbitals (83%) loaded in 0.000196s...
  (process 0) 12 orbitals (100%) loaded in 0.000175s...

  Memory usage (on process 0):
    iorb_psir_map 0.38 MB
    iorb_rhog_map 0.00 MB
    I          0.01 MB

  Total memory usage (on process 0): 63.03 MB
  Total memory usage (all processes): 63.03 MB
  Time elapsed for loading wfc: 0s

  Computing dipole-dipole interaction tensor in G space...


  Memory usage (on process 0):
    iorb_psir_map 0.38 MB
    iorb_rhog_map 0.00 MB
    ddig       0.19 MB
    I          0.01 MB

  Total memory usage (on process 0): 63.61 MB
  Total memory usage (all processes): 63.61 MB

  Iterating over pairs...

  (process 0) 1 pairs (1%) computed in 0.000017s...
  (process 0) 2 pairs (2%) computed in 0.001132s...
  (process 0) 3 pairs (3%) computed in 0.000422s...
  (process 0) 4 pairs (5%) computed in 0.000346s...
  (process 0) 5 pairs (6%) computed in 0.000336s...
  (process 0) 6 pairs (7%) computed in 0.000335s...
  (process 0) 7 pairs (8%) computed in 0.000468s...
  (process 0) 8 pairs (10%) computed in 0.000331s...
  (process 0) 9 pairs (11%) computed in 0.000327s...
  (process 0) 10 pairs (12%) computed in 0.000326s...
  (process 0) 11 pairs (14%) computed in 0.000325s...
  (process 0) 12 pairs (15%) computed in 0.000324s...
  (process 0) 13 pairs (16%) computed in 0.000002s...
  (process 0) 14 pairs (17%) computed in 0.000329s...
  (process 0) 15 pairs (19%) computed in 0.000330s...
  (process 0) 16 pairs (20%) computed in 0.000328s...
  (process 0) 17 pairs (21%) computed in 0.000328s...
  (process 0) 18 pairs (23%) computed in 0.000326s...
  (process 0) 19 pairs (24%) computed in 0.000323s...
  (process 0) 20 pairs (25%) computed in 0.000721s...
  (process 0) 21 pairs (26%) computed in 0.000334s...
  (process 0) 22 pairs (28%) computed in 0.000329s...
  (process 0) 23 pairs (29%) computed in 0.000324s...
  (process 0) 24 pairs (30%) computed in 0.000001s...
  (process 0) 25 pairs (32%) computed in 0.000326s...
  (process 0) 26 pairs (33%) computed in 0.000324s...
  (process 0) 27 pairs (34%) computed in 0.000328s...
  (process 0) 28 pairs (35%) computed in 0.000326s...
  (process 0) 29 pairs (37%) computed in 0.000325s...
  (process 0) 30 pairs (38%) computed in 0.001191s...
  (process 0) 31 pairs (39%) computed in 0.000327s...
  (process 0) 32 pairs (41%) computed in 0.000326s...
  (process 0) 33 pairs (42%) computed in 0.000324s...
  (process 0) 34 pairs (43%) computed in 0.000002s...
  (process 0) 35 pairs (44%) computed in 0.000324s...
  (process 0) 36 pairs (46%) computed in 0.000784s...
  (process 0) 37 pairs (47%) computed in 0.000987s...
  (process 0) 38 pairs (48%) computed in 0.000807s...
  (process 0) 39 pairs (50%) computed in 0.000796s...
  (process 0) 40 pairs (51%) computed in 0.000802s...
  (process 0) 41 pairs (52%) computed in 0.000789s...
  (process 0) 42 pairs (53%) computed in 0.000795s...
  (process 0) 43 pairs (55%) computed in 0.000005s...
  (process 0) 44 pairs (56%) computed in 0.000786s...
  (process 0) 45 pairs (57%) computed in 0.000794s...
  (process 0) 46 pairs (58%) computed in 0.000786s...
  (process 0) 47 pairs (60%) computed in 0.000791s...
  (process 0) 48 pairs (61%) computed in 0.000784s...
  (process 0) 49 pairs (62%) computed in 0.000788s...
  (process 0) 50 pairs (64%) computed in 0.000554s...
  (process 0) 51 pairs (65%) computed in 0.000008s...
  (process 0) 52 pairs (66%) computed in 0.000360s...
  (process 0) 53 pairs (67%) computed in 0.000348s...
  (process 0) 54 pairs (69%) computed in 0.000345s...
  (process 0) 55 pairs (70%) computed in 0.000337s...
  (process 0) 56 pairs (71%) computed in 0.000708s...
  (process 0) 57 pairs (73%) computed in 0.000333s...
  (process 0) 58 pairs (74%) computed in 0.000003s...
  (process 0) 59 pairs (75%) computed in 0.000332s...
  (process 0) 60 pairs (76%) computed in 0.000333s...
  (process 0) 61 pairs (78%) computed in 0.000334s...
  (process 0) 62 pairs (79%) computed in 0.000334s...
  (process 0) 63 pairs (80%) computed in 0.000332s...
  (process 0) 64 pairs (82%) computed in 0.000004s...
  (process 0) 65 pairs (83%) computed in 0.000332s...
  (process 0) 66 pairs (84%) computed in 0.000340s...
  (process 0) 67 pairs (85%) computed in 0.000332s...
  (process 0) 68 pairs (87%) computed in 0.000331s...
  (process 0) 69 pairs (88%) computed in 0.000003s...
  (process 0) 70 pairs (89%) computed in 0.000329s...
  (process 0) 71 pairs (91%) computed in 0.000330s...
  (process 0) 72 pairs (92%) computed in 0.000328s...
  (process 0) 73 pairs (93%) computed in 0.000001s...
  (process 0) 74 pairs (94%) computed in 0.000329s...
  (process 0) 75 pairs (96%) computed in 0.000328s...
  (process 0) 76 pairs (97%) computed in 0.000002s...
  (process 0) 77 pairs (98%) computed in 0.000330s...
  (process 0) 78 pairs (100%) computed in 0.000001s...


  Total D tensor (MHz):
  [[-8.35479598e+03  6.04449841e-01  2.29018026e-01]
   [ 6.04449841e-01 -8.35479606e+03  1.24204179e-01]
   [ 2.29018026e-01  1.24204179e-01  1.67095920e+04]]
  D eigenvalues (MHz):
  [-8355.40047224 -8354.19157483 16709.59204707]
  D eigenvectors:
  [ 7.07082904e-01 -7.07130657e-01 -2.95655974e-06]
  [-7.07130657e-01 -7.07082904e-01  9.96530782e-06]
  [9.13730752e-06 4.95562477e-06 1.00000000e+00]
  Dx, Dy, Dz (|Dz| > |Dx| > |Dy|) (MHz):
   -8355.400472244126 -8354.191574829296 16709.59204707317
  Scalar D = 25064.39 MHz, E = -0.60 MHz
  Time elapsed for pair iteration: 0s

2 Python library interface

2.1 Load PyZFS

[3]:
from pyzfs.common.wfc.qboxloader import QboxWavefunctionLoader
from pyzfs.zfs.main import ZFSCalculation

2.2 Construct wavefunction loader

[4]:
wfcloader = QboxWavefunctionLoader(filename="o2.xml")

QboxWavefunctionLoader: scanning current working directory "/pyzfs/examples/o2_qbox_xml"...

Reading wavefunction from file o2.xml
   nuwfcs = 7, ndwfcs = 5, nwfcs = 12
     spin = up     band = 1     file = o2.xml
     spin = up     band = 2     file = o2.xml
     spin = up     band = 3     file = o2.xml
     spin = up     band = 4     file = o2.xml
     spin = up     band = 5     file = o2.xml
     spin = up     band = 6     file = o2.xml
     spin = up     band = 7     file = o2.xml
     spin = down     band = 1     file = o2.xml
     spin = down     band = 2     file = o2.xml
     spin = down     band = 3     file = o2.xml
     spin = down     band = 4     file = o2.xml
     spin = down     band = 5     file = o2.xml

System Overview:
  Cell:
{   'G1': array([0.66497797, 0.        , 0.        ]),
    'G2': array([0.        , 0.66497797, 0.        ]),
    'G3': array([0.        , 0.        , 0.66497797]),
    'R1': array([9.448712, 0.      , 0.      ]),
    'R2': array([0.      , 9.448712, 0.      ]),
    'R3': array([0.      , 0.      , 9.448712]),
    'ase_cell': Atoms(symbols='O2', pbc=True, cell=[5.00006941616, 5.00006941616, 5.00006941616]),
    'omega': 843.5636071689257}
  FFT Grid:
{'N': 4096, 'n1': 16, 'n2': 16, 'n3': 16}

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): 96.16 MB
  Total memory usage (all processes): 96.16 MB

2.4 Perform ZFS calculation

[6]:
zfscalc.solve()
  (process 0) 2 orbitals (16%) loaded in 0.004308s...
  (process 0) 4 orbitals (33%) loaded in 0.003059s...
  (process 0) 6 orbitals (50%) loaded in 0.001334s...
  (process 0) 8 orbitals (66%) loaded in 0.001345s...
  (process 0) 10 orbitals (83%) loaded in 0.001702s...
  (process 0) 12 orbitals (100%) loaded in 0.001397s...

  Memory usage (on process 0):
    iorb_psir_map 0.38 MB
    iorb_rhog_map 0.00 MB
    I          0.01 MB

  Total memory usage (on process 0): 97.00 MB
  Total memory usage (all processes): 97.00 MB
  Time elapsed for loading wfc: 0s

  Computing dipole-dipole interaction tensor in G space...


  Memory usage (on process 0):
    iorb_psir_map 0.38 MB
    iorb_rhog_map 0.00 MB
    ddig       0.19 MB
    I          0.01 MB

  Total memory usage (on process 0): 97.91 MB
  Total memory usage (all processes): 97.91 MB

  Iterating over pairs...

  (process 0) 1 pairs (1%) computed in 0.000040s...
  (process 0) 2 pairs (2%) computed in 0.011990s...
  (process 0) 3 pairs (3%) computed in 0.001393s...
  (process 0) 4 pairs (5%) computed in 0.003238s...
  (process 0) 5 pairs (6%) computed in 0.003851s...
  (process 0) 6 pairs (7%) computed in 0.001558s...
  (process 0) 7 pairs (8%) computed in 0.003500s...
  (process 0) 8 pairs (10%) computed in 0.001206s...
  (process 0) 9 pairs (11%) computed in 0.000735s...
  (process 0) 10 pairs (12%) computed in 0.000854s...
  (process 0) 11 pairs (14%) computed in 0.000749s...
  (process 0) 12 pairs (15%) computed in 0.000895s...
  (process 0) 13 pairs (16%) computed in 0.000010s...
  (process 0) 14 pairs (17%) computed in 0.000733s...
  (process 0) 15 pairs (19%) computed in 0.000779s...
  (process 0) 16 pairs (20%) computed in 0.001832s...
  (process 0) 17 pairs (21%) computed in 0.001529s...
  (process 0) 18 pairs (23%) computed in 0.002410s...
  (process 0) 19 pairs (24%) computed in 0.000934s...
  (process 0) 20 pairs (25%) computed in 0.000796s...
  (process 0) 21 pairs (26%) computed in 0.002261s...
  (process 0) 22 pairs (28%) computed in 0.001467s...
  (process 0) 23 pairs (29%) computed in 0.001356s...
  (process 0) 24 pairs (30%) computed in 0.000017s...
  (process 0) 25 pairs (32%) computed in 0.000904s...
  (process 0) 26 pairs (33%) computed in 0.000693s...
  (process 0) 27 pairs (34%) computed in 0.000679s...
  (process 0) 28 pairs (35%) computed in 0.000645s...
  (process 0) 29 pairs (37%) computed in 0.000635s...
  (process 0) 30 pairs (38%) computed in 0.000641s...
  (process 0) 31 pairs (39%) computed in 0.000624s...
  (process 0) 32 pairs (41%) computed in 0.000622s...
  (process 0) 33 pairs (42%) computed in 0.000623s...
  (process 0) 34 pairs (43%) computed in 0.000007s...
  (process 0) 35 pairs (44%) computed in 0.000634s...
  (process 0) 36 pairs (46%) computed in 0.000621s...
  (process 0) 37 pairs (47%) computed in 0.000624s...
  (process 0) 38 pairs (48%) computed in 0.000623s...
  (process 0) 39 pairs (50%) computed in 0.000620s...
  (process 0) 40 pairs (51%) computed in 0.000624s...
  (process 0) 41 pairs (52%) computed in 0.000620s...
  (process 0) 42 pairs (53%) computed in 0.002299s...
  (process 0) 43 pairs (55%) computed in 0.000011s...
  (process 0) 44 pairs (56%) computed in 0.000541s...
  (process 0) 45 pairs (57%) computed in 0.001330s...
  (process 0) 46 pairs (58%) computed in 0.000479s...
  (process 0) 47 pairs (60%) computed in 0.000569s...
  (process 0) 48 pairs (61%) computed in 0.000468s...
  (process 0) 49 pairs (62%) computed in 0.000563s...
  (process 0) 50 pairs (64%) computed in 0.000467s...
  (process 0) 51 pairs (65%) computed in 0.000006s...
  (process 0) 52 pairs (66%) computed in 0.000559s...
  (process 0) 53 pairs (67%) computed in 0.000467s...
  (process 0) 54 pairs (69%) computed in 0.000542s...
  (process 0) 55 pairs (70%) computed in 0.000448s...
  (process 0) 56 pairs (71%) computed in 0.000538s...
  (process 0) 57 pairs (73%) computed in 0.000446s...
  (process 0) 58 pairs (74%) computed in 0.000005s...
  (process 0) 59 pairs (75%) computed in 0.000535s...
  (process 0) 60 pairs (76%) computed in 0.000466s...
  (process 0) 61 pairs (78%) computed in 0.000538s...
  (process 0) 62 pairs (79%) computed in 0.000452s...
  (process 0) 63 pairs (80%) computed in 0.000510s...
  (process 0) 64 pairs (82%) computed in 0.000005s...
  (process 0) 65 pairs (83%) computed in 0.000422s...
  (process 0) 66 pairs (84%) computed in 0.000508s...
  (process 0) 67 pairs (85%) computed in 0.000425s...
  (process 0) 68 pairs (87%) computed in 0.000509s...
  (process 0) 69 pairs (88%) computed in 0.000005s...
  (process 0) 70 pairs (89%) computed in 0.001238s...
  (process 0) 71 pairs (91%) computed in 0.000504s...
  (process 0) 72 pairs (92%) computed in 0.000418s...
  (process 0) 73 pairs (93%) computed in 0.000004s...
  (process 0) 74 pairs (94%) computed in 0.000502s...
  (process 0) 75 pairs (96%) computed in 0.000416s...
  (process 0) 76 pairs (97%) computed in 0.000004s...
  (process 0) 77 pairs (98%) computed in 0.000501s...
  (process 0) 78 pairs (100%) computed in 0.000005s...


  Total D tensor (MHz):
  [[-8.35479598e+03  6.04449841e-01  2.29018026e-01]
   [ 6.04449841e-01 -8.35479606e+03  1.24204179e-01]
   [ 2.29018026e-01  1.24204179e-01  1.67095920e+04]]
  D eigenvalues (MHz):
  [-8355.40047224 -8354.19157483 16709.59204707]
  D eigenvectors:
  [ 7.07082904e-01 -7.07130657e-01 -2.95655974e-06]
  [-7.07130657e-01 -7.07082904e-01  9.96530782e-06]
  [9.13730752e-06 4.95562477e-06 1.00000000e+00]
  Dx, Dy, Dz (|Dz| > |Dx| > |Dy|) (MHz):
   -8355.40047224412 -8354.19157482929 16709.59204707317
  Scalar D = 25064.39 MHz, E = -0.60 MHz
  Time elapsed for pair iteration: 0s