--- trunk/libf/phylmd/phystokenc.f90 2012/04/20 14:58:43 61 +++ trunk/Sources/phylmd/phystokenc.f 2015/04/29 15:47:56 134 @@ -10,65 +10,67 @@ ! From phylmd/phystokenc.F, version 1.2 2004/06/22 11:45:35 ! Author: Frédéric Hourdin - ! Objet: moniteur général des tendances traceurs + ! Objet : écriture des variables pour transport offline - USE histwrite_m, ONLY : histwrite - USE histsync_m, ONLY : histsync - USE dimens_m, ONLY : iim, jjm, nqmx - USE indicesol, ONLY : nbsrf - USE dimphy, ONLY : klev, klon - USE tracstoke, ONLY : istphy + USE histwrite_m, ONLY: histwrite + USE histsync_m, ONLY: histsync + USE dimens_m, ONLY: iim, jjm, nqmx + USE indicesol, ONLY: nbsrf + USE dimphy, ONLY: klev, klon + USE tracstoke, ONLY: istphy - ! Arguments: + REAL, INTENT (IN):: pdtphys ! pas d'integration pour la physique (seconde) + REAL, INTENT (IN):: rlon(klon), rlat(klon) + REAL, intent(in):: pt(klon, klev) - ! EN ENTREE: + ! convection: - ! divers: + REAL, INTENT (IN):: pmfu(klon, klev) ! flux de masse dans le panache montant - REAL, INTENT (IN) :: pdtphys ! pas d'integration pour la physique (seconde) - INTEGER, INTENT (IN) :: itap + REAL, intent(in):: pmfd(klon, klev) + ! flux de masse dans le panache descendant - ! convection: + REAL, intent(in):: pen_u(klon, klev) ! flux entraine dans le panache montant + REAL, intent(in):: pde_u(klon, klev) ! flux detraine dans le panache montant - REAL pmfu(klon, klev) ! flux de masse dans le panache montant - REAL pmfd(klon, klev) ! flux de masse dans le panache descendant - REAL pen_u(klon, klev) ! flux entraine dans le panache montant - REAL pde_u(klon, klev) ! flux detraine dans le panache montant - REAL pen_d(klon, klev) ! flux entraine dans le panache descendant - REAL pde_d(klon, klev) ! flux detraine dans le panache descendant - REAL, intent(in):: pt(klon, klev) + REAL, intent(in):: pen_d(klon, klev) + ! flux entraine dans le panache descendant - REAL, INTENT (IN) :: rlon(klon), rlat(klon) - REAL, INTENT (IN) :: dtime + REAL, intent(in):: pde_d(klon, klev) + ! flux detraine dans le panache descendant - ! Les Thermiques + ! Les Thermiques REAL pfm_therm(klon, klev+1) REAL pentr_therm(klon, klev) - ! Couche limite: + ! Couche limite: - REAL yv1(klon) - REAL yu1(klon), paire(klon) - REAL, INTENT(IN):: pphis(klon) REAL pcoefh(klon, klev) ! coeff melange Couche limite + REAL yu1(klon) + REAL yv1(klon) - ! Arguments necessaires pour les sources et puits de traceur + ! Arguments necessaires pour les sources et puits de traceur REAL ftsol(klon, nbsrf) ! Temperature du sol (surf)(Kelvin) REAL pctsrf(klon, nbsrf) ! Pourcentage de sol f(nature du sol) - ! Lessivage: + ! Lessivage: REAL frac_impa(klon, klev) REAL frac_nucl(klon, klev) + REAL, INTENT(IN):: pphis(klon) + real paire(klon) + REAL, INTENT (IN):: dtime + INTEGER, INTENT (IN):: itap + ! Variables local to the procedure: real t(klon, klev) INTEGER, SAVE:: physid REAL zx_tmp_3d(iim, jjm+1, klev), zx_tmp_2d(iim, jjm+1) - ! Les Thermiques + ! Les Thermiques REAL fm_therm1(klon, klev) REAL entr_therm(klon, klev) @@ -76,7 +78,7 @@ INTEGER i, k - REAL mfu(klon, klev) ! flux de masse dans le panache montant + REAL, save:: mfu(klon, klev) ! flux de masse dans le panache montant REAL mfd(klon, klev) ! flux de masse dans le panache descendant REAL en_u(klon, klev) ! flux entraine dans le panache montant REAL de_u(klon, klev) ! flux detraine dans le panache montant @@ -91,20 +93,17 @@ REAL dtcum - INTEGER iadvtr, irec + INTEGER:: iadvtr = 0, irec = 1 REAL zmin, zmax LOGICAL ok_sync - SAVE t, mfu, mfd, en_u, de_u, en_d, de_d, coefh, dtcum + SAVE t, mfd, en_u, de_u, en_d, de_d, coefh, dtcum SAVE fm_therm, entr_therm - SAVE iadvtr, irec SAVE pyu1, pyv1, pftsol, ppsrf - DATA iadvtr, irec/0, 1/ - !------------------------------------------------------ - ! Couche limite: + ! Couche limite: ok_sync = .TRUE. @@ -123,8 +122,8 @@ iadvtr = iadvtr + 1 - IF (mod(iadvtr, istphy)==1 .OR. istphy==1) THEN - PRINT *, 'reinitialisation des champs cumules a iadvtr=', iadvtr + IF (mod(iadvtr, istphy) == 1 .OR. istphy == 1) THEN + PRINT *, 'reinitialisation des champs cumules a iadvtr =', iadvtr DO k = 1, klev DO i = 1, klon mfu(i, k) = 0. @@ -180,8 +179,8 @@ dtcum = dtcum + pdtphys - IF (mod(iadvtr, istphy)==0) THEN - ! normalisation par le temps cumule + IF (mod(iadvtr, istphy) == 0) THEN + ! normalisation par le temps cumule DO k = 1, klev DO i = 1, klon mfu(i, k) = mfu(i, k)/dtcum @@ -214,15 +213,13 @@ ppsrf2(i) = ppsrf(i, 2) ppsrf3(i) = ppsrf(i, 3) ppsrf4(i) = ppsrf(i, 4) - END DO END DO - ! ecriture des champs + ! ecriture des champs irec = irec + 1 - !cccc CALL gr_fi_ecrit(klev, klon, iim, jjm+1, t, zx_tmp_3d) CALL histwrite(physid, 't', itap, zx_tmp_3d) @@ -241,7 +238,6 @@ CALL gr_fi_ecrit(klev, klon, iim, jjm+1, coefh, zx_tmp_3d) CALL histwrite(physid, 'coefh', itap, zx_tmp_3d) - ! ajou... DO k = 1, klev DO i = 1, klon fm_therm1(i, k) = fm_therm(i, k) @@ -253,7 +249,7 @@ CALL gr_fi_ecrit(klev, klon, iim, jjm+1, entr_therm, zx_tmp_3d) CALL histwrite(physid, 'en_th', itap, zx_tmp_3d) - !ccc + !ccc CALL gr_fi_ecrit(klev, klon, iim, jjm+1, frac_impa, zx_tmp_3d) CALL histwrite(physid, 'frac_impa', itap, zx_tmp_3d) @@ -285,10 +281,8 @@ CALL histwrite(physid, 'psrf4', itap, zx_tmp_2d) IF (ok_sync) CALL histsync(physid) - ! if (ok_sync) call histsync - - !AA Test sur la valeur des coefficients de lessivage + ! Test sur la valeur des coefficients de lessivage zmin = 1E33 zmax = -1E33 @@ -298,7 +292,7 @@ zmin = min(zmin, frac_nucl(i, k)) END DO END DO - PRINT *, '------ coefs de lessivage (min et max) --------' + PRINT *, 'coefs de lessivage (min et max)' PRINT *, 'facteur de nucleation ', zmin, zmax zmin = 1E33 zmax = -1E33 @@ -309,7 +303,6 @@ END DO END DO PRINT *, 'facteur d impaction ', zmin, zmax - END IF END SUBROUTINE phystokenc