mirror of https://github.com/abinit/abipy.git
Add bibliography, use releases for changelog
This commit is contained in:
parent
a6831795ea
commit
54854185f9
|
@ -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.
|
||||
|
|
|
@ -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}.
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
"""
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
"""
|
||||
|
||||
|
|
|
@ -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
|
||||
"""
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
"""
|
||||
|
|
|
@ -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
|
||||
"""
|
||||
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
.. _changelog:
|
||||
|
||||
*********
|
||||
Changelog
|
||||
*********
|
||||
|
||||
.. include:: ../CHANGELOG.rst
|
23
docs/conf.py
23
docs/conf.py
|
@ -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"
|
||||
|
|
|
@ -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`.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
=======
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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`
|
||||
|
|
|
@ -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 = {{Li−Fe−P−O2Phase} 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,
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
.. _whats-new:
|
||||
|
||||
*******************
|
||||
What's new in AbiPy
|
||||
*******************
|
||||
|
||||
.. contents::
|
||||
:backlinks: top
|
||||
|
||||
.. include:: ../CHANGELOG.rst
|
|
@ -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
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
.. _bibliography:
|
||||
|
||||
*************
|
||||
Bibliography
|
||||
*************
|
||||
|
||||
.. rubric:: References
|
||||
|
||||
.. bibliography:: refs.bib
|
||||
:cited:
|
Loading…
Reference in New Issue