[3400] | 1 | SUBROUTINE borne_var_surf(klon,nbsrf, & |
---|
| 2 | t1,q1,u1,v1, & |
---|
| 3 | ftsol,pctsrf, & |
---|
| 4 | t2m, q2m, u10m, v10m, & |
---|
| 5 | zt2m_cor, zq2m_cor, zu10m_cor, zv10m_cor) |
---|
| 6 | |
---|
| 7 | IMPLICIT NONE |
---|
| 8 | |
---|
| 9 | !================================================================== |
---|
| 10 | ! Declarations |
---|
| 11 | !================================================================== |
---|
| 12 | |
---|
| 13 | ! arguments |
---|
| 14 | INTEGER klon,nbsrf |
---|
| 15 | REAL,DIMENSION(klon),INTENT(IN) :: t1, q1, u1, v1 |
---|
| 16 | REAL,DIMENSION(klon,nbsrf),INTENT(IN) :: t2m, q2m, u10m, v10m |
---|
| 17 | REAL,DIMENSION(klon,nbsrf),INTENT(IN) :: ftsol, pctsrf |
---|
| 18 | REAL,DIMENSION (klon) :: zt2m_cor, zq2m_cor, zu10m_cor, zv10m_cor |
---|
| 19 | |
---|
| 20 | |
---|
| 21 | ! local |
---|
| 22 | INTEGER i,nsrf |
---|
| 23 | REAL,DIMENSION (klon,nbsrf) :: t2m_cor, q2m_cor, u10m_cor, v10m_cor |
---|
| 24 | |
---|
| 25 | !================================================================== |
---|
| 26 | ! Correction of sub surface variables |
---|
| 27 | !================================================================== |
---|
| 28 | |
---|
| 29 | DO nsrf=1,nbsrf |
---|
| 30 | DO i=1,klon |
---|
| 31 | t2m_cor(i,nsrf)=MIN(t2m(i,nsrf),MAX(t1(i),ftsol(i,nsrf))) |
---|
| 32 | t2m_cor(i,nsrf)=MAX(t2m_cor(i,nsrf),MIN(t1(i),ftsol(i,nsrf))) |
---|
| 33 | q2m_cor(i,nsrf)=MAX(q2m(i,nsrf),0.) |
---|
| 34 | u10m_cor(i,nsrf)=SIGN(MIN(ABS(u1(i)),ABS(u10m(i,nsrf))),u1(i)) |
---|
| 35 | v10m_cor(i,nsrf)=SIGN(MIN(ABS(v1(i)),ABS(v10m(i,nsrf))),v1(i)) |
---|
| 36 | ENDDO |
---|
| 37 | ENDDO |
---|
| 38 | |
---|
| 39 | !================================================================== |
---|
| 40 | ! Agregation of sub surfaces |
---|
| 41 | !================================================================== |
---|
| 42 | |
---|
| 43 | zt2m_cor=0. |
---|
| 44 | zq2m_cor=0.0001 |
---|
| 45 | zu10m_cor=0. |
---|
| 46 | zv10m_cor=0. |
---|
| 47 | DO nsrf = 1, nbsrf |
---|
| 48 | DO i = 1, klon |
---|
| 49 | zt2m_cor(i) = zt2m_cor(i) + t2m_cor(i,nsrf) * pctsrf(i,nsrf) |
---|
| 50 | zq2m_cor(i) = zq2m_cor(i) + q2m_cor(i,nsrf) * pctsrf(i,nsrf) |
---|
| 51 | zu10m_cor(i) = zu10m_cor(i) + u10m_cor(i,nsrf) * pctsrf(i,nsrf) |
---|
| 52 | zv10m_cor(i) = zv10m_cor(i) + v10m_cor(i,nsrf) * pctsrf(i,nsrf) |
---|
| 53 | ENDDO |
---|
| 54 | ENDDO |
---|
| 55 | |
---|
| 56 | RETURN |
---|
| 57 | END |
---|
| 58 | |
---|
| 59 | |
---|