Changeset 5927 for LMDZ6/trunk/libf


Ignore:
Timestamp:
Dec 12, 2025, 5:26:10 PM (6 weeks ago)
Author:
Sebastien Nguyen
Message:

Changes to compile LMDZ-OR-ISO and wrtie output variables Rsol isotopes soil ratio) xtevap xtcoastal xtrivflu. Changes from CA and ND to write output variables xtprw (precipitatble water) uxt and vxt (meridional and zonal advected humidity) Rlandice and xtsnow.

Location:
LMDZ6/trunk/libf
Files:
23 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/dyn3dmem/dynetat0_loc.f90

    r5748 r5927  
    2727
    2828  USE dimensions_mod, ONLY: iim, jjm, llm, ndm
    29 USE paramet_mod_h
    30 IMPLICIT NONE
    31 
    32 
    33   !===============================================================================
     29  USE paramet_mod_h
     30
     31  IMPLICIT NONE
     32
     33
     34!===============================================================================
    3435! Arguments:
    3536  CHARACTER(LEN=*), INTENT(IN) :: fichnom          !--- FILE NAME
     
    188189            tnat = 1.0
    189190            alpha_ideal = 1.0
    190             CALL msg(' !!!  Beware: alpha_ideal put to 1  !!!', modname)
     191            CALL msg(' !!!  Beware: tnat and alpha_ideal put to 1  !!!', modname)
    191192         ELSE
    192193            SELECT CASE(isoName(iName))
  • LMDZ6/trunk/libf/dynphy_lonlat/calfis.f90

    r5481 r5927  
    44!
    55!
    6 SUBROUTINE calfis(lafin, &
    7         jD_cur, jH_cur, &
    8         pucov, &
    9         pvcov, &
    10         pteta, &
    11         pq, &
    12         pmasse, &
    13         pps, &
    14         pp, &
    15         ppk, &
    16         pphis, &
    17         pphi, &
    18         pducov, &
    19         pdvcov, &
    20         pdteta, &
    21         pdq, &
    22         flxw, &
    23         pdufi, &
    24         pdvfi, &
    25         pdhfi, &
    26         pdqfi, &
    27         pdpsfi)
     6SUBROUTINE calfis(lafin,          &
     7                  jD_cur, jH_cur, &
     8                  pucov,          &
     9                  pvcov,          &
     10                  pteta,          &
     11                  pq,            &
     12                  pmasse,        &
     13                  pps,            &
     14                  pp,            &
     15                  ppk,            &
     16                  pphis,          &
     17                  pphi,          &
     18                  pducov,        &
     19                  pdvcov,        &
     20                  pdteta,        &
     21                  pdq,            &
     22                  flxw,          &
     23                  pdufi,          &
     24                  pdvfi,          &
     25                  pdhfi,          &
     26                  pdqfi,          &
     27                  pdpsfi)
    2828  !
    2929  !    Auteur :  P. Le Van, F. Hourdin
     
    177177    debut = .TRUE.
    178178    IF (ngridmx.NE.2+(jjm-1)*iim) THEN
    179      write(lunout,*) 'STOP dans calfis'
    180      write(lunout,*) &
     179      write(lunout,*) 'STOP dans calfis'
     180      write(lunout,*) &
    181181           'La dimension ngridmx doit etre egale a 2 + (jjm-1)*iim'
    182      write(lunout,*) '  ngridmx  jjm   iim   '
    183      write(lunout,*) ngridmx,jjm,iim
    184      call abort_gcm("calfis", "", 1)
     182      write(lunout,*) '  ngridmx  jjm   iim   '
     183      write(lunout,*) ngridmx,jjm,iim
     184      call abort_gcm("calfis", "", 1)
    185185    ENDIF
    186186  ELSE
     
    368368    do i=1,iim
    369369      do j=1,jjm
    370         zrot(i,j,l) = (pvcov(i+1,j,l) - pvcov(i,j,l) &
    371               + pucov(i,j+1,l) - pucov(i,j,l)) &
    372               / (cu(i,j)+cu(i,j+1)) &
    373               / (cv(i+1,j)+cv(i,j)) *4
     370        zrot(i,j,l) = (pvcov(i+1,j,l) - pvcov(i,j,l)  &
     371                     + pucov(i,j+1,l) - pucov(i,j,l)) &
     372                     / (cu(i,j)+cu(i,j+1)) &
     373                     / (cv(i+1,j)+cv(i,j)) *4
    374374      enddo
    375375    enddo
     
    481481   ! if (planet_type=="earth") then
    482482    CALL call_physiq(ngridmx,llm,nqtot,tracers(:)%name, &
    483           debut_split,lafin_split, &
    484           jD_cur,jH_cur_split,zdt_split, &
    485           zplev,zplay, &
    486           zpk,zphi,zphis, &
    487           presnivs, &
    488           zufi,zvfi,zrfi,ztfi,zqfi, &
    489           flxwfi,pducov, &
    490           zdufi,zdvfi,zdtfi,zdqfi,zdpsrf)
     483                     debut_split,lafin_split, &
     484                     jD_cur,jH_cur_split,zdt_split, &
     485                     zplev,zplay, &
     486                     zpk,zphi,zphis, &
     487                     presnivs, &
     488                     zufi,zvfi,zrfi,ztfi,zqfi, &
     489                     flxwfi,pducov, &
     490                     zdufi,zdvfi,zdtfi,zdqfi,zdpsrf)
    491491  !
    492492  !  else if ( planet_type=="generic" ) then
     
    539539
    540540
    541 500   CONTINUE
     541!!SN 500   CONTINUE !not used
    542542
    543543  !-----------------------------------------------------------------------
     
    678678  !-----------------------------------------------------------------------
    679679
    680 700   CONTINUE
     680!! SN 700   CONTINUE !not used
    681681
    682682  firstcal = .FALSE.
  • LMDZ6/trunk/libf/dynphy_lonlat/calfis_loc.F90

    r5481 r5927  
    5454  USE dimensions_mod, ONLY: iim, jjm, llm, ndm
    5555  USE paramet_mod_h
     56
    5657  IMPLICIT NONE
     58
    5759  !=======================================================================
    5860  !
     
    184186  ! Introduction du splitting (FH)
    185187  ! Question pour Yann :
    186   ! J'ai �t� surpris au d�but que les tableaux zufi_omp, zdufi_omp n'co soitent
    187   ! en SAVE. Je crois comprendre que c'est parce que tu voulais qu'il
    188   ! soit allocatable (plutot par exemple que de passer une dimension
    189   ! dpendant du process en argument des routines) et que, du coup,
    190   ! le SAVE �vite d'avoir � refaire l'allocation � chaque appel.
     188  ! J'ai ete surpris au debut que les tableaux zufi_omp, zdufi_omp n'co soient
     189  ! en SAVE. Je crois comprendre que c'est parce que tu voulais qu'ils
     190  ! soient allocatable (plutot par exemple que de passer une dimension
     191  ! dependant du process en argument des routines) et que, du coup,
     192  ! le SAVE evite d'avoir a refaire l'allocation a chaque appel.
    191193  ! Tu confirmes ?
    192   ! J'ai suivi le mme principe pour les zdufic_omp
     194  ! J'ai suivi le meme principe pour les zdufic_omp
    193195  ! Mais c'est surement bien que tu controles.
    194196  !
     
    253255    ENDIF
    254256!$OMP MASTER
    255   ALLOCATE(zpsrf(klon))
    256   ALLOCATE(zplev(klon,llm+1),zplay(klon,llm))
    257   ALLOCATE(zphi(klon,llm),zphis(klon))
    258   ALLOCATE(zufi(klon,llm), zvfi(klon,llm),zrfi(klon,llm))
    259   ALLOCATE(ztfi(klon,llm),zqfi(klon,llm,nqtot))
    260   ALLOCATE(pcvgu(klon,llm), pcvgv(klon,llm))
    261   ALLOCATE(pcvgt(klon,llm), pcvgq(klon,llm,2))
    262   ALLOCATE(zdufi(klon,llm),zdvfi(klon,llm))
    263   ALLOCATE(zdtfi(klon,llm),zdqfi(klon,llm,nqtot))
    264   ALLOCATE(zdpsrf(klon))
    265   ALLOCATE(zdufi2(klon+iim,llm),zdvfi2(klon+iim,llm))
    266   ALLOCATE(flxwfi(klon,llm))
    267   ALLOCATE(zpk(klon,llm))
     257    ALLOCATE(zpsrf(klon))
     258    ALLOCATE(zplev(klon,llm+1),zplay(klon,llm))
     259    ALLOCATE(zphi(klon,llm),zphis(klon))
     260    ALLOCATE(zufi(klon,llm), zvfi(klon,llm),zrfi(klon,llm))
     261    ALLOCATE(ztfi(klon,llm),zqfi(klon,llm,nqtot))
     262    ALLOCATE(pcvgu(klon,llm), pcvgv(klon,llm))
     263    ALLOCATE(pcvgt(klon,llm), pcvgq(klon,llm,2))
     264    ALLOCATE(zdufi(klon,llm),zdvfi(klon,llm))
     265    ALLOCATE(zdtfi(klon,llm),zdqfi(klon,llm,nqtot))
     266    ALLOCATE(zdpsrf(klon))
     267    ALLOCATE(zdufi2(klon+iim,llm),zdvfi2(klon+iim,llm))
     268    ALLOCATE(flxwfi(klon,llm))
     269    ALLOCATE(zpk(klon,llm))
    268270!$OMP END MASTER
    269271!$OMP BARRIER
    270272  ELSE
    271       debut = .FALSE.
     273    debut = .FALSE.
    272274  ENDIF
    273275
     
    282284
    283285!$OMP MASTER
    284   call start_timer(timer_physic)
     286  CALL start_timer(timer_physic)
    285287!$OMP END MASTER
    286288
     
    288290  !CDIR ON_ADB(index_i)
    289291  !CDIR ON_ADB(index_j)
    290   do ig0=1,klon
     292  DO ig0=1,klon
    291293    i=index_i(ig0)
    292294    j=index_j(ig0)
    293295    zpsrf(ig0)=pps(i,j)
    294   enddo
     296  ENDDO
    295297!$OMP END MASTER
    296298
     
    312314  !CDIR ON_ADB(index_i)
    313315  !CDIR ON_ADB(index_j)
    314     do ig0=1,klon
     316    DO ig0=1,klon
    315317      i=index_i(ig0)
    316318      j=index_j(ig0)
    317319      zplev( ig0,l ) = pp(i,j,l)
    318     enddo
     320    ENDDO
    319321  ENDDO
    320322!$OMP END DO NOWAIT
     
    322324!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    323325  DO l=1,llm
    324     do ig0=1,klon
     326    DO ig0=1,klon
    325327      i=index_i(ig0)
    326328      j=index_j(ig0)
    327329      zpk(ig0,l)=ppk(i,j,l)
    328     enddo
     330    ENDDO
    329331  ENDDO
    330332!$OMP END DO NOWAIT
     
    339341  !CDIR ON_ADB(index_i)
    340342  !CDIR ON_ADB(index_j)
    341     do ig0=1,klon
     343    DO ig0=1,klon
    342344      i=index_i(ig0)
    343345      j=index_j(ig0)
     
    345347      zplay(ig0,l)   = preff * pksurcp ** unskap
    346348      ztfi(ig0,l)    = pteta(i,j,l)  * pksurcp
    347     enddo
     349    ENDDO
    348350
    349351  ENDDO
     
    362364  !CDIR ON_ADB(index_i)
    363365  !CDIR ON_ADB(index_j)
    364        do ig0=1,klon
     366       DO ig0=1,klon
    365367         i=index_i(ig0)
    366368         j=index_j(ig0)
    367369         zqfi(ig0,l,itr)  = pq(i,j,l,iq)
    368        enddo
     370       ENDDO
    369371     ENDDO
    370372!$OMP END DO NOWAIT
     
    376378
    377379!$OMP DO SCHEDULE(STATIC,OMP_CHUNK)
    378      DO l=1,llm
    379   !CDIR ON_ADB(index_i)
    380   !CDIR ON_ADB(index_j)
    381        do ig0=1,klon
    382          i=index_i(ig0)
    383          j=index_j(ig0)
    384          zphi(ig0,l)  = pphi(i,j,l)
    385        enddo
     380  DO l=1,llm
     381  !CDIR ON_ADB(index_i)
     382  !CDIR ON_ADB(index_j)
     383     DO ig0=1,klon
     384       i=index_i(ig0)
     385       j=index_j(ig0)
     386       zphi(ig0,l)  = pphi(i,j,l)
    386387     ENDDO
     388  ENDDO
    387389!$OMP END DO NOWAIT
    388390
     
    392394  !CDIR ON_ADB(index_i)
    393395  !CDIR ON_ADB(index_j)
    394        do ig0=1,klon
    395          i=index_i(ig0)
    396          j=index_j(ig0)
    397          zphis(ig0)  = pphis(i,j)
    398        enddo
     396  DO ig0=1,klon
     397    i=index_i(ig0)
     398    j=index_j(ig0)
     399    zphis(ig0)  = pphis(i,j)
     400  ENDDO
    399401!$OMP END MASTER
    400402
     
    458460      do j=jjb,jje
    459461        zrot(i,j,l) = (pvcov(i+1,j,l) - pvcov(i,j,l) &
    460               + pucov(i,j+1,l) - pucov(i,j,l)) &
    461               / (cu(i,j)+cu(i,j+1)) &
    462               / (cv(i+1,j)+cv(i,j)) *4
     462                     + pucov(i,j+1,l) - pucov(i,j,l)) &
     463                     / (cu(i,j)+cu(i,j+1)) &
     464                     / (cv(i+1,j)+cv(i,j)) *4
    463465      enddo
    464466    enddo
     
    477479      j=index_j(ig0)
    478480      zvfi(ig0,l)= 0.5 *(  pvcov(i,j-1,l)/cv(i,j-1) &
    479             + pvcov(i,j,l)/cv(i,j) )
     481                         + pvcov(i,j,l)/cv(i,j) )
    480482      if (j==1 .OR. j==jjp1) then !  AdlC MAY 2014
    481483        zrfi(ig0,l) = 0 !  AdlC MAY 2014
     
    483485        if(i==1)then
    484486        zrfi(ig0,l)= 0.25 *(zrot(iim,j-1,l)+zrot(iim,j,l) &
    485               +zrot(1,j-1,l)+zrot(1,j,l))   !  AdlC MAY 2014
     487                     +zrot(1,j-1,l)+zrot(1,j,l))   !  AdlC MAY 2014
    486488        else
    487489        zrfi(ig0,l)= 0.25 *(zrot(i-1,j-1,l)+zrot(i-1,j,l) &
    488               +zrot(i,j-1,l)+zrot(i,j,l))   !  AdlC MAY 2014
     490                     +zrot(i,j-1,l)+zrot(i,j,l))   !  AdlC MAY 2014
    489491        endif
    490492      endif
     
    722724
    723725    CALL call_physiq(klon,llm,nqtot,tracers(:)%name, &
    724           debut_split,lafin_split, &
    725           jD_cur,jH_cur_split,zdt_split, &
    726           zplev_omp,zplay_omp, &
    727           zpk_omp,zphi_omp,zphis_omp, &
    728           presnivs_omp, &
    729           zufi_omp,zvfi_omp,zrfi_omp,ztfi_omp,zqfi_omp, &
    730           flxwfi_omp,pducov, &
    731           zdufi_omp,zdvfi_omp,zdtfi_omp,zdqfi_omp, &
    732           zdpsrf_omp)
     726                     debut_split,lafin_split, &
     727                     jD_cur,jH_cur_split,zdt_split, &
     728                     zplev_omp,zplay_omp, &
     729                     zpk_omp,zphi_omp,zphis_omp, &
     730                     presnivs_omp, &
     731                     zufi_omp,zvfi_omp,zrfi_omp,ztfi_omp,zqfi_omp, &
     732                     flxwfi_omp,pducov, &
     733                     zdufi_omp,zdvfi_omp,zdtfi_omp,zdqfi_omp, &
     734                     zdpsrf_omp)
    733735
    734736
     
    842844
    843845  klon=klon_mpi
    844 500   CONTINUE
     846
     847!!SN 500   CONTINUE !not used
     848
    845849!$OMP BARRIER
    846850
     
    11051109
    11061110       if (i==1) then
    1107           pdufi(iim,j,l)=0.5*(  zdufi2(ig0,l) &
    1108                 + zdufi2(ig0+iim-1,l))*cu(iim,j)
     1111         pdufi(iim,j,l)=0.5*(  zdufi2(ig0,l) &
     1112                             + zdufi2(ig0+iim-1,l))*cu(iim,j)
    11091113         pdufi(iip1,j,l)=0.5*(zdufi2(ig0,l)+zdufi2(ig0+1,l))*cu(i,j)
    11101114       endif
     
    11451149       j=index_j(ig0)
    11461150       pdvfi(i,j,l)=0.5*(zdvfi2(ig0,l)+zdvfi2(ig0+iim,l))*cv(i,j)
    1147        if (i==1) pdvfi(iip1,j,l) = 0.5*(zdvfi2(ig0,l)+ &
    1148              zdvfi2(ig0+iim,l)) &
    1149              *cv(i,j)
     1151       if (i==1) pdvfi(iip1,j,l) = 0.5*(zdvfi2(ig0,l) &
     1152                                        + zdvfi2(ig0+iim,l))*cv(i,j)
    11501153    enddo
    11511154
     
    11851188       DO i=1,iim
    11861189          pdvfi(i,jjm,l)=zdufi(klon,l)*COS(rlonv(i)) &
    1187                 +zdvfi(klon,l)*SIN(rlonv(i))
     1190                        +zdvfi(klon,l)*SIN(rlonv(i))
    11881191
    11891192          pdvfi(i,jjm,l)= &
     
    11991202  !-----------------------------------------------------------------------
    12001203
    1201 700   CONTINUE
     1204!!SN 700   CONTINUE !not used
    12021205
    12031206  firstcal = .FALSE.
  • LMDZ6/trunk/libf/dynphy_lonlat/phylmd/iniphysiq_mod.F90

    r5786 r5927  
    4646  USE lmdz_cppkeys_wrapper, ONLY: CPPKEY_INCA, CPPKEY_REPROBUS
    4747  USE dimensions_mod, ONLY: iim, jjm, llm, ndm
    48 USE paramet_mod_h
    49 IMPLICIT NONE
     48  USE paramet_mod_h
     49
     50  IMPLICIT NONE
    5051
    5152  ! =======================================================================
  • LMDZ6/trunk/libf/phylmd/infotrac_phy.F90

    r5777 r5927  
    252252!==============================================================================================================================
    253253   nqtrue = SIZE(tracers)                                                                               !--- "true" tracers
    254    nqo    =      COUNT(tracers(:)%component == 'lmdz' .AND. delPhase(tracers(:)%name)     == 'H2O')     !-- Water phases
     254   nqo    =      COUNT(tracers(:)%component == 'lmdz' .AND. delPhase(tracers(:)%name)     == 'H2O')     !--- Water phases
    255255   nqtke  =      COUNT(tracers(:)%component == 'lmdz' .AND. tracers(:)%name               == 'TKE')     !--- TKE tracers
    256256   nbtr = nqtrue-COUNT(tracers(:)%component == 'lmdz' .AND. delPhase(tracers(:)%gen0Name) == 'H2O')     !--- Passed to phytrac
     
    322322   CALL MOVE_ALLOC(FROM=ttr, TO=tracers)
    323323
    324    !--- SET FIELDS iqParent, iqDescen, nqDescen, nqChildren
     324   !--- SET FIELDS iqParent, iqDescen, nqDescen, nqChildren, iGeneration
    325325   IF(indexUpdate(tracers)) CALL abort_physic(modname, 'problem with tracers indices update', 1)
    326326
    327327   !=== DETERMINE ISOTOPES RELATED PARAMETERS ; DEFINE THE EXPLICIT KEYS iso_i*
    328328   IF(processIsotopes()) CALL abort_physic(modname, 'Problem when processing isotopes parameters', 1)
     329   !!SN do we really need to call isoSelect('H2O',.TRUE.) in processIsotopes and here ?
    329330   iH2O = -1
    330331   IF(nbIso /= 0) THEN
     
    415416      CALL msg('  isoPhas = '//TRIM(isoPhas),     modname)
    416417   END DO
     418   !!SN do we need to call isoSelect(iH2O, .TRUE.) three times ?
    417419   IF(isoSelect(iH2O, .TRUE.)) lerr = isoSelect(1, .TRUE.)
    418420
  • LMDZ6/trunk/libf/phylmd/pbl_surface_mod.F90

    r5894 r5927  
    3434  USE config_ocean_skin_m, ONLY : activate_ocean_skin
    3535#ifdef ISO
    36   USE infotrac_phy, ONLY: niso,ntraciso=>ntiso   
     36  USE infotrac_phy, ONLY: niso,ntraciso=>ntiso
     37  USE phys_local_var_mod, ONLY: Rsol !! SN soil isotope ratio for LMDZORISO
    3738#endif
    3839
     
    6162
    6263#ifdef ISO
    63   REAL, ALLOCATABLE, DIMENSION(:,:,:), PRIVATE, SAVE   :: xtsnow   ! snow at surface
     64  REAL, ALLOCATABLE, DIMENSION(:,:,:), SAVE   :: xtsnow   ! snow at surface
    6465  !$OMP THREADPRIVATE(xtsnow)
    65   REAL, ALLOCATABLE, DIMENSION(:,:), PRIVATE, SAVE   :: Rland_ice   ! snow at surface
     66  REAL, ALLOCATABLE, DIMENSION(:,:), SAVE   :: Rland_ice  ! ice bucket bellow snowpack
    6667  !$OMP THREADPRIVATE(Rland_ice) 
    67   REAL, ALLOCATABLE, DIMENSION(:,:), PRIVATE, SAVE   :: Roce   ! snow at surface
     68  REAL, ALLOCATABLE, DIMENSION(:,:), PRIVATE, SAVE   :: Roce
    6869  !$OMP THREADPRIVATE(Roce) 
    6970#endif
     
    9192!GG
    9293!  SUBROUTINE pbl_surface_init(fder_rst, snow_rst, qsurf_rst, ftsoil_rst)
    93   SUBROUTINE pbl_surface_init(fder_rst, snow_rst, qsurf_rst, ftsoil_rst, hice_rst,tice_rst,bilg_cumul_rst)
     94  SUBROUTINE pbl_surface_init(fder_rst, snow_rst, qsurf_rst, ftsoil_rst, hice_rst, tice_rst, bilg_cumul_rst)
    9495!GG
    9596
     
    234235
    235236#ifdef ISO
    236   SUBROUTINE pbl_surface_init_iso(xtsnow_rst,Rland_ice_rst)
     237  SUBROUTINE pbl_surface_init_iso(xtsnow_rst,Rland_ice_rst,Rsol_rst)
    237238
    238239! This routine should be called after the restart file has been read.
     
    251252! Input variables
    252253!****************************************************************************************
    253     REAL, DIMENSION(niso,klon, nbsrf), INTENT(IN)          :: xtsnow_rst
    254     REAL, DIMENSION(niso,klon), INTENT(IN)          :: Rland_ice_rst
     254    REAL, DIMENSION(niso,klon, nbsrf), INTENT(IN)   :: xtsnow_rst
     255    REAL, DIMENSION(niso,klon), INTENT(IN)          :: Rland_ice_rst, Rsol_rst
    255256 
    256257! Local variables
     
    259260    CHARACTER(len=80)             :: abort_message
    260261    CHARACTER(len = 20)           :: modname = 'pbl_surface_init'
    261     integer i,ixt
     262    INTEGER                       :: i,ixt
    262263   
    263264!****************************************************************************************
     
    277278    xtsnow(:,:,:)  = xtsnow_rst(:,:,:)
    278279    Rland_ice(:,:) = Rland_ice_rst(:,:)
     280    Rsol(:,:)      = Rsol_rst(:,:)
    279281    Roce(:,:)      = 0.0
    280282
     
    283285         CALL iso_verif_egalite_vect2D( &
    284286     &           xtsnow,snow, &
    285      &           'pbl_surface_mod 170',niso,klon,nbsrf)
     287     &           'pbl_surface_mod 286',niso,klon,nbsrf)
    286288         DO i=1,klon 
    287289            IF (iso_eau >= 0) THEN 
    288290              CALL iso_verif_egalite(Rland_ice(iso_eau,i),1.0, &
    289      &         'pbl_surf_mod 177')
     291     &         'pbl_surf_mod 290')
     292              CALL iso_verif_egalite(Rsol(iso_eau,i),1.0, &
     293     &         'pbl_surf_mod 292')
    290294            ENDIF
    291295         ENDDO
     
    371375!!!
    372376#ifdef ISO
    373      &   ,xtrain_f, xtsnow_f,xt, &
     377     &   ,xtrain_f,xtsnow_f,xt, &
    374378     &   wake_dlxt,zxxtevap,xtevap, &
    375379     &   d_xt,d_xt_w,d_xt_x, &
    376380     &   xtsol,dflux_xt,zxxtsnow,zxfluxxt,flux_xt, &
    377      &   h1_diag,runoff_diag,xtrunoff_diag &
     381     &   h1_diag,runoff_diag,xtrunoff_diag, &
     382     &   xtriverflow,xtcoastalflow &
    378383#endif     
    379384     &   )
     
    458463    USE carbon_cycle_mod,   ONLY : carbon_cycle_cpl, carbon_cycle_tr, level_coupling_esm
    459464    USE carbon_cycle_mod,   ONLY : co2_send, nbcf_out, fields_out, yfields_out, cfname_out
    460     use hbtm_mod, only: hbtm
     465    USE hbtm_mod,           ONLY : hbtm
    461466    USE indice_sol_mod
    462467    USE time_phylmdz_mod,   ONLY : day_ini,annee_ref,itau_phy
     
    464469    USE print_control_mod,  ONLY : prt_level,lunout
    465470#ifdef ISO
    466   USE isotopes_mod, ONLY: Rdefault,iso_eau
     471    USE isotopes_mod, ONLY: Rdefault,iso_eau
    467472#ifdef ISOVERIF
    468         USE isotopes_verif_mod
     473    USE isotopes_verif_mod
    469474#endif
    470475#ifdef ISOTRAC
    471         USE isotrac_mod, only: index_iso
    472 #endif
    473 #endif
    474 USE dimpft_mod_h
     476    USE isotrac_mod, ONLY: index_iso
     477#endif
     478#endif
     479    USE dimpft_mod_h
    475480    USE flux_arp_mod_h
    476481    USE compbl_mod_h
    477482    USE yoethf_mod_h
    478         USE clesphys_mod_h
     483    USE clesphys_mod_h
    479484    USE ioipsl_getin_p_mod, ONLY : getin_p
    480     use phys_state_var_mod, only: ds_ns, dt_ns, delta_sst, delta_sal, dter, &
     485    USE phys_state_var_mod, ONLY : ds_ns, dt_ns, delta_sst, delta_sal, dter, &
    481486         dser, dt_ds, zsig, zmea, &
    482487         frac_tersrf, z0m_tersrf, ratio_z0m_z0h_tersrf, albedo_tersrf !AM
    483     use phys_output_var_mod, only: tkt, tks, taur, sss
    484     use lmdz_blowing_snow_ini, only : zeta_bs
    485     use wxios_mod, ONLY: missing_val_xios => missing_val, using_xios
    486     USE netcdf, only: missing_val_netcdf => nf90_fill_real
    487     USE dimsoil_mod_h, ONLY: nsoilmx
    488     USE surf_param_mod, ONLY: eff_surf_param  !AM
     488    USE phys_output_var_mod, ONLY : tkt, tks, taur, sss
     489    USE lmdz_blowing_snow_ini, ONLY : zeta_bs
     490    USE wxios_mod, ONLY : missing_val_xios => missing_val, using_xios
     491    USE netcdf, ONLY : missing_val_netcdf => nf90_fill_real
     492    USE dimsoil_mod_h, ONLY : nsoilmx
     493    USE surf_param_mod, ONLY : eff_surf_param  !AM
    489494
    490495    USE yomcst_mod_h
    491 IMPLICIT NONE
     496
     497    IMPLICIT NONE
    492498
    493499    INCLUDE "FCTTRE.h"
     
    619625#ifdef ISO
    620626    REAL, DIMENSION(ntraciso,klon),        INTENT(OUT)       :: zxxtevap     ! water vapour flux at surface, positiv upwards
    621     REAL, DIMENSION(ntraciso,klon, klev),  INTENT(OUT)       :: d_xt        ! change in water vapour
     627    REAL, DIMENSION(ntraciso,klon, klev),  INTENT(OUT)       :: d_xt         ! change in water vapour
    622628    REAL, DIMENSION(klon),                 INTENT(OUT)       :: runoff_diag
    623629    REAL, DIMENSION(niso,klon),            INTENT(OUT)       :: xtrunoff_diag
     630    REAL, DIMENSION(niso,klon),            INTENT(OUT)       :: xtriverflow   ! PRSN LMDZORISO variables
     631    REAL, DIMENSION(niso,klon),            INTENT(OUT)       :: xtcoastalflow ! PRSN Fin
    624632    REAL, DIMENSION(ntraciso,klon,klev),   INTENT(OUT)       :: d_xt_w
    625633    REAL, DIMENSION(ntraciso,klon,klev),   INTENT(OUT)       :: d_xt_x
     
    794802    REAL, DIMENSION(niso,klon)         :: yxtrunoff_diag
    795803    REAL, DIMENSION(niso,klon)         :: yRland_ice   
     804    REAL, DIMENSION(niso,klon)         :: yxtriverflow
     805    REAL, DIMENSION(niso,klon)         :: yxtcoastalflow
     806    REAL, DIMENSION(niso,klon)         :: yRsol
    796807#endif
    797808    REAL, DIMENSION(klon)              :: ysolsw, ysollw
     
    804815    REAL, DIMENSION(klon)              :: y_dflux_t, y_dflux_q
    805816#ifdef ISO
    806     REAL, DIMENSION(ntraciso,klon)     ::  y_flux_xt1
    807     REAL, DIMENSION(ntraciso,klon)     ::  y_dflux_xt
     817    REAL, DIMENSION(ntraciso,klon)     :: y_flux_xt1
     818    REAL, DIMENSION(ntraciso,klon)     :: y_dflux_xt
    808819#endif
    809820    REAL, DIMENSION(klon)              :: y_flux_u1, y_flux_v1
     
    11971208      DO i=1,klon
    11981209        DO ixt=1,niso
    1199           CALL iso_verif_noNaN(xtsol(ixt,i),'pbl_surface 608')
     1210          CALL iso_verif_noNaN(xtsol(ixt,i),'pbl_surface 1209')
    12001211        ENDDO
    12011212      ENDDO
     
    12051216        IF (iso_eau >= 0) THEN 
    12061217          CALL iso_verif_egalite_choix(Rland_ice(iso_eau,i),1.0, &
    1207      &         'pbl_surf_mod 585',errmax,errmaxrel)
     1218     &         'pbl_surf_mod 1216',errmax,errmaxrel)
    12081219          CALL iso_verif_egalite_choix(xtsnow_f(iso_eau,i),snow_f(i), &
    1209      &         'pbl_surf_mod 594',errmax,errmaxrel)
     1220     &         'pbl_surf_mod 1218',errmax,errmaxrel)
    12101221          IF (iso_verif_egalite_choix_nostop(xtsol(iso_eau,i),qsol(i), &
    1211      &         'pbl_surf_mod 596',errmax,errmaxrel) == 1) THEN
     1222     &         'pbl_surf_mod 1220',errmax,errmaxrel) == 1) THEN
    12121223                WRITE(*,*) 'i=',i
    12131224                STOP
     
    12151226          DO nsrf=1,nbsrf
    12161227            CALL iso_verif_egalite_choix(xtsnow(iso_eau,i,nsrf),snow(i,nsrf), &
    1217      &         'pbl_surf_mod 598',errmax,errmaxrel)
     1228     &         'pbl_surf_mod 1226',errmax,errmaxrel)
    12181229          ENDDO
    12191230        ENDIF !IF (iso_eau >= 0) THEN   
     
    12231234          IF (iso_eau >= 0) THEN 
    12241235            CALL iso_verif_egalite_choix(xt(iso_eau,i,k),q(i,k), &
    1225      &           'pbl_surf_mod 595',errmax,errmaxrel)
     1236     &           'pbl_surf_mod 1234',errmax,errmaxrel)
    12261237          ENDIF !IF (iso_eau >= 0) THEN 
    12271238        ENDDO !DO i=1,knon 
     
    14601471   flux_xt = 0.0
    14611472   yRland_ice = 0.0
     1473   yrunoff_diag = 0.0
     1474   yxtrunoff_diag = 0.0
     1475   yxtriverflow = 0.0
     1476   yxtcoastalflow = 0.0
     1477   yRsol = 0.0
    14621478!   d_xt = 0.0     
    14631479   y_dflux_xt = 0.0 
     
    18211837          !IF (nsrf == is_lic) THEN
    18221838          DO ixt=1,niso
    1823             yRland_ice(ixt,j)= Rland_ice(ixt,i) 
     1839            yRland_ice(ixt,j)    = Rland_ice(ixt,i) 
     1840            yxtriverflow(ixt,j)  = xtriverflow(ixt,i)
     1841            yxtcoastalflow(ixt,j)= xtcoastalflow(ixt,i)
     1842            yRsol(ixt,j)         = Rsol(ixt,i)
    18241843          ENDDO   
    18251844          !endif !IF (nsrf == is_lic) THEN
     
    25862605         &      ,yxtrain_f, yxtsnow_f,yxt1, &
    25872606         &      yxtsnow,yxtsol,yxtevap,h1, &
    2588          &      yrunoff_diag,yxtrunoff_diag,yRland_ice &
     2607         &      yrunoff_diag,yxtrunoff_diag,yRland_ice, &
     2608         &      yxtriverflow,yxtcoastalflow,yRsol &
    25892609#endif               
    25902610         &      )
     
    26582678                  ypsref, yu1, yv1, ygustiness, yrugoro, pctsrf, &
    26592679                  ysnow, yqsurf, yqsol,yqbs1, yagesno, &
    2660                   ytsoil, yz0m, yz0h, SFRWL, yalb_dir_new, yalb_dif_new, yevap, yicesub_lic, yfluxsens,yfluxlat, &
     2680                  ytsoil, yz0m, yz0h, SFRWL, yalb_dir_new, yalb_dif_new, yevap, yicesub_lic, yfluxsens, yfluxlat, &
    26612681                  yfluxbs, ytsurf_new, y_dflux_t, y_dflux_q, &
    26622682                  yzmea, yzsig, ycldt, &
     
    26962716               DO ixt=1,ntraciso
    26972717                 CALL iso_verif_noNaN(yxtevap(ixt,j), &
    2698                         &             'pbl_surface 1095a: apres surf_landice')
     2718                        &             'pbl_surface 2716a: apres surf_landice')
    26992719               ENDDO
    2700                 do ixt=1,niso
    2701                    call iso_verif_noNaN(yxtsol(ixt,j), &
    2702                         &      'pbl_surface 1095b: apres surf_landice')
    2703                 enddo
    2704              enddo
     2720               DO ixt=1,niso
     2721                 CALL iso_verif_noNaN(yxtsol(ixt,j), &
     2722                        &      'pbl_surface 2720b: apres surf_landice')
     2723               ENDDO
     2724             ENDDO
    27052725#endif
    27062726#ifdef ISOVERIF
    27072727             !write(*,*) 'pbl_surface_mod 1060: sortie surf_landice'
    2708              do j=1,knon
     2728             DO j=1,knon
    27092729               IF (iso_eau >= 0) THEN     
    27102730                 CALL iso_verif_egalite(yxtsnow(iso_eau,j), &
    2711                         &               ysnow(j),'pbl_surf_mod 1064')
     2731                        &               ysnow(j),'pbl_surf_mod 2729')
    27122732               ENDIF !if (iso_eau >= 0) THEN
    27132733             ENDDO !DO i=1,klon
     
    34643484          dflux_q(i) = dflux_q(i) + y_dflux_q(j)*ypct(j)
    34653485#ifdef ISO
    3466         DO ixt=1,niso
    3467           xtsnow(ixt,i,nsrf) = yxtsnow(ixt,j) 
    3468         ENDDO
    3469         DO ixt=1,ntraciso
    3470           xtevap(ixt,i,nsrf) = - flux_xt(ixt,i,1,nsrf)
    3471           dflux_xt(ixt,i) = dflux_xt(ixt,i) + y_dflux_xt(ixt,j)*ypct(j)
    3472         ENDDO 
    3473         IF (nsrf == is_lic) THEN
    34743486          DO ixt=1,niso
    3475             Rland_ice(ixt,i) = yRland_ice(ixt,j) 
    3476           ENDDO
    3477         ENDIF !IF (nsrf == is_lic) THEN     
     3487            xtsnow(ixt,i,nsrf) = yxtsnow(ixt,j) 
     3488          ENDDO
     3489          DO ixt=1,ntraciso
     3490            xtevap(ixt,i,nsrf) = - flux_xt(ixt,i,1,nsrf)
     3491            dflux_xt(ixt,i) = dflux_xt(ixt,i) + y_dflux_xt(ixt,j)*ypct(j)
     3492          ENDDO 
     3493          IF (nsrf == is_lic) THEN
     3494            DO ixt=1,niso
     3495              Rland_ice(ixt,i) = yRland_ice(ixt,j) 
     3496            ENDDO
     3497          ENDIF !IF (nsrf == is_lic) THEN     
     3498          IF (nsrf == is_ter) THEN
     3499            DO ixt=1,niso
     3500              xtriverflow(ixt,i)  = yxtriverflow(ixt,j)
     3501              xtcoastalflow(ixt,i)= yxtcoastalflow(ixt,j)
     3502              Rsol(ixt,i) = yRsol(ixt,j) 
     3503            ENDDO
     3504          ENDIF !IF (nsrf == is_ter) THEN
    34783505#ifdef ISOVERIF
    3479         IF (iso_eau.gt.0) THEN 
    3480           call iso_verif_egalite_choix(Rland_ice(iso_eau,i),1.0, &
    3481      &         'pbl_surf_mod 1230',errmax,errmaxrel)
    3482         ENDIF !if (iso_eau.gt.0) then
     3506          IF (iso_eau.GT.0) THEN 
     3507            CALL iso_verif_egalite_choix(Rland_ice(iso_eau,i),1.0, &
     3508     &         'pbl_surf_mod 3506',errmax,errmaxrel)
     3509            CALL iso_verif_egalite_choix(Rsol(iso_eau,i),1.0, &
     3510     &         'pbl_surf_mod 3508',errmax,errmaxrel)
     3511          ENDIF !if (iso_eau.gt.0) then
    34833512#endif       
    34843513#endif
     
    44094438  SUBROUTINE pbl_surface_final(fder_rst, snow_rst, qsurf_rst, ftsoil_rst &
    44104439#ifdef ISO
    4411        ,xtsnow_rst,Rland_ice_rst &
     4440       ,xtsnow_rst,Rland_ice_rst,Rsol_rst &
    44124441#endif       
    44134442       )
     
    44314460    REAL, DIMENSION(niso,klon, nbsrf), INTENT(OUT)     :: xtsnow_rst
    44324461    REAL, DIMENSION(niso,klon), INTENT(OUT)            :: Rland_ice_rst
     4462    REAL, DIMENSION(niso,klon), INTENT(OUT)            :: Rsol_rst
    44334463#endif
    44344464
     
    44454475    xtsnow_rst(:,:,:)  = xtsnow(:,:,:)
    44464476    Rland_ice_rst(:,:) = Rland_ice(:,:)
     4477    Rsol_rst(:,:)     = Rsol(:,:)
    44474478#endif
    44484479
     
    44644495    IF (ALLOCATED(xtsnow)) DEALLOCATE(xtsnow)
    44654496    IF (ALLOCATED(Rland_ice)) DEALLOCATE(Rland_ice)
     4497    IF (ALLOCATED(Rsol)) DEALLOCATE(Rsol)
    44664498    IF (ALLOCATED(Roce)) DEALLOCATE(Roce)
    44674499#endif
     
    44924524    ! Give default values where new fraction has appread
    44934525
    4494 USE compbl_mod_h
    4495         USE clesphys_mod_h
     4526    USE compbl_mod_h
     4527    USE clesphys_mod_h
    44964528    USE indice_sol_mod
    4497     use phys_state_var_mod, only: delta_sal, ds_ns, dt_ns, delta_sst, dter, &
     4529    USE phys_state_var_mod, ONLY: delta_sal, ds_ns, dt_ns, delta_sst, dter, &
    44984530         dser, dt_ds
    4499     use config_ocean_skin_m, only: activate_ocean_skin
     4531    USE config_ocean_skin_m, ONLY: activate_ocean_skin
    45004532
    45014533! Input variables
  • LMDZ6/trunk/libf/phylmd/phyetat0_mod.f90

    r5776 r5927  
    1111
    1212  USE clesphys_mod_h
    13   USE dimphy, only: klon, zmasq, klev, nbtersrf, nbtsoildepths
     13  USE dimphy, ONLY: klon, zmasq, klev, nbtersrf, nbtsoildepths
    1414  USE iophy, ONLY : init_iophy_new
    1515  USE ocean_cpl_mod,    ONLY : ocean_cpl_init
     
    1818!GG  USE surface_data,     ONLY : type_ocean, version_ocean
    1919  USE surface_data,     ONLY : type_ocean, version_ocean, iflag_seaice, &
    20                                    iflag_seaice_alb, iflag_leads
     20                               iflag_seaice_alb, iflag_leads
    2121!GG
    2222  USE phyetat0_get_mod, ONLY : phyetat0_get, phyetat0_srf
     
    5454  !GG
    5555  USE time_phylmdz_mod, ONLY: init_iteration, pdtphys, itau_phy
    56   use wxios_mod, ONLY: missing_val_xios => missing_val, using_xios
    57   use netcdf, only: missing_val_netcdf => nf90_fill_real
    58   use config_ocean_skin_m, only: activate_ocean_skin
     56  USE wxios_mod, ONLY: missing_val_xios => missing_val, using_xios
     57  USE netcdf, ONLY: missing_val_netcdf => nf90_fill_real
     58  USE config_ocean_skin_m, ONLY: activate_ocean_skin
    5959  USE surf_param_mod, ONLY: average_surf_var, interpol_tsoil !AM
    6060  USE dimsoil_mod_h, ONLY: nsoilmx
     
    6262  USE alpale_mod
    6363  USE compbl_mod_h
    64 IMPLICIT none
     64
     65  IMPLICIT NONE
     66
    6567  !======================================================================
    6668  ! Auteur(s) Z.X. Li (LMD/CNRS) date: 19930818
     
    7476  REAL qsurf(klon, nbsrf)
    7577  REAL snow(klon, nbsrf)
    76   real fder(klon)
     78  REAL fder(klon)
    7779  REAL run_off_lic_0(klon)
    7880  REAL fractint(klon)
     
    190192
    191193  ! set time iteration
    192    CALL init_iteration(itau_phy)
     194  CALL init_iteration(itau_phy)
    193195
    194196  ! read latitudes and make a sanity check (because already known from dyn)
     
    518520  ENDIF
    519521
    520 
    521522  found=phyetat0_get(clwcon,"CLWCON","CLWCON",0.)
    522523  found=phyetat0_get(rnebcon,"RNEBCON","RNEBCON",0.)
     
    542543  ENDIF
    543544
    544   IF ((iflag_pbl>1)) then
     545  IF (iflag_pbl>1) then
    545546     found=phyetat0_srf(pbl_tke,"TKE","Turb. Kinetic. Energ. ",1.e-8)
    546547  ENDIF
  • LMDZ6/trunk/libf/phylmd/phyredem.f90

    r5776 r5927  
    99! Purpose: Write restart state for physics.
    1010!-------------------------------------------------------------------------------
    11 USE compbl_mod_h
     11  USE compbl_mod_h
    1212  USE alpale_mod
    13     USE clesphys_mod_h
     13  USE clesphys_mod_h
    1414  USE dimphy, ONLY: klon, klev
    1515  USE fonte_neige_mod,  ONLY : fonte_neige_final
     
    3737                                !dser, dt_ds
    3838                                delta_sst, ratqs_inter_, dter, dser,&
    39                                 & dt_ds, hice, tice, bilg_cumul, &
     39                                dt_ds, hice, tice, bilg_cumul, &
    4040!GG
    4141                                frac_tersrf, z0m_tersrf,&
     
    6363  USE ocean_slab_mod, ONLY : nslay, tslab, seaice, tice_slab, fsic
    6464  USE time_phylmdz_mod, ONLY: annee_ref, day_end, itau_phy, pdtphys
    65   use config_ocean_skin_m, only: activate_ocean_skin
     65  USE config_ocean_skin_m, ONLY: activate_ocean_skin
    6666  USE dimsoil_mod_h, ONLY: nsoilmx
    67   IMPLICIT none
     67
     68  IMPLICIT NONE
     69
    6870  !======================================================================
    6971  CHARACTER*(*) fichnom
  • LMDZ6/trunk/libf/phylmd/phys_local_var_mod.F90

    r5894 r5927  
    33!
    44      MODULE phys_local_var_mod
    5             USE lmdz_cppkeys_wrapper, ONLY: CPPKEY_STRATAER
     5
     6      USE lmdz_cppkeys_wrapper, ONLY: CPPKEY_STRATAER
     7
    68! Variables locales pour effectuer les appels en serie
    79!======================================================================
     
    442444!$OMP THREADPRIVATE(zxqsurf, rain_lsc, rain_num)
    443445#ifdef ISO
    444       REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: xtevap,xtprw
    445 !$OMP THREADPRIVATE(xtevap,xtprw)
     446      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: xtevap
     447      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: xtprw
     448      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: uxtflux
     449      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: vxtflux
     450!$OMP THREADPRIVATE(xtevap,xtprw,uxtflux,vxtflux)
    446451      REAL,ALLOCATABLE,SAVE,DIMENSION(:) :: h1_diag
    447452      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: xtrunoff_diag
    448453!$OMP THREADPRIVATE(h1_diag,xtrunoff_diag)
     454      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: xtriverflow, xtcoastalflow, Rsol
     455!$OMP THREADPRIVATE(xtriverflow, xtcoastalflow, Rsol)
    449456      REAL,ALLOCATABLE,SAVE,DIMENSION(:,:) :: zxfxtcalving
    450457!$OMP THREADPRIVATE(zxfxtcalving)
     
    11151122      ALLOCATE(xtevap(ntraciso,klon))
    11161123      ALLOCATE(xtprw(ntraciso,klon))
     1124      ALLOCATE(uxtflux(ntraciso,klon))
     1125      ALLOCATE(vxtflux(ntraciso,klon))
    11171126      ALLOCATE(zxfxtcalving(niso,klon))
    11181127      ALLOCATE(xtsnow_lsc(ntraciso,klon), zxfxtfonte(niso,klon))
     
    11211130      ALLOCATE(xtrunoff_diag(niso,klon))
    11221131      ALLOCATE(h1_diag(klon))
    1123 !SN
     1132!PRSN
     1133      ALLOCATE(xtriverflow(niso,klon))
     1134      ALLOCATE(xtcoastalflow(niso,klon))
     1135      ALLOCATE(Rsol(niso,klon))
    11241136      xtrunoff_diag(:,:)=0. ! because variables are only given values on knon grid points
     1137      xtriverflow(:,:)=0.
     1138      xtcoastalflow(:,:)=0.
     1139      Rsol(:,:)=0.
     1140!PRSN
    11251141#endif
    11261142!
     
    15841600      DEALLOCATE(kh, kh_x, kh_w)
    15851601#ifdef ISO
    1586       DEALLOCATE(xtevap,xtprw)
     1602      DEALLOCATE(xtevap,xtprw,uxtflux,vxtflux)
    15871603      DEALLOCATE(zxfxtcalving)
    15881604      DEALLOCATE(zxxtrunofflic)
     
    15921608      DEALLOCATE(xt_therm)
    15931609      DEALLOCATE(h1_diag,xtrunoff_diag)
     1610      DEALLOCATE(xtriverflow,xtcoastalflow,Rsol)
    15941611#endif
    15951612!
  • LMDZ6/trunk/libf/phylmd/phys_output_ctrlout_mod.F90

    r5905 r5927  
    20172017  TYPE(ctrl_out), SAVE :: o_mean_icefracturb = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
    20182018    'mean_icefracturb', 'Mean of the diagnostic supersaturation distribution (icefrac_turb) [-]', '-', (/ ('', i=1, 10) /))
    2019    TYPE(ctrl_out), SAVE :: o_cldfraliqth = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     2019  TYPE(ctrl_out), SAVE :: o_cldfraliqth = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
    20202020    'cldfraliqth', 'Liquid fraction of clouds in thermals', '-', (/ ('', i=1, 10) /))
    20212021  TYPE(ctrl_out), SAVE :: o_sigma2_icefracturbth = ctrl_out((/ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11/), &
     
    24592459#ifdef ISO
    24602460  TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_xtprecip(:)
     2461  TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_xtprw(:)
     2462  TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_uxtflux(:)
     2463  TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_vxtflux(:)
     2464  TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_Rland_ice(:)
     2465  TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_xtsnow_srf(:,:) ! Niels 18 janvier 2024
    24612466  TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_xtevap(:)
    24622467  TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_xtevap_srf(:,:) ! ajout Camille 8 mai 2023
     
    24672472  TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_xtcond(:)
    24682473  TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_xtrunoff_diag(:)
     2474  TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_xtriverflow(:)   ! PRSN
     2475  TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_xtcoastalflow(:)
     2476  TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_Rsol(:)          ! PRSN
    24692477  TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dxtdyn(:)
    24702478  TYPE(ctrl_out), SAVE, ALLOCATABLE :: o_dxtldyn(:)
  • LMDZ6/trunk/libf/phylmd/phys_output_mod.F90

    r5685 r5927  
    5757
    5858    ! ug Pour les sorties XIOS
    59     use wxios_mod
    60    USE infotrac_phy, ONLY: nbtr_bin
     59    USE wxios_mod
     60    USE infotrac_phy, ONLY: nbtr_bin
    6161#ifdef ISO
    6262    USE isotopes_mod, ONLY: isoName,iso_HTO
    6363#ifdef ISOTRAC
    64     use isotrac_mod, only: index_zone,index_iso,strtrac
     64    USE isotrac_mod, ONLY: index_zone,index_iso,strtrac
    6565#endif
    6666#endif
     
    6868    USE clesphys_mod_h
    6969    USE lmdz_cppkeys_wrapper, ONLY: CPPKEY_STRATAER
    70 
    7170    USE yomcst_mod_h
    72 IMPLICIT NONE
    73 
    74 
    75     ! ug Nouveaux arguments n\'ecessaires au histwrite_mod:
     71
     72    IMPLICIT NONE
     73
     74
     75    ! ug Nouveaux arguments necessaires au histwrite_mod:
    7676    INTEGER, INTENT(IN)                         :: ivap
    7777    INTEGER, DIMENSION(klon), INTENT(IN)        :: lmax_th
     
    8383    REAL, DIMENSION(klon, klev+1), INTENT(IN)   :: paprs
    8484    REAL, DIMENSION(klon,klev,nqtot), INTENT(IN):: qx, d_qx
    85     REAL, DIMENSION(klon, klev), INTENT(IN)      :: zmasse
     85    REAL, DIMENSION(klon, klev), INTENT(IN)     :: zmasse
    8686
    8787
     
    148148    REAL, DIMENSION(klev+1)   :: lev_index
    149149               
    150     ! ug Variables utilis\'ees pour r\'ecup\'erer le calendrier pour xios
     150    ! ug Variables utilisees pour recuperer le calendrier pour xios
    151151    INTEGER :: x_an, x_mois, x_jour
    152152    REAL :: x_heure
     
    161161!FC
    162162    INTEGER                         :: ILW
    163     REAL,  DIMENSION(nbands_lw_rrtm)  :: wl1_lw, wl2_lw
     163    REAL,  DIMENSION(nbands_lw_rrtm):: wl1_lw, wl2_lw
    164164
    165165    WRITE(lunout,*) 'Debut phys_output_mod.F90'
     
    187187      lev_index(ilev) = REAL(ilev)
    188188    END DO
    189       lev_index(klev+1) = REAL(klev+1)
     189    lev_index(klev+1) = REAL(klev+1)
    190190
    191191    IF (.NOT. ALLOCATED(o_trac)) ALLOCATE(o_trac(nqtot))
     
    201201END IF
    202202#ifdef ISO
     203    ALLOCATE(o_xtprw(ntraciso)) ! CAa
     204    ALLOCATE(o_uxtflux(ntraciso))   ! CAa
     205    ALLOCATE(o_vxtflux(ntraciso))   ! CAa
    203206    ALLOCATE(o_xtprecip(ntraciso))
     207    ALLOCATE(o_Rland_ice(ntraciso))         ! Niels
     208    ALLOCATE(o_xtsnow_srf(ntraciso, nbsrf)) ! Niels 18 janvier 2024
    204209    ALLOCATE(o_xtplul(ntraciso))
    205210    ALLOCATE(o_xtpluc(ntraciso))
     
    210215    ALLOCATE(o_xtcond(ntraciso))
    211216    ALLOCATE(o_xtrunoff_diag(ntraciso))
     217    ALLOCATE(o_xtriverflow(ntraciso))   !PRSN
     218    ALLOCATE(o_xtcoastalflow(ntraciso))
     219    ALLOCATE(o_Rsol(ntraciso))          !PRSN
    212220    ALLOCATE(o_dxtdyn(ntraciso))
    213221    ALLOCATE(o_dxtldyn(ntraciso))
     
    219227    ALLOCATE(o_dxtthe(ntraciso))
    220228    ALLOCATE(o_dxtch4(ntraciso))
    221     if (iso_HTO.gt.0) then
     229    IF (iso_HTO.GT.0) THEN
    222230      ALLOCATE(o_dxtprod_nucl(ntraciso))
    223231      ALLOCATE(o_dxtcosmo(ntraciso))
    224232      ALLOCATE(o_dxtdecroiss(ntraciso))
    225     endif
     233    ENDIF
    226234#endif
    227235
     
    362370      ELSE
    363371       CALL convers_timesteps(chtimestep(iff),dtime,ecrit_files(iff))
    364       print*,'Dans phys_output_open, iff=',iff,' ecrit_files=',ecrit_files(iff)
     372       PRINT*,'Dans phys_output_open, iff=',iff,' ecrit_files=',ecrit_files(iff)
    365373      ENDIF
    366374      ! ecrit_files contains frequency of file iif in seconds
     
    579587      outiso = outiso(1:i-1)//outiso(i+1:LEN_TRIM(outiso))
    580588
     589      flag = [1, 1, 10, 10, 10, 10, 11, 11, 11, 11]
     590      unit = 'kg/m2'
     591      o_xtprw(ixt)=ctrl_out(flag, 'prw'//TRIM(outiso), 'Precipitable water', unit, [('',i=1,nfiles)])
     592      unit = 'kg/m/s'
     593      o_uxtflux(ixt)=ctrl_out(flag, 'uq'//TRIM(outiso), 'Zonal humidity transport', unit, [('',i=1,nfiles)])
     594      o_vxtflux(ixt)=ctrl_out(flag, 'vq'//TRIM(outiso), 'Merid humidity transport', unit, [('',i=1,nfiles)])
     595
    581596      flag = [1,  1,  1, 10,  5, 10, 11, 11, 11, 11]; unit = 'kg/(s*m2)'
    582597      o_xtprecip(ixt)=ctrl_out(flag, 'precip'//TRIM(outiso), 'Precip Totale liq+sol', unit, [('',i=1,nfiles)])
     
    601616      flag = [1,  1,  1, 10, 5, 10, 11, 11, 11, 11]; unit = 'kg/m2/s'
    602617      o_xtrunoff_diag  (ixt)=ctrl_out(flag, 'runoffland'//TRIM(outiso), 'Run-off rate land for bucket', unit, [('',i=1,nfiles)])
     618
     619      ! Niels 14 janvier 2024
     620      flag = [1,  1,  1, 10, 10, 10, 11, 11, 11, 11]; unit = '1'
     621      o_Rland_ice(ixt) = ctrl_out(flag, 'Rland_ice'//TRIM(outiso), 'R land ice', unit, [('',i=1,nfiles)])
     622     
     623      ! Snow above soil
     624      flag = [1,  1,  1, 10, 10, 10, 11, 11, 11, 11]; unit = 'kg/m2'
     625      !do nsrf = 1, nbsrf
     626      !  o_xtsnow_srf (ixt, nsrf) = &
     627      !      ctrl_out(flag, 'snow_'//clnsurf(nsrf)//TRIM(outiso), 'Snow sfc'//clnsurf(nsrf), unit, [('',i=1,nfiles)])
     628      !end do
     629      o_xtsnow_srf (ixt,1)=ctrl_out(flag, 'snow_ter'//TRIM(outiso), 'Snow sfc'//clnsurf(1), unit, [('',i=1,nfiles)])
     630      o_xtsnow_srf (ixt,2)=ctrl_out(flag, 'snow_lic'//TRIM(outiso), 'Snow sfc'//clnsurf(2), unit, [('',i=1,nfiles)])
     631      o_xtsnow_srf (ixt,3)=ctrl_out(flag, 'snow_oce'//TRIM(outiso), 'Snow sfc'//clnsurf(3), unit, [('',i=1,nfiles)])
     632      o_xtsnow_srf (ixt,4)=ctrl_out(flag, 'snow_sic'//TRIM(outiso), 'Snow sfc'//clnsurf(4), unit, [('',i=1,nfiles)])
     633      ! end Niels
     634
     635      !PRSN
     636
     637      flag = [1,  1,  1, 10, 5, 10, 11, 11, 11, 11]; unit = 'kg/(s*m2)'
     638      o_xtriverflow  (ixt)=ctrl_out(flag, 'rivflow'//TRIM(outiso), 'River flow to ocean', unit, [('',i=1,nfiles)])
     639      o_xtcoastalflow  (ixt)=ctrl_out(flag, 'coastflow'//TRIM(outiso), 'Coastal flow to ocean', unit, [('',i=1,nfiles)])
     640
     641      flag = [1,  1,  1, 10, 5, 10, 11, 11, 11, 11]; unit = 'kg/kg'
     642      o_Rsol  (ixt)=ctrl_out(flag, 'Rsol'//TRIM(outiso), 'Isotopic soil ratio', unit, [('',i=1,nfiles)])
     643      !PRSN
    603644
    604645      flag = [4, 10, 10, 10, 10, 10, 11, 11, 11, 11]; unit = '(kg/kg)/s'
     
    645686      WRITE(lunout,*)'phys_output_open: ends here'
    646687    ENDIF
    647     print*,'Dans phys_output_open,ecrit_files B',ecrit_files(1:6)
     688    PRINT*,'Dans phys_output_open,ecrit_files B',ecrit_files(1:6)
    648689
    649690!  DO iq=1,nqtot
  • LMDZ6/trunk/libf/phylmd/phys_output_write_mod.F90

    r5905 r5927  
    224224! Isotopes
    225225         o_xtprecip,o_xtplul,o_xtpluc,o_xtovap,o_xtoliq,o_xtcond, &
    226          o_xtrunoff_diag, &
     226         o_xtprw, o_uxtflux, o_vxtflux, o_xtrunoff_diag, &
     227         o_xtriverflow, o_xtcoastalflow, o_Rsol, &
    227228         o_xtevap,o_dxtdyn,o_dxtldyn,o_dxtcon,o_dxtlsc,o_dxteva, &
    228229         o_dxtajs,o_dxtvdf,o_dxtthe, o_dxtch4, &
    229230         o_dxtprod_nucl,o_dxtcosmo,o_dxtdecroiss, &
    230          o_xtevap_srf, &
     231         o_Rland_ice, o_xtsnow_srf, o_xtevap_srf, &
    231232#endif
    232233! Tropopause
     
    441442#ifdef ISO
    442443        xtrain_lsc, xtsnow_lsc, xt_seri, xtl_seri,xts_seri,xtevap, &
    443         d_xt_dyn,d_xtl_dyn,d_xt_con,d_xt_vdf,d_xt_ajsb, &
     444        xtprw, uxtflux, vxtflux, d_xt_dyn,d_xtl_dyn,d_xt_con,d_xt_vdf,d_xt_ajsb, &
    444445        d_xt_lsc,d_xt_eva,d_xt_ch4, &
    445446        d_xt_ajs, d_xt_ajsb, &
    446447        d_xt_prod_nucl,d_xt_cosmo,d_xt_decroiss, &
    447448        xtrunoff_diag, &
     449        xtriverflow, xtcoastalflow, Rsol, &
    448450#endif
    449451         ep, epmax_diag, &  ! epmax_cape
     
    506508#ifdef ISO
    507509    USE isotopes_mod, ONLY: iso_HTO, isoName
     510    USE pbl_surface_mod, ONLY: Rland_ice, xtsnow
    508511#endif
    509512    USE geometry_mod, ONLY: cell_area, latitude_deg, longitude_deg
     
    540543    USE yomcst_mod_h
    541544    USE phys_constants_mod, ONLY: dobson_u
    542 IMPLICIT NONE
     545
     546    IMPLICIT NONE
    543547
    544548
     
    32103214        CALL histwrite_phy(o_xtprecip(ixt), zx_tmp_fi2d)
    32113215
     3216        CALL histwrite_phy(o_xtprw(ixt), xtprw(ixt, :))
     3217        CALL histwrite_phy(o_uxtflux(ixt), uxtflux(ixt, :))
     3218        CALL histwrite_phy(o_vxtflux(ixt), vxtflux(ixt, :))
     3219
    32123220        IF (vars_defined) zx_tmp_fi2d(:) = xtrain_lsc(ixt,:) + xtsnow_lsc(ixt,:)
    32133221        CALL histwrite_phy(o_xtplul(ixt), zx_tmp_fi2d)
     
    32163224        CALL histwrite_phy(o_xtpluc(ixt), zx_tmp_fi2d)
    32173225        CALL histwrite_phy(o_xtevap(ixt),   xtevap(ixt,:))
     3226        CALL histwrite_phy(o_Rland_ice(ixt), Rland_ice(ixt,:))
    32183227        CALL histwrite_phy(o_xtovap(ixt),  xt_seri(ixt,:,:))
    32193228        CALL histwrite_phy(o_xtoliq(ixt), xtl_seri(ixt,:,:))
    32203229
    3221         !! runoff land bucket - ajout S. Nguyen 25 avril 2024
     3230        !! runoff land bucket + soil isotopes ratio + river and costal flows PRSN 2025
    32223231        CALL histwrite_phy(o_xtrunoff_diag(ixt), xtrunoff_diag(ixt,:))
    3223 
     3232        CALL histwrite_phy(o_xtriverflow(ixt),   xtriverflow(ixt,:))
     3233        CALL histwrite_phy(o_xtcoastalflow(ixt),   xtcoastalflow(ixt,:))
     3234        CALL histwrite_phy(o_Rsol(ixt),   Rsol(ixt,:))
    32243235
    32253236        DO nsrf = 1, nbsrf ! ajout Camille 8 mai 2023
    32263237        IF (vars_defined)       zx_tmp_fi2d(1 : klon) = fxtevap(ixt,:, nsrf)
    32273238        CALL histwrite_phy(o_xtevap_srf(ixt,nsrf), zx_tmp_fi2d)
     3239        ENDDO
     3240
     3241        DO nsrf = 1, nbsrf ! Niels 18 janvier 2024
     3242        IF (vars_defined) zx_tmp_fi2d(1 : klon) = xtsnow(ixt, :, nsrf)
     3243        CALL histwrite_phy(o_xtsnow_srf(ixt, nsrf), zx_tmp_fi2d)
    32283244        ENDDO
    32293245
  • LMDZ6/trunk/libf/phylmd/phys_state_var_mod.F90

    r5776 r5927  
    133133!$OMP THREADPRIVATE(prw_ancien, prlw_ancien, prsw_ancien, prbsw_ancien)
    134134#ifdef ISO
    135       REAL, ALLOCATABLE, SAVE :: xt_ancien(:,:,:),xtl_ancien(:,:,:),xts_ancien(:,:,:), xtbs_ancien(:,:,:)
     135      REAL, ALLOCATABLE, SAVE :: xt_ancien(:,:,:),xtl_ancien(:,:,:),xts_ancien(:,:,:),xtbs_ancien(:,:,:)
    136136!$OMP THREADPRIVATE(xt_ancien,xtl_ancien,xts_ancien,xtbs_ancien)
    137137#endif
     
    606606USE clesphys_mod_h
    607607USE indice_sol_mod
    608 use config_ocean_skin_m, only: activate_ocean_skin
    609 use surface_data, only: type_ocean
     608USE config_ocean_skin_m, ONLY: activate_ocean_skin
     609USE surface_data, ONLY: type_ocean
    610610IMPLICIT NONE
    611611
    612 integer, intent(in)::  read_climoz
     612INTEGER, INTENT(IN)::  read_climoz
    613613! read ozone climatology
    614614! Allowed values are 0, 1 and 2
     
    619619
    620620
    621       print*, 'is_initialized', is_initialized
     621      PRINT*, 'is_initialized', is_initialized
    622622      IF (is_initialized) RETURN
    623623      is_initialized=.TRUE.
     
    654654      ALLOCATE(falb2(klon,nbsrf))
    655655!albedo SB >>>
    656       print*, 'allocate falb'
     656      PRINT*, 'allocate falb'
    657657      ALLOCATE(falb_dir(klon,nsw,nbsrf),falb_dif(klon,nsw,nbsrf))
    658658!!      print*, 'allocate falb good', falb_dir(1,1,1)
  • LMDZ6/trunk/libf/phylmd/physiq_mod.F90

    r5918 r5927  
    8080    USE readaerosol_mod, ONLY : init_aero_fromfile
    8181    USE readaerosolstrato_m, ONLY : init_readaerosolstrato
    82     USE radlwsw_m, only: radlwsw
     82    USE radlwsw_m, ONLY: radlwsw
    8383    USE reevap_mod, ONLY: reevap
    8484    USE regr_horiz_time_climoz_m, ONLY: regr_horiz_time_climoz
    85     USE regr_pr_time_av_m, only: regr_pr_time_av
     85    USE regr_pr_time_av_m, ONLY: regr_pr_time_av
    8686    USE stratocu_if_mod, ONLY: stratocu_if
    8787    USE surface_data,     ONLY : type_ocean, ok_veget
    8888    USE tend_to_tke_mod, ONLY: tend_to_tke
    89     USE time_phylmdz_mod, only: current_time, itau_phy, pdtphys, raz_date, update_time
     89    USE time_phylmdz_mod, ONLY: current_time, itau_phy, pdtphys, raz_date, update_time
    9090    USE tracinca_mod, ONLY: config_inca
    9191    USE transp_mod, ONLY: transp
     
    412412       USE phytracr_spl_mod, ONLY: phytracr_spl_out_init, phytracr_spl
    413413       USE s2s, ONLY : s2s_initialize, s2s_finalize
     414
    414415    IMPLICIT NONE
    415416    !>======================================================================
     
    458459    !! d_ps----output-R-tendance physique de la pression au sol
    459460    !!======================================================================
    460     integer jjmp1
     461    INTEGER jjmp1
    461462    !  parameter (jjmp1=jjm+1-1/jjm) ! => (jjmp1=nbp_lat-1/(nbp_lat-1))
    462463    !  integer iip1
  • LMDZ6/trunk/libf/phylmd/surf_land_mod.F90

    r5627 r5927  
    2626       ,xtprecip_rain, xtprecip_snow,xtspechum, &
    2727       xtsnow, xtsol,xtevap,h1, &
    28        runoff_diag,xtrunoff_diag,Rland_ice &
     28       runoff_diag,xtrunoff_diag,Rland_ice, &
     29       xtriverflow, xtcoastalflow, Rsol &
    2930#endif               
    3031               )
     
    123124#ifdef ISO
    124125    REAL, DIMENSION(niso,klon), INTENT(INOUT)    :: xtsnow, xtsol
     126    REAL, DIMENSION(niso,klon), INTENT(INOUT)    :: Rsol
    125127#endif
    126128
     
    152154    REAL, DIMENSION(klon, nbtersrf), INTENT(OUT) :: fluxlat_tersrf
    153155#ifdef ISO
    154     REAL, DIMENSION(ntiso,klon), INTENT(OUT)      :: xtevap
    155     REAL, DIMENSION(klon), INTENT(OUT)      :: h1
     156    REAL, DIMENSION(ntiso,klon), INTENT(OUT)     :: xtevap
     157    REAL, DIMENSION(klon), INTENT(OUT)           :: h1
     158    REAL, DIMENSION(klon), INTENT(OUT)           :: runoff_diag
    156159    REAL, DIMENSION(niso,klon), INTENT(OUT)      :: xtrunoff_diag
    157     REAL, DIMENSION(klon), INTENT(OUT)      :: runoff_diag
    158     REAL, DIMENSION(niso,klon), INTENT(IN)        :: Rland_ice
     160    REAL, DIMENSION(niso,klon), INTENT(IN)       :: Rland_ice
     161    REAL, DIMENSION(niso,klon),  INTENT(OUT)     :: xtriverflow
     162    REAL, DIMENSION(niso,klon),  INTENT(OUT)     :: xtcoastalflow
    159163#endif
    160164
     
    245249       END DO
    246250
    247 #ifdef ISO
    248       CALL abort_physic('surf_land_mod 220','isos pas prevus dans orchidee',1)
    249 #endif
     251!!SN LMDZORISO
     252!#ifdef ISO
     253!      CALL abort_physic('surf_land_mod 220','isos pas prevus dans orchidee',1)
     254!#endif
    250255       ! temporary for keeping same results using lwdown_m instead of lwdown
    251256       CALL surf_land_orchidee(itime, dtime, date0, knon, &
     
    260265            emis_new, z0m, z0h, qsurf, &
    261266            veget, lai, height &
    262 !#ifdef ISO
    263 !            , xtprecip_rain, xtprecip_snow, xtspechum, xtevap &
    264 !#endif
     267#ifdef ISO
     268            ,xtprecip_rain, xtprecip_snow, &
     269             xtriverflow, xtcoastalflow, xtevap, Rsol &
     270#endif
    265271            )                 
    266272
  • LMDZ6/trunk/libf/phylmd/surf_land_orchidee_mod.F90

    r5894 r5927  
    5050       tsol_rad, tsurf_new, alb1_new, alb2_new, &
    5151       emis_new, z0m_new, z0h_new, qsurf, &
    52        veget, lai, height )
     52       veget, lai, height &
     53#ifdef ISO
     54       ,xtprecip_rain,xtprecip_snow, &
     55        xtriverflow, xtcoastalflow, xtevap, Rsol &
     56#endif
     57       & )
    5358
    5459    USE mod_surf_para
     
    6065#ifdef CPP_VEGET
    6166    USE time_phylmdz_mod, ONLY: itau_phy
     67#endif
     68#ifdef ISO
     69    USE infotrac_phy,  ONLY: niso, ntraciso=>ntiso
     70    USE isotopes_mod,  ONLY: ridicule
     71#ifdef ISOTRAC
     72    USE isotrac_mod, ONLY: index_zone,index_iso, option_traceurs,izone_cont, &
     73&       bassin_map
     74#endif
    6275#endif
    6376    USE yomcst_mod_h
     
    136149    REAL, DIMENSION(klon), INTENT(IN)         :: lwdown, swnet, swdown, ps
    137150    REAL, DIMENSION(klon), INTENT(IN)         :: q2m, t2m
     151#ifdef ISO
     152    REAL, DIMENSION(ntraciso,klon), INTENT(IN):: xtprecip_rain, xtprecip_snow
     153#endif
    138154
    139155! Parametres de sortie
    140156!****************************************************************************************
    141157    REAL, DIMENSION(klon), INTENT(OUT)        :: evap, fluxsens, fluxlat, qsurf
     158!PRSN
     159#ifdef ISO
     160    REAL, DIMENSION(ntraciso,klon), INTENT(OUT)   :: xtriverflow
     161    REAL, DIMENSION(ntraciso,klon), INTENT(OUT)   :: xtcoastalflow
     162    REAL, DIMENSION(ntraciso,klon), INTENT(OUT)   :: xtevap
     163    REAL, DIMENSION(ntraciso,klon), INTENT(INOUT) :: Rsol
     164#endif
     165!PRSN
    142166    REAL, DIMENSION(klon), INTENT(OUT)        :: tsol_rad, tsurf_new
    143167    REAL, DIMENSION(klon), INTENT(OUT)        :: alb1_new, alb2_new
     
    234258    !$OMP THREADPRIVATE(ind_cell)
    235259    INTEGER :: begin, end
     260#ifdef ISO
     261    ! profondeur du reservoir pour le calcul de la moyenne glissante
     262    REAL, PARAMETER :: h_sol = 0.1
     263#ifdef ISOTRAC
     264    INTEGER, SAVE   :: izone_recoit
     265    !$OMP THREADPRIVATE(izone_recoit)
     266#endif
     267    INTEGER :: i, ixt
     268#endif
    236269!
    237270! Fin definition
     
    253286       IF ( .NOT. ALLOCATED(albedo_keep)) THEN
    254287!ym          ALLOCATE(albedo_keep(klon))
    255 !ym bizarre que non allou en knon precedement
     288!ym bizarre que non alloue en knon precedement
    256289          ALLOCATE(albedo_keep(knon))
    257290          ALLOCATE(zlev(knon))
     
    392425            lon_scat(:,nbp_lat) = lon_scat(:,2)
    393426            lat_scat(:,nbp_lat) = rlat_g(klon_glo)
    394                              ENDIF !FC
     427            ENDIF !FC
    395428
    396429         ENDIF
     
    458491            resolution(igrid,1) = dx(ij)
    459492           resolution(igrid,2) = dy(ij)
    460            print*, 'resolution FCCC',resolution(igrid,1),resolution(igrid,2)
     493           PRINT*, 'resolution FCCC',resolution(igrid,1),resolution(igrid,2)
    461494         ENDDO
    462495       ENDIF
     
    652685! fields_in can then used elsewhere in the model
    653686     
    654      fields_in(:,:)=0.0
    655 
    656      DO nb=1, nbcf_in_orc
    657        DO igrid = 1, knon
     687    fields_in(:,:)=0.0
     688
     689    DO nb=1, nbcf_in_orc
     690      DO igrid = 1, knon
    658691        ireal = knindex(igrid)
    659692        fields_in(ireal,nb)=yfields_in(igrid,nb)
    660        ENDDO
    661        WRITE(*,*) 'surf_land_orchidee_mod --- yfields_in :',cfname_in(nb)
    662      ENDDO
     693      ENDDO
     694      WRITE(*,*) 'surf_land_orchidee_mod --- yfields_in :',cfname_in(nb)
     695    ENDDO
    663696! >> PC
     697
     698#ifdef ISO
     699    ! calcul de xtevap, xtcoostalflow, xtriverflow
     700    DO i=1,knon
     701      IF (precip_rain(i)+precip_snow(i).GT.ridicule) THEN
     702        DO ixt=1,niso
     703          ! hsol=10.0
     704          Rsol(ixt,i)=(h_sol*Rsol(ixt,i) &
     705     &                 +(xtprecip_rain(ixt,i)+xtprecip_snow(ixt,i))*dtime) &
     706     &                /(h_sol+(precip_rain(i)+precip_snow(i))*dtime)
     707        ENDDO  !do ixt=1,niso   
     708      ENDIF !if (precip_rain(i)+precip_snow(i).gt.ridicule) then
     709    ENDDO !do i=1,knon
     710
     711    DO i=1,knon
     712      DO ixt=1,niso
     713        xtevap(ixt,i)       = evap(i)*Rsol(ixt,i)
     714        xtcoastalflow(ixt,i)= coastalflow(i)*Rsol(ixt,i)
     715        xtriverflow(ixt,i)  = riverflow(i)*Rsol(ixt,i)
     716      ENDDO
     717    ENDDO
     718
     719    IF (niso /= ntraciso) THEN
     720      abort_message='water tagging pas encore pr\E9vu ici'
     721      CALL abort_physic(modname,abort_message,1)
     722    ENDIF
     723
     724#ifdef ISOTRAC
     725    IF ((option_traceurs == 20).or.(option_traceurs == 23)) THEN 
     726      izone_recoit = bassin_map(knindex(i))
     727    ELSE
     728      izone_recoit = izone_cont
     729    ENDIF
     730
     731    DO i=1,knon
     732      DO ixt=niso+1,ntraciso
     733        IF (index_zone(ixt) == izone_recoit) THEN
     734          xtevap(ixt,i) = xtevap(index_iso(ixt),i)
     735        ELSE
     736          xtevap(ixt,i) = 0.0
     737        ENDIF
     738      ENDDO !do ixt=niso+1,ntraciso
     739    ENDDO
     740#endif
     741#endif
    664742   
    665743  END SUBROUTINE surf_land_orchidee
  • LMDZ6/trunk/libf/phylmd/surf_land_orchidee_nolic_mod.F90

    r5894 r5927  
    4646       tsol_rad, tsurf_new, alb1_new, alb2_new, &
    4747       emis_new, z0m_new, z0h_new, qsurf, &
    48        veget, lai, height )
     48       veget, lai, height &
     49#ifdef ISO
     50       ,xtprecip_rain,xtprecip_snow, &
     51        xtriverflow, xtcoastalflow, xtevap, Rsol &
     52#endif
     53       & )
    4954
    5055    USE mod_surf_para
     
    5661#ifdef CPP_VEGET
    5762    USE time_phylmdz_mod, ONLY: itau_phy
     63#endif
     64#ifdef ISO
     65    USE infotrac_phy,  ONLY: niso, ntraciso=>ntiso
     66    USE isotopes_mod,  ONLY: ridicule
     67#ifdef ISOTRAC
     68    USE isotrac_mod, ONLY: index_zone,index_iso, option_traceurs,izone_cont, &
     69&       bassin_map
     70#endif
    5871#endif
    5972    USE yomcst_mod_h
     
    133146    REAL, DIMENSION(klon), INTENT(IN)         :: lwdown, swnet, swdown, ps
    134147    REAL, DIMENSION(klon), INTENT(IN)         :: q2m, t2m
     148#ifdef ISO
     149    REAL, DIMENSION(ntraciso,klon), INTENT(IN):: xtprecip_rain, xtprecip_snow
     150#endif
    135151
    136152! Parametres de sortie
    137153!****************************************************************************************
    138154    REAL, DIMENSION(klon), INTENT(OUT)        :: evap, fluxsens, fluxlat, qsurf
     155!PRSN
     156#ifdef ISO
     157    REAL, DIMENSION(ntraciso,klon), INTENT(OUT)        :: xtriverflow
     158    REAL, DIMENSION(ntraciso,klon), INTENT(OUT)        :: xtcoastalflow
     159    REAL, DIMENSION(ntraciso,klon), INTENT(OUT)        :: xtevap
     160    REAL, DIMENSION(ntraciso,klon), INTENT(INOUT)      :: Rsol
     161#endif
     162!PRSN
    139163    REAL, DIMENSION(klon), INTENT(OUT)        :: tsol_rad, tsurf_new
    140164    REAL, DIMENSION(klon), INTENT(OUT)        :: alb1_new, alb2_new
     
    228252    !$OMP THREADPRIVATE(ind_cell)
    229253    INTEGER :: begin, end
     254#ifdef ISO
     255    ! profondeur du reservoir pour le calcul de la moyenne glissante
     256    REAL, PARAMETER :: h_sol = 0.1
     257#ifdef ISOTRAC
     258    INTEGER, SAVE :: izone_recoit
     259    !$OMP THREADPRIVATE(izone_recoit)
     260#endif
     261    INTEGER :: i, ixt
     262#endif
    230263!
    231264! Fin definition
     
    641674! fields_in can then used elsewhere in the model
    642675     
    643      fields_in(:,:)=0.0
    644 
    645      DO nb=1, nbcf_in_orc
    646        DO igrid = 1, knon
     676    fields_in(:,:)=0.0
     677
     678    DO nb=1, nbcf_in_orc
     679      DO igrid = 1, knon
    647680        ireal = knindex(igrid)
    648681        fields_in(ireal,nb)=yfields_in(igrid,nb)
    649        ENDDO
    650        WRITE(*,*) 'surf_land_orchidee_mod --- yfields_in :',cfname_in(nb)
    651      ENDDO
     682      ENDDO
     683      WRITE(*,*) 'surf_land_orchidee_mod --- yfields_in :',cfname_in(nb)
     684    ENDDO
    652685! >> PC
     686
     687#ifdef ISO
     688        ! calcul de xtevap, xtcoostalflow, xtriverflow
     689    DO i=1,knon
     690      IF (precip_rain(i)+precip_snow(i).GT.ridicule) THEN
     691        DO ixt=1,niso
     692          ! hsol=10.0
     693          Rsol(ixt,i)=(h_sol*Rsol(ixt,i) &
     694     &                 +(xtprecip_rain(ixt,i)+xtprecip_snow(ixt,i))*dtime) &
     695     &                /(h_sol+(precip_rain(i)+precip_snow(i))*dtime)
     696        ENDDO  !do ixt=1,niso   
     697      ENDIF !if (precip_rain(i)+precip_snow(i).gt.ridicule) then
     698    ENDDO !do i=1,knon
     699
     700    DO i=1,knon
     701      DO ixt=1,niso
     702        xtevap(ixt,i)       = evap(i)*Rsol(ixt,i)
     703        xtcoastalflow(ixt,i)= coastalflow(i)*Rsol(ixt,i)
     704        xtriverflow(ixt,i)  = riverflow(i)*Rsol(ixt,i)
     705      ENDDO
     706    ENDDO
     707
     708    IF (niso /= ntraciso) THEN
     709      abort_message='water tagging pas encore pr\E9vu ici'
     710      CALL abort_physic(modname,abort_message,1)
     711    ENDIF
     712
     713#ifdef ISOTRAC
     714    IF ((option_traceurs == 20).or.(option_traceurs == 23)) THEN 
     715      izone_recoit = bassin_map(knindex(i))
     716    ELSE
     717      izone_recoit = izone_cont
     718    ENDIF
     719
     720    DO i=1,knon
     721      DO ixt=niso+1,ntraciso
     722        IF (index_zone(ixt) == izone_recoit) THEN
     723          xtevap(ixt,i) = xtevap(index_iso(ixt),i)
     724        ELSE
     725          xtevap(ixt,i) = 0.0
     726        ENDIF
     727      ENDDO !do ixt=niso+1,ntraciso
     728    ENDDO
     729#endif
     730#endif
    653731   
    654732  END SUBROUTINE surf_land_orchidee
  • LMDZ6/trunk/libf/phylmdiso/isotopes_routines_mod.F90

    r5894 r5927  
    33MODULE isotopes_routines_mod
    44  USE infotrac_phy, ONLY: niso, ntraciso=>ntiso, index_trac=>itZonIso, ntraceurs_zone=>nzone
     5
    56IMPLICIT NONE
    67
     
    1354213543&       bassin_map
    1354313544#endif
    13544 USE yoethf_mod_h
    13545         USE yomcst_mod_h
    13546 implicit none
    13547 
    13548 INCLUDE "FCTTRE.h"
     13545    USE yoethf_mod_h
     13546    USE yomcst_mod_h
     13547
     13548    IMPLICIT NONE
     13549
     13550    INCLUDE "FCTTRE.h"
    1354913551
    1355013552       
     
    1446214464USE paramet_mod_h
    1446314465USE yomcst_mod_h
    14464 implicit none
     14466
     14467IMPLICIT NONE
    1446514468
    1446614469INCLUDE "FCTTRE.h"
     
    1449214495    INTEGER, INTENT(IN)                  :: nisurf
    1449314496    INTEGER, DIMENSION(klon), INTENT(IN) :: knindex
    14494     real, DIMENSION(klon), INTENT(IN) :: run_off_lic_diag
    14495     real, INTENT(IN) :: coeff_rel_diag
     14497    REAL, DIMENSION(klon), INTENT(IN) :: run_off_lic_diag
     14498    REAL, INTENT(IN) :: coeff_rel_diag
    1449614499    REAL, DIMENSION(niso,klon), INTENT(IN)        :: Rland_ice
    1449714500       
     
    1585815861      SUBROUTINE phyisoetat0 (snow,run_off_lic_0, &
    1585915862     &           xtsnow,xtrun_off_lic_0, &
    15860      &           Rland_ice)
     15863     &           Rland_ice,Rsol)
    1586115864      USE dimphy, only: klon,klev
    1586215865      !USE mod_grid_phy_lmdz
     
    1586915872      !USE write_field_phy
    1587015873      USE indice_sol_mod, only: nbsrf 
    15871   USE isotopes_mod, ONLY: initialisation_iso, iso_eau,iso_HDO, &
     15874      USE isotopes_mod, ONLY: initialisation_iso, iso_eau,iso_HDO, &
    1587215875        ridicule_qsol,tnat, P_veg,iso_O18,ridicule, ridicule_snow,iso_O17, &
    1587315876        iso_HTO
    1587415877#ifdef ISOVERIF
    15875   USE isotopes_verif_mod
    15876 #endif
    15877 
    15878 USE compbl_mod_h
    15879        USE clesphys_mod_h
    15880 implicit none
     15878      USE isotopes_verif_mod
     15879#endif
     15880
     15881      USE compbl_mod_h
     15882      USE clesphys_mod_h
     15883
     15884      IMPLICIT NONE
    1588115885
    1588215886      ! equivalent de phyetat0 pour les isotopes
     
    1589115895      real xtrun_off_lic_0(niso,klon)
    1589215896      real Rland_ice(niso,klon)
     15897      real Rsol(niso,klon)
    1589315898
    1589415899      !REAL qsol(klon)
     
    1590915914     &           snow,run_off_lic_0, &
    1591015915     &           xtsnow,xtrun_off_lic_0, &
    15911      &           Rland_ice)
     15916     &           Rland_ice,Rsol)
    1591215917      else
    1591315918        write(*,*) 'phyisoetat0 57:'
     
    1591615921          call phyiso_etat0_dur( &
    1591715922     &         xtsnow, &
    15918      &         xtrun_off_lic_0, Rland_ice, &
     15923     &         xtrun_off_lic_0, Rland_ice, Rsol, &
    1591915924     &         snow,run_off_lic_0)
    1592015925      endif
     
    1603016035      SUBROUTINE phyiso_etat0_dur ( &
    1603116036     &          xtsnow, &
    16032      &         xtrun_off_lic_0, Rland_ice, &
     16037     &         xtrun_off_lic_0, Rland_ice, Rsol, &
    1603316038     &         snow,run_off_lic_0)
    1603416039
     
    1604316048      !USE write_field_phy
    1604416049      USE indice_sol_mod, only: nbsrf
    16045   USE isotopes_mod, ONLY: tnat,iso_HDO,iso_O18,iso_HTO, iso_eau,toce, &
     16050      USE isotopes_mod, ONLY: tnat,iso_HDO,iso_O18,iso_HTO, iso_eau,toce, &
    1604616051&       Rdefault,iso_O17,ridicule,ridicule_qsol
    1604716052#ifdef ISOVERIF
    16048   USE isotopes_verif_mod
     16053      USE isotopes_verif_mod
    1604916054#endif
    1605016055#ifdef ISOTRAC
    16051   USE isotrac_mod, ONLY: index_iso,index_zone,izone_init
    16052 #endif
    16053 USE compbl_mod_h
     16056      USE isotrac_mod, ONLY: index_iso,index_zone,izone_init
     16057#endif
     16058      USE compbl_mod_h
    1605416059      USE clesphys_mod_h
    16055         implicit none
    16056 
    16057         ! arguments 
     16060
     16061      IMPLICIT NONE
     16062
     16063      ! arguments 
    1605816064      !integer niso
    1605916065      !real xtsol(niso,klon)
     
    1606216068      real xtrun_off_lic_0(niso,klon)
    1606316069      real Rland_ice(niso,klon)
     16070      real Rsol(niso,klon)
    1606416071
    1606516072      !REAL qsol(klon)
     
    1621716224
    1621816225            if (q_ancien(i,k).gt.ridicule) then
    16219             xtl_ancien(ixt,i,k)=ql_ancien(i,k)*alpha(ixt) &
     16226              xtl_ancien(ixt,i,k)=ql_ancien(i,k)*alpha(ixt) &
    1622016227     &           *xt_ancien(ixt,i,k)/q_ancien(i,k)
    16221             xts_ancien(ixt,i,k)=qs_ancien(i,k)*alpha(ixt) &
     16228              xts_ancien(ixt,i,k)=qs_ancien(i,k)*alpha(ixt) &
    1622216229     &           *xt_ancien(ixt,i,k)/q_ancien(i,k)
    1622316230            else !if (q_ancien(i,k).gt.ridicule) then
     
    1631316320           Rland_ice(ixt,i)= &
    1631416321     &           tnat(ixt)*(deltaD_snow(ixt)/1000.0+1.0)
     16322           Rsol(ixt,i)=Rland_ice(ixt,i)
    1631516323          enddo
    1631616324      enddo !do i=1,klon
     
    1632616334     &           'phyiso_etat0_dur 756')
    1632716335         call iso_verif_noNAN(Rland_ice(ixt,i),'phyiso_etat0_dur 757')
     16336         call iso_verif_noNAN(Rsol(ixt,i),'phyiso_etat0_dur 757')
    1632816337         enddo !do ixt=1,niso
    1632916338         if (iso_eau.gt.0) then
     
    1640816417      end subroutine phyiso_etat0_dur
    1640916418
    16410 SUBROUTINE phyiso_etat0_fichier(snow, run_off_lic_0, xtsnow, xtrun_off_lic_0, Rland_ice)
     16419SUBROUTINE phyiso_etat0_fichier(snow, run_off_lic_0, xtsnow, xtrun_off_lic_0, Rland_ice, Rsol)
    1641116420   USE dimphy,             ONLY: klon,klev
    1641216421   USE iophy
     
    1642716436   USE isotrac_mod, ONLY: strtrac, initialisation_isotrac, index_iso, index_zone, izone_init
    1642816437#endif
    16429 USE compbl_mod_h
     16438   USE compbl_mod_h
    1643016439   USE clesphys_mod_h
     16440
    1643116441   IMPLICIT NONE
    1643216442
    16433    REAL, INTENT(IN) ::             snow     (klon,nbsrf)
    16434    REAL, INTENT(IN) ::    run_off_lic_0     (klon)
     16443   REAL, INTENT(IN)  ::             snow    (klon,nbsrf)
     16444   REAL, INTENT(IN)  ::    run_off_lic_0    (klon)
    1643516445   REAL, INTENT(OUT) ::          xtsnow(niso,klon,nbsrf)
    1643616446   REAL, INTENT(OUT) :: xtrun_off_lic_0(niso,klon)
    1643716447   REAL, INTENT(OUT) ::       Rland_ice(niso,klon)
     16448   REAL, INTENT(OUT) ::       Rsol     (niso,klon)
    1643816449
    1643916450   INTEGER :: ierr, i, ixt, k, nsrf, nid, nvarid, lnblnk
     
    1649816509         if (.NOT.found) CALL abort_physic('isotopes_routines_mod', 'phyiso_etat0_fichier 16581b: unfound isotopic variable',1)
    1649916510         found = phyetat0iso_get2(Rland_ice, "Rland_ice", "SR land ice", 0.)
     16511         found = phyetat0iso_get2(Rsol, "Rsol", "SR land soil", 0.)
    1650016512         found = phyetat0iso_srf3(xtsnow,      "XTSNOW", "Surface snow", 0.) ! CR avril 2023: deplacer ici
    1650116513         found = phyetat0iso_get2(xtrun_off_lic_0, "XTRUNOFFLIC0", "RUNOFFLIC0", 0.)
     
    1662916641     &           d_xt_decroiss, &
    1663016642     &           xt_seri)
    16631         USE isotopes_mod, only: iso_HTO,ok_prod_nucl_tritium
    16632         USE dimphy, only: klon,klev
    16633         USE geometry_mod, only: latitude_deg,longitude_deg, & ! en degré, remplace rlat et rlon
    16634      &             latitude,longitude ! en radian, remplace rlatd et rlond
    16635 #ifdef ISOVERIF
    16636         USE isotopes_verif_mod
     16643      USE isotopes_mod, ONLY: iso_HTO,ok_prod_nucl_tritium
     16644      USE dimphy, ONLY: klon,klev
     16645      USE geometry_mod, ONLY: latitude_deg,longitude_deg, & ! en degré, remplace rlat et rlon
     16646     &           latitude,longitude ! en radian, remplace rlatd et rlond
     16647#ifdef ISOVERIF
     16648      USE isotopes_verif_mod
    1663716649#endif
    1663816650      USE yomcst_mod_h
    16639 implicit none
     16651
     16652      IMPLICIT NONE
    1664016653
    1664116654
     
    1823118244     &                               kmin_jessai,kmax_jessai)
    1823218245        USE dimphy, only: klon,klev
    18233         use geometry_mod, only: latitude_deg,longitude_deg
     18246        USE geometry_mod, ONLY: latitude_deg,longitude_deg
    1823418247#ifdef ISOVERIF
    1823518248        USE isotopes_verif_mod
    1823618249#endif
    18237       USE dimensions_mod, ONLY: iim, jjm, llm, ndm
    18238 USE yomcst_mod_h
    18239 implicit none
     18250        USE dimensions_mod, ONLY: iim, jjm, llm, ndm
     18251        USE yomcst_mod_h
     18252
     18253      IMPLICIT NONE
    1824018254
    1824118255
     
    1837518389     &                                prod_nucl)
    1837618390        USE isotopes_mod, ONLY: iso_HTO
    18377         use geometry_mod, only: cell_area
    18378         use dimphy, only: klon,klev
     18391        USE geometry_mod, ONLY: cell_area
     18392        USE dimphy, ONLY: klon,klev
    1837918393#ifdef ISOVERIF
    1838018394        USE isotopes_verif_mod
    1838118395#endif
    18382       USE yomcst_mod_h
    18383 implicit none
     18396        USE yomcst_mod_h
     18397
     18398      IMPLICIT NONE
    1838418399
    1838518400
  • LMDZ6/trunk/libf/phylmdiso/phyaqua_mod.F90

    r5894 r5927  
    55  ! Routines complementaires pour la physique planetaire.
    66  USE clesphys_mod_h
    7     IMPLICIT NONE
     7
     8  IMPLICIT NONE
    89
    910CONTAINS
     
    7071    REAL :: xtsolsrf(niso,nlon, nbsrf), xtsnsrf(niso,nlon, nbsrf)
    7172    REAL :: Rland_ice(niso,nlon)
     73    REAL :: Rsol(niso,nlon)
    7274#endif
    7375
     
    354356!GG
    355357#ifdef ISO
    356     CALL pbl_surface_init_iso(xtsnsrf,Rland_ice)
     358    CALL pbl_surface_init_iso(xtsnsrf,Rland_ice,Rsol)
    357359#endif
    358360
  • LMDZ6/trunk/libf/phylmdiso/phyetat0_mod.F90

    r5894 r5927  
    2222!GG  USE surface_data,     ONLY : type_ocean, version_ocean
    2323  USE surface_data,     ONLY : type_ocean, version_ocean, iflag_seaice, &
    24                                    iflag_seaice_alb, iflag_leads
     24                               iflag_seaice_alb, iflag_leads
    2525!GG
    2626  USE phyetat0_get_mod, ONLY : phyetat0_get, phyetat0_srf
     
    125125  REAL xtrun_off_lic_0(niso,klon)
    126126  REAL Rland_ice(niso,klon)
     127  REAL Rsol(niso,klon)
    127128#endif
    128129
     
    650651  CALL phyisoetat0 (snow,run_off_lic_0, &
    651652  &           xtsnow,xtrun_off_lic_0, &
    652   &           Rland_ice)
     653  &           Rland_ice,Rsol)
    653654#ifdef ISOVERIF
    654655  WRITE(*,*) 'phyetat0 1074'
     
    805806  !GG
    806807#ifdef ISO
    807   CALL pbl_surface_init_iso(xtsnow,Rland_ice)
     808  CALL pbl_surface_init_iso(xtsnow,Rland_ice,Rsol)
    808809#endif
    809810  endif
  • LMDZ6/trunk/libf/phylmdiso/phyredem.F90

    r5894 r5927  
    9292  REAL xtrun_off_lic_0(niso,klon)
    9393  REAL Rland_ice(niso,klon)
     94  REAL Rsol(niso,klon)
    9495#endif
    9596
     
    112113     CALL pbl_surface_final(fder, snow, qsurf,  tsoil &
    113114#ifdef ISO
    114        ,xtsnow,Rland_ice &
     115       ,xtsnow,Rland_ice,Rsol &
    115116#endif       
    116117       )
     
    485486    CALL phyisoredem (pass, &
    486487   &           xtsnow, &
    487    &           xtrun_off_lic_0,Rland_ice, &
     488   &           xtrun_off_lic_0,Rland_ice, Rsol, &
    488489   &           run_off_lic_0)
    489490#endif
     
    555556! mais elle a besoin de put_field_srf1 qui est contenue
    556557! dans la subroutine phyredem. Si on veut mettre cette
    557 ! routine dans isotopes_mod, il faudrait convertir ce 
     558! routine dans isotopes_mod, il faudrait convertir ce
    558559! fichier en module pour pouvoir en appeler des routines
    559560
    560561SUBROUTINE phyisoredem (pass, &
    561562     &          xtsnow, &
    562      &          xtrun_off_lic_0,Rland_ice, &
     563     &          xtrun_off_lic_0,Rland_ice, Rsol, &
    563564     &          run_off_lic_0)
    564565 USE dimphy
     
    593594  REAL, INTENT(IN)    :: xtrun_off_lic_0(niso,klon)
    594595  REAL, INTENT(IN)    :: Rland_ice(niso,klon)
     596  REAL, INTENT(IN)    :: Rsol(niso,klon)
    595597  REAL, INTENT(IN)    :: run_off_lic_0(klon)
    596598  INTEGER, INTENT(IN) :: pass
     
    691693      CALL put_field(pass,  "Rland_ice"//TRIM(outiso), "ratio land ice",      iso_tmp)
    692694
     695      iso_tmp(:)=Rsol(ixt,:)
     696      CALL put_field(pass,  "Rsol"//TRIM(outiso), "ratio land soil",      iso_tmp)
     697
    693698      iso_tmp(:)=xtrun_off_lic_0(ixt,:)
    694699      CALL put_field(pass,"XTRUNOFFLIC0"//TRIM(outiso), "Runofflic0",  iso_tmp)
  • LMDZ6/trunk/libf/phylmdiso/physiq_mod.F90

    r5918 r5927  
    210210       u_seri,v_seri,cf_seri,rvc_seri,tr_seri, &
    211211       rhcl, &
    212 #ifdef ISO
    213        qx_seri, & ! CR
    214 #endif
     212       qx_seri, & ! CR-SN 4D ISO
    215213       ! Dynamic tendencies (diagnostics)
    216214       d_t_dyn,d_q_dyn,d_ql_dyn,d_qs_dyn,d_qbs_dyn, &
     
    229227       !
    230228       d_t_eva,d_q_eva,d_ql_eva,d_qi_eva, &
    231 #ifdef ISO
    232        d_qx_eva, &
    233 #endif
     229       d_qx_eva, & ! CR-SN 4D ISO
    234230       d_t_lsc,d_q_lsc,d_ql_lsc,d_qi_lsc, &
    235231       d_t_lscst,d_q_lscst, &
     
    444440       d_xt_eva, d_xt_lsc, d_xtl_lsc, d_xti_lsc, &
    445441       d_xt_ch4,d_xt_prod_nucl,d_xt_cosmo,d_xt_decroiss, &
    446        zxfxtcalving, xtevap,xtprw,    &
    447        xt_therm, dxtvdf_w, dxtvdf_x,           &
    448        zxfxtcalving, zxfxtfonte,       &
     442       xtevap, xtprw, uxtflux, vxtflux, &
     443       xt_therm, dxtvdf_w, dxtvdf_x,   &
     444       zxfxtcalving, zxfxtfonte,      &
    449445       zxxtrunofflic, & ! pas besoin du runoff, c'est seulement quand on couple à sisvat
    450        h1_diag,runoff_diag,xtrunoff_diag,zxxtsnow,xtVprecip,xtVprecipi, &
     446       h1_diag,runoff_diag,xtrunoff_diag, &
     447       xtriverflow, xtcoastalflow, &
     448       zxxtsnow,xtVprecip,xtVprecipi, &
    451449       xtrain_lsc,xtsnow_lsc,pxtrfl,pxtsfl,xtclw,d_deltaxt_wk, &
    452450       d_deltaxt_the,d_deltaxt_vdf,d_deltaxt_ajs_cv, &
     
    479477       USE phytracr_spl_mod, ONLY: phytracr_spl_out_init, phytracr_spl
    480478       USE s2s, ONLY : s2s_initialize, s2s_finalize
     479
    481480    IMPLICIT NONE
    482481
     
    834833    REAL d_xt_adjwk(ntraciso,klon,klev)
    835834#endif
     835
    836836    !
    837837    !RR:fin declarations poches froides
     
    14901490       WRITE(lunout,*) '================================================='
    14911491       CALL phys_local_var_init
     1492       WRITE(lunout,*) 'MAXVAL(runoff_diag(:))=',MAXVAL(runoff_diag)
    14921493       !
    14931494       !     appel a la lecture du run.def physique
     
    26532654          u_seri(i,k)  = u(i,k)
    26542655          v_seri(i,k)  = v(i,k)
    2655 #ifdef ISO
    26562656          qx_seri(i,k,:)  = qx(i,k,:)
    2657 #endif
    26582657          q_seri(i,k)  = qx(i,k,ivap)
    26592658          ql_seri(i,k) = qx(i,k,iliq)
     
    27712770       ENDDO
    27722771    ELSE
     2772!! SN trouver un moyen d'enlever cette ligne qui utilise strIdx et addPhase
    27732773! DC: make sure the final "1" index was meant for 1st H2O phase (vapor) !!!
    27742774       tr_seri(:,:,strIdx(tracers(:)%name,addPhase('H2O','g'))) = 0.0
     
    31933193    ! Calculs de l'orbite.
    31943194    ! Necessaires pour le rayonnement et la surface (calcul de l'albedo).
    3195     ! doit donc etre plac\'e avant radlwsw et pbl_surface
     3195    ! doit donc etre place avant radlwsw et pbl_surface
    31963196
    31973197    ! !!   jyg 17 Sep 2010 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     
    34473447     &      d_xt_vdf,d_xt_vdf_w,d_xt_vdf_x, &
    34483448     &      xtsol,dxtevap,zxxtsnow,zxfluxxt,fluxxt, &
    3449      &      h1_diag,runoff_diag,xtrunoff_diag &
     3449     &      h1_diag,runoff_diag,xtrunoff_diag, &
     3450     &      xtriverflow,xtcoastalflow &
    34503451#endif     
    34513452     &     )
     
    39613962       IF (ok_cvl) THEN ! new driver for convectL
    39623963          !
     3964
    39633965#ifdef ISO
    39643966#ifdef ISOVERIF
     
    45284530              IF (rneb(i,k)==0.) THEN
    45294531                ! On ne tient compte des tendances qu'en dehors des
    4530                 ! nuages (c'est-\`a-dire a priri dans une region ou
     4532                ! nuages (c'est-a-dire a priori dans une region ou
    45314533                ! l'eau se reevapore).
    45324534                dt_dwn(i,k)= dt_dwn(i,k)+ &
     
    48604862          ! Ne change pas les resultats avec les isotopes tant qu'on
    48614863          ! tourne avec le defaut : iflag_thermals_tenv=0
    4862           if ( iflag_thermals_tenv /= 0 ) then
     4864          IF ( iflag_thermals_tenv /= 0 ) THEN
    48634865            abort_message ='iflag_thermals_env/=0 : non prevu avec les isotopes'
    48644866            CALL abort_physic (modname,abort_message,1)
    4865           endif
     4867          ENDIF
    48664868          CALL calltherm(itap, pdtphys &
    48674869               ,pplay,paprs,pphi,weak_inversion &
     
    48974899          IF (mod(iflag_pbl_split/10,10) .GE. 1) THEN
    48984900             !  Si les thermiques ne sont presents que hors des
    4899              !  poches, la tendance moyenne associ\'ee doit etre
     4901             !  poches, la tendance moyenne associee doit etre
    49004902             !  multipliee par la fraction surfacique qu'ils couvrent.
    49014903             IF (mod(iflag_pbl_split/10,10) == 1) THEN
     
    49154917                d_deltat_the(:,:) = 0.
    49164918                d_deltaq_the(:,:) = 0.
     4919#ifdef ISO
     4920                DO ixt=1,ntraciso
     4921                  d_deltaxt_the(ixt,i,k) = 0.
     4922                ENDDO
     4923#endif
    49174924             ENDIF
    49184925
     
    50465053#endif 
    50475054        !#ifdef ISO
     5055
    50485056          IF (iflag_thermals==0) THEN
    50495057             ! Calling adjustment alone (but not the thermal plume model)
     
    71067114                      da,phi,phi2,d1a,dam,mp,ep,sigd,sij,clw,elij,         &
    71077115                      epmlmMm,eplaMm,upwd,dnwd,itop_con,ibas_con,          &
    7108                       ev,wdtrainAS,  wdtrainM,wght_cvfd,                    &
     7116                      ev,wdtrainAS,wdtrainM,wght_cvfd,                     &
    71097117                      fm_therm, entr_therm, rneb,                          &
    71107118                      beta_prec_fisrt,beta_prec,                           &
     
    72957303    ! ces variables sont diagnostiques, donc pas indispensables
    72967304
     7305#ifdef ISO
     7306    xtprw(:, :) = 0.   ! isotopic precipitable water
     7307    uxtflux(:, :) = 0. ! zonal humidity transport
     7308    vxtflux(:, :) = 0. ! meridional humidity transport
     7309    DO k = 1, klev
     7310      DO i = 1, klon
     7311        DO ixt =1, ntraciso
     7312          xtprw(ixt, i) = xtprw(ixt, i) + xt_seri(ixt, i, k) * zmasse(i, k)
     7313          uxtflux(ixt, i) = uxtflux(ixt, i) + xt_seri(ixt, i, k) * zmasse(i ,k) * u_seri(i ,k)
     7314          vxtflux(ixt, i) = vxtflux(ixt, i) + xt_seri(ixt, i, k) * zmasse(i ,k) * v_seri(i ,k)
     7315        ENDDO
     7316      ENDDO
     7317    ENDDO
     7318#endif
     7319     
    72977320    !=======================================================================
    72987321    !   SORTIES
  • LMDZ6/trunk/libf/phylmdiso/reevap.F90

    r5894 r5927  
    2525    USE yomcst_mod_h
    2626    USE yoethf_mod_h
    27 IMPLICIT none
     27
     28    IMPLICIT NONE
     29
    2830    !>======================================================================
    2931
    3032    INTEGER klon,klev,iflag_ice_thermo
    31     REAL, DIMENSION(klon,klev), INTENT(IN) :: t_seri
    32     REAL, DIMENSION(klon,klev,nqtot), INTENT(IN) ::    qx
    33     REAL, DIMENSION(klon,klev), INTENT(OUT) :: d_t_eva
    34     REAL, DIMENSION(klon,klev,nqtot), INTENT(OUT) ::    d_qx_eva
     33    REAL, DIMENSION(klon,klev),       INTENT(IN) :: t_seri
     34    REAL, DIMENSION(klon,klev,nqtot), INTENT(IN)  :: qx
     35    REAL, DIMENSION(klon,klev),       INTENT(OUT) :: d_t_eva
     36    REAL, DIMENSION(klon,klev,nqtot), INTENT(OUT) :: d_qx_eva
    3537
    3638    REAL za,zb,zdelta,zlvdcp,zlsdcp
     
    3941
    4042    !--------Stochastic Boundary Layer Triggering: ALE_BL--------
    41     !---Propri\'et\'es du thermiques au LCL
     43    !---Proprietes du thermiques au LCL
    4244
    4345    include "FCTTRE.h"
     
    8991        ELSE
    9092             
    91              !CR: on r\'e-\'evapore eau liquide et glace
     93             !CR: on re-evapore eau liquide et glace
    9294
    9395             !        zdelta = MAX(0.,SIGN(1.,RTT-t_seri(i,k)))
     
    111113        ENDIF
    112114
    113 
    114115      ENDDO
    115116    ENDDO
Note: See TracChangeset for help on using the changeset viewer.