FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

sphinx_parser/docs at main · pyiron/sphinx_parser · GitHub

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

Sphinx Parser

Overview

This hosts the python binder of the DFT code Sphinx.

How to use

Sphinx's input parser is created from the yaml-file located at src/input_data.yml. The input file is generated by src/generator.py. You can use the parser via:

from sphinx_parser.input import sphinx

This instance sphinx is used to create all possible input classes for Sphinx by choosing the class via dot-notation and call it. For example in order to generate the class kPoints, you can run:

kPoints = sphinx.basis.kPoints()

You can find the input in the parent class, i.e.:

basis = sphinx.basis(kPoints=kPoints)

Finally, you can translate it into the Sphinx format via:

from sphinx_parser.toolkit import to_sphinx

sphinx_input = to_sphinx(basis)

You can then write it to a file via:

with open('sphinx.in', 'w') as f:
    f.write(sphinx_input)

Minimum working example

import numpy as np
from ase.build import bulk
import os


cwd = "TEST"
if not os.path.exists(cwd):
    os.mkdir(cwd)

from sphinx_parser.toolkit import to_sphinx
from sphinx_parser.jobs import set_base_parameters
from sphinx_parser.output import collect_energy_dat

structure = bulk("Al", cubic=True)
structure[1].symbol = "Ni"

input_sx = set_base_parameters(structure)

with open(os.path.join(cwd, "input.sx"), "w") as f:
    f.write(to_sphinx(input_sx))

import subprocess

command = ["sphinx"]

process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, cwd=cwd)
stdout, stderr = process.communicate()

collect_energy_dat(os.path.join(cwd, "energy.dat"))

More detailed example:

import numpy as np
from ase.build import bulk
import os


cwd = "TEST"
# cwd.mkdir(exist_ok=True)
if not os.path.exists(cwd):
    os.mkdir(cwd)

from sphinx_parser.input import sphinx
from sphinx_parser.ase import get_structure_group
from sphinx_parser.toolkit import to_sphinx
from sphinx_parser.potential import get_paw_from_structure
from sphinx_parser.output import collect_energy_dat


structure = bulk("Al", cubic=True)
structure[1].symbol = "Ni"

struct_group, spin_lst = get_structure_group(structure)
main_group = sphinx.main(scfDiag=sphinx.main.scfDiag(maxSteps=10, blockCCG={}))
pawPot_group = get_paw_from_structure(structure)
basis_group = sphinx.basis(eCut=25, kPoint=sphinx.basis.kPoint(coords=3 * [0.5]))
paw_group = sphinx.PAWHamiltonian(xc=1, spinPolarized=False, ekt=0.2)
initial_guess_group = sphinx.initialGuess(
    waves=sphinx.initialGuess.waves(lcao=sphinx.initialGuess.waves.lcao()), rho=sphinx.initialGuess.rho(atomicOrbitals=True)
)

input_sx = sphinx(
    pawPot=pawPot_group, structure=struct_group, main=main_group, basis=basis_group, PAWHamiltonian=paw_group, initialGuess=initial_guess_group
)

with open(os.path.join(cwd, "input.sx"), "w") as f:
    f.write(to_sphinx(input_sx))

import subprocess

command = ["sphinx"]

process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True, cwd=cwd)
stdout, stderr = process.communicate()

collect_energy_dat(os.path.join(cwd, "energy.dat"))

Back | FazBrowse Home | New Git URL