AlmaBTE  1.3
A solver of the space- and time-dependent Boltzmann transport equation for phonons
processes.hpp File Reference

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>
Include dependency graph for processes.hpp:
This graph shows which files directly or indirectly include this file:

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...
 

Detailed Description

Detection and representation of allowed three-phonon processes.

Function Documentation

◆ calc_w0_threeph() [1/2]

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.

Parameters
[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

◆ calc_w0_threeph() [2/2]

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.

Parameters
[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

◆ find_allowed_threeph()

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.

Parameters
[in]grid- a regular grid containing Gamma
[in]communicator- MPI communicator to use
[in]scalebroad- factor modulating all the broadenings
Returns
a vector of Threeph_process objects

◆ load_construct_data()

template<class Archive >
void boost::serialization::load_construct_data ( Archive &  ar,
alma::Threeph_process t,
const unsigned int  file_version 
)
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.

◆ save_construct_data()

template<class Archive >
void boost::serialization::save_construct_data ( Archive &  ar,
const alma::Threeph_process t,
const unsigned int  file_version 
)
inline

Overload required to serialize the const members of alma::Threeph_process.

See the boost::serialization documentation for details.