1 |
module geopot_m |
2 |
|
3 |
IMPLICIT NONE |
4 |
|
5 |
contains |
6 |
|
7 |
SUBROUTINE geopot(ngrid, teta, pk, pks, phis, phi) |
8 |
|
9 |
! From libf/dyn3d/geopot.F, version 1.1.1.1 2004/05/19 |
10 |
! Author: P. Le Van |
11 |
! Objet : calcul du géopotentiel aux milieux des couches |
12 |
! L'intégration se fait de bas en haut. |
13 |
|
14 |
USE dimens_m |
15 |
USE paramet_m |
16 |
|
17 |
INTEGER, INTENT (IN):: ngrid |
18 |
REAL, INTENT (IN):: teta(ngrid, llm), pks(ngrid) |
19 |
REAL, INTENT (IN) :: phis(ngrid) |
20 |
REAL, INTENT (IN) :: pk(ngrid, llm) |
21 |
REAL, INTENT (out):: phi(ngrid, llm) |
22 |
|
23 |
! Local: |
24 |
INTEGER l |
25 |
|
26 |
! ----------------------------------------------------------------------- |
27 |
|
28 |
! Calcul de phi au niveau 1 près du sol : |
29 |
phi(:, 1) = phis + teta(:, 1) * (pks - pk(:, 1)) |
30 |
|
31 |
! Calcul de phi aux niveaux supérieurs : |
32 |
DO l = 2, llm |
33 |
phi(:, l) = phi(:, l-1) + 0.5 * (teta(:, l) + teta(:, l-1)) & |
34 |
* (pk(:, l-1) - pk(:, l)) |
35 |
END DO |
36 |
|
37 |
END SUBROUTINE geopot |
38 |
|
39 |
end module geopot_m |