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 339 for trunk/NEMO/TOP_SRC/SMS/p4zmicro.F – NEMO

Ignore:
Timestamp:
2005-11-14T13:30:28+01:00 (18 years ago)
Author:
opalod
Message:

nemo_v1_update_027 : CE + RB + CT : update of SMS routines

File:
1 edited

Legend:

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

    r274 r339  
    1 CCC$Header$ 
    2 CCC  TOP 1.0 , LOCEAN-IPSL (2005) 
    3 C This software is governed by CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 
    4 C --------------------------------------------------------------------------- 
    51CDIR$ LIST 
    62      SUBROUTINE p4zmicro 
     
    4743      INTEGER ji, jj, jk 
    4844      REAL compadi,compadi2,compaz,compaph,compapoc 
    49       REAL graze,zdenom 
    50       REAL zinano,zidiat,zipoc 
    51  
     45      REAL graze,zdenom,zdenom2 
     46      REAL zfact,zstep,zinano,zidiat,zipoc 
     47C 
     48C    Time step duration for biology 
     49C    ------------------------------ 
     50C 
     51        zstep=rfact2/rjjss 
    5252C 
    5353 
     
    5757C 
    5858        compaz = max((trn(ji,jj,jk,jpzoo)-1.E-9),0.) 
     59        zfact=zstep*tgfunc(ji,jj,jk)*compaz 
     60#    if defined key_off_degrad 
     61     &    *facvol(ji,jj,jk) 
     62#    endif 
    5963C 
    6064C     Respiration rates of both zooplankton 
    6165C     ------------------------------------- 
    6266C 
    63         respz(ji,jj,jk) = resrat*rfact2/rjjss 
     67        respz(ji,jj,jk) = resrat*zfact 
     68     &    *(1.+3.*nitrfac(ji,jj,jk)) 
    6469     &    *trn(ji,jj,jk,jpzoo)/(xkmort+trn(ji,jj,jk,jpzoo)) 
    65      &    *compaz*tmask(ji,jj,jk) 
    66 #    if defined key_off_degrad 
    67      &    *facvol(ji,jj,jk) 
    68 #    endif 
    6970C 
    7071C     Zooplankton mortality. A square function has been selected with 
     
    7374C     --------------------------------------------------------------- 
    7475C 
    75           tortz(ji,jj,jk) = mzrat*rfact2*1E6/rjjss*tgfunc(ji,jj,jk) 
    76      &      *compaz*trn(ji,jj,jk,jpzoo)*tmask(ji,jj,jk) 
    77 #    if defined key_off_degrad 
    78      &      *facvol(ji,jj,jk) 
    79 #    endif 
     76          tortz(ji,jj,jk) = mzrat*1E6*zfact*trn(ji,jj,jk,jpzoo) 
     77C 
    8078            END DO 
    8179          END DO 
     
    8785C 
    8886        compadi = max((trn(ji,jj,jk,jpdia)-1E-8),0.) 
    89         compadi2=min(compadi,2.E-6) 
    90         compaph = max((trn(ji,jj,jk,jpphy)-1E-8),0.) 
    91         compapoc=max((trn(ji,jj,jk,jppoc)-1E-9),0.) 
     87        compadi2=min(compadi,5.E-7) 
     88        compaph = max((trn(ji,jj,jk,jpphy)-2E-7),0.) 
     89        compapoc=max((trn(ji,jj,jk,jppoc)-1E-8),0.) 
    9290C 
    9391C     Microzooplankton grazing 
    9492C     ------------------------ 
    9593C 
    96           graze = grazrat*rfact2/rjjss*tmask(ji,jj,jk) 
    97      &      *tgfunc(ji,jj,jk) 
     94          zdenom2 = 1./(zprefp*compaph 
     95     &      +zprefc*compapoc+zprefd*compadi2+rtrn) 
     96 
     97          graze = grazrat*zstep*tgfunc(ji,jj,jk) 
     98     &      *trn(ji,jj,jk,jpzoo) 
    9899#    if defined key_off_degrad 
    99100     &      *facvol(ji,jj,jk) 
    100101#    endif 
    101           zdenom = 1./(xkgraz+zprefp*compaph 
    102      &      +zprefc*trn(ji,jj,jk,jppoc)+zprefd*compadi2) 
    103102 
    104           zinano=zprefp*trn(ji,jj,jk,jpphy)/ 
    105      &      (zprefp*trn(ji,jj,jk,jpphy) 
    106      &      +zprefc*trn(ji,jj,jk,jppoc) 
    107      &      +zprefd*trn(ji,jj,jk,jpdia)+rtrn) 
     103          zinano=zprefp*compaph*zdenom2 
     104          zipoc=zprefc*compapoc*zdenom2 
     105          zidiat=zprefd*compadi2*zdenom2 
    108106 
    109           zipoc=zprefc*trn(ji,jj,jk,jppoc)/ 
    110      &      (zprefp*trn(ji,jj,jk,jpphy) 
    111      &      +zprefc*trn(ji,jj,jk,jppoc) 
    112      &      +zprefd*trn(ji,jj,jk,jpdia)+rtrn) 
    113  
    114           zidiat=zprefd*trn(ji,jj,jk,jpdia)/ 
    115      &      (zprefp*trn(ji,jj,jk,jpphy) 
    116      &      +zprefc*trn(ji,jj,jk,jppoc) 
    117      &      +zprefd*trn(ji,jj,jk,jpdia)+rtrn) 
     107          zdenom = 1./(xkgraz+zinano*compaph 
     108     &      +zipoc*compapoc+zidiat*compadi2) 
    118109 
    119110          grazp(ji,jj,jk) = graze*zinano*compaph*zdenom 
    120      &      *trn(ji,jj,jk,jpzoo) 
     111          grazm(ji,jj,jk) = graze*zipoc*compapoc*zdenom 
     112          grazsd(ji,jj,jk) = graze*zidiat*compadi2*zdenom 
    121113 
    122114          grazpf(ji,jj,jk) = grazp(ji,jj,jk)* 
     
    126118     &      trn(ji,jj,jk,jpnch)/(trn(ji,jj,jk,jpphy)+rtrn) 
    127119 
    128           grazm(ji,jj,jk) = graze*zipoc*compapoc 
    129      &      *zdenom*trn(ji,jj,jk,jpzoo) 
    130  
    131120          grazmf(ji,jj,jk) = grazm(ji,jj,jk) 
    132121     &      *trn(ji,jj,jk,jpsfe)/(trn(ji,jj,jk,jppoc)+rtrn) 
    133  
    134           grazsd(ji,jj,jk) = graze*zidiat*compadi2*zdenom 
    135      &      *trn(ji,jj,jk,jpzoo) 
    136122 
    137123          grazsf(ji,jj,jk) = grazsd(ji,jj,jk) 
Note: See TracChangeset for help on using the changeset viewer.