!+ ! Function vec_to_polar (vec, phase) result (polar) ! ! Converts a spin vector to a spin polar ! ! Input: ! vec(3) -- real(rp): unitary spin vector ! phase -- real(rp), Optional: Phase of the spinor, if not given then ! set to zero ! ! Output: ! polar -- spin_polar_struct: !- function vec_to_polar (vec, phase) result (polar) use equal_mod, dummy_except => vec_to_polar implicit none type (spin_polar_struct) :: polar real(rp) vec(3) real(rp), optional :: phase ! polar%xi = real_option (0.0d0, phase) polar%theta = atan2 (sqrt(vec(1)**2 + vec(2)**2), vec(3)) polar%phi = atan2(vec(2), vec(1)) polar%polarization = sqrt(dot_product(vec, vec)) end function vec_to_polar