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 1457 for trunk/NEMO/TOP_SRC/LOBSTER – NEMO

Ignore:
Timestamp:
2009-05-23T10:16:38+02:00 (15 years ago)
Author:
cetlod
Message:

distribution of iom_put in TOP routines, see ticket:437

Location:
trunk/NEMO/TOP_SRC/LOBSTER
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/TOP_SRC/LOBSTER/trcbio.F90

    r1264 r1457  
    2222   USE trdmld_trc 
    2323   USE trdmld_trc_oce 
     24   USE iom 
    2425    
    2526   IMPLICIT NONE 
     
    2930 
    3031   !!* Substitution 
    31 #  include "domzgr_substitute.h90" 
     32#  include "top_substitute.h90" 
    3233   !!---------------------------------------------------------------------- 
    3334   !! NEMO/TOP 2.0 , LOCEAN-IPSL (2007)  
     
    7172      REAL(wp) ::   znh4a, zdeta, zdoma, zzoobod, zboddet, zdomaju 
    7273#if defined key_trc_diaadd 
    73       REAL(wp), DIMENSION(jpi,jpj,jpk) ::   ze3t 
     74      REAL(wp) ::   ze3t 
     75#endif 
     76#if defined key_trc_diaadd && defined key_iomput 
     77      REAL(wp), DIMENSION(jpi,jpj,17)     :: zw2d 
     78# if defined key_trc_dia3d 
     79      REAL(wp), DIMENSION(jpi,jpj,jpk,3) :: zw3d 
     80# endif 
    7481#endif 
    7582      REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE ::   ztrbio 
     
    8390      ENDIF 
    8491 
    85 #if defined key_trc_diaadd 
    86       ! convert fluxes in per day 
    87       ze3t(:,:,:) = 0.e0 
    88       DO jk = 1, jpkbm1 
    89          ze3t(:,:,jk) = fse3t(:,:,jk) * 86400. 
    90       END DO  
    91 #endif 
    92  
    9392      fbod(:,:) = 0.e0 
    94 #if defined key_trc_diaadd 
     93#if defined key_trc_diaadd && ! defined key_iomput 
    9594      DO jl = jp_lob0_2d, jp_lob1_2d 
    9695         trc2d(:,:,jl) = 0.e0 
    9796      END DO  
     97#endif 
     98#if defined key_trc_diaadd && defined key_iomput 
     99      zw2d(:,:,:) = 0.e0 
     100# if defined key_trc_dia3d 
     101      zw3d(:,:,:,:) = 0.e0 
     102# endif 
    98103#endif 
    99104 
     
    107112         !                                   ! -------------------------- ! 
    108113         DO jj = 2, jpjm1 
    109             DO ji = 2, jpim1           !!gm  use of fs_2 fs_jpm1  required here 
    110  
     114            DO ji = fs_2, fs_jpim1  
    111115               ! trophic variables( det, zoo, phy, no3, nh4, dom) 
    112116               ! ------------------------------------------------ 
     
    126130               zlno3 = zno3 * EXP( -psinut * znh4 ) / ( akno3 + zno3 ) 
    127131               zlnh4 = znh4 / (znh4+aknh4)  
    128  
    129132 
    130133               ! sinks and sources 
     
    189192               zdeta =   zphydet + zzoodet - zdetzoo - zdetnh4 - zdetdom + zboddet 
    190193               zdoma =   zphydom + zzoodom + zdetdom - zdomnh4 - zdomaju 
     194 
     195               ! tracer flux at totox-point added to the general trend 
     196               tra(ji,jj,jk,jpdet) = tra(ji,jj,jk,jpdet) + zdeta 
     197               tra(ji,jj,jk,jpzoo) = tra(ji,jj,jk,jpzoo) + zzooa 
     198               tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) + zphya 
     199               tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + zno3a 
     200               tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + znh4a 
     201               tra(ji,jj,jk,jpdom) = tra(ji,jj,jk,jpdom) + zdoma 
    191202 
    192203#if defined key_trc_diabio 
     
    206217               trbio(ji,jj,jk,jp_lob0_trd + 14) = zdetnh4 
    207218               trbio(ji,jj,jk,jp_lob0_trd + 15) = zdetdom 
    208 #endif 
    209 #if defined key_trc_diaadd 
    210                trc2d(ji,jj,jp_lob0_2d    ) = trc2d(ji,jj, jp_lob0_2d    ) + zno3phy * ze3t(ji,jj,jk)  
    211                trc2d(ji,jj,jp_lob0_2d + 1) = trc2d(ji,jj, jp_lob0_2d + 1) + znh4phy * ze3t(ji,jj,jk) 
    212                trc2d(ji,jj,jp_lob0_2d + 2) = trc2d(ji,jj, jp_lob0_2d + 2) + zphydom * ze3t(ji,jj,jk) 
    213                trc2d(ji,jj,jp_lob0_2d + 3) = trc2d(ji,jj, jp_lob0_2d + 3) + zphynh4 * ze3t(ji,jj,jk) 
    214                trc2d(ji,jj,jp_lob0_2d + 4) = trc2d(ji,jj, jp_lob0_2d + 4) + zphyzoo * ze3t(ji,jj,jk) 
    215                trc2d(ji,jj,jp_lob0_2d + 5) = trc2d(ji,jj, jp_lob0_2d + 5) + zphydet * ze3t(ji,jj,jk) 
    216                trc2d(ji,jj,jp_lob0_2d + 6) = trc2d(ji,jj, jp_lob0_2d + 6) + zdetzoo * ze3t(ji,jj,jk) 
    217 ! trend number 8 is in trcsed.F             
    218                trc2d(ji,jj,jp_lob0_2d +  8) = trc2d(ji,jj,jp_lob0_2d +  8) + zzoodet * ze3t(ji,jj,jk) 
    219                trc2d(ji,jj,jp_lob0_2d +  9) = trc2d(ji,jj,jp_lob0_2d +  9) + zzoobod * ze3t(ji,jj,jk) 
    220                trc2d(ji,jj,jp_lob0_2d + 10) = trc2d(ji,jj,jp_lob0_2d + 10) + zzoonh4 * ze3t(ji,jj,jk) 
    221                trc2d(ji,jj,jp_lob0_2d + 11) = trc2d(ji,jj,jp_lob0_2d + 11) + zzoodom * ze3t(ji,jj,jk) 
    222                trc2d(ji,jj,jp_lob0_2d + 12) = trc2d(ji,jj,jp_lob0_2d + 12) + znh4no3 * ze3t(ji,jj,jk) 
    223                trc2d(ji,jj,jp_lob0_2d + 13) = trc2d(ji,jj,jp_lob0_2d + 13) + zdomnh4 * ze3t(ji,jj,jk) 
    224                trc2d(ji,jj,jp_lob0_2d + 14) = trc2d(ji,jj,jp_lob0_2d + 14) + zdetnh4 * ze3t(ji,jj,jk)              
    225                trc2d(ji,jj,jp_lob0_2d + 15) = trc2d(ji,jj,jp_lob0_2d + 15) + (  zno3phy + znh4phy - zphynh4   & 
    226                   &                                 - zphydom - zphyzoo - zphydet ) * ze3t(ji,jj,jk) 
    227                trc2d(ji,jj,jp_lob0_2d + 16) = trc2d(ji,jj,jp_lob0_2d + 16) + (  zphyzoo + zdetzoo - zzoodet   & 
    228                   &                                 - zzoobod - zzoonh4 - zzoodom ) * ze3t(ji,jj,jk) 
    229                trc2d(ji,jj,jp_lob0_2d + 17) = trc2d(ji,jj,jp_lob0_2d + 17) + zdetdom * ze3t(ji,jj,jk) 
    230 ! trend number 19 is in trcexp.F 
    231                trc3d(ji,jj,jk,jp_lob0_3d    ) = zno3phy * 86400      
    232                trc3d(ji,jj,jk,jp_lob0_3d + 1) = znh4phy * 86400      
    233                trc3d(ji,jj,jk,jp_lob0_3d + 2) = znh4no3 * 86400      
    234219#endif 
    235220               IF( l_trdtrc ) THEN 
     
    253238                ENDIF 
    254239 
    255  
    256                ! tracer flux at totox-point added to the general trend 
    257                tra(ji,jj,jk,jpdet) = tra(ji,jj,jk,jpdet) + zdeta 
    258                tra(ji,jj,jk,jpzoo) = tra(ji,jj,jk,jpzoo) + zzooa 
    259                tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) + zphya 
    260                tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + zno3a 
    261                tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + znh4a 
    262                tra(ji,jj,jk,jpdom) = tra(ji,jj,jk,jpdom) + zdoma 
    263  
     240#if defined key_trc_diaadd 
     241               ! convert fluxes in per day 
     242               ze3t = fse3t(ji,jj,jk) * 86400. 
     243#if ! defined key_iomput 
     244               trc2d(ji,jj,jp_lob0_2d    ) = trc2d(ji,jj, jp_lob0_2d    ) + zno3phy * ze3t  
     245               trc2d(ji,jj,jp_lob0_2d + 1) = trc2d(ji,jj, jp_lob0_2d + 1) + znh4phy * ze3t 
     246               trc2d(ji,jj,jp_lob0_2d + 2) = trc2d(ji,jj, jp_lob0_2d + 2) + zphydom * ze3t 
     247               trc2d(ji,jj,jp_lob0_2d + 3) = trc2d(ji,jj, jp_lob0_2d + 3) + zphynh4 * ze3t 
     248               trc2d(ji,jj,jp_lob0_2d + 4) = trc2d(ji,jj, jp_lob0_2d + 4) + zphyzoo * ze3t 
     249               trc2d(ji,jj,jp_lob0_2d + 5) = trc2d(ji,jj, jp_lob0_2d + 5) + zphydet * ze3t 
     250               trc2d(ji,jj,jp_lob0_2d + 6) = trc2d(ji,jj, jp_lob0_2d + 6) + zdetzoo * ze3t 
     251               ! trend number 8 is in trcsed.F             
     252               trc2d(ji,jj,jp_lob0_2d +  8) = trc2d(ji,jj,jp_lob0_2d +  8) + zzoodet * ze3t 
     253               trc2d(ji,jj,jp_lob0_2d +  9) = trc2d(ji,jj,jp_lob0_2d +  9) + zzoobod * ze3t 
     254               trc2d(ji,jj,jp_lob0_2d + 10) = trc2d(ji,jj,jp_lob0_2d + 10) + zzoonh4 * ze3t 
     255               trc2d(ji,jj,jp_lob0_2d + 11) = trc2d(ji,jj,jp_lob0_2d + 11) + zzoodom * ze3t 
     256               trc2d(ji,jj,jp_lob0_2d + 12) = trc2d(ji,jj,jp_lob0_2d + 12) + znh4no3 * ze3t 
     257               trc2d(ji,jj,jp_lob0_2d + 13) = trc2d(ji,jj,jp_lob0_2d + 13) + zdomnh4 * ze3t 
     258               trc2d(ji,jj,jp_lob0_2d + 14) = trc2d(ji,jj,jp_lob0_2d + 14) + zdetnh4 * ze3t              
     259               trc2d(ji,jj,jp_lob0_2d + 15) = trc2d(ji,jj,jp_lob0_2d + 15) + (  zno3phy + znh4phy - zphynh4   & 
     260                  &                                 - zphydom - zphyzoo - zphydet ) * ze3t 
     261               trc2d(ji,jj,jp_lob0_2d + 16) = trc2d(ji,jj,jp_lob0_2d + 16) + (  zphyzoo + zdetzoo - zzoodet   & 
     262                  &                                 - zzoobod - zzoonh4 - zzoodom ) * ze3t 
     263               trc2d(ji,jj,jp_lob0_2d + 17) = trc2d(ji,jj,jp_lob0_2d + 17) + zdetdom * ze3t 
     264               ! trend number 19 is in trcexp.F 
     265#else 
     266               zw2d(ji,jj,1)  = zw2d(ji,jj,1)  + zno3phy * ze3t  
     267               zw2d(ji,jj,2)  = zw2d(ji,jj,2)  + znh4phy * ze3t 
     268               zw2d(ji,jj,3)  = zw2d(ji,jj,3)  + zphydom * ze3t 
     269               zw2d(ji,jj,4)  = zw2d(ji,jj,4)  + zphynh4 * ze3t 
     270               zw2d(ji,jj,5)  = zw2d(ji,jj,5)  + zphyzoo * ze3t 
     271               zw2d(ji,jj,6)  = zw2d(ji,jj,6)  + zphydet * ze3t 
     272               zw2d(ji,jj,7)  = zw2d(ji,jj,7)  + zdetzoo * ze3t 
     273               zw2d(ji,jj,8)  = zw2d(ji,jj,8)  + zzoodet * ze3t 
     274               zw2d(ji,jj,9)  = zw2d(ji,jj,9)  + zzoobod * ze3t 
     275               zw2d(ji,jj,10) = zw2d(ji,jj,10) + zzoonh4 * ze3t 
     276               zw2d(ji,jj,11) = zw2d(ji,jj,11) + zzoodom * ze3t 
     277               zw2d(ji,jj,12) = zw2d(ji,jj,12) + znh4no3 * ze3t 
     278               zw2d(ji,jj,13) = zw2d(ji,jj,13) + zdomnh4 * ze3t 
     279               zw2d(ji,jj,14) = zw2d(ji,jj,14) + zdetnh4 * ze3t              
     280               zw2d(ji,jj,15) = zw2d(ji,jj,15) + ( zno3phy + znh4phy - zphynh4 - zphydom - zphyzoo - zphydet ) * ze3t 
     281               zw2d(ji,jj,16) = zw2d(ji,jj,16) + ( zphyzoo + zdetzoo - zzoodet - zzoobod - zzoonh4 - zzoodom ) * ze3t 
     282               zw2d(ji,jj,17) = zw2d(ji,jj,17) + zdetdom * ze3t 
     283#endif 
     284#if defined key_trc_dia3d  
     285# if ! defined key_iomput 
     286               trc3d(ji,jj,jk,jp_lob0_3d    ) = zno3phy * 86400      
     287               trc3d(ji,jj,jk,jp_lob0_3d + 1) = znh4phy * 86400      
     288               trc3d(ji,jj,jk,jp_lob0_3d + 2) = znh4no3 * 86400    
     289# else 
     290               zw3d(ji,jj,jk,1) = zno3phy * 86400      
     291               zw3d(ji,jj,jk,2) = znh4phy * 86400      
     292               zw3d(ji,jj,jk,3) = znh4no3 * 86400    
     293# endif 
     294#endif   
     295#endif 
    264296            END DO 
    265297         END DO 
    266298      END DO 
    267299 
    268       ! 
    269  
    270 !!gm do loop until jpkm1 only! 
    271300      !                                      ! -------------------------- ! 
    272       DO jk = jpkb, jpk                      !  Upper ocean (bio-layers)  ! 
     301      DO jk = jpkb, jpkm1                    !  Upper ocean (bio-layers)  ! 
    273302         !                                   ! -------------------------- ! 
    274  
    275303         DO jj = 2, jpjm1 
    276             DO ji = 2,jpim1             !!gm use of fs_2 & fs_jpim1 required 
    277   
     304            DO ji = fs_2, fs_jpim1  
    278305               ! remineralisation of all quantities towards nitrate  
    279306 
     
    335362               zdoma = zphydom + zzoodom + zdetdom - zdomnh4 - zdomaju 
    336363 
     364               ! tracer flux at totox-point added to the general trend 
     365               tra(ji,jj,jk,jpdet) = tra(ji,jj,jk,jpdet) + zdeta 
     366               tra(ji,jj,jk,jpzoo) = tra(ji,jj,jk,jpzoo) + zzooa 
     367               tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) + zphya 
     368               tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + zno3a 
     369               tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + znh4a 
     370               tra(ji,jj,jk,jpdom) = tra(ji,jj,jk,jpdom) + zdoma 
     371               ! 
    337372#if defined key_trc_diabio 
    338373               trbio(ji,jj,jk,jp_lob0_trd     ) = zno3phy 
     
    351386               trbio(ji,jj,jk,jp_lob0_trd + 14) = zdetnh4 
    352387               trbio(ji,jj,jk,jp_lob0_trd + 15) = zdetdom 
    353 #endif 
    354 #if defined key_trc_diaadd 
    355                trc2d(ji,jj, jp_lob0_2d    ) = trc2d(ji,jj, jp_lob0_2d    ) + zno3phy * ze3t(ji,jj,jk)           
    356                trc2d(ji,jj, jp_lob0_2d + 1) = trc2d(ji,jj, jp_lob0_2d + 1) + znh4phy * ze3t(ji,jj,jk) 
    357                trc2d(ji,jj, jp_lob0_2d + 2) = trc2d(ji,jj, jp_lob0_2d + 2) + zphydom * ze3t(ji,jj,jk) 
    358                trc2d(ji,jj, jp_lob0_2d + 3) = trc2d(ji,jj, jp_lob0_2d + 3) + zphynh4 * ze3t(ji,jj,jk) 
    359                trc2d(ji,jj, jp_lob0_2d + 4) = trc2d(ji,jj, jp_lob0_2d + 4) + zphyzoo * ze3t(ji,jj,jk) 
    360                trc2d(ji,jj, jp_lob0_2d + 5) = trc2d(ji,jj, jp_lob0_2d + 5) + zphydet * ze3t(ji,jj,jk) 
    361                trc2d(ji,jj, jp_lob0_2d + 6) = trc2d(ji,jj, jp_lob0_2d + 6) + zdetzoo * ze3t(ji,jj,jk) 
    362                ! trend number 8 is in trcsed.F             
    363                trc2d(ji,jj,jp_lob0_2d +  8) = trc2d(ji,jj,jp_lob0_2d +  8) + zzoodet * ze3t(ji,jj,jk) 
    364                trc2d(ji,jj,jp_lob0_2d +  9) = trc2d(ji,jj,jp_lob0_2d +  9) + zzoobod * ze3t(ji,jj,jk) 
    365                trc2d(ji,jj,jp_lob0_2d + 10) = trc2d(ji,jj,jp_lob0_2d + 10) + zzoonh4 * ze3t(ji,jj,jk) 
    366                trc2d(ji,jj,jp_lob0_2d + 11) = trc2d(ji,jj,jp_lob0_2d + 11) + zzoodom * ze3t(ji,jj,jk) 
    367                trc2d(ji,jj,jp_lob0_2d + 12) = trc2d(ji,jj,jp_lob0_2d + 12) + znh4no3 * ze3t(ji,jj,jk) 
    368                trc2d(ji,jj,jp_lob0_2d + 13) = trc2d(ji,jj,jp_lob0_2d + 13) + zdomnh4 * ze3t(ji,jj,jk) 
    369                trc2d(ji,jj,jp_lob0_2d + 14) = trc2d(ji,jj,jp_lob0_2d + 14) + zdetnh4 * ze3t(ji,jj,jk) 
    370               
    371                trc2d(ji,jj,jp_lob0_2d + 15) = trc2d(ji,jj,jp_lob0_2d + 15) + (  zno3phy + znh4phy - zphynh4   & 
    372                   &                                 - zphydom - zphyzoo - zphydet  ) * ze3t(ji,jj,jk) 
    373                trc2d(ji,jj,jp_lob0_2d + 16) = trc2d(ji,jj,jp_lob0_2d + 16) + (  zphyzoo + zdetzoo - zzoodet   & 
    374                   &                                 - zzoobod - zzoonh4 - zzoodom  ) * ze3t(ji,jj,jk) 
    375                trc2d(ji,jj,jp_lob0_2d + 17) = trc2d(ji,jj,jp_lob0_2d + 17) + zdetdom * ze3t(ji,jj,jk) 
    376  
    377                trc3d(ji,jj,jk,jp_lob0_3d    ) =  zno3phy * 86400      
    378                trc3d(ji,jj,jk,jp_lob0_3d + 1) =  znh4phy * 86400      
    379                trc3d(ji,jj,jk,jp_lob0_3d + 2) =  znh4no3 * 86400      
    380388#endif 
    381389               IF( l_trdtrc ) THEN 
     
    398406                  !  trend number 17 in trcexp 
    399407                ENDIF 
    400  
    401  
    402                ! tracer flux at totox-point added to the general trend 
    403                tra(ji,jj,jk,jpdet) = tra(ji,jj,jk,jpdet) + zdeta 
    404                tra(ji,jj,jk,jpzoo) = tra(ji,jj,jk,jpzoo) + zzooa 
    405                tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) + zphya 
    406                tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + zno3a 
    407                tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + znh4a 
    408                tra(ji,jj,jk,jpdom) = tra(ji,jj,jk,jpdom) + zdoma 
    409                ! 
     408#if defined key_trc_diaadd && defined key_trc_dia3d 
     409# if ! defined key_iomput 
     410               trc3d(ji,jj,jk,jp_lob0_3d    ) =  zno3phy * 86400      
     411               trc3d(ji,jj,jk,jp_lob0_3d + 1) =  znh4phy * 86400      
     412               trc3d(ji,jj,jk,jp_lob0_3d + 2) =  znh4no3 * 86400      
     413# else 
     414               zw3d(ji,jj,jk,1) = zno3phy * 86400      
     415               zw3d(ji,jj,jk,2) = znh4phy * 86400      
     416               zw3d(ji,jj,jk,3) = znh4no3 * 86400    
     417# endif 
     418#endif 
    410419            END DO 
    411420         END DO 
     
    413422 
    414423#if defined key_trc_diaadd 
    415       ! Lateral boundary conditions on trc2d and trc3d 
     424      ! Lateral boundary conditions  
     425# if ! defined key_iomput 
    416426      DO jl = jp_lob0_2d, jp_lob1_2d 
    417427          CALL lbc_lnk( trc2d(:,:,jl),'T', 1. ) 
    418428      END DO  
     429# else 
     430      DO jl = 1, 17  
     431          CALL lbc_lnk( zw2d(:,:,jl),'T', 1. ) 
     432      END DO 
     433      ! Save diagnostics 
     434      CALL iom_put( "TNO3PHY", zw2d(:,:,1) ) 
     435      CALL iom_put( "TNH4PHY", zw2d(:,:,2) ) 
     436      CALL iom_put( "TPHYDOM", zw2d(:,:,3) ) 
     437      CALL iom_put( "TPHYNH4", zw2d(:,:,4) ) 
     438      CALL iom_put( "TPHYZOO", zw2d(:,:,5) ) 
     439      CALL iom_put( "TPHYDET", zw2d(:,:,6) ) 
     440      CALL iom_put( "TDETZOO", zw2d(:,:,7) ) 
     441      CALL iom_put( "TZOODET", zw2d(:,:,8) ) 
     442      CALL iom_put( "TZOOBOD", zw2d(:,:,9) ) 
     443      CALL iom_put( "TZOONH4", zw2d(:,:,10) ) 
     444      CALL iom_put( "TZOODOM", zw2d(:,:,11) ) 
     445      CALL iom_put( "TNH4NO3", zw2d(:,:,12) ) 
     446      CALL iom_put( "TDOMNH4", zw2d(:,:,13) ) 
     447      CALL iom_put( "TDETNH4", zw2d(:,:,14) ) 
     448      CALL iom_put( "TPHYTOT", zw2d(:,:,15) ) 
     449      CALL iom_put( "TZOOTOT", zw2d(:,:,16) ) 
     450      CALL iom_put( "TDETDOM", zw2d(:,:,17) ) 
     451# endif 
     452#endif 
     453 
     454#if defined key_trc_diaadd && defined key_trc_dia3d 
     455      ! Lateral boundary conditions  
     456# if ! defined key_iomput 
    419457      DO jl = jp_lob0_3d, jp_lob1_3d 
    420458          CALL lbc_lnk( trc3d(:,:,1,jl),'T', 1. ) 
    421459      END DO  
     460# else 
     461      DO jl = 1, 3 
     462          CALL lbc_lnk( zw3d(:,:,:,jl),'T', 1. ) 
     463      END DO 
     464      ! save diagnostics 
     465      CALL iom_put( "FNO3PHY", zw3d(:,:,:,1) ) 
     466      CALL iom_put( "FNH4PHY", zw3d(:,:,:,2) ) 
     467      CALL iom_put( "FNH4NO3", zw3d(:,:,:,3) ) 
     468# endif  
    422469#endif 
    423470 
  • trunk/NEMO/TOP_SRC/LOBSTER/trcexp.F90

    r1255 r1457  
    2323   USE trdmld_trc 
    2424   USE trdmld_trc_oce 
     25   USE iom 
    2526 
    2627   IMPLICIT NONE 
     
    3031 
    3132   !!* Substitution 
    32 #  include "domzgr_substitute.h90" 
     33#  include "top_substitute.h90" 
    3334   !!---------------------------------------------------------------------- 
    3435   !! NEMO/TOP 2.0 , LOCEAN-IPSL (2007)  
     
    5455      INTEGER, INTENT( in ) ::   kt      ! ocean time-step index       
    5556      !! 
    56       INTEGER  ::   ji, jj, jk, jl 
    57       REAL(wp) ::   zgeolpoc, zfact 
    58       INTEGER , DIMENSION(jpi,jpj) ::   ikbot 
    59       REAL(wp), DIMENSION(jpi,jpj) ::   zwork 
     57      INTEGER  ::   ji, jj, jk, jl, ikbot 
     58      REAL(wp) ::   zgeolpoc, zfact, zwork, ze3t 
    6059      REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::   ztrbio 
    6160      CHARACTER (len=25) :: charout 
     
    8180      DO jk = 1, jpkm1 
    8281         DO jj = 2, jpjm1 
    83             DO ji = 2, jpim1 
    84                tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3)   & 
    85      &                             + (1./fse3t(ji,jj,jk)) * dmin3(ji,jj,jk) * fbod(ji,jj) 
     82            DO ji = fs_2, fs_jpim1 
     83               ze3t = 1. / fse3t(ji,jj,jk) 
     84               tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + ze3t * dmin3(ji,jj,jk) * fbod(ji,jj) 
    8685            END DO 
    8786         END DO 
    8887      END DO 
    8988 
    90 !    Find the last level of the water column 
    91 !    Compute fluxes due to sinking particles (slow) 
     89      ! Find the last level of the water column 
     90      ! Compute fluxes due to sinking particles (slow) 
    9291    
    93       ikbot(:,:) = jpk 
    94       zwork(:,:) = 0.e0 
    9592 
    96 !!gm ikbot already exist in opa... 
    97       DO jk = 1, jpkm1 
    98          DO jj = 2, jpjm1 
    99             DO ji = 2, jpim1 
    100                IF( tmask(ji,jj,jk) == 1 .AND.  tmask(ji,jj,jk+1) == 0 ) THEN 
    101                   ikbot(ji,jj) = jk 
    102                   zwork(ji,jj) = vsed * trn(ji,jj,jk,jpdet) 
    103                ENDIF 
    104             END DO 
     93      zgeolpoc = 0.e0         !     Initialization 
     94      ! Release of nutrients from the "simple" sediment 
     95      DO jj = 2, jpjm1 
     96         DO ji = fs_2, fs_jpim1 
     97            ikbot = mbathy(ji,jj) - 1 
     98            tra(ji,jj,ikbot,jpno3) = tra(ji,jj,ikbot,jpno3) + sedlam * sedpocn(ji,jj) / fse3t(ji,jj,ikbot)  
     99            ! Deposition of organic matter in the sediment 
     100            zwork = vsed * trn(ji,jj,ikbot,jpdet) 
     101            sedpoca(ji,jj) = ( zwork + dminl(ji,jj) * fbod(ji,jj)   & 
     102               &           - sedlam * sedpocn(ji,jj) - sedlostpoc * sedpocn(ji,jj) ) * rdt 
     103            zgeolpoc = zgeolpoc + sedlostpoc * sedpocn(ji,jj) * e1t(ji,jj) * e2t(ji,jj) 
    105104         END DO 
    106105      END DO 
    107106 
    108       zgeolpoc = 0.e0         !     Initialization 
    109  
    110       ! Release of nutrients from the "simple" sediment 
    111107      DO jj = 2, jpjm1 
    112          DO ji = 2, jpim1 
    113             tra(ji,jj,ikbot(ji,jj),jpno3) = tra(ji,jj,ikbot(ji,jj),jpno3)   & 
    114                &                          + sedlam * sedpocn(ji,jj) / fse3t(ji,jj,ikbot(ji,jj)) 
    115  
    116             !     Deposition of organic matter in the sediment 
    117             zgeolpoc = zgeolpoc + sedlostpoc * sedpocn(ji,jj) * e1t(ji,jj) * e2t(ji,jj) 
    118  
    119 !!gm factorisationof rdt just bellow... 
    120             sedpoca(ji,jj) = zwork(ji,jj) * rdt + dminl(ji,jj) * fbod(ji,jj) * rdt   & 
    121                &           - sedlam * sedpocn(ji,jj) * rdt - sedlostpoc * sedpocn(ji,jj) * rdt 
    122  
    123          END DO 
    124       END DO 
    125  
    126       DO jj = 2,jpjm1 
    127          DO ji = 2,jpim1 
     108         DO ji = fs_2, fs_jpim1 
    128109            tra(ji,jj,1,jpno3) = tra(ji,jj,1,jpno3) + zgeolpoc * cmask(ji,jj) / areacot / fse3t(ji,jj,1) 
    129110         END DO 
     
    133114  
    134115      ! Oa & Ek: diagnostics depending on jpdia2d !          left as example 
    135 # if defined key_trc_diaadd 
     116#if defined key_trc_diaadd 
     117# if ! defined key_iomput 
    136118      trc2d(:,:,jp_lob0_2d + 18) = sedpocn(:,:) 
     119# else 
     120     CALL iom_put( "SEDPOC" , sedpocn ) 
    137121# endif 
     122#endif 
    138123 
    139124      ! Leap-frog scheme (only in explicit case, otherwise the  
  • trunk/NEMO/TOP_SRC/LOBSTER/trclsm_lobster.F90

    r1283 r1457  
    4242      INTEGER ::   numnatl 
    4343      !! 
    44 #if defined key_trc_diaadd 
     44#if defined key_trc_diaadd && ! defined key_iomput 
    4545      INTEGER :: jl, jn 
    4646      ! definition of additional diagnostic as a structure 
     
    7878 
    7979      NAMELIST/namlobopt/ xkg0, xkr0, xkgp, xkrp, xlg, xlr, rpig 
    80 #if defined key_trc_diaadd 
     80#if defined key_trc_diaadd && ! defined key_iomput 
    8181      NAMELIST/namlobdia/nwritedia, lobdia3d, lobdia2d     ! additional diagnostics 
    8282#endif 
     
    280280      ENDIF 
    281281 
    282 #if defined key_trc_diaadd 
     282#if defined key_trc_diaadd && ! defined key_iomput 
    283283 
    284284      ! Namelist namlobdia 
  • trunk/NEMO/TOP_SRC/LOBSTER/trcsed.F90

    r1255 r1457  
    2020   USE trdmld_trc 
    2121   USE trdmld_trc_oce 
    22  
     22   USE iom 
    2323   USE prtctl_trc      ! Print control for debbuging 
    2424 
     
    6161      REAL(wp) ::   ztra 
    6262      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zwork 
     63#if defined key_trc_diaadd && defined key_iomput 
     64      REAL(wp), DIMENSION(jpi,jpj) ::  zw2d 
     65#endif 
    6366      REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::   ztrbio 
    6467      CHARACTER (len=25) :: charout 
     
    7578 
    7679      ! for detritus sedimentation only - jpdet 
    77  
    7880      zwork(:,:,1  ) = 0.e0      ! surface value set to zero 
    7981      zwork(:,:,jpk) = 0.e0      ! bottom value  set to zero 
     82 
     83#if defined key_trc_diaadd && defined key_iomput 
     84      zw2d(:,:) = 0. 
     85# endif 
    8086 
    8187      IF( l_trdtrc )THEN 
     
    8591 
    8692      ! tracer flux at w-point: we use -vsed (downward flux)  with simplification : no e1*e2 
    87  
    88       DO jk = 2, jpk 
     93      DO jk = 2, jpkm1 
    8994         zwork(:,:,jk) = -vsed * trn(:,:,jk-1,jpdet) 
    9095      END DO 
    9196 
    9297      ! tracer flux divergence at t-point added to the general trend 
    93  
    9498      DO jk = 1, jpkm1 
    9599         DO jj = 1, jpj 
     
    97101               ztra  = - ( zwork(ji,jj,jk) - zwork(ji,jj,jk+1) ) / fse3t(ji,jj,jk) 
    98102               tra(ji,jj,jk,jpdet) = tra(ji,jj,jk,jpdet) + ztra 
    99 # if defined key_trc_diabio 
     103#if defined key_trc_diabio 
    100104               trbio(ji,jj,jk,jp_lob0_trd + 7) = ztra 
     105#endif 
     106#if defined key_trc_diaadd 
     107# if ! defined key_iomput 
     108               trc2d(ji,jj,jp_lob0_2d + 7) = trc2d(ji,jj,jp_lob0_2d + 7) + ztra * fse3t(ji,jj,jk) * 86400. 
     109# else 
     110               zw2d(ji,jj) = zw2d(ji,jj) + ztra * fse3t(ji,jj,jk) * 86400. 
    101111# endif 
    102 # if defined key_trc_diaadd 
    103                trc2d(ji,jj,jp_lob0_2d + 7) = trc2d(ji,jj,jp_lob0_2d + 7) + ztra * fse3t(ji,jj,jk) * 86400. 
    104 # endif 
     112#endif 
    105113            END DO 
    106114         END DO 
     
    112120#endif 
    113121#if defined key_trc_diaadd 
     122# if ! defined key_iomput 
    114123      jl = jp_lob0_2d + 7 
    115124      CALL lbc_lnk( trc2d(:,:,jl), 'T', 1. )      ! Lateral boundary conditions on trc2d 
     125# else 
     126      CALL lbc_lnk( zw2d(:,:), 'T', 1. )      ! Lateral boundary conditions on zw2d 
     127      CALL iom_put( "TDETSED", zw2d ) 
     128# endif 
    116129#endif 
    117130      ! 
Note: See TracChangeset for help on using the changeset viewer.