1 | MODULE vector |
---|
2 | USE genmod |
---|
3 | |
---|
4 | CONTAINS |
---|
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 | |
---|
55 | END MODULE vector |
---|