1 | |
---|
2 | ************************************************************************ |
---|
3 | * inimphycst() |
---|
4 | * initialise les constante utilisée dans la microphysique. |
---|
5 | * |
---|
6 | * Oui je sais certaine constantes, voir toutes les definitions |
---|
7 | * faites ici devraient etre dans YOMCST.h mais la j'ai pas le |
---|
8 | * courage pour le moment ! |
---|
9 | ************************************************************************ |
---|
10 | subroutine inimphycst() |
---|
11 | implicit none |
---|
12 | #include "dimensions.h" |
---|
13 | #include "microtab.h" |
---|
14 | #include "varmuphy.h" |
---|
15 | #include "YOMCST.h" |
---|
16 | |
---|
17 | pi = RPI |
---|
18 | |
---|
19 | nav = RNAVO |
---|
20 | rgp = R |
---|
21 | kbz = RKBOL |
---|
22 | |
---|
23 | rtit = RA |
---|
24 | g0 = RG |
---|
25 | |
---|
26 | mch4 = 16.e-3 ! kg/mol !!!! |
---|
27 | mc2h6 = 30.e-3 |
---|
28 | mc2h2 = 26.e-3 |
---|
29 | mar = 36.4e-3 |
---|
30 | mn2 = 28.e-3 |
---|
31 | mair = 28.e-3 ! l'air c'est du N2 ^^ |
---|
32 | |
---|
33 | rhol = 1.e+3 ! rho aerosols |
---|
34 | rhoi_ch4 = 425. |
---|
35 | rhoi_c2h6 = 544.6 |
---|
36 | rhoi_c2h2 = 615.0 |
---|
37 | |
---|
38 | mtetach4 = 0.92 |
---|
39 | mtetac2h6 = 0.92 |
---|
40 | mtetac2h2 = 0.92 |
---|
41 | |
---|
42 | return |
---|
43 | end |
---|
44 | ************************************************************************ |
---|
45 | * Routine calculant/initialisant la grille verticale |
---|
46 | * ainsi que tous les variables communes aux routines microphysique. |
---|
47 | * |
---|
48 | * CONVENTION : |
---|
49 | * suffixe b : bord des couches. |
---|
50 | * SANS suffixe : centre des couches. |
---|
51 | ************************************************************************ |
---|
52 | subroutine inimuphy(ihor,tplev,tplay,tzlev,tzlay,tpt) |
---|
53 | implicit none |
---|
54 | #include "dimensions.h" |
---|
55 | #include "microtab.h" |
---|
56 | #include "varmuphy.h" |
---|
57 | * |
---|
58 | * INPUT : |
---|
59 | * |
---|
60 | integer ihor |
---|
61 | real tplev(nz+1),tplay(nz),tzlev(nz+1),tzlay(nz),tpt(nz) |
---|
62 | * |
---|
63 | * LOCAL |
---|
64 | * |
---|
65 | integer i,j |
---|
66 | real plev(nz+1),play(nz),zlev(nz+1),zlay(nz),pt(nz) |
---|
67 | |
---|
68 | |
---|
69 | if (nz.ne.llm) then |
---|
70 | print*,"<nz.ne.llm> dans inimuphys !" |
---|
71 | STOP |
---|
72 | endif |
---|
73 | |
---|
74 | *----------------------- |
---|
75 | * INVERSION DES TABLEAUX |
---|
76 | *----------------------- |
---|
77 | |
---|
78 | do j=1,nz+1 |
---|
79 | plev(j)=tplev(nz-j+2) |
---|
80 | zlev(j)=tzlev(nz-j+2) |
---|
81 | enddo |
---|
82 | do j=1,nz |
---|
83 | play(j)=tplay(nz-j+1) |
---|
84 | zlay(j)=tzlay(nz-j+1) |
---|
85 | pt(j) = tpt(nz-j+1) |
---|
86 | enddo |
---|
87 | * |
---|
88 | * Calcul de la grille verticale : |
---|
89 | * z,dz,zb,dzb |
---|
90 | * |
---|
91 | do i=1,nz-1 |
---|
92 | dz(i)=zlay(i)-zlay(i+1) |
---|
93 | dzb(i)=zlev(i)-zlev(i+1) |
---|
94 | enddo |
---|
95 | dz(nz)=dz(nz-1) ! ARBITRAIRE |
---|
96 | dzb(nz)=zlev(nz)-zlev(nz+1) |
---|
97 | z=zlay |
---|
98 | zb=zlev |
---|
99 | p=play |
---|
100 | pb=plev |
---|
101 | |
---|
102 | * |
---|
103 | * conditions speciale pour le dernier niveau de pression |
---|
104 | * on crée un niveau tres tres tres fin mais qui existe quand meme !) |
---|
105 | pb(1) = plev(2)*1.e-7 |
---|
106 | |
---|
107 | |
---|
108 | c Interpolation de tb a partir de t |
---|
109 | c******************************************************* |
---|
110 | t=pt |
---|
111 | do i=1,nz-1 |
---|
112 | tb(i+1)=(t(i)+t(i+1))/2. |
---|
113 | enddo |
---|
114 | tb(1)=t(1) |
---|
115 | tb(nz+1)=(t(nz)-t(nz-1))*.5+t(nz) |
---|
116 | |
---|
117 | return |
---|
118 | end |
---|