source: codes/icosagcm/trunk/src/sphere/vector.f90 @ 604

Last change on this file since 604 was 548, checked in by dubos, 7 years ago

trunk : reorganize source tree

File size: 1.3 KB
Line 
1MODULE vector
2  USE genmod
3
4CONTAINS
5
6  FUNCTION Norm(V)
7  IMPLICIT NONE
8    REAL(rstd)            :: Norm
9    REAL(rstd),INTENT(IN) :: V(3)
10   
11    Norm=sqrt(V(1)*V(1)+V(2)*V(2)+V(3)*V(3))
12 
13  END FUNCTION Norm
14 
15  FUNCTION dot_product(V1,V2)
16  IMPLICIT NONE
17    REAL(rstd)       :: dot_product
18    REAL(rstd),INTENT(IN) :: V1(3)
19    REAL(rstd),INTENT(IN) :: V2(3)
20   
21    dot_product=V1(1)*V2(1)+V1(2)*V2(2)+V1(3)*V2(3)
22   
23   END FUNCTION dot_product
24   
25   FUNCTION cross_product(V1,V2)
26   IMPLICIT NONE
27     REAL(rstd)     ::cross_product(3)
28     REAL(rstd),INTENT(IN) :: V1(3)
29     REAL(rstd),INTENT(IN) :: V2(3)
30   
31     cross_product(1)=V1(2)*V2(3)-V1(3)*V2(2)
32     cross_product(2)=V1(3)*V2(1)-V1(1)*V2(3)
33     cross_product(3)=V1(1)*V2(2)-V1(2)*V2(1)
34     
35    END FUNCTION cross_product
36
37
38   SUBROUTINE cross_product2(V1,V2,cross_product)
39   IMPLICIT NONE
40     REAL(rstd),INTENT(OUT):: cross_product(3)
41     REAL(rstd),INTENT(IN) :: V1(3)
42     REAL(rstd),INTENT(IN) :: V2(3)
43   
44     cross_product(1)=V1(2)*V2(3)-V1(3)*V2(2)
45     cross_product(2)=V1(3)*V2(1)-V1(1)*V2(3)
46     cross_product(3)=V1(1)*V2(2)-V1(2)*V2(1)
47     
48    END SUBROUTINE cross_product2
49
50    FUNCTION arc(lon,lat, lonc,latc)
51      REAL(rstd) :: lon,lat, lonc,latc, arc
52      arc=ACOS(sin(latc)*sin(lat)+cos(latc)*cos(lat)*cos(lon-lonc))
53    END FUNCTION arc
54
55END MODULE vector
Note: See TracBrowser for help on using the repository browser.