[175] | 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 |
---|