diff --git a/src/basic/lattice_vectors.F90 b/src/basic/lattice_vectors.F90 index e992ceb9f93535258910de699d97593e86e684ba..acc44fb8f66657be332286b7442bfa40c6cb3cc5 100644 --- a/src/basic/lattice_vectors.F90 +++ b/src/basic/lattice_vectors.F90 @@ -41,7 +41,7 @@ module lattice_vectors_oct_m type lattice_vectors_t ! Components are public by default - type(space_t), private :: space + type(space_t) :: space real(real64), allocatable :: rlattice_primitive(:,:) !< lattice primitive vectors real(real64), allocatable :: rlattice (:,:) !< lattice vectors real(real64), allocatable :: klattice_primitive(:,:) !< reciprocal-lattice primitive vectors diff --git a/src/electrons/kpoints.F90 b/src/electrons/kpoints.F90 index df61795dc6eca3470b7a5ccdf60c90e32a0874eb..9f67c1db56eeee1f5beb9ff2754bd3ee54b44836 100644 --- a/src/electrons/kpoints.F90 +++ b/src/electrons/kpoints.F90 @@ -111,6 +111,8 @@ module kpoints_oct_m procedure :: get_point => kpoints_get_point procedure :: write_info => kpoints_write_info procedure :: nkpt_in_path => kpoints_nkpt_in_path + procedure :: cart_to_red => kpoints_cart_to_red + procedure :: red_to_cart => kpoints_red_to_cart end type kpoints_t integer, public, parameter :: & @@ -959,6 +961,25 @@ contains POP_SUB(kpoints_to_reduced) end subroutine kpoints_to_reduced + !-------------------------------------------------------------- + pure function kpoints_cart_to_red(this, k_cart) result(k_red) + class(kpoints_t), intent(in) :: this + real(real64), intent(in) :: k_cart(this%latt%space%dim) + real(real64) :: k_red(this%latt%space%dim) + + k_red = matmul(k_cart, this%latt%rlattice)/(M_TWO*M_PI) + + end function kpoints_cart_to_red + + !-------------------------------------------------------------- + pure function kpoints_red_to_cart(this, k_red) result(k_cart) + class(kpoints_t), intent(in) :: this + real(real64), intent(in) :: k_red(this%latt%space%dim) + real(real64) :: k_cart(this%latt%space%dim) + + k_cart = matmul(this%latt%klattice, k_red) + + end function kpoints_red_to_cart ! --------------------------------------------------------- subroutine kpoints_copy(kin, kout)