source:
trunk/NEMOGCM/TOOLS/OBSTOOLS/src/distance.h90
@
3294
Last change on this file since 3294 was 3000, checked in by djlea, 13 years ago | |
---|---|
File size: 1.1 KB |
Line | |
---|---|
1 | REAL FUNCTION distance( plon1, plat1, plon2, plat2 ) |
2 | ! Arggumnts |
3 | REAL :: plon1,plat1,plat2,plon2 |
4 | ! Local variables |
5 | REAL :: zplat1,zplon1,zplat2,zplon2 |
6 | REAL :: za1,za2,zb1,zb2,zc1,zc2,zcos1,zcos2 |
7 | REAL, PARAMETER :: zrad = 3.141592653589793/180.0 |
8 | REAL, parameter :: rearth = 6371229 |
9 | |
10 | zplon1 = plon1 |
11 | zplon2 = plon2 |
12 | IF ( zplon1 < -180 ) zplon1 = zplon1 + 360.0 |
13 | IF ( zplon1 >= 180 ) zplon1 = zplon1 - 360.0 |
14 | IF ( zplon2 < -180 ) zplon2 = zplon2 + 360.0 |
15 | IF ( zplon2 >= 180 ) zplon2 = zplon2 - 360.0 |
16 | |
17 | zplon1 = zplon1 * zrad |
18 | zplon2 = zplon2 * zrad |
19 | zplat1 = plat1 * zrad |
20 | zplat2 = plat2 * zrad |
21 | zcos1 = COS( zplat1 ) |
22 | zcos2 = COS( zplat2 ) |
23 | za1 = SIN( zplat1 ) |
24 | za2 = SIN( zplat2 ) |
25 | zb1 = zcos1 * COS( zplon1 ) |
26 | zb2 = zcos2 * COS( zplon2 ) |
27 | zc1 = zcos1 * SIN( zplon1 ) |
28 | zc2 = zcos2 * SIN( zplon2 ) |
29 | |
30 | distance = rearth * & |
31 | & ASIN( SQRT( ABS ( 1.0 - ( za1 * za2 + zb1 * zb2 + zc1 * zc2) ** 2) ) ) |
32 | |
33 | END FUNCTION distance |
Note: See TracBrowser
for help on using the repository browser.