![]() |
AlmaBTE
1.3
A solver of the space- and time-dependent Boltzmann transport equation for phonons
|
Emulate ShengBTE using the facilities in the ALMA library. More...
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <iomanip>
#include <algorithm>
#include <vector>
#include <string>
#include <complex>
#include <functional>
#include <Eigen/Dense>
#include <boost/mpi.hpp>
#include <boost/format.hpp>
#include <boost/filesystem.hpp>
#include <boost/math/special_functions/pow.hpp>
#include <boost/algorithm/string.hpp>
#include <boost/iostreams/stream_buffer.hpp>
#include <boost/iostreams/device/null.hpp>
#include <boost/math/distributions/normal.hpp>
#include <symmetry.hpp>
#include <utilities.hpp>
#include <structures.hpp>
#include <vasp_io.hpp>
#include <qpoint_grid.hpp>
#include <bulk_properties.hpp>
#include <dos.hpp>
#include <isotopic_scattering.hpp>
#include <processes.hpp>
#include <shengbte_iter.hpp>
Classes | |
struct | sheng_allocations |
Data structure containing the information in an allocations namelist from ShengBTE. More... | |
struct | sheng_parameters |
Data structure containing the information in a parameters namelist from ShengBTE. More... | |
struct | sheng_flags |
Data structure containing the information in a flags namelist from ShengBTE. More... | |
Functions | |
sheng_allocations | read_sheng_allocations (void) |
Parse the allocations namelist from a CONTROL file in the current directory. | |
sheng_parameters | read_sheng_parameters (void) |
Parse the flags namelist from a CONTROL file in the current directory. | |
sheng_flags | read_sheng_flags (void) |
Parse the flags namelist from a CONTROL file in the current directory. | |
void | read_sheng_scell (struct sheng_allocations *allocs, int *na, int *nb, int *nc) |
Read the supercell size from a CONTROL file in the current directory. | |
void | read_sheng_lattvec (struct sheng_allocations *allocs, double lattvec[3][3]) |
Read the lattice vectors (including lfactor) from a CONTROL file in the current directory. More... | |
void | read_sheng_epsilon (struct sheng_allocations *allocs, double epsilon[3][3]) |
Read the dielectric tensor from a CONTROL file in the current directory. | |
void | read_sheng_types (struct sheng_allocations *allocs, int *types) |
Read the list of atom types from a CONTROL file in the current directory. | |
void | read_sheng_masses (struct sheng_allocations *allocs, double *types) |
Read the list of element masses from a CONTROL file in the current directory. More... | |
void | read_sheng_gfactors (struct sheng_allocations *allocs, double *types) |
Read the list of mass disorder "g" factors from a CONTROL file in the current directory. More... | |
void | read_sheng_position (struct sheng_allocations *allocs, int index, double position[3]) |
Read the coordinates of an atom from a CONTROL file in the current directory. More... | |
void | read_sheng_born (struct sheng_allocations *allocs, int index, double born[3][3]) |
Read the Born effective charge tensor of an atom from a CONTROL file in the current directory. More... | |
void | read_sheng_element (struct sheng_allocations *allocs, int index, char element[4]) |
Read an element name from a CONTROL file in the current directory. | |
std::unique_ptr< std::ostream > | open_from_master (const std::string &filename) |
std::string | gen_subdir_name (double T) |
Create a directory name corresponding to a given temperature. More... | |
std::array< double, 2 > | calc_percentiles_log (const Eigen::Ref< const Eigen::ArrayXXd > &sigma) |
Compute the 25th and 75th percentiles of log(sigma) More... | |
Eigen::ArrayXXd | calc_mode_gruneisen (const alma::Crystal_structure &cell, const alma::Gamma_grid &grid, const std::vector< alma::Thirdorder_ifcs > &fc3) |
Compute the Grüneisen parameter for each mode on a grid. More... | |
double | calc_total_gruneisen (const alma::Gamma_grid &grid, const Eigen::Ref< const Eigen::ArrayXXd > &modegrun, double T) |
Compute the total Grüneisen parameter as a weighted average of mode Grüneisen parameters. More... | |
int | main (int argc, char **argv) |
Variables | |
boost::iostreams::stream_buffer< boost::iostreams::null_sink > | null_buf |
Emulate ShengBTE using the facilities in the ALMA library.
The binary generated from this file will read a ShengBTE CONTROL file, perform the same calculation as ShengBTE would, and generate a ShengBTE-compatible output. A few limitations apply: in particular, support for nanowire calculations using the method described in Phys. Rev. B 85 (2012) 195436 is not implemented.
Eigen::ArrayXXd calc_mode_gruneisen | ( | const alma::Crystal_structure & | cell, |
const alma::Gamma_grid & | grid, | ||
const std::vector< alma::Thirdorder_ifcs > & | fc3 | ||
) |
Compute the Grüneisen parameter for each mode on a grid.
[in] | cell | - description of the unit cell |
[in] | grid | - regular grid with phonon spectrum |
[in] | fc3 | - set of third-order force constants |
std::array<double, 2> calc_percentiles_log | ( | const Eigen::Ref< const Eigen::ArrayXXd > & | sigma | ) |
Compute the 25th and 75th percentiles of log(sigma)
[in] | sigma | an Eigen array with all broadening parameters |
double calc_total_gruneisen | ( | const alma::Gamma_grid & | grid, |
const Eigen::Ref< const Eigen::ArrayXXd > & | modegrun, | ||
double | T | ||
) |
Compute the total Grüneisen parameter as a weighted average of mode Grüneisen parameters.
[in] | grid | - regular grid with phonon spectrum |
[in] | modegrun | - Grüneisen parameters for each q point and each branch |
[in] | T | - temperature in K |
std::string gen_subdir_name | ( | double | T | ) |
Create a directory name corresponding to a given temperature.
[in] | T | - temperature in K @ |
void read_sheng_born | ( | struct sheng_allocations * | allocs, |
int | index, | ||
double | born[3][3] | ||
) |
Read the Born effective charge tensor of an atom from a CONTROL file in the current directory.
void read_sheng_gfactors | ( | struct sheng_allocations * | allocs, |
double * | types | ||
) |
Read the list of mass disorder "g" factors from a CONTROL file in the current directory.
void read_sheng_lattvec | ( | struct sheng_allocations * | allocs, |
double | lattvec[3][3] | ||
) |
Read the lattice vectors (including lfactor) from a CONTROL file in the current directory.
void read_sheng_masses | ( | struct sheng_allocations * | allocs, |
double * | types | ||
) |
Read the list of element masses from a CONTROL file in the current directory.
void read_sheng_position | ( | struct sheng_allocations * | allocs, |
int | index, | ||
double | position[3] | ||
) |
Read the coordinates of an atom from a CONTROL file in the current directory.
boost::iostreams::stream_buffer<boost::iostreams::null_sink> null_buf |