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 12377 for NEMO/trunk/src/TOP/PISCES/P2Z/p2zbio.F90 – NEMO

Ignore:
Timestamp:
2020-02-12T15:39:06+01:00 (4 years ago)
Author:
acc
Message:

The big one. Merging all 2019 developments from the option 1 branch back onto the trunk.

This changeset reproduces 2019/dev_r11943_MERGE_2019 on the trunk using a 2-URL merge
onto a working copy of the trunk. I.e.:

svn merge --ignore-ancestry \

svn+ssh://acc@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/NEMO/trunk \
svn+ssh://acc@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/NEMO/branches/2019/dev_r11943_MERGE_2019 ./

The --ignore-ancestry flag avoids problems that may otherwise arise from the fact that
the merge history been trunk and branch may have been applied in a different order but
care has been taken before this step to ensure that all applicable fixes and updates
are present in the merge branch.

The trunk state just before this step has been branched to releases/release-4.0-HEAD
and that branch has been immediately tagged as releases/release-4.0.2. Any fixes
or additions in response to tickets on 4.0, 4.0.1 or 4.0.2 should be done on
releases/release-4.0-HEAD. From now on future 'point' releases (e.g. 4.0.2) will
remain unchanged with periodic releases as needs demand. Note release-4.0-HEAD is a
transitional naming convention. Future full releases, say 4.2, will have a release-4.2
branch which fulfills this role and the first point release (e.g. 4.2.0) will be made
immediately following the release branch creation.

2020 developments can be started from any trunk revision later than this one.

