![]() |
AlmaBTE
1.3
A solver of the space- and time-dependent Boltzmann transport equation for phonons
|
Detection and representation of allowed three-phonon processes. More...
#include <cstddef>
#include <cmath>
#include <array>
#include <vector>
#include <functional>
#include <boost/mpi.hpp>
#include <boost/math/distributions/normal.hpp>
#include <boost/serialization/array.hpp>
#include <structures.hpp>
#include <qpoint_grid.hpp>
Go to the source code of this file.
Classes | |
class | alma::Threeph_process |
Representation of a three-phonon process. More... | |
Enumerations | |
enum | alma::threeph_type { emission = -1, absorption = 1 } |
Process type (emission or absorption). | |
Functions | |
template<class Archive > | |
void | boost::serialization::save_construct_data (Archive &ar, const alma::Threeph_process *t, const unsigned int file_version) |
Overload required to serialize the const members of alma::Threeph_process. More... | |
std::vector< Threeph_process > | alma::find_allowed_threeph (const Gamma_grid &grid, const boost::mpi::communicator &communicator, double scalebroad=1.0) |
Look for allowed three-phonon processes in a regular grid. More... | |
Eigen::ArrayXXd | alma::calc_w0_threeph (const alma::Gamma_grid &grid, std::vector< alma::Threeph_process > &processes, double T, const boost::mpi::communicator &comm) |
Compute and store the three-phonon contribution to the RTA scattering rates for all vibrational modes on a grid. More... | |
Eigen::ArrayXXd | alma::calc_w0_threeph (const alma::Gamma_grid &grid, std::vector< alma::Threeph_process > &processes, double T, std::function< bool(const Threeph_process &)> filter, const boost::mpi::communicator &comm) |
Compute and store the three-phonon contribution to the RTA scattering rates for all vibrational modes on a grid. More... | |
template<class Archive > | |
void | boost::serialization::load_construct_data (Archive &ar, alma::Threeph_process *t, const unsigned int file_version) |
Overload required to deserialize the const members of alma::Threeph_process by calling the non-default constructor in place. More... | |
Detection and representation of allowed three-phonon processes.
Eigen::ArrayXXd alma::calc_w0_threeph | ( | const alma::Gamma_grid & | grid, |
std::vector< alma::Threeph_process > & | processes, | ||
double | T, | ||
const boost::mpi::communicator & | comm | ||
) |
Compute and store the three-phonon contribution to the RTA scattering rates for all vibrational modes on a grid.
[in] | grid | - phonon spectrum on a regular grid |
[in] | processes | - a vector of allowed three-phonon processes |
[in] | T | - the temperature in K |
[in] | comm | - an mpi communicator |
Eigen::ArrayXXd alma::calc_w0_threeph | ( | const alma::Gamma_grid & | grid, |
std::vector< alma::Threeph_process > & | processes, | ||
double | T, | ||
std::function< bool(const Threeph_process &)> | filter, | ||
const boost::mpi::communicator & | comm | ||
) |
Compute and store the three-phonon contribution to the RTA scattering rates for all vibrational modes on a grid.
Take into account only those processes fullfilling a criterion.
[in] | grid | - phonon spectrum on a regular grid |
[in] | processes | - a vector of allowed three-phonon processes |
[in] | T | - the temperature in K |
[in] | filter | - boolean function returning true if a process must be taken into account |
[in] | comm | - an mpi communicator |
std::vector< Threeph_process > alma::find_allowed_threeph | ( | const Gamma_grid & | grid, |
const boost::mpi::communicator & | communicator, | ||
double | scalebroad = 1.0 |
||
) |
Look for allowed three-phonon processes in a regular grid.
Iterate over part of the irreducible q points in the grid (trying to evenly split the equivalence classes over processes) and look for allowed three-phonon processes involving one phonon from that part and two other phonons from anywhere in the grid.
[in] | grid | - a regular grid containing Gamma |
[in] | communicator | - MPI communicator to use |
[in] | scalebroad | - factor modulating all the broadenings |
|
inline |
Overload required to deserialize the const members of alma::Threeph_process by calling the non-default constructor in place.
See the boost::serialization documentation for details.
|
inline |
Overload required to serialize the const members of alma::Threeph_process.
See the boost::serialization documentation for details.