Ignore:
Timestamp:
Jul 5, 2024, 4:38:48 PM (2 months ago)
Author:
Sebastien Nguyen
Message:

include ISO keys in pbl_surface and associated routines in phylmd

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/phylmd/pbl_surface_mod.F90

    r5015 r5022  
    3333                                  wx_pbl_check, wx_pbl_dts_check, wx_evappot
    3434  use config_ocean_skin_m, only: activate_ocean_skin
     35#ifdef ISO
     36  USE infotrac_phy, ONLY: niso,ntraciso=>ntiso   
     37#endif
    3538
    3639  IMPLICIT NONE
     
    4952  !$OMP THREADPRIVATE(ydTs0, ydqs0)
    5053
     54#ifdef ISO
     55  REAL, ALLOCATABLE, DIMENSION(:,:,:), PRIVATE, SAVE   :: xtsnow   ! snow at surface
     56  !$OMP THREADPRIVATE(xtsnow)
     57  REAL, ALLOCATABLE, DIMENSION(:,:), PRIVATE, SAVE   :: Rland_ice   ! snow at surface
     58  !$OMP THREADPRIVATE(Rland_ice) 
     59  REAL, ALLOCATABLE, DIMENSION(:,:), PRIVATE, SAVE   :: Roce   ! snow at surface
     60  !$OMP THREADPRIVATE(Roce) 
     61#endif
     62
    5163  INTEGER, SAVE :: iflag_pbl_surface_t2m_bug
    5264  !$OMP THREADPRIVATE(iflag_pbl_surface_t2m_bug)
     
    178190
    179191  END SUBROUTINE pbl_surface_init
     192
     193#ifdef ISO
     194  SUBROUTINE pbl_surface_init_iso(xtsnow_rst,Rland_ice_rst)
     195
     196! This routine should be called after the restart file has been read.
     197! This routine initialize the restart variables and does some validation tests
     198! for the index of the different surfaces and tests the choice of type of ocean.
     199
     200    USE indice_sol_mod
     201    USE print_control_mod, ONLY: lunout
     202#ifdef ISOVERIF
     203    USE isotopes_mod, ONLY: iso_eau,ridicule
     204    USE isotopes_verif_mod
     205#endif
     206    IMPLICIT NONE
     207
     208    INCLUDE "dimsoil.h"
     209 
     210! Input variables
     211!****************************************************************************************
     212    REAL, DIMENSION(niso,klon, nbsrf), INTENT(IN)          :: xtsnow_rst
     213    REAL, DIMENSION(niso,klon), INTENT(IN)          :: Rland_ice_rst
     214 
     215! Local variables
     216!****************************************************************************************
     217    INTEGER                       :: ierr
     218    CHARACTER(len=80)             :: abort_message
     219    CHARACTER(len = 20)           :: modname = 'pbl_surface_init'
     220    integer i,ixt
     221   
     222!****************************************************************************************
     223! Allocate and initialize module variables with fields read from restart file.
     224!
     225!****************************************************************************************   
     226
     227    ALLOCATE(xtsnow(niso,klon,nbsrf), stat=ierr)
     228    IF (ierr /= 0) CALL abort_gcm('pbl_surface_init', 'pb in allocation',1)
     229
     230    ALLOCATE(Rland_ice(niso,klon), stat=ierr)
     231    IF (ierr /= 0) CALL abort_gcm('pbl_surface_init', 'pb in allocation',1)
     232
     233    ALLOCATE(Roce(niso,klon), stat=ierr)
     234    IF (ierr /= 0) CALL abort_gcm('pbl_surface_init', 'pb in allocation',1)
     235
     236    xtsnow(:,:,:)  = xtsnow_rst(:,:,:)
     237    Rland_ice(:,:) = Rland_ice_rst(:,:)
     238    Roce(:,:)      = 0.0
     239
     240#ifdef ISOVERIF
     241      IF (iso_eau >= 0) THEN
     242         CALL iso_verif_egalite_vect2D( &
     243     &           xtsnow,snow, &
     244     &           'pbl_surface_mod 170',niso,klon,nbsrf)
     245         DO i=1,klon 
     246            IF (iso_eau >= 0) THEN 
     247              CALL iso_verif_egalite(Rland_ice(iso_eau,i),1.0, &
     248     &         'pbl_surf_mod 177')
     249            ENDIF
     250         ENDDO
     251      ENDIF
     252#endif
     253
     254  END SUBROUTINE pbl_surface_init_iso
     255#endif
     256
    180257
    181258!****************************************************************************************
     
    241318!FC
    242319!!!
    243                         )
     320#ifdef ISO
     321     &   ,xtrain_f, xtsnow_f,xt, &
     322     &   wake_dlxt,zxxtevap,xtevap, &
     323     &   d_xt,d_xt_w,d_xt_x, &
     324     &   xtsol,dflux_xt,zxxtsnow,zxfluxxt,flux_xt, &
     325     &   h1_diag,runoff_diag,xtrunoff_diag &
     326#endif     
     327     &   )
    244328!****************************************************************************************
    245329! Auteur(s) Z.X. Li (LMD/CNRS) date: 19930818
     
    316400    USE mod_grid_phy_lmdz,  ONLY : nbp_lon, nbp_lat, grid1dto2d_glo
    317401    USE print_control_mod,  ONLY : prt_level,lunout
     402#ifdef ISO
     403  USE isotopes_mod, ONLY: Rdefault,iso_eau
     404#ifdef ISOVERIF
     405        USE isotopes_verif_mod
     406#endif
     407#ifdef ISOTRAC
     408        USE isotrac_mod, only: index_iso
     409#endif
     410#endif
    318411    USE ioipsl_getin_p_mod, ONLY : getin_p
    319412    use phys_state_var_mod, only: ds_ns, dt_ns, delta_sst, delta_sal, dter, &
     
    368461    REAL, DIMENSION(klon),        INTENT(IN)        :: gustiness ! gustiness
    369462
    370     REAL, DIMENSION(klon),        INTENT(IN)        :: cldt    ! total cloud fraction
     463    REAL, DIMENSION(klon),        INTENT(IN)        :: cldt    ! total cloud
     464
     465#ifdef ISO
     466    REAL, DIMENSION(ntraciso,klon,klev),   INTENT(IN)        :: xt       ! water vapour (kg/kg)
     467    REAL, DIMENSION(ntraciso,klon),        INTENT(IN)        :: xtrain_f  ! rain fall
     468    REAL, DIMENSION(ntraciso,klon),        INTENT(IN)        :: xtsnow_f  ! snow fall
     469#endif
    371470
    372471!!! nrlmd+jyg le 02/05/2011 et le 20/02/2012
     
    381480    REAL, DIMENSION(klon),        INTENT(IN)        :: wake_dens
    382481!!!
    383 
     482#ifdef ISO
     483    REAL, DIMENSION(ntraciso,klon,klev),   INTENT(IN)        :: wake_dlxt   
     484#endif
    384485! Input/Output variables
    385486!****************************************************************************************
     
    450551    REAL, INTENT(OUT):: zcoefm(:, :, :) ! (klon, klev, nbsrf + 1)
    451552    ! coef for turbulent diffusion of U and V (?), mean for each grid point
     553#ifdef ISO
     554    REAL, DIMENSION(ntraciso,klon),        INTENT(OUT)       :: zxxtevap     ! water vapour flux at surface, positiv upwards
     555    REAL, DIMENSION(ntraciso,klon, klev),  INTENT(OUT)       :: d_xt        ! change in water vapour
     556    REAL, DIMENSION(klon),                 INTENT(OUT)       :: runoff_diag
     557    REAL, DIMENSION(niso,klon),            INTENT(OUT)       :: xtrunoff_diag
     558    REAL, DIMENSION(ntraciso,klon,klev),   INTENT(OUT)       :: d_xt_w
     559    REAL, DIMENSION(ntraciso,klon,klev),   INTENT(OUT)       :: d_xt_x
     560#endif
     561
     562
    452563
    453564!!! nrlmd+jyg le 02/05/2011 et le 20/02/2012
     
    513624    REAL, DIMENSION(klon, klev, nbsrf), INTENT(OUT) :: flux_v     ! v wind tension (kg m/s)/(m**2 s) or Pascal
    514625!FC
    515     REAL, DIMENSION(klon, klev, nbsrf), INTENT(INOUT)  :: treedrg      ! tree drag (m)               
     626    REAL, DIMENSION(klon, klev, nbsrf), INTENT(INOUT) :: treedrg  ! tree drag (m)               
     627#ifdef ISO       
     628    REAL, DIMENSION(niso,klon),   INTENT(OUT)       :: xtsol      ! water height in the soil (mm)
     629    REAL, DIMENSION(ntraciso,klon, nbsrf)           :: xtevap     ! evaporation at surface
     630    REAL, DIMENSION(klon),        INTENT(OUT)       :: h1_diag    ! just diagnostic, not useful
     631#endif
    516632
    517633
     
    527643    REAL, DIMENSION(klon, klev, nbsrf), INTENT(OUT) :: flux_qbs   ! blowind snow vertical flux (kg/m**2
    528644
     645#ifdef ISO   
     646    REAL, DIMENSION(ntraciso,klon),              INTENT(OUT) :: dflux_xt    ! change of water vapour flux
     647    REAL, DIMENSION(niso,klon),                  INTENT(OUT) :: zxxtsnow    ! snow at surface, mean for each grid point
     648    REAL, DIMENSION(ntraciso,klon, klev),        INTENT(OUT) :: zxfluxxt    ! water vapour flux, mean for each grid point
     649    REAL, DIMENSION(ntraciso,klon, klev, nbsrf), INTENT(OUT) :: flux_xt     ! water vapour flux(latent flux) (kg/m**2/s) 
     650#endif
    529651
    530652! Martin
     
    575697    REAL, DIMENSION(klon)              :: ysnow, yqsurf, yagesno, yqsol
    576698    REAL, DIMENSION(klon)              :: yrain_f, ysnow_f, ybs_f
     699#ifdef ISO
     700    REAL, DIMENSION(ntraciso,klon)     :: yxt1
     701    REAL, DIMENSION(niso,klon)         :: yxtsnow, yxtsol   
     702    REAL, DIMENSION(ntraciso,klon)     :: yxtrain_f, yxtsnow_f
     703    REAL, DIMENSION(klon)              :: yrunoff_diag
     704    REAL, DIMENSION(niso,klon)         :: yxtrunoff_diag
     705    REAL, DIMENSION(niso,klon)         :: yRland_ice   
     706#endif
    577707    REAL, DIMENSION(klon)              :: ysolsw, ysollw
    578708    REAL, DIMENSION(klon)              :: yfder
     
    583713    REAL, DIMENSION(klon)              :: y_flux_t1, y_flux_q1
    584714    REAL, DIMENSION(klon)              :: y_dflux_t, y_dflux_q
     715#ifdef ISO
     716    REAL, DIMENSION(ntraciso,klon)     ::  y_flux_xt1
     717    REAL, DIMENSION(ntraciso,klon)     ::  y_dflux_xt
     718#endif
    585719    REAL, DIMENSION(klon)              :: y_flux_u1, y_flux_v1
    586720    REAL, DIMENSION(klon)              :: y_flux_bs, y_flux0
     
    610744    REAL, DIMENSION(klon)              :: AcoefH_0, AcoefQ_0, BcoefH_0, BcoefQ_0
    611745    REAL, DIMENSION(klon)              :: AcoefH, AcoefQ, BcoefH, BcoefQ
     746#ifdef ISO
     747    REAL, DIMENSION(ntraciso,klon)     :: AcoefXT, BcoefXT
     748#endif
    612749    REAL, DIMENSION(klon)              :: AcoefU, AcoefV, BcoefU, BcoefV
    613750    REAL, DIMENSION(klon)              :: AcoefQBS, BcoefQBS
     
    628765    REAL, DIMENSION(klon,klev)         :: yu, yv
    629766    REAL, DIMENSION(klon,klev)         :: yt, yq, yqbs
     767#ifdef ISO
     768    REAL, DIMENSION(ntraciso,klon)      :: yxtevap
     769    REAL, DIMENSION(ntraciso,klon,klev) :: y_d_xt
     770    REAL, DIMENSION(ntraciso,klon,klev) :: y_flux_xt
     771    REAL, DIMENSION(ntraciso,klon,klev) :: yxt   
     772#endif
    630773    REAL, DIMENSION(klon,klev)         :: ypplay, ydelp
    631774    REAL, DIMENSION(klon,klev)         :: delp
     
    699842    REAL, DIMENSION(klon,klev)         :: Kcoef_hq_w, Kcoef_m_w, gama_h_w, gama_q_w
    700843    REAL, DIMENSION(klon)              :: alf_1, alf_2, alf_1_x, alf_2_x, alf_1_w, alf_2_w
     844#ifdef ISO
     845    REAL, DIMENSION(ntraciso,klon,klev)         :: yxt_x, yxt_w
     846    REAL, DIMENSION(ntraciso,klon)              :: y_flux_xt1_x , y_flux_xt1_w   
     847    REAL, DIMENSION(ntraciso,klon,klev)         :: y_flux_xt_x,y_d_xt_x,zxfluxxt_x
     848    REAL, DIMENSION(ntraciso,klon,klev)         :: y_flux_xt_w,y_d_xt_w,zxfluxxt_w
     849    REAL, DIMENSION(ntraciso,klon,klev,nbsrf)   :: flux_xt_x, flux_xt_w
     850    REAL, DIMENSION(ntraciso,klon)              :: AcoefXT_x, BcoefXT_x
     851    REAL, DIMENSION(ntraciso,klon)              :: AcoefXT_w, BcoefXT_w
     852    REAL, DIMENSION(ntraciso,klon,klev)         :: CcoefXT, DcoefXT
     853    REAL, DIMENSION(ntraciso,klon,klev)         :: CcoefXT_x, DcoefXT_x
     854    REAL, DIMENSION(ntraciso,klon,klev)         :: CcoefXT_w, DcoefXT_w
     855    REAL, DIMENSION(ntraciso,klon,klev)         :: gama_xt,gama_xt_x,gama_xt_w
     856#endif
    701857!!!
    702858!!!jyg le 08/02/2012
     
    8911047    REAL, DIMENSION(klon)              :: yrmu0
    8921048    ! Martin
    893     REAL, DIMENSIOn(klon)              :: yri0
     1049    REAL, DIMENSION(klon)              :: yri0
    8941050
    8951051    REAL, DIMENSION(klon):: ydelta_sst, ydelta_sal, yds_ns, ydt_ns, ydter, &
     
    8981054    ! dt_ds, tkt, tks, taur, sss on ocean points
    8991055    REAL :: missing_val
     1056#ifdef ISO
     1057    REAL, DIMENSION(klon)       :: h1
     1058    INTEGER                     :: ixt
     1059!#ifdef ISOVERIF
     1060!    integer iso_verif_positif_nostop
     1061!#endif   
     1062#endif
     1063
    9001064!****************************************************************************************
    9011065! End of declarations
     
    9251089      iflag_split_ref = mod(iflag_pbl_split,10)
    9261090      iflag_split = iflag_split_ref
     1091
     1092#ifdef ISO     
     1093#ifdef ISOVERIF
     1094      DO i=1,klon
     1095        DO ixt=1,niso
     1096          CALL iso_verif_noNaN(xtsol(ixt,i),'pbl_surface 608')
     1097        ENDDO
     1098      ENDDO
     1099#endif
     1100#ifdef ISOVERIF
     1101      DO i=1,klon 
     1102        IF (iso_eau >= 0) THEN 
     1103          CALL iso_verif_egalite_choix(Rland_ice(iso_eau,i),1.0, &
     1104     &         'pbl_surf_mod 585',errmax,errmaxrel)
     1105          CALL iso_verif_egalite_choix(xtsnow_f(iso_eau,i),snow_f(i), &
     1106     &         'pbl_surf_mod 594',errmax,errmaxrel)
     1107          IF (iso_verif_egalite_choix_nostop(xtsol(iso_eau,i),qsol(i), &
     1108     &         'pbl_surf_mod 596',errmax,errmaxrel) == 1) THEN
     1109                WRITE(*,*) 'i=',i
     1110                STOP
     1111          ENDIF
     1112          DO nsrf=1,nbsrf
     1113            CALL iso_verif_egalite_choix(xtsnow(iso_eau,i,nsrf),snow(i,nsrf), &
     1114     &         'pbl_surf_mod 598',errmax,errmaxrel)
     1115          ENDDO
     1116        ENDIF !IF (iso_eau >= 0) THEN   
     1117      ENDDO !DO i=1,knon 
     1118      DO k=1,klev
     1119        DO i=1,klon 
     1120          IF (iso_eau >= 0) THEN 
     1121            CALL iso_verif_egalite_choix(xt(iso_eau,i,k),q(i,k), &
     1122     &           'pbl_surf_mod 595',errmax,errmaxrel)
     1123          ENDIF !IF (iso_eau >= 0) THEN 
     1124        ENDDO !DO i=1,knon 
     1125      ENDDO !DO k=1,klev
     1126#endif
     1127#endif
     1128
    9271129
    9281130!****************************************************************************************
     
    9901192      PRINT*,'WARNING : On impose qsol=',qsol0
    9911193      qsol(:)=qsol0
     1194#ifdef ISO
     1195      DO ixt=1,niso
     1196        xtsol(ixt,:)=qsol0*Rdefault(ixt)
     1197      ENDDO
     1198#ifdef ISOTRAC     
     1199      DO ixt=1+niso,ntraciso
     1200        xtsol(ixt,:)=qsol0*Rdefault(index_iso(ixt))
     1201      ENDDO
     1202#endif       
     1203#endif
    9921204    ENDIF
    9931205!****************************************************************************************
     
    10401252 qsnow(:)=0. ; snowhgt(:)=0. ; to_ice(:)=0. ; sissnow(:)=0.
    10411253 runoff(:)=0.
     1254#ifdef ISO
     1255zxxtevap(:,:)=0.
     1256 d_xt(:,:,:)=0.
     1257 d_xt_x(:,:,:)=0.
     1258 d_xt_w(:,:,:)=0.
     1259 flux_xt(:,:,:,:)=0.
     1260! xtsnow(:,:,:)=0.! attention, xtsnow est l'équivalent de snow et non de qsnow
     1261 xtevap(:,:,:)=0.
     1262#endif
    10421263    IF (iflag_pbl<20.or.iflag_pbl>=30) THEN
    10431264       zcoefh(:,:,:) = 0.0
     
    11291350!FC
    11301351
     1352#ifdef ISO
     1353   yxtrain_f = 0.0 ; yxtsnow_f = 0.0
     1354   yxtsnow  = 0.0
     1355   yxt = 0.0
     1356   yxtsol = 0.0
     1357   flux_xt = 0.0
     1358   yRland_ice = 0.0
     1359!   d_xt = 0.0     
     1360   y_dflux_xt = 0.0 
     1361   dflux_xt=0.0
     1362   y_d_xt_x=0.      ; y_d_xt_w=0.       
     1363#endif
     1364
    11311365! >> PC
    11321366!the yfields_out variable is defined in (klon,nbcf_out) even if it is used on
     
    11551389    fluxlat_x(:,:)=0. ;           fluxlat_w(:,:)=0.
    11561390!>jyg
     1391#ifdef ISO
     1392    flux_xt_x(:,:,:,:)=0. ;          flux_xt_w(:,:,:,:)=0.
     1393#endif
    11571394!
    11581395!jyg<
     
    14541691          yfluxbs(j)=0.0
    14551692          y_flux_bs(j) = 0.0
     1693!!!
     1694#ifdef ISO
     1695          DO ixt=1,ntraciso
     1696            yxtrain_f(ixt,j) = xtrain_f(ixt,i)
     1697            yxtsnow_f(ixt,j) = xtsnow_f(ixt,i) 
     1698          ENDDO
     1699          DO ixt=1,niso
     1700            yxtsnow(ixt,j)   = xtsnow(ixt,i,nsrf)
     1701          ENDDO   
     1702          !IF (nsrf == is_lic) THEN
     1703          DO ixt=1,niso
     1704            yRland_ice(ixt,j)= Rland_ice(ixt,i) 
     1705          ENDDO   
     1706          !endif !IF (nsrf == is_lic) THEN
     1707#ifdef ISOVERIF
     1708          IF (iso_eau >= 0) THEN
     1709              call iso_verif_egalite_choix(ysnow_f(j), &
     1710     &          yxtsnow_f(iso_eau,j),'pbl_surf_mod 862', &
     1711     &          errmax,errmaxrel)
     1712              call iso_verif_egalite_choix(ysnow(j), &
     1713     &          yxtsnow(iso_eau,j),'pbl_surf_mod 872', &
     1714     &          errmax,errmaxrel)
     1715          ENDIF
     1716#endif
     1717#ifdef ISOVERIF
     1718         DO ixt=1,ntraciso
     1719           call iso_verif_noNaN(yxtsnow_f(ixt,j),'pbl_surf_mod 921')
     1720         ENDDO
     1721#endif
     1722#endif
    14561723       ENDDO
    14571724! >> PC
     
    14931760             yq(j,k) = q(i,k)
    14941761             yqbs(j,k)=qbs(i,k)
     1762#ifdef ISO
     1763             DO ixt=1,ntraciso   
     1764               yxt(ixt,j,k) = xt(ixt,i,k)
     1765             ENDDO !DO ixt=1,ntraciso
     1766#endif
    14951767          ENDDO
    14961768        ENDDO
     
    15101782             yq_w(j,k) = q(i,k)+(1.-wake_s(i))*wake_dlq(i,k)
    15111783!!!
     1784#ifdef ISO
     1785             DO ixt=1,ntraciso
     1786               yxt_x(ixt,j,k) = xt(ixt,i,k)-wake_s(i)*wake_dlxt(ixt,i,k)
     1787               yxt_w(ixt,j,k) = xt(ixt,i,k)+(1.-wake_s(i))*wake_dlxt(ixt,i,k)
     1788             ENDDO
     1789#endif
    15121790          ENDDO
    15131791        ENDDO
     
    15651843             i = ni(j)
    15661844             yqsol(j) = qsol(i)
     1845#ifdef ISO
     1846             DO ixt=1,niso
     1847               yxtsol(ixt,j) = xtsol(ixt,i)
     1848             ENDDO
     1849#endif
    15671850          ENDDO
    15681851       ENDIF
     
    18592142            Kcoef_hq, gama_q, gama_h, &
    18602143!!!
    1861             AcoefH, AcoefQ, BcoefH, BcoefQ)
     2144            AcoefH, AcoefQ, BcoefH, BcoefQ &
     2145#ifdef ISO
     2146         &   ,yxt, CcoefXT, DcoefXT, gama_xt, AcoefXT, BcoefXT &
     2147#endif               
     2148         &   )
    18622149       ELSE  !(iflag_split .eq.0)
    18632150        CALL climb_hq_down(knon, ycoefh_x, ypaprs, ypplay, &
     
    18672154            Kcoef_hq_x, gama_q_x, gama_h_x, &
    18682155!!!
    1869             AcoefH_x, AcoefQ_x, BcoefH_x, BcoefQ_x)
     2156            AcoefH_x, AcoefQ_x, BcoefH_x, BcoefQ_x &
     2157#ifdef ISO
     2158         &   ,yxt_x, CcoefXT_x, DcoefXT_x, gama_xt_x, AcoefXT_x, BcoefXT_x &
     2159#endif               
     2160         &   )
    18702161!!!
    18712162       IF (prt_level >=10) THEN
     
    18822173            Kcoef_hq_w, gama_q_w, gama_h_w, &
    18832174!!!
    1884             AcoefH_w, AcoefQ_w, BcoefH_w, BcoefQ_w)
     2175            AcoefH_w, AcoefQ_w, BcoefH_w, BcoefQ_w &
     2176#ifdef ISO
     2177         &   ,yxt_w, CcoefXT_w, DcoefXT_w, gama_xt_w, AcoefXT_w, BcoefXT_w &
     2178#endif               
     2179         &   )
    18852180!!!
    18862181       IF (prt_level >=10) THEN
     
    19642259         yt1(:) = yt(:,1)
    19652260         yq1(:) = yq(:,1)
     2261#ifdef ISO
     2262         yxt1(:,:) = yxt(:,:,1)
     2263#endif
     2264
    19662265       ELSE IF (iflag_split .ge. 1) THEN
     2266#ifdef ISO
     2267        call abort_gcm('pbl_surface_mod 2149','isos pas encore dans iflag_split=1',1)
     2268#endif
     2269
    19672270!
    19682271! Cdragq computation
     
    21262429               yqsurf, ytsurf_new, y_dflux_t, y_dflux_q, &
    21272430               y_flux_u1, y_flux_v1, &
    2128                yveget,ylai,yheight )
     2431               yveget,ylai,yheight   &
     2432#ifdef ISO
     2433         &      ,yxtrain_f, yxtsnow_f,yxt1, &
     2434         &      yxtsnow,yxtsol,yxtevap,h1, &
     2435         &      yrunoff_diag,yxtrunoff_diag,yRland_ice &
     2436#endif               
     2437         &      )
    21292438 
    21302439!FC quid qd yveget ylai yheight ne sont pas definit
     
    21562465          ENDDO
    21572466      ENDIF
    2158      
     2467
     2468#ifdef ISOVERIF
     2469        DO j=1,knon
     2470          DO ixt=1,ntraciso
     2471            CALL iso_verif_noNaN(yxtevap(ixt,j), &
     2472         &      'pbl_surface 1056a: apres surf_land')
     2473          ENDDO
     2474          DO ixt=1,niso
     2475            CALL iso_verif_noNaN(yxtsol(ixt,j), &
     2476         &      'pbl_surface 1056b: apres surf_land')
     2477          ENDDO
     2478        ENDDO
     2479#endif
     2480#ifdef ISOVERIF
     2481!        write(*,*) 'pbl_surface_mod 1038: sortie surf_land'
     2482        DO j=1,knon
     2483          IF (iso_eau >= 0) THEN     
     2484                 CALL iso_verif_egalite(yxtsnow(iso_eau,j), &
     2485     &                                  ysnow(j),'pbl_surf_mod 1043')
     2486          ENDIF !if (iso_eau.gt.0) then
     2487        ENDDO !DO i=1,klon
     2488#endif
     2489   
    21592490       CASE(is_lic)
    21602491          ! Martin
     
    21772508                  ysnowhgt, yqsnow, ytoice, ysissnow, &
    21782509                  yalb3_new, yrunoff, &
    2179                   y_flux_u1, y_flux_v1)
     2510                  y_flux_u1, y_flux_v1 &
     2511#ifdef ISO
     2512                  &    ,yxtrain_f, yxtsnow_f,yxt1,yRland_ice &
     2513                  &    ,yxtsnow,yxtsol,yxtevap &
     2514#endif             
     2515                  &    )
    21802516             
    21812517             !jyg<
     
    21992535                ENDDO
    22002536             ENDIF
    2201              
     2537
     2538#ifdef ISOVERIF
     2539             DO j=1,knon
     2540               DO ixt=1,ntraciso
     2541                 CALL iso_verif_noNaN(yxtevap(ixt,j), &
     2542                        &             'pbl_surface 1095a: apres surf_landice')
     2543               ENDDO
     2544                do ixt=1,niso
     2545                   call iso_verif_noNaN(yxtsol(ixt,j), &
     2546                        &      'pbl_surface 1095b: apres surf_landice')
     2547                enddo
     2548             enddo
     2549#endif
     2550#ifdef ISOVERIF
     2551             !write(*,*) 'pbl_surface_mod 1060: sortie surf_landice'
     2552             do j=1,knon
     2553               IF (iso_eau >= 0) THEN     
     2554                 CALL iso_verif_egalite(yxtsnow(iso_eau,j), &
     2555                        &               ysnow(j),'pbl_surf_mod 1064')
     2556               ENDIF !if (iso_eau >= 0) THEN
     2557             ENDDO !DO i=1,klon
     2558#endif
     2559           
    22022560          END IF
    22032561         
     
    22162574               y_flux_u1, y_flux_v1, ydelta_sst(:knon), ydelta_sal(:knon), &
    22172575               yds_ns(:knon), ydt_ns(:knon), ydter(:knon), ydser(:knon), &
    2218                ydt_ds(:knon), ytkt(:knon), ytks(:knon), ytaur(:knon), ysss)
     2576               ydt_ds(:knon), ytkt(:knon), ytks(:knon), ytaur(:knon), ysss &
     2577#ifdef ISO
     2578         &      ,yxtrain_f, yxtsnow_f,yxt1,Roce, &
     2579         &      yxtsnow,yxtevap,h1 &
     2580#endif               
     2581         &      )
    22192582      IF (prt_level >=10) THEN
    22202583          print *,'arg de surf_ocean: ycdragh ',ycdragh(1:knon)
     
    22572620!albedo SB <<<
    22582621               ytsurf_new, y_dflux_t, y_dflux_q, &
    2259                y_flux_u1, y_flux_v1)
     2622               y_flux_u1, y_flux_v1 &
     2623#ifdef ISO
     2624         &      ,yxtrain_f, yxtsnow_f,yxt1,Roce, &
     2625         &      yxtsnow,yxtsol,yxtevap,Rland_ice &
     2626#endif               
     2627         &      )
    22602628         
    22612629! Special DICE MPL 05082013 puis BOMEX MPL 20150410
     
    22652633          y_flux_v1(j)=ycdragm(j)*(1.+sqrt(yu(j,1)*yu(j,1)+yv(j,1)*yv(j,1)))*yv(j,1)*ypplay(j,1)/RD/yt(j,1)
    22662634          ENDDO
    2267       ENDIF
     2635       ENDIF
     2636
     2637#ifdef ISOVERIF
     2638        DO j=1,knon
     2639          DO ixt=1,ntraciso
     2640            CALL iso_verif_noNaN(yxtevap(ixt,j), &
     2641         &                       'pbl_surface 1165a: apres surf_seaice')
     2642          ENDDO
     2643          DO ixt=1,niso
     2644            CALL iso_verif_noNaN(yxtsol(ixt,j), &
     2645         &      'pbl_surface 1165b: apres surf_seaice')
     2646          ENDDO
     2647        ENDDO
     2648#endif
     2649#ifdef ISOVERIF
     2650        !write(*,*) 'pbl_surface_mod 1077: sortie surf_seaice'
     2651        DO j=1,knon
     2652          IF (iso_eau >= 0) THEN     
     2653                 CALL iso_verif_egalite(yxtsnow(iso_eau,j), &
     2654     &                                  ysnow(j),'pbl_surf_mod 1106')
     2655          ENDIF !IF (iso_eau >= 0) THEN
     2656        ENDDO !DO i=1,klon
     2657#endif
    22682658
    22692659       CASE DEFAULT
     
    23352725          y_flux_t1(j) =  yfluxsens(j)
    23362726          y_flux_q1(j) = -yevap(j)
     2727#ifdef ISO
     2728          y_flux_xt1(:,:) = -yxtevap(:,:)
     2729#endif
    23372730          ENDDO
    23382731        ENDIF ! (ok_flux_surf)
     
    23502743
    23512744       IF (iflag_split .GE. 1) THEN
     2745#ifdef ISO
     2746        call abort_gcm('pbl_surface_mod 2607','isos pas encore dans iflag_split=1',1)
     2747#endif
     2748!
    23522749!
    23532750         IF (nsrf .ne. is_oce) THEN
     
    25672964            Kcoef_hq, gama_q, gama_h, &
    25682965!!!
    2569             y_flux_q(:,:), y_flux_t(:,:), y_d_q(:,:), y_d_t(:,:))   
     2966            y_flux_q(:,:), y_flux_t(:,:), y_d_q(:,:), y_d_t(:,:) &
     2967#ifdef ISO
     2968        &    ,yxt,y_flux_xt1 &
     2969        &    ,AcoefXT,BcoefXT,CcoefXT,DcoefXT,gama_xt &
     2970        &    ,y_flux_xt(:,:,:),y_d_xt(:,:,:) &
     2971#endif
     2972        &    )   
    25702973       ELSE  !(iflag_split .eq.0)
    25712974        CALL climb_hq_up(knon, dtime, yt_x, yq_x, &
     
    25762979            Kcoef_hq_x, gama_q_x, gama_h_x, &
    25772980!!!
    2578             y_flux_q_x(:,:), y_flux_t_x(:,:), y_d_q_x(:,:), y_d_t_x(:,:))   
     2981            y_flux_q_x(:,:), y_flux_t_x(:,:), y_d_q_x(:,:), y_d_t_x(:,:) &
     2982#ifdef ISO
     2983        &    ,yxt_x,y_flux_xt1_x &
     2984        &    ,AcoefXT_x,BcoefXT_x,CcoefXT_x,DcoefXT_x,gama_xt_x &
     2985        &    ,y_flux_xt_x(:,:,:),y_d_xt_x(:,:,:) &
     2986#endif
     2987        &    )   
    25792988!
    25802989       CALL climb_hq_up(knon, dtime, yt_w, yq_w, &
     
    25852994            Kcoef_hq_w, gama_q_w, gama_h_w, &
    25862995!!!
    2587             y_flux_q_w(:,:), y_flux_t_w(:,:), y_d_q_w(:,:), y_d_t_w(:,:))   
     2996            y_flux_q_w(:,:), y_flux_t_w(:,:), y_d_q_w(:,:), y_d_t_w(:,:) &
     2997#ifdef ISO
     2998        &    ,yxt_w,y_flux_xt1_w &
     2999        &    ,AcoefXT_w,BcoefXT_w,CcoefXT_w,DcoefXT_w,gama_xt_w &
     3000        &    ,y_flux_xt_w(:,:,:),y_d_xt_w(:,:,:) &
     3001#endif
     3002        &    )   
    25883003!!!
    25893004       ENDIF  ! (iflag_split .eq.0)
     
    27033118             flux_u(i,k,nsrf) = y_flux_u(j,k)
    27043119             flux_v(i,k,nsrf) = y_flux_v(j,k)
     3120
     3121#ifdef ISO
     3122             DO ixt=1,ntraciso
     3123                y_d_xt(ixt,j,k)  = y_d_xt(ixt,j,k) * ypct(j)
     3124                flux_xt(ixt,i,k,nsrf) = y_flux_xt(ixt,j,k)
     3125             ENDDO ! DO ixt=1,ntraciso
     3126             h1_diag(i)=h1(j)
     3127#endif
     3128
    27053129           ENDDO
    27063130        ENDDO
     3131
     3132#ifdef ISO
     3133#ifdef ISOVERIF
     3134        if (iso_eau.gt.0) then
     3135         call iso_verif_egalite_vect2D( &
     3136                y_d_xt,y_d_q, &
     3137                'pbl_surface_mod 2600',ntraciso,klon,klev)
     3138        endif       
     3139#endif
     3140#endif
    27073141
    27083142       ELSE  !(iflag_split .eq.0)
     
    27223156            flux_u_x(i,k,nsrf) = y_flux_u_x(j,k)
    27233157            flux_v_x(i,k,nsrf) = y_flux_v_x(j,k)
     3158
     3159#ifdef ISO
     3160            DO ixt=1,ntraciso
     3161              y_d_xt_x(ixt,j,k)  = y_d_xt_x(ixt,j,k) * ypct(j)
     3162              flux_xt_x(ixt,i,k,nsrf) = y_flux_xt_x(ixt,j,k)
     3163            ENDDO ! DO ixt=1,ntraciso
     3164#endif
    27243165          ENDDO
    27253166        ENDDO
     
    27393180            flux_u_w(i,k,nsrf) = y_flux_u_w(j,k)
    27403181            flux_v_w(i,k,nsrf) = y_flux_v_w(j,k)
     3182
     3183#ifdef ISO
     3184            DO ixt=1,ntraciso
     3185              y_d_xt_w(ixt,j,k)  = y_d_xt_w(ixt,j,k) * ypct(j)
     3186              flux_xt_w(ixt,i,k,nsrf) = y_flux_xt_w(ixt,j,k)
     3187            ENDDO ! do ixt=1,ntraciso
     3188#endif
     3189
    27413190          ENDDO
    27423191        ENDDO
     
    27503199            flux_u(i,k,nsrf) = flux_u_x(i,k,nsrf)+ywake_s(j)*(flux_u_w(i,k,nsrf)-flux_u_x(i,k,nsrf))
    27513200            flux_v(i,k,nsrf) = flux_v_x(i,k,nsrf)+ywake_s(j)*(flux_v_w(i,k,nsrf)-flux_v_x(i,k,nsrf))
     3201#ifdef ISO
     3202            DO ixt=1,ntraciso
     3203              flux_xt(ixt,i,k,nsrf) = flux_xt_x(ixt,i,k,nsrf)+ywake_s(j)*(flux_xt_w(ixt,i,k,nsrf)-flux_xt_x(ixt,i,k,nsrf))
     3204            ENDDO ! do ixt=1,ntraciso
     3205#endif
    27523206          ENDDO
    27533207        ENDDO
     
    28073261          dflux_t(i) = dflux_t(i) + y_dflux_t(j)*ypct(j)
    28083262          dflux_q(i) = dflux_q(i) + y_dflux_q(j)*ypct(j)
     3263#ifdef ISO
     3264        DO ixt=1,niso
     3265          xtsnow(ixt,i,nsrf) = yxtsnow(ixt,j) 
     3266        ENDDO
     3267        DO ixt=1,ntraciso
     3268          xtevap(ixt,i,nsrf) = - flux_xt(ixt,i,1,nsrf)
     3269          dflux_xt(ixt,i) = dflux_xt(ixt,i) + y_dflux_xt(ixt,j)*ypct(j)
     3270        ENDDO 
     3271        IF (nsrf == is_lic) THEN
     3272          DO ixt=1,niso
     3273            Rland_ice(ixt,i) = yRland_ice(ixt,j) 
     3274          ENDDO
     3275        ENDIF !IF (nsrf == is_lic) THEN     
     3276#ifdef ISOVERIF
     3277        IF (iso_eau.gt.0) THEN 
     3278          call iso_verif_egalite_choix(Rland_ice(iso_eau,i),1.0, &
     3279     &         'pbl_surf_mod 1230',errmax,errmaxrel)
     3280        ENDIF !if (iso_eau.gt.0) then
     3281#endif       
     3282#endif
    28093283       ENDDO
    28103284
     
    29113385             i = ni(j)
    29123386             qsol(i) = yqsol(j)
     3387#ifdef ISO
     3388             runoff_diag(i)=yrunoff_diag(j)   
     3389             DO ixt=1,niso
     3390               xtsol(ixt,i) = yxtsol(ixt,j)
     3391               xtrunoff_diag(ixt,i)=yxtrunoff_diag(ixt,j)
     3392             ENDDO
     3393#endif
    29133394          ENDDO
    29143395       ENDIF
     
    29233404          ENDDO
    29243405       ENDDO
    2925        
     3406
     3407#ifdef ISO
     3408#ifdef ISOVERIF
     3409       !write(*,*) 'pbl_surface 2858'
     3410       DO i = 1, klon
     3411         DO ixt=1,niso
     3412           call iso_verif_noNaN(xtsol(ixt,i),'pbl_surface 1405')
     3413         ENDDO
     3414       ENDDO
     3415#endif
     3416#ifdef ISOVERIF
     3417     IF (iso_eau.gt.0) THEN
     3418        call iso_verif_egalite_vect2D( &
     3419                y_d_xt,y_d_q, &
     3420                'pbl_surface_mod 1261',ntraciso,klon,klev)
     3421     ENDIF !if (iso_eau.gt.0) then
     3422#endif
     3423#endif
    29263424!!! jyg le 07/02/2012
    29273425       IF (iflag_split .ge.1) THEN
     
    29423440           d_u_w(i,k) = d_u_w(i,k) + y_d_u_w(j,k)
    29433441           d_v_w(i,k) = d_v_w(i,k) + y_d_v_w(j,k)
     3442#ifdef ISO
     3443           DO ixt=1,ntraciso
     3444             d_xt_x(ixt,i,k) = d_xt_x(ixt,i,k) + y_d_xt_x(ixt,j,k)
     3445             d_xt_w(ixt,i,k) = d_xt_w(ixt,i,k) + y_d_xt_w(ixt,j,k)
     3446           ENDDO ! DO ixt=1,ntraciso
     3447#endif
     3448
    29443449!
    29453450!!           d_wake_dlt(i,k) = d_wake_dlt(i,k) + y_d_t_w(i,k)-y_d_t_x(i,k)
     
    29573462             d_t(i,k) = d_t(i,k) + y_d_t(j,k)
    29583463             d_q(i,k) = d_q(i,k) + y_d_q(j,k)
     3464#ifdef ISO
     3465             DO ixt=1,ntraciso
     3466               d_xt(ixt,i,k) = d_xt(ixt,i,k) + y_d_xt(ixt,j,k)
     3467             ENDDO !DO ixt=1,ntraciso
     3468#endif
    29593469             d_u(i,k) = d_u(i,k) + y_d_u(j,k)
    29603470             d_v(i,k) = d_v(i,k) + y_d_v(j,k)
     
    29713481         ENDDO
    29723482        ENDIF
     3483
     3484#ifdef ISO
     3485#ifdef ISOVERIF
     3486!        write(*,*) 'd_q,d_xt(iso_eau,554,19)=',d_q(554,19),d_xt(iso_eau,554,19)
     3487!        write(*,*) 'pbl_surface 2929: d_q,d_xt(iso_eau,2,1)=',d_q(2,1),d_xt(iso_eau,2,1)
     3488!        write(*,*) 'y_d_q,y_d_xt(iso_eau,2,1)=',y_d_q(2,1),y_d_xt(iso_eau,2,1)
     3489!        write(*,*) 'iso_eau.gt.0=',iso_eau.gt.0
     3490        call iso_verif_noNaN_vect2D( &
     3491     &           d_xt, &
     3492     &           'pbl_surface 1385',ntraciso,klon,klev) 
     3493     IF (iso_eau >= 0) THEN
     3494        call iso_verif_egalite_vect2D( &
     3495                y_d_xt,y_d_q, &
     3496                'pbl_surface_mod 2945',ntraciso,klon,klev)
     3497        call iso_verif_egalite_vect2D( &
     3498                d_xt,d_q, &
     3499                'pbl_surface_mod 1276',ntraciso,klon,klev)
     3500     ENDIF !IF (iso_eau >= 0) THEN
     3501#endif
     3502#endif
    29733503
    29743504!      print*,'Dans pbl OK4'
     
    33583888   iflag_split=iflag_split_ref
    33593889
     3890#ifdef ISO
     3891#ifdef ISOVERIF
     3892!        write(*,*) 'pbl_surface tmp 3249: d_q,d_xt(iso_eau,2,1)=',d_q(2,1),d_xt(iso_eau,2,1)
     3893    IF (iso_eau >= 0) THEN
     3894        call iso_verif_egalite_vect2D( &
     3895                d_xt,d_q, &
     3896                'pbl_surface_mod 1276',ntraciso,klon,klev)
     3897    ENDIF !IF (iso_eau >= 0) THEN
     3898#endif
     3899#endif
     3900
    33603901!****************************************************************************************
    33613902! 16) Calculate the mean value over all sub-surfaces for some variables
     
    33793920    zxfluxt_w(:,:) = 0.0 ; zxfluxq_w(:,:) = 0.0
    33803921    zxfluxu_w(:,:) = 0.0 ; zxfluxv_w(:,:) = 0.0
     3922#ifdef ISO
     3923      zxfluxxt(:,:,:) = 0.0
     3924      zxfluxxt_x(:,:,:) = 0.0
     3925      zxfluxxt_w(:,:,:) = 0.0
     3926#endif
     3927
    33813928
    33823929!!! jyg le 07/02/2012
     
    33973944              zxfluxu_w(i,k) = zxfluxu_w(i,k) + flux_u_w(i,k,nsrf) * pctsrf(i,nsrf)
    33983945              zxfluxv_w(i,k) = zxfluxv_w(i,k) + flux_v_w(i,k,nsrf) * pctsrf(i,nsrf)
     3946#ifdef ISO
     3947              DO ixt=1,ntraciso
     3948                zxfluxxt_x(ixt,i,k) = zxfluxxt_x(ixt,i,k) + flux_xt_x(ixt,i,k,nsrf) * pctsrf(i,nsrf)
     3949                zxfluxxt_w(ixt,i,k) = zxfluxxt_w(ixt,i,k) + flux_xt_w(ixt,i,k,nsrf) * pctsrf(i,nsrf)
     3950              ENDDO ! DO ixt=1,ntraciso
     3951#endif
    33993952            ENDDO
    34003953          ENDDO
     
    34163969             zxfluxu(i,k) = zxfluxu(i,k) + flux_u(i,k,nsrf) * pctsrf(i,nsrf)
    34173970             zxfluxv(i,k) = zxfluxv(i,k) + flux_v(i,k,nsrf) * pctsrf(i,nsrf)
     3971#ifdef ISO
     3972             DO ixt=1,niso
     3973               zxfluxxt(ixt,i,k) = zxfluxxt(ixt,i,k) + flux_xt(ixt,i,k,nsrf) * pctsrf(i,nsrf)
     3974             ENDDO ! DO ixt=1,niso
     3975#endif
    34183976          ENDDO
    34193977       ENDDO
     
    34403998       END DO
    34413999    endif
     4000
     4001#ifdef ISO
     4002    DO i = 1, klon
     4003      DO ixt=1,ntraciso
     4004        zxxtevap(ixt,i)     = - zxfluxxt(ixt,i,1)
     4005      ENDDO
     4006    ENDDO
     4007#endif
    34424008
    34434009!!!
     
    36154181    zxqsurf(:) = 0.0
    36164182    zxsnow(:)  = 0.0
     4183#ifdef ISO
     4184    zxxtsnow(:,:)  = 0.0
     4185#endif
     4186
    36174187    DO nsrf = 1, nbsrf
    36184188       DO i = 1, klon
    36194189          zxqsurf(i) = zxqsurf(i) + MAX(qsurf(i,nsrf),0.0) * pctsrf(i,nsrf)
    36204190          zxsnow(i)  = zxsnow(i)  + snow(i,nsrf)  * pctsrf(i,nsrf)
     4191#ifdef ISO
     4192          DO ixt=1,niso
     4193            zxxtsnow(ixt,i)  = zxxtsnow(ixt,i)  + xtsnow(ixt,i,nsrf)  * pctsrf(i,nsrf)
     4194          ENDDO ! DO ixt=1,niso
     4195#endif
    36214196       ENDDO
    36224197    ENDDO
     
    36304205!****************************************************************************************
    36314206!
    3632   SUBROUTINE pbl_surface_final(fder_rst, snow_rst, qsurf_rst, ftsoil_rst)
     4207  SUBROUTINE pbl_surface_final(fder_rst, snow_rst, qsurf_rst, ftsoil_rst &
     4208#ifdef ISO
     4209       ,xtsnow_rst,Rland_ice_rst &
     4210#endif       
     4211       )
    36334212
    36344213    USE indice_sol_mod
     4214#ifdef ISO
     4215#ifdef ISOVERIF
     4216    USE isotopes_mod, ONLY: iso_eau,ridicule
     4217    USE isotopes_verif_mod, ONLY: errmax,errmaxrel
     4218#endif   
     4219#endif
    36354220
    36364221    INCLUDE "dimsoil.h"
     
    36424227    REAL, DIMENSION(klon, nbsrf), INTENT(OUT)          :: qsurf_rst
    36434228    REAL, DIMENSION(klon, nsoilmx, nbsrf), INTENT(OUT) :: ftsoil_rst
     4229#ifdef ISO
     4230    REAL, DIMENSION(niso,klon, nbsrf), INTENT(OUT)     :: xtsnow_rst
     4231    REAL, DIMENSION(niso,klon), INTENT(OUT)            :: Rland_ice_rst
     4232#endif
    36444233
    36454234 
     
    36524241    qsurf_rst(:,:)    = qsurf(:,:)
    36534242    ftsoil_rst(:,:,:) = ftsoil(:,:,:)
     4243#ifdef ISO
     4244    xtsnow_rst(:,:,:)  = xtsnow(:,:,:)
     4245    Rland_ice_rst(:,:) = Rland_ice(:,:)
     4246#endif
    36544247
    36554248!****************************************************************************************
     
    36644257    IF (ALLOCATED(ydTs0)) DEALLOCATE(ydTs0)
    36654258    IF (ALLOCATED(ydqs0)) DEALLOCATE(ydqs0)
     4259#ifdef ISO
     4260    IF (ALLOCATED(xtsnow)) DEALLOCATE(xtsnow)
     4261    IF (ALLOCATED(Rland_ice)) DEALLOCATE(Rland_ice)
     4262    IF (ALLOCATED(Roce)) DEALLOCATE(Roce)
     4263#endif
    36664264
    36674265!jyg<
     
    36824280  SUBROUTINE pbl_surface_newfrac(itime, pctsrf_new, pctsrf_old, &
    36834281       evap, z0m, z0h, agesno,                                  &
    3684        tsurf,alb_dir,alb_dif, ustar, u10m, v10m, tke) 
     4282       tsurf,alb_dir,alb_dif, ustar, u10m, v10m, tke &
     4283#ifdef ISO
     4284      ,xtevap  &
     4285#endif
     4286&      ) 
    36854287    !albedo SB <<<
    36864288    ! Give default values where new fraction has appread
     
    37114313    REAL, DIMENSION(klon,nbsrf+1), INTENT(INOUT)        :: z0m,z0h
    37124314    REAL, DIMENSION(klon,klev+1,nbsrf+1), INTENT(INOUT) :: tke
     4315#ifdef ISO
     4316    REAL, DIMENSION(ntraciso,klon,nbsrf), INTENT(INOUT)        :: xtevap
     4317#endif
    37134318
    37144319! Local variables
     
    37184323    CHARACTER(len=20) :: modname = 'pbl_surface_newfrac'
    37194324    INTEGER, DIMENSION(nbsrf) :: nfois=0, mfois=0, pfois=0
     4325#ifdef ISO
     4326    INTEGER           :: ixt
     4327#endif
    37204328!
    37214329! All at once !!
     
    37634371                u10m(i,nsrf)  = u10m(i,nsrf_comp1)
    37644372                v10m(i,nsrf)  = v10m(i,nsrf_comp1)
     4373#ifdef ISO
     4374                DO ixt=1,ntraciso
     4375                  xtevap(ixt,i,nsrf) = xtevap(ixt,i,nsrf_comp1)       
     4376                ENDDO       
     4377#endif
    37654378                IF (iflag_pbl > 1) THEN
    37664379                 tke(i,:,nsrf) = tke(i,:,nsrf_comp1)
     
    38184431                u10m(i,nsrf)  = u10m(i,nsrf_comp2) *pctsrf_old(i,nsrf_comp2) + u10m(i,nsrf_comp3) *pctsrf_old(i,nsrf_comp3)
    38194432                v10m(i,nsrf)  = v10m(i,nsrf_comp2) *pctsrf_old(i,nsrf_comp2) + v10m(i,nsrf_comp3) *pctsrf_old(i,nsrf_comp3)
     4433#ifdef ISO
     4434                DO ixt=1,ntraciso
     4435                  xtevap(ixt,i,nsrf) = xtevap(ixt,i,nsrf_comp2) *pctsrf_old(i,nsrf_comp2) &
     4436                                     + xtevap(ixt,i,nsrf_comp3) *pctsrf_old(i,nsrf_comp3)
     4437                ENDDO       
     4438#endif
    38204439                IF (iflag_pbl > 1) THEN
    38214440                 tke(i,:,nsrf) = tke(i,:,nsrf_comp2)*pctsrf_old(i,nsrf_comp2) + tke(i,:,nsrf_comp3)*pctsrf_old(i,nsrf_comp3)
     
    38304449             agesno(i,nsrf)   = 0.
    38314450             ftsoil(i,:,nsrf) = tsurf(i,nsrf)
     4451#ifdef ISO           
     4452             xtsnow(:,i,nsrf) = 0.
     4453#endif
    38324454          ELSE
    38334455             pfois(nsrf) = pfois(nsrf)+ 1
Note: See TracChangeset for help on using the changeset viewer.