20 |
ncep, ini_anal, tau_min_u, tau_max_u, tau_min_v, tau_max_v, & |
ncep, ini_anal, tau_min_u, tau_max_u, tau_min_v, tau_max_v, & |
21 |
tau_min_t, tau_max_t, tau_min_q, tau_max_q, tau_min_p, tau_max_p, & |
tau_min_t, tau_max_t, tau_min_q, tau_max_q, tau_min_p, tau_max_p, & |
22 |
online |
online |
23 |
USE dimens_m, ONLY: jjm, llm |
USE dimens_m, ONLY: iim, jjm, llm |
24 |
USE disvert_m, ONLY: ap, bp, preff, presnivs |
USE disvert_m, ONLY: ap, bp, preff, presnivs |
25 |
USE exner_hyb_m, ONLY: exner_hyb |
USE exner_hyb_m, ONLY: exner_hyb |
26 |
USE inigrads_m, ONLY: inigrads |
USE inigrads_m, ONLY: inigrads |
30 |
use nr_util, only: pi |
use nr_util, only: pi |
31 |
USE paramet_m, ONLY: iip1, ip1jm, ip1jmp1, jjp1, llmp1 |
USE paramet_m, ONLY: iip1, ip1jm, ip1jmp1, jjp1, llmp1 |
32 |
USE q_sat_m, ONLY: q_sat |
USE q_sat_m, ONLY: q_sat |
33 |
|
use read_reanalyse_m, only: read_reanalyse |
34 |
USE serre, ONLY: clat, clon |
USE serre, ONLY: clat, clon |
35 |
use tau2alpha_m, only: tau2alpha, dxdys |
use tau2alpha_m, only: tau2alpha, dxdys |
36 |
|
|
41 |
REAL, intent(inout):: teta(ip1jmp1, llm) ! temperature potentielle |
REAL, intent(inout):: teta(ip1jmp1, llm) ! temperature potentielle |
42 |
REAL q(ip1jmp1, llm) ! temperature potentielle |
REAL q(ip1jmp1, llm) ! temperature potentielle |
43 |
REAL, intent(out):: masse(ip1jmp1, llm) ! masse d'air |
REAL, intent(out):: masse(ip1jmp1, llm) ! masse d'air |
44 |
REAL, intent(in):: ps(ip1jmp1) ! pression au sol |
REAL, intent(in):: ps(:, :) ! (iim + 1, jjm + 1) pression au sol |
45 |
|
|
46 |
! Local: |
! Local: |
47 |
|
|
71 |
INTEGER, SAVE:: nlev |
INTEGER, SAVE:: nlev |
72 |
|
|
73 |
! TEST SUR QSAT |
! TEST SUR QSAT |
74 |
REAL p(ip1jmp1, llmp1), pk(ip1jmp1, llm), pks(ip1jmp1) |
REAL p(iim + 1, jjm + 1, llmp1), pk(ip1jmp1, llm), pks(ip1jmp1) |
75 |
REAL pkf(ip1jmp1, llm) |
REAL pkf(ip1jmp1, llm) |
76 |
REAL pres(ip1jmp1, llm) |
REAL pres(ip1jmp1, llm) |
77 |
|
|
90 |
|
|
91 |
! calcul de l'humidite saturante |
! calcul de l'humidite saturante |
92 |
|
|
93 |
forall (l = 1: llm + 1) p(:, l) = ap(l) + bp(l) * ps |
forall (l = 1: llm + 1) p(:, :, l) = ap(l) + bp(l) * ps |
94 |
CALL massdair(p, masse) |
CALL massdair(p, masse) |
95 |
CALL exner_hyb(ps, p, pks, pk, pkf) |
CALL exner_hyb(ps, p, pks, pk, pkf) |
96 |
tnat(:, :) = pk(:, :)*teta(:, :)/cpp |
tnat(:, :) = pk(:, :)*teta(:, :)/cpp |
184 |
rcod = nf90_close(ncidpl) |
rcod = nf90_close(ncidpl) |
185 |
! Lecture du premier etat des reanalyses. |
! Lecture du premier etat des reanalyses. |
186 |
CALL read_reanalyse(1, ps, ucovrea2, vcovrea2, tetarea2, qrea2, & |
CALL read_reanalyse(1, ps, ucovrea2, vcovrea2, tetarea2, qrea2, & |
187 |
masserea2, 1, nlev) |
masserea2, nlev) |
188 |
qrea2(:, :) = max(qrea2(:, :), 0.1) |
qrea2(:, :) = max(qrea2(:, :), 0.1) |
189 |
|
|
190 |
! Debut de l'integration temporelle: |
! Debut de l'integration temporelle: |
214 |
step_rea = step_rea + 1 |
step_rea = step_rea + 1 |
215 |
itau_test = itau |
itau_test = itau |
216 |
CALL read_reanalyse(step_rea, ps, ucovrea2, vcovrea2, tetarea2, & |
CALL read_reanalyse(step_rea, ps, ucovrea2, vcovrea2, tetarea2, & |
217 |
qrea2, masserea2, 1, nlev) |
qrea2, masserea2, nlev) |
218 |
qrea2(:, :) = max(qrea2(:, :), 0.1) |
qrea2(:, :) = max(qrea2(:, :), 0.1) |
219 |
factt = dtvr*iperiod/daysec |
factt = dtvr*iperiod/daysec |
220 |
ztau(:) = factt/max(alpha_t(:), 1.E-10) |
ztau(:) = factt/max(alpha_t(:), 1.E-10) |