utility_metric Subroutine

public subroutine utility_metric(lattice, metric)

Calculate the metric for a lattice

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in) :: lattice(3,3)
real(kind=dp), intent(out) :: metric(3,3)

Called by

proc~~utility_metric~~CalledByGraph proc~utility_metric utility_metric proc~hamiltonian_wigner_seitz hamiltonian_wigner_seitz proc~hamiltonian_wigner_seitz->proc~utility_metric proc~k_path_get_points k_path_get_points proc~k_path_get_points->proc~utility_metric proc~plot_interpolate_bands plot_interpolate_bands proc~plot_interpolate_bands->proc~utility_metric proc~wignerseitz wignerseitz proc~wignerseitz->proc~utility_metric proc~hamiltonian_setup hamiltonian_setup proc~hamiltonian_setup->proc~hamiltonian_wigner_seitz proc~k_path k_path proc~k_path->proc~k_path_get_points proc~plot_main plot_main proc~plot_main->proc~plot_interpolate_bands proc~plot_main->proc~hamiltonian_setup proc~pw90common_wanint_setup pw90common_wanint_setup proc~pw90common_wanint_setup->proc~wignerseitz proc~tran_main tran_main proc~tran_main->proc~hamiltonian_setup proc~w90_plot w90_plot proc~w90_plot->proc~plot_main proc~wann_main wann_main proc~wann_main->proc~hamiltonian_setup program~postw90 postw90 program~postw90->proc~k_path program~postw90->proc~pw90common_wanint_setup proc~w90_transport w90_transport proc~w90_transport->proc~tran_main proc~w90_wannierise~2 w90_wannierise proc~w90_wannierise~2->proc~wann_main program~wannier wannier program~wannier->proc~w90_plot program~wannier->proc~w90_transport program~wannier->proc~w90_wannierise~2 proc~w90_wannierise w90_wannierise proc~w90_wannierise->proc~w90_wannierise~2

Source Code

  subroutine utility_metric(lattice, metric)
    !================================================!
    !
    !!  Calculate the  metric for a lattice
    !
    !================================================
    implicit none

    real(kind=dp), intent(in)  :: lattice(3, 3)
    real(kind=dp), intent(out) :: metric(3, 3)

    integer :: i, j, l

    metric = 0.0_dp

    do j = 1, 3
      do i = 1, j
        do l = 1, 3
          metric(i, j) = metric(i, j) + lattice(i, l)*lattice(j, l)
        end do
        if (i .lt. j) then
          metric(j, i) = metric(i, j)
        end if
      end do
    end do

  end subroutine utility_metric