mirror of https://github.com/abinit/abipy.git
Add run_gkq
This commit is contained in:
parent
cc6f164e1a
commit
386264f889
|
@ -0,0 +1,41 @@
|
|||
name: AbiPy linting
|
||||
|
||||
on: [push, pull_request]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
max-parallel: 4
|
||||
matrix:
|
||||
python-version: [3.7]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Set up Python ${{ matrix.python-version }}
|
||||
uses: actions/setup-python@v1
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
#- name: Lint with pycodestyle
|
||||
# run: |
|
||||
# pip install pycodestyle
|
||||
# pycodestyle abipy
|
||||
#- name: Lint with mypy
|
||||
# run: |
|
||||
# pip install mypy
|
||||
# mypy abipy
|
||||
- name: Lint with flake8
|
||||
run: |
|
||||
pip install flake8
|
||||
# stop the build if there are Python syntax errors or undefined names
|
||||
flake8 --count --show-source --statistics abipy
|
||||
# exit-zero treats all errors as warnings.
|
||||
flake8 --count --exit-zero --max-complexity=20 --statistics abipy
|
||||
- name: Lint with pylint
|
||||
run: |
|
||||
pip install pylint
|
||||
# stop the build if there are Python syntax errors or undefined names
|
||||
pylint --exit-zero abipy
|
|
@ -0,0 +1,43 @@
|
|||
name: AbiPy testing
|
||||
|
||||
on: [push, pull_request]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
strategy:
|
||||
max-parallel: 6
|
||||
matrix:
|
||||
os: [ubuntu-latest]
|
||||
python-version: [3.7]
|
||||
|
||||
runs-on: ${{ matrix.os }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v1
|
||||
- name: Set up Python ${{ matrix.python-version }}
|
||||
uses: actions/setup-python@v1
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
- name: Install binary dependencies (Linux)
|
||||
if: matrix.os == 'ubuntu-latest'
|
||||
run: |
|
||||
wget https://repo.continuum.io/miniconda/Miniconda2-latest-Linux-x86_64.sh -O miniconda.sh;
|
||||
bash miniconda.sh -b -p ${HOME}/miniconda
|
||||
export PATH="${HOME}/miniconda/bin:${PATH}"
|
||||
hash -r
|
||||
conda config --set always_yes yes --set changeps1 yes
|
||||
conda update -q conda
|
||||
# Useful for debugging any issues with conda
|
||||
conda info -a
|
||||
# Replace dep1 dep2 ... with your dependencies
|
||||
conda create -q -n test-environment python=${{ matrix.python-version }}
|
||||
source activate test-environment
|
||||
- name: Install Python dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install -r requirements.txt
|
||||
pip install -r requirements-optional.txt
|
||||
- name: Test with pytest
|
||||
run: |
|
||||
pip install -e .
|
||||
pytest abipy
|
|
@ -0,0 +1,130 @@
|
|||
#!/usr/bin/env python
|
||||
r"""
|
||||
Flow for computing e-ph matrix elements along a q-path
|
||||
======================================================
|
||||
|
||||
This example shows how to compute the phonon band structure of AlAs with AbiPy flows.
|
||||
The final results (out_DDB, out_DVDB) will be produced automatically at the end of the run
|
||||
and saved in ``flow_phonons/outdata/``.
|
||||
"""
|
||||
import sys
|
||||
import os
|
||||
import abipy.abilab as abilab
|
||||
import abipy.data as abidata
|
||||
|
||||
from abipy import flowtk
|
||||
|
||||
|
||||
def make_scf_input(ngkpt):
|
||||
"""
|
||||
This function constructs the input file for the GS calculation:
|
||||
"""
|
||||
structure = abidata.structure_from_ucell("AlAs")
|
||||
pseudos = abidata.pseudos("13al.981214.fhi", "33as.pspnc")
|
||||
gs_inp = abilab.AbinitInput(structure, pseudos=pseudos)
|
||||
|
||||
gs_inp.set_vars(
|
||||
nband=6,
|
||||
ecut=6.0,
|
||||
ngkpt=ngkpt,
|
||||
nshiftk=1,
|
||||
shiftk=[0, 0, 0],
|
||||
tolvrs=1.0e-10,
|
||||
)
|
||||
|
||||
return gs_inp
|
||||
|
||||
|
||||
def build_flow(options):
|
||||
"""
|
||||
Create a `Flow` for phonon calculations. The flow has two works.
|
||||
|
||||
The first work contains a single GS task that produces the WFK file used in DFPT
|
||||
Then we have multiple Works that are generated automatically
|
||||
in order to compute the dynamical matrix on a [2, 2, 2] mesh.
|
||||
Symmetries are taken into account: only q-points in the IBZ are generated and
|
||||
for each q-point only the independent atomic perturbations are computed.
|
||||
"""
|
||||
# Working directory (default is the name of the script with '.py' removed and "run_" replaced by "flow_")
|
||||
if not options.workdir:
|
||||
__file__ = os.path.join(os.getcwd(), "run_gkq.py")
|
||||
options.workdir = os.path.basename(__file__).replace(".py", "").replace("run_", "flow_")
|
||||
|
||||
# Use 2x2x2 both for k-mesh and q-mesh
|
||||
# Build input for GS calculation
|
||||
scf_input = make_scf_input(ngkpt=(2, 2, 2))
|
||||
|
||||
# Create flow to compute all the independent atomic perturbations
|
||||
# corresponding to a [4, 4, 4] q-mesh.
|
||||
# Electric field and Born effective charges are also computed.
|
||||
from abipy.flowtk.eph_flows import GkqPathFlow
|
||||
ngqpt = (2, 2, 2)
|
||||
#qpath_list = [[0.01, 0, 0], [0.02, 0, 0], [0.24, 0, 0], [0.45, 0, 0]]
|
||||
qpath_list = [[0.0, 0.0, 0.0], [0.01, 0, 0], [0.1, 0, 0],
|
||||
[0.24, 0, 0], [0.3, 0, 0], [0.45, 0, 0], [0.5, 0.0, 0.0]]
|
||||
|
||||
flow = GkqPathFlow.from_scf_input(options.workdir, scf_input,
|
||||
ngqpt, qpath_list, ndivsm=0, with_becs=True)
|
||||
|
||||
return flow
|
||||
|
||||
|
||||
# This block generates the thumbnails in the Abipy gallery.
|
||||
# You can safely REMOVE this part if you are using this script for production runs.
|
||||
if os.getenv("READTHEDOCS", False):
|
||||
__name__ = None
|
||||
import tempfile
|
||||
options = flowtk.build_flow_main_parser().parse_args(["-w", tempfile.mkdtemp()])
|
||||
build_flow(options).graphviz_imshow()
|
||||
|
||||
|
||||
@flowtk.flow_main
|
||||
def main(options):
|
||||
"""
|
||||
This is our main function that will be invoked by the script.
|
||||
flow_main is a decorator implementing the command line interface.
|
||||
Command line args are stored in `options`.
|
||||
"""
|
||||
return build_flow(options)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
|
||||
|
||||
############################################################################
|
||||
#
|
||||
# Run the script with:
|
||||
#
|
||||
# run_phonons.py -s
|
||||
#
|
||||
# then use:
|
||||
#
|
||||
# abirun.py flow_phonons history
|
||||
#
|
||||
# to get the list of actions perfomed by AbiPy to complete the flow.
|
||||
# Note how the ``PhononWork`` has merged all the partial DDB files produced by the PhononTasks
|
||||
#
|
||||
# .. code-block:: bash
|
||||
#
|
||||
# ===================================================================================================================================
|
||||
# ====================================== <PhononWork, node_id=241274, workdir=flow_phonons/w1> ================================
|
||||
# ===================================================================================================================================
|
||||
# [Thu Dec 7 22:55:02 2017] Finalized set to True
|
||||
# [Thu Dec 7 22:55:02 2017] Will call mrgddb to merge [ .... ]
|
||||
#
|
||||
# Now open the final DDB file with:
|
||||
#
|
||||
# abiopen.py flow_phonons/outdata/out_DDB
|
||||
#
|
||||
# and invoke anaddb to compute the phonon band structure and the phonon DOS with:
|
||||
#
|
||||
# .. code-block:: ipython
|
||||
#
|
||||
# In [1]: phbst_file, phdos_file = abifile.anaget_phbst_and_phdos_files()
|
||||
# In [2]: %matplotlib
|
||||
# In [3]: phbst_file.plot_phbands()
|
||||
#
|
||||
# .. image:: https://github.com/abinit/abipy_assets/blob/master/run_phonons.png?raw=true
|
||||
# :alt: Phonon band structure of AlAs.
|
||||
#
|
Loading…
Reference in New Issue