Add bibliography, use releases for changelog

This commit is contained in:
Matteo Giantomassi 2017-12-26 22:18:40 +01:00
parent a6831795ea
commit 54854185f9
46 changed files with 707 additions and 345 deletions

View File

@ -1,28 +1,19 @@
.. _whats-new-0-3:
v0.3
----
* Add :ref:`abiview.py` script for a quick visualization of results.
* Fix bug in in Sigres.get_dataframe if QP states do not start with the same band index.
* Add ``mpirunner_options`` and ``shell_runner_options`` to TaskManager.
* Autodetect presence in the DDB_ of data required for the LO-TO splitting.
* DONE Solve problem with visualize in jupyter notebooks (files should be produced in workdir)
* DONE Change shifts default value in g0w0_with_ppmodel_inputs.
* DONE Finalize interface with phononwebsite_.
* Add robots for comparing/analyzing multiple files of the same type (DdbRobot, GsrRobot ...)
* :release:`0.3.0 <2017-12-26>`
* :feature:`0` Add :ref:`abiview.py` script for a quick visualization of results.
* :bug:`0 major` Fix bug in in Sigres.get_dataframe if QP states do not start with the same band index.
* :feature:`0` Add ``mpirunner_options`` and ``shell_runner_options`` to |TaskManager|.
* :feature:`0` Autodetect presence in the |DdbFile| of data required for the LO-TO splitting.
* :feature:`0` Solve problem with visualize in jupyter_ notebooks (files should be produced in workdir)
* :feature:`0` DONE Change shifts default value in :func:`abipy.abio.factories.g0w0_with_ppmodel_inputs`.
* :feature:`0` Finalize interface with the phononwebsite_.
* :feature:`0` Add robots for comparing/analyzing multiple files of the same type (|DdbRobot|, |GsrRobot| ...)
Some of the robot capabilities are exposed via the :ref:`abicomp.py` and the :ref:`abirun.py` scripts.
* Add several new options to :ref:`abirun.py`, :ref:`abicomp.py`, :ref:`abistruct.py` scripts.
* Significant improvements to the documentation and the website: add :ref:`plot-gallery` with matplotlib plots
* :feature:`0` Add several new options to :ref:`abirun.py`, :ref:`abicomp.py` and :ref:`abistruct.py` scripts.
* :support:`0` Significant improvements to the documentation and the website: add :ref:`plot-gallery` with matplotlib plots
and :ref:`flow-gallery` with AbiPy flows are now automatically generated.
.. _whats-new-0-2:
v0.2
----
Mar 10 2017
This is the first official release in which we have reached a relatively stable API
and a well-defined interface with the netcdf files produced by Abinit.
We recommend Abinit >= 8.0.8b, version 8.2.2 is required to analyze the electronic fatbands
saved in the FATBANDS.nc_ file.
* :release:`0.2.0 <2017-03-10>`
* :feature:`0` This is the first official release in which we have reached a relatively stable API
and a well-defined interface with the netcdf files produced by Abinit.
We recommend Abinit >= 8.0.8b, version 8.2.2 is required to analyze the electronic fatbands
saved in the FATBANDS.nc_ file.

View File

