116 |
c====================================================================== |
c====================================================================== |
117 |
c$$$ PB ajout pour soil |
c$$$ PB ajout pour soil |
118 |
c |
c |
119 |
REAL dtime |
REAL, intent(in):: dtime |
120 |
real date0 |
real date0 |
121 |
integer, intent(in):: itap |
integer, intent(in):: itap |
122 |
REAL t(klon,klev), q(klon,klev) |
REAL t(klon,klev), q(klon,klev) |
123 |
REAL u(klon,klev), v(klon,klev) |
REAL u(klon,klev), v(klon,klev) |
124 |
cIM 230604 BAD REAL radsol(klon) ??? |
cIM 230604 BAD REAL radsol(klon) ??? |
125 |
REAL, intent(in):: paprs(klon,klev+1) |
REAL, intent(in):: paprs(klon,klev+1) |
126 |
real pplay(klon,klev) |
real, intent(in):: pplay(klon,klev) |
127 |
REAL, intent(in):: rlon(klon), rlat(klon) |
REAL, intent(in):: rlon(klon), rlat(klon) |
128 |
real cufi(klon), cvfi(klon) |
real cufi(klon), cvfi(klon) |
129 |
REAL d_t(klon, klev), d_q(klon, klev) |
REAL d_t(klon, klev), d_q(klon, klev) |
141 |
REAL run_off_lic_0(klon), y_run_off_lic_0(klon) |
REAL run_off_lic_0(klon), y_run_off_lic_0(klon) |
142 |
|
|
143 |
REAL flux_u(klon,klev, nbsrf), flux_v(klon,klev, nbsrf) |
REAL flux_u(klon,klev, nbsrf), flux_v(klon,klev, nbsrf) |
144 |
REAL rugmer(klon), agesno(klon,nbsrf),rugoro(klon) |
REAL rugmer(klon), agesno(klon,nbsrf) |
145 |
|
real, intent(in):: rugoro(klon) |
146 |
REAL cdragh(klon), cdragm(klon) |
REAL cdragh(klon), cdragm(klon) |
147 |
integer jour ! jour de l'annee en cours |
integer jour ! jour de l'annee en cours |
148 |
real rmu0(klon) ! cosinus de l'angle solaire zenithal |
real rmu0(klon) ! cosinus de l'angle solaire zenithal |
150 |
LOGICAL, intent(in):: debut |
LOGICAL, intent(in):: debut |
151 |
logical, intent(in):: lafin |
logical, intent(in):: lafin |
152 |
logical ok_veget |
logical ok_veget |
153 |
character*6 ocean |
character(len=*), intent(IN):: ocean |
154 |
integer npas, nexca |
integer npas, nexca |
155 |
c |
c |
156 |
REAL pctsrf(klon,nbsrf) |
REAL pctsrf(klon,nbsrf) |
177 |
REAL zv1(klon) |
REAL zv1(klon) |
178 |
cAA |
cAA |
179 |
c$$$ PB ajout pour soil |
c$$$ PB ajout pour soil |
180 |
LOGICAL soil_model |
LOGICAL, intent(in):: soil_model |
181 |
cIM ajout seuils cdrm, cdrh |
cIM ajout seuils cdrm, cdrh |
182 |
REAL cdmmax, cdhmax |
REAL cdmmax, cdhmax |
183 |
cIM: 261103 |
cIM: 261103 |
254 |
LOGICAL first_appel |
LOGICAL first_appel |
255 |
SAVE first_appel |
SAVE first_appel |
256 |
DATA first_appel/.true./ |
DATA first_appel/.true./ |
257 |
LOGICAL debugindex |
LOGICAL:: debugindex = .false. |
|
SAVE debugindex |
|
|
DATA debugindex/.false./ |
|
258 |
integer idayref |
integer idayref |
259 |
REAL t2m(klon,nbsrf), q2m(klon,nbsrf) |
REAL t2m(klon,nbsrf), q2m(klon,nbsrf) |
260 |
REAL u10m(klon,nbsrf), v10m(klon,nbsrf) |
REAL u10m(klon,nbsrf), v10m(klon,nbsrf) |
355 |
ENDDO |
ENDDO |
356 |
ENDDO |
ENDDO |
357 |
DO i = 1, klon ! vent de la premiere couche |
DO i = 1, klon ! vent de la premiere couche |
|
ccc zx_alf1 = (paprs(i,1)-pplay(i,2))/(pplay(i,1)-pplay(i,2)) |
|
358 |
zx_alf1 = 1.0 |
zx_alf1 = 1.0 |
359 |
zx_alf2 = 1.0 - zx_alf1 |
zx_alf2 = 1.0 - zx_alf1 |
360 |
u1lay(i) = u(i,1)*zx_alf1 + u(i,2)*zx_alf2 |
u1lay(i) = u(i,1)*zx_alf1 + u(i,2)*zx_alf2 |
455 |
pctsrf_pot(:,is_oce) = 1. - zmasq(:) |
pctsrf_pot(:,is_oce) = 1. - zmasq(:) |
456 |
pctsrf_pot(:,is_sic) = 1. - zmasq(:) |
pctsrf_pot(:,is_sic) = 1. - zmasq(:) |
457 |
|
|
458 |
DO 99999 nsrf = 1, nbsrf |
DO nsrf = 1, nbsrf |
459 |
|
|
460 |
c chercher les indices: |
c chercher les indices: |
461 |
DO j = 1, klon |
DO j = 1, klon |
491 |
CALL histwrite(nidbg,cl_surf(nsrf),itap,debugtab,iim*(jjm+1) |
CALL histwrite(nidbg,cl_surf(nsrf),itap,debugtab,iim*(jjm+1) |
492 |
$ ,ndexbg) |
$ ,ndexbg) |
493 |
ENDIF |
ENDIF |
494 |
IF (knon.EQ.0) GOTO 99999 |
IF (knon.EQ.0) cycle |
495 |
DO j = 1, knon |
DO j = 1, knon |
496 |
i = ni(j) |
i = ni(j) |
497 |
ypct(j) = pctsrf(i,nsrf) |
ypct(j) = pctsrf(i,nsrf) |
656 |
call ustarhb(knon,yu,yv,y_cd_m, yustar) |
call ustarhb(knon,yu,yv,y_cd_m, yustar) |
657 |
|
|
658 |
if (prt_level > 9) THEN |
if (prt_level > 9) THEN |
659 |
WRITE(lunout,*)'USTAR = ',yustar |
print *,'USTAR = ',yustar |
660 |
ENDIF |
ENDIF |
661 |
|
|
662 |
c iflag_pbl peut etre utilise comme longuer de melange |
c iflag_pbl peut etre utilise comme longuer de melange |
910 |
enddo |
enddo |
911 |
enddo |
enddo |
912 |
cIM "slab" ocean |
cIM "slab" ocean |
|
IF(OCEAN.EQ.'slab '.OR.OCEAN.EQ.'force ') THEN |
|
913 |
IF (nsrf.EQ.is_oce) THEN |
IF (nsrf.EQ.is_oce) THEN |
914 |
DO j = 1, knon |
DO j = 1, knon |
915 |
c on projette sur la grille globale |
c on projette sur la grille globale |
933 |
ENDIF |
ENDIF |
934 |
ENDDO |
ENDDO |
935 |
ENDIF !nsrf.EQ.is_sic |
ENDIF !nsrf.EQ.is_sic |
|
ENDIF !OCEAN |
|
936 |
c |
c |
937 |
IF(OCEAN.EQ.'slab ') THEN |
IF(OCEAN.EQ.'slab ') THEN |
938 |
IF(nsrf.EQ.is_oce) then |
IF(nsrf.EQ.is_oce) then |
940 |
seaice(1:klon) = y_seaice(1:klon) |
seaice(1:klon) = y_seaice(1:klon) |
941 |
ENDIF !nsrf |
ENDIF !nsrf |
942 |
ENDIF !OCEAN |
ENDIF !OCEAN |
943 |
99999 CONTINUE |
end do |
944 |
C |
C |
945 |
C On utilise les nouvelles surfaces |
C On utilise les nouvelles surfaces |
946 |
C A rajouter: conservation de l'albedo |
C A rajouter: conservation de l'albedo |