Parent Directory | Revision Log
Moved variables from module com_io_dyn to module inithist_m, where they are defined. Split grid_atob.f into grille_m.f and dist_sphe.f. Extracted ASCCI art to documentation. In grille_m, use automatic arrays instead of maximum size. In grille_m, instead of printing data for every problematic point, print a single diagnostic message. Removed variables top_height, overlap, lev_histhf, lev_histday, lev_histmth, type_run, ok_isccp, ok_regdyn, lonmin_ins, lonmax_ins, latmin_ins, latmax_ins of module clesphys, not used. Removed variable itap of module histwrite_phy_m, not used. There is a variable itap in module time_phylmdz. Added output of tro3. In physiq, no need to compute wo at every time-step, since we only use it in radlwsw.
1 | guez | 212 | module dist_sphe_m |
2 | |||
3 | ! From grid_atob.F, v 1.1.1.1 2004/05/19 12:53:05 | ||
4 | |||
5 | IMPLICIT none | ||
6 | |||
7 | contains | ||
8 | |||
9 | SUBROUTINE dist_sphe(rf_lon, rf_lat, rlon, rlat, im, jm, distance) | ||
10 | |||
11 | ! Auteur: Laurent Li (le 30 decembre 1996) | ||
12 | |||
13 | ! Ce programme calcule la distance minimale (selon le grand cercle) | ||
14 | ! entre deux points sur la terre | ||
15 | |||
16 | INTEGER, intent(in):: im, jm ! dimensions | ||
17 | REAL, intent(in):: rf_lon ! longitude du point de reference (degres) | ||
18 | REAL, intent(in):: rf_lat ! latitude du point de reference (degres) | ||
19 | REAL, intent(in):: rlon(im), rlat(jm) ! longitude et latitude des points | ||
20 | |||
21 | REAL, intent(out):: distance(im, jm) ! distances en metre | ||
22 | |||
23 | REAL rlon1, rlat1 | ||
24 | REAL rlon2, rlat2 | ||
25 | REAL dist | ||
26 | REAL pa, pb, p, pi | ||
27 | |||
28 | REAL radius | ||
29 | PARAMETER (radius=6371229.) | ||
30 | integer i, j | ||
31 | |||
32 | !--------------------------------------------------------------------- | ||
33 | |||
34 | pi = 4.0 * ATAN(1.0) | ||
35 | |||
36 | DO j = 1, jm | ||
37 | DO i = 1, im | ||
38 | |||
39 | rlon1=rf_lon | ||
40 | rlat1=rf_lat | ||
41 | rlon2=rlon(i) | ||
42 | rlat2=rlat(j) | ||
43 | pa = pi/2.0 - rlat1*pi/180.0 ! dist. entre pole n et point a | ||
44 | pb = pi/2.0 - rlat2*pi/180.0 ! dist. entre pole n et point b | ||
45 | p = (rlon1-rlon2)*pi/180.0 ! angle entre a et b (leurs meridiens) | ||
46 | |||
47 | dist = ACOS(COS(pa)*COS(pb) + SIN(pa)*SIN(pb)*COS(p)) | ||
48 | dist = radius * dist | ||
49 | distance(i, j) = dist | ||
50 | |||
51 | end DO | ||
52 | end DO | ||
53 | |||
54 | END SUBROUTINE dist_sphe | ||
55 | |||
56 | end module dist_sphe_m |
ViewVC Help | |
Powered by ViewVC 1.1.21 |