Location:
NEMO/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk

    • 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_r11615_ENHANCE-04_namelists_as_internalfiles_agrif@HEAD      ext/AGRIF 
        66^/vendors/FCM@HEAD            ext/FCM 
        77^/vendors/IOIPSL@HEAD         ext/IOIPSL 
  • NEMO/trunk/src/TOP/PISCES/P2Z/p2zbio.F90

    r11536 r12377  
    5757 
    5858   !! * Substitutions 
    59 #  include "vectopt_loop_substitute.h90" 
     59#  include "do_loop_substitute.h90" 
    6060   !!---------------------------------------------------------------------- 
    6161   !! NEMO/TOP 4.0 , NEMO Consortium (2018) 
     
    6565CONTAINS 
    6666 
    67    SUBROUTINE p2z_bio( kt ) 
     67   SUBROUTINE p2z_bio( kt, Kmm, Krhs ) 
    6868      !!--------------------------------------------------------------------- 
    6969      !!                     ***  ROUTINE p2z_bio  *** 
     
    7878      !!              is added to the general trend. 
    7979      !!         
    80       !!                      tra = tra + zf...tra - zftra... 
     80      !!                      tr(Krhs) = tr(Krhs) + zf...tr(Krhs) - zftra... 
    8181      !!                                     |         | 
    8282      !!                                     |         | 
     
    8484      !!         
    8585      !!--------------------------------------------------------------------- 
    86       INTEGER, INTENT( in ) ::   kt      ! ocean time-step index       
     86      INTEGER, INTENT( in ) ::   kt             ! ocean time-step index       
     87      INTEGER, INTENT( in ) ::   Kmm, Krhs      ! time level indices 
    8788      ! 
    8889      INTEGER  ::   ji, jj, jk, jl 
     
    120121      DO jk = 1, jpkbm1                      !  Upper ocean (bio-layers)  ! 
    121122         !                                   ! -------------------------- ! 
    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 
     123         DO_2D_00_00 
     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, tr(ji,jj,jk,jpdet,Kmm) ) 
     129            zzoo = MAX( 0.e0, tr(ji,jj,jk,jpzoo,Kmm) ) 
     130            zphy = MAX( 0.e0, tr(ji,jj,jk,jpphy,Kmm) ) 
     131            zno3 = MAX( 0.e0, tr(ji,jj,jk,jpno3,Kmm) ) 
     132            znh4 = MAX( 0.e0, tr(ji,jj,jk,jpnh4,Kmm) ) 
     133            zdom = MAX( 0.e0, tr(ji,jj,jk,jpdom,Kmm) ) 
     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(ji,jj,jk,Kmm) 
     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            tr(ji,jj,jk,jpdet,Krhs) = tr(ji,jj,jk,jpdet,Krhs) + zdeta 
     205            tr(ji,jj,jk,jpzoo,Krhs) = tr(ji,jj,jk,jpzoo,Krhs) + zzooa 
     206            tr(ji,jj,jk,jpphy,Krhs) = tr(ji,jj,jk,jpphy,Krhs) + zphya 
     207            tr(ji,jj,jk,jpno3,Krhs) = tr(ji,jj,jk,jpno3,Krhs) + zno3a 
     208            tr(ji,jj,jk,jpnh4,Krhs) = tr(ji,jj,jk,jpnh4,Krhs) + znh4a 
     209            tr(ji,jj,jk,jpdom,Krhs) = tr(ji,jj,jk,jpdom,Krhs) + zdoma 
     210 
     211             IF( lk_iomput ) THEN 
     212               ! convert fluxes in per day 
     213               ze3t = e3t(ji,jj,jk,Kmm) * 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_2D 
    239238      END DO 
    240239 
     
    242241      DO jk = jpkb, jpkm1                    !  Upper ocean (bio-layers)  ! 
    243242         !                                   ! -------------------------- ! 
    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 
     243         DO_2D_00_00 
     244            ! remineralisation of all quantities towards nitrate  
     245 
     246            !    trophic variables( det, zoo, phy, no3, nh4, dom) 
     247            !       negative trophic variables DO not contribute to the fluxes 
     248            zdet = MAX( 0.e0, tr(ji,jj,jk,jpdet,Kmm) ) 
     249            zzoo = MAX( 0.e0, tr(ji,jj,jk,jpzoo,Kmm) ) 
     250            zphy = MAX( 0.e0, tr(ji,jj,jk,jpphy,Kmm) ) 
     251            zno3 = MAX( 0.e0, tr(ji,jj,jk,jpno3,Kmm) ) 
     252            znh4 = MAX( 0.e0, tr(ji,jj,jk,jpnh4,Kmm) ) 
     253            zdom = MAX( 0.e0, tr(ji,jj,jk,jpdom,Kmm) ) 
     254 
     255            !    Limitations 
     256            zlt   = 0.e0 
     257            zle   = 0.e0 
     258            zlno3 = 0.e0 
     259            zlnh4 = 0.e0 
     260 
     261            !    sinks and sources 
     262            !       phytoplankton production and exsudation 
     263            zno3phy = 0.e0 
     264            znh4phy = 0.e0 
     265            zphydom = 0.e0 
     266            zphynh4 = 0.e0 
     267 
     268            !    zooplankton production 
     269            zphyzoo = 0.e0      ! grazing 
     270            zdetzoo = 0.e0 
     271 
     272            zzoodet = 0.e0      ! fecal pellets production 
     273 
     274            zzoonh4 = tauzn * fzoolab * zzoo         ! zooplankton liquide excretion 
     275            zzoodom = tauzn * (1 - fzoolab) * zzoo 
     276 
     277            !    mortality 
     278            zphydet = tmminp * zphy      ! phytoplankton mortality 
     279 
     280            zzoobod = 0.e0               ! zooplankton mortality 
     281            zboddet = 0.e0               ! closure : flux fbod is redistributed below level jpkbio 
     282 
     283            !    detritus and dom breakdown 
     284            zdetnh4 = taudn * fdetlab * zdet 
     285            zdetdom = taudn * (1 - fdetlab) * zdet 
     286 
     287            zdomnh4 = taudomn * zdom 
     288            zdomaju = (1 - redf/reddom) * (zphydom + zzoodom + zdetdom) 
     289 
     290            !    Nitrification 
     291            znh4no3 = taunn * znh4 
     292 
     293 
     294            ! determination of trends 
     295            !     total trend for each biological tracer 
     296            zphya =   zno3phy + znh4phy - zphynh4 - zphydom - zphyzoo - zphydet 
     297            zzooa =   zphyzoo + zdetzoo - zzoodet - zzoodom - zzoonh4 - zzoobod 
     298            zno3a = - zno3phy + znh4no3  
     299            znh4a = - znh4phy - znh4no3 + zphynh4 + zzoonh4 + zdomnh4 + zdetnh4 + zdomaju 
     300            zdeta = zphydet + zzoodet  - zdetzoo - zdetnh4 - zdetdom + zboddet 
     301            zdoma = zphydom + zzoodom + zdetdom - zdomnh4 - zdomaju 
     302 
     303            ! tracer flux at totox-point added to the general trend 
     304            tr(ji,jj,jk,jpdet,Krhs) = tr(ji,jj,jk,jpdet,Krhs) + zdeta 
     305            tr(ji,jj,jk,jpzoo,Krhs) = tr(ji,jj,jk,jpzoo,Krhs) + zzooa 
     306            tr(ji,jj,jk,jpphy,Krhs) = tr(ji,jj,jk,jpphy,Krhs) + zphya 
     307            tr(ji,jj,jk,jpno3,Krhs) = tr(ji,jj,jk,jpno3,Krhs) + zno3a 
     308            tr(ji,jj,jk,jpnh4,Krhs) = tr(ji,jj,jk,jpnh4,Krhs) + znh4a 
     309            tr(ji,jj,jk,jpdom,Krhs) = tr(ji,jj,jk,jpdom,Krhs) + zdoma 
     310            ! 
     311             IF( lk_iomput ) THEN                  ! convert fluxes in per day 
     312               ze3t = e3t(ji,jj,jk,Kmm) * 86400._wp 
     313               zw2d(ji,jj,1)  = zw2d(ji,jj,1)  + zno3phy * ze3t 
     314               zw2d(ji,jj,2)  = zw2d(ji,jj,2)  + znh4phy * ze3t 
     315               zw2d(ji,jj,3)  = zw2d(ji,jj,3)  + zphydom * ze3t 
     316               zw2d(ji,jj,4)  = zw2d(ji,jj,4)  + zphynh4 * ze3t 
     317               zw2d(ji,jj,5)  = zw2d(ji,jj,5)  + zphyzoo * ze3t 
     318               zw2d(ji,jj,6)  = zw2d(ji,jj,6)  + zphydet * ze3t 
     319               zw2d(ji,jj,7)  = zw2d(ji,jj,7)  + zdetzoo * ze3t 
     320               zw2d(ji,jj,8)  = zw2d(ji,jj,8)  + zzoodet * ze3t 
     321               zw2d(ji,jj,9)  = zw2d(ji,jj,9)  + zzoobod * ze3t 
     322               zw2d(ji,jj,10) = zw2d(ji,jj,10) + zzoonh4 * ze3t 
     323               zw2d(ji,jj,11) = zw2d(ji,jj,11) + zzoodom * ze3t 
     324               zw2d(ji,jj,12) = zw2d(ji,jj,12) + znh4no3 * ze3t 
     325               zw2d(ji,jj,13) = zw2d(ji,jj,13) + zdomnh4 * ze3t 
     326               zw2d(ji,jj,14) = zw2d(ji,jj,14) + zdetnh4 * ze3t 
     327               zw2d(ji,jj,15) = zw2d(ji,jj,15) + ( zno3phy + znh4phy - zphynh4 - zphydom - zphyzoo - zphydet ) * ze3t 
     328               zw2d(ji,jj,16) = zw2d(ji,jj,16) + ( zphyzoo + zdetzoo - zzoodet - zzoobod - zzoonh4 - zzoodom ) * ze3t 
     329               zw2d(ji,jj,17) = zw2d(ji,jj,17) + zdetdom * ze3t 
     330               !    
     331               zw3d(ji,jj,jk,1) = zno3phy * 86400._wp 
     332               zw3d(ji,jj,jk,2) = znh4phy * 86400._wp 
     333               zw3d(ji,jj,jk,3) = znh4no3 * 86400._wp 
    312334               ! 
    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 
     335            ENDIF 
     336         END_2D 
    340337      END DO 
    341338      ! 
     
    367364      ENDIF 
    368365 
    369       IF(ln_ctl)   THEN  ! print mean trends (used for debugging) 
     366      IF(sn_cfctl%l_prttrc)   THEN  ! print mean trends (used for debugging) 
    370367         WRITE(charout, FMT="('bio')") 
    371368         CALL prt_ctl_trc_info(charout) 
    372          CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm) 
     369         CALL prt_ctl_trc(tab4d=tr(:,:,:,:,Krhs), mask=tmask, clinfo=ctrcnm) 
    373370      ENDIF 
    374371      ! 
     
    402399      IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~' 
    403400      ! 
    404       REWIND( numnatp_ref )              ! Namelist namlobphy in reference namelist : Lobster biological parameters 
    405401      READ  ( numnatp_ref, namlobphy, IOSTAT = ios, ERR = 901) 
    406402901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namlobphy in reference namelist' ) 
    407       REWIND( numnatp_cfg )              ! Namelist namlobphy in configuration namelist : Lobster biological parameters 
    408403      READ  ( numnatp_cfg, namlobphy, IOSTAT = ios, ERR = 902 ) 
    409404902   IF( ios >  0 )   CALL ctl_nam ( ios , 'namlobphy in configuration namelist' ) 
     
    419414      ENDIF 
    420415 
    421       REWIND( numnatp_ref )              ! Namelist namlobnut in reference namelist : Lobster nutriments parameters 
    422416      READ  ( numnatp_ref, namlobnut, IOSTAT = ios, ERR = 903) 
    423417903   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namlobnut in reference namelist' ) 
    424       REWIND( numnatp_cfg )              ! Namelist namlobnut in configuration namelist : Lobster nutriments parameters 
    425418      READ  ( numnatp_cfg, namlobnut, IOSTAT = ios, ERR = 904 ) 
    426419904   IF( ios >  0 )   CALL ctl_nam ( ios , 'namlobnut in configuration namelist' ) 
     
    436429      ENDIF 
    437430 
    438       REWIND( numnatp_ref )              ! Namelist namlobzoo in reference namelist : Lobster zooplankton parameters 
    439431      READ  ( numnatp_ref, namlobzoo, IOSTAT = ios, ERR = 905) 
    440432905   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namlobzoo in reference namelist' ) 
    441       REWIND( numnatp_cfg )              ! Namelist namlobzoo in configuration namelist : Lobster zooplankton parameters 
    442433      READ  ( numnatp_cfg, namlobzoo, IOSTAT = ios, ERR = 906 ) 
    443434906   IF( ios >  0 )   CALL ctl_nam ( ios , 'namlobzoo in configuration namelist' ) 
     
    458449      ENDIF 
    459450 
    460       REWIND( numnatp_ref )              ! Namelist namlobdet in reference namelist : Lobster detritus parameters 
    461451      READ  ( numnatp_ref, namlobdet, IOSTAT = ios, ERR = 907) 
    462452907   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namlobdet in reference namelist' ) 
    463       REWIND( numnatp_cfg )              ! Namelist namlobdet in configuration namelist : Lobster detritus parameters 
    464453      READ  ( numnatp_cfg, namlobdet, IOSTAT = ios, ERR = 908 ) 
    465454908   IF( ios >  0 )   CALL ctl_nam ( ios , 'namlobdet in configuration namelist' ) 
     
    473462      ENDIF 
    474463 
    475       REWIND( numnatp_ref )              ! Namelist namlobdom in reference namelist : Lobster DOM breakdown rate 
    476464      READ  ( numnatp_ref, namlobdom, IOSTAT = ios, ERR = 909) 
    477465909   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namlobdom in reference namelist' ) 
    478       REWIND( numnatp_cfg )              ! Namelist namlobdom in configuration namelist : Lobster DOM breakdown rate 
    479466      READ  ( numnatp_cfg, namlobdom, IOSTAT = ios, ERR = 910 ) 
    480467910   IF( ios >  0 )   CALL ctl_nam ( ios , 'namlobdom in configuration namelist' ) 
Note: See TracChangeset for help on using the changeset viewer.