source: LMDZ6/branches/Amaury_dev/libf/dyn3d_common/interpre.f90 @ 5157

Last change on this file since 5157 was 5140, checked in by abarral, 8 weeks ago

Put comsoil.h, conema3.h, cvflag.h into modules

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 3.1 KB
Line 
1! $Id: interpre.f90 5140 2024-07-29 08:57:23Z abarral $
2
3SUBROUTINE interpre(q, qppm, w, fluxwppm, masse, &
4        apppm, bpppm, massebx, masseby, pbaru, pbarv, &
5        unatppm, vnatppm, psppm)
6
7  USE comconst_mod, ONLY: g
8  USE comvert_mod, ONLY: ap, bp
9  USE lmdz_description, ONLY: descript
10  USE lmdz_comdissip, ONLY: coefdis, tetavel, tetatemp, gamdissip, niterdis
11  USE lmdz_comgeom2
12
13  IMPLICIT NONE
14
15  INCLUDE "dimensions.h"
16  INCLUDE "paramet.h"
17
18  !---------------------------------------------------
19  ! Arguments
20  REAL :: apppm(llm + 1), bpppm(llm + 1)
21  REAL :: q(iip1, jjp1, llm), qppm(iim, jjp1, llm)
22  !---------------------------------------------------
23  REAL :: masse(iip1, jjp1, llm)
24  REAL :: massebx(iip1, jjp1, llm), masseby(iip1, jjm, llm)
25  REAL :: w(iip1, jjp1, llm)
26  REAL :: fluxwppm(iim, jjp1, llm)
27  REAL :: pbaru(iip1, jjp1, llm)
28  REAL :: pbarv(iip1, jjm, llm)
29  REAL :: unatppm(iim, jjp1, llm)
30  REAL :: vnatppm(iim, jjp1, llm)
31  REAL :: psppm(iim, jjp1)
32  !---------------------------------------------------
33  ! Local
34  REAL :: vnat(iip1, jjp1, llm)
35  REAL :: unat(iip1, jjp1, llm)
36  REAL :: fluxw(iip1, jjp1, llm)
37  REAL :: smass(iip1, jjp1)
38  !----------------------------------------------------
39  INTEGER :: l, ij, i, j
40
41  ! CALCUL DE LA PRESSION DE SURFACE
42  ! Calcul de la pression au sol en mb optimisée pour
43  ! la vectorialisation
44
45  do j = 1, jjp1
46    do i = 1, iip1
47      smass(i, j) = 0.
48    enddo
49  enddo
50
51  do l = 1, llm
52    do j = 1, jjp1
53      do i = 1, iip1
54        smass(i, j) = smass(i, j) + masse(i, j, l)
55      enddo
56    enddo
57  enddo
58
59  do j = 1, jjp1
60    do i = 1, iim
61      psppm(i, j) = smass(i, j) / aire(i, j) * g * 0.01
62    END DO
63  END DO
64
65  ! RECONSTRUCTION DES CHAMPS CONTRAVARIANTS
66  ! Le programme ppm3d travaille avec les composantes
67  ! de vitesse et pas les flux, on doit donc passer de l'un à l'autre
68  ! Dans le même temps, on fait le changement d'orientation du vent en v
69  do l = 1, llm
70    do j = 1, jjm
71      do i = 1, iip1
72        vnat(i, j, l) = -pbarv(i, j, l) / masseby(i, j, l) * cv(i, j)
73      enddo
74    enddo
75    do  i = 1, iim
76      vnat(i, jjp1, l) = 0.
77    enddo
78    do j = 1, jjp1
79      do i = 1, iip1
80        unat(i, j, l) = pbaru(i, j, l) / massebx(i, j, l) * cu(i, j)
81      enddo
82    enddo
83  enddo
84
85  ! CALCUL DU FLUX MASSIQUE VERTICAL
86  ! Flux en l=1 (sol) nul
87  fluxw = 0.
88  do l = 1, llm
89    do j = 1, jjp1
90      do i = 1, iip1
91        fluxw(i, j, l) = w(i, j, l) * g * 0.01 / aire(i, j)
92        ! PRINT*,i,j,l,'fluxw(i,j,l)=',fluxw(i,j,l),
93        ! c                      'w(i,j,l)=',w(i,j,l)
94      enddo
95    enddo
96  enddo
97
98  ! INVERSION DES NIVEAUX
99  ! le programme ppm3d travaille avec une 3ème coordonnée inversée par rapport
100  ! de celle du LMDZ: z=1<=>niveau max, z=llm+1<=>surface
101  ! On passe donc des niveaux du LMDZ à ceux de Lin
102
103  do l = 1, llm + 1
104    apppm(l) = ap(llm + 2 - l)
105    bpppm(l) = bp(llm + 2 - l)
106  enddo
107
108  do l = 1, llm
109    do j = 1, jjp1
110      do i = 1, iim
111        unatppm(i, j, l) = unat(i, j, llm - l + 1)
112        vnatppm(i, j, l) = vnat(i, j, llm - l + 1)
113        fluxwppm(i, j, l) = fluxw(i, j, llm - l + 1)
114        qppm(i, j, l) = q(i, j, llm - l + 1)
115      enddo
116    enddo
117  enddo
118
119  RETURN
120END SUBROUTINE interpre
121
122
123
124
125
126
Note: See TracBrowser for help on using the repository browser.