Line data Source code
1 : MODULE m_angle 2 : CONTAINS 3 0 : REAL ELEMENTAL FUNCTION angle(x,y) 4 : 5 : c---------------------------------------------- 6 : c calculates an angle of a vector 7 : c given by rectangular coordinates (x,y) 8 : c----------------------------------------------- 9 : 10 : USE m_constants 11 : IMPLICIT NONE 12 : 13 : REAL, INTENT (IN) :: x,y 14 : 15 0 : IF (x.NE.0.0) THEN 16 0 : IF (y.NE.0.0) THEN 17 0 : IF (y.GT.0.0) THEN 18 0 : IF (x.LT.0.0) angle = pi_const - ATAN(y/abs(x)) 19 0 : IF (x.GT.0.0) angle = ATAN(y/x) 20 : ELSE 21 0 : IF (x.GT.0.0) angle = - ATAN(abs(y)/x) 22 0 : IF (x.LT.0.0) angle = - pi_const 23 0 : + + ATAN(abs(y)/abs(x)) 24 : END IF 25 : ELSE 26 : IF (x.LT.0.0) angle = -pi_const 27 0 : IF (x.GT.0.0) angle = 0.0 28 : END IF 29 : ELSE 30 0 : IF (y.LT.0.0) angle = -pi_const/2. 31 0 : IF (y.EQ.0.0) angle = 0.0 32 0 : IF (y.GT.0.0) angle = pi_const/2. 33 : END IF 34 : 35 0 : END FUNCTION angle 36 : END MODULE m_angle