dipole_matrix Interface

public interface dipole_matrix

Form either a real or a complex dipole matrix.

The real-typed version is equivalent to .

$$ \begin{gathered} \mathbf T_{ij}(\mathbf q)=\sum_{\mathbf n}\mathbf T(\mathbf R_{\mathbf nij})\mathrm e^{-\mathrm i\mathbf q\cdot\mathbf R_{\mathbf nij}},\quad\mathbf R_{\mathbf nij}=\mathbf R_j+\mathbf R_\mathbf n-\mathbf R_i \ \frac{\mathrm d\mathbf R_{\mathbf nij}}{\mathrm d\mathbf R_k}=(\delta_{jk}-\delta_{ik})\mathbf I \ \mathbf{T}{ij}(\mathbf{q})\approx\mathbf{T}^\text{Ew}(\mathbf{q}) =\sum_\mathbf n^{|\mathbf R_{\mathbf nij}|


Module Procedures

private function dipole_matrix_real(geom, damp, ddipmat, grad) result(dipmat)

Arguments

Type IntentOptional Attributes Name
type(geom_t), intent(inout) :: geom
type(damping_t), intent(in) :: damp
type(grad_matrix_re_t), intent(out), optional :: ddipmat
type(grad_request_t), intent(in), optional :: grad

Return Value type(matrix_re_t)

private function dipole_matrix_complex(geom, damp, ddipmat, grad, q) result(dipmat)

Arguments

Type IntentOptional Attributes Name
type(geom_t), intent(inout) :: geom
type(damping_t), intent(in) :: damp
type(grad_matrix_cplx_t), intent(out), optional :: ddipmat
type(grad_request_t), intent(in), optional :: grad
real(kind=dp), intent(in) :: q(3)

Return Value type(matrix_cplx_t)