16 REAL(KIND=rprec)
FUNCTION magnitude(vec)
25 REAL(rprec),
DIMENSION(3),
INTENT(IN) ::
28 magnitude = sqrt( vec(1)*vec(1) + vec(2)*vec(2) + vec(3)*vec(3) )
31 END FUNCTION magnitude
34 SUBROUTINE unit_vector(v1, v1_unit)
42 REAL(rprec),
DIMENSION(3),
INTENT(IN) ::
45 REAL(rprec),
DIMENSION(3),
INTENT(OUT) ::
48 v1_unit = v1 / magnitude(v1)
51 END SUBROUTINE unit_vector
55 REAL(KIND=rprec)
FUNCTION dist(v1, v2)
63 REAL(rprec),
DIMENSION(3),
INTENT(IN) ::
66 REAL(rprec),
DIMENSION(3) ::
70 dist = sqrt( v3(1)*v3(1) + v3(2)*v3(2) + v3(3)*v3(3) )
76 SUBROUTINE cross_product(A, B, C)
89 REAL(rprec),
DIMENSION(3),
INTENT(IN) :: A
91 REAL(rprec),
DIMENSION(3),
INTENT(IN) :: B
93 REAL(rprec),
DIMENSION(3),
INTENT(OUT) :: C
98 character(len=*),
PARAMETER :: subname =
'CROSS_PRODUCT'
102 c(1) = a(2) * b(3) - a(3) * b(2)
105 c(2) = a(3) * b(1) - a(1) * b(3)
108 c(3) = a(1) * b(2) - a(2) * b(1)
111 END SUBROUTINE cross_product
114 END MODULE math_utilities