Skip to main content

Python class to interface with QUESTAAL Quantum codes which is a suite of electronic structure programs.

Project description

PyQUESTAAL

DOI

This is a calculator class that has been written to interface calculations done using QUESTAAL with highthroughput calculators like ASE.

Note: The module can be used as a stand alone python controller for questaal jobs as well.

Features

  • make symmetry line files supported by QUESTAAL on the fly with a given structure
  • plot bands directly (requires plotquestaal.py)
  • relaxations included
  • can read forces from output files
  • Control number of processors

Installation

  1. Copy the files lmf.py to the working directory
  2. Import them and use !
  3. Make sure "lmf" is recognizable in the path and also modify the type of mpi call. default "mpirun"

Examples

Simple example usage shown in simple_examples.ipynb Comprehensive example shown in tutorial_example.ipynb

To use it with ASE, one can do something like

from lmf import lmf #load the lmf calculator
import numpy as np
from ase.io import read
from ase.units import kJ
from ase.eos import EquationOfState
from ase import Atoms
from ase.io.trajectory import Trajectory
def test():
    a = 4.0  # approximate lattice constant
    b = a / 2
    ag = Atoms('Ag',
               cell=[(0, b, b), (b, 0, b), (b, b, 0)],
               pbc=1,
               calculator=lmf()) # Use QUESTAAL's LMF as calculator
    cell = ag.get_cell()
    traj = Trajectory('Ag.traj', 'w')
    for x in np.linspace(0.95, 1.05, 5):
        ag.set_cell(cell * x, scale_atoms=True)
        ag.get_potential_energy()
        traj.write(ag)
    

    configs = read('Ag.traj@0:5')  # read 5 configurations
    # Extract volumes and energies:
    volumes = [ag.get_volume() for ag in configs]
    energies = [ag.get_potential_energy() for ag in configs]
    eos = EquationOfState(volumes, energies)
    v0, e0, B = eos.fit()
    print(B / kJ * 1.0e24, 'GPa')
    eos.plot('Ag-eos.png')
test()

Citation

If you find this work useful, please cite using

@misc{https://doi.org/10.5281/zenodo.4292415,
  doi = {10.5281/ZENODO.4292415},
  url = {https://zenodo.org/record/4292415},
  author = {Radha, Santosh Kumar},
  title = {pyQuestaal: An python interface or Questaal quantum codes.},
  publisher = {Zenodo},
  year = {2020},
  copyright = {Open Access}
}

To Do

  • control over all variables
  • Interface with pyamtgen
  • Add the developed lattice relaxation module which uses Genetic Algorithm
  • Make more standalone
  • More complex parser for questaal output (look for questaal-reader repo)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyquestaal-0.2.3.tar.gz (6.4 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page