This class describes phonon modes, which are specified by their frequencies and eigenvectors.
More...
This class describes phonon modes, which are specified by their frequencies and eigenvectors.
- Note
- Octopus will in general run the supercell, and has no information about the underlying primitive cell. The eigenvectors are given for all atoms in the supercell.
Definition at line 132 of file phonon_modes.F90.
|
| real(real64), dimension(:), allocatable | alpha |
| | Per-mode amplitude factor alpha_m = g_m^{-1/2}: 1 for modes from region A (2q = G) and for finite systems, 1/sqrt(2) for the Re/Im modes of region B. More...
|
| |
| real(real64), dimension(:), allocatable | l_m |
| |
| real(real64), dimension(:), allocatable | prefactor |
| |
| integer | num_super |
| | number of primitive cells in the supercell (N_p) More...
|
| |
| type(namespace_t) | namespace |
| |
◆ init()
| procedure phonon_modes_oct_m::phonon_modes_t::init |
|
private |
Initialize the phonon modes.
Read information from a file
- Parameters
-
| [in] | masses | atomic masses in AMU, in file atom order |
Definition at line 146 of file phonon_modes.F90.
◆ sample()
| procedure phonon_modes_oct_m::phonon_modes_t::sample |
|
private |
Sample initial ionic displacements and velocities from the Wigner distribution of the modes.
Implements the sampling prescription of the interface notes "Octopus-PhonoPy interface for multi-trajectory runs" (see doc/implementation_notes/):
\[
\delta R = N_p^{-1/2} (M_0/M)^{1/2} \sum_m \alpha_m \tilde{l}_m W_m \tilde{x}_m, \qquad
\delta \dot{R} = N_p^{-1/2} (M_0/M)^{1/2} \sum_m \omega_m \alpha_m \tilde{l}_m W_m \tilde{r}_m,
\]
with \( \tilde{x}_m, \tilde{r}_m \) sampled as independent Gaussians of variance \( (1 + 2n_m)/2 = \coth(\omega_m / 2 k_B T)/2 \) and \( M_0 \) = 1 AMU. The per-mode factors \( \alpha_m = g_m^{-1/2} \) are carried by the phonon file.
- Parameters
-
| [in] | temperature | in Kelvin |
| [in] | seed | seed for the random sampling; must be non-zero |
| [out] | pos_displacements | (1:dim_space, 1:num_atom), atomic units |
| [out] | vel_displacements | (1:dim_space, 1:num_atom), atomic units |
Definition at line 147 of file phonon_modes.F90.
◆ get_displacements()
| procedure phonon_modes_oct_m::phonon_modes_t::get_displacements |
|
private |
get the displacements for a single mode and the respective generalized coordinates.
- Parameters
-
| [out] | pos_disp_flat | in atomic units |
| [out] | vel_disp_flat | in atomic units |
Definition at line 148 of file phonon_modes.F90.
◆ phonon_modes_finalize()
| final phonon_modes_oct_m::phonon_modes_t::phonon_modes_finalize |
|
finalprivate |
◆ alpha
| real(real64), dimension(:), allocatable phonon_modes_oct_m::phonon_modes_t::alpha |
|
private |
Per-mode amplitude factor alpha_m = g_m^{-1/2}: 1 for modes from region A (2q = G) and for finite systems, 1/sqrt(2) for the Re/Im modes of region B.
Definition at line 136 of file phonon_modes.F90.
◆ l_m
| real(real64), dimension(:), allocatable phonon_modes_oct_m::phonon_modes_t::l_m |
|
private |
◆ prefactor
| real(real64), dimension(:), allocatable phonon_modes_oct_m::phonon_modes_t::prefactor |
|
private |
◆ num_super
| integer phonon_modes_oct_m::phonon_modes_t::num_super |
|
private |
number of primitive cells in the supercell (N_p)
Definition at line 140 of file phonon_modes.F90.
◆ namespace
| type(namespace_t) phonon_modes_oct_m::phonon_modes_t::namespace |
|
private |
The documentation for this type was generated from the following file: