4 |
|
|
5 |
contains |
contains |
6 |
|
|
7 |
subroutine reanalyse2nat(nlevnc, psi, unc, vnc, tnc, qnc, pl, u, v, t, q, & |
subroutine reanalyse2nat(nlevnc, psi, unc, vnc, tnc, qnc, pl, u, v, t, q, pk) |
|
masse, pk) |
|
8 |
|
|
9 |
! Inversion nord-sud de la grille et interpolation sur les niveaux |
! Inversion nord-sud de la grille et interpolation verticale sur |
10 |
! verticaux du modèle. |
! les niveaux du modèle. |
11 |
|
|
12 |
USE dimens_m, ONLY: iim, jjm, llm |
USE dimens_m, ONLY: iim, jjm, llm |
13 |
USE paramet_m, ONLY: iip1, jjp1, llmp1 |
USE paramet_m, ONLY: iip1, jjp1, llmp1 |
19 |
use massdair_m, only: massdair |
use massdair_m, only: massdair |
20 |
use pres2lev_m, only: pres2lev |
use pres2lev_m, only: pres2lev |
21 |
|
|
22 |
integer nlevnc |
integer, intent(in):: nlevnc |
23 |
real, intent(in):: psi(iip1, jjp1) |
real, intent(in):: psi(iip1, jjp1) |
24 |
real unc(iip1, jjp1, nlevnc), vnc(iip1, jjm, nlevnc) |
real unc(iip1, jjp1, nlevnc), vnc(iip1, jjm, nlevnc) |
25 |
real tnc(iip1, jjp1, nlevnc) |
real tnc(iip1, jjp1, nlevnc) |
26 |
real qnc(iip1, jjp1, nlevnc) |
real qnc(iip1, jjp1, nlevnc) |
27 |
real pl(nlevnc) |
real, intent(in):: pl(nlevnc) |
28 |
real u(iip1, jjp1, llm), v(iip1, jjm, llm) |
real, intent(out):: u(iip1, jjp1, llm), v(iip1, jjm, llm) |
29 |
real t(iip1, jjp1, llm), q(iip1, jjp1, llm) |
real, intent(out):: t(iip1, jjp1, llm), q(iip1, jjp1, llm) |
|
real masse(iip1, jjp1, llm) |
|
30 |
real pk(iip1, jjp1, llm) |
real pk(iip1, jjp1, llm) |
31 |
|
|
32 |
! Local: |
! Local: |
50 |
|
|
51 |
! calcul de la pression au milieu des couches |
! calcul de la pression au milieu des couches |
52 |
forall (l = 1: llm + 1) p(:, :, l) = ap(l) + bp(l) * psi |
forall (l = 1: llm + 1) p(:, :, l) = ap(l) + bp(l) * psi |
|
call massdair(p, masse) |
|
53 |
CALL exner_hyb(psi, p, pks, pk) |
CALL exner_hyb(psi, p, pks, pk) |
54 |
|
|
55 |
! Calcul de pls, pression au milieu des couches, en Pascals |
! Calcul de pls, pression au milieu des couches, en Pascals |