elphbolt
A solver for the coupled and decoupled electron and phonon Boltzmann transport equations.
Science Score: 49.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 18 DOI reference(s) in README -
✓Academic publication links
Links to: arxiv.org, sciencedirect.com, nature.com, aps.org, acs.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (6.6%) to scientific vocabulary
Keywords
ab-initio-simulations
boltzmann-transport
charge-conductivity
coarray-fortran
drag-effect
electron-phonon-coupling
gpu-acceleration
openacc
opencoarrays
phonon-phonon-coupling
thermal-conductivity
thermoelectricity
Last synced: 6 months ago
·
JSON representation
Repository
A solver for the coupled and decoupled electron and phonon Boltzmann transport equations.
Basic Info
Statistics
- Stars: 53
- Watchers: 8
- Forks: 31
- Open Issues: 46
- Releases: 3
Topics
ab-initio-simulations
boltzmann-transport
charge-conductivity
coarray-fortran
drag-effect
electron-phonon-coupling
gpu-acceleration
openacc
opencoarrays
phonon-phonon-coupling
thermal-conductivity
thermoelectricity
Created over 5 years ago
· Last pushed 6 months ago
Metadata Files
Readme
Changelog
License
Citation
README.org
#+OPTIONS: ^:{}
[[./logo/logo.png]]
* elphbolt + superconda
~elphbolt~ (short for electron-phonon Boltzmann transport) is a modern Fortran (2018 standard) suite of transport codes. It provides a solver for both the coupled /and/ decoupled electron and phonon Boltzmann transport equations (BTEs). You can read about the methodology and implementation here: https://www.nature.com/articles/s41524-022-00710-0. In addition, you get the ~superconda~ app for solving the phonon-mediated superconducting properties within the Eliashberg formalism.
Using /ab initio/ electron-phonon and 3- and 4-phonon interactions and a fully wave vector and electron band/phonon branch resolved formulation of the BTEs, the ~elphbolt~ app gives you the
- phonon and electronic thermal conductivities;
- electronic conductivity;
- phonon and electronic contributions to the thermopower; and
- effect of the mutual electron-phonon drag on the transport coefficients listed above;
- effective thermoelectric transport coefficients for nanostructures (nanowires, nanoribbons, and thin-films).
Using /ab initio/ electron-phonon and a fully wave vector and electron band/phonon branch resolved, Eliashberg formulation of superconductivity, the ~superconda~ app gives you the
- anisotropic and isotropic Eliashberg spectral function and
- phonon-mediated superconducting transition temperature.
To date (April 28, 2025), ~elphbolt~ / ~superconda~ has been used in the following works:
| material(s) | physics probed | publication |
|------------------------------------+-------------------------------------------------------------------------------------------------------+-------------------------------------------|
| Si | phonon mean-free-path spectroscopy by Raman thermometry | [[https://www.sciencedirect.com/science/article/pii/S2542529325001403][Mat. Tod. Phys. 2025, 101784]] |
| -TaN | drag asymmetry and reverse heat flow | [[https://doi.org/10.1016/j.mtphys.2025.101706][Mat. Tod. Phys 53, 101706]] |
| MoS_{2} | coupled electron-phonon hydrodynamics | [[https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.134.226301][Phys. Rev. Lett. 134, 226301]] |
| NbGe_{2} & NbSe_{2} | drag | [[https://cpl.iphy.ac.cn/en/article/doi/10.1088/0256-307X/41/12/126301?viewType=HTML][Chin. Phys. Lett. > 2024 > 41(12), 126301]] |
| wGaN | thermal analysis of GaN-based photonic membranes for optoelectronics | [[https://arxiv.org/abs/2410.12515][preprint]] |
| Surface halogenated Ti_{2}O Moenes | drag enhancement of thermoelectric transport | [[https://doi.org/10.1016/j.apsusc.2024.161766][Appl. Surf. Sci. 683, 161766]] |
| TiSe_{2} | phonon transport manipulation via reversible charge density wave melting | [[https://www.nature.com/articles/s41699-024-00501-9][npj 2D mat. & app. 8, 64]] |
| MoS_{2}, silicene, & AlN | electron drag enhancement of phonon thermal conductivity in 2D materials | [[https://pubs.acs.org/doi/full/10.1021/acs.nanolett.4c02097][Nano Lett. 20, 26]] |
| Ti_{2}OX_{2} (X=F, Cl) MOene | thermoelectric performance | [[https://doi.org/10.1063/5.0196117][J. Appl. Phys. 135, 125106]] |
| Si, BAs, LiF, & wGaN | new models of phonon-isotope interaction and temperature dependent 3+4ph limited thermal conductivity | [[https://doi.org/10.1103/PhysRevB.109.165201][Phys. Rev. B 109, 165201]] |
| Si nanowires | effect of nanostructuring on drag and thermoelectric figure of merit, ZT | [[https://www.sciencedirect.com/science/article/pii/S0017931024002163][Intl. J. Heat & Mass Trans. 225, 125385]] |
| wGaN | 3+4 phonons and thin-film scattering limited thermal conductivity | [[https://journals.aps.org/prb/abstract/10.1103/PhysRevB.108.235313][Phys. Rev. B 108, 235313]] |
| wGaN & wAlN | drag | [[https://journals.aps.org/prb/abstract/10.1103/PhysRevB.107.245202][Phys. Rev. B 107, 245202]] |
| MgB_{2} | superconductivity enhancement | [[https://journals.aps.org/prb/abstract/10.1103/PhysRevB.107.184518][Phys. Rev. B 107, 184518]] |
| BAs | drag | [[https://doi.org/10.1103/PhysRevB.107.L081202][Phys. Rev. B 107, L081202]] |
| Diamond | drag | [[https://doi.org/10.1016/j.mtphys.2022.100740][Mat. Tod. Phys 27, 100740]] |
| Si | drag | [[https://www.nature.com/articles/s41524-022-00710-0][npj Comp. Mat. 8, 28]] |
Stylistically, ~elphbolt~ is designed to be simple, small, fast, and extensible. It uses an object-based procedural style, which allows fast development, while resulting in a rather compact source. The symmetries of the crystal are fully exploited and the transport active Fermi window is used to allow the sampling of extremely fine wave vector meshes needed for accurate solutions of the BTEs and Eliashberg equations. Parallelism is achieved through modern Fortran's intrinsic ~coarrays~ feature that is fully supported by recent versions of the ~gcc~ compiler.
~elphbolt~ currently works with the ~Quantum Espresso~ (https://www.quantum-espresso.org/) suite and its core module ~EPW~ (https://epw-code.org/) for the phonon quantities and the Wannier space information, respectively. An partial interface with all-electron ~exciting~ (https://exciting-code.org/) code exists.
~elphbolt~ is a "free as in freedom" code distributed under the GNU General Public License (GPL) version 3. You can read more about the philosophy of software freedom here: [[https://www.gnu.org/philosophy/free-sw.en.html]].
~elphbolt~ is for all of the transport physics community. Feel free to fork and contribute. Create a pull request to incorporate your changes to this project. Tailor it to your own liking/needs and please pay it forward in the spirit of *free software* and *open science*. Let me know of bugs, suggestions for improvement, feature requests, criticism, and praises. You may use the *Discussions* section of this repository for this purpose. There is also a [[https://discord.gg/SZN66GsCHb][discord server]] for informal discussions about theory, set up, usage, extensions, maintenance, possible collaborations, etc. You might find me hanging out there from time to time. I'd love to have a coffee with you and talk physics there in the *office-hour* voice channel.
** Documentation
The source is heavily commented and can be auto-documented with ~FORD~ (https://github.com/cmacmackin/ford). For installation of ~FORD~, consult https://forddocs.readthedocs.io/en/latest/. To generate the documentation and the call graphs (you need ~graphviz~ for the latter), say ~ford projectfile.md~. Then read ~./documentation/index.html~ with your browser.
** Install on HPC systems with ~gcc~
*** 1. Get compiler
You will need a *recent* version of ~gcc~ that supports Fortran 2018 features. Most HPC systems will have a module that you can load. If not, build your own. Here I show how you can build it with spack (https://spack.io/). I suggest building with ~nvptx~ since that will allow you to use gpu acceleration later on. If you do not care for gpus at the moment, leave out the ~+nvptx~ bit in the following command.
#+BEGIN_SRC bash
spack install gcc@12.3.0+nvptx
#+END_SRC
I like to add the ~/bin~ directory to my system ~$PATH~. Alternatively, you can follow spack's own recommendations for using its packages.
*** 2. Get Fortran package manager (~fpm~ [v>=0.7])
Follow the instructions here: https://fpm.fortran-lang.org/install/index.html#install to install ~fpm~. I, personally, like to build from source, as described here: https://fpm.fortran-lang.org/install/index.html#building-from-source. Alternatively, grab the binary, ~chmod +x~ it, and place in your system ~$PATH~.
*** 3. Get ~OpenCoarrays~
~OpenCoarrays~ ([[http://www.opencoarrays.org]]) is an implementation of the ~coarrays~ functionalities. Follow its installation guide to build it on your system. I personally like to use its install script where I pass my compiler explicitly. So something like the following should work. ~Opencoarrays~ will internally download a compatible MPI implementation. It is advisable that you remove any other MPI implementation (OpenMPI or MPICH) that you might have accessible on your system before running the following script. At the moment the combination of `gfortran-12` with `OpenCoarrays v2.9.3` should work.
#+BEGIN_SRC bash
./install.sh --with-fortran /gfortran-12 \
--with-cxx /g++-12 \
--with-c /gcc-12
#+END_SRC
Carefully read the output on the screen and add the paths to ~caf~ and ~cafrun~ to your ~$PATH~. At this point, check the outputs of
#+BEGIN_SRC bash
caf --show
#+END_SRC
and
#+BEGIN_SRC bash
cafrun --show
#+END_SRC
to confirm that these are wrapping the correct compiler and runner.
*** 4. Build ~elphbolt~
**** Standard (no gpu)
First say the following to install a dependency:
#+BEGIN_SRC bash
sh install_blas+lapack.sh
#+END_SRC
This will build ~blas~ and ~lapack~ using a local copy of https://github.com/gha3mi/forblas and https://github.com/gha3mi/forlapack. You need to do this just once. The libraries will be placed in ~$HOME/.local/lib/~. Then to build, install, and test, say
#+BEGIN_SRC bash
source fpm_config_caf.sh; fpm install
fpm test test_*
fpm test bte_regression --runner="sh test/3C-SiC/fpm_run_bte_caf.sh"
#+END_SRC
The ~elphbolt~ and ~superconda~ apps will now be available in your ~$HOME/.local/bin~ directory. They should both be directly callable from your shell. If not, add the above directory to our path.
Modify the fpm manifest file, ~fpm.toml~, to suit your system.
**** Experimental method (broken at the moment!)
For a cpu+gpu build with OpenACC (https://www.openacc.org/), the only difference from the above is that you need to source a different file before the install:
#+BEGIN_SRC bash
source fpm_config_caf_openacc.sh; fpm install
#+END_SRC
Here I have assumed that you have already done ~blas~ and ~lapack~ building step. The testing commands are the same as before.
** Examples
A full example for cubic silicon is provided. More examples will be added over time.
** Workflow
This is a transport code. And it comes after doing some DFT, DFPT, and Wannier calculations. Users of the popular ~ShengBTE~ ([[https://bitbucket.org/sousaw/shengbte/src/master/]]) code will find that just one extra step (an ~EPW~ calculation) on top of the ~ShengBTE~ workflow is needed to obtain all the input files necessary for a coupled BTEs calculation with ~elphbolt~. You can, however, calculate just a decoupled phonon or electron BTE, or Eliashberg equations if you so choose. For these, only a subset of the input files will be needed. For example, if you want to calculate just a decoupled electron BTE or Eliashberg equations, then you do not need to provide the third order force constants. Similarly, if you are interested in just a phonon BTE without the phonon-electron interactions, then the Wannier parameters are not required.
Following is the full set of input files:
*** Input file
The input file - ~input.nml~ - contains the information about the crystal and the various parameters of the calculation. A full description of all the input parameters is given in the next section. Also take a look at the ~input.nml~ file for the cubic silicon example.
*** Second order interatomic force constants
This comes out of the usual ~ph.x~ and ~q2r.x~ calculation from ~Quantum Espresso~. This file is needed to calculate phonon quantities and must be named ~espresso.ifc2~.
*** Third order interatomic force constants
This code supports the ~thirdorder.py~, dense ~d3q~, and the sparse ~d3q~ formats of the third order force constants file. For the ~d3q~ interface, the sparse format is strongly recommended. Check out [[https://bitbucket.org/sousaw/thirdorder/src/master]] and [[https://anharmonic.github.io/d3q/]] to learn more.
If you seek a solution of the decoupled phonon BTE or the coupled electron-phonon BTEs, at least one of these files, named ~FORCE_CONSTANTS_3RD~, ~mat3R~, or ~mat3R.sparse~ for the three supported formats, respectively, must be provided.
*** 4-phonon scattering rates
These are the 4-phonon scattering rates out of the code ~FourPhonon~ (https://github.com/FourPhonon/FourPhonon). You must pass these to ~elphbolt~ if you want to include 4-phonon scattering in the calculation. To turn on the 4-phonon functionality, look up the keys ~fourph~ and ~fourph_mesh_ref~ in the Namelist ~numerics~ below. Take special care when generating the 4-phonon scattering rates in the ~FourPhonon~ code for use in ~elphbolt~. First off, you must choose the wave vector mesh in ~FourPhonon~ such that it scales to the phonon wave vector mesh (~qmesh~) of ~elphbolt~ by a non-zero integer. Secondly, you must pass the irreducible 4-phonon scattering rates data file to ~elphbolt~ as ~FourPhonon_BTE.w_4ph_T~. For example, for a $920$ K calculation, the file name should be ~FourPhonon_BTE.w_4ph_T0.920E+03~. Additionally, you must prepend at the top of the file the total number of vectors in the irreducible Brillouin zone (IBZ) of the ~FourPhonon~ calculation. Thirdly, you must provide the file ~FourPhonon_BTE.qpoint_full~. Prepend the total number of wave vectors in the full Brillouin zone (FBZ) of the ~FourPhonon~ calculation. Internally, ~elphbolt~ will interpolate the scattering rates calculated by ~FourPhonon~ on a coarse, say $10\times 10\times 10$, mesh on to a fine ~qmesh~, say $60\times 60\times 60$ for a ~fourph_mesh_ref~ value of $6$. It is always a good idea to plot the interpolated fine mesh scattering rates, ~ph.W_rta_4ph~, to compare against the coarse mesh ones from ~FourPhonon~. It is also good to remember that this is a rather crude way to approximate the effect of the 4-phonon scattering because of the (in general tri-)linear interpolation method used and the fact that the corresponding 4-phonon in-scattering correction is not accounted for in the iterative solver.
*** Wannier space information
These are required if you want to solve a decoupled electron BTE, include phonon-electron interaction in the decoupled phonon BTE, Eliashberg equations for the phonon-mediated superconducting properties, or the coupled electron-phonon BTEs. You have the option of choosing between two external Wannier calculators.
**** ~epw~
These include the files ~rcells_k~, ~rcells_q~, ~rcells_g~, ~wsdeg_k~, ~wsdeg_q~, and ~wsdeg_g~ which must be printed out of an ~EPW~ calculation. We will also need the files ~epmatwp1~ and ~epwdata.fmt~, both of which are outputted by ~EPW~ after the Bloch -> Wannier calculation step. The first contains the Wannier space electron-phonon matrix elements and the second contains the Wannier space dynamical matrix and Hamiltonian. A couple of modified source files can be found in ~EPW/src/~ directory which are needed to correctly print these quantities out during ~EPW~'s Bloch -> Wannier calculation step. The user must recompile their ~EPW~ code following the replacement with these modified source codes. At this time, ~EPW v5.3.1~ (shipped with ~Quantum Espresso v6.7MaX_Release~) must be used for this purpose.
Note that ~elphbolt~ can only read the ~epwdata.fmt~ file only if the ~EPW~ calculation is performed with the flag ~lifc~ set to ~.false.~. I thank Gui-Lin Zhu for pointing this out. In any case, I strongly recommend that the user generates the relevant quantites from ~elphbolt~ along high-symmetry paths and compares directly against ~EPW~ (see next section).
**** ~exciting~
[I will list here the input files from ~exciting~ soon.]
*** High symmetry electron and phonon wave vector path and initial electron wave vector
These are required if you want to plot the electronic bands, phonon dispersions, and the electron-phonon matrix elements along high symmetry paths in the Brillouin zone.
You need to provide a wave vector path file named ~highsympath.txt~ (to be used as both the electron and phonon wave vectors) and an initial electron wave vector file named ~initialk.txt~ if you want the electron bands, phonon dispersions, and electron-phonon matrix elements calculated along the path. The first line of ~highsympath.txt~ must be an integer equaling the number of wave vectors in the path. This should be followed by the same number of rows of wave vectors expressed in crystal coordinates (fractions of the reciprocal lattice vectors). The ~initialk.txt~ file must simply contain one wave vector in crystal coordinates.
*** Bespoke screening for the isotropic Eliashberg spectral function
If needed (see flag ~use_external_eps~ below), the isotropic Eliashberg spectral function can be screened with a bespoke dielectric function. In this case, a file named ~eps_squared~ must be placed into the run directory. This will contain a single column of data, giving the modulus-square of the dielectric function at each point in the equidistant phonon energy mesh (see flag ~domega~ below).
** Description of ~input.nml~
For the ~elphbolt~ app, there are 5 Namelists in the ~input.nml~ file: ~allocations~, ~crystal_info~, ~electrons~, ~numerics~, and ~wannier~. For the ~superconda~ app, there is an additional Namelist -- ~superconductivity~. Users of the ~ShengBTE~ code will find the format of this file familiar. Below the keys for each Namelist are described.
*** ~allocations~
| key | Type | Default | Description |
|---------------+---------+---------+---------------------------------|
| ~numelements~ | Integer | 0 | Number of types of basis atoms. |
| ~numatoms~ | Integer | 0 | Number of basis atoms. |
*** ~crystal_info~
| key | Type | Default | Description |
|-------------------+---------------------------------------+-----------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ~name~ | String | "Crystal" | Name of material. |
| ~elements~ | String array of size ~numelements~ | 'X' | Elements in the basis. |
| ~atomtypes~ | Integer array of size ~numatoms~ | 0 | Integer tagging unique elements in the basis. |
| ~masses~ | Real array of size ~numelements~ | -1.0 | Masses of the basis atoms in amu. If masses are not provided, set ~VCA~ or ~DIB~ to .True.. |
| ~VCA~ | Logical | .False. | Use isotopic mix for basis atom masses? |
| ~DIB~ | Logical | .False. | Use dominant isotope mass for basis atom masses |
| ~lattvecs~ | 3 x 3 real array | 0.0 | Lattice vectors in Cartesian coordinates in units of nm. If ~twod~ is .True., the crystal must be positioned on the x-y plane and the third lattice vector must be of the form (0 0 layer thickness). |
| ~basis~ | 3 x ~numatoms~ real array | 0.0 | Atomic basis vectors in crystal coordinates (i.e. fraction of ~lattvecs~). |
| ~polar~ | Logical | .False. | Is the system polar? |
| ~born~ | 3 x 3 x ~numatoms~ rank-3 real tensor | 0.0 | Born effective charge tensor (from phonon calculation). |
| ~epsilon~ | 3 x 3 rank-2 real tensor | 0.0 | High-frequency dielectric tensor (from phonon calculation). |
| ~read_epsiloninf~ | Real | .False. | Read high-frequency dielectric constant from input? |
| ~epsiloninf~ | Real | 0.0 | High-frequency scalar dielectric constant. If ~read_epsiloninf~ is .True. (.False.), this is read from the input (set equal to the trace-average of ~epsilon~). Currently this quantity is not used in any calculation. |
| ~epsilon0~ | Real | 0.0 | Static scalar dielectric constant. Used for screening electron-charged impurity interaction, if included. Look up ~elchimp~ under the Namelist ~numerics~. For the default value of ~epsilon0~, the electron-charged interaction blows up. |
| ~T~ | Real | -1.0_dp | Crystal temperature in K. |
| ~twod~ | Logical | .False. | Is the system (quasi)-2-dimensional? See description of ~lattvecs~ also. |
| ~subs_masses~ | Real array of size ~numelements~ | 0.0 | Masses of substitution atoms in amu. This is needed if ~phsubs~ is .True. See table of keys for Namelist ~numerics~. |
| ~subs_conc~ | Real array of size ~numelements~ | 0.0 | Concentration of the substitutional atoms in cm^{-3} (or cm^{-2} if ~twod~ is .True.). This is needed if ~phsubs~ is .True. See table of keys for Namelist ~numerics~. |
| ~bound_length~ | Real | 1e12 mm | Characteristic sample length for boundary scattering. This is needed if ~phbound~ or ~elbound~ is .True. See table of keys for Namelist ~numerics~. |
| ~specfac~ | Real | 0.0 | Specularity factor for phonon-thin-film scattering |
*** ~electrons~
| key | Type | Default | Description |
|--------------------+------------------------------+---------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ~spindeg~ | Integer | 2 | Spin degeneracy of the bands. |
| ~enref~ | Real | -999999.99999 | Electron referenc energy in eV. This is the center of the transport active window. Also see description for ~fsthick~. See table of keys for Namelist 'numerics'. |
| ~chempot~ | Real | -999999.99999 | Chemical potential in eV. |
| ~metallic~ | Logical | .False. | Is the system metallic? |
| ~numbands~ | Integer | 0 | Total number of electronic Wannier bands. |
| ~indlowband~ | Integer | 0 | Lowest transport band index. |
| ~indhighband~ | Integer | 0 | Highest transport band index. |
| ~indlowconduction~ | Integer | 0 | Lowest conduction band index. For ~metallic~ .False., this or ~indhighvalence~ must be provided. |
| ~indhighvalence~ | Integer | 0 | Highest valence band index. For ~metallic~ .False., this or ~indlowconduction~ must be provided. |
| ~dopingtype~ | Character | 'x' | Type of doping ('n' or 'p'). This is needed for ~runlevel~ 0 only. See table of keys for Namelist 'numerics'. |
| ~scissor~ | Real | 0.0 | Scissor operator for conduction bands in eV.
|
| ~numconc~ | Integer | 100 | Number of carrier concentration points. This is needed for ~runlevel~ 0 only. See table of keys for Namelist 'numerics'. |
| ~conclist~ | Real array of size ~numconc~ | 0.0 | List carrier concentrations in cm^{-3} (or cm^{-2} if ~twod~ is .True.). This is needed for ~runlevel~ 0 only. See table of keys for Namelist 'numerics'. |
| ~numT~ | Integer | 100 | Number of temperature points. This is needed for ~runlevel~ 0 only. See table of keys for Namelist 'numerics'. |
| ~Tlist~ | Real array of size ~numT~ | 100 | List of temperatures in K. This is needed for ~runlevel~ 0 only. See table of keys for Namelist 'numerics'. |
| ~Zn~ | Real | 0.0 | Ionization number of donor impurities. This is needed only when ~elchimp~ is .True. and ~metallic~ is .False. See table of keys for Namelist 'numerics'. |
| ~Zp~ | Real | 0.0 | Ionization number of acceptor impurities. This is needed only when ~elchimp~ is .True. and ~metallic~ is .False. See table of keys for Namelist 'numerics'. |
*** ~numerics~
| key | Type | Default | Description |
|-----------------------------+-------------------------+----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ~qmesh~ | Integer array of size 3 | 1 1 1 | Phonon wave vector mesh (q). |
| ~mesh_ref~ | Integer | 1 | Electron wave vector mesh (k) refinement factor with respect to the phonon mesh. |
| ~fsthick~ | Real | 0.0 | Fermi surface thickness in eV. |
| ~datadumpdir~ | String | "./" | Runtime data dump directory. |
| ~read_gq2~ | Logical | .False. | Read electron-phonon (irreducible wedge q) vertices from disk? |
| ~read_gk2~ | Logical | .False. | Read electron-phonon (irreducible wedge k) vertices from disk? |
| ~read_V~ | Logical | .False. | Read phonon-phonon (irreducible wedge q) vertices from disk? |
| ~read_W~ | Logical | .False. | Read phonon-phonon (irreducible wedge q) transition probabilities from disk? |
| ~W_OTF~ | Logical | .True. | Calculate phonon-phonon transition probabilities on-the-fly? This will prevent disk-dump. |
| ~tetrahedra~ | Logical | .False. | Use the analytic tetrahedron method instead of the triangular method for 3d delta function evaluation? |
| ~fourph~ | Logical | .False. | Include 4-ph scattering at the RTA level? |
| ~fourph_mesh_ref~ | Integer | 1 | Mesh refinement factor of ~elphbolt~'s phonon wavectors with respect to external (~FourPhonon~ code) 4-ph calculation. |
| ~phe~ | Logical | .False. | Include phonon-electron interaction in phonon BTE? |
| ~Y_OTF~ | Logical | .True. | Calculate phonon-electron transition probabilities on-the-fly? This will prevent disk-dump. |
| ~phiso~ | Logical | .False. | Include phonon-isotope interaction in phonon BTE? |
| ~phiso_1b_theory~ | String | 'DIB-1B' | Choose between 'Tamura' (1st Born on top of virtual crystal approximation) or 'DIB-1B' (1st Born on top of dominant isotope background). |
| ~phsubs~ | Logical | .False. | Include phonon-substitution interaction in phonon BTE? If .True., look up ~subs_masses~ and ~subs_conc~ under the Namelist ~crystal_info~. |
| ~phbound~ | Logical | .False. | Include phonon-boundary interaction in phonon BTE? If .True., look up ~bound_length~ under the Namelist ~crystal_info~. |
| ~onlyphbte~ | Logical | .False. | Calculate phonon BTE without electron drag? |
| ~elchimp~ | Logical | .False. | Include electron-charged impurity scattering in electron BTE? If .True., look up ~epsilon0~ under Namelist ~crystal_info~ and ~Zn~ and ~Zp~ under Namelist ~electrons~. |
| ~elbound~ | Logical | .False. | Include electron-boundary interaction in electron BTE? If .True., look up ~bound_length~ under the Namelist ~crystal_info~. |
| ~onlyebte~ | Logical | .False. | Calculate electron BTE without phonon drag? |
| ~drag~ | Logical | .True. | Include electron and phonon drag term in the phonon and electron BTE, respectively. |
| ~maxiter~ | Integer | 50 | Maximum number of iteration steps for the BTE(s). |
| ~conv_thres~ | Real | 1e-4 | Relative convergence threshold for the BTE(s). |
| ~runlevel~ | Integer | 1 | Control for the type of calculation. 0: Calculate table of chemical potentials for a given doping type, temperature range, and carrier concentrations. Look up ~dopingtype~, ~numconc~, ~conclist~, ~numT~, and ~Tlist~ under Namelist ~electrons~. 1: Transport calculation(s). 2: Post-processing results to calculate the spectral transport coefficients. 3: Superconductivity calculation, look up keys of the Namelist ~superconductivity~. |
| ~plot_along_path~ | Logical | .False. | Plot Wannier interpolated quantities along high symmetry wave vectors? |
| ~ph_en_min~ | Real | 0.0 | Lower bound of equidistant phonon energy mesh in eV. Only needed for ~runlevel~ 2. |
| ~ph_en_max~ | Real | 1.0 | Upper bound of equidistant phonon energy mesh in eV. Only needed for ~runlevel~ 2. |
| ~ph_en_num~ | Integer | 100 | Number of equidistant phonon energy mesh points. Only needed for ~runlevel~ 2. |
| ~el_en_min~ | Real | -10.0 | Lower bound of equidistant electron energy mesh in eV. Only needed for ~runlevel~ 2. |
| ~el_en_max~ | Real | 10.0 | Upper bound of equidistant electron energy mesh in eV. Only needed for ~runlevel~ 2. |
| ~el_en_num~ | Integer | 100 | Number of equidistant electron energy mesh points. Only needed for ~runlevel~ 2. |
| ~ph_mfp_npts~ | Integer | 100 | Number of equidistant mean-free-path points for cumulative transport coefficients. |
| ~ph_abs_q_npts~ | Integer | 100 | Number of equidistant absolute wave vector points for cumulative transport coefficients. |
| ~use_Wannier_ifc2s~ | Logical | .False. | Use 2nd order force constants from the Wannierized data? |
| ~solve_bulk~ | Logical | .True. | Do you want to solve the BTE for the bulk-system, i.e. not using nanostructures algorithm. |
| ~solve_nano~ | Logical | .False. | Do you want to compute effective thermoelectric properties for highly symmetric nanostructure? See description of ~nano~ block. |
| ~num_batches~ | Integer | 1 | Number of batches that will be parallel-processed, in sequence. This is to allow restarts from timed out jobs. |
| ~restart_from_batch_record~ | Logical | .False. | Do you want to restart from where you left of? |
*** ~wannier~
| key | Type | Default | Description |
|-----------------------+-------------------------+---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------|
| ~coarse_qmesh~ | Integer array of size 3 | 0 0 0 | Coarse phonon wave vector mesh employed in the Wannier calculation. This must match the q-mesh in the Quantum Espresso second order force constants file. |
| ~Wannier_engine_name~ | String | 'epw' | Choose external code ('epw' or 'exciting') for Wannierized quantities. |
*** ~superconductivity~
| key | Type | Default | Description |
|--------------------+---------+---------+--------------------------------------------------------------------------------------------------------------------------------------------------|
| ~mustar~ | Real | 0.0 | Dimensionless Coulomb pseudopotential parameter. |
| ~domega~ | Real | 0.0 eV | Equidistant phonon energy mesh spacing. |
| ~matsubara_cutoff~ | Integer | 0 | Matsubara energy cutoff as a factor of the highest phonon energy. |
| ~qp_cutoff~ | Integer | 0 | Quasiparticle energy cutoff as factor of the highest phonon energy. |
| ~isotropic~ | Logical | .False. | Use the isotropic (fast!) version of the Eliashberg theory? |
| ~use_external_eps~ | Logical | .False. | Use user generated modulus-squared dielectric function to screen the Eliashberg spectral function. For now, only works for the isotropic theory. |
| ~Tstart~ | Real | 0.0 K | Starting point of the temperature sweep. |
| ~Tend~ | Real | 0.0 K | End point of the temperature sweep. |
| ~dT~ | Real | 0.0 K | Temperature difference used in temperature sweep. |
| ~print_aniso_gap_FS~ | Logical | .False. | Print out the anisotropic gap function at the Fermi surface? |
*** ~nano~
| key | Type | Default | Description |
|--------------------+-----------------+---------+--------------------------------------------------------------------------------------------------------------------------------------------------|
| ~nsys~ | Integer | -1 | Number of nanostructures to tackle |
| ~tag~ | Character(nsys) | 'xx' | Tags to choose the kind of nanostructures we are dealing with in each case ('nw': nanowire; 'nr': nanoribbon; 'tf': thin-film) |
| ~limit~ | Real(nsys) | -1 | Limit length of the nanostructures in nm (radius for nw, width for nr, and thickness for tf) |
| ~taxis~ | Real(nsys,3) | 0 0 0 | Direction in which transport will be computed (for tf and nr it must be perpendicular to the normal vector) |
| ~naxis~ | Real(nsys,3) | 0 0 0 | Vector defining the normal of the system for tf and nr (only fill for those cases) |
** Description of output files
The code produces a large amount of data. Here, we provide a description of the various types output files.
Below I(F)BZ = irreducible (full) Brillouin zone; RTA = relaxation time approximation; ch. imp. = charged impurities; bound = boundary; subs = substitution; ~numbands~ = number of electron bands; and ~numbranches~ = number of phonon branches.
*** Zero temperature data
| File name | Directory | Units | Description |
|----------------------------------+-------------------+----------------------+------------------------------------------------------------------------------------------------------------------------------------------------|
| ~*.reclattvecs~ | ~./~ | nm^{1} | Reciprocal lattice vectors. |
| ~el.fbz2ibz_map~ | ~./~ | none | FBZ to IBZ mappings. |
| ~el(ph).dos~ | ~./~ | eV^{-1} | Band resolved electronic (phononic) density of states. ~numbands~ (~numbranches~) columns of reals. |
| ~el(ph).ens_i(f)bz~ | ~./~ | eV | I(F)BZ electronic (phononic) band energies. ~numbands~ (~numbranches~) columns of reals. |
| ~el.inwindow_states_ibz~ | ~./~ | none | IBZ electronic states (wave vector index, band index) within the transport active window. 2 columns of integers. |
| ~el(ph).vels_i(f)bz~ | ~./~ | Kms^{-1} | I(F)BZ electronic (phononic) band (branch) velocities. In each row, there are 3 (Cartesian direction) sets of ~numbands~ (~numbranches~) numbers. |
| ~el(ph).wavevecs_i(f)bz~ | ~./~ | crystal | I(F)BZ electronic (phononic) wave vectors. For the electrons, these are only within the transport window. |
| ~el.ens_kpath~ | ~./~ | eV | Electron energies along the given k-path. |
| ~ph.ens_qpath~ | ~./~ | eV | Phonon energies along the given q-path. |
| ~gk2.istate*~ | ~datadumpdir/g2/~ | eV^{2} | Squared e-ph (1-phonon) vertices for every IBZ electron state. Binary. |
| ~gq2.istate*~ | ~datadumpdir/g2/~ | eV^{2} | Squared e-ph (1-phonon) vertices for every IBZ electron state. Binary. |
| ~Vm2.istate*~ | ~datadumpdir/V2/~ | eV^{2}^{-6}amu^{-3} | Squared ph-ph (3-phonon) vertices for every IBZ phonon state. Binary. |
| ~el.W_rta_elbound~ | ~./~ | THz | IBZ RTA el-bound scattering rates. ~numbands~ columns of reals. |
| ~ph.W_rta_phiso(bound)[subs]~ | ~./~ | THz | IBZ RTA ph-iso (bound) [subs] scattering rates. ~numbranches~ columns of reals. |
| ~gk_qpath~ | ~./~ | eV | Absolute value of the e-ph matrix elements (averaged over the degenerate bands and branches) for the given k-vector and q-path. |
| ~a2F.istate*~ | ~datadumpdir/sc/~ | none | Anisotropic Eliashberg spectral function for every IBZ state. Binary. |
| ~omegas~ | ~./~ | eV | Equidistant phonon energy mesh. |
| ~a2F_iso~ | ~./~ | none | Isotropic Eliashberg spectral function on the equidistant phonon energy mesh. |
| ~a2F_iso_branch_resolved~ | ~./~ | none | Phonon branch resolved isotropic Eliashberg spectral function on the equidistant phonon energy mesh. |
| ~cum_lambda_iso_branch_resolved~ | ~./~ | none | Phonon branch resolved standard, isotropic electron-phonon coupling parameter on the equidistant phonon energy mesh. |
| ~quasiparticle_ens~ | ~./~ | eV | Equidistant electronic quasiparticle energy mesh. |
*** Finite temperature data
| File name | Directory | Units | Description |
|------------------------------------+----------------------+-------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ~Xchimp.istate*~ | ~datadumpdir/mu*/X/~ | THz | Transition probability for e-ch. imp. processes for every IBZ electron state. Binary. |
| ~Xminus[plus].istate*~ | ~datadumpdir/mu*/X/~ | THz | Transition probability for e-ph (1-phonon) minus [plus] processes for every IBZ electron state. Binary. |
| ~Y.istate*~ | ~datadumpdir/mu*/Y/~ | THz | Transition probability for ph-e (1-phonon) processes for every IBZ phonon state. Binary. |
| ~Wm[p].istate*~ | ~datadumpdir/T*/W/~ | THz | Transition probability for ph-ph (3-phonon) minus [plus] processes for every IBZ phonon state. Binary. |
| ~el.W_rta_eph[chimp]~ | ~./T*/~ | THz | IBZ RTA el-ph [ch. imp.] scattering rates. ~numbands~ columns of reals. Identically zero for bands outside the transport window. |
| ~ph.W_rta_3ph(4ph)[phe]~ | ~./T*/~ | THz | IBZ RTA 3ph (4ph) [ph-e] scattering rates. ~numbranches~ columns of reals. |
| ~drag[nodrag]_el_sigma_*~ | ~./T*/~ | \Omega^{-1}m^{-1} | Band resolved (~_~) and total (~_tot~) charge conductivity tensor at every iteration step. |
| ~drag[nodrag]_el_alphabyT_*~ | ~./T*/~ | Am^{-1}K^{-1} | Band resolved (~_~) and total (~_tot~) electronic Peltier(-ish) coefficient tensor at every iteration step. |
| ~drag[nodrag]_el_kappa0_*~ | ~./T*/~ | Wm^{-1}K^{-1} | Band resolved (~_~) and total (~_tot~) electronic thermal conductivity (zero E-field) tensor at every iteration step. |
| ~drag[nodrag]_el_sigmaS_*~ | ~./T*/~ | Am^{-1}K^{-1} | Band resolved (~_~) and total (~_tot~) electronic thermopower times conductivity tensor at every iteration step. |
| ~drag_ph_alphabyT_*~ | ~./T*/~ | Am^{-1}K^{-1} | Branch resolved (~_~) and total (~_tot~) phonon Peltier(-ish) coefficient tensor at every iteration step. |
| ~drag[nodrag]_ph_kappa_*~ | ~./T*/~ | Wm^{-1}K^{-1} | Branch resolved (~_~) and total (~_tot~) phonon thermal conductivity tensor at every iteration step. |
| ~RTA{nodrag}(partdcpl)[drag]_I0_*~ | ~./T*/~ | nmeVK^{-1} | Band resolved (~_~) and total (~_tot~) electronic response function to \nabla T-field in the RTA {dragless} (partially decoupled) [drag] theory. |
| ~RTA{nodrag}(partdcpl)[drag]_J0_*~ | ~./T*/~ | nmC | Band resolved (~_~) and total (~_tot~) electronic response function to E-field in the RTA {dragless} (partially decoupled) [drag] theory. |
| ~RTA{nodrag}[drag]_F0_*~ | ~./T*/~ | nmeVK^{-1} | Branch resolved (~_~) and total (~_tot~) phononic response function to \nabla T-field in the RTA {dragless} [fully coupled] theory. |
| ~drag_G0_*~ | ~./T*/~ | nmC | Branch resolved (~_~) and total (~_tot~) phononic response function to E-field in fully coupled theory. |
| ~iso_quasiparticle_DOS.T*~ | ~./~ | none | Scaled quasiparticle density of states on the equidistant electronic quasiparticle energy mesh. |
| ~iso_quasiparticle_Delta.T*~ | ~./~ | eV | Isotropic superconducting gap on the equidistant electronic quasiparticle energy mesh. |
| ~aniso_quasiparticle_Delta_FS.T~ | ~./~ | eV | Anisotropic superconducting gap on the Fermi surface for each IBZ electronic state within the Fermi window. The first column gives the number of FBZ images of the IBZ point. |
*** Nanostructure data
| File name | Directory | Units | Description |
|-----------------------------------------+-------------------+---------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ~nano_info~ | ~./~ | -/nm/-/-/-/-/-/- | Nanostructure information tag(i)/limit(i)/taxis(i,:)/naxis(i,:) |
| ~Sph~ | ~./~ | eV/Kms^{-1}/Kms^{-1}/Kms^{-1}/- | Nanostructure suppression factor for phonons in FBZ energy(i,ib)/vg(i,ib,:)/Sph(i,ib,:) |
| ~Sel~ | ~./~ | eV/Kms^{-1}/Kms^{-1}/Kms^{-1}/- | Nanostructure suppression factor for electrons in FBZ energy(i,ib)/vg(i,ib,:)/Sel(i,ib,:) |
| ~nano_drag[nodrag]_el_sigma_*~ | ~./T*/~ | \Omega^{-1}m^{-1} | Band resolved (~_~) and total (~_tot~) charge conductivity tensor at every iteration step. |
| ~nano_drag[nodrag]_el_alphabyT_*~ | ~./T*/~ | Am^{-1}K^{-1} | Band resolved (~_~) and total (~_tot~) electronic Peltier(-ish) coefficient tensor at every iteration step. |
| ~nano_drag[nodrag]_el_kappa0_*~ | ~./T*/~ | Wm^{-1}K^{-1} | Band resolved (~_~) and total (~_tot~) electronic thermal conductivity (zero E-field) tensor at every iteration step. |
| ~nano_drag[nodrag]_el_sigmaS_*~ | ~./T*/~ | Am^{-1}K^{-1} | Band resolved (~_~) and total (~_tot~) electronic thermopower times conductivity tensor at every iteration step. |
| ~nano_drag_ph_alphabyT_*~ | ~./T*/~ | Am^{-1}K^{-1} | Branch resolved (~_~) and total (~_tot~) phonon Peltier(-ish) coefficient tensor at every iteration step. |
| ~nano_drag[nodrag]_ph_kappa_*~ | ~./T*/~ | Wm^{-1}K^{-1} | Branch resolved (~_~) and total (~_tot~) phonon thermal conductivity tensor at every iteration step. |
| ~nano_RTA{nodrag}(partdcpl)[drag]_I0_*~ | ~./T*/~ | nmeVK^{-1} | Band resolved (~_~) and total (~_tot~) electronic response function to \nabla T-field in the RTA {dragless} (partially decoupled) [drag] theory. |
| ~nano_RTA{nodrag}(partdcpl)[drag]_J0_*~ | ~./T*/~ | nmC | Band resolved (~_~) and total (~_tot~) electronic response function to E-field in the RTA {dragless} (partially decoupled) [drag] theory. |
| ~nano_RTA{nodrag}[drag]_F0_*~ | ~./T*/~ | nmeVK^{-1} | Branch resolved (~_~) and total (~_tot~) phononic response function to \nabla T-field in the RTA {dragless} [fully coupled] theory. |
| ~nano_drag_G0_*~ | ~./T*/~ | nmC | Branch resolved (~_~) and total (~_tot~) phononic response function to E-field in fully coupled theory. |
Note: For the temperature dependent quantites each columnn refers to the respective nanostructure from input.
*** Postprocessing (runlevel 2)
| File name | Directory | Units | Description |
|---------------------------------------------------------------------+-----------+--------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ~RTA{nodrag}(partdcpl)[drag]_{([iterated_el])}_sigma_spectral_*~ | ~./T*/~ | \Omega^{-1}m^{-1}eV^{-1} | Band resolved (~_~) and total (~_tot~) spectral charge conductivity tensor in the RTA {([iterated])} {dragless} (partially decoupled) [drag] theory. |
| ~RTA{nodrag}(partdcpl)[drag]_{([iterated_el])}_alphabyT_spectral_*~ | ~./T*/~ | Am^{-1}K^{-1}eV^{-1} | Band resolved (~_~) and total (~_tot~) spectral electronic Peltier(-ish) coefficient tensor in the RTA {([iterated])} {dragless} (partially decoupled) [drag] theory. |
| ~RTA{nodrag}(partdcpl)[drag]_{([iterated_el])}_kappa0_spectral_*~ | ~./T*/~ | Wm^{-1}K^{-1}eV^{-1} | Band resolved (~_~) and total (~_tot~) spectral electronic thermal conductivity (zero E-field) tensor in the RTA {([iterated])} {dragless} (partially decoupled) [drag] theory. |
| ~RTA{nodrag}(partdcpl)[drag]_{([iterated_el])}_sigmaS_spectral_*~ | ~./T*/~ | Am^{-1}K^{-1}eV^{-1} | Band resolved (~_~) and total (~_tot~) spectral electronic thermopower times conductivity tensor in the RTA {([iterated])} {dragless} (partially decoupled) [drag] theory. |
| ~drag_iterated_ph_alphabyT_spectral_*~ | ~./T*/~ | Am^{-1}K^{-1}eV^{-1} | Branch resolved (~_~) and total (~_tot~) spectral phonon Peltier(-ish) coefficient tensor in the iterated drag theory. |
| ~RTA{nodrag}[drag]_{[iterated_ph]}_kappa_spectral_*~ | ~./T*/~ | Wm^{-1}K^{-1}eV^{-1} | Branch resolved (~_~) and total (~_tot~) spectral phonon thermal conductivity tensor in the RTA {[iterated]} {dragless} [drag] theory. |
| ~el[ph].en_grid~ | ~./~ | eV | Uniform electron [phonon] energy mesh for spectral coefficient calculation. |
Owner
- Name: Nakib H. Protik
- Login: nakib
- Kind: user
- Company: Humboldt University of Berlin
- Website: https://nhprotik.bitbucket.io/
- Repositories: 8
- Profile: https://github.com/nakib
I am a theoretical/computational physicist. For my day job, I work to push the boundaries of transport physics. I am curious about modern Fortran and all Lisps.
GitHub Events
Total
- Create event: 17
- Issues event: 13
- Watch event: 12
- Delete event: 12
- Member event: 1
- Issue comment event: 12
- Push event: 139
- Pull request review event: 72
- Pull request review comment event: 140
- Pull request event: 37
- Fork event: 7
Last Year
- Create event: 17
- Issues event: 13
- Watch event: 12
- Delete event: 12
- Member event: 1
- Issue comment event: 12
- Push event: 139
- Pull request review event: 72
- Pull request review comment event: 140
- Pull request event: 37
- Fork event: 7
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 5
- Total pull requests: 16
- Average time to close issues: about 15 hours
- Average time to close pull requests: 1 day
- Total issue authors: 4
- Total pull request authors: 4
- Average comments per issue: 0.0
- Average comments per pull request: 0.19
- Merged pull requests: 10
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 5
- Pull requests: 16
- Average time to close issues: about 15 hours
- Average time to close pull requests: 1 day
- Issue authors: 4
- Pull request authors: 4
- Average comments per issue: 0.0
- Average comments per pull request: 0.19
- Merged pull requests: 10
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- nakib (16)
- Molakeshi (1)
- wanyuloo (1)
- Guodonglin-cqust (1)
Pull Request Authors
- dpaulzc (8)
- sallyi95 (5)
- ElenaTrukhan (5)
- nakib (5)
- mrm24 (2)
- prikarsartam (1)
- SergeevGregory (1)
Top Labels
Issue Labels
enhancement (8)
good first issue (6)
help wanted (3)
bug (1)
Pull Request Labels
enhancement (3)
good first issue (2)
Dependencies
Dockerfile
docker
- debian buster build
.github/workflows/build_test.yml
actions
- actions/checkout v3 composite
- jwlawson/actions-setup-cmake v1.8 composite