1 | PROGRAM toot |
---|
2 | IMPLICIT NONE |
---|
3 | |
---|
4 | !--ICAO profile |
---|
5 | !--flight level given ICAO table |
---|
6 | !--41 levels from ICAO table and 1 dummy level on bottom, 2 on top |
---|
7 | INTEGER, PARAMETER :: flevel=44, klev=79 |
---|
8 | !--feetICAO(flevel)=surface, feetICAO(1)=haute altitude |
---|
9 | REAL :: feetICAO(flevel) |
---|
10 | !--pressure ICAO in hPa - from top to surface |
---|
11 | REAL, DIMENSION(flevel), PARAMETER :: & |
---|
12 | pICAO=(/0.,125.,188.,197., & |
---|
13 | 206.,217.,227.,238.,250.,262.,274.,287.,301.,315., & |
---|
14 | 329.,344.,360.,376.,393.,410.,428.,446.,466.,485., & |
---|
15 | 506.,527.,549.,572.,595.,619.,644.,670.,697.,724., & |
---|
16 | 753.,782.,812.,843.,875.,908.,942.,977.,1013.,1050./) |
---|
17 | |
---|
18 | REAL :: feetLMDz, altLMDz(klev) |
---|
19 | REAL, PARAMETER :: feet2meters=0.3048 |
---|
20 | INTEGER :: k, kk |
---|
21 | |
---|
22 | REAL,DIMENSION(klev),PARAMETER :: pplay=(/ & |
---|
23 | 101202.1, 100942.4, 100653.4, 100331.9, 99974.2, 99576.55, & |
---|
24 | 99134.67, 98643.84, 98098.98, 97494.48, 96824.3, 96081.91, 95260.24, & |
---|
25 | 94351.73, 93348.34, 92241.55, 91022.46, 89681.82, 88210.2, 86598.11, & |
---|
26 | 84836.23, 82915.69, 80828.4, 78567.48, 76127.79, 73506.45, 70703.54, & |
---|
27 | 67722.81, 64572.39, 61265.38, 57820.47, 54262.17, 50620.74, 46931.69, & |
---|
28 | 43234.69, 39571.99, 35986.37, 32518.85, 29206.36, 26079.83, 23162.71, & |
---|
29 | 20470.42, 18010.36, 15782.71, 13781.58, 11996.42, 10413.44, 9016.865, & |
---|
30 | 7790.02, 6716.147, 5778.999, 4963.233, 4254.644, 3640.276, 3108.45, & |
---|
31 | 2648.733, 2251.867, 1909.687, 1615.018, 1361.581, 1143.891, 957.1722, & |
---|
32 | 797.2696, 660.5754, 543.9607, 444.7146, 360.4912, 289.2627, 229.2787, & |
---|
33 | 179.0303, 137.2198, 102.7344, 74.62312, 52.07758, 34.41441, 21.05668, & |
---|
34 | 11.50741, 5.296797, 1.483435 /) |
---|
35 | |
---|
36 | !--initialise ICAO flight levels |
---|
37 | DO k=3,flevel |
---|
38 | feetICAO(k)=FLOAT(flevel-k-1)*1000. |
---|
39 | ENDDO |
---|
40 | feetICAO(2)= 47000. |
---|
41 | feetICAO(1)=300000. |
---|
42 | |
---|
43 | DO k=1,klev |
---|
44 | DO kk=1,flevel-1 |
---|
45 | IF (pplay(k).LT.pICAO(kk+1)*100. .AND. pplay(k).GE.pICAO(kk)*100.) THEN |
---|
46 | feetLMDz=feetICAO(kk)+(feetICAO(kk+1)-feetICAO(kk)) & |
---|
47 | *(pplay(k)-pICAO(kk)*100.)/(pICAO(kk+1)*100.-pICAO(kk)*100.) |
---|
48 | altLMDz(k)=feet2meters*feetLMDz*1.e-3 !-en km |
---|
49 | ENDIF |
---|
50 | ENDDO |
---|
51 | ENDDO |
---|
52 | |
---|
53 | print *,'altLMDz=', altLMDz |
---|
54 | |
---|
55 | END |
---|