@ -123,7 +123,7 @@ def _stopping_criterion(runlevel, accuracy):
def _find_ecut_pawecutdg(ecut, pawecutdg, pseudos, accuracy='normal'):
"""Return a :class:`AttrDict` with the value of ecut and pawecutdg"""
"""Return a |AttrDict| with the value of ``ecut`` and ``pawecutdg``."""
# Get ecut and pawecutdg from the pseudo hints.
if ecut is None or (pawecutdg is None and any(p.ispaw for p in pseudos)):
has_hints = all(p.has_hints for p in pseudos)
@ -145,7 +145,7 @@ def _find_ecut_pawecutdg(ecut, pawecutdg, pseudos, accuracy='normal'):
def _find_scf_nband(structure, pseudos, electrons, spinat=None):
"""Find the value of nband."""
"""Find the value of ``nband``."""
if electrons.nband is not None: return electrons.nband
nsppol, smearing = electrons.nsppol, electrons.smearing
@ -186,7 +186,7 @@ def _get_shifts(shift_mode, structure):
centered otherwise.
Note: for some cases (e.g. body centered tetragonal), both the Symmetric and OneSymmetric may fail to satisfy the
`chksymbreak` condition (Abinit input variable).
``chksymbreak`` condition (Abinit input variable).
"""
if shift_mode == ShiftMode.GammaCentered:
return ((0, 0, 0))
@ -210,11 +210,11 @@ def gs_input(structure, pseudos,
kppa=None, ecut=None, pawecutdg=None, scf_nband=None, accuracy="normal", spin_mode="polarized",
smearing="fermi_dirac:0.1 eV", charge=0.0, scf_algorithm=None):
"""
Returns a :class:`AbinitInput` for ground-state calculation.
Returns a |AbinitInput| for ground-state calculation.
Args:
structure: :class:`Structure` object.
pseudos: List of filenames or list of :class:`Pseudo` objects or :class:`PseudoTable` object.
structure: |Structure| object.
pseudos: List of filenames or list of |Pseudo| objects or |PseudoTable| object.
kppa: Defines the sampling used for the SCF run. Defaults to 1000 if not given.
ecut: cutoff energy in Ha (if None, ecut is initialized from the pseudos according to accuracy)
pawecutdg: cutoff energy in Ha for PAW double-grid (if None, pawecutdg is initialized from the pseudos
@ -240,11 +240,11 @@ def ebands_input(structure, pseudos,
ecut=None, pawecutdg=None, scf_nband=None, accuracy="normal", spin_mode="polarized",
smearing="fermi_dirac:0.1 eV", charge=0.0, scf_algorithm=None, dos_kppa=None):
"""
Returns a :class:`MultiDataset` for band structure calculations.
Returns a |MultiDataset| object for band structure calculations.
Args:
structure: :class:`Structure` object.
pseudos: List of filenames or list of :class:`Pseudo` objects or :class:`PseudoTable` object.
structure: |Structure| object.
pseudos: List of filenames or list of |Pseudo| objects or |PseudoTable| object.
kppa: Defines the sampling used for the SCF run. Defaults to 1000 if not given.
nscf_nband: Number of bands included in the NSCF run. Set to scf_nband + 10 if None.
ndivsm: Number of divisions used to sample the smallest segment of the k-path.
@ -319,12 +319,12 @@ def ion_ioncell_relax_input(structure, pseudos,
ecut=None, pawecutdg=None, accuracy="normal", spin_mode="polarized",
smearing="fermi_dirac:0.1 eV", charge=0.0, scf_algorithm=None, shift_mode='Monkhorst-pack'):
"""
Returns a :class:`MultiDataset` for a structural relaxation. The first dataset optmizes the
Returns a |MultiDataset| for a structural relaxation. The first dataset optmizes the
atomic positions at fixed unit cell. The second datasets optimizes both ions and unit cell parameters.
Args:
structure: :class:`Structure` object.
pseudos: List of filenames or list of :class:`Pseudo` objects or :class:`PseudoTable` object.
structure: |Structure| object.
pseudos: List of filenames or list of |Pseudo| objects or |PseudoTable| object.
kppa: Defines the sampling used for the Brillouin zone.
nband: Number of bands included in the SCF run.
accuracy: Accuracy of the calculation.
@ -374,7 +374,7 @@ def ion_ioncell_relax_and_ebands_input(structure, pseudos,
ecut=None, pawecutdg=None, accuracy="normal", spin_mode="polarized",
smearing="fermi_dirac:0.1 eV", charge=0.0, scf_algorithm=None):
"""
Returns a :class:`MultiDataset` for a structural relaxation followed by a band structure run.
Returns a |MultiDataset| for a structural relaxation followed by a band structure run.
The first dataset optimizes the atomic positions at fixed unit cell.
The second datasets optimizes both ions and unit cell parameters.
The other datasets perform a band structure calculation.
@ -385,8 +385,8 @@ def ion_ioncell_relax_and_ebands_input(structure, pseudos,
second dataset to the inputs used for the band structure calculation.
Args:
structure: :class:`Structure` object.
pseudos: List of filenames or list of :class:`Pseudo` objects or :class:`PseudoTable` object.
structure: |Structure| object.
pseudos: List of filenames or list of |Pseudo| objects or |PseudoTable| object.
kppa: Defines the sampling used for the Brillouin zone.
nband: Number of bands included in the SCF run.
accuracy: Accuracy of the calculation.
@ -395,8 +395,7 @@ def ion_ioncell_relax_and_ebands_input(structure, pseudos,
charge: Electronic charge added to the unit cell.
scf_algorithm: Algorithm used for solving of the SCF cycle.
Returns:
:class:`MultiDataset` object
Returns: |MultiDataset| object
"""
structure = Structure.as_structure(structure)
@ -420,11 +419,11 @@ def g0w0_with_ppmodel_inputs(structure, pseudos,
ppmodel="godby", charge=0.0, scf_algorithm=None, inclvkb=2, scr_nband=None,
sigma_nband=None, gw_qprange=1):
"""
Returns a :class:`MultiDataset` object that performs G0W0 calculations with the plasmon pole approximation.
Returns a |MultiDataset| object that performs G0W0 calculations with the plasmon pole approximation.
Args:
structure: Pymatgen structure.
pseudos: List of filenames or list of :class:`Pseudo` objects or :class:`PseudoTable` object.
structure: |Structure| object.
pseudos: List of filenames or list of |Pseudo| objects or |PseudoTable| object.
kppa: Defines the sampling used for the SCF run.
nscf_nband: Number of bands included in the NSCF run.
ecuteps: Cutoff energy [Ha] for the screening matrix.
@ -446,9 +445,9 @@ def g0w0_with_ppmodel_inputs(structure, pseudos,
See Abinit docs for more detail. The default value makes the code compute the
QP energies for all the point in the IBZ and one band above and one band below the Fermi level.
.. warning:
.. versionchanged: 0.3
The default value of `shifts` changed in v0.3 from (0.5, 0.5, 0.5) to (0.0, 0.0, 0.0)
The default value of ``shifts`` changed in v0.3 from (0.5, 0.5, 0.5) to (0.0, 0.0, 0.0).
"""
structure = Structure.as_structure(structure)
@ -508,12 +507,13 @@ def g0w0_convergence_inputs(structure, pseudos, kppa, nscf_nband, ecuteps, ecuts
response_models=None, charge=0.0, scf_algorithm=None, inclvkb=2,
gw_qprange=1, gamma=True, nksmall=None, extra_abivars=None):
"""
Returns a :class:`MultiDataset` object to generate a G0W0 work for the given the material.
Returns a |MultiDataset| object to generate a G0W0 work for the given the material.
See also :cite:`Setten2017`.
Args:
structure: Pymatgen structure.
pseudos: List of `Pseudo` objects.
kppa: k poits per reciprocal atom
structure: |Structure| object
pseudos: List of |Pseudo| objects.
kppa: k points per reciprocal atom.
scf_nband: number of scf bands
ecut: ecut for all calcs that that are not ecut convergence cals at scf level
scf_ Defines the sampling used for the SCF run.
@ -703,13 +703,13 @@ def bse_with_mdf_inputs(structure, pseudos,
exc_type="TDA", bs_algo="haydock", accuracy="normal", spin_mode="polarized",
smearing="fermi_dirac:0.1 eV", charge=0.0, scf_algorithm=None):
"""
Returns a :class:`MultiDataset` object that performs a GS + NSCF + Bethe-Salpeter calculation.
Returns a |MultiDataset| object that performs a GS + NSCF + Bethe-Salpeter calculation.
The self-energy corrections are approximated with the scissors operator.
The screening is modeled with the model dielectric function.
Args:
structure: :class:`Structure` object.
pseudos: List of filenames or list of :class:`Pseudo` objects or :class:`PseudoTable` object.
structure: |Structure| object.
pseudos: List of filenames or list of |Pseudo| objects or |PseudoTable| object.
scf_kppa: Defines the sampling used for the SCF run.
nscf_nband: Number of bands included in the NSCF run.
nscf_ngkpt: Divisions of the k-mesh used for the NSCF and the BSE run.
@ -787,8 +787,8 @@ def scf_phonons_inputs(structure, pseudos, kppa,
GS input + the input files for the phonon calculation.
Args:
structure: :class:`Structure` object.
pseudos: List of filenames or list of :class:`Pseudo` objects or :class:`PseudoTable` object.
structure: |Structure| object.
pseudos: List of filenames or list of |Pseudo| objects or |PseudoTable| object.
kppa: Defines the sampling used for the SCF run.
ecut: cutoff energy in Ha (if None, ecut is initialized from the pseudos according to accuracy)
pawecutdg: cutoff energy in Ha for PAW double-grid (if None, pawecutdg is initialized from the
@ -860,13 +860,13 @@ def phonons_from_gsinput(gs_inp, ph_ngqpt=None, qpoints=None, with_ddk=True, wit
ph_tol=None, ddk_tol=None, dde_tol=None, wfq_tol=None, qpoints_to_skip=None):
"""
Returns a list of inputs in the form of a MultiDataset to perform phonon calculations, based on
a ground state AbinitInput.
a ground state |AbinitInput|.
It will determine if WFQ files should be calculated for some q points and add the NSCF AbinitInputs to the set.
The inputs have the following tags, according to their function: "ddk", "dde", "nscf", "ph_q_pert".
All of them have the tag "phonon".
Args:
gs_inp: an AbinitInput representing a ground state calculation, likely the SCF performed to get the WFK.
gs_inp: an |AbinitInput| representing a ground state calculation, likely the SCF performed to get the WFK.
ph_ngqpt: a list of three integers representing the gamma centered q-point grid used for the calculation.
If None and qpoint==None the ngkpt value present in the gs_input will be used.
Incompatible with qpoints.
@ -983,7 +983,7 @@ def phonons_from_gsinput(gs_inp, ph_ngqpt=None, qpoints=None, with_ddk=True, wit
def piezo_elastic_inputs_from_gsinput(gs_inp, ddk_tol=None, rf_tol=None, ddk_split=False, rf_split=False):
"""
Returns a :class:`MultiDataset` for performing elastic and piezoelectric constants calculations.
Returns a |MultiDataset| for performing elastic and piezoelectric constants calculations.
GS input + the input files for the elastic and piezoelectric constants calculation.
Args:
@ -1071,12 +1071,12 @@ def scf_piezo_elastic_inputs(structure, pseudos, kppa, ecut=None, pawecutdg=None
ddk_tol=None, rf_tol=None, ddk_split=False, rf_split=False):
"""
Returns a :class:`MultiDataset` for performing elastic and piezoelectric constants calculations.
Returns a |MultiDataset| for performing elastic and piezoelectric constants calculations.
GS input + the input files for the elastic and piezoelectric constants calculation.
Args:
structure: :class:`Structure` object.
pseudos: List of filenames or list of :class:`Pseudo` objects or :class:`PseudoTable` object.
structure: |Structure| object.
pseudos: List of filenames or list of |Pseudo| objects or |PseudoTable| object.
kppa: Defines the sampling used for the SCF run.
ecut: cutoff energy in Ha (if None, ecut is initialized from the pseudos according to accuracy)
pawecutdg: cutoff energy in Ha for PAW double-grid (if None, pawecutdg is initialized from the
@ -1115,7 +1115,7 @@ def scf_input(structure, pseudos, kppa=None, ecut=None, pawecutdg=None, nband=No
spin_mode="polarized", smearing="fermi_dirac:0.1 eV", charge=0.0, scf_algorithm=None,
shift_mode="Monkhorst-Pack"):
"""
Returns an :class:`AbinitInput` for standard GS calculations.
Returns an |AbinitInput| object for standard GS calculations.
"""
structure = Structure.as_structure(structure)
@ -1148,7 +1148,7 @@ def scf_input(structure, pseudos, kppa=None, ecut=None, pawecutdg=None, nband=No
def ebands_from_gsinput(gsinput, nband=None, ndivsm=15, accuracy="normal"):
"""
Return an :class:`AbinitInput` object to compute a band structure from a GS SCF input.
Return an |AbinitInput| object to compute a band structure from a GS SCF input.
Args:
gsinput:
@ -1156,7 +1156,7 @@ def ebands_from_gsinput(gsinput, nband=None, ndivsm=15, accuracy="normal"):
ndivsm:
accuracy:
Return: :class:`AbinitInput`
Return: |AbinitInput|
"""
# create a copy to avoid messing with the previous input
bands_input = gsinput.deepcopy()
@ -1268,14 +1268,14 @@ def scf_for_phonons(structure, pseudos, kppa=None, ecut=None, pawecutdg=None, nb
def dte_from_gsinput(gs_inp, use_phonons=True, ph_tol=None, ddk_tol=None, dde_tol=None, dte_tol=None,
skip_dte_permutations=False):
"""
Returns a list of inputs in the form of a MultiDataset to perform calculations of non-linear properties, based on
Returns a list of inputs in the form of a |MultiDataset| to perform calculations of non-linear properties, based on
a ground state AbinitInput.
The inputs have the following tags, according to their function: "ddk", "dde", "ph_q_pert" and "dte".
All of them have the tag "dfpt".
Args:
gs_inp: an AbinitInput representing a ground state calculation, likely the SCF performed to get the WFK.
gs_inp: an |AbinitInput| representing a ground state calculation, likely the SCF performed to get the WFK.
use_phonons: determine wether the phonon perturbations at gamma should be included or not
ph_tol: a dictionary with a single key defining the type of tolarence used for the phonon calculations and
its value. Default: {"tolvrs": 1.0e-22}.

View File

@ -136,7 +136,7 @@ class AbstractInput(six.with_metaclass(abc.ABCMeta, MutableMapping, object)):
def write(self, filepath="run.abi"):
"""
Write the input file to file to `filepath`.
Write the input file to file to ``filepath``.
"""
dirname = os.path.dirname(filepath)
if not os.path.exists(dirname): os.makedirs(dirname)
@ -182,7 +182,7 @@ class AbstractInput(six.with_metaclass(abc.ABCMeta, MutableMapping, object)):
def add_abiobjects(self, *abi_objects):
"""
This function receive a list of `AbiVarable` objects and add
This function receive a list of ``AbiVarable`` objects and add
the corresponding variables to the input.
"""
d = {}
@ -246,10 +246,10 @@ class AbstractInput(six.with_metaclass(abc.ABCMeta, MutableMapping, object)):
Args:
workdir: Working directory of the fake task used to compute the ibz. Use None for temporary dir.
manager: :class:`TaskManager` of the task. If None, the manager is initialized from the config file.
manager: |TaskManager| of the task. If None, the manager is initialized from the config file.
Return:
`namedtuple` with the following attributes:
``namedtuple`` with the following attributes:
retcode: Return code. 0 if OK.
output_file: output file of the run.
@ -260,12 +260,15 @@ class AbstractInput(six.with_metaclass(abc.ABCMeta, MutableMapping, object)):
class AbinitInputError(Exception):
"""Base error class for exceptions raised by `AbinitInput`"""
"""Base error class for exceptions raised by ``AbinitInput``."""
class AbinitInput(six.with_metaclass(abc.ABCMeta, AbstractInput, MSONable, Has_Structure, object)):
"""
This object stores the ABINIT variables for a single dataset.
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: AbinitInput
"""
Error = AbinitInputError
@ -273,11 +276,11 @@ class AbinitInput(six.with_metaclass(abc.ABCMeta, AbstractInput, MSONable, Has_S
abi_kwargs=None, tags=None):
"""
Args:
structure: Parameters defining the crystalline structure. Accepts :class:`Structure` object
structure: Parameters defining the crystalline structure. Accepts |Structure| object
file with structure (CIF, netcdf file, ...) or dictionary with ABINIT geo variables.
pseudos: Pseudopotentials to be used for the calculation. Accepts: string or list of strings
with the name of the pseudopotential files, list of :class:`Pseudo` objects
or :class:`PseudoTable` object.
with the name of the pseudopotential files, list of |Pseudo| objects
or |PseudoTable| object.
pseudo_dir: Name of the directory where the pseudopotential files are located.
ndtset: Number of datasets.
comment: Optional string with a comment that will be placed at the beginning of the file.
@ -422,7 +425,7 @@ class AbinitInput(six.with_metaclass(abc.ABCMeta, AbstractInput, MSONable, Has_S
@property
def runlevel(self):
"""
A Set of strings defining the type of run of the current input.
A set of strings defining the type of run of the current input.
"""
optdriver = self.get("optdriver")
@ -643,6 +646,7 @@ class AbinitInput(six.with_metaclass(abc.ABCMeta, AbstractInput, MSONable, Has_S
@property
def comment(self):
"""Optional string with comment. None if comment is not set."""
try:
return self._comment
except AttributeError:
@ -654,10 +658,11 @@ class AbinitInput(six.with_metaclass(abc.ABCMeta, AbstractInput, MSONable, Has_S
@property
def structure(self):
"""The :class:`Structure` associated to this input."""
"""The |Structure| object associated to this input."""
return self._structure
def set_structure(self, structure):
"""Set structure."""
self._structure = Structure.as_structure(structure)
# Check volume
@ -836,7 +841,7 @@ class AbinitInput(six.with_metaclass(abc.ABCMeta, AbstractInput, MSONable, Has_S
@property
def pseudos(self):
"""List of :class:`Pseudo` objects."""
"""List of |Pseudo| objects."""
return self._pseudos
@property
@ -962,11 +967,11 @@ class AbinitInput(six.with_metaclass(abc.ABCMeta, AbstractInput, MSONable, Has_S
def new_with_structure(self, new_structure, scdims=None, verbose=1):
"""
Return a new :class:`AbinitInput` with different structure.
Return a new |AbinitInput| with different structure.
See notes below for the constraints that must be fulfilled by the new structure
Args:
new_structure: Parameters defining the crystalline structure. Accepts :class:`Structure` object
new_structure: Parameters defining the crystalline structure. Accepts |Structure| object
file with structure (CIF, netcdf file, ...) or dictionary with ABINIT geo variables.
scdims: 3 integer giving with the number of cells in the supercell along the three reduced directions.
Must be used when `new_structure` represents a supercell of the initial structure defined
@ -975,7 +980,7 @@ class AbinitInput(six.with_metaclass(abc.ABCMeta, AbstractInput, MSONable, Has_S
.. warning::
If `scdims` is None (i.e. no supercell), the two structures must have the same value of
If ``scdims`` is None (i.e. no supercell), the two structures must have the same value of
`natom` and `typat`, they can only differ at the level of the lattice and of the atomic positions.
When structure represents a supercell, `scdims` must be coherent with the `new_structure` passed
as argument.
@ -1066,7 +1071,7 @@ class AbinitInput(six.with_metaclass(abc.ABCMeta, AbstractInput, MSONable, Has_S
def new_with_decorators(self, decorators):
"""
This function receives a list of :class:`AbinitInputDecorator` objects or just a single object,
applies the decorators to the input and returns a new :class:`AbinitInput` object. self is not changed.
applies the decorators to the input and returns a new |AbinitInput| object. self is not changed.
"""
if not isinstance(decorators, (list, tuple)): decorators = [decorators]
@ -1126,7 +1131,7 @@ class AbinitInput(six.with_metaclass(abc.ABCMeta, AbstractInput, MSONable, Has_S
Defaults to {"tolvrs": 1.0e-10}.
Return:
List of `AbinitInput` objects for DFPT runs.
List of |AbinitInput| objects for DFPT runs.
.. WARNING::
@ -1180,7 +1185,7 @@ class AbinitInput(six.with_metaclass(abc.ABCMeta, AbstractInput, MSONable, Has_S
Defaults to {"tolwfr": 1.0e-22}.
Return:
List of AbinitInput objects for DFPT runs.
List of |AbinitInput| objects for DFPT runs.
"""
if tolerance is None:
tolerance = {"tolwfr": 1.0e-22}
@ -1227,7 +1232,7 @@ class AbinitInput(six.with_metaclass(abc.ABCMeta, AbstractInput, MSONable, Has_S
Default to True. Should be set to False for nonlinear coefficients calculation.
Return:
List of `AbinitInput` objects for DFPT runs.
List of |AbinitInput| objects for DFPT runs.
"""
if tolerance is None:
tolerance = {"tolvrs": 1.0e-22}
@ -1347,7 +1352,7 @@ class AbinitInput(six.with_metaclass(abc.ABCMeta, AbstractInput, MSONable, Has_S
"""
Return inputs for the calculation of the Born effective charges.
This functions should be called with an input the represents a gs run.
This functions should be called with an input the represents a GS run.
"""
if tolerance is None:
tolerance = {"tolvrs": 1.0e-10}
@ -1441,7 +1446,7 @@ class AbinitInput(six.with_metaclass(abc.ABCMeta, AbstractInput, MSONable, Has_S
Args:
workdir: Working directory of the fake task used to compute the ibz. Use None for temporary dir.
manager: :class:`TaskManager` of the task. If None, the manager is initialized from the config file.
manager: |TaskManager| of the task. If None, the manager is initialized from the config file.
Return:
`namedtuple` with the following attributes:
@ -1465,10 +1470,10 @@ class AbinitInput(six.with_metaclass(abc.ABCMeta, AbstractInput, MSONable, Has_S
Args:
tolsym: Abinit tolsym input variable. None correspondes to the default value.
workdir: Working directory of the fake task used to compute the ibz. Use None for temporary dir.
manager: :class:`TaskManager` of the task. If None, the manager is initialized from the config file.
manager: |TaskManager| of the task. If None, the manager is initialized from the config file.
Return:
Structure object with AbinitSpaceGroup obtained from the main output file.
|Structure| object with AbinitSpaceGroup obtained from the main output file.
"""
# Avoid modifications in self.
inp = self.deepcopy()
@ -1498,7 +1503,7 @@ class AbinitInput(six.with_metaclass(abc.ABCMeta, AbstractInput, MSONable, Has_S
shiftk: List of shifts (default None i.e. use shiftk from self)
kptopt: Option for k-point generation. If None, the value in self is used.
workdir: Working directory of the fake task used to compute the ibz. Use None for temporary dir.
manager: :class:`TaskManager` of the task. If None, the manager is initialized from the config file.
manager: |TaskManager| of the task. If None, the manager is initialized from the config file.
Returns:
`namedtuple` with attributes:
@ -1591,7 +1596,7 @@ class AbinitInput(six.with_metaclass(abc.ABCMeta, AbstractInput, MSONable, Has_S
shiftk: Shiftks (default None i.e. use shiftk from self)
kptopt: Option for k-point generation. If None, the value in self is used.
workdir: Working directory of the fake task used to compute the ibz. Use None for temporary dir.
manager: :class:`TaskManager` of the task. If None, the manager is initialized from the config file.
manager: |TaskManager| of the task. If None, the manager is initialized from the config file.
Returns:
List of dictionaries with the Abinit variables defining the irreducible perturbation
@ -1646,15 +1651,15 @@ class AbinitInput(six.with_metaclass(abc.ABCMeta, AbstractInput, MSONable, Has_S
shiftk: Shiftks (default None i.e. use shiftk from self)
kptopt: Option for k-point generation. If None, the value in self is used.
workdir: Working directory of the fake task used to compute the ibz. Use None for temporary dir.
manager: :class:`TaskManager` of the task. If None, the manager is initialized from the config file.
manager: |TaskManager| of the task. If None, the manager is initialized from the config file.
Returns:
List of dictionaries with the Abinit variables defining the irreducible perturbation
Example:
Example:
[{'idir': 1, 'ipert': 1, 'qpt': [0.25, 0.0, 0.0]},
{'idir': 2, 'ipert': 1, 'qpt': [0.25, 0.0, 0.0]}]
"""
phperts_vars = dict(rfphon=1, # Will consider phonon-type perturbation
rfatpol=[1, len(self.structure)], # Set of atoms to displace.
@ -1674,14 +1679,15 @@ class AbinitInput(six.with_metaclass(abc.ABCMeta, AbstractInput, MSONable, Has_S
shiftk: Shiftks (default None i.e. use shiftk from self)
kptopt: Option for k-point generation. If None, the value in self is used.
workdir: Working directory of the fake task used to compute the ibz. Use None for temporary dir.
manager: :class:`TaskManager` of the task. If None, the manager is initialized from the config file.
manager: |TaskManager| of the task. If None, the manager is initialized from the config file.
Returns:
List of dictionaries with the Abinit variables defining the irreducible perturbation
Example:
[{'idir': 1, 'ipert': 4, 'qpt': [0.0, 0.0, 0.0]},
{'idir': 2, 'ipert': 4, 'qpt': [0.0, 0.0, 0.0]}]
Example:
[{'idir': 1, 'ipert': 4, 'qpt': [0.0, 0.0, 0.0]},
{'idir': 2, 'ipert': 4, 'qpt': [0.0, 0.0, 0.0]}]
"""
ddeperts_vars = dict(rfphon=0, # No phonon-type perturbation
@ -1703,15 +1709,16 @@ class AbinitInput(six.with_metaclass(abc.ABCMeta, AbstractInput, MSONable, Has_S
shiftk: Shiftks (default None i.e. use shiftk from self)
kptopt: Option for k-point generation. If None, the value in self is used.
workdir: Working directory of the fake task used to compute the ibz. Use None for temporary dir.
manager: :class:`TaskManager` of the task. If None, the manager is initialized from the config file.
manager: |TaskManager| of the task. If None, the manager is initialized from the config file.
phonon_pert: if True also the phonon perturbations will be considered. Default False.
Returns:
List of dictionaries with the Abinit variables defining the irreducible perturbation
Example:
[{'idir': 1, 'ipert': 4, 'qpt': [0.0, 0.0, 0.0]},
{'idir': 2, 'ipert': 4, 'qpt': [0.0, 0.0, 0.0]}]
Example:
[{'idir': 1, 'ipert': 4, 'qpt': [0.0, 0.0, 0.0]},
{'idir': 2, 'ipert': 4, 'qpt': [0.0, 0.0, 0.0]}]
"""
dteperts_vars = dict(d3e_pert1_phon=1 if phonon_pert else 0, # phonon-type perturbation
@ -1741,15 +1748,15 @@ class AbinitInput(six.with_metaclass(abc.ABCMeta, AbstractInput, MSONable, Has_S
shiftk: Shiftks (default None i.e. use shiftk from self)
kptopt: Option for k-point generation. If None, the value in self is used.
workdir: Working directory of the fake task used to compute the ibz. Use None for temporary dir.
manager: :class:`TaskManager` of the task. If None, the manager is initialized from the config file.
manager: |TaskManager| of the task. If None, the manager is initialized from the config file.
Returns:
List of dictionaries with the Abinit variables defining the irreducible perturbation
Example:
[{'idir': 1, 'ipert': 4, 'qpt': [0.0, 0.0, 0.0]},
{'idir': 2, 'ipert': 4, 'qpt': [0.0, 0.0, 0.0]}]
Example:
[{'idir': 1, 'ipert': 4, 'qpt': [0.0, 0.0, 0.0]},
{'idir': 2, 'ipert': 4, 'qpt': [0.0, 0.0, 0.0]}]
"""
strainperts_vars = dict(rfphon=1, # No phonon-type perturbation
rfatpol=(1,len(self.structure)), # Perturbation of all atoms
@ -1781,7 +1788,7 @@ class AbinitInput(six.with_metaclass(abc.ABCMeta, AbstractInput, MSONable, Has_S
def abiget_autoparal_pconfs(self, max_ncpus, autoparal=1, workdir=None, manager=None, verbose=0):
"""
Get all the possible configurations up to max_ncpus
Get all the possible configurations up to ``max_ncpus``.
Return list of parallel configurations.
"""
inp = self.deepcopy()
@ -1833,11 +1840,11 @@ class AbinitInput(six.with_metaclass(abc.ABCMeta, AbstractInput, MSONable, Has_S
class MultiDataset(object):
"""
This object is essentially a list of :class:`AbinitInput` objects.
This object is essentially a list of |AbinitInput| objects.
that provides an easy-to-use interface to apply global changes to the
the inputs stored in the objects.
Let's assume for example that multi contains two `AbinitInput` objects and we
Let's assume for example that multi contains two ``AbinitInput`` objects and we
want to set `ecut` to 1 in both dictionaries. The direct approach would be:
for inp in multi:
@ -1889,7 +1896,7 @@ class MultiDataset(object):
@classmethod
def replicate_input(cls, input, ndtset):
"""Construct a multidataset with ndtset from the :class:`AbinitInput` input."""
"""Construct a multidataset with ndtset from the |AbinitInput| input."""
multi = cls(input.structure, input.pseudos, ndtset=ndtset)
for inp in multi:
@ -1901,7 +1908,7 @@ class MultiDataset(object):
def __init__(self, structure, pseudos, pseudo_dir="", ndtset=1):
"""
Args:
structure: file with the structure, :class:`Structure` object or dictionary with ABINIT geo variable
structure: file with the structure, |Structure| object or dictionary with ABINIT geo variable
Accepts also list of objects that can be converted to Structure object.
In this case, however, ndtset must be equal to the length of the list.
pseudos: String or list of string with the name of the pseudopotential files.
@ -2022,14 +2029,14 @@ class MultiDataset(object):
return NotImplementedError("Operation not supported")
def append(self, abinit_input):
"""Add a :class:`AbinitInput` to the list."""
"""Add a |AbinitInput| to the list."""
assert isinstance(abinit_input, AbinitInput)
if any(p1 != p2 for p1, p2 in zip(abinit_input.pseudos, abinit_input.pseudos)):
raise ValueError("Pseudos must be consistent when from_inputs is invoked.")
self._inputs.append(abinit_input)
def extend(self, abinit_inputs):
"""Extends self with a list of :class:`AbinitInput` objects."""
"""Extends self with a list of |AbinitInput| objects."""
assert all(isinstance(inp, AbinitInput) for inp in abinit_inputs)
for inp in abinit_inputs:
if any(p1 != p2 for p1, p2 in zip(self[0].pseudos, inp.pseudos)):
@ -2037,15 +2044,15 @@ class MultiDataset(object):
self._inputs.extend(abinit_inputs)
def addnew_from(self, dtindex):
"""Add a new entry in the multidataset by copying the input with index `dtindex`."""
"""Add a new entry in the multidataset by copying the input with index ``dtindex``."""
self.append(self[dtindex].deepcopy())
def split_datasets(self):
"""Return list of AbinitInput files."""
"""Return list of |AbinitInput| objects.."""
return self._inputs
def deepcopy(self):
"""Deep copy of the object."""
"""Deep copy of the MultiDataset."""
return copy.deepcopy(self)
@property
@ -2061,7 +2068,7 @@ class MultiDataset(object):
String representation i.e. the input file read by Abinit.
Args:
mode: Either `text` or `html` if HTML output with links is wanted.
mode: Either ``text`` or ``html`` if HTML output with links is wanted.
with_pseudos: False if JSON section with pseudo data should not be added.
"""
if mode == "html":
@ -2131,7 +2138,7 @@ class MultiDataset(object):
return self[0].to_string(mode=mode, with_pseudos=with_pseudos)
def _repr_html_(self):
"""Integration with jupyter notebooks."""
"""Integration with jupyter_ notebooks."""
return self.to_string(mode="html")
def filter_by_tags(self, tags=None, exclude_tags=None):
@ -2143,7 +2150,7 @@ class MultiDataset(object):
exclude_tags: A single tag or list/tuple/set of tags that should be excluded
Returns:
A :class:`MultiDataset` containing the inputs containing all the requested tags
A |MultiDataset| containing the inputs containing all the requested tags.
"""
if isinstance(tags, (list, tuple, set)):
tags = set(tags)
@ -2189,7 +2196,7 @@ class MultiDataset(object):
def filter_by_runlevel(self, runlevel):
"""
Return new MultiDataset object in which only the inputs with the given runlevel are selected
Return new |MultiDataset| object in which only the inputs with the given runlevel are selected.
"""
if isinstance(runlevel, (list, tuple, set)):
runlevel = set(runlevel)
@ -2202,7 +2209,7 @@ class MultiDataset(object):
def write(self, filepath="run.abi"):
"""
Write `ndset` input files to disk. The name of the file
Write ``ndset`` input files to disk. The name of the file
is constructed from the dataset index e.g. run0.abi
"""
root, ext = os.path.splitext(filepath)
@ -2216,13 +2223,20 @@ class AnaddbInputError(Exception):
class AnaddbInput(AbstractInput, Has_Structure):
"""
This object stores the anaddb variables.
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: AnaddbInput
"""
Error = AnaddbInputError
def __init__(self, structure, comment="", anaddb_args=None, anaddb_kwargs=None):
"""
Args:
structure: :class:`Structure` object
structure: |Structure| object
comment: Optional string with a comment that will be placed at the beginning of the file.
anaddb_args: List of tuples (key, value) with Anaddb input variables (default: empty)
anaddb_kwargs: Dictionary with Anaddb input variables (default: empty)
@ -2274,7 +2288,7 @@ class AnaddbInput(AbstractInput, Has_Structure):
Input file for the calculation of the phonon frequencies at a given q-point.
Args:
Structure: :class:`Structure` object
structure: |Structure| object
qpoint: Reduced coordinates of the q-point where phonon frequencies and modes are wanted
asr, chneut, dipdp, ifcflag: Anaddb input variable. See official documentation.
lo_to_splitting: if True calculation of the LO-TO splitting will be included if qpoint==Gamma
@ -2350,7 +2364,7 @@ class AnaddbInput(AbstractInput, Has_Structure):
Build an anaddb input file for the computation of phonon bands and phonon DOS.
Args:
structure: :class:`Structure` object
structure: |Structure| object
ngqpt: Monkhorst-Pack divisions for the phonon Q-mesh (coarse one)
nqsmall: Used to generate the (dense) mesh for the DOS.
It defines the number of q-points used to sample the smallest lattice vector.
@ -2508,7 +2522,7 @@ class AnaddbInput(AbstractInput, Has_Structure):
Build an anaddb input file for the computation of phonon modes.
Args:
Structure: :class:`Structure` object
Structure: |Structure| object
ngqpt: Monkhorst-Pack divisions for the phonon Q-mesh (coarse one)
nqsmall: Used to generate the (dense) mesh for the DOS.
It defines the number of q-points used to sample the smallest lattice vector.
@ -2563,7 +2577,7 @@ class AnaddbInput(AbstractInput, Has_Structure):
Build an anaddb input file for the computation of interatomic force constants.
Args:
structure: :class:`Structure` object
structure: |Structure| object
ngqpt: Monkhorst-Pack divisions for the phonon Q-mesh (coarse one)
ifcout: Number of neighbouring atoms for which the ifc's will be output. If None all the atoms in the big box.
q1shft: Shifts used for the coarse Q-mesh
@ -2600,6 +2614,7 @@ class AnaddbInput(AbstractInput, Has_Structure):
@property
def structure(self):
"""|Structure| object."""
return self._structure
def to_string(self, sortmode=None, mode="text", verbose=0):
@ -2635,7 +2650,7 @@ class AnaddbInput(AbstractInput, Has_Structure):
return "\n".join(lines) if mode == "text" else "\n".join(lines).replace("\n", "<br>")
def _repr_html_(self):
"""Integration with jupyter notebooks."""
"""Integration with jupyter_ notebooks."""
return self.to_string(mode="html")
def set_qpath(self, ndivsm, qptbounds=None):
@ -2667,7 +2682,7 @@ class AnaddbInput(AbstractInput, Has_Structure):
Args:
workdir: Working directory of the fake task used to compute the ibz. Use None for temporary dir.
manager: :class:`TaskManager` of the task. If None, the manager is initialized from the config file.
manager: |TaskManager| of the task. If None, the manager is initialized from the config file.
Return:
`namedtuple` with the following attributes:

View File

@ -58,7 +58,7 @@ class AbinitLogFile(AbinitTextFile, NotebookWriter):
def write_notebook(self, nbpath=None):
"""
Write an ipython notebook to nbpath. If nbpath is None, a temporay file in the current
Write a jupyter_ notebook to ``nbpath``. If nbpath is None, a temporay file in the current
working directory is created. Return path to the notebook.
"""
nbformat, nbv, nb = self.get_nbformat_nbv_nb(title=None)
@ -326,7 +326,7 @@ class AbinitOutputFile(AbinitTextFile, NotebookWriter):
@lazy_property
def initial_structures(self):
"""List of initial structures."""
"""List of initial |Structure|."""
return self._get_structures("header")
@property
@ -336,7 +336,7 @@ class AbinitOutputFile(AbinitTextFile, NotebookWriter):
@lazy_property
def final_structures(self):
"""List of final structures."""
"""List of final |Structure|."""
if self.run_completed:
return self._get_structures("footer")
else:
@ -346,7 +346,7 @@ class AbinitOutputFile(AbinitTextFile, NotebookWriter):
@lazy_property
def initial_structure(self):
"""
The structure defined in the output file.
The |Structure| defined in the output file.
If the input file contains multiple datasets **AND** the datasets
have different structures, this property returns None.
@ -370,7 +370,7 @@ class AbinitOutputFile(AbinitTextFile, NotebookWriter):
@lazy_property
def final_structure(self):
"""
The structure defined in the output file.
The |Structure| defined in the output file.
If the input file contains multiple datasets **AND** the datasets
have different structures, this property returns None.

View File

@ -568,6 +568,7 @@ class Density(_DensityField):
Unlike in Abinit, datar[nspden] contains the up/down components if nsppol = 2
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: Density
"""
netcdf_name = "density"
@ -1008,6 +1009,7 @@ class VxcPotential(_PotentialField):
"""
XC Potential.
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: VxcPotential
"""
netcdf_name = "exchange_correlation_potential"
@ -1018,6 +1020,7 @@ class VhartreePotential(_PotentialField):
"""
Hartree Potential.
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: VhartreePotential
"""
netcdf_name = "vhartree"
@ -1028,6 +1031,7 @@ class VhxcPotential(_PotentialField):
"""
Hartree + XC
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: VhxcPotential
"""
netcdf_name = "vhxc"
@ -1038,6 +1042,7 @@ class VksPotential(_PotentialField):
"""
Hartree + XC + sum of local pseudo-potential terms.
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: VksPotential
"""
netcdf_name = "vtrial"
@ -1048,6 +1053,7 @@ class FieldReader(ETSF_Reader):
"""
This object reads density data from a netcdf file.
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: FieldReader
"""

View File

@ -715,6 +715,7 @@ class KpointList(collections.Sequence):
elif kpoints.is_ibz:
# code specific to IBZ sampling.
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: KpointList
"""
Error = KpointsError

View File

@ -154,7 +154,7 @@ class AbinitNcFile(_File):
"""
Abstract class representing a Netcdf file with data saved
according to the ETSF-IO specifications (when available).
A AbinitNcFile has a netcdf reader to read data from file and build objects.
An AbinitNcFile has a netcdf reader to read data from file and build objects.
"""
def ncdump(self, *nc_args, **nc_kwargs):
"""Returns a string with the output of ncdump."""
@ -285,7 +285,7 @@ class Has_ElectronBands(object):
@property
def nelect(self):
"""Number of elecrons per unit cell"""
"""Number of electrons per unit cell"""
return self.ebands.nelect
@property
@ -340,7 +340,7 @@ class NcDumper(object):
def dump(self, filepath):
"""Returns a string with the output of ncdump."""
if self.ncdump is None:
return "Cannot find ncdump tool in PATH"
return "Cannot find ncdump tool in $PATH"
else:
from subprocess import check_output
return check_output(["ncdump", filepath])
@ -395,7 +395,7 @@ class NotebookWriter(object):
system exit code.
Raise:
`RuntimeError` if jupyter is not in $PATH
`RuntimeError` if jupyter_ is not in $PATH
"""
nbpath = self.write_notebook(nbpath=nbpath)
@ -424,7 +424,7 @@ class NotebookWriter(object):
def get_nbformat_nbv_nb(self, title=None):
"""
Return nbformat module, notebook version module
Return ``nbformat`` module, notebook version module
and new notebook with title and import section
"""
nbformat, nbv = self.get_nbformat_nbv()
@ -443,11 +443,6 @@ import numpy as np
%matplotlib notebook
from IPython.display import display
# Use seaborn settings for plots. See https://seaborn.pydata.org/generated/seaborn.set.html#seaborn.set
#import seaborn as sns
#sns.set(context='notebook', style='darkgrid', palette='deep',
# font='sans-serif', font_scale=1, color_codes=False, rc=None)
# This to render pandas DataFrames with https://github.com/quantopian/qgrid
#import qgrid
#qgrid.nbinstall(overwrite=True) # copies javascript dependencies to your /nbextensions folder
@ -457,6 +452,10 @@ from IPython.display import display
from abipy import abilab
# Tell AbiPy we are inside a notebook and use seaborn settings for plots.
# See https://seaborn.pydata.org/generated/seaborn.set.html#seaborn.set
abilab.enable_notebook(with_seaborn=True)
# AbiPy widgets for pandas and seaborn plot APIs
#import abipy.display.seabornw import snw
#import abipy.display.pandasw import pdw""")
@ -467,7 +466,7 @@ from abipy import abilab
@abc.abstractmethod
def write_notebook(self, nbpath=None):
"""
Write a jupyter notebook to nbpath. If nbpath is None, a temporay file is created.
Write a jupyter_ notebook to nbpath. If nbpath is None, a temporay file is created.
Return path to the notebook. A typical template is given below.
"""
# Preable.

View File

@ -54,6 +54,10 @@ def get_mprester(api_key=None, endpoint=None):
class MyMPRester(MPRester):
"""
Subclass Materials project Rester.
See :cite:`Jain2013,Ong2015`.
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: MyMPRester
"""
Error = MPRestError
@ -76,6 +80,8 @@ class PhaseDiagramResults(object):
Inspired to:
https://anaconda.org/matsci/plotting-and-analyzing-a-phase-diagram-using-the-materials-api/notebook
See also: :cite:`Ong2008,Ong2010`
"""
def __init__(self, entries):
self.entries = entries
@ -290,7 +296,7 @@ class MpStructures(DatabaseStructures):
class CodStructures(DatabaseStructures):
"""
Store the results of a query to the COD_ database.
Store the results of a query to the COD_ database :cite:`Grazulis2011`.
.. inheritance-diagram:: CodStructures
"""
@ -299,8 +305,8 @@ class CodStructures(DatabaseStructures):
@lazy_property
def dataframe(self):
"""
Pandas dataframe constructed. Essentially geometrical info and space groups found by spglib
as COD data is rather limited.
|pandas-Dataframe| constructed. Essentially geometrical info and space groups found by spglib_
as COD API is rather limited.
"""
df = self.lattice_dataframe.copy()
# Add space group from COD

View File

@ -1,6 +1,7 @@
# coding: utf-8
"""
Shankland-Koelling-Wood Fourier interpolation scheme.
For the theoretical background see :cite:`Euwema1969,Koelling1986,Pickett1988,Madsen2006`.
"""
from __future__ import print_function, division, unicode_literals, absolute_import

View File

@ -1,5 +1,7 @@
# coding: utf-8
"""This module defines basic objects representing the crystalline structure."""
"""
This module defines basic objects representing the crystalline structure.
"""
from __future__ import print_function, division, unicode_literals, absolute_import
import sys
@ -122,7 +124,7 @@ def cod_search(formula, primitive=False):
Args:
formula (str): Chemical formula (e.g., Fe2O3)
primitive: True if primitive structures are wanted. Note that many COD structures are not primitive.
primitive (bool): True if primitive structures are wanted. Note that many COD structures are not primitive.
Returns:
:class:`CodStructures` object with
@ -148,17 +150,23 @@ class Structure(pymatgen.Structure, NotebookWriter):
"""
Extends :class:`pymatgen.core.structure.Structure` with Abinit-specific methods.
A jupyter_ notebook documenting the usage of this object is available at
<https://nbviewer.jupyter.org/github/abinit/abitutorials/blob/master/abitutorials/structure.ipynb>
For the pymatgen project see :cite:`Ong2013`.
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: Structure
"""
@classmethod
def as_structure(cls, obj):
"""
Convert obj into a structure. Accepts:
Convert obj into a |Structure|. Accepts:
- Structure instances
- Filenames
- Dictionaries (JSON format or dictionaries with abinit variables).
- Objects with a `structure` attribute.
- Structure object.
- Filename
- Dictionaries (JSON_ format or dictionaries with abinit variables).
- Objects with a ``structure`` attribute.
"""
if isinstance(obj, cls): return obj
if isinstance(obj, pymatgen.Structure):
@ -301,7 +309,7 @@ class Structure(pymatgen.Structure, NotebookWriter):
Args:
cod_id (int): COD id.
primitive: True if primitive structures are wanted. Note that many COD structures are not primitive.
primitive (bool): True if primitive structures are wanted. Note that many COD structures are not primitive.
kwargs: Arguments passed to ``get_structure_by_id``
Returns: |Structure| object.
@ -327,10 +335,7 @@ class Structure(pymatgen.Structure, NotebookWriter):
def to_ase_atoms(self):
"""
Returns ASE Atoms object from structure.
Returns:
ASE Atoms object
Returns ASE_ Atoms object from structure.
"""
import pymatgen.io.ase as aio
return aio.AseAtomsAdaptor.get_atoms(self)
@ -371,10 +376,10 @@ class Structure(pymatgen.Structure, NotebookWriter):
Args:
a: Lattice parameter (Angstrom if units is not given)
species: Chemical species. See __init__ method of :class:`pymatgen.Structue`
species: Chemical species. See __init__ method of |pymatgen-Structure|
primitive: if True a primitive cell will be produced, otherwise a conventional one
units: Units of input lattice parameters e.g. "bohr", "pm"
kwargs: All keyword arguments accepted by :class:`pymatgen.Structue`
kwargs: All keyword arguments accepted by |pymatgen-Structure|.
"""
a = pmg_units.Length(a, units).to("ang")
if primitive:
@ -498,7 +503,7 @@ class Structure(pymatgen.Structure, NotebookWriter):
@classmethod
def from_abivars(cls, *args, **kwargs):
"""
Build a :class:`Structure` object from a dictionary with ABINIT variables.
Build a |Structure| object from a dictionary with ABINIT variables.
Example::
@ -513,7 +518,7 @@ class Structure(pymatgen.Structure, NotebookWriter):
znucl=13,
)
`xred` can be replaced with `xcart` or `xangst`.
``xred`` can be replaced with ``xcart`` or ``xangst``.
"""
return structure_from_abivars(cls, *args, **kwargs)
@ -583,12 +588,8 @@ class Structure(pymatgen.Structure, NotebookWriter):
symprec=1e-3, angle_tolerance=5):
"""
Gives a structure with a conventional cell according to certain
standards. The standards are defined in Setyawan, W., & Curtarolo,
S. (2010). High-throughput electronic band structure calculations:
Challenges and tools. Computational Materials Science,
49(2), 299-312. doi:10.1016/j.commatsci.2010.05.010
They basically enforce as much as possible
norm(a1)<norm(a2)<norm(a3)
standards. The standards are defined in :cite:`Setyawan2010`
They basically enforce as much as possible norm(a1)<norm(a2)<norm(a3)
Returns:
The structure in a conventional standardized cell
@ -626,12 +627,11 @@ class Structure(pymatgen.Structure, NotebookWriter):
* Lattice vectors are exchanged if the triple product is negative
Args:
symprec: Symmetry precision used to refine the structure.
angle_tolerance: Tolerance on angles.
if `symprec` is None and `angle_tolerance` is None, no structure refinement is peformed.
primitive (bool): Whether to convert to a primitive cell following
Setyawan, W., & Curtarolo, S. (2010). doi:10.1016/j.commatsci.2010.05.010
primitive_standard: Returns most primitive structure found.
symprec (float): Symmetry precision used to refine the structure.
angle_tolerance (float): Tolerance on angles.
if ``symprec`` is None and `angle_tolerance` is None, no structure refinement is peformed.
primitive (bool): Whether to convert to a primitive cell following :cite:`Setyawan2010`
primitive_standard (bool): Returns most primitive structure found.
"""
from pymatgen.transformations.standard_transformations import PrimitiveCellTransformation, SupercellTransformation
structure = self.__class__.from_sites(self)
@ -666,7 +666,7 @@ class Structure(pymatgen.Structure, NotebookWriter):
def get_oxi_state_decorated(self, **kwargs):
"""
Use :class:`BVAnalyzer` to estimate oxidation states
Use :class:`pymatgen.analysis.bond_valence.BVAnalyzer` to estimate oxidation states
Return oxidation state decorated structure.
This currently works only for ordered structures only.
@ -681,7 +681,7 @@ class Structure(pymatgen.Structure, NotebookWriter):
return self.__class__.as_structure(new)
def _repr_html_(self):
"""Integration with jupyter notebooks."""
"""Integration with jupyter_ notebooks."""
try:
from nbjsmol import nbjsmol_display
return nbjsmol_display(self.to(fmt="cif"), ext=".cif", html=True)
@ -725,8 +725,8 @@ class Structure(pymatgen.Structure, NotebookWriter):
crystal system with the exception of the hexagonal/rhombohedral lattice
Args:
symprec: Symmetry precision for distance
angle_tolerance: Tolerance on angles.
symprec (float): Symmetry precision for distance
angle_tolerance (float): Tolerance on angles.
Returns:
(str): Lattice type for structure or None if type cannot be detected.
@ -739,12 +739,12 @@ class Structure(pymatgen.Structure, NotebookWriter):
Call spglib_ to find the inequivalent atoms and build symmetry tables.
Args:
symprec: Symmetry precision for distance.
angle_tolerance: Tolerance on angles.
printout: True to print symmetry tables.
symprec (float): Symmetry precision for distance.
angle_tolerance (float): Tolerance on angles.
printout (bool): True to print symmetry tables.
Returns:
`namedtuple` (irred_pos, eqmap, spgdata) with the following attributes::
``namedtuple`` (irred_pos, eqmap, spgdata) with the following attributes::
* irred_pos: array giving the position of the i-th irred atom in the structure.
The number of irred atoms is len(irred_pos)
@ -787,9 +787,9 @@ class Structure(pymatgen.Structure, NotebookWriter):
space group, point group, wyckoff positions, equivalent sites.
Args:
symprec: Symmetry precision for distance
angle_tolerance: Tolerance on angles
verbose: Verbosity level.
symprec (float): Symmetry precision for distance.
angle_tolerance (float): Tolerance on angles.
verbose (int): Verbosity level.
"""
spgan = SpacegroupAnalyzer(self, symprec=symprec, angle_tolerance=angle_tolerance)
spgdata = spgan.get_symmetry_dataset()
@ -851,7 +851,7 @@ class Structure(pymatgen.Structure, NotebookWriter):
return None
def set_abi_spacegroup(self, spacegroup):
"""`AbinitSpaceGroup` setter."""
"""``AbinitSpaceGroup`` setter."""
self._abi_spacegroup = spacegroup
@property
@ -862,15 +862,15 @@ class Structure(pymatgen.Structure, NotebookWriter):
def spgset_abi_spacegroup(self, has_timerev, overwrite=False):
"""
Call spglib to find the spacegroup of the crystal, create new
`AbinitSpaceGroup` object and store it in `self.abi_spacegroup`.
:class:`AbinitSpaceGroup` object and store it in ``self.abi_spacegroup``.
Args:
has_timerev: True if time-reversal can be used.
overwrite: By default, the method raises `ValueError` if the object
has_timerev (bool): True if time-reversal can be used.
overwrite (bool): By default, the method raises `ValueError` if the object
already has the list of symmetries found by Abinit.
Returns:
`AbinitSpaceGroup`
:class:`AbinitSpaceGroup`
.. warning:
@ -898,7 +898,7 @@ class Structure(pymatgen.Structure, NotebookWriter):
def print_neighbors(self, radius=2.0):
"""
Get neighbors for each atom in the unit cell, out to a distance `radius` in Angstrom
Get neighbors for each atom in the unit cell, out to a distance ``radius`` in Angstrom
Print results.
"""
print(" ")
@ -915,7 +915,7 @@ class Structure(pymatgen.Structure, NotebookWriter):
@lazy_property
def hsym_kpath(self):
"""
Returns an instance of :class:`HighSymmKpath`.
Returns an instance of :class:`pymatgen.symmetry.bandstructure.HighSymmKpath`.
(Database of high symmetry k-points and high symmetry lines).
"""
from pymatgen.symmetry.bandstructure import HighSymmKpath
@ -943,7 +943,7 @@ class Structure(pymatgen.Structure, NotebookWriter):
def hsym_stars(self):
"""
List of |KpointStar| objects. Each star is associated to one of the special k-points
present in the `pymatgen` database.
present in the pymatgen database.
"""
# Construct the stars.
return [kpoint.compute_star(self.abi_spacegroup.fm_symmops) for kpoint in self.hsym_kpoints]
@ -1018,7 +1018,7 @@ class Structure(pymatgen.Structure, NotebookWriter):
Useful to construct pandas DataFrames
Args:
with_spglib: If True, spglib is invoked to get the spacegroup symbol and number
with_spglib (bool): If True, spglib is invoked to get the spacegroup symbol and number
"""
abc, angles = self.lattice.abc, self.lattice.angles
# Get spacegroup info from spglib.
@ -1051,10 +1051,10 @@ class Structure(pymatgen.Structure, NotebookWriter):
Args:
ax: matplotlib :class:`Axes` or None if a new figure should be created.
pmg_path: True if the default path used in pymatgen should be show.
with_labels: True to plot k-point labels.
pmg_path (bool): True if the default path used in pymatgen should be show.
with_labels (bool): True to plot k-point labels.
Returns: `matplotlib` figure.
Returns: |matplotlib-Figure|.
"""
from pymatgen.electronic_structure.plotter import plot_brillouin_zone, plot_brillouin_zone_from_kpath
labels = None if not with_labels else self.hsym_kpath.kpath["kpoints"]
@ -1092,7 +1092,8 @@ class Structure(pymatgen.Structure, NotebookWriter):
two_thetas to calculate in degrees. Defaults to (0, 90). Set to
None if you want all diffracted beams within the limiting
sphere of radius 2 / wavelength.
annotate_peaks: Whether to annotate the peaks with plane information.
annotate_peaks (bool): Whether to annotate the peaks with plane information.
ax: matplotlib :class:`Axes` or None if a new figure should be created.
Returns: |matplotlib-Figure|
"""
@ -1104,18 +1105,18 @@ class Structure(pymatgen.Structure, NotebookWriter):
def export(self, filename, visu=None, verbose=1):
"""
Export the crystalline structure to file `filename`.
Export the crystalline structure to file ``filename``.
Args:
filename: String specifying the file path and the file format.
filename (str): String specifying the file path and the file format.
The format is defined by the file extension. filename="prefix.xsf", for example,
will produce a file in XSF format. An *empty* prefix, e.g. ".xsf" makes the code use a temporary file.
visu: `Visualizer` subclass. By default, this method returns the first available
visu: |Visualizer| subclass. By default, this method returns the first available
visualizer that supports the given file format. If visu is not None, an
instance of visu is returned. See :class:`Visualizer` for the list of applications and formats supported.
instance of visu is returned. See |Visualizer| for the list of applications and formats supported.
verbose: Verbosity level
Returns: Instance of :class:`Visualizer`
Returns: ``Visulizer`` instance.
"""
if "." not in filename:
raise ValueError("Cannot detect extension in filename %s:" % filename)
@ -1150,7 +1151,7 @@ class Structure(pymatgen.Structure, NotebookWriter):
def chemview(self, **kwargs):
"""
Visualize Structure in jupyter notebook using chemview package.
Visualize structure in jupyter notebook using chemview package.
"""
from pymatgen.vis.structure_chemview import quick_view
return quick_view(self, **kwargs)
@ -1180,7 +1181,7 @@ class Structure(pymatgen.Structure, NotebookWriter):
def visualize(self, appname="vesta"):
"""
Visualize the crystalline structure with visualizer.
See :class:`Visualizer` for the list of applications and formats supported.
See |Visualizer| for the list of applications and formats supported.
"""
if appname == "vtk": return self.vtkview()
if appname == "mayavi": return self.mayaview()
@ -1458,14 +1459,10 @@ class Structure(pymatgen.Structure, NotebookWriter):
Compute the supercell needed for a given qpoint and add the displacement.
Args:
qpoint:
q vector in reduced coordinate in reciprocal space.
displ:
displacement in real space of the atoms, will be normalized to 1 Angstrom.
eta:
pre-factor multiplying the displacement.
do_real:
true if we want only the real part of the displacement.
qpoint: q vector in reduced coordinate in reciprocal space.
displ: displacement in real space of the atoms, will be normalized to 1 Angstrom.
eta: pre-factor multiplying the displacement.
do_real: true if we want only the real part of the displacement.
"""
# I've copied code from make_supercell since the loop over supercell images
# is inside make_supercell and I don't want to create a mapping
@ -1602,7 +1599,7 @@ class Structure(pymatgen.Structure, NotebookWriter):
def calc_ksampling(self, nksmall, symprec=0.01, angle_tolerance=5):
"""
Return the k-point sampling from the number of divisions to be used for
Return the k-point sampling from the number of divisions ``nksmall`` to be used for
the smallest reciprocal lattice vector.
"""
ngkpt = self.calc_ngkpt(nksmall)
@ -1612,10 +1609,10 @@ class Structure(pymatgen.Structure, NotebookWriter):
def calc_ngkpt(self, nksmall):
"""
Compute the ABINIT variable `ngkpt` from the number of divisions used for the smallest lattice vector.
Compute the ABINIT variable ``ngkpt`` from the number of divisions used for the smallest lattice vector.
Args:
nksmall: Number of division for the smallest lattice vector.
nksmall (int): Number of division for the smallest lattice vector.
"""
lengths = self.lattice.reciprocal_lattice.abc
lmin = np.min(lengths)
@ -1630,7 +1627,7 @@ class Structure(pymatgen.Structure, NotebookWriter):
def calc_shiftk(self, symprec=0.01, angle_tolerance=5):
"""
Find the values of `shiftk` and `nshiftk` appropriated for the sampling of the Brillouin zone.
Find the values of ``shiftk`` and ``nshiftk`` appropriated for the sampling of the Brillouin zone.
When the primitive vectors of the lattice do NOT form a FCC or a BCC lattice,
the usual (shifted) Monkhorst-Pack grids are formed by using nshiftk=1 and shiftk 0.5 0.5 0.5 .
@ -1732,7 +1729,7 @@ class Structure(pymatgen.Structure, NotebookWriter):
Returns the number of valence electrons.
Args:
pseudos: List of :class:`Pseudo` objects or list of filenames.
pseudos: List of |Pseudo| objects or list of filenames.
"""
nval, table = 0, PseudoTable.as_table(pseudos)
for site in self:
@ -1746,7 +1743,7 @@ class Structure(pymatgen.Structure, NotebookWriter):
Returns the number of valence electrons for each atom in the structure.
Args:
pseudos: List of :class:`Pseudo` objects or list of filenames.
pseudos: List of |Pseudo| objects or list of filenames.
"""
table = PseudoTable.as_table(pseudos)
psp_valences = []
@ -1758,7 +1755,7 @@ class Structure(pymatgen.Structure, NotebookWriter):
def write_notebook(self, nbpath=None):
"""
Write an ipython notebook to nbpath. If nbpath is None, a temporay file in the current
Write a jupyter_ notebook to ``nbpath``. If nbpath is None, a temporay file in the current
working directory is created. Return path to the notebook.
"""
nbformat, nbv, nb = self.get_nbformat_nbv_nb(title=None)
@ -1797,7 +1794,7 @@ def dataframes_from_structures(struct_objects, index=None, with_spglib=True, car
Support filenames, structure objects, Abinit input files, dicts and many more types.
See ``Structure.as_structure`` for the complete list.
index: Index of the |pandas-DataFrame|.
with_spglib: If True, spglib_ is invoked to get the spacegroup symbol and number.
with_spglib (bool): If True, spglib_ is invoked to get the spacegroup symbol and number.
cart_coords: True if the ``coords`` dataframe should contain Cartesian cordinates
instead of Reduced coordinates.

View File

@ -883,7 +883,7 @@ class LatticeRotation(Operation):
.. note::
This object is immutable and therefore we do not inherit from `ndarray``
This object is immutable and therefore we do not inherit from |numpy-array|.
"""
_E3D = np.identity(3, np.int)

View File

@ -106,7 +106,7 @@ def has_matplotlib(version=None, op=">="):
def has_seaborn():
"""True if seaborn is installed."""
try:
import seaborn.apionly as sns
import seaborn as sns
return True
except ImportError:
return False

View File

@ -4,7 +4,6 @@ qadapters:
queue:
qname: gmac
qtype: shell
#qtype: slurm
job:
mpi_runner: mpirun
pre_run:
@ -22,12 +21,3 @@ qadapters:
#condition: {"$eq": {omp_threads: 2}}
batch_adapter: *batch
db_connector:
enabled: no
database: abinit
collection: test
host: 0.0.0.0
port: 8080
user: gmatteo
password: helloworld

View File

@ -7,12 +7,7 @@ batch: &batch
job: &job
mpi_runner: runjob
shell_env:
#PATH: $HOME/abinit/801-private/bgq_xlf_base/src/98_main/:$PATH
#PATH: $HOME/abinit/801-private/bgq_xlf_omp/src/98_main/:$PATH
PATH: $HOME/abinit/801-private/bgq_xlf_legacy/src/98_main/:$PATH
#PATH: $HOME/abinit/801-private/bgq_xlf_o2/src/98_main/:$PATH
#PATH: $HOME/abinit/801-private/bgq_gcc_legacy/src/98_main/:$PATH
#PATH: $HOME/abinit/801-private/bgq_gcc/src/98_main/:$PATH
# List of qadapters
# Note that on the BlueGeneQ we need at least two qadapters
@ -29,7 +24,7 @@ qadapters:
qparams:
# Mandatory on juqueen.
notification: error
mail_user: matteo.giantomassi@uclouvain.be
mail_user: john@nowhere.com
environment: COPY_ALL
limits:
timelimit: 00:20:00

View File

@ -36,6 +36,9 @@ class AnaddbNcFile(AbinitNcFile, Has_Structure, NotebookWriter):
:class:`InteratomicForceConstants` object with the interatomic force constants calculated by anaddb.
None, if the netcdf file does not contain the IFCs.
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: AnaddbNcFile
"""
@classmethod

View File

@ -78,6 +78,9 @@ class DdbFile(TextFile, Has_Structure, NotebookWriter):
* ipert = natom + 2 gives the electric field
* ipert = natom + 3 gives the uniaxial stress
* ipert = natom + 4 gives the shear stree.
.. rubric:: Inheritance
.. inheritance-diagram:: DdbFile
"""
Error = DdbError
AnaddbError = AnaddbError
@ -1328,7 +1331,10 @@ class DielectricTensorGenerator(Has_Structure):
class DdbRobot(Robot):
"""
This robot analyzes the results contained in multiple DDB files.
This robot analyzes the results contained in multiple DDB_ files.
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: DdbRobot
"""
EXT = "DDB"

View File

@ -39,6 +39,9 @@ class GrunsNcFile(AbinitNcFile, Has_Structure, NotebookWriter):
with GrunsNcFile("foo_GRUNS.nc") as ncfile:
print(ncfile)
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: GrunsNcFile
"""
@classmethod
def from_file(cls, filepath):
@ -325,6 +328,9 @@ class GrunsReader(ETSF_Reader):
"""
This object reads the results stored in the GRUNS.nc file produced by ABINIT.
It provides helper functions to access the most important quantities.
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: GrunsReader
"""
# Fortran arrays (remember to transpose dimensions!)
# Remember: Atomic units are used everywhere in this file.

View File

@ -1411,7 +1411,8 @@ class PhononBands(object):
yname = "freq %s" % unit_tag(units)
frame[yname] = factor * frame["freq"]
import seaborn.apionly as sns
#import seaborn.apionly as sns
import seaborn as sns
hue = None
ax = sns.boxplot(x="mode", y=yname, data=frame, hue=hue, ax=ax, **kwargs)
if swarm:
@ -1466,7 +1467,13 @@ class PhononBands(object):
class PHBST_Reader(ETSF_Reader):
"""This object reads data from PHBST.nc file produced by anaddb."""
"""
This object reads data from PHBST.nc file produced by anaddb.
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: PHBST_Reader
"""
def read_qredcoords(self):
"""Array with the reduced coordinates of the q-points."""
@ -1493,11 +1500,16 @@ class PHBST_Reader(ETSF_Reader):
class PhbstFile(AbinitNcFile, Has_Structure, Has_PhononBands, NotebookWriter):
"""
Object used to access data stored in the PHBST.nc file produced by ABINIT.
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: PhbstFile
"""
def __init__(self, filepath):
"""
Object used to access data stored in the PHBST.nc file produced by ABINIT.
Args:
path: path to the file
"""
@ -1995,6 +2007,9 @@ class PhdosFile(AbinitNcFile, Has_Structure, NotebookWriter):
Container object storing the different DOSes stored in the
PHDOS.nc file produced by anaddb.
Provides helper function to visualize/extract data.
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: PhdosFile
"""
def __init__(self, filepath):
@ -2641,7 +2656,7 @@ class PhononBandsPlotter(NotebookWriter):
@add_fig_kwargs
def boxplot(self, mode_range=None, units="eV", swarm=False, **kwargs):
"""
Use seaborn to draw a box plot to show distributions of eigenvalues with respect to the band index.
Use seaborn_ to draw a box plot to show distributions of eigenvalues with respect to the band index.
Band structures are drawn on different subplots.
Args:
@ -2671,7 +2686,7 @@ class PhononBandsPlotter(NotebookWriter):
@add_fig_kwargs
def combiboxplot(self, mode_range=None, units="eV", swarm=False, ax=None, **kwargs):
"""
Use seaborn to draw a box plot comparing the distributions of the frequencies.
Use seaborn_ to draw a box plot comparing the distributions of the frequencies.
Phonon Band structures are drawn on the same plot.
Args:
@ -2694,7 +2709,6 @@ class PhononBandsPlotter(NotebookWriter):
import pandas as pd
data = pd.concat(frames, ignore_index=True)
import seaborn.apionly as sns
ax, fig, plt = get_ax_fig_plt(ax=ax)
ax.grid(True)
@ -2703,6 +2717,8 @@ class PhononBandsPlotter(NotebookWriter):
yname = "freq %s" % unit_tag(units)
data[yname] = factor * data["freq"]
#import seaborn.apionly as sns
import seaborn as sns
sns.boxplot(x="mode", y=yname, data=data, hue="label", ax=ax, **kwargs)
if swarm:
sns.swarmplot(x="mode", y=yname, data=data, hue="label", color=".25", ax=ax)
@ -3469,7 +3485,7 @@ def match_eigenvectors(v1, v2):
class RobotWithPhbands(object):
"""
Mixin class for robots associated to files with :class:`PhononBands`.
Mixin class for robots associated to files with |PhononBands|.
"""
def get_phbands_plotter(self, filter_abifile=None, cls=None):

View File

@ -29,6 +29,10 @@ class HistFile(AbinitNcFile, NotebookWriter):
with HistFile("foo_HIST") as hist:
hist.plot()
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: HistFile
"""
@classmethod
def from_file(cls, filepath):
@ -494,6 +498,9 @@ class HistFile(AbinitNcFile, NotebookWriter):
class HistRobot(Robot):
"""
This robot analyzes the results contained in multiple HIST.nc_ files.
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: HistRobot
"""
EXT = "HIST"
@ -676,7 +683,13 @@ class HistRobot(Robot):
class HistReader(ETSF_Reader):
"""This object reads data from the HIST file."""
"""
This object reads data from the HIST file.
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: HistReader
"""
@lazy_property
def num_steps(self):

View File

@ -324,6 +324,7 @@ class MdfFile(AbinitNcFile, Has_Structure, NotebookWriter):
with MdfFile("foo_MDF.nc") as mdf:
mdf.plot_mdfs()
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: MdfFile
"""
@classmethod
@ -489,6 +490,7 @@ class MdfReader(ETSF_Reader): #ElectronsReader
"""
This object reads data from the MDF.nc file produced by ABINIT.
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: MdfReader
"""
def __init__(self, path):
@ -916,6 +918,7 @@ class MdfRobot(Robot, RobotWithEbands):
"""
This robot analyzes the results contained in multiple MDF.nc files.
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: MdfRobot
"""
EXT = "MDF"

View File

@ -30,6 +30,7 @@ class Charges(Has_Structure):
The charges refer to the total charges for each atom (i.e. Z-n_electrons).
An eccess of electron has a negative charge
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: Charges
"""
@ -67,6 +68,7 @@ class HirshfeldCharges(Charges):
The charges refer to the total charges for each atom (i.e. Z-n_electrons).
An eccess of electron has a negative charge
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: HirshfeldCharges
"""
@classmethod
@ -103,6 +105,7 @@ class BaderCharges(Charges):
TThe charges refer to the total charges for each atom (i.e. Z-n_electrons).
An eccess of electron has a negative charge
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: BaderCharges
"""

View File

@ -32,6 +32,7 @@ class Cut3dDenPotNcFile(AbinitNcFile, Has_Structure):
Unlike _NcFileWithField subclasses, this object does not contain an electronic band-structure
and it's mainly used to convert from Fortran DEN/POT to netcdf.
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: Cut3dDenPotNcFile
"""
def __init__(self, filepath):
@ -156,6 +157,7 @@ class DensityNcFile(_NcFileWithField):
ncfile.density
ncfile.ebands.plot()
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: DensityNcFile
"""
field_name = "density"
@ -210,6 +212,7 @@ class DensityNcFile(_NcFileWithField):
class VhartreeNcFile(_NcFileWithField):
"""
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: VhartreeNcFile
"""
field_name = "vh"
@ -222,6 +225,7 @@ class VhartreeNcFile(_NcFileWithField):
class VxcNcFile(_NcFileWithField):
"""
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: VxcNcFile
"""
field_name = "vxc"
@ -234,6 +238,7 @@ class VxcNcFile(_NcFileWithField):
class VhxcNcFile(_NcFileWithField):
"""
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: VhxcNcFile
"""
field_name = "vhxc"
@ -246,6 +251,7 @@ class VhxcNcFile(_NcFileWithField):
class PotNcFile(_NcFileWithField):
"""
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: PotNcFile
"""
field_name = "vks"
@ -261,6 +267,7 @@ class DensityFortranFile(AbinitFortranFile):
Class representing the _DEN fortran file containing density.
Provides methods to run Cut3D and convert data into different formats.
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: DensityFortranFile
"""

View File

@ -300,6 +300,7 @@ class ElectronBands(Has_Structure):
with a NSCF run, fermie corresponds to the fermi level obtained
in the SCF run that produced the density used for the band structure calculation.
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: ElectronBands
"""
Error = ElectronBandsError
@ -897,7 +898,8 @@ class ElectronBands(Has_Structure):
ax, fig, plt = get_ax_fig_plt(ax=ax)
ax.grid(True)
import seaborn.apionly as sns
#import seaborn.apionly as sns
import seaborn as sns
hue = None if self.nsppol == 1 else "spin"
ax = sns.boxplot(x="band", y="eig", data=frame, hue=hue, ax=ax, **kwargs)
if swarm:
@ -2149,6 +2151,7 @@ class ElectronBandsPlotter(NotebookWriter):
Dictionary with the mapping label --> edos.
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: ElectronBandsPlotter
"""
_LINE_COLORS = ["b", "r",]
@ -2461,10 +2464,10 @@ class ElectronBandsPlotter(NotebookWriter):
Args:
e0: Option used to define the zero of energy in the band structure plot. Possible values:
- `fermie`: shift all eigenvalues to have zero energy at the Fermi energy (`self.fermie`).
- ``fermie``: shift all eigenvalues to have zero energy at the Fermi energy (`self.fermie`).
- Number e.g e0=0.5: shift all eigenvalues to have zero energy at 0.5 eV
- None: Don't shift energies, equivalent to e0=0
brange: Only bands such as `brange[0] <= band_index < brange[1]` are included in the plot.
brange: Only bands such as ``brange[0] <= band_index < brange[1]`` are included in the plot.
swarm: True to show the datapoints on top of the boxes
fontsize: Fontsize for title.
kwargs: Keyword arguments passed to seaborn boxplot.
@ -2495,7 +2498,7 @@ class ElectronBandsPlotter(NotebookWriter):
Args:
e0: Option used to define the zero of energy in the band structure plot. Possible values:
- `fermie`: shift all eigenvalues to have zero energy at the Fermi energy (`self.fermie`).
- ``fermie``: shift all eigenvalues to have zero energy at the Fermi energy (`self.fermie`).
- Number e.g e0=0.5: shift all eigenvalues to have zero energy at 0.5 eV
- None: Don't shift energies, equivalent to e0=0
@ -2520,7 +2523,8 @@ class ElectronBandsPlotter(NotebookWriter):
data = pd.concat(frames, ignore_index=True)
import matplotlib.pyplot as plt
import seaborn.apionly as sns
#import seaborn.apionly as sns
import seaborn as sns
if not spin_polarized:
ax, fig, plt = get_ax_fig_plt(ax=ax)
ax.grid(True)
@ -2682,6 +2686,7 @@ class ElectronsReader(ETSF_Reader, KpointsReaderMixin):
"""
This object reads band structure data from a netcdf_ file.
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: ElectronReader
"""
def read_ebands(self):
@ -2920,7 +2925,7 @@ class ElectronDos(object):
def plot_ax(self, ax, e0, spin=None, what="d", fact=1.0, exchange_xy=False, **kwargs):
"""
Helper function to plot the DOS data on the axis ax.
Helper function to plot the DOS data on the axis ``ax``.
Args:
ax: |matplotlib-Axes|.
@ -3296,7 +3301,7 @@ class Bands3D(object):
def __init__(self, structure, ibz, has_timrev, eigens, fermie):
"""
This object reconstructs by symmetri the eigenvalues in the full BZ starting from the IBZ.
This object reconstructs by symmetry the eigenvalues in the full BZ starting from the IBZ.
Provides methods to extract and visualize isosurfaces.
Args:
@ -3490,7 +3495,7 @@ class Bands3D(object):
@add_fig_kwargs
def plot_isosurfaces(self, e0="fermie", verbose=0, **kwargs):
"""
Plot isosurface with matplotlib
Plot isosurface with matplotlib_
.. warning::
@ -3592,7 +3597,7 @@ class Bands3D(object):
@add_fig_kwargs
def plot_contour(self, band, spin=0, plane="xy", elevation=0, ax=None, fontsize=10, **kwargs):
"""
Contour plot with matplotlib.
Contour plot with matplotlib_.
Args:
band:

View File

@ -41,6 +41,7 @@ class FatBandsFile(AbinitNcFile, Has_Header, Has_Structure, Has_ElectronBands, N
abiopen.py out_FATBANDS.nc -nb
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: FatBandsFile
"""
# These class attributes can be redefined in order to customize the plots.

View File

@ -29,6 +29,7 @@ class Fold2BlochNcfile(AbinitNcFile, Has_Header, Has_Structure, Has_ElectronBand
with Fold2BlochNcfile("foo_FOLD2BLOCH.nc") as fb:
fb.plot_unfolded()
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: Fold2BlochNcfile
"""
@classmethod

View File

@ -41,6 +41,7 @@ class GsrFile(AbinitNcFile, Has_Header, Has_Structure, Has_ElectronBands, Notebo
print("energy: ", gsr.energy)
gsr.ebands.plot()
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: GsrFile
"""
@classmethod
@ -183,7 +184,10 @@ class GsrFile(AbinitNcFile, Has_Header, Has_Structure, Has_ElectronBands, Notebo
@lazy_property
def xc(self):
""":class:`XcFunc` object with info on the exchange-correlation functional."""
"""
:class:`XcFunc` object with info on the exchange-correlation functional.
Use libxc convention :cite:`Marques2012`.
"""
return self.reader.read_abinit_xcfunc()
def close(self):
@ -333,6 +337,7 @@ class GsrReader(ElectronsReader):
This object reads the results stored in the _GSR (Ground-State Results) file produced by ABINIT.
It provides helper function to access the most important quantities.
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: GsrReader
"""
def read_cart_forces(self, unit="eV ang^-1"):
@ -350,10 +355,10 @@ class GsrReader(ElectronsReader):
# Given in order (1,1), (2,2), (3,3), (3,2), (3,1), (2,1).
c = self.read_value("cartesian_stress_tensor")
tensor = np.empty((3, 3), dtype=np.float)
for i in range(3): tensor[i,i] = c[i]
for p, (i, j) in enumerate(((2,1), (2,0), (1,0))):
tensor[i,j] = c[3+p]
tensor[j,i] = c[3+p]
for i in range(3): tensor[i, i] = c[i]
for p, (i, j) in enumerate(((2, 1), (2, 0), (1, 0))):
tensor[i, j] = c[3 + p]
tensor[j, i] = c[3 + p]
return tensor
@ -370,6 +375,7 @@ class GsrRobot(Robot, RobotWithEbands):
"""
This robot analyzes the results contained in multiple GSR.nc_ files.
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: GsrRobot
"""
EXT = "GSR"

View File

@ -865,6 +865,7 @@ class SigresFile(AbinitNcFile, Has_Structure, Has_ElectronBands, NotebookWriter)
sigres = SigresFile("foo_SIGRES.nc")
sigres.plot_qps_vs_e0()
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: SigresFile
"""
@classmethod
@ -1543,6 +1544,7 @@ class SigresReader(ETSF_Reader):
! omega4sd(b1gw:b2gw,nkibz,nomega4sd,nsppol).
! Frequencies used to evaluate the Derivative of Sigma.
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: SigresReader
"""
def __init__(self, path):
@ -1805,6 +1807,7 @@ class SigresRobot(Robot, RobotWithEbands):
"""
This robot analyzes the results contained in multiple SIGRES.nc files.
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: SigresRobot
"""
EXT = "SIGRES"

View File

@ -140,6 +140,7 @@ class OpticNcFile(AbinitNcFile, Has_Header, Has_Structure, Has_ElectronBands, No
optic.ebands.plot()
optic.plot()
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: OpticNcFile
"""
@ -397,6 +398,7 @@ class OpticReader(ElectronsReader):
This object reads the results stored in the optic.nc file
It provides helper function to access the most important quantities.
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: OpticReader
"""
def __init__(self, filepath):
@ -482,6 +484,7 @@ class OpticRobot(Robot, RobotWithEbands):
"""
This robot analyzes the results contained in multiple optic.nc files.
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: OpticRobot
"""
EXT = "OPTIC"

View File

@ -49,6 +49,7 @@ class ScrFile(AbinitNcFile, Has_Header, Has_Structure, NotebookWriter):
print(ncfile)
ncfile.plot_emacro()
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: ScrFile
"""
@classmethod
@ -251,6 +252,7 @@ class ScrReader(ETSF_Reader):
number_of_frequencies_dielectric_function, number_of_spins, number_of_spins,
number_of_coefficients_dielectric_function, number_of_coefficients_dielectric_function, complex)
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: ScrReader
"""
def __init__(self, filepath):
@ -652,6 +654,7 @@ class _AwggMatrix(object):
class Polarizability(_AwggMatrix):
"""
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: Polarizability
"""
netcdf_name = "polarizability"
@ -660,6 +663,7 @@ class Polarizability(_AwggMatrix):
class DielectricFunction(_AwggMatrix):
"""
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: DielectricFunction
"""
netcdf_name = "dielectric_function"
@ -668,6 +672,7 @@ class DielectricFunction(_AwggMatrix):
class InverseDielectricFunction(_AwggMatrix):
"""
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: InverseDielectricFunction
"""
netcdf_name = "inverse_dielectric_function"

View File

@ -82,7 +82,7 @@ class A2f(object):
return self.to_string()
def to_string(self, title=None, verbose=0):
"""String representation with verbosity level `verbose`."""
"""String representation with verbosity level ``verbose`` and an optional ``title``."""
lines = []; app = lines.append
app("Eliashberg Function" if not title else str(title))
@ -110,7 +110,7 @@ class A2f(object):
@lazy_property
def omega_log(self):
r"""
Get log moment of alpha^2F: exp((2/\lambda) \int dw a2F(w) ln(w)/w)
Logarithmic moment of alpha^2F: exp((2/\lambda) \int dw a2F(w) ln(w)/w)
"""
#return 270 / abu.eV_to_K
iw = self.iw0 + 1
@ -162,8 +162,7 @@ class A2f(object):
"""
Computes the critical temperature with the McMillan equation and the input mustar.
Return:
Tc in Kelvin degrees
Return: Tc in Kelvin.
"""
tc = (self.omega_log / 1.2) * \
np.exp(-1.04 * (1.0 + self.lambda_iso) / (self.lambda_iso - mustar * (1.0 + 0.62 * self.lambda_iso)))
@ -171,11 +170,11 @@ class A2f(object):
def get_mustar_from_tc(self, tc):
"""
Return the value of mustar that gives the critical temperature `tc` in the McMillan equation.
Return the value of mustar that gives the critical temperature ``tc`` in the McMillan equation.
Args:
tc:
Critical temperature in Kelvin
Critical temperature in Kelvin.
"""
l = self.lambda_iso
num = l + (1.04 * (1 + l) / np.log(1.2 * abu.kb_eVK * tc / self.omega_log))
@ -185,7 +184,7 @@ class A2f(object):
def plot(self, units="eV", with_lambda=True, exchange_xy=False, ax=None,
xlims=None, ylims=None, label=None, fontsize=12, **kwargs):
"""
Plot a2F(w), it's primitive lambda(w) and optionally the individual
Plot a2F(w), its primitive lambda(w) and optionally the individual
contributions due to the phonon branches.
Args:
@ -250,7 +249,7 @@ class A2f(object):
def plot_nuterms(self, units="eV", axmat=None, with_lambda=True,
xlims=None, ylims=None, label=None, **kwargs):
"""
Plot a2F(w), it's primitive lambda(w) and optionally the individual
Plot a2F(w), its primitive lambda(w) and optionally the individual
contributions due to the phonon branches.
Args:
@ -440,11 +439,12 @@ class EphFile(AbinitNcFile, Has_Structure, Has_ElectronBands, NotebookWriter):
ncfile.ebands.plot()
ncfile.phbands.plot()
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: EphFile
"""
@classmethod
def from_file(cls, filepath):
"""Initialize the object from a Netcdf file."""
"""Initialize the object from a netcdf_ file."""
return cls(filepath)
def __init__(self, filepath):
@ -519,14 +519,14 @@ class EphFile(AbinitNcFile, Has_Structure, Has_ElectronBands, NotebookWriter):
return self.reader.read_a2f(qsamp="qintp")
def get_a2f_qsamp(self, qsamp):
"""Return the :class:`A2f` object associated to q-sampling `qsamp`."""
"""Return the :class:`A2f` object associated to q-sampling ``qsamp``."""
if qsamp == "qcoarse": return self.a2f_qcoarse
if qsamp == "qintp": return self.a2f_qintp
raise ValueError("Invalid value for qsamp `%s`" % str(qsamp))
@lazy_property
def has_a2ftr(self):
"""True if netcdf file contains transport data."""
"""True if the netcdf file contains transport data."""
return "a2ftr_qcoarse" in self.reader.rootgrp.variables
@lazy_property
@ -548,7 +548,7 @@ class EphFile(AbinitNcFile, Has_Structure, Has_ElectronBands, NotebookWriter):
return self.reader.read_a2ftr(qsamp="qintp")
def get_a2ftr_qsamp(self, qsamp):
"""Return the :class:`A2ftr` object associated to q-sampling `qsamp`."""
"""Return the :class:`A2ftr` object associated to q-sampling ``qsamp``."""
if qsamp == "qcoarse": return self.a2ftr_qcoarse
if qsamp == "qintp": return self.a2ftr_qintp
raise ValueError("Invalid value for qsamp `%s`" % str(qsamp))
@ -563,7 +563,7 @@ class EphFile(AbinitNcFile, Has_Structure, Has_ElectronBands, NotebookWriter):
Plot phonon bands with eph coupling strength lambda(q, nu)
Args:
what: ``lambda`` for eph strength, gamma for phonon linewidths.
what: ``lambda`` for the eph coupling strength, ``gamma`` for phonon linewidths.
ylims: Set the data limits for the y-axis. Accept tuple e.g. ``(left, right)``
or scalar e.g. ``left``. If left (right) is None, default values are used
ax: |matplotlib-Axes| or None if a new figure should be created.
@ -614,7 +614,7 @@ class EphFile(AbinitNcFile, Has_Structure, Has_ElectronBands, NotebookWriter):
Plot phonon bands with eph coupling strength lambda(q, nu) or gamma(q, nu)
Args:
what: ``lambda`` for eph strength, gamma for ph linewidth.
what: ``lambda`` for eph coupling strength, ``gamma`` for phonon linewidths.
units: Units for phonon plots. Possible values in ("eV", "meV", "Ha", "cm-1", "Thz").
Case-insensitive.
scale: float used to scale the marker size.
@ -768,7 +768,7 @@ class EphFile(AbinitNcFile, Has_Structure, Has_ElectronBands, NotebookWriter):
def write_notebook(self, nbpath=None):
"""
Write a jupyter_ notebook to nbpath. If nbpath is None, a temporay file in the current
Write a jupyter_ notebook to ``nbpath``. If nbpath is None, a temporay file in the current
working directory is created. Return path to the notebook.
"""
nbformat, nbv, nb = self.get_nbformat_nbv_nb(title=None)
@ -796,6 +796,7 @@ class EphRobot(Robot, RobotWithEbands, RobotWithPhbands):
"""
This robot analyzes the results contained in multiple EPH.nc files.
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: EphRobot
"""
#TODO: Method to plot the convergence of DOS(e_F)
@ -807,7 +808,7 @@ class EphRobot(Robot, RobotWithEbands, RobotWithPhbands):
def get_dataframe(self, abspath=False, with_geo=False, funcs=None):
"""
Build and return a |pandas-DataFrame| with results
Build and return a |pandas-DataFrame| with the most important results.
Args:
abspath: True if paths in index should be absolute. Default: Relative to getcwd().
@ -861,7 +862,7 @@ class EphRobot(Robot, RobotWithEbands, RobotWithPhbands):
Can be None, string or function.
If None, no sorting is performed.
If string, it's assumed that the ncfile has an attribute with the same name
and `getattr` is invoked.
and ``getattr`` is invoked.
If callable, the output of callable(ncfile) is used.
ylims: Set the data limits for the y-axis. Accept tuple e.g. ``(left, right)``
or scalar e.g. ``left``. If left (right) is None, default values are used
@ -970,9 +971,9 @@ class EphReader(ElectronsReader):
"""
Reads data from EPH file and constructs objects.
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: EphReader
"""
def read_edos(self):
"""
Read the |ElectronDos| used to compute EPH quantities.
@ -994,7 +995,7 @@ class EphReader(ElectronsReader):
def read_phbands_qpath(self):
"""
Read and return |PhononBands| computed along the path.
Read and return a |PhononBands| object with frequencies computed along the path.
"""
structure = self.read_structure()
@ -1026,7 +1027,7 @@ class EphReader(ElectronsReader):
def read_phlambda_qpath(self):
"""
Reads the EPH coupling strength *interpolated* along the q-path.
Shape [nsppol, nqpath, natom3]
Return |numpy-array| with shape [nsppol, nqpath, natom3]
"""
return self.read_value("phlambda_qpath")
@ -1034,13 +1035,13 @@ class EphReader(ElectronsReader):
"""
Reads the phonon linewidths *interpolated* along the q-path.
Return results in eV
Shape [nsppol, nqpath, natom3]
Return |numpy-array| with shape [nsppol, nqpath, natom3]
"""
return self.read_value("phgamma_qpath") * units.Ha_to_eV
def read_a2f(self, qsamp):
"""
Read and return the Eliashberg function a2F(w).
Read and return the Eliashberg function :class:`A2F`.
"""
assert qsamp in ("qcoarse", "qintp")
mesh = self.read_value("a2f_mesh_" + qsamp) * units.Ha_to_eV

View File

@ -2,6 +2,8 @@
"""
This module contains objects for the postprocessing of Sigma_eph calculations.
For a theoretical introduction see :cite:`Giustino2017`
Warning:
Work in progress, DO NOT USE THIS CODE
@ -37,9 +39,9 @@ class QpTempState(namedtuple("QpTempState", "tmesh e0 qpe ze0 spin kpoint band")
.. Attributes:
spin: spin index (C convention, i.e >= 0)
kpoint: :class:`Kpoint` object.
kpoint: |Kpoint| object.
band: band index. (C convention, i.e >= 0).
tmesh: Temperature mesh in K.
tmesh: Temperature mesh in Kelvin.
e0: Initial KS energy.
qpe: Quasiparticle energy (complex) computed with the perturbative approach.
sigxme: Matrix element of Sigma_x.
@ -207,13 +209,14 @@ class QpTempList(list):
@property
def tmesh(self):
"""Temperature mesh in K."""
"""Temperature mesh in Kelvin."""
if len(self):
return self[0].tmesh
return []
@property
def ntemp(self):
"""Number of temperatures."""
return len(self.tmesh)
def __repr__(self):
@ -243,7 +246,7 @@ class QpTempList(list):
return np.array([qp.e0 for qp in self])
def get_field_itemp(self, field, itemp):
"""numpy array containing the values of field at temperature ``itemp``"""
"""|numpy-array| containing the values of field at temperature ``itemp``"""
return np.array([getattr(qp, field)[itemp] for qp in self])
#def get_skb_field(self, skb, field):
@ -315,7 +318,7 @@ class QpTempList(list):
linestyle = kwargs.pop("linestyle", "o")
for i, (field, ax) in enumerate(zip(fields, ax_list)):
print("About to plot field", field)
#print("About to plot field", field)
irow, icol = divmod(i, ncols)
ax.grid(True)
if irow == nrows - 1: ax.set_xlabel(xlabel)
@ -345,7 +348,7 @@ class QpTempList(list):
class EphSelfEnergy(object):
r"""
Electron self-energy due to phonon interaction :math:`\Sigma_{nk}(\omega,T)`
Actually diagonal matrix elements in the KS basis set.
Actually these are the diagonal matrix elements in the KS basis set.
"""
# Symbols used in matplotlib plots.
@ -360,7 +363,7 @@ class EphSelfEnergy(object):
Args:
qp: QpTempState instance.
spin: spin index
kpoint: K-point object.
kpoint: |Kpoint| object.
band: band index
wmesh: Frequency mesh in eV.
tmesh: Temperature mesh in K
@ -456,8 +459,8 @@ class EphSelfEnergy(object):
cmap: matplotlib color map.
ax_list:
what_list:
xlims: Set the data limits for the x-axis. Accept tuple e.g. `(left, right)`
or scalar e.g. `left`. If left (right) is None, default values are used.
xlims: Set the data limits for the x-axis. Accept tuple e.g. ``(left, right)``
or scalar e.g. ``left``. If left (right) is None, default values are used.
fontsize: legend and label fontsize.
Returns: |matplotlib-Figure|
@ -496,6 +499,7 @@ class SigEPhFile(AbinitNcFile, Has_Structure, Has_ElectronBands, NotebookWriter)
print(ncfile)
ncfile.ebands.plot()
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: SigEPhFile
"""
# Markers used for up/down bands.
@ -547,7 +551,7 @@ class SigEPhFile(AbinitNcFile, Has_Structure, Has_ElectronBands, NotebookWriter)
app("Number of k-points computed: %d" % (self.nkcalc))
#app("K-mesh: %s" % (str(self.ngkpt)))
app("Q-mesh: %s" % (str(self.ngqpt)))
app("zcut: %.3f [Ha], %3.f [eV]" % (self.zcut, self.zcut * units.Ha_to_eV))
app("zcut: %.3f [Ha], %.3f [eV]" % (self.zcut, self.zcut * units.Ha_to_eV))
app("Number of temperatures: %d, from %.1f to %.1f [K]" % (self.ntemp, self.tmesh[0], self.tmesh[-1]))
app("Number of bands included in self-energy: %d" % (self.nbsum))
app("symsigma: %s" % (self.symsigma))
@ -563,12 +567,12 @@ class SigEPhFile(AbinitNcFile, Has_Structure, Has_ElectronBands, NotebookWriter)
@lazy_property
def ebands(self):
""":class:`ElectronBands` object."""
"""|ElectronBands| object."""
return self.reader.read_ebands()
@property
def structure(self):
""":class:`Structure` object."""
"""|Structure| object."""
return self.ebands.structure
def close(self):
@ -588,14 +592,14 @@ class SigEPhFile(AbinitNcFile, Has_Structure, Has_ElectronBands, NotebookWriter)
@lazy_property
def ks_dirgaps(self):
"""
Array of shape [nsppol, nkcalc] with the KS gaps in eV ordered as kcalc.
|numpy-array| of shape [nsppol, nkcalc] with the KS gaps in eV ordered as kcalc.
"""
return self.reader.read_value("ks_gaps") * units.Ha_to_eV
@lazy_property
def qp_dirgaps_t(self):
"""
Array of shape [nsppol, nkcalc, ntemp] with the QP gaps in eV ordered as kcalc.
|numpy-array| of shape [nsppol, nkcalc, ntemp] with the QP gaps in eV ordered as kcalc.
"""
return self.reader.read_value("qp_gaps") * units.Ha_to_eV
@ -618,7 +622,7 @@ class SigEPhFile(AbinitNcFile, Has_Structure, Has_ElectronBands, NotebookWriter)
@lazy_property
def params(self):
"""AttrDict dictionary with the convergence parameters, e.g. nbsum."""
""":class:`OrderedDict` with the convergence parameters, e.g. nbsum."""
return OrderedDict([
("nbsum", self.nbsum),
("zcut", self.zcut),
@ -649,7 +653,7 @@ class SigEPhFile(AbinitNcFile, Has_Structure, Has_ElectronBands, NotebookWriter)
Args:
with_params:
ignore_imag: Only real part is returned if `ignore_imag`.
ignore_imag: Only real part is returned if ``ignore_imag``.
"""
ik = self.sigkpt2index(sigma_kpoint)
rows = []
@ -728,7 +732,7 @@ class SigEPhFile(AbinitNcFile, Has_Structure, Has_ElectronBands, NotebookWriter)
def write_notebook(self, nbpath=None, title=None):
"""
Write a jupyter_ notebook to nbpath. If nbpath is None, a temporay file in the current
Write a jupyter_ notebook to ``nbpath``. If nbpath is None, a temporay file in the current
working directory is created. Return path to the notebook.
"""
nbformat, nbv, nb = self.get_nbformat_nbv_nb(title=title)
@ -750,6 +754,7 @@ class SigEPhRobot(Robot, RobotWithEbands):
"""
This robot analyzes the results contained in multiple SIGEPH.nc files.
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: SigEPhRobot
"""
EXT = "SIGEPH"
@ -788,7 +793,7 @@ class SigEPhRobot(Robot, RobotWithEbands):
Return |pandas-Dataframe| with qp results for this spin, k-point
Args:
spin:
spin: Spin index
sigma_kpoint:
with_params:
ignore_imag: only real part is returned if ``ignore_imag``.
@ -900,6 +905,7 @@ class SigmaPhReader(ElectronsReader):
"""
Reads data from file and constructs objects.
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: SigmaPhReader
"""
def __init__(self, path):

View File

@ -12,7 +12,7 @@ TODO list:
* DONE Add mpirun_args see e.g nic4 and mpirun --bind-to None
* DONE Re-implement max_njobs in the queque using a counter local to the Launcher.
* DONE Re-implement max_njobs in the queue using a counter local to the Launcher.
* Fix annoying warnings about k-point sampling.
@ -21,11 +21,17 @@ TODO list:
* Try to reintegrate AbiPy with new abivars
* Add support for https://mybinder.readthedocs.io/en/latest/sample_repos.html#conda-environment-with-environment-yml
* Rename EPH.nc
* DONE Add https://github.com/mcmtroffaes/sphinxcontrib-bibtex
## Medium priority
* video with atom and hydrogen
* Fix travis warnings.
* ALMOST DONE: Fix travis warnings.
* DONE: Fix sphinx warnings.
@ -60,8 +66,6 @@ TODO list:
* Add memory error to Abinit errors
* Add support for https://mybinder.readthedocs.io/en/latest/sample_repos.html#conda-environment-with-environment-yml
* Remove Old workflow model.
## Low priority

View File

@ -11,9 +11,14 @@ as_etsfreader = ionc.as_etsfreader
class ETSF_Reader(ionc.ETSF_Reader):
"""
Overrides the read_structure method so that we always return
an instance of our Structure object
Provides high-level API to read data from netcdf files written
folloing the ETSF-IO specifications described in :cite:`Caliste2008`
"""
def read_structure(self):
"""
Overrides the ``read_structure`` method so that we always return
an instance of AbiPy |Structure| object
"""
from abipy.core.structure import Structure
return Structure.from_file(self.path)

View File

@ -221,6 +221,7 @@ class PWWaveFunction(WaveFunction):
"""
This object describes a wavefunction expressed in a plane-wave basis set.
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: PWWaveFunction
"""
def __init__(self, structure, nspinor, spin, band, gsphere, ug):
@ -581,5 +582,6 @@ class PAW_WaveFunction(WaveFunction):
"""
All the methods that are related to the all-electron representation should start with ae.
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: PaW_WaveFunction
"""

View File

@ -42,6 +42,7 @@ class WfkFile(AbinitNcFile, Has_Header, Has_Structure, Has_ElectronBands, Notebo
# Get a wavefunction.
wave = wfk.get_wave(spin=0, kpoint=[0, 0, 0], band=0)
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: WfkFile
"""
def __init__(self, filepath):
@ -296,6 +297,7 @@ class WFK_Reader(ElectronsReader):
"""
This object reads data from the WFK file.
.. rubric:: Inheritance Diagram
.. inheritance-diagram:: Wfk_Reader
"""

7
docs/changelog.rst Normal file
View File

@ -0,0 +1,7 @@
.. _changelog:
*********
Changelog
*********
.. include:: ../CHANGELOG.rst

View File

@ -46,6 +46,8 @@ extensions = [
'sphinx_gallery.gen_gallery',
"sphinxarg.ext", # CLI doc
#'nbsphinx',
'sphinxcontrib.bibtex',
"releases",
]
# Add any Sphinx extension module names here, as strings. They can
@ -393,3 +395,24 @@ autodoc_member_order = "bysource"
#'members', 'undoc-members', 'private-members', 'special-members', 'inherited-members' and 'show-inheritance'.
#autodoc_default_flags = ["show-inheritance", "inherited-members", "special-members"]
# From https://sphinxcontrib-bibtex.readthedocs.io/en/latest/usage.html#custom-formatting-sorting-and-labelling
# pybtex provides a very powerful way to create and register new styles, using setuptools entry points,
# as documented here: http://docs.pybtex.org/api/plugins.html
#from pybtex.style.formatting.unsrt import Style as UnsrtStyle
#from pybtex.style.template import toplevel # ... and anything else needed
#from pybtex.plugin import register_plugin
#
#class MyStyle(UnsrtStyle):
#
# def format_XXX(self, e):
# template = toplevel [
# # etc.
# ]
# return template.format_data(e)
#
#register_plugin('pybtex.style.formatting', 'mystyle', MyStyle)
# This is for releases http://releases.readthedocs.io/en/latest/usage.html
releases_github_path = "abinit/abipy"

View File

@ -83,5 +83,5 @@ Thus any example data that is required for the example should be added to the :f
Testing
=======
Abipy has a testing infrastructure based on :mod:`unittest`.
The tests are in :mod:`abipy.tests`, data files are strore in :file:`abipy/tests/data`.
Abipy has a testing infrastructure based on :mod:`unittest` and pytest_.
The tests are in :mod:`abipy.core.testing`, data files are strore in :file:`abipy/tests/data`.

View File

@ -134,7 +134,6 @@ working with Sphinx in general. Here are a few additional things to keep in mind
* The autodoc extension will handle index entries for the API, but additional
entries in the index_ need to be explicitly added.
.. _Sphinx: http://sphinx.pocoo.org
.. _documentation: http://sphinx.pocoo.org/contents.html
.. _`inline markup`: http://sphinx.pocoo.org/markup/inline.html
.. _index: http://sphinx.pocoo.org/markup/para.html#index-generating-markup

View File

@ -22,7 +22,8 @@ Getting Started
features
installation
whats_new
changelog
zzbiblio
Post-processing
===============
@ -57,9 +58,9 @@ API
Indices and tables
==================
:ref:`genindex`
:ref:`modindex`
:ref:`search`
:ref:`genindex`
:ref:`modindex`
:ref:`search`
License
=======

View File

@ -9,3 +9,5 @@ pip install sphinx-gallery
pip install sphinx-argparse
pip install sphinx_bootstrap_theme
pip install nbsphinx
pip install sphinxcontrib-bibtex
pip install releases

View File

@ -1,4 +1,5 @@
.. Links to websites
.. _Sphinx: http://sphinx.pocoo.org
.. _Abinit: https://www.abinit.org
.. _abiconfig: https://github.com/abinit/abiconfig
.. _abiflows: https://github.com/abinit/abiflows
@ -60,7 +61,7 @@
.. Links to jupyter notebooks associated to AbiPy files available at
https://nbviewer.jupyter.org/github/abinit/abitutorials/blob/master/abitutorials/index.ipynb?flush_cache=true
.. _AbipyStructure: https://nbviewer.jupyter.org/github/abinit/abitutorials/blob/master/abitutorials/structure.ipynb
.. _AbipyStructure: https://nbviewer.jupyter.org/github/abinit/abitutorials/blob/master/abitutorials/structure.ipynb
.. _AbinitInput: https://nbviewer.jupyter.org/github/abinit/abitutorials/blob/master/abitutorials/abinit_input.ipynb
.. _GSR.nc: https://nbviewer.jupyter.org/github/abinit/abitutorials/blob/master/abitutorials/gsr.ipynb
.. _HIST.nc: https://nbviewer.jupyter.org/github/abinit/abitutorials/blob/master/abitutorials/hist.ipynb
@ -79,8 +80,10 @@
.. |IrredZone| replace:: :class:`abipy.core.kpoints.IrredZone`
.. |KpointStar| replace:: :class:`abipy.core.kpoints.KpointStar`
.. |Structure| replace:: :class:`abipy.core.structure.Structure`
.. |pymatgen-Structure| replace:: :class:`pymatgen.core.structure.Structure`
.. |Lattice| replace:: :class:`pymatgen.core.lattice.Lattice`
.. |AbinitInput| replace:: :class:`abipy.abio.inputs.AbinitInput`
.. |MultiDataset| replace:: :class:`abipy.abio.inputs.MultiDataset`
.. |ElectronBands| replace:: :class:`abipy.electrons.ebands.ElectronBands`
.. |SkwInterpolator| replace:: :class:`abipy.core.skw.SkwInterpolator`
.. |ElectronDos| replace:: :class:`abipy.electrons.ebands.ElectronDos`
@ -89,12 +92,17 @@
.. |NscfTask| replace:: :class:`pymatgen.io.abinit.tasks.NscfTask`
.. |TaskManager| replace:: :class:`pymatgen.io.abinit.tasks.TaskManager`
.. |GsrFile| replace:: :class:`abipy.electrons.gsr.GsrFile`
.. |GsrRobot| replace:: :class:`abipy.electrons.gsr.GsrRobot`
.. |DdbFile| replace:: :class:`abipy.dfpt.ddb.DdbFile`
.. |DdbRobot| replace:: :class:`abipy.dfpt.ddb.DdbRobot`
.. |PhbstFile| replace:: :class:`abipy.dfpt.phonons.PhbstFile`
.. |PhdosFile| replace:: :class:`abipy.dfpt.phonons.PhdosFile`
.. |PhononDos| replace:: :class:`abipy.dfpt.phonons.PhononDos`
.. |PhononBandsPlotter| replace:: :class:`abipy.dfpt.phonons.PhononBandsPlotter`
.. |PhononDosPlotter| replace:: :class:`abipy.dfpt.phonons.PhononDosPlotter`
.. |Pseudo| replace:: :class:`pymatgen.io.abinit.pseudos.Pseudo`
.. |PseudoTable| replace:: :class:`pymatgen.io.abinit.pseudos.PseudoTable`
.. |Visualizer| replace:: :class:`abipy.iotools.visualizer.Visualizer`
.. Important objects provided by libraries.
.. |matplotlib-Figure| replace:: :class:`matplotlib.figure.Figure`

235
docs/refs.bib Normal file
View File

@ -0,0 +1,235 @@
@article{Gonze2016,
author = {Gonze, X. and Jollet, F. and Abreu Araujo, F. and Adams, D. and Amadon, B. and Applencourt, T. and Audouze, C. and Beuken, J.-M. and Bieder, J. and Bokhanchuk, A. and Bousquet, E. and Bruneval, F. and Caliste, D. and Côté, M. and Dahm, F. and Da Pieve, F. and Delaveau, M. and Di Gennaro, M. and Dorado, B. and Espejo, C. and Geneste, G. and Genovese, L. and Gerossier, A. and Giantomassi, M. and Gillet, Y. and Hamann, D.R. and He, L. and Jomard, G. and Laflamme Janssen, J. and Le Roux, S. and Levitt, A. and Lherbier, A. and Liu, F. and Lukačević, I. and Martin, A. and Martins, C. and Oliveira, M.J.T. and Poncé, S. and Pouillon, Y. and Rangel, T. and Rignanese, G.-M. and Romero, A.H. and Rousseau, B. and Rubel, O. and Shukri, A.A. and Stankovski, M. and Torrent, M. and Van Setten, M.J. and Van Troeye, B. and Verstraete, M.J. and Waroquiers, D. and Wiktor, J. and Xu, B. and Zhou, A. and Zwanziger, J.W.},
doi = {10.1016/j.cpc.2016.04.003},
pages = {106-131},
source = {Crossref},
url = {http://dx.doi.org/10.1016/j.cpc.2016.04.003},
volume = {205},
journal = {Computer Physics Communications},
publisher = {Elsevier BV},
title = {Recent developments in the {ABINIT} software package},
issn = {0010-4655},
year = {2016},
month = aug,
}
@article{Setyawan2010,
author = {Setyawan, Wahyu and Curtarolo, Stefano},
doi = {10.1016/j.commatsci.2010.05.010},
number = {2},
pages = {299-312},
source = {Crossref},
url = {http://dx.doi.org/10.1016/j.commatsci.2010.05.010},
volume = {49},
journal = {Computational Materials Science},
publisher = {Elsevier BV},
title = {High-throughput electronic band structure calculations: {Challenges} and tools},
issn = {0927-0256},
year = {2010},
month = aug,
}
@article{Ong2013,
author = {Ong, Shyue Ping and Richards, William Davidson and Jain, Anubhav and Hautier, Geoffroy and Kocher, Michael and Cholia, Shreyas and Gunter, Dan and Chevrier, Vincent L. and Persson, Kristin A. and Ceder, Gerbrand},
doi = {10.1016/j.commatsci.2012.10.028},
pages = {314-319},
source = {Crossref},
url = {http://dx.doi.org/10.1016/j.commatsci.2012.10.028},
volume = {68},
journal = {Computational Materials Science},
publisher = {Elsevier BV},
title = {Python Materials Genomics (pymatgen): {A} robust, open-source python library for materials analysis},
issn = {0927-0256},
year = {2013},
month = feb,
}
@article{Caliste2008,
author = {Caliste, D. and Pouillon, Y. and Verstraete, M.J. and Olevano, V. and Gonze, X.},
doi = {10.1016/j.cpc.2008.05.007},
number = {10},
pages = {748-758},
source = {Crossref},
url = {http://dx.doi.org/10.1016/j.cpc.2008.05.007},
volume = {179},
journal = {Computer Physics Communications},
publisher = {Elsevier BV},
title = {Sharing electronic structure and crystallographic data with {ETSF_IO}},
issn = {0010-4655},
year = {2008},
month = nov,
}
@article{Marques2012,
author = {Marques, Miguel A.L. and Oliveira, Micael J.T. and Burnus, Tobias},
doi = {10.1016/j.cpc.2012.05.007},
number = {10},
pages = {2272-2281},
source = {Crossref},
url = {http://dx.doi.org/10.1016/j.cpc.2012.05.007},
volume = {183},
journal = {Computer Physics Communications},
publisher = {Elsevier BV},
title = {Libxc: {A} library of exchange and correlation functionals for density functional theory},
issn = {0010-4655},
year = {2012},
month = oct,
}
@article{Ong2008,
author = {Ping Ong, Shyue and Wang, Lei and Kang, Byoungwoo and Ceder, Gerbrand},
doi = {10.1021/cm702327g},
number = {5},
pages = {1798-1807},
source = {Crossref},
url = {http://dx.doi.org/10.1021/cm702327g},
volume = {20},
journal = {Chem. Mater.},
publisher = {American Chemical Society (ACS)},
title = {{LiFePO2Phase} Diagram from First Principles Calculations},
issn = {0897-4756, 1520-5002},
year = {2008},
month = mar,
}
@article{Ong2010,
author = {Ong, Shyue Ping and Jain, Anubhav and Hautier, Geoffroy and Kang, Byoungwoo and Ceder, Gerbrand},
doi = {10.1016/j.elecom.2010.01.010},
number = {3},
pages = {427-430},
source = {Crossref},
url = {http://dx.doi.org/10.1016/j.elecom.2010.01.010},
volume = {12},
journal = {Electrochemistry Communications},
publisher = {Elsevier BV},
title = {Thermal stabilities of delithiated olivine {MPO4} {(M=Fe,} Mn) cathodes investigated using first principles calculations},
issn = {1388-2481},
year = {2010},
month = mar,
}
@article{Jain2013,
author = {Jain, Anubhav and Ong, Shyue Ping and Hautier, Geoffroy and Chen, Wei and Richards, William Davidson and Dacek, Stephen and Cholia, Shreyas and Gunter, Dan and Skinner, David and Ceder, Gerbrand and Persson, Kristin A.},
doi = {10.1063/1.4812323},
number = {1},
pages = {011002},
source = {Crossref},
url = {http://dx.doi.org/10.1063/1.4812323},
volume = {1},
journal = {APL Materials},
publisher = {AIP Publishing},
title = {Commentary: {The} Materials Project: {A} materials genome approach to accelerating materials innovation},
issn = {2166-532X},
year = {2013},
month = jul,
}
@article{Ong2015,
author = {Ong, Shyue Ping and Cholia, Shreyas and Jain, Anubhav and Brafman, Miriam and Gunter, Dan and Ceder, Gerbrand and Persson, Kristin A.},
doi = {10.1016/j.commatsci.2014.10.037},
pages = {209-215},
source = {Crossref},
url = {http://dx.doi.org/10.1016/j.commatsci.2014.10.037},
volume = {97},
journal = {Computational Materials Science},
publisher = {Elsevier BV},
title = {The Materials Application Programming Interface {(API):} {A} simple, flexible and efficient {API} for materials data based on {REpresentational} State Transfer {(REST)} principles},
issn = {0927-0256},
year = {2015},
month = feb,
}
@article{Grazulis2011,
author = {Gražulis, Saulius and Daškevič, Adriana and Merkys, Andrius and Chateigner, Daniel and Lutterotti, Luca and Quirós, Miguel and Serebryanaya, Nadezhda R. and Moeck, Peter and Downs, Robert T. and Le Bail, Armel},
doi = {10.1093/nar/gkr900},
number = {D1},
pages = {D420-D427},
source = {Crossref},
url = {http://dx.doi.org/10.1093/nar/gkr900},
volume = {40},
journal = {Nucleic Acids Research},
publisher = {Oxford University Press (OUP)},
title = {Crystallography Open Database {(COD):} {An} open-access collection of crystal structures and platform for world-wide collaboration},
issn = {1362-4962, 0305-1048},
year = {2011},
month = nov,
}
@article{Setten2017,
author = {van Setten, M. J. and Giantomassi, M. and Gonze, X. and Rignanese, G.-M. and Hautier, G.},
doi = {10.1103/physrevb.96.155207},
number = {15},
source = {Crossref},
url = {http://dx.doi.org/10.1103/physrevb.96.155207},
volume = {96},
journal = {Phys. Rev. B},
publisher = {American Physical Society (APS)},
title = {Automation methodologies and large-scale validation for {GW} : {Towards} high-throughput {GW} calculations},
issn = {2469-9950, 2469-9969},
year = {2017},
month = oct,
}
@article{Euwema1969,
author = {Euwema, R. N. and Stukel, D. J. and Collins, T. C. and Dewitt, J. S. and Shankland, D. G.},
doi = {10.1103/physrev.178.1419},
number = {3},
pages = {1419-1423},
source = {Crossref},
url = {http://dx.doi.org/10.1103/physrev.178.1419},
volume = {178},
journal = {Phys. Rev.},
publisher = {American Physical Society (APS)},
title = {Crystalline Interpolation with Applications to {Brillouin}-Zone Averages and Energy-Band Interpolation},
issn = {0031-899X},
year = {1969},
month = feb,
}
@article{Koelling1986,
author = {Koelling, D.D and Wood, J.H},
doi = {10.1016/0021-9991(86)90261-5},
number = {2},
pages = {253-262},
source = {Crossref},
url = {http://dx.doi.org/10.1016/0021-9991(86)90261-5},
volume = {67},
journal = {Journal of Computational Physics},
publisher = {Elsevier BV},
title = {On the interpolation of eigenvalues and a resultant integration scheme},
issn = {0021-9991},
year = {1986},
month = dec,
}
@article{Madsen2006,
author = {Madsen, Georg K.H. and Singh, David J.},
doi = {10.1016/j.cpc.2006.03.007},
number = {1},
pages = {67-71},
source = {Crossref},
url = {http://dx.doi.org/10.1016/j.cpc.2006.03.007},
volume = {175},
journal = {Computer Physics Communications},
publisher = {Elsevier BV},
title = {{BoltzTraP.} A code for calculating band-structure dependent quantities},
issn = {0010-4655},
year = {2006},
month = jul,
}
@article{Pickett1988,
author = {Pickett, Warren E. and Krakauer, Henry and Allen, Philip B.},
doi = {10.1103/physrevb.38.2721},
number = {4},
pages = {2721-2726},
source = {Crossref},
url = {http://dx.doi.org/10.1103/physrevb.38.2721},
volume = {38},
journal = {Phys. Rev. B},
publisher = {American Physical Society (APS)},
title = {Smooth {Fourier} interpolation of periodic functions},
issn = {0163-1829},
year = {1988},
month = aug,
}
@article{Giustino2017,
author = {Giustino, Feliciano},
doi = {10.1103/revmodphys.89.015003},
number = {1},
source = {Crossref},
url = {http://dx.doi.org/10.1103/revmodphys.89.015003},
volume = {89},
journal = {Rev. Mod. Phys.},
publisher = {American Physical Society (APS)},
title = {Electron-phonon interactions from first principles},
issn = {0034-6861, 1539-0756},
year = {2017},
month = feb,
}

View File

@ -1,10 +0,0 @@
.. _whats-new:
*******************
What's new in AbiPy
*******************
.. contents::
:backlinks: top
.. include:: ../CHANGELOG.rst

View File

@ -60,7 +60,6 @@ Gmac
queue:
qname: gmac
qtype: shell
#qtype: slurm
job:
mpi_runner: mpirun
pre_run:
@ -78,15 +77,6 @@ Gmac
#condition: {"$eq": {omp_threads: 2}}
batch_adapter: *batch
db_connector:
enabled: no
database: abinit
collection: test
host: 0.0.0.0
port: 8080
user: gmatteo
password: helloworld
Hercules
@ -218,12 +208,7 @@ Juqueen
job: &job
mpi_runner: runjob
shell_env:
#PATH: $HOME/abinit/801-private/bgq_xlf_base/src/98_main/:$PATH
#PATH: $HOME/abinit/801-private/bgq_xlf_omp/src/98_main/:$PATH
PATH: $HOME/abinit/801-private/bgq_xlf_legacy/src/98_main/:$PATH
#PATH: $HOME/abinit/801-private/bgq_xlf_o2/src/98_main/:$PATH
#PATH: $HOME/abinit/801-private/bgq_gcc_legacy/src/98_main/:$PATH
#PATH: $HOME/abinit/801-private/bgq_gcc/src/98_main/:$PATH
# List of qadapters
# Note that on the BlueGeneQ we need at least two qadapters
@ -240,7 +225,7 @@ Juqueen
qparams:
# Mandatory on juqueen.
notification: error
mail_user: matteo.giantomassi@uclouvain.be
mail_user: john@nowhere.com
environment: COPY_ALL
limits:
timelimit: 00:20:00

10
docs/zzbiblio.rst Normal file
View File

@ -0,0 +1,10 @@
.. _bibliography:
*************
Bibliography
*************
.. rubric:: References
.. bibliography:: refs.bib
:cited: