4 |
|
|
5 |
contains |
contains |
6 |
|
|
7 |
SUBROUTINE coefkzmin(knon, ypaprs, ypplay, yu, yv, yt, yq, ycoefm, kn) |
SUBROUTINE coefkzmin(ypaprs, ypplay, yu, yv, yt, yq, ycoefm, kn) |
8 |
|
|
9 |
! From LMDZ4/libf/phylmd/coefkzmin.F, version 1.1.1.1 2004/05/19 12:53:08 |
! From LMDZ4/libf/phylmd/coefkzmin.F, version 1.1.1.1, 2004/05/19 12:53:08 |
10 |
|
|
11 |
! Entrées modifiées en attendant une version où les zlev et zlay |
! Entrées modifiées en attendant une version où les zlev et zlay |
12 |
! soient disponibles. |
! soient disponibles. |
13 |
|
|
14 |
USE dimphy, ONLY: klev, klon |
USE dimphy, ONLY: klev |
15 |
USE suphec_m, ONLY: rd, rg, rkappa |
USE suphec_m, ONLY: rd, rg, rkappa |
16 |
|
|
17 |
integer, intent(in):: knon |
REAL, intent(in):: ypaprs(:, :) ! (knon, klev+1) |
18 |
REAL, intent(in):: ypaprs(klon, klev+1), ypplay(klon, klev) |
REAL, intent(in):: ypplay(:, :) ! (knon, klev) |
19 |
REAL, intent(in):: yu(klon, klev), yv(klon, klev) ! wind, in m s-1 |
REAL, intent(in):: yu(:, :), yv(:, :) ! (knon, klev) wind, in m s-1 |
20 |
REAL, intent(in):: yt(klon, klev) ! temperature, in K |
REAL, intent(in):: yt(:, :) ! (knon, klev) temperature, in K |
21 |
REAL, intent(in):: yq(klon, klev) |
REAL, intent(in):: yq(:, :) ! (knon, klev) |
22 |
REAL, intent(in):: ycoefm(:) ! (knon) drag coefficient |
REAL, intent(in):: ycoefm(:) ! (knon) drag coefficient |
23 |
|
|
24 |
REAL, intent(out):: kn(:, 2:) ! (knon, 2:klev) coefficient de |
REAL, intent(out):: kn(:, 2:) ! (knon, 2:klev) coefficient de |
28 |
|
|
29 |
! Local: |
! Local: |
30 |
|
|
31 |
real ustar(knon) ! u* |
integer knon |
32 |
real zlay(knon, klev) ! in m |
real ustar(size(ypaprs, 1)) ! (knon) u* |
33 |
|
real zlay(size(ypaprs, 1), klev) ! (knon, klev) in m |
34 |
integer i, k |
integer i, k |
35 |
real pblhmin(knon) |
real pblhmin(size(ypaprs, 1)) ! (knon) |
36 |
real, parameter:: coriol = 1e-4 |
real, parameter:: coriol = 1e-4 |
37 |
|
|
38 |
REAL zlev(knon, 2: klev) |
REAL zlev(size(ypaprs, 1), 2: klev) ! (knon, 2: klev) |
39 |
! altitude at level (interface between layer with same index), in m |
! altitude at level (interface between layer with same index), in m |
40 |
|
|
41 |
REAL teta(knon, klev) |
REAL teta(size(ypaprs, 1), klev) ! (knon, klev) |
42 |
! température potentielle au centre de chaque couche (la valeur au |
! température potentielle au centre de chaque couche (la valeur au |
43 |
! debut du pas de temps) |
! debut du pas de temps) |
44 |
|
|
46 |
|
|
47 |
!--------------------------------------------------------------------- |
!--------------------------------------------------------------------- |
48 |
|
|
49 |
|
knon = size(ypaprs, 1) |
50 |
|
|
51 |
! Debut de la partie qui doit etre incluse a terme dans clmain. |
! Debut de la partie qui doit etre incluse a terme dans clmain. |
52 |
|
|
53 |
do i = 1, knon |
do i = 1, knon |
72 |
enddo |
enddo |
73 |
|
|
74 |
forall (k = 2: klev) zlev(:, k) = 0.5 * (zlay(:, k) + zlay(:, k-1)) |
forall (k = 2: klev) zlev(:, k) = 0.5 * (zlay(:, k) + zlay(:, k-1)) |
75 |
ustar = SQRT(ycoefm * (yu(:knon, 1)**2 + yv(:knon, 1)**2)) |
ustar = SQRT(ycoefm * (yu(:, 1)**2 + yv(:, 1)**2)) |
76 |
|
|
77 |
! Fin de la partie qui doit être incluse à terme dans clmain |
! Fin de la partie qui doit être incluse à terme dans clmain |
78 |
|
|