dispersion_rel_chain_k Function

private function dispersion_rel_chain_k(this, k_vec) result(disp)

Type Bound

chain

Arguments

Type IntentOptional Attributes Name
class(chain) :: this
integer, intent(in) :: k_vec(3)

Return Value real(kind=dp)


Contents


Source Code

    function dispersion_rel_chain_k(this, k_vec) result(disp)
        class(chain) :: this
        integer, intent(in) :: k_vec(3)
        real(dp) :: disp
#ifdef DEBUG_
        character(*), parameter :: this_routine = "dispersion_rel_chain"
#endif

        ! for now only do it for periodic boundary conditions..
        ASSERT(this%is_periodic())

        ! and for now only for nearest neighbor interaction!
        ! although this is just the nearest neighbor band..
        ! for next nearest and additional function should be implemented!

        ! i need to bring in the length of the chain and stuff..
        ! and i should consider twisted boundary conditions and nearest
        ! neigbhors here too..? i think so..
        disp = 2.0_dp * cos(2.0_dp * pi * (k_vec(1) + twisted_bc(1)) / this%length)

    end function dispersion_rel_chain_k