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 13463 for NEMO/branches/2019/dev_r11351_fldread_with_XIOS/src/TOP/PISCES/P2Z/p2zbio.F90 – NEMO

Ignore:
Timestamp:
2020-09-14T17:40:34+02:00 (4 years ago)
Author:
andmirek
Message:

Ticket #2195:update to trunk 13461

Location:
NEMO/branches/2019/dev_r11351_fldread_with_XIOS
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r11351_fldread_with_XIOS

    • Property svn:externals
      •  

        old new  
        33^/utils/build/mk@HEAD         mk 
        44^/utils/tools@HEAD            tools 
        5 ^/vendors/AGRIF/dev@HEAD      ext/AGRIF 
         5^/vendors/AGRIF/dev_r12970_AGRIF_CMEMS      ext/AGRIF 
        66^/vendors/FCM@HEAD            ext/FCM 
        77^/vendors/IOIPSL@HEAD         ext/IOIPSL 
         8 
         9# SETTE 
         10^/utils/CI/sette@13382        sette 
  • NEMO/branches/2019/dev_r11351_fldread_with_XIOS/src/TOP/PISCES/P2Z/p2zbio.F90

    r10425 r13463  
    1919   ! 
    2020   USE lbclnk          !  
    21    USE prtctl_trc      ! Print control for debbuging 
     21   USE prtctl          ! Print control for debbuging 
    2222   USE iom             ! 
    2323    
     
    5757 
    5858   !! * Substitutions 
    59 #  include "vectopt_loop_substitute.h90" 
     59#  include "do_loop_substitute.h90" 
     60#  include "domzgr_substitute.h90" 
    6061   !!---------------------------------------------------------------------- 
    6162   !! NEMO/TOP 4.0 , NEMO Consortium (2018) 
     
    6566CONTAINS 
    6667 
    67    SUBROUTINE p2z_bio( kt ) 
     68   SUBROUTINE p2z_bio( kt, Kmm, Krhs ) 
    6869      !!--------------------------------------------------------------------- 
    6970      !!                     ***  ROUTINE p2z_bio  *** 
     
    7879      !!              is added to the general trend. 
    7980      !!         
    80       !!                      tra = tra + zf...tra - zftra... 
     81      !!                      tr(Krhs) = tr(Krhs) + zf...tr(Krhs) - zftra... 
    8182      !!                                     |         | 
    8283      !!                                     |         | 
     
    8485      !!         
    8586      !!--------------------------------------------------------------------- 
    86       INTEGER, INTENT( in ) ::   kt      ! ocean time-step index       
     87      INTEGER, INTENT( in ) ::   kt             ! ocean time-step index       
     88      INTEGER, INTENT( in ) ::   Kmm, Krhs      ! time level indices 
    8789      ! 
    8890      INTEGER  ::   ji, jj, jk, jl 
     
    120122      DO jk = 1, jpkbm1                      !  Upper ocean (bio-layers)  ! 
    121123         !                                   ! -------------------------- ! 
    122          DO jj = 2, jpjm1 
    123             DO ji = fs_2, fs_jpim1  
    124                ! trophic variables( det, zoo, phy, no3, nh4, dom) 
    125                ! ------------------------------------------------ 
    126  
    127                ! negative trophic variables DO not contribute to the fluxes 
    128                zdet = MAX( 0.e0, trn(ji,jj,jk,jpdet) ) 
    129                zzoo = MAX( 0.e0, trn(ji,jj,jk,jpzoo) ) 
    130                zphy = MAX( 0.e0, trn(ji,jj,jk,jpphy) ) 
    131                zno3 = MAX( 0.e0, trn(ji,jj,jk,jpno3) ) 
    132                znh4 = MAX( 0.e0, trn(ji,jj,jk,jpnh4) ) 
    133                zdom = MAX( 0.e0, trn(ji,jj,jk,jpdom) ) 
    134  
    135                ! Limitations 
    136                zlt   = 1. 
    137                zle   = 1. - EXP( -etot(ji,jj,jk) / aki / zlt ) 
    138                ! psinut,akno3,aknh4 added by asklod AS Kremeur 2005-03 
    139                zlno3 = zno3 * EXP( -psinut * znh4 ) / ( akno3 + zno3 ) 
    140                zlnh4 = znh4 / (znh4+aknh4)   
    141  
    142                ! sinks and sources 
    143                !    phytoplankton production and exsudation 
    144                zno3phy = tmumax * zle * zlt * zlno3 * zphy 
    145                znh4phy = tmumax * zle * zlt * zlnh4 * zphy 
    146  
    147                !    fphylab added by asklod AS Kremeur 2005-03 
    148                zphydom = rgamma * (1 - fphylab) * (zno3phy + znh4phy) 
    149                zphynh4 = rgamma * fphylab * (zno3phy + znh4phy) 
    150                ! zooplankton production 
    151                !    preferences 
    152                zppz = rppz 
    153                zpdz = 1. - rppz 
    154                zpppz = ( zppz * zphy ) / ( ( zppz * zphy + zpdz * zdet ) + 1.e-13 ) 
    155                zppdz = ( zpdz * zdet ) / ( ( zppz * zphy + zpdz * zdet ) + 1.e-13 ) 
    156                zfood = zpppz * zphy + zppdz * zdet 
    157                !    filtration  
    158                zfilpz = taus * zpppz / (aks + zfood) 
    159                zfildz = taus * zppdz / (aks + zfood) 
    160                !    grazing 
    161                zphyzoo = zfilpz * zphy * zzoo 
    162                zdetzoo = zfildz * zdet * zzoo 
    163  
    164                ! fecal pellets production 
    165                zzoodet = rpnaz * zphyzoo + rdnaz * zdetzoo 
    166  
    167                ! zooplankton liquide excretion 
    168                zzoonh4 = tauzn * fzoolab * zzoo   
    169                zzoodom = tauzn * (1 - fzoolab) * zzoo 
    170  
    171                ! mortality 
    172                !    phytoplankton mortality 
    173                zphydet = tmminp * zphy 
    174  
    175                !    zooplankton mortality 
    176                !    closure : flux grazing is redistributed below level jpkbio 
    177                zzoobod = tmminz * zzoo * zzoo 
    178                xksi(ji,jj) = xksi(ji,jj) + (1-fdbod) * zzoobod * e3t_n(ji,jj,jk) 
    179                zboddet = fdbod * zzoobod 
    180  
    181                ! detritus and dom breakdown 
    182                zdetnh4 = taudn * fdetlab * zdet 
    183                zdetdom = taudn * (1 - fdetlab) * zdet 
    184  
    185                zdomnh4 = taudomn * zdom 
    186  
    187                ! flux added to express how the excess of nitrogen from  
    188                ! PHY, ZOO and DET to DOM goes directly to NH4 (flux of ajustment) 
    189                zdomaju = (1 - redf/reddom) * (zphydom + zzoodom + zdetdom) 
    190  
    191                ! Nitrification  
    192                znh4no3 = taunn * znh4 
    193  
    194                ! determination of trends 
    195                !    total trend for each biological tracer 
    196                zphya =   zno3phy + znh4phy - zphynh4 - zphydom - zphyzoo - zphydet 
    197                zzooa =   zphyzoo + zdetzoo - zzoodet - zzoodom - zzoonh4 - zzoobod 
    198                zno3a = - zno3phy + znh4no3 
    199                znh4a = - znh4phy - znh4no3 + zphynh4 + zzoonh4 + zdomnh4 + zdetnh4 + zdomaju 
    200                zdeta =   zphydet + zzoodet - zdetzoo - zdetnh4 - zdetdom + zboddet 
    201                zdoma =   zphydom + zzoodom + zdetdom - zdomnh4 - zdomaju 
    202  
    203                ! tracer flux at totox-point added to the general trend 
    204                tra(ji,jj,jk,jpdet) = tra(ji,jj,jk,jpdet) + zdeta 
    205                tra(ji,jj,jk,jpzoo) = tra(ji,jj,jk,jpzoo) + zzooa 
    206                tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) + zphya 
    207                tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + zno3a 
    208                tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + znh4a 
    209                tra(ji,jj,jk,jpdom) = tra(ji,jj,jk,jpdom) + zdoma 
    210  
    211                 IF( lk_iomput ) THEN 
    212                   ! convert fluxes in per day 
    213                   ze3t = e3t_n(ji,jj,jk) * 86400._wp 
    214                   zw2d(ji,jj,1)  = zw2d(ji,jj,1)  + zno3phy * ze3t 
    215                   zw2d(ji,jj,2)  = zw2d(ji,jj,2)  + znh4phy * ze3t 
    216                   zw2d(ji,jj,3)  = zw2d(ji,jj,3)  + zphydom * ze3t 
    217                   zw2d(ji,jj,4)  = zw2d(ji,jj,4)  + zphynh4 * ze3t 
    218                   zw2d(ji,jj,5)  = zw2d(ji,jj,5)  + zphyzoo * ze3t 
    219                   zw2d(ji,jj,6)  = zw2d(ji,jj,6)  + zphydet * ze3t 
    220                   zw2d(ji,jj,7)  = zw2d(ji,jj,7)  + zdetzoo * ze3t 
    221                   zw2d(ji,jj,8)  = zw2d(ji,jj,8)  + zzoodet * ze3t 
    222                   zw2d(ji,jj,9)  = zw2d(ji,jj,9)  + zzoobod * ze3t 
    223                   zw2d(ji,jj,10) = zw2d(ji,jj,10) + zzoonh4 * ze3t 
    224                   zw2d(ji,jj,11) = zw2d(ji,jj,11) + zzoodom * ze3t 
    225                   zw2d(ji,jj,12) = zw2d(ji,jj,12) + znh4no3 * ze3t 
    226                   zw2d(ji,jj,13) = zw2d(ji,jj,13) + zdomnh4 * ze3t 
    227                   zw2d(ji,jj,14) = zw2d(ji,jj,14) + zdetnh4 * ze3t 
    228                   zw2d(ji,jj,15) = zw2d(ji,jj,15) + ( zno3phy + znh4phy - zphynh4 - zphydom - zphyzoo - zphydet ) * ze3t 
    229                   zw2d(ji,jj,16) = zw2d(ji,jj,16) + ( zphyzoo + zdetzoo - zzoodet - zzoobod - zzoonh4 - zzoodom ) * ze3t 
    230                   zw2d(ji,jj,17) = zw2d(ji,jj,17) + zdetdom * ze3t 
    231                   !    
    232                   zw3d(ji,jj,jk,1) = zno3phy * 86400 
    233                   zw3d(ji,jj,jk,2) = znh4phy * 86400      
    234                   zw3d(ji,jj,jk,3) = znh4no3 * 86400    
    235                    !  
    236                 ENDIF 
    237             END DO 
    238          END DO 
     124         DO_2D( 0, 0, 0, 0 ) 
     125            ! trophic variables( det, zoo, phy, no3, nh4, dom) 
     126            ! ------------------------------------------------ 
     127 
     128            ! negative trophic variables DO not contribute to the fluxes 
     129            zdet = MAX( 0.e0, tr(ji,jj,jk,jpdet,Kmm) ) 
     130            zzoo = MAX( 0.e0, tr(ji,jj,jk,jpzoo,Kmm) ) 
     131            zphy = MAX( 0.e0, tr(ji,jj,jk,jpphy,Kmm) ) 
     132            zno3 = MAX( 0.e0, tr(ji,jj,jk,jpno3,Kmm) ) 
     133            znh4 = MAX( 0.e0, tr(ji,jj,jk,jpnh4,Kmm) ) 
     134            zdom = MAX( 0.e0, tr(ji,jj,jk,jpdom,Kmm) ) 
     135 
     136            ! Limitations 
     137            zlt   = 1. 
     138            zle   = 1. - EXP( -etot(ji,jj,jk) / aki / zlt ) 
     139            ! psinut,akno3,aknh4 added by asklod AS Kremeur 2005-03 
     140            zlno3 = zno3 * EXP( -psinut * znh4 ) / ( akno3 + zno3 ) 
     141            zlnh4 = znh4 / (znh4+aknh4)   
     142 
     143            ! sinks and sources 
     144            !    phytoplankton production and exsudation 
     145            zno3phy = tmumax * zle * zlt * zlno3 * zphy 
     146            znh4phy = tmumax * zle * zlt * zlnh4 * zphy 
     147 
     148            !    fphylab added by asklod AS Kremeur 2005-03 
     149            zphydom = rgamma * (1 - fphylab) * (zno3phy + znh4phy) 
     150            zphynh4 = rgamma * fphylab * (zno3phy + znh4phy) 
     151            ! zooplankton production 
     152            !    preferences 
     153            zppz = rppz 
     154            zpdz = 1. - rppz 
     155            zpppz = ( zppz * zphy ) / ( ( zppz * zphy + zpdz * zdet ) + 1.e-13 ) 
     156            zppdz = ( zpdz * zdet ) / ( ( zppz * zphy + zpdz * zdet ) + 1.e-13 ) 
     157            zfood = zpppz * zphy + zppdz * zdet 
     158            !    filtration  
     159            zfilpz = taus * zpppz / (aks + zfood) 
     160            zfildz = taus * zppdz / (aks + zfood) 
     161            !    grazing 
     162            zphyzoo = zfilpz * zphy * zzoo 
     163            zdetzoo = zfildz * zdet * zzoo 
     164 
     165            ! fecal pellets production 
     166            zzoodet = rpnaz * zphyzoo + rdnaz * zdetzoo 
     167 
     168            ! zooplankton liquide excretion 
     169            zzoonh4 = tauzn * fzoolab * zzoo   
     170            zzoodom = tauzn * (1 - fzoolab) * zzoo 
     171 
     172            ! mortality 
     173            !    phytoplankton mortality 
     174            zphydet = tmminp * zphy 
     175 
     176            !    zooplankton mortality 
     177            !    closure : flux grazing is redistributed below level jpkbio 
     178            zzoobod = tmminz * zzoo * zzoo 
     179            xksi(ji,jj) = xksi(ji,jj) + (1-fdbod) * zzoobod * e3t(ji,jj,jk,Kmm) 
     180            zboddet = fdbod * zzoobod 
     181 
     182            ! detritus and dom breakdown 
     183            zdetnh4 = taudn * fdetlab * zdet 
     184            zdetdom = taudn * (1 - fdetlab) * zdet 
     185 
     186            zdomnh4 = taudomn * zdom 
     187 
     188            ! flux added to express how the excess of nitrogen from  
     189            ! PHY, ZOO and DET to DOM goes directly to NH4 (flux of ajustment) 
     190            zdomaju = (1 - redf/reddom) * (zphydom + zzoodom + zdetdom) 
     191 
     192            ! Nitrification  
     193            znh4no3 = taunn * znh4 
     194 
     195            ! determination of trends 
     196            !    total trend for each biological tracer 
     197            zphya =   zno3phy + znh4phy - zphynh4 - zphydom - zphyzoo - zphydet 
     198            zzooa =   zphyzoo + zdetzoo - zzoodet - zzoodom - zzoonh4 - zzoobod 
     199            zno3a = - zno3phy + znh4no3 
     200            znh4a = - znh4phy - znh4no3 + zphynh4 + zzoonh4 + zdomnh4 + zdetnh4 + zdomaju 
     201            zdeta =   zphydet + zzoodet - zdetzoo - zdetnh4 - zdetdom + zboddet 
     202            zdoma =   zphydom + zzoodom + zdetdom - zdomnh4 - zdomaju 
     203 
     204            ! tracer flux at totox-point added to the general trend 
     205            tr(ji,jj,jk,jpdet,Krhs) = tr(ji,jj,jk,jpdet,Krhs) + zdeta 
     206            tr(ji,jj,jk,jpzoo,Krhs) = tr(ji,jj,jk,jpzoo,Krhs) + zzooa 
     207            tr(ji,jj,jk,jpphy,Krhs) = tr(ji,jj,jk,jpphy,Krhs) + zphya 
     208            tr(ji,jj,jk,jpno3,Krhs) = tr(ji,jj,jk,jpno3,Krhs) + zno3a 
     209            tr(ji,jj,jk,jpnh4,Krhs) = tr(ji,jj,jk,jpnh4,Krhs) + znh4a 
     210            tr(ji,jj,jk,jpdom,Krhs) = tr(ji,jj,jk,jpdom,Krhs) + zdoma 
     211 
     212             IF( lk_iomput ) THEN 
     213               ! convert fluxes in per day 
     214               ze3t = e3t(ji,jj,jk,Kmm) * 86400._wp 
     215               zw2d(ji,jj,1)  = zw2d(ji,jj,1)  + zno3phy * ze3t 
     216               zw2d(ji,jj,2)  = zw2d(ji,jj,2)  + znh4phy * ze3t 
     217               zw2d(ji,jj,3)  = zw2d(ji,jj,3)  + zphydom * ze3t 
     218               zw2d(ji,jj,4)  = zw2d(ji,jj,4)  + zphynh4 * ze3t 
     219               zw2d(ji,jj,5)  = zw2d(ji,jj,5)  + zphyzoo * ze3t 
     220               zw2d(ji,jj,6)  = zw2d(ji,jj,6)  + zphydet * ze3t 
     221               zw2d(ji,jj,7)  = zw2d(ji,jj,7)  + zdetzoo * ze3t 
     222               zw2d(ji,jj,8)  = zw2d(ji,jj,8)  + zzoodet * ze3t 
     223               zw2d(ji,jj,9)  = zw2d(ji,jj,9)  + zzoobod * ze3t 
     224               zw2d(ji,jj,10) = zw2d(ji,jj,10) + zzoonh4 * ze3t 
     225               zw2d(ji,jj,11) = zw2d(ji,jj,11) + zzoodom * ze3t 
     226               zw2d(ji,jj,12) = zw2d(ji,jj,12) + znh4no3 * ze3t 
     227               zw2d(ji,jj,13) = zw2d(ji,jj,13) + zdomnh4 * ze3t 
     228               zw2d(ji,jj,14) = zw2d(ji,jj,14) + zdetnh4 * ze3t 
     229               zw2d(ji,jj,15) = zw2d(ji,jj,15) + ( zno3phy + znh4phy - zphynh4 - zphydom - zphyzoo - zphydet ) * ze3t 
     230               zw2d(ji,jj,16) = zw2d(ji,jj,16) + ( zphyzoo + zdetzoo - zzoodet - zzoobod - zzoonh4 - zzoodom ) * ze3t 
     231               zw2d(ji,jj,17) = zw2d(ji,jj,17) + zdetdom * ze3t 
     232               !    
     233               zw3d(ji,jj,jk,1) = zno3phy * 86400 
     234               zw3d(ji,jj,jk,2) = znh4phy * 86400      
     235               zw3d(ji,jj,jk,3) = znh4no3 * 86400    
     236                !  
     237             ENDIF 
     238         END_2D 
    239239      END DO 
    240240 
     
    242242      DO jk = jpkb, jpkm1                    !  Upper ocean (bio-layers)  ! 
    243243         !                                   ! -------------------------- ! 
    244          DO jj = 2, jpjm1 
    245             DO ji = fs_2, fs_jpim1  
    246                ! remineralisation of all quantities towards nitrate  
    247  
    248                !    trophic variables( det, zoo, phy, no3, nh4, dom) 
    249                !       negative trophic variables DO not contribute to the fluxes 
    250                zdet = MAX( 0.e0, trn(ji,jj,jk,jpdet) ) 
    251                zzoo = MAX( 0.e0, trn(ji,jj,jk,jpzoo) ) 
    252                zphy = MAX( 0.e0, trn(ji,jj,jk,jpphy) ) 
    253                zno3 = MAX( 0.e0, trn(ji,jj,jk,jpno3) ) 
    254                znh4 = MAX( 0.e0, trn(ji,jj,jk,jpnh4) ) 
    255                zdom = MAX( 0.e0, trn(ji,jj,jk,jpdom) ) 
    256  
    257                !    Limitations 
    258                zlt   = 0.e0 
    259                zle   = 0.e0 
    260                zlno3 = 0.e0 
    261                zlnh4 = 0.e0 
    262  
    263                !    sinks and sources 
    264                !       phytoplankton production and exsudation 
    265                zno3phy = 0.e0 
    266                znh4phy = 0.e0 
    267                zphydom = 0.e0 
    268                zphynh4 = 0.e0 
    269  
    270                !    zooplankton production 
    271                zphyzoo = 0.e0      ! grazing 
    272                zdetzoo = 0.e0 
    273  
    274                zzoodet = 0.e0      ! fecal pellets production 
    275  
    276                zzoonh4 = tauzn * fzoolab * zzoo         ! zooplankton liquide excretion 
    277                zzoodom = tauzn * (1 - fzoolab) * zzoo 
    278  
    279                !    mortality 
    280                zphydet = tmminp * zphy      ! phytoplankton mortality 
    281  
    282                zzoobod = 0.e0               ! zooplankton mortality 
    283                zboddet = 0.e0               ! closure : flux fbod is redistributed below level jpkbio 
    284  
    285                !    detritus and dom breakdown 
    286                zdetnh4 = taudn * fdetlab * zdet 
    287                zdetdom = taudn * (1 - fdetlab) * zdet 
    288  
    289                zdomnh4 = taudomn * zdom 
    290                zdomaju = (1 - redf/reddom) * (zphydom + zzoodom + zdetdom) 
    291  
    292                !    Nitrification 
    293                znh4no3 = taunn * znh4 
    294  
    295  
    296                ! determination of trends 
    297                !     total trend for each biological tracer 
    298                zphya =   zno3phy + znh4phy - zphynh4 - zphydom - zphyzoo - zphydet 
    299                zzooa =   zphyzoo + zdetzoo - zzoodet - zzoodom - zzoonh4 - zzoobod 
    300                zno3a = - zno3phy + znh4no3  
    301                znh4a = - znh4phy - znh4no3 + zphynh4 + zzoonh4 + zdomnh4 + zdetnh4 + zdomaju 
    302                zdeta = zphydet + zzoodet  - zdetzoo - zdetnh4 - zdetdom + zboddet 
    303                zdoma = zphydom + zzoodom + zdetdom - zdomnh4 - zdomaju 
    304  
    305                ! tracer flux at totox-point added to the general trend 
    306                tra(ji,jj,jk,jpdet) = tra(ji,jj,jk,jpdet) + zdeta 
    307                tra(ji,jj,jk,jpzoo) = tra(ji,jj,jk,jpzoo) + zzooa 
    308                tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) + zphya 
    309                tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + zno3a 
    310                tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + znh4a 
    311                tra(ji,jj,jk,jpdom) = tra(ji,jj,jk,jpdom) + zdoma 
     244         DO_2D( 0, 0, 0, 0 ) 
     245            ! remineralisation of all quantities towards nitrate  
     246 
     247            !    trophic variables( det, zoo, phy, no3, nh4, dom) 
     248            !       negative trophic variables DO not contribute to the fluxes 
     249            zdet = MAX( 0.e0, tr(ji,jj,jk,jpdet,Kmm) ) 
     250            zzoo = MAX( 0.e0, tr(ji,jj,jk,jpzoo,Kmm) ) 
     251            zphy = MAX( 0.e0, tr(ji,jj,jk,jpphy,Kmm) ) 
     252            zno3 = MAX( 0.e0, tr(ji,jj,jk,jpno3,Kmm) ) 
     253            znh4 = MAX( 0.e0, tr(ji,jj,jk,jpnh4,Kmm) ) 
     254            zdom = MAX( 0.e0, tr(ji,jj,jk,jpdom,Kmm) ) 
     255 
     256            !    Limitations 
     257            zlt   = 0.e0 
     258            zle   = 0.e0 
     259            zlno3 = 0.e0 
     260            zlnh4 = 0.e0 
     261 
     262            !    sinks and sources 
     263            !       phytoplankton production and exsudation 
     264            zno3phy = 0.e0 
     265            znh4phy = 0.e0 
     266            zphydom = 0.e0 
     267            zphynh4 = 0.e0 
     268 
     269            !    zooplankton production 
     270            zphyzoo = 0.e0      ! grazing 
     271            zdetzoo = 0.e0 
     272 
     273            zzoodet = 0.e0      ! fecal pellets production 
     274 
     275            zzoonh4 = tauzn * fzoolab * zzoo         ! zooplankton liquide excretion 
     276            zzoodom = tauzn * (1 - fzoolab) * zzoo 
     277 
     278            !    mortality 
     279            zphydet = tmminp * zphy      ! phytoplankton mortality 
     280 
     281            zzoobod = 0.e0               ! zooplankton mortality 
     282            zboddet = 0.e0               ! closure : flux fbod is redistributed below level jpkbio 
     283 
     284            !    detritus and dom breakdown 
     285            zdetnh4 = taudn * fdetlab * zdet 
     286            zdetdom = taudn * (1 - fdetlab) * zdet 
     287 
     288            zdomnh4 = taudomn * zdom 
     289            zdomaju = (1 - redf/reddom) * (zphydom + zzoodom + zdetdom) 
     290 
     291            !    Nitrification 
     292            znh4no3 = taunn * znh4 
     293 
     294 
     295            ! determination of trends 
     296            !     total trend for each biological tracer 
     297            zphya =   zno3phy + znh4phy - zphynh4 - zphydom - zphyzoo - zphydet 
     298            zzooa =   zphyzoo + zdetzoo - zzoodet - zzoodom - zzoonh4 - zzoobod 
     299            zno3a = - zno3phy + znh4no3  
     300            znh4a = - znh4phy - znh4no3 + zphynh4 + zzoonh4 + zdomnh4 + zdetnh4 + zdomaju 
     301            zdeta = zphydet + zzoodet  - zdetzoo - zdetnh4 - zdetdom + zboddet 
     302            zdoma = zphydom + zzoodom + zdetdom - zdomnh4 - zdomaju 
     303 
     304            ! tracer flux at totox-point added to the general trend 
     305            tr(ji,jj,jk,jpdet,Krhs) = tr(ji,jj,jk,jpdet,Krhs) + zdeta 
     306            tr(ji,jj,jk,jpzoo,Krhs) = tr(ji,jj,jk,jpzoo,Krhs) + zzooa 
     307            tr(ji,jj,jk,jpphy,Krhs) = tr(ji,jj,jk,jpphy,Krhs) + zphya 
     308            tr(ji,jj,jk,jpno3,Krhs) = tr(ji,jj,jk,jpno3,Krhs) + zno3a 
     309            tr(ji,jj,jk,jpnh4,Krhs) = tr(ji,jj,jk,jpnh4,Krhs) + znh4a 
     310            tr(ji,jj,jk,jpdom,Krhs) = tr(ji,jj,jk,jpdom,Krhs) + zdoma 
     311            ! 
     312             IF( lk_iomput ) THEN                  ! convert fluxes in per day 
     313               ze3t = e3t(ji,jj,jk,Kmm) * 86400._wp 
     314               zw2d(ji,jj,1)  = zw2d(ji,jj,1)  + zno3phy * ze3t 
     315               zw2d(ji,jj,2)  = zw2d(ji,jj,2)  + znh4phy * ze3t 
     316               zw2d(ji,jj,3)  = zw2d(ji,jj,3)  + zphydom * ze3t 
     317               zw2d(ji,jj,4)  = zw2d(ji,jj,4)  + zphynh4 * ze3t 
     318               zw2d(ji,jj,5)  = zw2d(ji,jj,5)  + zphyzoo * ze3t 
     319               zw2d(ji,jj,6)  = zw2d(ji,jj,6)  + zphydet * ze3t 
     320               zw2d(ji,jj,7)  = zw2d(ji,jj,7)  + zdetzoo * ze3t 
     321               zw2d(ji,jj,8)  = zw2d(ji,jj,8)  + zzoodet * ze3t 
     322               zw2d(ji,jj,9)  = zw2d(ji,jj,9)  + zzoobod * ze3t 
     323               zw2d(ji,jj,10) = zw2d(ji,jj,10) + zzoonh4 * ze3t 
     324               zw2d(ji,jj,11) = zw2d(ji,jj,11) + zzoodom * ze3t 
     325               zw2d(ji,jj,12) = zw2d(ji,jj,12) + znh4no3 * ze3t 
     326               zw2d(ji,jj,13) = zw2d(ji,jj,13) + zdomnh4 * ze3t 
     327               zw2d(ji,jj,14) = zw2d(ji,jj,14) + zdetnh4 * ze3t 
     328               zw2d(ji,jj,15) = zw2d(ji,jj,15) + ( zno3phy + znh4phy - zphynh4 - zphydom - zphyzoo - zphydet ) * ze3t 
     329               zw2d(ji,jj,16) = zw2d(ji,jj,16) + ( zphyzoo + zdetzoo - zzoodet - zzoobod - zzoonh4 - zzoodom ) * ze3t 
     330               zw2d(ji,jj,17) = zw2d(ji,jj,17) + zdetdom * ze3t 
     331               !    
     332               zw3d(ji,jj,jk,1) = zno3phy * 86400._wp 
     333               zw3d(ji,jj,jk,2) = znh4phy * 86400._wp 
     334               zw3d(ji,jj,jk,3) = znh4no3 * 86400._wp 
    312335               ! 
    313                 IF( lk_iomput ) THEN                  ! convert fluxes in per day 
    314                   ze3t = e3t_n(ji,jj,jk) * 86400._wp 
    315                   zw2d(ji,jj,1)  = zw2d(ji,jj,1)  + zno3phy * ze3t 
    316                   zw2d(ji,jj,2)  = zw2d(ji,jj,2)  + znh4phy * ze3t 
    317                   zw2d(ji,jj,3)  = zw2d(ji,jj,3)  + zphydom * ze3t 
    318                   zw2d(ji,jj,4)  = zw2d(ji,jj,4)  + zphynh4 * ze3t 
    319                   zw2d(ji,jj,5)  = zw2d(ji,jj,5)  + zphyzoo * ze3t 
    320                   zw2d(ji,jj,6)  = zw2d(ji,jj,6)  + zphydet * ze3t 
    321                   zw2d(ji,jj,7)  = zw2d(ji,jj,7)  + zdetzoo * ze3t 
    322                   zw2d(ji,jj,8)  = zw2d(ji,jj,8)  + zzoodet * ze3t 
    323                   zw2d(ji,jj,9)  = zw2d(ji,jj,9)  + zzoobod * ze3t 
    324                   zw2d(ji,jj,10) = zw2d(ji,jj,10) + zzoonh4 * ze3t 
    325                   zw2d(ji,jj,11) = zw2d(ji,jj,11) + zzoodom * ze3t 
    326                   zw2d(ji,jj,12) = zw2d(ji,jj,12) + znh4no3 * ze3t 
    327                   zw2d(ji,jj,13) = zw2d(ji,jj,13) + zdomnh4 * ze3t 
    328                   zw2d(ji,jj,14) = zw2d(ji,jj,14) + zdetnh4 * ze3t 
    329                   zw2d(ji,jj,15) = zw2d(ji,jj,15) + ( zno3phy + znh4phy - zphynh4 - zphydom - zphyzoo - zphydet ) * ze3t 
    330                   zw2d(ji,jj,16) = zw2d(ji,jj,16) + ( zphyzoo + zdetzoo - zzoodet - zzoobod - zzoonh4 - zzoodom ) * ze3t 
    331                   zw2d(ji,jj,17) = zw2d(ji,jj,17) + zdetdom * ze3t 
    332                   !    
    333                   zw3d(ji,jj,jk,1) = zno3phy * 86400._wp 
    334                   zw3d(ji,jj,jk,2) = znh4phy * 86400._wp 
    335                   zw3d(ji,jj,jk,3) = znh4no3 * 86400._wp 
    336                   ! 
    337                ENDIF 
    338             END DO 
    339          END DO 
     336            ENDIF 
     337         END_2D 
    340338      END DO 
    341339      ! 
    342340      IF( lk_iomput ) THEN 
    343          CALL lbc_lnk( 'p2zbio', zw2d(:,:,:),'T', 1. ) 
    344          CALL lbc_lnk_multi( 'p2zbio', zw3d(:,:,:,1),'T', 1., zw3d(:,:,:,2),'T', 1., zw3d(:,:,:,3),'T', 1. ) 
     341         CALL lbc_lnk( 'p2zbio', zw2d(:,:,:),'T', 1.0_wp ) 
     342         CALL lbc_lnk_multi( 'p2zbio', zw3d(:,:,:,1),'T', 1.0_wp, zw3d(:,:,:,2),'T', 1.0_wp, zw3d(:,:,:,3),'T', 1.0_wp ) 
    345343         ! Save diagnostics 
    346344         CALL iom_put( "TNO3PHY", zw2d(:,:,1) ) 
     
    367365      ENDIF 
    368366 
    369       IF(ln_ctl)   THEN  ! print mean trends (used for debugging) 
     367      IF(sn_cfctl%l_prttrc)   THEN  ! print mean trends (used for debugging) 
    370368         WRITE(charout, FMT="('bio')") 
    371          CALL prt_ctl_trc_info(charout) 
    372          CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm) 
     369         CALL prt_ctl_info( charout, cdcomp = 'top' ) 
     370         CALL prt_ctl(tab4d_1=tr(:,:,:,:,Krhs), mask1=tmask, clinfo=ctrcnm) 
    373371      ENDIF 
    374372      ! 
     
    402400      IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~' 
    403401      ! 
    404       REWIND( numnatp_ref )              ! Namelist namlobphy in reference namelist : Lobster biological parameters 
    405402      READ  ( numnatp_ref, namlobphy, IOSTAT = ios, ERR = 901) 
    406 901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namlobphy in reference namelist', lwp ) 
    407       REWIND( numnatp_cfg )              ! Namelist namlobphy in configuration namelist : Lobster biological parameters 
     403901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namlobphy in reference namelist' ) 
    408404      READ  ( numnatp_cfg, namlobphy, IOSTAT = ios, ERR = 902 ) 
    409 902   IF( ios >  0 )   CALL ctl_nam ( ios , 'namlobphy in configuration namelist', lwp ) 
     405902   IF( ios >  0 )   CALL ctl_nam ( ios , 'namlobphy in configuration namelist' ) 
    410406      IF(lwm) WRITE ( numonp, namlobphy ) 
    411407      ! 
     
    419415      ENDIF 
    420416 
    421       REWIND( numnatp_ref )              ! Namelist namlobnut in reference namelist : Lobster nutriments parameters 
    422417      READ  ( numnatp_ref, namlobnut, IOSTAT = ios, ERR = 903) 
    423 903   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namlobnut in reference namelist', lwp ) 
    424       REWIND( numnatp_cfg )              ! Namelist namlobnut in configuration namelist : Lobster nutriments parameters 
     418903   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namlobnut in reference namelist' ) 
    425419      READ  ( numnatp_cfg, namlobnut, IOSTAT = ios, ERR = 904 ) 
    426 904   IF( ios >  0 )   CALL ctl_nam ( ios , 'namlobnut in configuration namelist', lwp ) 
     420904   IF( ios >  0 )   CALL ctl_nam ( ios , 'namlobnut in configuration namelist' ) 
    427421      IF(lwm) WRITE ( numonp, namlobnut ) 
    428422 
     
    436430      ENDIF 
    437431 
    438       REWIND( numnatp_ref )              ! Namelist namlobzoo in reference namelist : Lobster zooplankton parameters 
    439432      READ  ( numnatp_ref, namlobzoo, IOSTAT = ios, ERR = 905) 
    440 905   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namlobzoo in reference namelist', lwp ) 
    441       REWIND( numnatp_cfg )              ! Namelist namlobzoo in configuration namelist : Lobster zooplankton parameters 
     433905   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namlobzoo in reference namelist' ) 
    442434      READ  ( numnatp_cfg, namlobzoo, IOSTAT = ios, ERR = 906 ) 
    443 906   IF( ios >  0 )   CALL ctl_nam ( ios , 'namlobzoo in configuration namelist', lwp ) 
     435906   IF( ios >  0 )   CALL ctl_nam ( ios , 'namlobzoo in configuration namelist' ) 
    444436      IF(lwm) WRITE ( numonp, namlobzoo ) 
    445437 
     
    458450      ENDIF 
    459451 
    460       REWIND( numnatp_ref )              ! Namelist namlobdet in reference namelist : Lobster detritus parameters 
    461452      READ  ( numnatp_ref, namlobdet, IOSTAT = ios, ERR = 907) 
    462 907   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namlobdet in reference namelist', lwp ) 
    463       REWIND( numnatp_cfg )              ! Namelist namlobdet in configuration namelist : Lobster detritus parameters 
     453907   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namlobdet in reference namelist' ) 
    464454      READ  ( numnatp_cfg, namlobdet, IOSTAT = ios, ERR = 908 ) 
    465 908   IF( ios >  0 )   CALL ctl_nam ( ios , 'namlobdet in configuration namelist', lwp ) 
     455908   IF( ios >  0 )   CALL ctl_nam ( ios , 'namlobdet in configuration namelist' ) 
    466456      IF(lwm) WRITE ( numonp, namlobdet ) 
    467457 
     
    473463      ENDIF 
    474464 
    475       REWIND( numnatp_ref )              ! Namelist namlobdom in reference namelist : Lobster DOM breakdown rate 
    476465      READ  ( numnatp_ref, namlobdom, IOSTAT = ios, ERR = 909) 
    477 909   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namlobdom in reference namelist', lwp ) 
    478       REWIND( numnatp_cfg )              ! Namelist namlobdom in configuration namelist : Lobster DOM breakdown rate 
     466909   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namlobdom in reference namelist' ) 
    479467      READ  ( numnatp_cfg, namlobdom, IOSTAT = ios, ERR = 910 ) 
    480 910   IF( ios >  0 )   CALL ctl_nam ( ios , 'namlobdom in configuration namelist', lwp ) 
     468910   IF( ios >  0 )   CALL ctl_nam ( ios , 'namlobdom in configuration namelist' ) 
    481469      IF(lwm) WRITE ( numonp, namlobdom ) 
    482470 
Note: See TracChangeset for help on using the changeset viewer.