New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 433 for trunk/NEMO/TOP_SRC – NEMO

Changeset 433 for trunk/NEMO/TOP_SRC


Ignore:
Timestamp:
2006-04-10T17:40:29+02:00 (18 years ago)
Author:
opalod
Message:

nemo_v1_update_044 : CT : update the passive tracers TOP component and the standard GYRE configuration

Location:
trunk/NEMO/TOP_SRC
Files:
30 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/TOP_SRC/SMS/trcbio.F

    r341 r433  
    212212C 4. zooplankton liquide excretion 
    213213C 
    214             zzoonh4 = tauzn * zzoo * fdoml  
    215             zzoodom = tauzn * zzoo * (1-fdoml)  
    216  
     214            zzoonh4 = tauzn * fzoolab * zzoo  
     215            zzoodom = tauzn * (1 - fzoolab) * zzoo 
     216C 
    217217C 5. mortality 
    218218C 
     
    226226C 
    227227            zzoobod = tmminz * zzoo * zzoo 
    228             fbod(ji,jj) = fbod(ji,jj) + zzoobod * fse3t(ji,jj,jk) 
     228            fbod(ji,jj) = fbod(ji,jj)  
     229     $                 + (1-fdbod) * zzoobod * fse3t(ji,jj,jk) 
     230            zboddet = fdbod * zzoobod 
    229231C 
    230232C 
     
    232234C 
    233235C 
    234             zdetnh4 = taudn * fdoml * zdet 
    235             zdetdom = taudn * (1 - fdoml) * zdet 
     236            zdetnh4 = taudn * fdetlab * zdet 
     237            zdetdom = taudn * (1 - fdetlab) * zdet  
     238 
    236239            zdomnh4 = taudomn * zdom 
    237240C 
     241C flux added to express how the excess of nitrogen from 
     242C PHY, ZOO and DET to DOM goes directly to NH4 (flux of ajustment) 
     243            zdomaju = (1 - redf/reddom) * (zphydom + zzoodom + zdetdom) 
    238244C 
    239245C 7. Nitrification 
     
    254260            zno3a = - zno3phy + znh4no3 
    255261            znh4a = - znh4phy - znh4no3 + zphynh4 + zzoonh4 + zdomnh4 
    256      $          + zdetnh4 
    257             zdeta = zphydet + zzoodet  - zdetzoo - zdetnh4 - zdetdom 
    258             zdoma = zphydom + zzoodom + zdetdom - zdomnh4 
     262     $          + zdetnh4 + zdomaju 
     263            zdeta = zphydet + zzoodet  - zdetzoo - zdetnh4 - zdetdom + 
     264     $          zboddet 
     265            zdoma = zphydom + zzoodom + zdetdom - zdomnh4 - zdomaju 
    259266C 
    260267#if defined key_trc_diabio 
     
    296303     $          -zzoobod-zzoonh4-zzoodom) *ze3t(jk) 
    297304            trc2d(ji,jj,18)=trc2d(ji,jj,18)+zdetdom*ze3t(jk) 
    298  
     305c trend number 19 is in trcexp.F 
    299306            trc3d(ji,jj,jk,1)= zno3phy *86400      
    300307            trc3d(ji,jj,jk,2)= znh4phy *86400      
  • trunk/NEMO/TOP_SRC/SMS/trclsm.lobster1.h90

    r341 r433  
    2323      !! local declarations 
    2424      !! ================== 
    25       INTEGER :: ji 
    2625      CHARACTER (len=32) :: clname 
    2726 
     
    4443      NAMELIST/natopt/xkg0,xkr0,xkgp,xkrp,xlg,xlr,rpig 
    4544#if defined key_trc_diabio 
     45      INTEGER :: ji 
    4646      NAMELIST/natdbi/ctrbio,ctrbil,ctrbiu,nwritebio 
    4747#endif 
  • trunk/NEMO/TOP_SRC/TRP/trcadv_cen2.F90

    r361 r433  
    249249                     &                + zfvj1 * ( trn(ji  ,jj  ,jk,jn) - trn(ji,jj-1,jk,jn) ) ) 
    250250                  ! save i- and j- advective trends computed as Uh gradh(T) 
    251                   trtrd(ji,jj,jk,jn,1) = ztai 
    252                   trtrd(ji,jj,jk,jn,2) = ztaj 
     251                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),1) = ztai 
     252                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),2) = ztaj 
    253253#endif 
    254254               END DO 
     
    317317#if defined key_trc_diatrd  
    318318                  ! save the vertical advective trends computed as w gradz(T) 
    319                   trtrd(ji,jj,jk,jn,3) = ztra - trn(ji,jj,jk,jn) * hdivn(ji,jj,jk) 
     319                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),3) = ztra - trn(ji,jj,jk,jn) * hdivn(ji,jj,jk) 
    320320#endif 
    321321               END DO 
  • trunk/NEMO/TOP_SRC/TRP/trcadv_muscl.F90

    r361 r433  
    226226                  ztaj =-zbtr * (  zt2(ji,jj,jk) - zt2(ji  ,jj-1,jk) - trn(ji,jj,jk,jn) * zfvj  ) 
    227227                  ! save i- and j- advective trends computed as Uh gradh(T) 
    228                   trtrd(ji,jj,jk,jn,1) = ztai 
    229                   trtrd(ji,jj,jk,jn,2) = ztaj 
     228                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),1) = ztai 
     229                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),2) = ztaj 
    230230#endif 
    231231               END DO 
     
    314314#if defined key_trc_diatrd 
    315315                  ! save the vertical advective trends computed as w gradz(T) 
    316                   trtrd(ji,jj,jk,jn,3) = ztra - trn(ji,jj,jk,jn) * hdivn(ji,jj,jk) 
     316                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),3) = ztra - trn(ji,jj,jk,jn) * hdivn(ji,jj,jk) 
    317317#endif 
    318318               END DO 
  • trunk/NEMO/TOP_SRC/TRP/trcadv_muscl2.F90

    r361 r433  
    274274                  ztaj =-zbtr * (  zt2(ji,jj,jk) - zt2(ji  ,jj-1,jk) - trn(ji,jj,jk,jn) * zfvj  ) 
    275275                  ! save i- and j- advective trends computed as Uh gradh(T) 
    276                   trtrd(ji,jj,jk,jn,1) = ztai 
    277                   trtrd(ji,jj,jk,jn,2) = ztaj 
     276                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),1) = ztai 
     277                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),2) = ztaj 
    278278 
    279279#endif 
     
    378378#if defined key_trc_diatrd 
    379379                  ! save the vertical advective trends computed as w gradz(T) 
    380                   trtrd(ji,jj,jk,jn,3) = ztra - trn(ji,jj,jk,jn) * hdivn(ji,jj,jk) 
     380                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),3) = ztra - trn(ji,jj,jk,jn) * hdivn(ji,jj,jk) 
    381381#endif 
    382382               END DO 
  • trunk/NEMO/TOP_SRC/TRP/trcadv_smolar.F90

    r361 r433  
    147147                 zti(ji,jj,jk) = trn(ji,jj,jk,jn) 
    148148#if defined key_trc_diatrd 
    149                  trtrd(ji,jj,jk,jn,1) = 0. 
    150                  trtrd(ji,jj,jk,jn,2) = 0. 
    151                  trtrd(ji,jj,jk,jn,3) = 0. 
     149                 IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),1) = 0. 
     150                 IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),2) = 0. 
     151                 IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),3) = 0. 
    152152#endif 
    153153              END DO 
     
    219219     &            + zkz(ji,jj,jk) - zkz(ji,jj,jk + 1) ) 
    220220#if defined key_trc_diatrd 
    221               trtrd(ji,jj,jk,jn,1) = trtrd(ji,jj,jk,jn,1) -  & 
     221              IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),1) = trtrd(ji,jj,jk,ikeep(jn),1) -  & 
    222222     &                       zbtr*( zkx(ji,jj,jk) - zkx(ji - 1,jj,jk) ) 
    223223 
    224               trtrd(ji,jj,jk,jn,2) = trtrd(ji,jj,jk,jn,2) -  & 
     224              IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),2) = trtrd(ji,jj,jk,ikeep(jn),2) -  & 
    225225     &            zbtr*( zky(ji,jj,jk) - zky(ji,jj - 1,jk) ) 
    226226 
    227               trtrd(ji,jj,jk,jn,3) = trtrd(ji,jj,jk,jn,3) -  & 
     227              IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),3) = trtrd(ji,jj,jk,ikeep(jn),3) -  & 
    228228     &            zbtr*( zkz(ji,jj,jk) - zkz(ji,jj,jk + 1) ) 
    229229#endif 
     
    446446     &              + zkz(ji,jj,jk) - zkz(ji,jj,jk + 1) ) 
    447447#if defined key_trc_diatrd 
    448                 trtrd(ji,jj,jk,jn,1) = trtrd(ji,jj,jk,jn,1) -    &   
     448                IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),1) = trtrd(ji,jj,jk,ikeep(jn),1) -    &   
    449449     &              zbtr*( zkx(ji,jj,jk) - zkx(ji - 1,jj,jk) )    
    450450 
    451                 trtrd(ji,jj,jk,jn,2) = trtrd(ji,jj,jk,jn,2) -    &   
     451                IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),2) = trtrd(ji,jj,jk,ikeep(jn),2) -    &   
    452452     &              zbtr*( zky(ji,jj,jk) - zky(ji,jj - 1,jk) ) 
    453453 
    454                 trtrd(ji,jj,jk,jn,3) = trtrd(ji,jj,jk,jn,3) -    &   
     454                IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),3) = trtrd(ji,jj,jk,ikeep(jn),3) -    &   
    455455     &              zbtr*( zkz(ji,jj,jk) - zkz(ji,jj,jk + 1) ) 
    456456#endif 
     
    491491     &            -zvn(ji,jj-1,jk) * e1v(ji,jj-1) * fse3v(ji,jj-1,jk)) 
    492492 
    493               trtrd(ji,jj,jk,jn,1) = trtrd(ji,jj,jk,jn,1) + zgm 
    494               trtrd(ji,jj,jk,jn,2) = trtrd(ji,jj,jk,jn,2) + zgz 
    495               trtrd(ji,jj,jk,jn,3) = trtrd(ji,jj,jk,jn,3)    &   
     493              IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),1) = trtrd(ji,jj,jk,ikeep(jn),1) + zgm 
     494              IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),2) = trtrd(ji,jj,jk,ikeep(jn),2) + zgz 
     495              IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),3) = trtrd(ji,jj,jk,ikeep(jn),3)    &   
    496496     &            - trn(ji,jj,jk,jn) * hdivn(ji,jj,jk) 
    497497            END DO 
     
    501501        ! Lateral boundary conditions on trtrd: 
    502502 
    503         CALL lbc_lnk( trtrd(:,:,:,jn,1), 'T', 1. ) 
    504         CALL lbc_lnk( trtrd(:,:,:,jn,2), 'T', 1. ) 
    505         CALL lbc_lnk( trtrd(:,:,:,jn,3), 'T', 1. ) 
     503        IF (luttrd(jn)) CALL lbc_lnk( trtrd(:,:,:,ikeep(jn),1), 'T', 1. ) 
     504        IF (luttrd(jn)) CALL lbc_lnk( trtrd(:,:,:,ikeep(jn),2), 'T', 1. ) 
     505        IF (luttrd(jn)) CALL lbc_lnk( trtrd(:,:,:,ikeep(jn),3), 'T', 1. ) 
    506506#endif 
    507507 
  • trunk/NEMO/TOP_SRC/TRP/trcadv_tvd.F90

    r404 r433  
    8181         zfm_ui, zfm_vj, zfm_wk             !    "         " 
    8282 
     83#if defined key_trc_diatrd 
     84       REAL(wp) :: & 
     85          zgm, zgz 
     86#endif 
     87 
    8388      CHARACTER (len=22) :: charout 
    8489      !!---------------------------------------------------------------------- 
     
    168173                     &              + ztv(ji,jj,jk) - ztv(ji  ,jj-1,jk  )   & 
    169174                     &              + ztw(ji,jj,jk) - ztw(ji  ,jj  ,jk+1) ) * zbtr 
     175 
     176#if defined key_trc_diatrd 
     177                  IF ( luttrd(jn) ) & 
     178                     trtrd(ji,jj,jk,ikeep(jn),1) = trtrd(ji,jj,jk,ikeep(jn),1) -  & 
     179                        &                          zbtr * ( ztu(ji,jj,jk) - ztu(ji-1,jj,jk) )                      
     180                  IF ( luttrd(jn) ) & 
     181                     trtrd(ji,jj,jk,ikeep(jn),2) = trtrd(ji,jj,jk,ikeep(jn),2) -  & 
     182                        &                          zbtr * ( ztv(ji,jj,jk) - ztv(ji,jj-1,jk) )                      
     183                  IF ( luttrd(jn) ) & 
     184                     trtrd(ji,jj,jk,ikeep(jn),3) = trtrd(ji,jj,jk,ikeep(jn),3) -  & 
     185                        &                          zbtr * ( ztw(ji,jj,jk) - ztw(ji,jj,jk+1) ) 
     186#endif 
    170187               END DO 
    171188            END DO 
     
    231248               DO ji = fs_2, fs_jpim1   ! vector opt. 
    232249                  zbtr = 1. / ( e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) ) 
     250#if defined key_trc_diatrd 
     251                  IF ( luttrd(jn) ) & 
     252                     trtrd(ji,jj,jk,ikeep(jn),1) = trtrd(ji,jj,jk,ikeep(jn),1) -  & 
     253                        &                          zbtr * ( ztu(ji,jj,jk) - ztu(ji-1,jj,jk) )                      
     254                  IF ( luttrd(jn) ) & 
     255                     trtrd(ji,jj,jk,ikeep(jn),2) = trtrd(ji,jj,jk,ikeep(jn),2) -  & 
     256                        &                          zbtr * ( ztv(ji,jj,jk) - ztv(ji,jj-1,jk) )                      
     257                  IF ( luttrd(jn) ) & 
     258                     trtrd(ji,jj,jk,ikeep(jn),3) = trtrd(ji,jj,jk,ikeep(jn),3) -  & 
     259                        &                          zbtr * ( ztw(ji,jj,jk) - ztw(ji,jj,jk+1) ) 
     260#endif 
    233261                  tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn)   & 
    234262                     &         - ( ztu(ji,jj,jk) - ztu(ji-1,jj  ,jk  )   & 
     
    238266            END DO 
    239267         END DO 
     268         ! 6.0 convert the transport trend into advection trend 
     269         ! ---------------------------------------------------- 
     270          
     271#if defined key_trc_diatrd 
     272         DO jk = 1,jpk 
     273            DO jj = 2,jpjm1 
     274               DO  ji = 2,jpim1 
     275                  zbtr = 1. / ( e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) ) 
     276                  zgm = zbtr * trn(ji,jj,jk,jn) *     & 
     277                     &         (  zun(ji  ,jj,jk) * e2u(ji  ,jj) * fse3u(ji  ,jj,jk)    & 
     278                     &          - zun(ji-1,jj,jk) * e2u(ji-1,jj) * fse3u(ji-1,jj,jk) ) 
     279                   
     280                  zgz = zbtr * trn(ji,jj,jk,jn) *     & 
     281                     &         (  zvn(ji,jj  ,jk) * e1v(ji,jj  ) * fse3v(ji,jj  ,jk)    & 
     282                     &          - zvn(ji,jj-1,jk) * e1v(ji,jj-1) * fse3v(ji,jj-1,jk) ) 
     283                   
     284                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),1) = trtrd(ji,jj,jk,ikeep(jn),1) + zgm 
     285                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),2) = trtrd(ji,jj,jk,ikeep(jn),2) + zgz 
     286                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),3) = trtrd(ji,jj,jk,ikeep(jn),3)    & 
     287                     &            - trn(ji,jj,jk,jn) * hdivn(ji,jj,jk) 
     288               END DO 
     289            END DO 
     290         END DO 
     291          
     292         ! Lateral boundary conditions on trtrd: 
     293          
     294         IF (luttrd(jn)) CALL lbc_lnk( trtrd(:,:,:,ikeep(jn),1), 'T', 1. ) 
     295         IF (luttrd(jn)) CALL lbc_lnk( trtrd(:,:,:,ikeep(jn),2), 'T', 1. ) 
     296         IF (luttrd(jn)) CALL lbc_lnk( trtrd(:,:,:,ikeep(jn),3), 'T', 1. ) 
     297#endif 
    240298 
    241299      END DO 
  • trunk/NEMO/TOP_SRC/TRP/trcbbl.F90

    r403 r433  
    383383 
    384384      END SELECT 
    385  
     385       
    386386      ! 2. Additional second order diffusive trends 
    387387      ! ------------------------------------------- 
     
    416416#  endif 
    417417         END DO 
     418#endif 
    418419 
    419420         IF( cp_cfg == "orca" ) THEN 
     
    447448             
    448449         ENDIF 
    449  
    450450          
    451451         ! second derivative (divergence) and add to the general tracer trend 
  • trunk/NEMO/TOP_SRC/TRP/trcdmp.F90

    r352 r433  
    108108#    if defined key_trc_diatrd 
    109109                        ! save the trends for diagnostics 
    110                         trtrd(ji,jj,jk,jn,jpdiatrc) = ztra 
     110                        IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),jpdiatrc) = ztra 
    111111#    endif 
    112112                     END DO 
     
    129129#    if defined key_trc_diatrd 
    130130                        ! save the trends for diagnostics 
    131                         trtrd(ji,jj,jk,jn,jpdiatrc) = ztra 
     131                        IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),jpdiatrc) = ztra 
    132132#    endif 
    133133                     END DO 
     
    149149#    if defined key_trc_diatrd 
    150150                        ! save the trends for diagnostics 
    151                         trtrd(ji,jj,jk,jn,jpdiatrc) = ztra 
     151                        IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),jpdiatrc) = ztra 
    152152#    endif 
    153153                     END DO 
  • trunk/NEMO/TOP_SRC/TRP/trcldf_bilap.F90

    r349 r433  
    195195#if defined key_trc_diatrd 
    196196                  ! save the horizontal diffusive trends 
    197                   trtrd(ji,jj,jk,jn,4) = (  ztu(ji,jj,jk) - ztu(ji-1,jj,jk) ) * zbtr(ji,jj) 
    198                   trtrd(ji,jj,jk,jn,5) = (  ztv(ji,jj,jk) - ztv(ji-1,jj,jk) ) * zbtr(ji,jj) 
     197                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),4) = (  ztu(ji,jj,jk) - ztu(ji-1,jj,jk) ) * zbtr(ji,jj) 
     198                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),5) = (  ztv(ji,jj,jk) - ztv(ji-1,jj,jk) ) * zbtr(ji,jj) 
    199199#endif 
    200200               END DO 
     
    205205#if defined key_trc_diatrd 
    206206         ! Lateral boundary conditions on the laplacian zlt   (unchanged sgn) 
    207          CALL lbc_lnk( trtrd(:,:,:,jn,5), 'T', 1. )   
     207         IF (luttrd(jn)) CALL lbc_lnk( trtrd(:,:,:,ikeep(jn),5), 'T', 1. )   
    208208#endif 
    209209      END DO 
  • trunk/NEMO/TOP_SRC/TRP/trcldf_bilapg.F90

    r349 r433  
    112112#if defined key_trc_diatrd 
    113113                  ! save the horizontal diffusive trends 
    114                   trtrd(ji,jj,jk,jn,3) = wk2(ji,jj,jk,jn) 
     114                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),3) = wk2(ji,jj,jk,jn) 
    115115#endif 
    116116               END DO 
  • trunk/NEMO/TOP_SRC/TRP/trcldf_iso.F90

    r349 r433  
    197197                  tra (ji,jj,jk,jn) = tra (ji,jj,jk,jn) + ztra 
    198198#if defined key_trc_diatrd 
    199                   trtrd (ji,jj,jk,jn,4) = ( zftu(ji,jj,jk) - zftu(ji-1,jj,jk  ) ) * zbtr 
    200                   trtrd (ji,jj,jk,jn,5) = ( zftv(ji,jj,jk) - zftv(ji,jj-1,jk  ) ) * zbtr 
     199                  IF (luttrd(jn)) trtrd (ji,jj,jk,ikeep(jn),4) = ( zftu(ji,jj,jk) - zftu(ji-1,jj,jk  ) ) * zbtr 
     200                  IF (luttrd(jn)) trtrd (ji,jj,jk,ikeep(jn),5) = ( zftv(ji,jj,jk) - zftv(ji,jj-1,jk  ) ) * zbtr 
    201201#endif 
    202202               END DO 
  • trunk/NEMO/TOP_SRC/TRP/trcldf_iso_zps.F90

    r349 r433  
    220220                  tra (ji,jj,jk,jn) = tra (ji,jj,jk,jn) + ztra 
    221221#if defined key_trc_diatrd 
    222                   trtrd (ji,jj,jk,jn,4) = zbtr * ( zftu(ji,jj,jk) - zftu(ji-1,  jj,jk) ) 
    223                   trtrd (ji,jj,jk,jn,5) = zbtr * ( zftv(ji,jj,jk) - zftv(ji  ,jj-1,jk) ) 
     222                  IF (luttrd(jn)) trtrd (ji,jj,jk,ikeep(jn),4) = zbtr * ( zftu(ji,jj,jk) - zftu(ji-1,  jj,jk) ) 
     223                  IF (luttrd(jn)) trtrd (ji,jj,jk,ikeep(jn),5) = zbtr * ( zftv(ji,jj,jk) - zftv(ji  ,jj-1,jk) ) 
    224224#endif 
    225225               END DO 
     
    232232                  ztagu = ( zftug(ji,jj) - zftug(ji-1,jj  ) ) * zbtr 
    233233                  ztagv = ( zftvg(ji,jj) - zftvg(ji  ,jj-1) ) * zbtr 
    234                   trtrd (ji,jj,jk,jn,4) = trtrd(ji,jj,jk,jn,4) - ztagu 
    235                   trtrd (ji,jj,jk,jn,5) = trtrd(ji,jj,jk,jn,5) - ztagv 
     234                  IF (luttrd(jn)) trtrd (ji,jj,jk,ikeep(jn),4) = trtrd(ji,jj,jk,ikeep(jn),4) - ztagu 
     235                  IF (luttrd(jn)) trtrd (ji,jj,jk,ikeep(jn),5) = trtrd(ji,jj,jk,ikeep(jn),5) - ztagv 
    236236               END DO 
    237237            END DO 
  • trunk/NEMO/TOP_SRC/TRP/trcldf_lap.F90

    r349 r433  
    132132#if defined key_trc_diatrd 
    133133                  ! save the horizontal diffusive trends 
    134                   trtrd(ji,jj,jk,jn,4) = ztrax 
    135                   trtrd(ji,jj,jk,jn,5) = ztray 
     134                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),4) = ztrax 
     135                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),5) = ztray 
    136136#endif 
    137137               END DO 
  • trunk/NEMO/TOP_SRC/TRP/trcrad.F90

    r349 r433  
    4848      !! * Local declarations 
    4949      INTEGER ::  ji, jj, jk, jn             ! dummy loop indices 
    50 #if defined key_trc_pisces 
     50#if defined key_trc_pisces || defined key_trc_lobster1 
    5151      REAL(wp) :: zvolk, trcorb, trmasb ,trcorn, trmasn   
    5252#endif 
     
    6161 
    6262 
    63 #if defined key_trc_lobster1 || defined key_cfc 
     63#if defined key_cfc 
    6464      DO jn = 1, jptra 
    6565         DO jk = 1, jpkm1 
     
    7373      END DO 
    7474       
    75 #elif defined key_trc_pisces 
     75#elif defined key_trc_pisces || defined key_trc_lobster1 
     76 
    7677      DO jn = 1, jptra 
    7778         trcorb = 0. 
     
    8687                  &  * facvol(ji,jj,jk) & 
    8788#endif 
    88                   &  * tmask(ji,jj,jk)   
     89                  &  * tmask(ji,jj,jk) * tmask_i(ji,jj) 
    8990 
    9091                  trcorb = trcorb + MIN( 0., trb(ji,jj,jk,jn) )  * zvolk 
  • trunk/NEMO/TOP_SRC/TRP/trcstp.F90

    r349 r433  
    1212   USE trc              ! ocean passive tracers variables  
    1313   USE trctrp           ! passive tracers transport 
     14   USE trctrp1d         ! passive tracers transport 1D configuration 
    1415   USE trcsms           ! passive tracers sources and sinks 
    15    USE prtctl_trc          ! Print control for debbuging 
     16   USE prtctl_trc       ! Print control for debbuging 
    1617   USE trcdia 
     18   USE trcdit 
    1719   USE trcrst 
     20   USE ini1d 
    1821 
    1922   IMPLICIT NONE 
     
    4851      CHARACTER (len=25) :: charout 
    4952 
    50       IF( kt == nit000 )    CALL trc_dia( kt, kindic )     ! diagnostics init. 
    51  
    5253      ! this ROUTINE is called only every ndttrc time step 
    5354      IF( MOD( kt , ndttrc ) /= 0 ) RETURN 
     
    6364 
    6465      IF(ln_ctl)   THEN  ! print mean trends (used for debugging) 
    65          WRITE(charout, FMT="('sms')") 
     66         WRITE(charout, FMT="('SMS')") 
    6667         CALL prt_ctl_trc_info(charout) 
    6768         CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm) 
    6869      ENDIF 
    69   
    7070 
    7171      ! transport of passive tracers 
     72      IF( lk_cfg_1d  )  THEN 
     73         CALL trc_trp_1d( kt )    
     74      ELSE 
     75         CALL trc_trp( kt ) 
     76      ENDIF 
    7277 
    73       CALL trc_trp( kt ) 
     78 
     79      IF(ln_ctl)   THEN  ! print mean trends (used for debugging) 
     80         WRITE(charout, FMT="('TRP')") 
     81         CALL prt_ctl_trc_info(charout) 
     82         CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm) 
     83      ENDIF 
    7484 
    7585      CALL trc_wri( kt )            ! outputs 
  • trunk/NEMO/TOP_SRC/TRP/trctrp.F90

    r349 r433  
    125125                               CALL trc_nxt( kt )            ! tracer fields at next time step 
    126126  
    127                                CALL trc_rad( kt )            ! Correct artificial negative concentrations  
    128       !                                                      ! for isopycnal scheme 
     127                               CALL trc_rad( kt )            ! Correct artificial negative concentrations for isopycnal scheme 
     128      !                                                       
    129129 
    130130       IF( lk_zps           )   CALL zps_hde_trc( kt, trb, gtru, gtrv )  ! Partial steps: now horizontal gradient 
  • trunk/NEMO/TOP_SRC/TRP/trczdf_imp.F90

    r349 r433  
    159159               DO ji = fs_2, fs_jpim1   ! vector opt. 
    160160                  ztra = ( zwx(ji,jj,jk) - trb(ji,jj,jk,jn) ) / rdttrc(jk) 
    161                   trtrd(ji,jj,jk,jn,6) = ztra - tra(ji,jj,jk,jn) + trtrd(ji,jj,jk,jn,6) 
     161                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),6) = ztra - tra(ji,jj,jk,jn) + trtrd(ji,jj,jk,ikeep(jn),6) 
    162162               END DO 
    163163            END DO 
     
    168168               DO ji = fs_2, fs_jpim1   ! vector opt. 
    169169                  ztra = ( zwx(ji,jj,jk) - trb(ji,jj,jk,jn) ) / rdttrc(jk) 
    170                   trtrd(ji,jj,jk,jn,6) = ztra - tra(ji,jj,jk,jn) 
     170                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),6) = ztra - tra(ji,jj,jk,jn) 
    171171               END DO 
    172172            END DO 
  • trunk/NEMO/TOP_SRC/TRP/trczdf_iso.F90

    r377 r433  
    344344                  !  WARNING trtrd(ji,jj,jk,6) used for vertical gent velocity trend 
    345345                  !                           not for damping !!! 
    346                   trtrd(ji,jj,jk,jn,6) = ztavg 
     346                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),6) = ztavg 
    347347#   endif 
    348                   trtrd(ji,jj,jk,jn,6) = ztav - ztavg 
     348                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),6) = ztav - ztavg 
    349349#endif 
    350350               END DO 
     
    408408               DO ji = 2, jpim1 
    409409                  ztra = ( zwx(ji,jk) - trb(ji,jj,jk,jn) ) / rdttrc(jk) 
    410                   trtrd(ji,jj,jk,jn,6) = ztra - tra(ji,jj,jk,jn) + trtrd(ji,jj,jk,jn,6) 
     410                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),6) = ztra - tra(ji,jj,jk,jn) + trtrd(ji,jj,jk,ikeep(jn),6) 
    411411               END DO 
    412412            END DO 
     
    415415               DO ji = 2, jpim1 
    416416                  ztra = ( zwx(ji,jk) - trb(ji,jj,jk,jn) ) / rdttrc(jk) 
    417                   trtrd(ji,jj,jk,jn,6) = ztra - tra(ji,jj,jk,jn) 
     417                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),6) = ztra - tra(ji,jj,jk,jn) 
    418418               END DO 
    419419            END DO 
  • trunk/NEMO/TOP_SRC/TRP/trczdf_iso_vopt.F90

    r349 r433  
    164164         zwi, zwt, zavsi                     ! temporary workspace arrays 
    165165      REAL(wp) ::    ztra              !temporary scalars 
     166#  if defined key_trc_diatrd 
     167      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   ztrd 
     168#  endif 
    166169      !!--------------------------------------------------------------------- 
    167170 
     
    192195         zavsi(  :,:,1)=0.e0   ;     zavsi(:,:,jpk)=0.e0 
    193196 
     197#  if defined key_trc_diatrd 
     198         ! save the tra trend 
     199         ztrd(:,:,:) = tra(:,:,:,jn) 
     200#  endif 
    194201 
    195202         ! II. Vertical trend associated with the vertical physics 
     
    239246            END DO 
    240247         END DO 
    241  
    242248 
    243249         !! Matrix inversion from the first level 
     
    311317               DO ji = fs_2, fs_jpim1   ! vector opt. 
    312318                  ztra = ( tra(ji,jj,jk,jn) - trb(ji,jj,jk,jn) ) / rdttrc(jk) 
    313                   trtrd(ji,jj,jk,jn,6) = ztra - tra(ji,jj,jk,jn) + trtrd(ji,jj,jk,jn,6) 
     319                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),6) = ztra - ztrd(ji,jj,jk) + trtrd(ji,jj,jk,ikeep(jn),6) 
    314320               END DO 
    315321            END DO 
     
    320326               DO ji = fs_2, fs_jpim1   ! vector opt. 
    321327                  ztra = ( tra(ji,jj,jk,jn) - trb(ji,jj,jk,jn) ) / rdttrc(jk) 
    322                   trtrd(ji,jj,jk,jn,6) = ztra - tra(ji,jj,jk,jn) 
     328                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),6) = ztra - ztrd(ji,jj,jk) 
    323329               END DO 
    324330            END DO 
     
    544550                  ztavg = ( zwx(ji,jj,jk) - zwx(ji,jj,jk+1) ) * zbtr 
    545551                  !  WARNING trtrd(ji,jj,jk,7) used for vertical gent velocity trend  not for damping !!! 
    546                   trtrd(ji,jj,jk,jn,7) = ztavg 
     552                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),7) = ztavg 
    547553#   endif 
    548                   trtrd(ji,jj,jk,jn,6) = ztav - ztavg 
     554                  IF (luttrd(jn)) trtrd(ji,jj,jk,ikeep(jn),6) = ztav - ztavg 
    549555#endif 
    550556               END DO 
  • trunk/NEMO/TOP_SRC/oce_trc.F90

    r375 r433  
    9595      ibonit   => ibonit  ,  & !:i-processor neighbour existence 
    9696      ibonjt   => ibonjt  ,  & !:j- processor neighbour existence  
     97      nlci     => nlci    ,  & !:i- & j-dimensions of the local subdomain 
     98      nlcj     => nlcj    ,  & !: 
     99      nldi     => nldi    ,  & !:first and last indoor i- and j-indexes 
     100      nlei     => nlei    ,  & !: 
     101      nldj     => nldj    ,  & !: 
     102      nlej     => nlej    ,  & !: 
    97103      nlcit    => nlcit   ,  & !:dimensions of every i-subdomain 
    98104      nlcjt    => nlcjt   ,  & !:dimensions of every j-subdomain 
  • trunk/NEMO/TOP_SRC/par_trc_trp.F90

    r340 r433  
    2828   !!--------------------------------------------------------------------- 
    2929   INTEGER, PUBLIC, PARAMETER :: jptra   = 6 
    30 #  if defined key_trc_diaadd 
     30#if defined key_trc_diaadd 
    3131   INTEGER, PUBLIC, PARAMETER :: jpdia2d = 19 
    3232   INTEGER, PUBLIC, PARAMETER :: jpdia3d = 3 
    33 #  endif 
     33#endif 
    3434#elif defined key_cfc 
    3535   !!--------------------------------------------------------------------- 
     
    3737   !!--------------------------------------------------------------------- 
    3838   INTEGER, PUBLIC, PARAMETER :: jptra   = 2 
    39 #  if defined key_trc_diaadd 
     39#if defined key_trc_diaadd 
    4040   INTEGER, PUBLIC, PARAMETER :: jpdia2d = 1 
    4141   INTEGER, PUBLIC, PARAMETER :: jpdia3d = 1 
    42 #  endif 
     42#endif 
    4343#elif defined key_trc_pisces 
    4444   !!--------------------------------------------------------------------- 
     
    4646   !!--------------------------------------------------------------------- 
    4747   INTEGER, PUBLIC, PARAMETER :: jptra   = 24 
    48 #  if defined key_trc_diaadd 
     48#if defined key_trc_diaadd 
    4949   INTEGER, PUBLIC, PARAMETER :: jpdia2d = 13 
    5050   INTEGER, PUBLIC, PARAMETER :: jpdia3d = 11 
    51 #  endif 
     51#endif 
    5252#else 
    5353   !!--------------------------------------------------------------------- 
  • trunk/NEMO/TOP_SRC/trc.F90

    r340 r433  
    4949   !! passive tracers fields (before,now,after) 
    5050   !! -------------------------------------------------- 
    51    REAL(wp), PUBLIC  ::  & 
    52       trai            !!: initial total tracer 
     51   REAL(wp), PUBLIC, SAVE  ::  & 
     52      trai    ,   &   !!: initial total tracer 
     53      areatot         !!: total volume  
    5354 
    5455   REAL(wp), PUBLIC, DIMENSION (jpi,jpj,jpk,jptra) :: & 
     
    123124      nwritetrc       !!: time step frequency for concentration outputs (namelist) 
    124125    
    125 # if defined key_trc_diaadd 
     126#if defined key_trc_diaadd 
    126127   !! additional 2D/3D outputs namelist 
    127128   !! -------------------------------------------------- 
     
    153154#endif 
    154155    
    155 # if defined key_trc_diatrd 
     156#if defined key_trc_diatrd 
    156157    
    157158   !!  non conservative trends (biological, ...) 
     
    174175    
    175176    
    176    REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk,jptra,jpdiatrc) :: & 
     177   REAL(wp), PUBLIC, DIMENSION(:,:,:,:,:), ALLOCATABLE, SAVE :: & 
    177178      trtrd           !!: trends of the tracer equations 
    178179    
     180   INTEGER, PUBLIC, DIMENSION(jptra), SAVE :: ikeep ! indice of tracer for which dyn trends are stored 
     181   INTEGER, PUBLIC, SAVE                   :: nkeep ! number of tracers for which dyn trends are stored  
     182                                                    ! (used to allocate trtrd buffer) 
     183 
    179184   !! netcdf files and index common 
    180185   !! -------------------------------------------------- 
  • trunk/NEMO/TOP_SRC/trcdit.F90

    r352 r433  
    1111   USE dianam    ! build name of file (routine) 
    1212   USE in_out_manager  ! I/O manager 
     13   USE lib_mpp 
    1314 
    1415   IMPLICIT NONE 
     
    4849      ndepitb  ,   &  !!:  id for depth mesh 
    4950      nhoritb         !!:  id for horizontal mesh 
     51 
    5052#    endif 
    5153 
     
    150152 
    151153      IF(ll_print)WRITE(numout,*)'trcdit_wr kt=',kt,' kindic ',kindic 
    152       IF(kt == nit000.and.kindic == 1) THEN 
     154      IF(kt == nit000) THEN 
    153155 
    154156! Compute julian date from starting date of the run 
     
    202204 
    203205      ENDIF 
    204  
    205 ! SOME diagnostics to DO first time 
    206206 
    207207! 2. Start writing data 
     
    343343! 
    344344      IF(ll_print)WRITE(numout,*)'trcdid kt=',kt,' kindic ',kindic 
    345       IF(kt == nit000.and.kindic == 1) THEN 
     345      IF(kt == nit000) THEN 
    346346 
    347347          DO jn=1,jptra 
     
    381381                  IF (jl.eq.1) THEN 
    382382! short and long title for x advection for tracer 
    383                       WRITE (cltra,'("XAD_",a)') ctrcnm(jn) 
    384                       WRITE (cltral,'("X advective trend for ",a)')  & 
    385                       &      ctrcnl(jn) 
     383                      WRITE (cltra,'("XAD_",16a)') ctrcnm(jn) 
     384                      WRITE (cltral,'("X advective trend for ",58a)')  & 
     385                      &      ctrcnl(jn)(1:58) 
    386386                  END IF 
    387387                  IF (jl.eq.2)  THEN 
    388388! short and long title for y advection for tracer 
    389                       WRITE (cltra,'("YAD_",a)') ctrcnm(jn) 
    390                       WRITE (cltral,'("Y advective trend for ",a)')  & 
    391                       &      ctrcnl(jn) 
     389                      WRITE (cltra,'("YAD_",16a)') ctrcnm(jn) 
     390                      WRITE (cltral,'("Y advective trend for ",58a)')  & 
     391                      &      ctrcnl(jn)(1:58) 
    392392                  END IF 
    393393                  IF (jl.eq.3)  THEN 
    394394! short and long title for Z advection for tracer 
    395                       WRITE (cltra,'("ZAD_",a)') ctrcnm(jn) 
    396                       WRITE (cltral,'("Z advective trend for ",a)')  & 
    397                       &      ctrcnl(jn) 
     395                      WRITE (cltra,'("ZAD_",16a)') ctrcnm(jn) 
     396                      WRITE (cltral,'("Z advective trend for ",58a)')  & 
     397                      &      ctrcnl(jn)(1:58) 
    398398                  END IF 
    399399                  IF (jl.eq.4)  THEN 
    400400! short and long title for X diffusion for tracer 
    401                       WRITE (cltra,'("XDF_",a)') ctrcnm(jn) 
    402                       WRITE (cltral,'("X diffusion trend for ",a)')  & 
    403                       &      ctrcnm(jn) 
     401                      WRITE (cltra,'("XDF_",16a)') ctrcnm(jn) 
     402                      WRITE (cltral,'("X diffusion trend for ",58a)')  & 
     403                      &      ctrcnl(jn)(1:58) 
    404404                  END IF 
    405405                  IF (jl.eq.5)  THEN 
    406406! short and long title for Y diffusion for tracer 
    407                       WRITE (cltra,'("YDF_",a)') ctrcnm(jn) 
    408                       WRITE (cltral,'("Y diffusion trend for ",a)')  & 
    409                       &      ctrcnm(jn) 
     407                      WRITE (cltra,'("YDF_",16a)') ctrcnm(jn) 
     408                      WRITE (cltral,'("Y diffusion trend for ",58a)')  & 
     409                      &      ctrcnl(jn)(1:58) 
    410410                  END IF 
    411411                  IF (jl.eq.6)  THEN 
    412412! short and long title for Z diffusion for tracer 
    413                       WRITE (cltra,'("ZDF_",a)') ctrcnm(jn) 
    414                       WRITE (cltral,'("Z diffusion trend for ",a)')  & 
    415                       &      ctrcnm(jn) 
     413                      WRITE (cltra,'("ZDF_",16a)') ctrcnm(jn) 
     414                      WRITE (cltral,'("Z diffusion trend for ",58a)')  & 
     415                      &      ctrcnl(jn)(1:58) 
    416416                  END IF 
    417417# if defined key_trc_ldfeiv 
    418418                  IF (jl.eq.7) THEN 
    419419! short and long title for x gent velocity for tracer 
    420                       WRITE (cltra,'("Xgv",a)') ctrcnm(jn) 
    421                       WRITE (cltral,'("X gent velocity trend for ",a)')  & 
    422                       &      ctrcnl(jn) 
     420                      WRITE (cltra,'("XGV",16a)') ctrcnm(jn) 
     421                      WRITE (cltral,'("X gent velocity trend for ",53a)')  & 
     422                      &      ctrcnl(jn)(1:53) 
    423423                  END IF 
    424424                  IF (jl.eq.8)  THEN 
    425425! short and long title for y gent velocity for tracer 
    426                       WRITE (cltra,'("YGV_",a)') ctrcnm(jn) 
    427                       WRITE (cltral,'("Y gent velocity trend for ",a)')  & 
    428                       &i     ctrcnl(jn) 
     426                      WRITE (cltra,'("YGV_",16a)') ctrcnm(jn) 
     427                      WRITE (cltral,'("Y gent velocity trend for ",53a)')  & 
     428                      &      ctrcnl(jn)(1:53) 
    429429                  END IF 
    430430                  IF (jl.eq.9)  THEN 
    431431! short and long title for Z gent velocity for tracer 
    432                       WRITE (cltra,'("ZGV_",a)') ctrcnm(jn) 
    433                       WRITE (cltral,'("Z gent velocity trend for ",a)')  & 
    434                       &i     ctrcnl(jn) 
     432                      WRITE (cltra,'("ZGV_",16a)') ctrcnm(jn) 
     433                      WRITE (cltral,'("Z gent velocity trend for ",53a)')  & 
     434                      &      ctrcnl(jn)(1:53) 
    435435                  END IF 
    436436# endif 
     
    438438                  IF (jl.eq.jpdiatrc)  THEN 
    439439! last trends for tracer damping : short and long title 
    440                       WRITE (cltra,'("TDM_",a)') ctrcnm(jn) 
    441                       WRITE (cltral,'("Tracer damping trend for ",a)')  & 
    442                       &      ctrcnl(jn) 
     440                      WRITE (cltra,'("TDM_",16a)') ctrcnm(jn) 
     441                      WRITE (cltral,'("Tracer damping trend for ",55a)')  & 
     442                      &      ctrcnl(jn)(1:55) 
    443443                  END IF 
    444444# endif 
     445                  call flush(numout) 
    445446                  cltrau=ctrcun(jn) ! UNIT for tracer /trends 
    446447                  CALL histdef(nit6(jn), cltra, cltral, cltrau, jpi,jpj,  & 
     
    480481                  IF (jl.eq.1) THEN 
    481482! short title for x advection for tracer 
    482                       WRITE (cltra,'("XAD_",a)') ctrcnm(jn) 
     483                      WRITE (cltra,'("XAD_",16a)') ctrcnm(jn) 
    483484                  END IF 
    484485                  IF (jl.eq.2)  THEN 
    485486! short title for y advection for tracer 
    486                       WRITE (cltra,'("YAD_",a)') ctrcnm(jn) 
     487                      WRITE (cltra,'("YAD_",16a)') ctrcnm(jn) 
    487488                  END IF 
    488489                  IF (jl.eq.3)  THEN 
    489490! short title for z advection for tracer 
    490                       WRITE (cltra,'("ZAD_",a)') ctrcnm(jn) 
     491                      WRITE (cltra,'("ZAD_",16a)') ctrcnm(jn) 
    491492                  END IF 
    492493                  IF (jl.eq.4)  THEN 
    493494! short title for x diffusion for tracer 
    494                       WRITE (cltra,'("XDF_",a)') ctrcnm(jn) 
     495                      WRITE (cltra,'("XDF_",16a)') ctrcnm(jn) 
    495496                  END IF 
    496497                  IF (jl.eq.5)  THEN 
    497498! short title for y diffusion for tracer 
    498                       WRITE (cltra,'("YDF_",a)') ctrcnm(jn) 
     499                      WRITE (cltra,'("YDF_",16a)') ctrcnm(jn) 
    499500                  END IF 
    500501                  IF (jl.eq.6)  THEN 
    501502! short title for z diffusion for tracer 
    502                       WRITE (cltra,'("ZDF_",a)') ctrcnm(jn) 
     503                      WRITE (cltra,'("ZDF_",16a)') ctrcnm(jn) 
    503504                  END IF 
    504505# if defined key_trc_ldfeiv 
    505506                  IF (jl.eq.7) THEN 
    506507! short for x gent velocity for tracer 
    507                       WRITE (cltra,'("XGV_",a)') ctrcnm(jn) 
     508                      WRITE (cltra,'("XGV_",16a)') ctrcnm(jn) 
    508509                  END IF 
    509510                  IF (jl.eq.8)  THEN 
    510511! short for y gent velocity for tracer 
    511                       WRITE (cltra,'("YGV_",a)') ctrcnm(jn) 
     512                      WRITE (cltra,'("YGV_",16a)') ctrcnm(jn) 
    512513                  END IF 
    513514                  IF (jl.eq.9)  THEN 
    514515! short title for Z gent velocity for tracer 
    515                       WRITE (cltra,'("ZGV_",a)') ctrcnm(jn) 
     516                      WRITE (cltra,'("ZGV_",16a)') ctrcnm(jn) 
    516517                  END IF 
    517518# endif 
     
    519520                  IF (jl.eq.jpdiatrc) THEN 
    520521! short for x gent velocity for tracer 
    521                       WRITE (cltra,'("TDM_",a)') ctrcnm(jn) 
     522                      WRITE (cltra,'("TDM_",16a)') ctrcnm(jn) 
    522523                  END IF 
    523524# endif 
    524525 
    525                   CALL histwrite(nit6(jn), cltra, it, trtrd(:,:,:,jn,jl)  & 
     526                  CALL histwrite(nit6(jn), cltra, it, trtrd(:,:,:,ikeep(jn),jl)  & 
    526527                  &    ,ndimt50, ndext50) 
    527528                END DO 
     
    533534      IF( MOD( kt, nwritetrd ) == 0 .OR. kindic < 0 ) THEN 
    534535          DO jn=1,jptra 
    535               CALL histsync(nit6(jn)) 
     536             IF (luttrd(jn)) CALL histsync(nit6(jn)) 
    536537          END DO 
    537538      ENDIF 
     
    542543      IF( kt == nitend .OR. kindic < 0 ) THEN 
    543544          DO jn=1,jptra 
    544              CALL histclo(nit6(jn)) 
     545             IF (luttrd(jn)) CALL histclo(nit6(jn)) 
    545546          END DO 
    546547      ENDIF 
     
    652653 
    653654      IF(ll_print)WRITE(numout,*)'trcdii_wr kt=',kt,' kindic ',kindic 
    654       IF(kt == nit000.and.kindic == 1) THEN 
     655      IF(kt == nit000) THEN 
    655656 
    656657! Define the NETCDF files for additional arrays : 2D or 3D 
     
    822823      INTEGER  :: iimi, iima, ijmi, ijma, ipk, it 
    823824 
    824       REAL(wp) :: ztra,zder 
    825       REAL(wp), DIMENSION(jpi,jpj,jpk) :: zphy 
    826  
    827825! 
    828826! 0. Initialisation 
     
    857855 
    858856      IF(ll_print)WRITE(numout,*)'trcdib_wr kt=',kt,' kindic ',kindic 
    859       IF(kt == nit000.and.kindic == 1) THEN 
     857      IF(kt == nit000) THEN 
    860858 
    861859! Define the NETCDF files for biological trends 
     
    892890         IF(ll_print) CALL FLUSH(numout ) 
    893891 
    894 ! SOME diagnostics to DO first time 
    895  
    896 #  if defined key_trc_lobster1 
    897  
    898 ! initial total nitrogen 
    899  
    900           trai=0. 
    901           DO jn=1,jptra 
    902             DO jk=1,jpk 
    903               DO jj=1,jpj 
    904                 DO ji=1,jpi 
    905                   trai=trai+trn(ji,jj,jk,jn)*fse3t(ji,jj,jk)*tmask(ji,jj,jk) 
    906                 END DO 
    907               END DO 
    908             END DO 
    909           END DO 
    910  
    911           IF (lwp) then 
    912               WRITE (numout,*) ' *** total nitrogen =  ',trai,    & 
    913               &                ' at beginning of run it= ',kt 
    914           ENDIF 
    915  
    916           DO jk=1,jpk 
    917             DO jj=1,jpj 
    918               DO ji=1,jpi 
    919                 zphy(ji,jj,jk)=trn(ji,jj,jk,jpphy) 
    920               END DO 
    921             END DO 
    922           END DO 
    923  
    924           IF (lwp) then 
    925               WRITE (numout,*) ' -------' 
    926               WRITE (numout,*) ' phyto' 
    927               WRITE (numout,*) ' -------' 
    928               CALL prizre(zphy,jpi,jpj,jpk,62,2,122,20,1,14,1,0.,numout) 
    929           ENDIF 
    930  
    931 #        endif 
    932  
    933       ENDIF 
     892     ENDIF 
    934893 
    935894! 2. Start writing data 
     
    948907         CALL histwrite(nitb, cltra, kt, trbio(:,:,:,jn), ndimt50,ndext50) 
    949908      END DO 
    950  
    951 #  if  defined key_trc_lobster1 
    952  
    953       IF( MOD(kt-nit000+1,nwritebio) == 0) THEN 
    954  
    955 ! total nitrogen every nwritebio time step 
    956  
    957            ztra=0. 
    958            DO jn=1,jptra 
    959              DO jk=1,jpk 
    960                DO jj=1,jpj 
    961                  DO ji=1,jpi 
    962                    ztra=ztra+trn(ji,jj,jk,jn)*fse3t(ji,jj,jk)*tmask(ji,jj,jk) 
    963                  END DO 
    964                END DO 
    965              END DO 
    966            END DO 
    967  
    968            zder=(ztra-trai)/trai 
    969            trai=ztra 
    970  
    971            IF (lwp) THEN 
    972                WRITE (numout,*) 
    973                WRITE (numout,*) ' *** derive in total nitrogen =  ', zder,' %',' at it= ',kt 
    974                WRITE (numout,*) ' *** total nitrogen =  ',trai, ' at it= ',kt 
    975            ENDIF 
    976  
    977            zphy(:,:,:)=trn(:,:,:,jpphy) 
    978  
    979            IF (lwp) THEN 
    980                WRITE (numout,*) 
    981                WRITE (numout,*) ' *** trcdib: at it= ',kt 
    982                WRITE (numout,*) ' -------' 
    983                WRITE (numout,*) ' phyto' 
    984                WRITE (numout,*) ' -------' 
    985                CALL prizre(zphy,jpi,jpj,jpk,jpj-1,2,jpj-1,20,1,14,1,   & 
    986                &    0.,numout) 
    987            ENDIF 
    988  
    989        ENDIF 
    990  
    991 #      endif 
    992909 
    993910! synchronise FILE 
  • trunk/NEMO/TOP_SRC/trcdta.F90

    r376 r433  
    11MODULE trcdta 
    22   !!====================================================================== 
    3    !!                     ***  MODULE  dtatem  *** 
    4    !! Ocean data  :  read passive tracer data from monthly atlas data 
     3   !!                     ***  MODULE  trcdta  *** 
     4   !! Ocean data  :  reads passive tracer data  
    55   !!===================================================================== 
    66   !!  TOP 1.0,  LOCEAN-IPSL (2005)  
     
    2929   !! * Shared module variables 
    3030   REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk,jptra) ::   &  !: 
    31       trdta             !: temperature data at given time-step 
     31      trdta             !: tracer data at given time-step 
    3232 
    3333   !! * Module variables 
    3434   REAL(wp), DIMENSION(jpi,jpj,jpk,jptra,2) ::   & 
    35       tracdta            ! temperature data at two consecutive times 
     35      tracdta            ! tracer data at two consecutive times 
    3636   INTEGER , DIMENSION(jptra) :: & 
    3737      nlectr  ,   &    !!: switch for reading once 
    38       ntrc1   ,   &    !!: ???? 
    39       ntrc2            !!: ???? 
     38      ntrc1   ,   &    !!: number of first month when reading 12 monthly value 
     39      ntrc2            !!: number of second month when reading 12 monthly value 
    4040 
    4141   !! * Substitutions 
     
    9999               !! 3D tracer data 
    100100               IF(lwp)WRITE(numout,*) 
    101                IF(lwp)WRITE(numout,*) ' trcdta: reading tracer'  
    102                IF(lwp)WRITE(numout,*) ' data file ', jn 
     101               IF(lwp)WRITE(numout,*) ' dta_trc: reading tracer'  
     102               IF(lwp)WRITE(numout,*) ' data file ', jn, ctrcnm(jn) 
    103103               IF(lwp)WRITE(numout,*) 
    104104               nlectr(jn) = 0 
     
    112112            ipi = jpiglo 
    113113            ipj = jpjglo 
     114            ipk = jpk 
    114115 
    115116            ! First call kt=nit000 
     
    120121               IF(lwp) THEN 
    121122                  WRITE(numout,*) 
    122                   WRITE(numout,*) ' Tracer monthly fields'  
     123                  WRITE(numout,*) ' Tracer data fields'  
    123124                  WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~' 
    124125                  WRITE(numout,*) ' NetCDF FORMAT' 
     
    127128 
    128129               ! open file  
    129  
     130#if defined key_trc_pisces 
    130131               clname(jn) = 'LEVITUS_'//ctrcnm(jn) 
     132#else 
     133               itime=1 
     134               clname(jn) = ctrcnm(jn) 
     135#endif 
    131136               CALL flinopen(TRIM(clname(jn)),mig(1),nlci,mjg(1),nlcj,    & 
    132137                  .FALSE.,ipi,ipj,ipk,zlon,zlat,zlev,itime,    & 
    133138                  istep,zdate0,rdt,numtr(jn)               ) 
    134139 
     140#if defined key_trc_pisces 
    135141               ! title, dimensions and tests 
    136142               IF( itime /= jpmois ) THEN 
     
    140146                     WRITE(numout,*) ' itime ',itime,' jpmois ',jpmois 
    141147                  ENDIF 
    142                   STOP 'trc_dta' 
    143                ENDIF 
     148                  STOP 'dta_trc' 
     149               ENDIF 
     150#endif 
    144151 
    145152               IF( ipi /= jpidta .OR. ipj /= jpjdta .OR. ipk /= jpk ) THEN 
     
    151158                     WRITE(numout,*) ' ipk ',ipk,' jpk ',jpk 
    152159                  ENDIF 
    153                   STOP 'trc_dta' 
    154                ENDIF 
    155                IF(lwp)WRITE(numout,*) itime,istep,zdate0,rdt,numtr(jn) 
     160                  STOP 'dta_trc' 
     161               ENDIF 
     162               IF(lwp)WRITE(numout,*) itime,istep(1),zdate0,rdt,numtr(jn) 
    156163               trdta(:,:,:,jn) = 0. 
    157164 
    158165            ENDIF 
    159166 
    160  
     167#if defined key_trc_pisces 
    161168            ! Read montly file 
    162169            IF( ( kt == nit000 .AND. nlectr(jn) == 0)   &  
     
    244251            IF( jn == jpsil) trdta(:,:,:,jn) = trdta(:,:,:,jn) * 1.E-6 
    245252            IF( jn == jppo4) trdta(:,:,:,jn) = trdta(:,:,:,jn) * 122.E-6 
    246  
    247  
    248          ENDIF 
    249  
    250       END DO 
     253#else 
     254            ! Read init file only 
     255            IF( kt == nit000  ) THEN 
     256               CALL flinget( numtr(jn),ctrcnm(jn),jpidta,jpjdta,jpk,    & 
     257               1,1,1,mig(1),nlci,mjg(1),nlcj,  & 
     258               trdta(1:nlci,1:nlcj,1:jpk,jn) ) 
     259               trdta(:,:,:,jn)=trdta(:,:,:,jn)*tmask(:,:,:) 
     260            ENDIF  
     261#endif 
     262 
     263        ENDIF 
     264 
     265       END DO 
    251266 
    252267   END SUBROUTINE dta_trc 
  • trunk/NEMO/TOP_SRC/trcdtr.F90

    r383 r433  
    109109      trn(:,:,:,jpdfe) = bioma0*5.E-6 
    110110      trn(:,:,:,jpnfe) = bioma0*5.E-6 
    111       trn(:,:,:,jpdsi) = bioma0*0.15 
     111      trn(:,:,:,jpdsi) = bioma0*5.E-6 
    112112      trn(:,:,:,jpnch) = bioma0*12./55. 
    113113      trn(:,:,:,jpdch) = bioma0*12./55. 
     
    235235                  trn(ji,jj,jk,jpno3)=2.*tmask(ji,jj,jk) 
    236236               ELSE 
    237                   trn(ji,jj,jk,jpno3)=(13.24*(rhd(ji,jj,jk)*1000)-324.4)*tmask(ji,jj,jk) 
     237                  trn(ji,jj,jk,jpno3)=(15.55*(rhd(ji,jj,jk)*1000)-380.11)*tmask(ji,jj,jk) 
    238238               ENDIF 
    239239            END DO 
     
    244244  
    245245!! general case 
    246  
    247       trn(:,:,:,:)=0.1 
     246      do jn = 1, jptra 
     247         trn(:,:,:,jn)=0.1*tmask(:,:,:) 
     248      enddo 
    248249 
    249250#endif 
     
    252253!!   Initialization of tracer from a file 
    253254!!   that may also be used for damping 
    254   
    255255      CALL dta_trc( nit000 ) 
    256       DO  jn = 1, jptra 
    257         IF( lutini(jn) ) THEN  
     256      DO  jk = 1, jptra 
     257        IF( lutini(jk) ) THEN  
    258258!! initialisation from file 
    259            trn(:,:,:,jn) = trdta(:,:,:,jn) 
     259           trn(:,:,:,jk) = trdta(:,:,:,jk)*tmask(:,:,:) 
    260260        ENDIF 
    261261      END DO 
  • trunk/NEMO/TOP_SRC/trcini.F90

    r340 r433  
    100100      DO jl = 1, jpdiatrc 
    101101         DO jn = 1, jptra 
    102             trtrd(:,:,:,jn,jl) = 0.e0 
     102            IF (luttrd(jn)) trtrd(:,:,:,ikeep(jn),jl) = 0.e0 
    103103         END DO 
    104104      END DO 
  • trunk/NEMO/TOP_SRC/trclec.F90

    r340 r433  
    150150      READ(numnat,natrtd) 
    151151 
     152      nkeep=0 
     153      ikeep(:)=0 
     154      DO ji=1,jptra 
     155         IF (luttrd(ji)) THEN  
     156             nkeep=nkeep+1 
     157             ikeep(ji)=nkeep 
     158         END IF  
     159      END DO 
     160      IF (nkeep.GT.0) THEN   
     161        IF (.NOT. ALLOCATED(trtrd)) ALLOCATE(trtrd(jpi,jpj,jpk,nkeep,jpdiatrc))  
     162        trtrd(:,:,:,:,:)=0.0 
     163      ENDIF  
    152164      IF(lwp) THEN 
    153165         WRITE(numout,*) 'natrtd' 
     
    159171            WRITE(numout,*)                      & 
    160172               ' keep dynamical trends for tracer number :',ji          & 
    161                ,luttrd(ji)    
    162          END DO 
     173               ,luttrd(ji), ikeep(ji) 
     174         END DO 
     175         WRITE(numout,*) 'total = ',nkeep,' tracers dyn trends saved' 
     176         WRITE(numout,*) 'size of trtrd = ',jpi*jpj*jpk*nkeep*jpdiatrc 
    163177      ENDIF 
    164178#endif 
  • trunk/NEMO/TOP_SRC/trcrst.F90

    r352 r433  
    1919   USE sms 
    2020   USE trctrp_lec    
     21   USE lib_mpp 
    2122    
    2223   IMPLICIT NONE 
     
    8990      REAL(wp), DIMENSION(3) :: zinfo 
    9091 
    91 #if defined key_trc_pisces && ( defined key_orca_r4 || defined key_orca_r2 || defined key_orca_r05 || defined key_orca_r025 ) 
    92       REAL(wp) , DIMENSION(jpi,jpj,jpk) ::   zvolk       
     92#if defined key_trc_pisces  
     93#if ! defined key_cfg_1d && ( defined key_orca_r4 || defined key_orca_r2 || defined key_orca_r05 || defined key_orca_r025 ) 
    9394      REAL(wp) ::   zareatot, zpo4tot 
     95#endif 
    9496#endif 
    9597 
     
    247249#if defined key_trc_pisces  
    248250 
    249 #if defined key_orca_r4 || defined key_orca_r2 || defined key_orca_r05 || defined key_orca_r025 
    250  
    251       zvolk(:,:,:) = 0. 
    252       zareatot     = 0. 
    253       DO jk = 1, jpkm1 
    254          DO jj = 2, jpjm1 
    255             DO ji = 2, jpim1 
    256                zvolk(ji,jj,jk) = e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) * tmask(ji,jj,jk) 
    257                zareatot        = zareatot + zvolk(ji,jj,jk) 
    258             ENDDO 
    259          ENDDO 
    260       ENDDO 
    261  
     251#if ! defined key_cfg_1d && ( defined key_orca_r4 || defined key_orca_r2 || defined key_orca_r05 || defined key_orca_r025 )  
     252 
     253      zareatot = 0. 
     254      DO jk = 1, jpk 
     255         DO jj = 1, jpj 
     256            DO ji = 1, jpi 
     257               zareatot = zareatot + tmask(ji,jj,jk) * tmask_i(ji,jj) * & 
     258                  &                 e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk)  
     259            END DO 
     260         END DO 
     261      END DO 
     262 
     263      IF( lk_mpp ) THEN  
     264         CALL mpp_sum( zareatot )     ! sum over the global domain   
     265      END IF 
    262266 
    263267      zpo4tot = 0. 
    264       DO jk = 1, jpkm1 
    265          DO jj = 2, jpjm1 
    266             DO ji = 2, jpim1 
    267                zpo4tot = zpo4tot + trn(ji,jj,jk,jptal) * zvolk(ji,jj,jk) 
     268      DO jk = 1, jpk 
     269         DO jj = 1, jpj 
     270            DO ji = 1, jpi 
     271               zpo4tot = zpo4tot + trn(ji,jj,jk,jptal) * tmask(ji,jj,jk) * tmask_i(ji,jj) *   & 
     272                  &                e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) 
    268273            END DO 
    269274         END DO 
    270275      END DO 
     276 
     277      IF( lk_mpp ) THEN  
     278         CALL mpp_sum( zpo4tot )     ! sum over the global domain   
     279      END IF 
    271280 
    272281      WRITE(0,*) 'TALK moyen ', zpo4tot/zareatot*1E6 
     
    274283      trn(:,:,:,jptal) = trn(:,:,:,jptal)*2391./zpo4tot 
    275284 
    276  
    277285      zpo4tot = 0. 
    278       DO jk = 1, jpkm1 
    279          DO jj = 2, jpjm1 
    280             DO ji = 2, jpim1 
    281                zpo4tot = zpo4tot + trn(ji,jj,jk,jppo4) * zvolk(ji,jj,jk) 
     286      DO jk = 1, jpk 
     287         DO jj = 1, jpj 
     288            DO ji = 1, jpi 
     289               zpo4tot = zpo4tot + trn(ji,jj,jk,jppo4) * tmask(ji,jj,jk) * tmask_i(ji,jj) *   & 
     290                  &                e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) 
    282291            END DO 
    283292         END DO 
    284293      END DO 
     294 
     295      IF( lk_mpp ) THEN  
     296         CALL mpp_sum( zpo4tot )     ! sum over the global domain   
     297      END IF 
     298 
    285299 
    286300      WRITE(0,*) 'PO4 moyen ', zpo4tot/zareatot*1E6/122. 
     
    288302      trn(:,:,:,jppo4) = trn(:,:,:,jppo4)*2.165/zpo4tot 
    289303 
    290  
    291304      zpo4tot = 0. 
    292       DO jk = 1, jpkm1 
    293          DO jj = 2, jpjm1 
    294             DO ji = 2, jpim1 
    295                zpo4tot = zpo4tot + trn(ji,jj,jk,jpno3) * zvolk(ji,jj,jk) 
     305      DO jk = 1, jpk 
     306         DO jj = 1, jpj 
     307            DO ji = 1, jpi 
     308               zpo4tot = zpo4tot + trn(ji,jj,jk,jpno3) * tmask(ji,jj,jk) * tmask_i(ji,jj) *   & 
     309                  &                e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) 
    296310            END DO 
    297311         END DO 
    298312      END DO 
     313 
     314      IF( lk_mpp ) THEN  
     315         CALL mpp_sum( zpo4tot )     ! sum over the global domain   
     316      END IF 
     317 
    299318 
    300319      WRITE(0,*) 'NO3 moyen ', zpo4tot/zareatot*1E6/7.6 
     
    303322 
    304323      zpo4tot = 0. 
    305       DO jk = 1, jpkm1 
    306          DO jj = 2, jpjm1 
    307             DO ji = 2, jpim1 
    308                zpo4tot = zpo4tot + trn(ji,jj,jk,jpsil) * zvolk(ji,jj,jk) 
     324      DO jk = 1, jpk 
     325         DO jj = 1, jpj 
     326            DO ji = 1, jpi 
     327               zpo4tot = zpo4tot + trn(ji,jj,jk,jpsil) * tmask(ji,jj,jk) * tmask_i(ji,jj) *   & 
     328                  &                e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) 
    309329            END DO 
    310330         END DO 
    311331      END DO 
     332 
     333      IF( lk_mpp ) THEN  
     334         CALL mpp_sum( zpo4tot )     ! sum over the global domain   
     335      END IF 
    312336 
    313337      WRITE(0,*) 'SiO3 moyen ', zpo4tot/zareatot*1E6 
     
    402426 
    403427      REAL(wp) :: zdate0, zinfo(3),zdiag_var,    & 
    404          zdiag_varmin, zdiag_varmax 
     428         zdiag_varmin, zdiag_varmax, zdiag_tot, zder 
    405429 
    406430 
     
    412436         IF(lwp) WRITE(numout,*) 'trc_wri : write passive tracers restart.output NetCDF file' 
    413437         IF(lwp) WRITE(numout,*) '~~~~~~~' 
     438        
     439 
     440         areatot = 0. 
     441         DO jk = 1, jpk 
     442            DO jj = 1, jpj 
     443               DO ji = 1, jpi 
     444                  areatot = areatot + tmask(ji,jj,jk)*tmask_i(ji,jj)*e1t(ji,jj)*e2t(ji,jj)*fse3t(ji,jj,jk)  
     445               END DO 
     446            END DO 
     447         END DO 
     448 
     449         IF( lk_mpp ) THEN  
     450             CALL mpp_sum(areatot)     ! sum over the global domain   
     451         END IF 
     452 
     453         trai = 0. 
     454         DO jn = 1, jptra 
     455            DO jk = 1,jpk 
     456               DO jj = 1, jpj 
     457                  DO ji = 1, jpi 
     458                     trai=trai+tmask(ji,jj,jk)*trn(ji,jj,jk,jn)*     & 
     459                        &    tmask_i(ji,jj)* e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk)  
     460                  END DO 
     461               END DO 
     462            END DO 
     463         END DO 
     464 
     465         IF( lk_mpp ) THEN  
     466             CALL mpp_sum(trai)         ! sum over the global domain   
     467         END IF 
     468 
     469         IF (lwp) WRITE(numout,*) 'Integral of all tracers over the full domain at NIT000 =',trai 
     470 
    414471      ENDIF 
    415472 
     
    452509            IF(cexper(jc:jc) /= ' ') ic = jc 
    453510         END DO 
    454          WRITE(cln,'("_",i2.2,i2.2,i2.2,"_restart.trc")') nyear, nmonth, nday 
     511         WRITE(cln,'("_",i4.4,i2.2,i2.2,"_restart.trc")') nyear, nmonth, nday 
    455512         clname=cexper(1:ic)//cln 
    456513         ic=1 
     
    469526         ! -------------------- 
    470527 
     528         IF (lwp) WRITE(numout,*) '----TRACER STAT----' 
     529         zdiag_tot=0. 
    471530         DO jn=1,jptra 
    472531            clname='TRN'//ctrcnm(jn) 
     
    476535            zdiag_varmin=0. 
    477536            zdiag_varmax=0. 
    478             IF (lwp) WRITE(numout,*) '----TRACER STAT----' 
    479  
    480             DO ji=1,jpi 
    481                DO jj=1,jpj 
     537 
     538            DO ji=1, jpi 
     539               DO jj=1, jpj 
    482540                  DO jk=1,jpk 
    483  
    484                      zdiag_var=zdiag_var+tmask(ji,jj,jk)*trn(ji,jj,jk,jn) 
    485  
    486                      IF (tmask(ji,jj,jk).EQ.1.) THEN 
    487                         IF (zdiag_varmin.GT.trn(ji,jj,jk,jn))        & 
    488                            zdiag_varmin =  trn(ji,jj,jk,jn) 
    489                         IF (zdiag_varmax.LT.trn(ji,jj,jk,jn))        & 
    490                            zdiag_varmax =  trn(ji,jj,jk,jn) 
    491  
    492                      ENDIF 
     541                    zdiag_var=zdiag_var+tmask(ji,jj,jk)*trn(ji,jj,jk,jn)*     & 
     542                               tmask_i(ji,jj)* e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk)  
    493543 
    494544                  END DO 
     
    496546            END DO 
    497547 
    498  
    499             zdiag_var=zdiag_var/(jpi*jpj*jpk) 
    500  
    501             IF(lwp) WRITE(numout,*) 'MEAN NO ',jn,' =',zdiag_var,'MIN= '  & 
     548            zdiag_varmin=MINVAL(trn(:,:,:,jn), mask= ((tmask*SPREAD(tmask_i,DIM=3,NCOPIES=jpk).NE.0.))) 
     549            zdiag_varmax=MAXVAL(trn(:,:,:,jn), mask= ((tmask*SPREAD(tmask_i,DIM=3,NCOPIES=jpk).NE.0.))) 
     550 
     551            IF( lk_mpp ) THEN  
     552               CALL mpp_min(zdiag_varmin)      ! min over the global domain   
     553               CALL mpp_max(zdiag_varmax)      ! max over the global domain   
     554               CALL mpp_sum(zdiag_var)         ! sum over the global domain   
     555            END IF 
     556 
     557            zdiag_tot=zdiag_tot+zdiag_var 
     558            zdiag_var=zdiag_var/areatot 
     559 
     560            IF (lwp) WRITE(numout,*) 'MEAN NO ',jn,ctrcnm(jn),' =',zdiag_var,'MIN= '  & 
    502561               ,zdiag_varmin,'MAX= ',zdiag_varmax 
    503562 
    504563         END DO 
     564 
     565         zdiag_tot=zdiag_tot 
     566         zder=((zdiag_tot-trai)/trai)*100._wp 
     567         IF (lwp) WRITE(numout,*) 'Integral of all tracers over the full domain  =',zdiag_tot   
     568         IF (lwp) WRITE(numout,*) 'Drift of the sum of all tracers =',zder, '%'   
    505569 
    506570         DO jn=1,jptra 
     
    508572            CALL restput(nutwrs,clname,jpi,jpj,jpk,0,trb(:,:,:,jn)) 
    509573         END DO 
    510  
    511574 
    512575#if defined key_trc_lobster1 
  • trunk/NEMO/TOP_SRC/trcsms.F90

    r340 r433  
    1717   USE trc 
    1818   USE trcfreons 
     19   USE prtctl_trc          ! Print control for debbuging 
    1920 
    2021   IMPLICIT NONE 
     
    7576      INTEGER, INTENT( in ) ::   kt      ! ocean time-step index       
    7677 
     78      !! * Local variables 
     79      !! ----------------- 
     80 
     81      CHARACTER (len=25) :: charout 
     82 
    7783      !! this ROUTINE is called only every ndttrc time step 
    7884      !! -------------------------------------------------- 
     
    9096      CALL trcopt( kt) 
    9197 
     98      IF(ln_ctl)   THEN  ! print mean trends (used for debugging) 
     99         WRITE(charout, FMT="('OPT')") 
     100         CALL prt_ctl_trc_info(charout) 
     101         CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm) 
     102      ENDIF 
     103 
    92104      !! tracers: biological model 
    93105      !! ------------------------- 
     
    95107      CALL trcbio( kt) 
    96108 
     109      IF(ln_ctl)   THEN  ! print mean trends (used for debugging) 
     110         WRITE(charout, FMT="('BIO')") 
     111         CALL prt_ctl_trc_info(charout) 
     112         CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm) 
     113      ENDIF 
     114 
    97115      !! tracers: sedimentation model 
    98116      !! ---------------------------- 
    99117 
    100118      CALL trcsed(kt) 
     119      IF(ln_ctl)   THEN  ! print mean trends (used for debugging) 
     120         WRITE(charout, FMT="('SED')") 
     121         CALL prt_ctl_trc_info(charout) 
     122         CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm) 
     123      ENDIF 
     124  
    101125      CALL trcexp(kt) 
    102126 
    103  
     127      IF(ln_ctl)   THEN  ! print mean trends (used for debugging) 
     128         WRITE(charout, FMT="('EXP')") 
     129         CALL prt_ctl_trc_info(charout) 
     130         CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm) 
     131      ENDIF 
    104132 
    105133#elif defined key_trc_pisces 
Note: See TracChangeset for help on using the changeset viewer.