| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(ole) | :: | this | ||||
| integer, | intent(in) | :: | k_vec(3) |
function dispersion_rel_ole(this, k_vec) result(disp) class(ole) :: this integer, intent(in) :: k_vec(3) real(dp) :: disp #ifdef DEBUG_ character(*), parameter :: this_routine = "dispersion_rel_ole" #endif ASSERT(this%is_periodic()) ! i finally figured out how to do the non-orthogonal ! boundary conditions: ! although i am not sure about the twisted BC in this case! disp = 2.0_dp * (cos(2 * pi / real(sum(this%length(1:2)), dp) * & ((k_vec(1) + twisted_bc(1)) - (k_vec(2) + twisted_bc(2)))) & + cos(2 * pi / real(sum(this%length(1:2)), dp) * & (this%length(2) / real(this%length(1), dp) * (k_vec(1) + twisted_bc(1)) & + (k_vec(2) + twisted_bc(2))))) end function dispersion_rel_ole