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 – NEMO

Changeset 339


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

Location:
trunk/NEMO/TOP_SRC/SMS
Files:
20 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/TOP_SRC/SMS/p4zbio.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 --------------------------------------------------------------------------- 
    51      SUBROUTINE p4zbio 
    62CDIR$ LIST 
     
    3228      USE trp_trc 
    3329      USE sms 
    34       USE lib_mpp 
    35       USE lbclnk 
    3630      IMPLICIT NONE 
     31#include "domzgr_substitute.h90" 
    3732CDIR$ LIST 
    3833CC----------------------------------------------------------------- 
     
    4035CC ================== 
    4136C      
    42       INTEGER ji, jj, jk 
    43  
    44       REAL xcond,zdenom,zdenom1(jpi,jpj,jpk),zdenom2(jpi,jpj,jpk) 
    45       REAL zneg, prodca 
    46 C      
    47       REAL irondep(jpi,jpj,jpk),sidep(jpi,jpj,jpk),prodt 
    48       INTEGER jn 
    49 C 
    50 CC---------------------------------------------------------------------- 
    51 CC statement functions 
    52 CC =================== 
    53 CDIR$ NOLIST 
    54 #include "domzgr_substitute.h90" 
    55 CDIR$ LIST 
    56 C      
    57 C     SET HALF PRECISION CONSTANTS 
    58 C----------------------------- 
    59 C      
    60 C     Initialisation of variables used to compute deposition 
    61 C     ------------------------------------------------------ 
    62 C      
    63       irondep     = 0. 
    64       sidep       = 0. 
    65 C 
    66 C 
    67 C     Iron and Si deposition at the surface 
    68 C     ------------------------------------- 
    69 C 
    70        do jj=1,jpj 
    71          do ji=1,jpi 
    72          irondep(ji,jj,1)=(0.01*dust(ji,jj)/(55.85*rmoss) 
    73      &      +3E-10/raass)*rfact2/fse3t(ji,jj,1) 
    74          sidep(ji,jj,1)=8.8*0.075*dust(ji,jj)*rfact2/ 
    75      &      (fse3t(ji,jj,1)*28.01*rmoss) 
    76          end do 
    77        end do 
     37      INTEGER ji, jj, jk, jn 
     38 
     39      REAL zdenom,zdenom1(jpi,jpj,jpk),zdenom2(jpi,jpj,jpk) 
     40      REAL prodca,ztemp 
     41C      
     42      REAL prodt 
     43      REAL zfracal(jpi,jpj,jpk) 
    7844C 
    7945C     ASSIGN THE SHEAR RATE THAT IS USED FOR AGGREGATION 
     
    8248      zdiss=0.01 
    8349C 
    84        DO jk=1,jpkm1 
     50      DO jk=1,jpkm1 
    8551        DO jj=1,jpj 
    8652          DO ji=1,jpi 
     
    8854          END DO  
    8955        END DO 
    90        END DO 
     56      END DO 
    9157C 
    9258C      Compute de different ratios for scavenging of iron 
     
    10470         END DO 
    10571       END DO 
    106  
     72C 
     73C     Compute the fraction of nanophytoplankton that is made 
     74C     of calcifiers 
     75C     ------------------------------------------------------ 
     76C 
     77       DO jk=1,jpkm1 
     78         DO jj=1,jpj 
     79           DO ji=1,jpi 
     80       ztemp=max(0.,tn(ji,jj,jk)) 
     81       zfracal(ji,jj,jk)=caco3r*xlimphy(ji,jj,jk)*max(0.0001 
     82     &   ,ztemp/(2.+ztemp))*max(1.,trn(ji,jj,jk,jpphy)*1E6/2.) 
     83       zfracal(ji,jj,jk)=min(0.8,zfracal(ji,jj,jk)) 
     84       zfracal(ji,jj,jk)=max(0.01,zfracal(ji,jj,jk)) 
     85           END DO 
     86         END DO 
     87       END DO 
    10788 
    10889C 
     
    11192C 
    11293      CALL p4zopt 
    113  
    114  
     94C 
     95C  Call routine to compute the co-limitations by the various 
     96C  nutrients 
     97C  --------------------------------------------------------- 
     98C 
     99      CALL p4zlim 
    115100C 
    116101C  Call production routine to compute phytoplankton growth rate 
     
    119104C  ------------------------------------------------------------ 
    120105C 
    121  
    122106      CALL p4zprod 
    123  
    124  
    125107C 
    126108C  Call phytoplankton mortality routines. Mortality losses for  
     
    129111C 
    130112      CALL p4znano 
    131  
    132113      CALL p4zdiat 
    133  
    134114C 
    135115C  Call zooplankton sources/sinks routines.  
     
    138118C 
    139119      CALL p4zmicro 
    140  
    141120      CALL p4zmeso 
    142  
    143121C 
    144122C     Call subroutine for computation of the vertical flux  
    145123C     of particulate organic matter 
    146124C     ---------------------------------------------------- 
     125C 
    147126      CALL p4zsink 
    148  
    149127C 
    150128C     Call subroutine for computation of remineralization 
     
    152130C     ---------------------------------------------------- 
    153131      CALL p4zrem 
    154  
    155 C 
    156 C     Vertical loop to pre-compute concentration changes of the rapid 
    157 C     varying tracers for preventing them to fall below 0 
    158 C     --------------------------------------------------------------- 
    159 C 
    160       DO jk = 1,jpkm1 
    161         DO jj = 1,jpj 
    162           DO ji = 1,jpi 
    163 C      
    164 C     Evolution of PO4 
    165 C     ---------------- 
    166 C      
    167          zneg = trn(ji,jj,jk,jppo4) 
    168      &     -prorca(ji,jj,jk)-prorca2(ji,jj,jk)+denitr(ji,jj,jk) 
    169      &     +grarem(ji,jj,jk)*sigma1+grarem2(ji,jj,jk)*sigma2 
    170      &     +olimi(ji,jj,jk)+po4dep(ji,jj,jk)*rfact2 
    171 C      
    172 C     Nullity test for PO4 
    173 C     -------------------- 
    174 C      
    175          xcond=(0.5+sign(0.5,zneg))  
    176          prorca(ji,jj,jk)=prorca(ji,jj,jk)*xcond 
    177          prorca2(ji,jj,jk)=prorca2(ji,jj,jk)*xcond 
    178          proreg(ji,jj,jk)=proreg(ji,jj,jk)*xcond 
    179          proreg2(ji,jj,jk)=proreg2(ji,jj,jk)*xcond 
    180          pronew(ji,jj,jk)=pronew(ji,jj,jk)*xcond 
    181          pronew2(ji,jj,jk)=pronew2(ji,jj,jk)*xcond 
    182 C 
    183 C     Evolution of NO3 
    184 C     ---------------- 
    185 C 
    186          zneg = trn(ji,jj,jk,jpno3) 
    187      &     -pronew(ji,jj,jk)-pronew2(ji,jj,jk) 
    188      &     +po4dep(ji,jj,jk)*rfact2+onitr(ji,jj,jk) 
    189      &     -denitr(ji,jj,jk)*rdenit+nitdep(ji,jj,jk)*rfact2 
    190 C 
    191 C     Nullity test for NO3 
    192 C     -------------------- 
    193 C 
    194          xcond=(0.5+sign(0.5,zneg)) 
    195          prorca(ji,jj,jk)=prorca(ji,jj,jk)*xcond 
    196          prorca2(ji,jj,jk)=prorca2(ji,jj,jk)*xcond 
    197          proreg(ji,jj,jk)=proreg(ji,jj,jk)*xcond 
    198          proreg2(ji,jj,jk)=proreg2(ji,jj,jk)*xcond 
    199          pronew(ji,jj,jk)=pronew(ji,jj,jk)*xcond 
    200          pronew2(ji,jj,jk)=pronew2(ji,jj,jk)*xcond 
    201          denitr(ji,jj,jk)=denitr(ji,jj,jk)*xcond 
    202 C 
    203 C     Evolution of NH4 
    204 C     ---------------- 
    205 C 
    206          zneg = trn(ji,jj,jk,jpnh4) 
    207      &     -proreg(ji,jj,jk)-proreg2(ji,jj,jk)-onitr(ji,jj,jk) 
    208      &     +grarem(ji,jj,jk)*sigma1+grarem2(ji,jj,jk)*sigma2 
    209      &     +olimi(ji,jj,jk)+denitr(ji,jj,jk) 
    210 C 
    211 C     Nullity test for NH4 
    212 C     -------------------- 
    213 C 
    214          xcond=(0.5+sign(0.5,zneg)) 
    215          prorca(ji,jj,jk)=prorca(ji,jj,jk)*xcond 
    216          prorca2(ji,jj,jk)=prorca2(ji,jj,jk)*xcond 
    217          proreg(ji,jj,jk)=proreg(ji,jj,jk)*xcond 
    218          proreg2(ji,jj,jk)=proreg2(ji,jj,jk)*xcond 
    219          pronew(ji,jj,jk)=pronew(ji,jj,jk)*xcond 
    220          pronew2(ji,jj,jk)=pronew2(ji,jj,jk)*xcond 
    221          onitr(ji,jj,jk)=onitr(ji,jj,jk)*xcond 
    222 C 
    223 C     Evolution of IRON 
    224 C     ----------------- 
    225 C 
    226           zneg = trn(ji,jj,jk,jpfer) 
    227      &      +(excret-1.)*prorca5(ji,jj,jk)-xaggdfe(ji,jj,jk) 
    228      &      +(excret2-1.)*prorca4(ji,jj,jk)-xbactfer(ji,jj,jk) 
    229      &      +grafer(ji,jj,jk)+grafer2(ji,jj,jk) 
    230      &      +ofer(ji,jj,jk)-xscave(ji,jj,jk)+irondep(ji,jj,jk) 
    231      &      +(ironsed(ji,jj,jk)+po4dep(ji,jj,jk)*9.E-5)*rfact2 
    232 C 
    233 C     Nullity test for iron 
    234 C     --------------------- 
    235 C 
    236          xcond=(0.5+sign(0.5,zneg)) 
    237          prorca4(ji,jj,jk)=prorca4(ji,jj,jk)*xcond 
    238          prorca5(ji,jj,jk)=prorca5(ji,jj,jk)*xcond 
    239 C 
    240 C     Evolution of O2 
    241 C     --------------- 
    242 C 
    243          xcond=(0.5+sign(0.5,(trn(ji,jj,jk,jpoxy)-oxymin))) 
    244          zneg = trn(ji,jj,jk,jpoxy) 
    245      &     +o2ut*(proreg(ji,jj,jk)+proreg2(ji,jj,jk)) 
    246      &     +(o2ut+o2nit)*(pronew(ji,jj,jk)+pronew2(ji,jj,jk)) 
    247      &     -o2ut*olimi(ji,jj,jk)-o2ut*xcond*(grarem(ji,jj,jk) 
    248      &     *sigma1+grarem2(ji,jj,jk)*sigma2)-o2nit*onitr(ji,jj,jk) 
    249 C 
    250 C     Nullity test for oxygen 
    251 C     ----------------------- 
    252 C 
    253          xcond=(0.5+sign(0.5,zneg)) 
    254          olimi(ji,jj,jk)=olimi(ji,jj,jk)*xcond 
    255          onitr(ji,jj,jk)=onitr(ji,jj,jk)*xcond 
    256 C 
    257           END DO 
    258         END DO 
    259       END DO 
    260  
    261       DO jk = 1,jpkm1 
    262         DO jj = 1,jpj 
    263           DO ji = 1,jpi 
    264 C     
    265 C     Evolution of nanophytoplankton 
    266 C     ------------------------------ 
    267 C      
    268          zneg = trn(ji,jj,jk,jpphy) 
    269      &     +prorca(ji,jj,jk)*(1.-excret)-tortp(ji,jj,jk) 
    270      &     -grazp(ji,jj,jk)-grazn(ji,jj,jk)-respp(ji,jj,jk) 
    271 C      
    272 C     Nullity test for Phyto 
    273 C     ---------------------- 
    274 C      
    275          xcond=(0.5+sign(0.5,zneg)) 
    276          tortp(ji,jj,jk)=tortp(ji,jj,jk)*xcond 
    277          grazp(ji,jj,jk)=grazp(ji,jj,jk)*xcond 
    278          grazn(ji,jj,jk)=grazn(ji,jj,jk)*xcond 
    279          respp(ji,jj,jk)=respp(ji,jj,jk)*xcond 
    280 C 
    281 C     Evolution of nanophytoplankton chlorophyll 
    282 C     ------------------------------ 
    283 C 
    284          zneg = trn(ji,jj,jk,jpnch) 
    285      &     +prorca6(ji,jj,jk)*(1.-excret)-tortnch(ji,jj,jk) 
    286      &     -grazpch(ji,jj,jk)-graznch(ji,jj,jk) 
    287      &     -respnch(ji,jj,jk) 
    288 C 
    289 C     Nullity test for Phyto 
    290 C     ---------------------- 
    291 C 
    292          xcond=(0.5+sign(0.5,zneg)) 
    293          tortnch(ji,jj,jk)=tortnch(ji,jj,jk)*xcond 
    294          graznch(ji,jj,jk)=graznch(ji,jj,jk)*xcond 
    295          grazpch(ji,jj,jk)=grazpch(ji,jj,jk)*xcond 
    296          respnch(ji,jj,jk)=respnch(ji,jj,jk)*xcond 
    297 C 
    298 C     Evolution of biogenic Iron in Nanophytoplankton 
    299 C     ----------------------------------------------- 
    300 C 
    301          zneg = trn(ji,jj,jk,jpnfe) 
    302      &     +prorca5(ji,jj,jk)*(1.-excret)-tortnf(ji,jj,jk) 
    303      &     -respnf(ji,jj,jk)-grazpf(ji,jj,jk)-graznf(ji,jj,jk) 
    304 C 
    305 C     Nullity test for Biogenic Iron in Nanophytoplankton 
    306 C     --------------------------------------------------- 
    307 C 
    308           xcond=(0.5+sign(0.5,zneg)) 
    309           tortnf(ji,jj,jk)=tortnf(ji,jj,jk)*xcond 
    310           respnf(ji,jj,jk)=respnf(ji,jj,jk)*xcond 
    311           grazpf(ji,jj,jk)=grazpf(ji,jj,jk)*xcond 
    312           graznf(ji,jj,jk)=graznf(ji,jj,jk)*xcond 
    313 C     
    314 C     Evolution of Diatoms 
    315 C     ------------------ 
    316 C 
    317          zneg = trn(ji,jj,jk,jpdia) 
    318      &     +prorca2(ji,jj,jk)*(1.-excret2)-tortp2(ji,jj,jk) 
    319      &     -respp2(ji,jj,jk)-grazd(ji,jj,jk)-grazsd(ji,jj,jk) 
    320 C     
    321 C     Nullity test for diatoms 
    322 C     ---------------------- 
    323 C 
    324          xcond=(0.5+sign(0.5,zneg)) 
    325          tortp2(ji,jj,jk)=tortp2(ji,jj,jk)*xcond 
    326          respp2(ji,jj,jk)=respp2(ji,jj,jk)*xcond 
    327          grazd(ji,jj,jk)=grazd(ji,jj,jk)*xcond 
    328          grazsd(ji,jj,jk)=grazsd(ji,jj,jk)*xcond 
    329 C    
    330 C     Evolution of Diatoms Chlorophyll 
    331 C     ------------------ 
    332 C 
    333          zneg = trn(ji,jj,jk,jpdch) 
    334      &     +prorca7(ji,jj,jk)*(1.-excret2)-tortdch(ji,jj,jk) 
    335      &     -respdch(ji,jj,jk)-grazdch(ji,jj,jk)-grazsch(ji,jj,jk) 
    336 C    
    337 C     Nullity test for diatoms 
    338 C     ---------------------- 
    339 C 
    340          xcond=(0.5+sign(0.5,zneg)) 
    341          tortdch(ji,jj,jk)=tortdch(ji,jj,jk)*xcond 
    342          respdch(ji,jj,jk)=respdch(ji,jj,jk)*xcond 
    343          grazdch(ji,jj,jk)=grazdch(ji,jj,jk)*xcond 
    344          grazsch(ji,jj,jk)=grazsch(ji,jj,jk)*xcond 
    345 C 
    346 C     Evolution of biogenic Iron in diatoms 
    347 C     ------------------------------------- 
    348 C 
    349           zneg = trn(ji,jj,jk,jpdfe) 
    350      &     +prorca4(ji,jj,jk)*(1.-excret2)-grazsf(ji,jj,jk) 
    351      &     -tortdf(ji,jj,jk)-respdf(ji,jj,jk)-grazf(ji,jj,jk) 
    352 C 
    353 C     Nullity test for Biogenic Iron in diatoms 
    354 C     ----------------------------------------- 
    355 C 
    356           xcond=(0.5+sign(0.5,zneg)) 
    357           tortdf(ji,jj,jk)=tortdf(ji,jj,jk)*xcond 
    358           respdf(ji,jj,jk)=respdf(ji,jj,jk)*xcond 
    359           grazf(ji,jj,jk)=grazf(ji,jj,jk)*xcond 
    360           grazsf(ji,jj,jk)=grazsf(ji,jj,jk)*xcond 
    361 C 
    362 C     Evolution of biogenic Silica in diatoms 
    363 C     --------------------------------------- 
    364 C 
    365          zneg = trn(ji,jj,jk,jpbsi) 
    366      &     +prorca3(ji,jj,jk)*(1.-excret2)-tortds(ji,jj,jk) 
    367      &     -respds(ji,jj,jk)-grazs(ji,jj,jk)-grazss(ji,jj,jk) 
    368 C 
    369 C     Nullity test for Biogenic Silica in Diatoms 
    370 C     ------------------------------------------- 
    371 C 
    372           xcond=(0.5+sign(0.5,zneg)) 
    373           tortds(ji,jj,jk)=tortds(ji,jj,jk)*xcond 
    374           respds(ji,jj,jk)=respds(ji,jj,jk)*xcond 
    375           grazs(ji,jj,jk)=grazs(ji,jj,jk)*xcond 
    376           grazss(ji,jj,jk)=grazss(ji,jj,jk)*xcond 
    377           END DO 
    378         END DO 
    379       END DO 
    380  
    381       DO jk = 1,jpkm1 
    382         DO jj = 1,jpj 
    383           DO ji = 1,jpi 
    384 C     
    385 C     Evolution of Zooplankton 
    386 C     ------------------------ 
    387 C     
    388          zneg = trn(ji,jj,jk,jpzoo)+epsher* 
    389      &     (grazp(ji,jj,jk)+grazm(ji,jj,jk)+grazsd(ji,jj,jk)) 
    390      &     -grazz(ji,jj,jk)-tortz(ji,jj,jk)-respz(ji,jj,jk) 
    391 C     
    392 C     Nullity test for Zooplankton 
    393 C     ---------------------------- 
    394 C     
    395          xcond=(0.5+sign(0.5,zneg)) 
    396          tortz(ji,jj,jk)=tortz(ji,jj,jk)*xcond 
    397          respz(ji,jj,jk)=respz(ji,jj,jk)*xcond 
    398          grazz(ji,jj,jk)=grazz(ji,jj,jk)*xcond 
    399 C 
    400 C     Evolution of Mesozooplankton 
    401 C     ------------------------ 
    402 C 
    403          zneg = trn(ji,jj,jk,jpmes) 
    404      &     +epsher2*(grazd(ji,jj,jk)+grazn(ji,jj,jk)+grazz(ji,jj,jk) 
    405      &     +grazpoc(ji,jj,jk)+grazffe(ji,jj,jk))-tortz2(ji,jj,jk) 
    406      &     -respz2(ji,jj,jk) 
    407 C 
    408 C     Nullity test for Zooplankton 
    409 C     ---------------------------- 
    410 C 
    411          xcond=(0.5+sign(0.5,zneg)) 
    412          tortz2(ji,jj,jk)=tortz2(ji,jj,jk)*xcond 
    413          respz2(ji,jj,jk)=respz2(ji,jj,jk)*xcond 
    414           END DO 
    415         END DO 
    416       END DO 
    417  
    418       DO jk = 1,jpkm1 
    419         DO jj = 1,jpj 
    420           DO ji = 1,jpi 
    421 C      
    422 C     Evolution of detritus 
    423 C     --------------------- 
    424 C      
    425          zneg = trn(ji,jj,jk,jppoc) 
    426      &     -grazpoc(ji,jj,jk)+grapoc(ji,jj,jk)-grazm(ji,jj,jk) 
    427      &     +respz(ji,jj,jk)-xagg(ji,jj,jk)+xaggdoc(ji,jj,jk) 
    428      &     +respp(ji,jj,jk)+tortp2(ji,jj,jk)+orem2(ji,jj,jk) 
    429      &     +tortz(ji,jj,jk)+tortp(ji,jj,jk)-orem(ji,jj,jk) 
    430      &     +(sinking(ji,jj,jk)-sinking(ji,jj,jk+1)) 
    431      &     /fse3t(ji,jj,jk) 
    432 C      
    433 C     Nullity test for POC 
    434 C     -------------------- 
    435 C      
    436          xcond=(0.5+sign(0.5,zneg)) 
    437          grazm(ji,jj,jk)=grazm(ji,jj,jk)*xcond 
    438          sinking(ji,jj,jk+1)=sinking(ji,jj,jk+1)*xcond 
    439          orem(ji,jj,jk)=orem(ji,jj,jk)*xcond 
    440          xagg(ji,jj,jk)=xagg(ji,jj,jk)*xcond 
    441          grazpoc(ji,jj,jk)=grazpoc(ji,jj,jk)*xcond 
    442 C    
    443 C     Evolution of detritus 
    444 C     --------------------- 
    445 C     
    446          zneg = trn(ji,jj,jk,jpgoc) 
    447      &     +grapoc2(ji,jj,jk)+respp2(ji,jj,jk)+xagg(ji,jj,jk) 
    448      &     +tortz2(ji,jj,jk)+respz2(ji,jj,jk)-orem2(ji,jj,jk) 
    449      &     +xaggdoc2(ji,jj,jk)-grazffe(ji,jj,jk) 
    450      &     +(sinking2(ji,jj,jk)-sinking2(ji,jj,jk+1)) 
    451      &     /fse3t(ji,jj,jk) 
    452 C 
    453 C     Nullity test on goc212 
    454 C     ---------------------- 
    455 C 
    456          xcond=(0.5+sign(0.5,zneg)) 
    457          sinking2(ji,jj,jk+1)=sinking2(ji,jj,jk+1)*xcond 
    458          orem2(ji,jj,jk)=orem2(ji,jj,jk)*xcond 
    459 C 
    460 C     Evolution of small biogenic Iron 
    461 C     -------------------------- 
    462 C 
    463          zdenom=1./(trn(ji,jj,jk,jppoc)+trn(ji,jj,jk,jpgoc)+rtrn) 
    464 C 
    465          zneg = trn(ji,jj,jk,jpsfe) 
    466      &     +unass*(grazpf(ji,jj,jk)+grazsf(ji,jj,jk)) 
    467      &     -grazpof(ji,jj,jk)-(1.-unass)*grazmf(ji,jj,jk) 
    468      &     +tortdf(ji,jj,jk)+respnf(ji,jj,jk)+tortnf(ji,jj,jk) 
    469      &     +ferat3*(tortz(ji,jj,jk)+respz(ji,jj,jk))-ofer(ji,jj,jk) 
    470      &     +ofer2(ji,jj,jk)-xaggfe(ji,jj,jk) 
    471      &     +xscave(ji,jj,jk)*zdenom1(ji,jj,jk) 
    472      &     +(sinkfer(ji,jj,jk)-sinkfer(ji,jj,jk+1)) 
    473      &     /fse3t(ji,jj,jk) 
    474 C 
    475 C     Nullity test for biogenic iron 
    476 C     -------------------- 
    477 C 
    478          xcond=(0.5+sign(0.5,zneg)) 
    479          sinkfer(ji,jj,jk+1)=sinkfer(ji,jj,jk+1)*xcond 
    480          ofer(ji,jj,jk)=ofer(ji,jj,jk)*xcond 
    481          xaggfe(ji,jj,jk)=xaggfe(ji,jj,jk)*xcond 
    482          grazmf(ji,jj,jk)=grazmf(ji,jj,jk)*xcond 
    483 C 
    484 C     Evolution of big biogenic Iron 
    485 C     -------------------------- 
    486 C 
    487          zneg = trn(ji,jj,jk,jpbfe) 
    488      &     +unass2*(graznf(ji,jj,jk)+grazf(ji,jj,jk)+grazfff(ji,jj,jk) 
    489      &     +grazpof(ji,jj,jk)+ferat3*grazz(ji,jj,jk))+ferat3* 
    490      &     (tortz2(ji,jj,jk)+respz2(ji,jj,jk))-ofer2(ji,jj,jk) 
    491      &     +respdf(ji,jj,jk)+xaggfe(ji,jj,jk)+xbactfer(ji,jj,jk) 
    492      &     -grazfff(ji,jj,jk)+xscave(ji,jj,jk)*zdenom2(ji,jj,jk) 
    493      &     +(sinkfer2(ji,jj,jk)-sinkfer2(ji,jj,jk+1)) 
    494      &     /fse3t(ji,jj,jk) 
    495 C 
    496 C     Nullity test for biogenic iron 
    497 C     -------------------- 
    498 C 
    499          xcond=(0.5+sign(0.5,zneg)) 
    500          sinkfer2(ji,jj,jk+1)=sinkfer2(ji,jj,jk+1)*xcond 
    501          ofer2(ji,jj,jk)=ofer2(ji,jj,jk)*xcond 
    502          grazfff(ji,jj,jk)=grazfff(ji,jj,jk)*xcond 
    503 C 
    504 C     Evolution of sinking biogenic silica 
    505 C     -------------------------- 
    506 C 
    507          zneg = trn(ji,jj,jk,jpdsi) 
    508      &     +tortds(ji,jj,jk)+grazss(ji,jj,jk) 
    509      &     +respds(ji,jj,jk)+grazs(ji,jj,jk)-osil(ji,jj,jk) 
    510      &     +(sinksil(ji,jj,jk)-sinksil(ji,jj,jk+1)) 
    511      &     /fse3t(ji,jj,jk) 
    512 C 
    513 C     Nullity test for Biogenic Silica 
    514 C     -------------------------------- 
    515 C 
    516           xcond=(0.5+sign(0.5,zneg)) 
    517           sinksil(ji,jj,jk+1)=sinksil(ji,jj,jk+1)*xcond 
    518           osil(ji,jj,jk)=osil(ji,jj,jk)*xcond 
    519 C      
    520           END DO 
    521         END DO 
    522       END DO 
    523 C 
    524 C  Recompute the SMS related to zooplankton grazing 
    525 C  ------------------------------------------------ 
    526 C 
    527       DO jk = 1,jpkm1 
    528         DO jj = 1,jpj 
    529           DO ji = 1,jpi 
    530          grarem(ji,jj,jk)=(grazp(ji,jj,jk)+grazm(ji,jj,jk) 
    531      &      +grazsd(ji,jj,jk))*(1.-epsher-unass) 
    532  
    533         grafer(ji,jj,jk)=(grazpf(ji,jj,jk)+grazsf(ji,jj,jk) 
    534      &      +grazmf(ji,jj,jk))*(1.-epsher-unass) 
    535      &      +(grazm(ji,jj,jk)*max((trn(ji,jj,jk,jpsfe)/ 
    536      &      (trn(ji,jj,jk,jppoc)+rtrn)-ferat3),0.) 
    537      &      +grazp(ji,jj,jk)*max((trn(ji,jj,jk,jpnfe)/ 
    538      &      (trn(ji,jj,jk,jpphy)+rtrn)-ferat3),0.) 
    539      &      +grazsd(ji,jj,jk)*max((trn(ji,jj,jk,jpdfe)/ 
    540      &      (trn(ji,jj,jk,jpdia)+rtrn)-ferat3),0.))*epsher 
    541  
    542         grarem2(ji,jj,jk)=(grazd(ji,jj,jk)+grazz(ji,jj,jk) 
    543      &      +grazn(ji,jj,jk)+grazpoc(ji,jj,jk)+grazffe(ji,jj,jk)) 
    544      &      *(1.-epsher2-unass2) 
    545  
    546         grafer2(ji,jj,jk)=(grazf(ji,jj,jk)+graznf(ji,jj,jk) 
    547      &    +grazz(ji,jj,jk)*ferat3+grazpof(ji,jj,jk) 
    548      &    +grazfff(ji,jj,jk))*(1.-epsher2-unass2) 
    549      &    +epsher2*(grazd(ji,jj,jk)*max( 
    550      &    (trn(ji,jj,jk,jpdfe)/(trn(ji,jj,jk,jpdia)+rtrn) 
    551      &    -ferat3),0.)+grazn(ji,jj,jk)*max( 
    552      &    (trn(ji,jj,jk,jpnfe)/(trn(ji,jj,jk,jpphy)+rtrn) 
    553      &    -ferat3),0.)+grazpoc(ji,jj,jk)*max( 
    554      &    (trn(ji,jj,jk,jpsfe)/(trn(ji,jj,jk,jppoc)+rtrn) 
    555      &    -ferat3),0.)+grazffe(ji,jj,jk)*max( 
    556      &    (trn(ji,jj,jk,jpbfe)/(trn(ji,jj,jk,jpgoc)+rtrn) 
    557      &    -ferat3),0.)) 
    558  
    559         grapoc2(ji,jj,jk)=(grazd(ji,jj,jk)+grazz(ji,jj,jk) 
    560      &    +grazn(ji,jj,jk)+grazpoc(ji,jj,jk)+grazffe(ji,jj,jk))*unass2 
    561  
    562         grapoc(ji,jj,jk)=(grazp(ji,jj,jk)+grazm(ji,jj,jk) 
    563      &      +grazsd(ji,jj,jk))*unass 
    564           END DO 
    565         END DO 
    566       END DO 
    567132C      
    568133C     Determination of tracers concentration as a function of  
     
    580145     &      -prorca(ji,jj,jk)-prorca2(ji,jj,jk) 
    581146     &      +olimi(ji,jj,jk)+grarem(ji,jj,jk)*sigma1+denitr(ji,jj,jk) 
    582      &      +grarem2(ji,jj,jk)*sigma2+po4dep(ji,jj,jk)*rfact2 
     147     &      +grarem2(ji,jj,jk)*sigma2 
    583148C 
    584149C     Evolution of NO3 and NH4 
     
    587152          trn(ji,jj,jk,jpno3) = trn(ji,jj,jk,jpno3) 
    588153     &      -pronew(ji,jj,jk)-pronew2(ji,jj,jk)+onitr(ji,jj,jk) 
    589      &      -denitr(ji,jj,jk)*rdenit+po4dep(ji,jj,jk)*rfact2 
    590      &      +nitdep(ji,jj,jk)*rfact2 
     154     &      -denitr(ji,jj,jk)*rdenit 
    591155 
    592156          trn(ji,jj,jk,jpnh4) = trn(ji,jj,jk,jpnh4) 
     
    675239C      
    676240          trn(ji,jj,jk,jppoc) = trn(ji,jj,jk,jppoc) 
    677      &      -grazpoc(ji,jj,jk)+grapoc(ji,jj,jk)+tortp2(ji,jj,jk) 
    678      &      -grazm(ji,jj,jk)+respp(ji,jj,jk)+tortz(ji,jj,jk) 
    679      &      +tortp(ji,jj,jk)+respz(ji,jj,jk)-orem(ji,jj,jk) 
    680      &      +orem2(ji,jj,jk)-xagg(ji,jj,jk)+xaggdoc(ji,jj,jk) 
    681      &      +(sinking(ji,jj,jk)-sinking(ji,jj,jk+1)) 
    682      &      /fse3t(ji,jj,jk) 
     241     &     -grazpoc(ji,jj,jk)+grapoc(ji,jj,jk)-grazm(ji,jj,jk) 
     242     &     +respz(ji,jj,jk)-xagg(ji,jj,jk)+xaggdoc(ji,jj,jk) 
     243     &     +(1.-0.5*zfracal(ji,jj,jk))*(tortp(ji,jj,jk) 
     244     &     +respp(ji,jj,jk))+0.5*tortp2(ji,jj,jk) 
     245     &     +orem2(ji,jj,jk)+tortz(ji,jj,jk)-orem(ji,jj,jk) 
    683246C     
    684247C     Evolution of rapid Detritus 
     
    686249C     
    687250          trn(ji,jj,jk,jpgoc) = trn(ji,jj,jk,jpgoc) 
    688      &      +grapoc2(ji,jj,jk)+respp2(ji,jj,jk)+xagg(ji,jj,jk) 
    689      &      +tortz2(ji,jj,jk)+respz2(ji,jj,jk)-orem2(ji,jj,jk) 
    690      &      -grazffe(ji,jj,jk)+xaggdoc2(ji,jj,jk) 
    691      &      +(sinking2(ji,jj,jk)-sinking2(ji,jj,jk+1)) 
    692      &      /fse3t(ji,jj,jk) 
     251     &     +grapoc2(ji,jj,jk)+respp2(ji,jj,jk)+xagg(ji,jj,jk) 
     252     &     +tortz2(ji,jj,jk)+respz2(ji,jj,jk)-orem2(ji,jj,jk) 
     253     &     +0.5*zfracal(ji,jj,jk)*(respp(ji,jj,jk)+tortp(ji,jj,jk)) 
     254     &     +0.5*tortp2(ji,jj,jk)+xaggdoc2(ji,jj,jk)-grazffe(ji,jj,jk) 
     255C 
    693256          END DO 
    694257        END DO 
     
    702265C     --------------- 
    703266C      
    704          xcond=(0.5+sign(0.5,(trn(ji,jj,jk,jpoxy)-oxymin))) 
    705267         trn(ji,jj,jk,jpoxy) = trn(ji,jj,jk,jpoxy) 
    706268     &     +o2ut*(proreg(ji,jj,jk)+proreg2(ji,jj,jk)-olimi(ji,jj,jk) 
    707      &     -xcond*(grarem(ji,jj,jk)*sigma1+grarem2(ji,jj,jk)*sigma2)) 
     269     &     -grarem(ji,jj,jk)*sigma1-grarem2(ji,jj,jk)*sigma2) 
    708270     &     +(o2ut+o2nit)*( pronew(ji,jj,jk)+pronew2(ji,jj,jk)) 
    709271     &     -o2nit*onitr(ji,jj,jk) 
     
    712274        END DO 
    713275      END DO 
     276  
    714277 
    715278      DO jk = 1,jpkm1 
     
    724287     &      +(excret2-1.)*prorca4(ji,jj,jk)-xbactfer(ji,jj,jk) 
    725288     &      +grafer(ji,jj,jk)+grafer2(ji,jj,jk) 
    726      &      +ofer(ji,jj,jk)-xscave(ji,jj,jk)+irondep(ji,jj,jk) 
    727      &      +(ironsed(ji,jj,jk)+po4dep(ji,jj,jk)*9E-5)*rfact2 
     289     &      +ofer(ji,jj,jk)-xscave(ji,jj,jk) 
     290C 
    728291          END DO 
    729292        END DO 
     
    736299C     Evolution of small biogenic Iron 
    737300C     -------------------------- 
    738 C 
    739           zdenom=1./(trn(ji,jj,jk,jppoc)+trn(ji,jj,jk,jpgoc)+rtrn) 
    740301C 
    741302          trn(ji,jj,jk,jpsfe) = trn(ji,jj,jk,jpsfe) 
    742303     &     +unass*(grazpf(ji,jj,jk)+grazsf(ji,jj,jk)) 
    743304     &     -grazpof(ji,jj,jk)-(1.-unass)*grazmf(ji,jj,jk) 
    744      &     +tortdf(ji,jj,jk)+respnf(ji,jj,jk)+tortnf(ji,jj,jk) 
    745      &     +ferat3*(tortz(ji,jj,jk)+respz(ji,jj,jk))-ofer(ji,jj,jk) 
     305     &     +(1.-0.5*zfracal(ji,jj,jk))*(tortnf(ji,jj,jk) 
     306     &     +respnf(ji,jj,jk))+0.5*tortdf(ji,jj,jk)+ferat3* 
     307     &     (tortz(ji,jj,jk)+respz(ji,jj,jk))-ofer(ji,jj,jk) 
    746308     &     +ofer2(ji,jj,jk)-xaggfe(ji,jj,jk) 
    747309     &     +xscave(ji,jj,jk)*zdenom1(ji,jj,jk) 
    748      &     +(sinkfer(ji,jj,jk)-sinkfer(ji,jj,jk+1)) 
    749      &     /fse3t(ji,jj,jk) 
    750310C 
    751311C     Evolution of big biogenic Iron 
     
    754314          trn(ji,jj,jk,jpbfe) = trn(ji,jj,jk,jpbfe) 
    755315     &     +unass2*(graznf(ji,jj,jk)+grazf(ji,jj,jk)+grazfff(ji,jj,jk) 
    756      &     +grazpof(ji,jj,jk)+grazz(ji,jj,jk)*ferat3)+ferat3* 
     316     &     +grazpof(ji,jj,jk)+ferat3*grazz(ji,jj,jk))+ferat3* 
    757317     &     (tortz2(ji,jj,jk)+respz2(ji,jj,jk))-ofer2(ji,jj,jk) 
    758      &     +respdf(ji,jj,jk)+xaggfe(ji,jj,jk)+xbactfer(ji,jj,jk) 
    759      &     -grazfff(ji,jj,jk)+xscave(ji,jj,jk)*zdenom2(ji,jj,jk) 
    760      &     +(sinkfer2(ji,jj,jk)-sinkfer2(ji,jj,jk+1)) 
    761      &     /fse3t(ji,jj,jk) 
     318     &     +0.5*zfracal(ji,jj,jk)*(respnf(ji,jj,jk)+tortnf(ji,jj,jk)) 
     319     &     +0.5*tortdf(ji,jj,jk)+respdf(ji,jj,jk)+xaggfe(ji,jj,jk) 
     320     &     +xbactfer(ji,jj,jk)-grazfff(ji,jj,jk)+xscave(ji,jj,jk) 
     321     &     *zdenom2(ji,jj,jk) 
    762322          END DO 
    763323        END DO 
     
    775335     &      -tortds(ji,jj,jk)-respds(ji,jj,jk)-grazs(ji,jj,jk) 
    776336C 
    777           silpro(ji,jj,jk)= 
    778      &      tortds(ji,jj,jk)+respds(ji,jj,jk)+grazs(ji,jj,jk) 
    779      &      +grazss(ji,jj,jk) 
    780 C 
    781337          END DO 
    782338        END DO 
     
    793349     &      +tortds(ji,jj,jk)+respds(ji,jj,jk)+grazs(ji,jj,jk) 
    794350     &      -osil(ji,jj,jk)+grazss(ji,jj,jk) 
    795      &      +(sinksil(ji,jj,jk)-sinksil(ji,jj,jk+1)) 
    796      &      /fse3t(ji,jj,jk) 
    797351C 
    798352          END DO 
     
    823377          trn(ji,jj,jk,jpsil) = trn(ji,jj,jk,jpsil) 
    824378     &      -(1.-excret2)*prorca3(ji,jj,jk)+osil(ji,jj,jk) 
    825      &      +sidep(ji,jj,jk)+cotdep(ji,jj,jk)*rfact2/6. 
    826379C 
    827380          END DO 
     
    842395          prodca = pronew(ji,jj,jk)+pronew2(ji,jj,jk) 
    843396     &      -onitr(ji,jj,jk)+rdenit*denitr(ji,jj,jk) 
    844      &      -po4dep(ji,jj,jk)*rfact2-nitdep(ji,jj,jk)*rfact2 
    845397C      
    846398C     potential production of calcite and biogenic silicate 
    847399C     ------------------------------------------------------ 
    848400C      
    849           prcaca(ji,jj,jk)=caco3r*(0.5*(unass*grazp(ji,jj,jk)+ 
     401          prcaca(ji,jj,jk)= 
     402     &      zfracal(ji,jj,jk)*(0.5*(unass*grazp(ji,jj,jk)+ 
    850403     &      unass2*grazn(ji,jj,jk))+tortp(ji,jj,jk)+respp(ji,jj,jk)) 
    851      &      *xlimphy(ji,jj,jk)*xlimphy(ji,jj,jk) 
    852404C      
    853405C     Consumption of Total (12C)O2 
     
    855407C      
    856408          trn(ji,jj,jk,jpdic) = trn(ji,jj,jk,jpdic) 
    857      &      -prodt-prcaca(ji,jj,jk)+po4dep(ji,jj,jk)*rfact2*2.633 
     409     &      -prodt-prcaca(ji,jj,jk) 
    858410C      
    859411C     Consumption of alkalinity due to ca++ uptake and increase  
     
    864416          trn(ji,jj,jk,jptal) = trn(ji,jj,jk,jptal) 
    865417     &      +rno3*prodca-2.*prcaca(ji,jj,jk) 
    866      &      +cotdep(ji,jj,jk)*rfact2 
    867418          END DO 
    868419        END DO 
     
    877428C      
    878429           trn(ji,jj,jk,jpcal) = trn(ji,jj,jk,jpcal) 
    879      &        +prcaca(ji,jj,jk)+(sinkcal(ji,jj,jk)- 
    880      &         sinkcal(ji,jj,jk+1))/fse3t(ji,jj,jk) 
     430     &        +prcaca(ji,jj,jk) 
    881431          END DO 
    882432        END DO 
    883433      ENDDO 
    884434C 
    885       DO jn=1 , jptra 
    886         CALL lbc_lnk(trn(:,:,:,jn), 'T', 1. ) 
    887       END DO 
    888  
    889 #    if defined key_trc_diaadd 
    890        DO jj=1,jpj 
    891          DO ji=1,jpi 
    892           trc2d(ji,jj,12) = irondep(ji,jj,1)*1e3*rfact2r 
    893      &       *fse3t(ji,jj,1) 
    894          END DO 
    895        END DO 
    896 #    endif 
     435C 
     436C     Loop to test if tracers concentrations fall below 0. 
     437C     ---------------------------------------------------- 
     438C 
     439C 
     440      znegtr(:,:,:) = 1. 
     441C 
     442      DO jn = 1,jptra 
     443        DO jk = 1,jpk 
     444          DO jj = 1,jpj 
     445            DO ji = 1,jpi 
     446              if (trn(ji,jj,jk,jn).lt.0.) then 
     447               znegtr(ji,jj,jk)=0. 
     448              endif 
     449            END DO 
     450          END DO 
     451        END DO 
     452      END DO 
     453C 
     454      DO jn = 1,jptra 
     455         trn(:,:,:,jn) = trb(:,:,:,jn)+ 
     456     &     znegtr(:,:,:)*(trn(:,:,:,jn)-trb(:,:,:,jn)) 
     457      END DO 
    897458C 
    898459#    if defined key_trc_dia3d 
    899460          trc3d(:,:,:,4)=etot(:,:,:) 
    900           trc3d(:,:,:,5)=prorca(:,:,:)*1e3*rfact2r 
    901           trc3d(:,:,:,6)=prorca2(:,:,:)*1e3*rfact2r 
    902           trc3d(:,:,:,7)=pronew(:,:,:)*1e3*rfact2r 
    903           trc3d(:,:,:,8)=pronew2(:,:,:)*1e3*rfact2r 
    904           trc3d(:,:,:,9)=prorca3(:,:,:)*1e3*rfact2r 
    905           trc3d(:,:,:,10)=prorca4(:,:,:)*1e3*rfact2r 
    906           trc3d(:,:,:,11)=prorca5(:,:,:)*1e3*rfact2r 
     461          trc3d(:,:,:,5)=prorca(:,:,:)*znegtr(:,:,:)*1e3*rfact2r 
     462          trc3d(:,:,:,6)=prorca2(:,:,:)*znegtr(:,:,:)*1e3*rfact2r 
     463          trc3d(:,:,:,7)=pronew(:,:,:)*znegtr(:,:,:)*1e3*rfact2r 
     464          trc3d(:,:,:,8)=pronew2(:,:,:)*znegtr(:,:,:)*1e3*rfact2r 
     465          trc3d(:,:,:,9)=prorca3(:,:,:)*znegtr(:,:,:)*1e3*rfact2r 
     466          trc3d(:,:,:,10)=prorca4(:,:,:)*znegtr(:,:,:)*1e3*rfact2r 
     467          trc3d(:,:,:,11)=prorca5(:,:,:)*znegtr(:,:,:)*1e3*rfact2r 
    907468#    endif 
    908469C      
    909470#endif 
    910 C     
    911   
     471C      
    912472      RETURN 
    913473      END 
  • trunk/NEMO/TOP_SRC/SMS/p4zche.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 p4zche 
     
    2925CC parameters and commons 
    3026CC ====================== 
    31 CDIR$ NOLIST 
     27CDIR$ nolist 
    3228      USE oce_trc 
    3329      USE trp_trc 
    3430      USE sms 
    3531      IMPLICIT NONE 
     32#include "domzgr_substitute.h90" 
    3633CDIR$ list 
    3734CC---------------------------------------------------------------------- 
     
    4037C 
    4138      INTEGER ji, jj, jk 
    42       REAL tkel, sal, rrr, qtt 
    43       REAL pres, tc, cl, cpexp 
    44       REAL akb, temzer, cek0, oxy 
    45       REAL zsqrt, ztr, zlogt 
    46       REAL zqtt, qtt2, sal15 
    47       REAL ckb, ck1, ck2, ckw, ak1, ak2, aksp0 
    48 CC---------------------------------------------------------------------- 
    49 CC statement functions 
    50 CC =================== 
    51 CDIR$ NOLIST 
    52 #include "domzgr_substitute.h90" 
    53 CDIR$ LIST 
     39      REAL tkel, sal,  qtt, zbuf1, zbuf2 
     40      REAL pres, tc, cl, cpexp, cek0, oxy, cpexp2 
     41      REAL zsqrt, ztr, zlogt, cek1 
     42      REAL zqtt, qtt2, sal15, zis, zis2 
     43      REAL ckb, ck1, ck2, ckw, ak1, ak2, akb, aksp0, akw 
    5444C 
    5545C* 1. CHEMICAL CONSTANTS - SURFACE LAYER 
    5646C --------------------------------------- 
    57       temzer = 273.16 
    58 C 
    59 C vertical slab 
    60 C ============= 
    6147C 
    6248      DO jj = 1,jpj 
     
    6652C ------------------------------ 
    6753C 
    68           tkel = tn(ji,jj,1)+temzer 
     54          tkel = tn(ji,jj,1)+273.16 
    6955          qtt = tkel*0.01 
    7056          qtt2=qtt*qtt 
     
    7258          zqtt=log(qtt) 
    7359C 
    74 C* 1.2 LN(K0) OF SOLUBILITY OF CO2 (EQ. 12, WEISS, 1974) 
     60C* 1.2 LN(K0) OF SOLUBILITY OF CO2 (EQ. 12, WEISS, 1980) 
     61C      AND FOR THE ATMOSPHERE FOR NON IDEAL GAS 
    7562C ------------------------------------------------------- 
    7663C 
    7764          cek0 = c00+c01/qtt+c02*zqtt+sal*(c03+c04*qtt+c05*qtt2) 
     65          cek1 = ca0+ca1/qtt+ca2*zqtt+ca3*qtt2+sal*(ca4 
     66     &      +ca5*qtt+ca6*qtt2) 
    7867C 
    7968C* 1.3 LN(K0) OF SOLUBILITY OF O2 and N2 (EQ. 4, WEISS, 1970) 
     
    8271          oxy = ox0+ox1/qtt+ox2*zqtt+sal*(ox3+ox4*qtt+ox5*qtt2) 
    8372C 
    84 C* 1.4 SET CHEMICAL CHEMICAL CONSTANTS 
    85 C -------------------------------------- 
    86 C 
    87           chemc(ji,jj,1) = exp(cek0)*1.E-6 
    88 C 
    89 C* 1.5 O2 SOLUBILITY IN SEAWATER (WEISS, 1970, CF. EQ. 4) 
    90 C --------------------------------------------------------- 
    91 C 
    92           chemc(ji,jj,3) = exp(oxy)*oxyco 
     73C* 1.4 SET SOLUBILITIES OF O2 AND CO2 
     74C ----------------------------------- 
     75C 
     76          chemc(ji,jj,1) = exp(cek0)*1.E-6*rhop(ji,jj,1)/1000. 
     77          chemc(ji,jj,2) = exp(oxy)*oxyco 
     78          chemc(ji,jj,3) = exp(cek1)*1.E-6*rhop(ji,jj,1)/1000. 
    9379C 
    9480        ENDDO 
     
    9985C 
    10086      DO jk = 1,jpk 
    101 C 
    102 C* 2.1 APPROX. SEAWATER PRESSURE AT U-POINT DEPTH (BAR) 
    103 C ------------------------------------------------------ 
    104 C 
    105         DO jj=1,jpj 
     87        DO jj = 1,jpj 
    10688          DO ji = 1,jpi 
    10789C 
    108 C* 2.2 SET [H+] (FIRST GUESS) 
    109 C ---------------------------- 
     90C* 2.1 SET PRESSION 
     91C ----------------- 
    11092C 
    11193            pres = 1.025e-1*fsdept(ji,jj,jk) 
    112             hi(ji,jj,jk) = 1.E-7 
    113 C 
    114 C* 2.3 SET ABSOLUTE TEMPERATURE 
     94C 
     95C* 2.2 SET ABSOLUTE TEMPERATURE 
    11596C ------------------------------ 
    11697C 
    117             tkel   = tn(ji,jj,jk)+temzer 
     98            tkel   = tn(ji,jj,jk)+273.16 
    11899            qtt    = tkel*0.01 
    119100            sal    = sn(ji,jj,jk) + (1.-tmask(ji,jj,jk))*35. 
     
    122103            zlogt  = log(tkel) 
    123104            ztr    = 1./tkel 
    124 C 
    125 C* 2.4 CHLORINITY (WOOSTER ET AL., 1969) 
     105            zis    = 19.924*sal/(1000.-1.005*sal) 
     106            zis2   = zis*zis 
     107            tc = tn(ji,jj,jk) + (1.-tmask(ji,jj,jk))*20. 
     108C 
     109C* 2.3 CHLORINITY (WOOSTER ET AL., 1969) 
    126110C --------------------------------------- 
    127111C 
    128112            cl = sal*salchl 
    129113C 
    130 C* 2.5 LN(K0) OF SOLUBILITY OF CO2 (EQ. 12, WEISS, 1974) 
     114C* 2.4 DISSOCIATION CONSTANT FOR CARBONATE AND BORATE 
    131115C ------------------------------------------------------- 
    132116C 
    133             cek0 = c00+c01/qtt+c02*log(qtt)+ 
    134      &          sal*(c03+c04*qtt+c05*qtt*qtt) 
    135 C 
    136 C  COEFFICIENT OCMIP  
    137 C ------------------ 
    138 C 
    139117            ckb = (cb0+cb1*zsqrt+cb2*sal+cb3*sal15+cb4*sal*sal)*ztr 
    140      $          +(cb5+cb6*zsqrt+cb7*sal)+ 
    141      $          (cb8+cb9*zsqrt+cb10*sal)*zlogt+cb11*zsqrt*tkel 
    142             ck1 = c10*ztr+c11+c12*zlogt+(c13*ztr+c14)*zsqrt+ 
    143      $          c15*sal+c16*sal15+log(1.+c17*sal) 
    144             ck2 = c20*ztr+c21+c22*zlogt+(c23*ztr+c24)*zsqrt+c25*sal 
    145      $          +c26*sal15+log(1.+c27*sal) 
    146 C 
    147 C* 2.6 PKW (H2O) (DICKSON AND RILEY, 1979) 
     118     &          +(cb5+cb6*zsqrt+cb7*sal)+ 
     119     &          (cb8+cb9*zsqrt+cb10*sal)*zlogt+cb11*zsqrt*tkel 
     120            ck1 = c10*ztr+c11+c12*zlogt+c13*sal+c14*sal**2 
     121            ck2 = c20*ztr+c21+c22*sal+c23*sal**2 
     122C 
     123C* 2.5 PKW (H2O) (DICKSON AND RILEY, 1979) 
    148124C ----------------------------------------- 
    149125C 
    150126            ckw = cw0*ztr+cw1+cw2*zlogt+(cw3*ztr+cw4+cw5*zlogt)* 
    151      $          zsqrt+cw6*sal 
    152 C 
    153 C* 2.7 K1, K2 OF CARBONIC ACID, KB OF BORIC ACID, KW (H2O) (LIT.?) 
     127     &          zsqrt+cw6*sal 
     128C 
     129C* 2.6 K1, K2 OF CARBONIC ACID, KB OF BORIC ACID, KW (H2O) (LIT.?) 
    154130C ----------------------------------------------------------------- 
    155131C 
    156             ak1 = exp(ck1) 
    157             ak2 = exp(ck2) 
     132            ak1 = 10**(ck1) 
     133            ak2 = 10**(ck2) 
    158134            akb = exp(ckb) 
    159             akw3(ji,jj,jk) = exp(ckw) 
    160 C 
    161 C*2.8 APPARENT SOLUBILITY PRODUCT K'SP OF CALCITE IN SEAWATER 
     135            akw = exp(ckw) 
     136C 
     137C*2.7 APPARENT SOLUBILITY PRODUCT K'SP OF CALCITE IN SEAWATER 
    162138C       (S=27-43, T=2-25 DEG C) AT pres =0 (ATMOSPH. PRESSURE) 
    163139C       (INGLE, 1800, EQ. 6) 
    164140C ------------------------------------------------------------- 
    165141C 
    166             aksp0 = 1.E-7*(akcc1+akcc2*sal**(1./3.)+akcc3*log(sal) 
     142            aksp0 = 1.E-7*(akcc1+akcc2*sal**(1./3.)+akcc3*log10(sal) 
    167143     &          +akcc4*tkel*tkel) 
    168144C 
    169 C* 2.9 FORMULA FOR CPEXP AFTER EDMOND AND GIESKES (1970) 
     145C* 2.8 FORMULA FOR CPEXP AFTER EDMOND AND GIESKES (1970) 
    170146C        (REFERENCE TO CULBERSON AND PYTKOQICZ (1968) AS MADE 
    171147C        IN BROECKER ET AL. (1982) IS INCORRECT; HERE RGAS IS 
     
    181157C 
    182158            cpexp = pres /(rgas*tkel) 
    183 C 
    184 C* 2.10 KB OF BORIC ACID, K1,K2 OF CARBONIC ACID PRESSURE 
     159            cpexp2 = pres * pres/(rgas*tkel) 
     160C 
     161C* 2.9 KB OF BORIC ACID, K1,K2 OF CARBONIC ACID PRESSURE 
    185162C        CORRECTION AFTER CULBERSON AND PYTKOWICZ (1968) 
    186163C        (CF. BROECKER ET AL., 1982) 
    187164C -------------------------------------------------------- 
    188165C 
    189             tc = tn(ji,jj,jk) + (1.-tmask(ji,jj,jk))*20. 
    190             akb3(ji,jj,jk) = akb*exp(cpexp*(devkb-devkbt*tc)) 
    191             ak13(ji,jj,jk) = ak1*exp(cpexp*(devk1-devk1t*tc)) 
    192             ak23(ji,jj,jk) = ak2*exp(cpexp*(devk2-devk2t*tc)) 
    193 C 
    194 C  2.11 APPARENT SOLUBILITY PRODUCT K'SP OF CALCITE (OR ARAGONITE) 
     166            zbuf1 = -(devk1(3)+devk2(3)*tc+devk3(3)*tc*tc) 
     167            zbuf2 = 0.5*(devk4(3)+devk5(3)*tc) 
     168            akb3(ji,jj,jk) = akb*exp(zbuf1*cpexp+zbuf2*cpexp2) 
     169 
     170            zbuf1 = -(devk1(1)+devk2(1)*tc+devk3(1)*tc*tc) 
     171            zbuf2 = 0.5*(devk4(1)+devk5(1)*tc) 
     172            ak13(ji,jj,jk) = ak1*exp(zbuf1*cpexp+zbuf2*cpexp2) 
     173 
     174            zbuf1 = -(devk1(2)+devk2(2)*tc+devk3(2)*tc*tc) 
     175            zbuf2 = 0.5*(devk4(2)+devk5(2)*tc) 
     176            ak23(ji,jj,jk) = ak2*exp(zbuf1*cpexp+zbuf2*cpexp2) 
     177 
     178            zbuf1 = -(devk1(4)+devk2(4)*tc+devk3(4)*tc*tc) 
     179            zbuf2 = 0.5*(devk4(4)+devk5(4)*tc) 
     180            akw3(ji,jj,jk) = akw*exp(zbuf1*cpexp+zbuf2*cpexp2) 
     181C 
     182C  2.10 APPARENT SOLUBILITY PRODUCT K'SP OF CALCITE (OR ARAGONITE) 
    195183C        AS FUNCTION OF PRESSURE FOLLWING EDMOND AND GIESKES (1970) 
    196184C        (P. 1285) AND BERNER (1976) 
     
    199187            aksp(ji,jj,jk) = aksp0*exp(cpexp*(devks-devkst*tc)) 
    200188C 
    201 C* 2.12 DENSITY OF SEAWATER AND TOTAL BORATE CONCENTR. [MOLES/L] 
    202 C --------------------------------------------------------------- 
    203 C 
    204             rrr = rhop(ji,jj,jk)/1000. 
    205             borat(ji,jj,jk) = bor1*rrr*cl*bor2 
    206 C 
    207 C  2.13 Iron and SIO3 saturation concentration from ... 
     189C* 2.11 TOTAL BORATE CONCENTR. [MOLES/L] 
     190C -------------------------------------- 
     191C 
     192            borat(ji,jj,jk) = bor1*cl*bor2 
     193C 
     194C  2.12 Iron and SIO3 saturation concentration from ... 
    208195C  ---------------------------------------------------- 
    209196C 
    210197         sio3eq(ji,jj,jk)=exp(log(10.)*(6.44-968./tkel))*1E-6 
    211          fekeq(ji,jj,jk)=10**(16.27-1565.7/(273.15+tn(ji,jj,jk))) 
     198         fekeq(ji,jj,jk)=10**(17.27-1565.7/(273.15+tc)) 
    212199C 
    213200          ENDDO 
    214201        ENDDO 
    215202      END DO 
    216 C       
     203C 
    217204#endif 
    218205C 
  • trunk/NEMO/TOP_SRC/SMS/p4zdiat.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 p4zdiat 
     
    4642CC ================== 
    4743      INTEGER ji, jj, jk 
    48       REAL compadi 
    49       REAL wchl2n(jpi,jpj,jpk) 
    50  
    51  
     44      REAL zfact,zstep,compadi 
     45C 
     46C      Time step duration for biology 
     47C      ------------------------------ 
     48C 
     49        zstep=rfact2/rjjss 
     50C 
    5251C    Aggregation term for diatoms is increased in case of nutrient 
    5352C    stress as observed in reality. The stressed cells become more 
     
    5857          DO jj = 1,jpj 
    5958            DO ji = 1,jpi 
    60         wchl2n(ji,jj,jk)=wchl+0.02*(1.-min(trn(ji,jj,jk,jppo4)/conc1, 
    61      &           trn(ji,jj,jk,jpfer)/conc3,trn(ji,jj,jk,jpsil) 
    62      &           /(xksi(ji,jj)+rtrn),trn(ji,jj,jk,jpno3)/conc1,1.)) 
    63             END DO 
    64           END DO 
    65         END DO 
    66  
    67         DO jk = 1,jpkm1 
    68           DO jj = 1,jpj 
    69             DO ji = 1,jpi 
    7059C 
    7160        compadi = max((trn(ji,jj,jk,jpdia)-1E-8),0.) 
     61        zfact=1./(trn(ji,jj,jk,jpdia)+rtrn) 
    7262C 
    7363C    Aggregation term for diatoms is increased in case of nutrient 
     
    7666C     ------------------------------------------------------------ 
    7767C 
    78         respp2(ji,jj,jk) = rfact2*1E6/rjjss*wchl2n(ji,jj,jk) 
    79      &    *zdiss(ji,jj,jk)*compadi*trn(ji,jj,jk,jpdia)*tmask(ji,jj,jk) 
     68        respp2(ji,jj,jk) = 1E6*zstep 
     69     &    *(wchl+wchld*(1.-xlimdia(ji,jj,jk))) 
     70     &    *zdiss(ji,jj,jk)*compadi*trn(ji,jj,jk,jpdia) 
    8071#    if defined key_off_degrad 
    8172     &    *facvol(ji,jj,jk) 
    8273#    endif 
    83  
     74                                                                                
    8475        respds(ji,jj,jk) = respp2(ji,jj,jk) 
    85      &    *trn(ji,jj,jk,jpbsi)/(trn(ji,jj,jk,jpdia)+rtrn) 
     76     &    *trn(ji,jj,jk,jpbsi)*zfact 
    8677 
    8778        respdf(ji,jj,jk) = respp2(ji,jj,jk) 
    88      &    *trn(ji,jj,jk,jpdfe)/(trn(ji,jj,jk,jpdia)+rtrn) 
    89  
     79     &    *trn(ji,jj,jk,jpdfe)*zfact 
     80                                                                                
    9081        respdch(ji,jj,jk)=respp2(ji,jj,jk) 
    91      &    *trn(ji,jj,jk,jpdch)/(trn(ji,jj,jk,jpdia)+rtrn) 
     82     &    *trn(ji,jj,jk,jpdch)*zfact 
    9283C 
    9384C     Phytoplankton mortality.  
    9485C     ------------------------ 
    9586C 
    96         tortp2(ji,jj,jk) = mprat2*rfact2/rjjss*trn(ji,jj,jk,jpdia) 
    97      &    /(xkmort+trn(ji,jj,jk,jpdia))*compadi*tmask(ji,jj,jk) 
     87        tortp2(ji,jj,jk) = mprat2*zstep*trn(ji,jj,jk,jpdia) 
     88     &    /(xkmort+trn(ji,jj,jk,jpdia))*compadi 
    9889#    if defined key_off_degrad 
    9990     &    *facvol(ji,jj,jk) 
     
    10192 
    10293        tortds(ji,jj,jk) = tortp2(ji,jj,jk) 
    103      &    *trn(ji,jj,jk,jpbsi)/(trn(ji,jj,jk,jpdia)+rtrn) 
     94     &    *trn(ji,jj,jk,jpbsi)*zfact 
    10495 
    10596        tortdf(ji,jj,jk)=tortp2(ji,jj,jk) 
    106      &    *trn(ji,jj,jk,jpdfe)/(trn(ji,jj,jk,jpdia)+rtrn) 
     97     &    *trn(ji,jj,jk,jpdfe)*zfact 
    10798 
    10899        tortdch(ji,jj,jk)=tortp2(ji,jj,jk) 
    109      &    *trn(ji,jj,jk,jpdch)/(trn(ji,jj,jk,jpdia)+rtrn) 
     100     &    *trn(ji,jj,jk,jpdch)*zfact 
    110101C 
    111102            END DO 
  • trunk/NEMO/TOP_SRC/SMS/p4zflx.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 p4zflx 
     
    3430      USE sms 
    3531      IMPLICIT NONE 
     32#include "domzgr_substitute.h90" 
    3633CDIR$ LIST 
    3734CC---------------------------------------------------------------------- 
     
    3936CC ================== 
    4037C 
    41       INTEGER ji, jj, krorr 
    42       REAL zexp1, zexp2 
    43       REAL a1, a2, a3, b2, b3, ttc, ws, alpco2 
    44       REAL fld, flu, oxy16, flu16 
    45       REAL zph,ah2,zbot,zdic,zalk,schmitt, zrhocd 
    46       REAL zwind(jpi,jpj) 
    47  
    48 CC 
    49 CC---------------------------------------------------------------------- 
    50 CC statement functions 
    51 CC =================== 
    52 CDIR$ NOLIST 
    53 #include "domzgr_substitute.h90" 
    54 CDIR$ LIST 
     38      INTEGER nspyr, ji, jj, krorr 
     39      REAL zpdtan 
     40      REAL kgco2(jpi,jpj),kgo2(jpi,jpj) 
     41      REAL ttc, ws 
     42      REAL fld, flu, oxy16, flu16, zfact 
     43      REAL zph,ah2,zbot,zdic,zalk,schmitto2, zalka 
     44      REAL schmittco2 
    5545C 
    5646C 
     
    5949c ----------------------------------------------------- 
    6050C 
    61  
    62       zexp1 = -2./3. 
    63       zexp2 = -1./2.   
    64       a1    = 0.17 
    65       a2    = 2.85 
    66       a3    = 5.90 
    67       b2    = 9.65 
    68       b3    = 49.3   
    69   
    70       zrhocd = 1.3*1.3e-3         
    71       DO jj = 1, jpj 
    72          DO ji = 1 , jpi 
    73             IF (igaswind .EQ. 0 ) then 
    74                zwind(ji,jj) = sqrt(taux(ji,jj)**2+tauy(ji,jj)**2) 
    75      $                            /zrhocd 
    76             ELSE 
    77                zwind(ji,jj) = vatm(ji,jj) 
    78             ENDIF  
    79          END DO 
    80       END DO 
     51      zpdtan = raass / rdt 
     52      nspyr  = nint(zpdtan) 
    8153C 
    8254C* 1.1 SURFACE CHEMISTRY (PCO2 AND [H+] IN 
     
    9365C -------------------------------------------- 
    9466C 
    95             zbot = borat(ji,jj,1) 
    96             zdic  = trn(ji,jj,1,jpdic) 
    97             zph = max(hi(ji,jj,1),1.E-10) 
     67        zbot = borat(ji,jj,1) 
     68        zfact = rhop(ji,jj,1)/1000.+rtrn 
     69        zdic  = trn(ji,jj,1,jpdic)/zfact 
     70        zph = max(hi(ji,jj,1),1.E-10)/zfact 
     71        zalka = trn(ji,jj,1,jptal)/zfact 
    9872C 
    9973C* 1.3 CALCULATE [ALK]([CO3--], [HCO3-]) 
    10074C ------------------------------------ 
    10175C 
    102             zalk=trn(ji,jj,1,jptal)- 
    103      &          (akw3(ji,jj,1)/zph-zph+zbot/(1.+zph/akb3(ji,jj,1))) 
     76        zalk=zalka- 
     77     &        (akw3(ji,jj,1)/zph-zph+zbot/(1.+zph/akb3(ji,jj,1))) 
    10478C 
    10579C* 1.4 CALCULATE [H+] AND [H2CO3] 
    10680C ----------------------------------------- 
    10781C 
    108             ah2=sqrt((zdic-zalk)**2+4*(zalk*ak23(ji,jj,1) 
    109      &          /ak13(ji,jj,1))*(2*zdic-zalk)) 
    110             ah2=0.5*ak13(ji,jj,1)/zalk*((zdic-zalk)+ah2) 
    111             h2co3(ji,jj) = (2*zdic-zalk)/(2.+ak13(ji,jj,1)/ah2) 
    112             hi(ji,jj,1)  = ah2 
     82         ah2=sqrt((zdic-zalk)**2+4*(zalk*ak23(ji,jj,1) 
     83     &     /ak13(ji,jj,1))*(2*zdic-zalk)) 
     84        ah2=0.5*ak13(ji,jj,1)/zalk*((zdic-zalk)+ah2) 
     85        h2co3(ji,jj) = (2*zdic-zalk)/(2.+ak13(ji,jj,1)/ah2)*zfact 
     86        hi(ji,jj,1)  = ah2*zfact 
    11387          END DO 
    11488        END DO 
     
    12498      DO jj = 1,jpj 
    12599        DO ji = 1,jpi 
    126  
    127            ws = zwind(ji,jj) 
     100C 
    128101          ttc = min(35.,tn(ji,jj,1)) 
    129           schmitt= 2073.1-125.62*ttc+3.6276*ttc**2-0.043126*ttc**3 
     102          schmittco2=2073.1-125.62*ttc+3.6276*ttc**2 
     103     &      -0.043126*ttc**3 
     104          ws=vatm(ji,jj) 
    130105C 
    131106C 2.2 COMPUTE GAS EXCHANGE FOR CO2 
    132107C -------------------------------- 
    133108C 
    134           kgwanin(ji,jj) = (0.3*ws*ws + 2.5*(0.5246+ttc*(0.016256+ 
    135      &       ttc*0.00049946)))*sqrt(660./schmitt) 
     109          kgco2(ji,jj) = (0.3*ws*ws + 2.5*(0.5246+ttc*(0.016256+ 
     110     &      ttc*0.00049946)))*sqrt(660./schmittco2) 
    136111C 
    137 C 2.3 CONVERT TO M/S 
    138 C ------------------ 
     112C 2.3 CONVERT TO m/s, and apply sea-ice cover 
     113C ----------------------------------------------------- 
    139114C 
    140           kgwanin(ji,jj) = kgwanin(ji,jj)/100./3600. 
     115          kgco2(ji,jj) = kgco2(ji,jj)/(100.*3600.) 
     116     &      *(1-freeze(ji,jj))*tmask(ji,jj,1) 
    141117C 
    142 C 2.4 convert to mol/m2/s/uatm, alpco2(chemc(ji,jj,1)) is in  
    143 C      mol/L/uatm and apply ice cover 
    144 C ----------------------------------------------------------- 
    145 C 
    146           kgwanin(ji,jj) = kgwanin(ji,jj)*chemc(ji,jj,1)*1.e3*  
    147      &       (1-freeze(ji,jj)) 
    148118         END DO 
    149119       END DO 
    150120C 
    151 C 2.5 COMPUTE GAS EXCHANGE COEFFICIENT FO O2 FROM LISS AND  
    152 C      MERLIVAT EQUATIONS 
    153 C --------------------------------------------------------- 
     121C 2.5 COMPUTE GAS EXCHANGE COEFFICIENT FO O2 FROM 
     122C      Waninkhof EQUATIONS 
     123C ----------------------------------------------- 
    154124C 
    155125       DO jj = 1,jpj 
    156126         DO ji = 1,jpi 
    157127C 
    158            ws = zwind(ji,jj) 
     128          ws = vatm(ji,jj) 
     129          schmitto2 = 1953.4-128.0*ttc+3.9918*ttc**2 
     130     &      -0.050091*ttc**3 
    159131 
    160            ttc = min(35.,tn(ji,jj,1)) 
    161            schmitt = 1953.4-128.0*ttc+3.9918*ttc**2 
    162      &               -0.050091*ttc**3 
     132          kgo2(ji,jj) = (0.3*ws*ws + 2.5*(0.5246+ttc*(0.016256+ 
     133     &      ttc*0.00049946)))*sqrt(660./schmitto2) 
    163134C 
    164            IF (ws.LE.3.6) THEN 
    165                fugaci(ji,jj) = (a1*ws)*(schmitt/660.)**zexp1 
    166            ENDIF 
    167            IF ((ws.GT.3.6).AND.(ws.LE.13.)) THEN 
    168                fugaci(ji,jj) = (a2*ws-b2)*(schmitt/660.)**zexp2 
    169            ENDIF 
    170            IF (ws.GT.13.) THEN 
    171                fugaci(ji,jj) = (a3*ws-b3)*(schmitt/660.)**zexp2 
    172            ENDIF 
    173 C 
    174 C CONVERT TO CM AND APPLY SEA ICE COVER 
     135C CONVERT TO m/s AND APPLY SEA ICE COVER 
    175136C ------------------------------------- 
    176137C 
    177            fugaci(ji,jj) = fugaci(ji,jj)/100./3600.* 
    178      $         (1-freeze(ji,jj))*tmask(ji,jj,1) 
     138          kgo2(ji,jj) = kgo2(ji,jj)/(100.*3600.) 
     139     $      *(1-freeze(ji,jj))*tmask(ji,jj,1) 
    179140C 
    180 #    if defined key_off_degrad 
    181            fugaci(ji,jj) = exp(-rfact*fugaci(ji,jj) 
    182      $         *facvol(ji,jj,1)/fse3t(ji,jj,1)) 
    183 #    else 
    184            fugaci(ji,jj) = exp(-rfact*fugaci(ji,jj) 
    185      $         /fse3t(ji,jj,1)) 
    186 #    endif 
    187             
    188141         ENDDO 
    189142       ENDDO 
    190143C 
    191  
    192144       DO jj = 1,jpj 
    193145         DO ji = 1,jpi 
     
    196148C ------------------------------------ 
    197149C 
    198            alpco2 = chemc(ji,jj,1) 
    199            fld = atcco2*tmask(ji,jj,1)*kgwanin(ji,jj) 
    200            flu = h2co3(ji,jj)/alpco2 
    201      &        *tmask(ji,jj,1)*kgwanin(ji,jj) 
    202  
    203            tra(ji,jj,1,jpdic)= tra(ji,jj,1,jpdic)+(fld-flu) 
    204      &        /1000./fse3t(ji,jj,1) 
     150          fld = atcco2*tmask(ji,jj,1)*chemc(ji,jj,3)*kgco2(ji,jj) 
     151          flu = h2co3(ji,jj)*tmask(ji,jj,1)*kgco2(ji,jj) 
     152          tra(ji,jj,1,jpdic)= tra(ji,jj,1,jpdic)+(fld-flu) 
     153     &      /fse3t(ji,jj,1) 
    205154C 
    206155C Compute O2 flux  
     
    208157C 
    209158          oxy16 = trn(ji,jj,1,jpoxy) 
    210           flu16 = (-fugaci(ji,jj)+1)*fse3t(ji,jj,1) 
    211      &            *(atcox*chemc(ji,jj,3)-oxy16)* 
    212      &            tmask(ji,jj,1)/rfact  
     159          flu16 = (atcox*chemc(ji,jj,2)-oxy16)*kgo2(ji,jj) 
    213160          tra(ji,jj,1,jpoxy) = tra(ji,jj,1,jpoxy)+flu16 
    214      &            /fse3t(ji,jj,1) 
    215   
     161     &      /fse3t(ji,jj,1) 
    216162C 
    217163C Save diagnostics 
     
    219165C 
    220166#    if defined key_trc_diaadd 
    221           trc2d(ji,jj,1) = (fld-flu) 
     167          trc2d(ji,jj,1) = (fld-flu)*1000. 
    222168          trc2d(ji,jj,2) = flu16*1000. 
    223           trc2d(ji,jj,3) = kgwanin(ji,jj) 
    224           trc2d(ji,jj,4) = (fld-flu)/(kgwanin(ji,jj)+1.E-15) 
     169          trc2d(ji,jj,3) = kgco2(ji,jj) 
     170          trc2d(ji,jj,4) = atcco2-h2co3(ji,jj)/(chemc(ji,jj,1)+rtrn) 
    225171#    endif 
    226172C 
  • trunk/NEMO/TOP_SRC/SMS/p4zint.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 p4zint(kt) 
     
    4743      INTEGER nspyr,nvit1t,nvit2t 
    4844      REAL zpdtan, zman, zpdtmo, zdemi 
    49       REAL zt 
     45      REAL zt, zdum 
    5046C 
    5147C 
     
    8278 
    8379         Tgfunc(:,:,:) = exp(0.063913*tn(:,:,:)) 
     80         Tgfunc2(:,:,:) = exp(0.07608*tn(:,:,:)) 
    8481C 
    8582C      Computation of the silicon dependant half saturation 
     
    8784C       --------------------------------------------------- 
    8885C 
    89         do ji=1,jpi 
    90           do jj=1,jpj 
    91               xksimax(ji,jj)= 
    92      &          max(xksimax(ji,jj),(1.+7.*trn(ji,jj,1,jpsil)**2 
    93      &          /(xksi2*xksi2+trn(ji,jj,1,jpsil)**2))*1E-6) 
    94           end do 
    95         end do 
     86        DO ji=1,jpi 
     87          DO jj=1,jpj 
     88          zdum=trn(ji,jj,1,jpsil)**2 
     89          xksimax(ji,jj) = max(xksimax(ji,jj),(1.+7.*zdum 
     90     &      /(xksi2*xksi2*25.+zdum))*1E-6) 
     91          END DO 
     92        END DO 
    9693C 
    97         if (mod(kt,nspyr).eq.0) then 
     94        IF (nday_year.EQ.365) THEN 
    9895           xksi=xksimax 
    9996           xksimax=0. 
    100         endif 
     97        ENDIF 
    10198C 
    10299#endif 
  • trunk/NEMO/TOP_SRC/SMS/p4zlys.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 p4zlys 
     
    4339      INTEGER ji, jj, jk, jn 
    4440      REAL zbot, zalk, zdic, zph, remco3, ah2 
    45       REAL delco3, excess, dispot 
     41      REAL delco3, excess, dispot, zfact, zalka 
    4642C 
    4743C 
     
    5450C ------------------------------------------- 
    5551C 
    56         DO jk = 1,jpkm1 
    57           DO jj=1,jpj 
    58             DO ji = 1, jpi 
     52      DO jk = 1,jpkm1 
     53        DO jj=1,jpj 
     54          DO ji = 1, jpi 
    5955C 
    6056C* 1.3  SET DUMMY VARIABLE FOR TOTAL BORATE 
    6157C ----------------------------------------- 
    6258C 
    63               zbot = borat(ji,jj,jk) 
     59        zbot = borat(ji,jj,jk) 
     60        zfact=rhop(ji,jj,jk)/1000.+rtrn 
    6461C 
    6562C* 1.4  SET DUMMY VARIABLE FOR [H+] 
    6663C --------------------------------- 
    6764C 
    68               zph = hi(ji,jj,jk)*tmask(ji,jj,jk) 
    69      &           +(1.-tmask(ji,jj,jk))*1.e-9 
     65        zph = hi(ji,jj,jk)*tmask(ji,jj,jk)/zfact 
     66     &    +(1.-tmask(ji,jj,jk))*1.e-9 
    7067C 
    7168C* 1.5  SET DUMMY VARIABLE FOR [SUM(CO2)]GIVEN  
    7269C ------------------------------------------- 
    7370C 
    74               zdic = trn(ji,jj,jk,jpdic)  
     71        zdic=trn(ji,jj,jk,jpdic)/zfact 
     72        zalka=trn(ji,jj,jk,jptal)/zfact 
    7573C 
    7674C* 1.6 CALCULATE [ALK]([CO3--], [HCO3-]) 
    7775C ------------------------------------ 
    7876C 
    79               zalk=trn(ji,jj,jk,jptal)- 
    80      &            (akw3(ji,jj,jk)/zph-zph 
    81      &            +zbot/(1.+zph/akb3(ji,jj,jk))) 
     77        zalk=zalka-(akw3(ji,jj,jk)/zph-zph 
     78     &     +zbot/(1.+zph/akb3(ji,jj,jk))) 
    8279C 
    8380C* 2.10 CALCULATE [H+] and [CO3--] 
    8481C ----------------------------------------- 
    8582C 
    86               ah2=sqrt((zdic-zalk)*(zdic-zalk)+ 
    87      &          4.*(zalk*ak23(ji,jj,jk)/ak13(ji,jj,jk)) 
    88      &          *(2*zdic-zalk)) 
     83        ah2=sqrt((zdic-zalk)*(zdic-zalk)+ 
     84     &     4.*(zalk*ak23(ji,jj,jk)/ak13(ji,jj,jk)) 
     85     &     *(2*zdic-zalk)) 
    8986C 
    90               ah2=0.5*ak13(ji,jj,jk)/zalk*((zdic-zalk)+ah2) 
    91               co3(ji,jj,jk) = zalk/(2.+ah2/ak23(ji,jj,jk)) 
     87        ah2=0.5*ak13(ji,jj,jk)/zalk*((zdic-zalk)+ah2) 
     88        co3(ji,jj,jk) = zalk/(2.+ah2/ak23(ji,jj,jk))*zfact 
     89 
     90        hi(ji,jj,jk)  = ah2*zfact 
    9291C 
    93               hi(ji,jj,jk)  = ah2 
     92          ENDDO 
     93        ENDDO 
     94      END DO 
    9495C 
    95             ENDDO 
    96           ENDDO 
    97         END DO 
    9896      END DO  
    9997C 
     
    116114C ------------------------------------------ 
    117115C 
    118             excess = max(0.,delco3) 
     116            excess = max(0.,-delco3) 
    119117C 
    120118C* 2.3  AMOUNT CACO3 (12C) THAT RE-ENTERS SOLUTION 
     
    123121C -------------------------------------------------------------- 
    124122C 
    125             dispot = trn(ji,jj,jk,jpcal)*min(1., 
    126      &          (1.-delco3/(dispo0+abs(delco3))) ) 
     123            dispot = trn(ji,jj,jk,jpcal)* 
     124     &        excess/(dispo0+excess) 
    127125#    if defined key_off_degrad 
    128      &          *facvol(ji,jj,jk) 
     126     &        *facvol(ji,jj,jk) 
    129127#    endif 
    130128C 
     
    135133            remco3=dispot/rmoss 
    136134            co3(ji,jj,jk) = co3(ji,jj,jk)+ 
    137      &          remco3*rfact 
     135     &        remco3*rfact 
    138136            tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal)+ 
    139      &          2.*remco3 
     137     &        2.*remco3 
    140138            tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal)- 
    141      &          remco3 
     139     &        remco3 
    142140            tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic)+ 
    143      &          remco3 
     141     &        remco3 
    144142C 
    145143          ENDDO 
     
    148146 
    149147#    if defined key_trc_dia3d 
    150          trc3d(:,:,:,1) = hi(:,:,:) 
     148         trc3d(:,:,:,1) = rhop(:,:,:) 
    151149         trc3d(:,:,:,2) = co3(:,:,:) 
    152150         trc3d(:,:,:,3) = aksp(:,:,:)/calcon 
  • trunk/NEMO/TOP_SRC/SMS/p4zmeso.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 p4zmeso 
     
    5147      INTEGER ji, jj, jk 
    5248      REAL compadi,compaph,compapoc,compaz 
    53       REAL compam,zdenom,graze2 
     49      REAL zfact,zstep,compam,zdenom,graze2 
     50C 
     51C 
     52C 
     53C     Time step duration for biology 
     54C     ------------------------------ 
     55C 
     56        zstep=rfact2/rjjss 
    5457C 
    5558        DO jk = 1,jpkm1 
     
    5861C 
    5962        compam=max((trn(ji,jj,jk,jpmes)-1.E-9),0.) 
     63        zfact=zstep*tgfunc(ji,jj,jk)*compam 
     64#    if defined key_off_degrad 
     65     &    *facvol(ji,jj,jk) 
     66#    endif 
    6067C 
    6168C     Respiration rates of both zooplankton 
    6269C     ------------------------------------- 
    6370C 
    64         respz2(ji,jj,jk) = resrat2*rfact2/rjjss 
     71        respz2(ji,jj,jk) = resrat2*zfact 
     72     &    *(1.+3.*nitrfac(ji,jj,jk)) 
    6573     &    *trn(ji,jj,jk,jpmes)/(xkmort+trn(ji,jj,jk,jpmes)) 
    66      &    *compam*tmask(ji,jj,jk) 
    67 #    if defined key_off_degrad 
    68      &    *facvol(ji,jj,jk) 
    69 #    endif 
    7074C 
    7175C     Zooplankton mortality. A square function has been selected with 
     
    7478C     --------------------------------------------------------------- 
    7579C 
    76         tortz2(ji,jj,jk) = mzrat2*1E6*rfact2/rjjss*tgfunc(ji,jj,jk) 
    77      &    *trn(ji,jj,jk,jpmes)*compam*tmask(ji,jj,jk) 
    78 #    if defined key_off_degrad 
    79      &    *facvol(ji,jj,jk) 
    80 #    endif 
     80        tortz2(ji,jj,jk) = mzrat2*1E6*zfact*trn(ji,jj,jk,jpmes) 
    8181C 
    8282            END DO 
     
    8989C 
    9090        compadi = max((trn(ji,jj,jk,jpdia)-1E-8),0.) 
    91         compaz = max((trn(ji,jj,jk,jpzoo)-1.E-9),0.) 
    92         compaph = max((trn(ji,jj,jk,jpphy)-1E-8),0.) 
    93         compapoc=max((trn(ji,jj,jk,jppoc)-1E-9),0.) 
     91        compaz = max((trn(ji,jj,jk,jpzoo)-1.E-8),0.) 
     92        compaph = max((trn(ji,jj,jk,jpphy)-2E-7),0.) 
     93        compapoc=max((trn(ji,jj,jk,jppoc)-1E-8),0.) 
    9494C 
    9595C     Microzooplankton grazing 
    9696C     ------------------------ 
    9797C 
    98         graze2 = grazrat2/rjjss*rfact2*tmask(ji,jj,jk) 
    99      &    *Tgfunc(ji,jj,jk) 
    100 #    if defined key_off_degrad 
    101      &    *facvol(ji,jj,jk) 
    102 #    endif 
    103  
    10498        zdenom=1./(xkgraz2+xprefc*trn(ji,jj,jk,jpdia) 
    10599     &    +xprefz*trn(ji,jj,jk,jpzoo) 
     
    107101     &    +xprefpoc*trn(ji,jj,jk,jppoc)) 
    108102 
    109         grazd(ji,jj,jk) = graze2*xprefc*compadi*zdenom 
     103        graze2 = grazrat2*zstep*Tgfunc2(ji,jj,jk)*zdenom 
    110104     &    *trn(ji,jj,jk,jpmes) 
     105#    if defined key_off_degrad 
     106     &    *facvol(ji,jj,jk) 
     107#    endif 
    111108 
    112         grazz(ji,jj,jk) = graze2*xprefz*compaz*zdenom 
    113      &    *trn(ji,jj,jk,jpmes) 
    114  
    115         grazn(ji,jj,jk) = graze2*xprefp*compaph*zdenom 
    116      &    *trn(ji,jj,jk,jpmes) 
    117  
    118         grazpoc(ji,jj,jk) = graze2*xprefpoc*compapoc*zdenom 
    119      &    *trn(ji,jj,jk,jpmes) 
     109        grazd(ji,jj,jk) = graze2*xprefc*compadi 
     110        grazz(ji,jj,jk) = graze2*xprefz*compaz 
     111        grazn(ji,jj,jk) = graze2*xprefp*compaph 
     112        grazpoc(ji,jj,jk) = graze2*xprefpoc*compapoc 
    120113 
    121114        graznf(ji,jj,jk) = grazn(ji,jj,jk) 
     
    148141C    ---------------------------------- 
    149142C 
    150         grazffe(ji,jj,jk) = 1.3E-2/5.6E-7*rfact2/rjjss 
    151      &    *wsbio4(ji,jj,jk)*trn(ji,jj,jk,jpgoc)*trn(ji,jj,jk,jpmes) 
     143        grazffe(ji,jj,jk) = 5E3*zstep*wsbio4(ji,jj,jk) 
     144     &    *tgfunc2(ji,jj,jk)*trn(ji,jj,jk,jpgoc)*trn(ji,jj,jk,jpmes) 
    152145#    if defined key_off_degrad 
    153146     &    *facvol(ji,jj,jk) 
  • 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) 
  • trunk/NEMO/TOP_SRC/SMS/p4znano.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 p4znano 
     
    4642CC ================== 
    4743      INTEGER ji, jj, jk 
    48       REAL compaph 
     44      REAL zfact,zstep,compaph 
     45C 
     46C      Time step duration for biology 
     47C      ------------------------------ 
     48C 
     49        zstep=rfact2/rjjss 
    4950C 
    5051        DO jk = 1,jpkm1 
     
    5354C 
    5455        compaph = max((trn(ji,jj,jk,jpphy)-1E-8),0.) 
     56        zfact=1./(trn(ji,jj,jk,jpphy)+rtrn) 
    5557C 
    5658C     Squared mortality of Phyto similar to a sedimentation term during 
     
    5860C     ----------------------------------------------------------------- 
    5961C 
    60         respp(ji,jj,jk) = wchl*1e6*rfact2/rjjss*zdiss(ji,jj,jk) 
    61      &    *compaph*trn(ji,jj,jk,jpphy)*tmask(ji,jj,jk) 
     62        respp(ji,jj,jk) = wchl*1e6*zstep*zdiss(ji,jj,jk) 
     63     &    *compaph*trn(ji,jj,jk,jpphy) 
    6264#    if defined key_off_degrad 
    6365     &    *facvol(ji,jj,jk) 
    6466#    endif 
    65  
     67                                                                                
    6668        respnf(ji,jj,jk) = respp(ji,jj,jk) 
    67      &    *trn(ji,jj,jk,jpnfe)/(trn(ji,jj,jk,jpphy)+rtrn) 
    68  
     69     &    *trn(ji,jj,jk,jpnfe)*zfact 
     70                                                                                
    6971        respnch(ji,jj,jk) = respp(ji,jj,jk) 
    70      &    *trn(ji,jj,jk,jpnch)/(trn(ji,jj,jk,jpphy)+rtrn) 
    71  
     72     &    *trn(ji,jj,jk,jpnch)*zfact 
     73C 
    7274C     Phytoplankton mortality. This mortality loss is slightly 
    7375C     increased when nutrients are limiting phytoplankton growth 
     
    7577C     ---------------------------------------------------------- 
    7678C 
    77         tortp(ji,jj,jk) = mprat*rfact2/rjjss*trn(ji,jj,jk,jpphy) 
    78      $    /(xkmort+trn(ji,jj,jk,jpphy))*compaph*tmask(ji,jj,jk) 
     79        tortp(ji,jj,jk) = mprat*zstep*trn(ji,jj,jk,jpphy) 
     80     $    /(xkmort+trn(ji,jj,jk,jpphy))*compaph 
    7981#    if defined key_off_degrad 
    8082     &    *facvol(ji,jj,jk) 
    8183#    endif 
    82  
     84                                                                                
    8385        tortnf(ji,jj,jk)=tortp(ji,jj,jk) 
    84      &    *trn(ji,jj,jk,jpnfe)/(trn(ji,jj,jk,jpphy)+rtrn) 
    85  
     86     &    *trn(ji,jj,jk,jpnfe)*zfact 
     87                                                                                
    8688        tortnch(ji,jj,jk)=tortp(ji,jj,jk) 
    87      &    *trn(ji,jj,jk,jpnch)/(trn(ji,jj,jk,jpphy)+rtrn) 
     89     &    *trn(ji,jj,jk,jpnch)*zfact 
    8890C 
    8991            END DO 
  • trunk/NEMO/TOP_SRC/SMS/p4zopt.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 p4zopt 
     
    84CCC--------------------------------------------------------------------- 
    95CCC 
    10 CCC                       ROUTINE p4zopt 
    11 CCC                     ***************** 
     6CCC             ROUTINE p4zopt : PISCES MODEL 
     7CCC             ***************************** 
    128CCC 
    139CCC  PURPOSE : 
     
    1612CCC         depending on the depth and the chlorophyll concentration 
    1713CCC 
    18 CC   METHOD : 
    19 CC   ------- 
    20 CC       
    21 CC 
    2214CC   INPUT : 
    2315CC   ----- 
     
    3123CC   ------ 
    3224CC 
    33 CC   WORKSPACE : 
    34 CC   --------- 
    35 CC 
    36 CC   EXTERNAL : 
    37 CC   -------- 
    38 CC 
    3925CC   MODIFICATIONS: 
    4026CC   -------------- 
    41 CC      original  : O. Aumont (2002) 
     27CC      original  : O. Aumont (2004) 
    4228CC---------------------------------------------------------------------- 
    4329CC parameters and commons 
    4430CC ====================== 
     31CDIR$ NOLIST 
    4532      USE oce_trc 
    4633      USE trp_trc 
    4734      USE sms 
     35      IMPLICIT NONE 
    4836#include "domzgr_substitute.h90" 
     37CDIR$ LIST 
    4938CC---------------------------------------------------------------------- 
    5039CC local declarations 
    5140CC ================== 
    5241      INTEGER ji, jj, jk, mrgb 
    53       REAL xchl,ekg,ekr,ekb,xlim1,xlim2,xlim3,xlim4 
     42      REAL xchl,ekg(jpi,jpj,jpk),ekr(jpi,jpj,jpk) 
     43      REAL ekb(jpi,jpj,jpk) 
    5444      REAL parlux,e1(jpi,jpj,jpk),e2(jpi,jpj,jpk),e3(jpi,jpj,jpk) 
    5545      REAL zdepmoy(jpi,jpj) 
    56       REAL e3lum(jpi,jpj,jpk),e4lum(jpi,jpj,jpk) 
    57       REAL e5lum(jpi,jpj,jpk),etmp(jpi,jpj) 
    58       REAL e6lum(jpi,jpj,jpk) 
    59  
     46      REAL etmp(jpi,jpj) 
     47      REAL zrlight,zblight,zglight 
     48C 
    6049C     Initialisation of variables used to compute PAR 
    6150C     ----------------------------------------------- 
     
    6453        e2     = 0. 
    6554        e3     = 0. 
    66         e3lum  = 0. 
    67         e4lum  = 0. 
    68         e5lum  = 0. 
    69         e6lum  = 0. 
    7055        etot   = 0. 
    71         etot3  = 0. 
    7256        parlux = 0.43/3. 
     57 
     58        DO jk=1,jpkm1 
     59          DO jj=1,jpj 
     60            DO ji=1,jpi 
    7361C 
    74         DO jj = 1,jpj 
    75           DO ji = 1,jpi 
     62C     Separation in three light bands: red, green, blue 
     63C     ------------------------------------------------- 
    7664C 
    77 C  Computation of a variable par fraction 
    78 C 
    79         e1(ji,jj,1)=parlux*qsr(ji,jj) 
    80         e2(ji,jj,1)=parlux*qsr(ji,jj) 
    81         e3(ji,jj,1)=parlux*qsr(ji,jj) 
    82         e3lum(ji,jj,1)=parlux*qsr(ji,jj) 
    83         e4lum(ji,jj,1)=parlux*qsr(ji,jj) 
    84         e5lum(ji,jj,1)=parlux*qsr(ji,jj) 
    85         e6lum(ji,jj,1)=1.-3.*parlux*qsr(ji,jj) 
    86 C 
    87           END DO 
    88         END DO 
    89  
    90 C 
    91 C  Tuning of the iron concentration to a minimum 
    92 C  level that is set to the detection limit 
    93 C  ------------------------------------- 
    94 C 
    95         trn(:,:,:,jpfer)=max(trn(:,:,:,jpfer),1.E-11) 
    96 C 
    97         DO jk = 1,jpkm1 
    98           DO jj = 1,jpj 
    99             DO ji = 1,jpi 
    100 C 
    101 C     Separation in two light bands: red and green 
    102 C     -------------------------------------------- 
    103 C     
    10465        xchl=(trn(ji,jj,jk,jpnch)+trn(ji,jj,jk,jpdch)+rtrn)*1.E6 
    105         xchl=max(0.01,xchl) 
     66        xchl=max(0.03,xchl) 
    10667        xchl=min(10.,xchl) 
    107  
     68                                                                                 
    10869        mrgb = int(41+20.*log10(xchl)+rtrn) 
    109  
    110         ekb=xkrgb(1,mrgb) 
    111         ekg=xkrgb(2,mrgb) 
    112         ekr=xkrgb(3,mrgb) 
    113  
    114         e1(ji,jj,jk+1) = e1(ji,jj,jk)*exp(-ekb*fse3t(ji,jj,jk)/2.) 
    115         e2(ji,jj,jk+1) = e2(ji,jj,jk)*exp(-ekg*fse3t(ji,jj,jk)/2.) 
    116         e3(ji,jj,jk+1) = e3(ji,jj,jk)*exp(-ekr*fse3t(ji,jj,jk)/2.) 
    117  
    118  
    119         etot(ji,jj,jk) = e1(ji,jj,jk+1)+e2(ji,jj,jk+1)+e3(ji,jj,jk+1) 
    120 C     
    121 C     Computation of irradiance below level T 
    122 C     --------------------------------------- 
    123 C     
    124         e1(ji,jj,jk+1) = e1(ji,jj,jk+1)*exp(-ekb*fse3t(ji,jj,jk)/2.) 
    125         e2(ji,jj,jk+1) = e2(ji,jj,jk+1)*exp(-ekg*fse3t(ji,jj,jk)/2.) 
    126         e3(ji,jj,jk+1) = e3(ji,jj,jk+1)*exp(-ekr*fse3t(ji,jj,jk)/2.) 
    127  
    128         e3lum(ji,jj,jk+1)=e3lum(ji,jj,jk)*exp(-ekb*fse3t(ji,jj,jk)) 
    129         e4lum(ji,jj,jk+1)=e4lum(ji,jj,jk)*exp(-ekg*fse3t(ji,jj,jk)) 
    130         e5lum(ji,jj,jk+1)=e5lum(ji,jj,jk)*exp(-ekr*fse3t(ji,jj,jk)) 
    131         e6lum(ji,jj,jk+1)=e6lum(ji,jj,jk)*exp(-fse3t(ji,jj,jk)/xsi1) 
    132 C 
    133             END DO 
    134           END DO 
    135         END DO 
    136  
    137 C 
    138 C  modif pour le couplage avec la physique 
    139 C 
    140         etot3=e3lum+e4lum+e5lum+e6lum 
    141 C 
    142         DO jk = 1,jpkm1 
    143           DO jj = 1,jpj 
    144             DO ji = 1,jpi 
    145 C     
    146 C      Michaelis-Menten Limitation term for nutrients 
    147 C      Small flagellates 
    148 C      ----------------------------------------------- 
    149 C 
    150         xnanono3(ji,jj,jk)=trn(ji,jj,jk,jpno3)*concnnh4 
    151      &      /(conc0*concnnh4+concnnh4*trn(ji,jj,jk,jpno3)+ 
    152      &        conc0*trn(ji,jj,jk,jpnh4)) 
    153         xnanonh4(ji,jj,jk)=trn(ji,jj,jk,jpnh4)*conc0 
    154      &      /(conc0*concnnh4+concnnh4*trn(ji,jj,jk,jpno3)+ 
    155      &        conc0*trn(ji,jj,jk,jpnh4)) 
    156         xlim1=xnanono3(ji,jj,jk)+xnanonh4(ji,jj,jk) 
    157         xlim2=trn(ji,jj,jk,jppo4)/(trn(ji,jj,jk,jppo4)+conc0) 
    158         xlim3=trn(ji,jj,jk,jpfer)/(trn(ji,jj,jk,jpfer)+conc2) 
    159         xlimphy(ji,jj,jk)=min(xlim1,xlim2,xlim3) 
    160         xlim4=trn(ji,jj,jk,jpdoc)/(trn(ji,jj,jk,jpdoc)+xkdoc2) 
    161         xlimbac(ji,jj,jk)=min(xlim1,xlim2,xlim3,xlim4) 
     70                                                                                 
     71        ekb(ji,jj,jk)=xkrgb(1,mrgb) 
     72        ekg(ji,jj,jk)=xkrgb(2,mrgb) 
     73        ekr(ji,jj,jk)=xkrgb(3,mrgb) 
    16274C 
    16375            END DO 
     
    16577        END DO 
    16678C 
    167         DO jk = 1,jpkm1 
    16879          DO jj = 1,jpj 
    16980            DO ji = 1,jpi 
    170 C     Diatoms 
    171 C     ------- 
    172         xdiatno3(ji,jj,jk)=trn(ji,jj,jk,jpno3)*concdnh4 
    173      &      /(conc1*concdnh4+concdnh4*trn(ji,jj,jk,jpno3)+ 
    174      &        conc1*trn(ji,jj,jk,jpnh4)) 
    175         xdiatnh4(ji,jj,jk)=trn(ji,jj,jk,jpnh4)*conc1 
    176      &      /(conc1*concdnh4+concdnh4*trn(ji,jj,jk,jpno3)+ 
    177      &        conc1*trn(ji,jj,jk,jpnh4)) 
    178  
    179         xlim1=xdiatno3(ji,jj,jk)+xdiatnh4(ji,jj,jk) 
    180         xlim2=trn(ji,jj,jk,jppo4)/(trn(ji,jj,jk,jppo4)+conc1) 
    181         xlim3=trn(ji,jj,jk,jpsil)/(trn(ji,jj,jk,jpsil)+xksi(ji,jj)) 
    182         xlim4=trn(ji,jj,jk,jpfer)/(trn(ji,jj,jk,jpfer)+conc3) 
    183         xlimdia(ji,jj,jk)=min(xlim1,xlim2,xlim3,xlim4) 
     81C 
     82C     Separation in three light bands: red, green, blue 
     83C     ------------------------------------------------- 
     84C 
     85        zblight=0.5*ekb(ji,jj,1)*fse3t(ji,jj,1) 
     86        zglight=0.5*ekg(ji,jj,1)*fse3t(ji,jj,1) 
     87        zrlight=0.5*ekr(ji,jj,1)*fse3t(ji,jj,1) 
     88C 
     89        e1(ji,jj,1) = parlux*qsr(ji,jj)*exp(-zblight) 
     90        e2(ji,jj,1) = parlux*qsr(ji,jj)*exp(-zglight) 
     91        e3(ji,jj,1) = parlux*qsr(ji,jj)*exp(-zrlight) 
     92C 
     93            END DO 
     94          END DO 
     95                                                                                 
     96                                                                                 
     97        DO jk = 2,jpkm1 
     98          DO jj = 1,jpj 
     99            DO ji = 1,jpi 
     100C 
     101C     Separation in three light bands: red, green, blue 
     102C     ------------------------------------------------- 
     103C 
     104        zblight=0.5*(ekb(ji,jj,jk-1)*fse3t(ji,jj,jk-1) 
     105     &    +ekb(ji,jj,jk)*fse3t(ji,jj,jk)) 
     106        zglight=0.5*(ekg(ji,jj,jk-1)*fse3t(ji,jj,jk-1) 
     107     &    +ekg(ji,jj,jk)*fse3t(ji,jj,jk)) 
     108        zrlight=0.5*(ekr(ji,jj,jk-1)*fse3t(ji,jj,jk-1) 
     109     &    +ekr(ji,jj,jk)*fse3t(ji,jj,jk)) 
     110C 
     111        e1(ji,jj,jk) = e1(ji,jj,jk-1)*exp(-zblight) 
     112        e2(ji,jj,jk) = e2(ji,jj,jk-1)*exp(-zglight) 
     113        e3(ji,jj,jk) = e3(ji,jj,jk-1)*exp(-zrlight) 
    184114C 
    185115            END DO 
    186116          END DO 
    187117        END DO 
    188 C     
    189 C     Initialisation of the euphotic depth 
    190 C     ------------------------------------ 
    191 C     
    192         zmeu(:,:)=fsdept(:,:,jkopt+1) 
     118C 
     119        etot(:,:,:) = e1(:,:,:)+e2(:,:,:)+e3(:,:,:) 
    193120C     
    194121C     Computation of the euphotic depth 
    195122C     --------------------------------- 
    196123C     
    197         DO jk = 2,jkopt 
     124        zmeu(:,:) = 300. 
     125 
     126        DO jk = 2,jpkm1 
    198127          DO jj = 1,jpj 
    199128            DO ji = 1,jpi 
     
    204133          END DO 
    205134        END DO 
     135C 
     136        zmeu(:,:)=min(300.,zmeu(:,:)) 
    206137C 
    207138C    Computation of the mean light over the mixed layer depth 
     
    215146          DO jj = 1,jpj 
    216147            DO ji = 1,jpi 
    217           etmp(ji,jj) = etmp(ji,jj)+etot(ji,jj,jk) 
    218      $            *fse3t(ji,jj,jk)* 
    219      $            (0.5+sign(0.5,(hmld(ji,jj) 
    220      $            -fsdept(ji,jj,jk)))) 
    221           zdepmoy(ji,jj)=zdepmoy(ji,jj)+ 
    222      $        fse3t(ji,jj,jk)* 
    223      $        (0.5+sign(0.5,(hmld(ji,jj) 
    224      $        -fsdept(ji,jj,jk)))) 
     148         if (fsdepw(ji,jj,jk+1).le.hmld(ji,jj)) then 
     149       etmp(ji,jj) = etmp(ji,jj)+etot(ji,jj,jk)*fse3t(ji,jj,jk) 
     150       zdepmoy(ji,jj)=zdepmoy(ji,jj)+fse3t(ji,jj,jk) 
     151         endif 
    225152            END DO 
    226153          END DO 
    227154        END DO 
    228155 
    229         emoy=etot 
     156        emoy(:,:,:) = etot(:,:,:) 
    230157 
    231         DO jk=1,jpkm1 
     158        DO jk = 1,jpkm1 
    232159          DO jj = 1,jpj 
    233160            DO ji = 1,jpi 
    234         IF (fsdept(ji,jj,jk).LE.hmld(ji,jj)) THEN 
     161        IF (fsdepw(ji,jj,jk+1).LE.hmld(ji,jj)) THEN 
    235162          emoy(ji,jj,jk) = etmp(ji,jj)/(zdepmoy(ji,jj)+rtrn) 
    236163        ENDIF 
  • trunk/NEMO/TOP_SRC/SMS/p4zprg.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 p4zprg(kt) 
     
    5248CC local declarations 
    5349CC ================== 
     50 
    5451      INTEGER kt 
     52#if defined key_passivetrc && defined key_trc_pisces 
    5553      INTEGER jnt, jn 
    5654 
    57 #if defined key_passivetrc && defined key_trc_pisces 
    5855C 
    5956C this part is without macrotasking coding 
    6057C 
     58C Call an intermediate routine that in turns, calls chemistry 
     59C and another routine on a daily basis 
     60C ----------------------------------------------------------- 
    6161C 
    62 C Compute chemical variables 
    63 C -------------------------- 
    64 C 
     62      CALL p4zslow(kt) 
    6563 
    66           CALL p4zche 
    67 C...................................................................... 
    68 C 
    69 C Interpolate chemical variables 
    70 C ------------------------------ 
    71 C 
    72           CALL p4zint(kt) 
    73 C 
    74 C...................................................................... 
    75 C 
    76 C Compute CaCO3 saturation 
    77 C ------------------------ 
    78 C 
    79           CALL p4zlys 
    8064C...................................................................... 
    8165C 
     
    8569       do jnt=1,nrdttrc 
    8670C 
    87           CALL p4zbio 
     71         CALL p4zbio 
     72 
    8873C 
    8974C...................................................................... 
     
    9378C 
    9479         CALL p4zsed 
     80 
    9581C 
    9682          trb=trn 
    97         end DO 
    98  
     83        END DO 
     84C 
     85C...................................................................... 
     86C 
     87C Compute CaCO3 saturation 
     88C ------------------------ 
     89C 
     90      CALL p4zlys 
    9991 
    10092C 
     
    10698      CALL p4zflx 
    10799 
     100 
    108101      DO jn=1 , jptra 
    109102        CALL lbc_lnk(trn(:,:,:,jn), 'T', 1. ) 
     
    111104        CALL lbc_lnk(tra(:,:,:,jn), 'T', 1. ) 
    112105      END DO 
     106 
    113107C 
    114108C...................................................................... 
  • trunk/NEMO/TOP_SRC/SMS/p4zprod.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 p4zprod 
     
    4238      USE sms 
    4339      IMPLICIT NONE 
     40#include "domzgr_substitute.h90" 
    4441CDIR$ LIST 
    4542CC---------------------------------------------------------------------- 
     
    4845      INTEGER ji, jj, jk 
    4946      REAL silfac,pislopen(jpi,jpj,jpk),pislope2n(jpi,jpj,jpk) 
    50       REAL zmixnano,zmixdiat,zfact 
     47      REAL zmixnano(jpi,jpj),zmixdiat(jpi,jpj),zfact 
    5148      REAL prdiachl,prbiochl,silim,ztn,zadap,zadap2 
    5249      REAL ysopt(jpi,jpj,jpk),pislopead(jpi,jpj,jpk) 
    5350      REAL prdia(jpi,jpj,jpk),prbio(jpi,jpj,jpk) 
    5451      REAL etot2(jpi,jpj,jpk),pislopead2(jpi,jpj,jpk) 
    55       REAL silfac2,siborn,zprod 
    56 C  
     52      REAL xlim,silfac2,siborn,zprod,zprod2 
     53      REAL zmxltst,zmxlday 
     54C 
    5755C     Computation of the optimal production 
    5856C     ------------------------------------- 
     
    6967        call p4zday  
    7068 
    71         DO  jk = 1,jkopt 
    72           DO  jj = 1,jpj 
    73             DO  ji = 1,jpi 
     69        DO jk = 1,jpkm1 
     70          DO jj = 1,jpj 
     71            DO ji = 1,jpi 
    7472C 
    7573C      Computation of the P-I slope for nanos and diatoms 
     
    7775C 
    7876        ztn=max(0.,tn(ji,jj,jk)-15.) 
    79         zadap=2.+3.*ztn/(2.+ztn) 
    80         zadap2=2. 
     77        zadap=1.+2.*ztn/(2.+ztn) 
     78        zadap2=1. 
    8179 
    8280        zfact=exp(-0.21*emoy(ji,jj,jk)) 
     
    9795        END DO 
    9896 
    99         DO  jk = 1,jkopt 
     97        DO  jk = 1,jpkm1 
    10098          DO  jj = 1,jpj 
    10199            DO  ji = 1,jpi 
     
    113111        END DO 
    114112 
    115         DO  jk = 1,jkopt 
     113        DO  jk = 1,jpkm1 
    116114          DO  jj = 1,jpj 
    117115            DO  ji = 1,jpi 
     
    124122c    (silpot2) 
    125123C 
    126         silim=min((1.-exp(-etot(ji,jj,jk)*pislope2n(ji,jj,jk))), 
    127      &    trn(ji,jj,jk,jpfer)/(conc3+trn(ji,jj,jk,jpfer)), 
    128      &    trn(ji,jj,jk,jpno3)/(conc1+trn(ji,jj,jk,jpno3)), 
    129      &    trn(ji,jj,jk,jppo4)/(conc1+trn(ji,jj,jk,jppo4))) 
     124C 
     125        xlim=xdiatno3(ji,jj,jk)+xdiatnh4(ji,jj,jk) 
     126C 
     127        silim=min(prdia(ji,jj,jk)/(rtrn+prmax(ji,jj,jk)), 
     128     &    trn(ji,jj,jk,jpfer)/(concdfe(ji,jj,jk)+trn(ji,jj,jk,jpfer)), 
     129     &    trn(ji,jj,jk,jppo4)/(concdnh4+trn(ji,jj,jk,jppo4)), 
     130     &    xlim) 
    130131        silfac=5.4*exp(-4.23*silim)+1.13 
    131132        siborn=max(0.,(trn(ji,jj,jk,jpsil)-15.E-6)) 
    132         silfac2=1.+2.*siborn/(siborn+xksi2) 
    133         silfac=min(6.53,silfac*silfac2) 
     133        silfac2=1.+3.*siborn/(siborn+xksi2) 
     134        silfac=min(7.6,silfac*silfac2) 
    134135C 
    135136        ysopt(ji,jj,jk)=grosip*trn(ji,jj,jk,jpsil)/(trn(ji,jj,jk,jpsil) 
    136      $    +xksi1)*silfac*(1.-0.6*cmask(ji,jj,1)) 
    137 C 
    138             END DO 
    139           END DO 
    140         END DO 
    141  
    142         DO  jk = 1,jkopt 
    143           DO  jj = 1,jpj 
    144             DO  ji = 1,jpi 
    145         IF (tmask(ji,jj,jk).NE.0) THEN 
    146 C     
     137     $    +xksi1)*silfac 
     138C 
     139            END DO 
     140          END DO 
     141        END DO 
     142C 
     143C    Computation of the limitation term due to 
     144C    A mixed layer deeper than the euphotic depth 
     145C    -------------------------------------------- 
     146C 
     147        DO jj=1,jpj 
     148          DO ji=1,jpi 
     149         zmxltst=max(0.,hmld(ji,jj)-zmeu(ji,jj)) 
     150         zmxlday=zmxltst**2/rjjss 
     151         zmixnano(ji,jj)=1.-zmxlday/(12.+zmxlday) 
     152         zmixdiat(ji,jj)=1.-zmxlday/(36.+zmxlday) 
     153          END DO 
     154        END DO 
     155                                                                                 
     156        DO  jk = 1,jpkm1 
     157          DO  jj = 1,jpj 
     158            DO  ji = 1,jpi 
     159         if (fsdepw(ji,jj,jk+1).le.hmld(ji,jj)) then 
     160C 
    147161C     Mixed-layer effect on production 
    148162C     -------------------------------- 
    149 C     
    150          zmixnano=max(0.2,(1.-0.8*(hmld(ji,jj)/zmeu(ji,jj)-1.))) 
    151          zmixdiat=max(0.5,(1.-0.5*(hmld(ji,jj)/zmeu(ji,jj)-1.))) 
    152          prbio(ji,jj,jk)=prbio(ji,jj,jk)*min(1.,zmixnano) 
    153          prdia(ji,jj,jk)=prdia(ji,jj,jk)*min(1.,zmixdiat) 
    154 C 
    155         ENDIF 
    156             END DO 
    157           END DO 
    158         END DO 
    159  
    160         DO jk = 1,jkopt 
     163C 
     164         prbio(ji,jj,jk)=prbio(ji,jj,jk)*zmixnano(ji,jj) 
     165         prdia(ji,jj,jk)=prdia(ji,jj,jk)*zmixdiat(ji,jj) 
     166         endif 
     167            END DO 
     168          END DO 
     169        END DO 
     170C 
     171        DO jk = 1,jpkm1 
    161172          DO jj = 1,jpj 
    162173            DO ji = 1,jpi 
     
    172183        END DO 
    173184 
    174         DO jk = 1,jkopt 
     185        DO jk = 1,jpkm1 
    175186          DO jj = 1,jpj 
    176187            DO ji = 1,jpi 
     
    192203     &    *xlimphy(ji,jj,jk) 
    193204 
    194         prorca5(ji,jj,jk) = (15.E-6)**2*zprod/0.033 
     205        zprod2=rjjss*prorca(ji,jj,jk)*prbiochl*trn(ji,jj,jk,jpphy) 
     206     &    *max(0.1,xlimphy(ji,jj,jk)) 
     207 
     208        prorca5(ji,jj,jk) = (fecnm)**2*zprod/chlcnm 
    195209     &    /(pislopead(ji,jj,jk)*etot2(ji,jj,jk)*trn(ji,jj,jk,jpnfe) 
    196210     &    +rtrn) 
    197211 
    198         prorca6(ji,jj,jk) = 0.033*144.*zprod/(pislopead(ji,jj,jk) 
     212        prorca6(ji,jj,jk) = chlcnm*144.*zprod2/(pislopead(ji,jj,jk) 
    199213     &    *etot2(ji,jj,jk)*max(trn(ji,jj,jk,jpnch),1.E-10)+rtrn) 
    200214 
     
    203217        END DO 
    204218 
    205         DO  jk = 1,jkopt 
     219        DO  jk = 1,jpkm1 
    206220          DO  jj = 1,jpj 
    207221            DO  ji = 1,jpi 
     
    221235        prorca3(ji,jj,jk) = prorca2(ji,jj,jk)*ysopt(ji,jj,jk) 
    222236C 
    223         zprod=rjjss*prorca2(ji,jj,jk)*prdiachl*xlimdia(ji,jj,jk) 
     237        zprod=rjjss*prorca2(ji,jj,jk)*prdiachl*trn(ji,jj,jk,jpdia) 
     238     &    *max(0.1,xlimdia(ji,jj,jk)) 
     239 
     240        zprod2=rjjss*prorca2(ji,jj,jk)*prdiachl*xlimdia2(ji,jj,jk) 
    224241     &    *trn(ji,jj,jk,jpdia) 
    225 C 
    226         prorca4(ji,jj,jk) = (20.E-6)**2*zprod/0.05 
     242 
     243C 
     244        prorca4(ji,jj,jk) = (fecdm)**2*zprod2/chlcdm 
    227245     &    /(pislopead2(ji,jj,jk)*etot2(ji,jj,jk)*trn(ji,jj,jk,jpdfe) 
    228246     &    +rtrn) 
    229247C 
    230         prorca7(ji,jj,jk) = 0.05*144.*zprod/(pislopead2(ji,jj,jk) 
     248        prorca7(ji,jj,jk) = chlcdm*144.*zprod/(pislopead2(ji,jj,jk) 
    231249     &    *etot2(ji,jj,jk)*max(trn(ji,jj,jk,jpdch),1.E-10)+rtrn) 
    232250C 
     
    238256      RETURN 
    239257      END 
     258 
  • trunk/NEMO/TOP_SRC/SMS/p4zrem.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 p4zrem 
     
    3935      USE sms 
    4036      IMPLICIT NONE 
     37#include "domzgr_substitute.h90" 
    4138CDIR$ LIST 
    4239CC---------------------------------------------------------------------- 
     
    4643      REAL remip,remik,xlam1b 
    4744      REAL xkeq,xfeequi,siremin 
    48       REAL zsatur,zsatur2,znusil 
    49       REAL fesatur(jpi,jpj,jpk) 
    50 CC---------------------------------------------------------------------- 
    51 CC statement functions 
    52 CC =================== 
    53 CDIR$ NOLIST 
    54 #include "domzgr_substitute.h90" 
    55 CDIR$ LIST 
     45      REAL zsatur,zsatur2,znusil,zdepbac(jpi,jpj,jpk) 
     46      REAL zlamfac,zstep,fesatur(jpi,jpj,jpk) 
     47C 
     48C      Time step duration for the biology 
     49C 
     50       zstep=rfact2/rjjss 
    5651C 
    5752C      Computation of the mean phytoplankton concentration as 
     
    5954C      -------------------------------------------------- 
    6055C 
    61          DO jj=1,jpj 
    62            DO ji=1,jpi 
    63          phymoy(ji,jj)=min((trn(ji,jj,1,jpphy)+trn(ji,jj,1,jpdia)) 
    64      .     ,3.E-6) 
    65            END DO 
    66          END DO 
    67  
    68          DO jk = 1,jpk-1 
     56        DO jk=1,12 
     57         zdepbac(:,:,jk)=min(0.7*(trn(:,:,jk,jpzoo)+2*trn(:,:,jk,jpmes)) 
     58     &     ,4E-6) 
     59        END DO 
     60C 
     61C      Vertical decay of the bacterial activity 
     62C      ---------------------------------------- 
     63C 
     64         do jk=13,jpk 
     65           do jj=1,jpj 
     66             do ji=1,jpi 
     67         zdepbac(ji,jj,jk)=min(1.,fsdept(ji,jj,12)/fsdept(ji,jj,jk)) 
     68     &      *zdepbac(ji,jj,12) 
     69             end do 
     70           end do 
     71         end do 
     72 
     73         DO jk = 1,jpkm1 
    6974           DO jj = 1,jpj 
    7075             DO ji = 1,jpi 
     
    7681     &      max(0.,0.4*(6.E-6-trn(ji,jj,jk,jpoxy))/(oxymin+ 
    7782     &      trn(ji,jj,jk,jpoxy))) 
    78           nitrfac(ji,jj,jk)=min(1.,nitrfac(ji,jj,jk)) 
    79              END DO 
    80            END DO 
    81          END DO 
     83             END DO 
     84           END DO 
     85         END DO 
     86 
     87          nitrfac(:,:,:)=min(1.,nitrfac(:,:,:)) 
    8288 
    8389         DO jk = 1,jpkm1 
     
    8995C     of the bacterial activity.  
    9096C     ---------------------------------------------------------------- 
    91          remik= 
    92      &     xremik*rfact2/(rjjss*1.E-6)*tmask(ji,jj,jk) 
    93      &     *xlimbac(ji,jj,jk)*phymoy(ji,jj)*max(0.1 
    94      &     ,exp(-max(0.,(fsdept(ji,jj,jk)-hmld(ji,jj)))/200.)) 
    95 #    if defined key_off_degrad 
    96      &     *facvol(ji,jj,jk) 
    97 #    endif 
     97C 
     98         remik = xremik*zstep/1E-6*xlimbac(ji,jj,jk) 
     99     &     *zdepbac(ji,jj,jk) 
     100#    if defined key_off_degrad 
     101     &     *facvol(ji,jj,jk) 
     102#    endif 
     103         remik=max(remik,5.5E-4*zstep) 
    98104C 
    99105C     Ammonification in oxic waters with oxygen consumption 
     
    102108         olimi(ji,jj,jk)=min((trn(ji,jj,jk,jpoxy)-rtrn)/o2ut, 
    103109     &     remik*(1.-nitrfac(ji,jj,jk))*trn(ji,jj,jk,jpdoc))  
    104          olimi(ji,jj,jk)=max(0.,olimi(ji,jj,jk)) 
    105110C 
    106111C     Ammonification in suboxic waters with denitrification 
    107112C     ------------------------------------------------------- 
    108113C 
    109          denitr(ji,jj,jk)=min((trn(ji,jj,jk,jpno3)-rtrn)/6.1, 
     114         denitr(ji,jj,jk)=min((trn(ji,jj,jk,jpno3)-rtrn)/rdenit, 
    110115     &     remik*nitrfac(ji,jj,jk)*trn(ji,jj,jk,jpdoc)) 
    111116             END DO 
    112117           END DO 
    113118         END DO 
    114  
     119C 
     120         olimi(:,:,:)=max(0.,olimi(:,:,:)) 
     121         denitr(:,:,:)=max(0.,denitr(:,:,:)) 
     122C 
    115123         DO jk = 1,jpkm1 
    116124           DO jj = 1,jpj 
     
    121129C    ---------------------------------------------------------- 
    122130C 
    123          onitr(ji,jj,jk)=nitrif*rfact2/rjjss*trn(ji,jj,jk,jpnh4) 
    124      &     *1./(1.+emoy(ji,jj,jk))*tmask(ji,jj,jk) 
    125      &     *(1.-nitrfac(ji,jj,jk)) 
     131         onitr(ji,jj,jk)=nitrif*zstep*trn(ji,jj,jk,jpnh4)/(1. 
     132     &     +emoy(ji,jj,jk))*(1.-nitrfac(ji,jj,jk)) 
    126133#    if defined key_off_degrad 
    127134     &     *facvol(ji,jj,jk) 
     
    141148C    ---------------------------------------------------------- 
    142149C 
    143          xbactfer(ji,jj,jk)=0.02*20E-6*rfact2 
    144      &     *prmax(ji,jj,jk)*tmask(ji,jj,jk)*xlimphy(ji,jj,jk) 
    145      &     *xlimdia(ji,jj,jk)*phymoy(ji,jj)*exp(-max 
    146      &     (fsdept(ji,jj,jk)-hmld(ji,jj),0.)/200.) 
     150         xbactfer(ji,jj,jk)=15E-6*rfact2*4.*0.4*prmax(ji,jj,jk) 
     151     &     *(xlimphy(ji,jj,jk)*zdepbac(ji,jj,jk))**2 
     152     &     /(xkgraz2+zdepbac(ji,jj,jk)) 
     153     &     *(0.5+sign(0.5,trn(ji,jj,jk,jpfer)-2E-11)) 
     154C 
    147155             END DO 
    148156           END DO 
     
    156164C    ------------------------------------------------------------- 
    157165C 
    158          remip=xremip/rjjss*rfact2*tmask(ji,jj,jk)*(0.25+0.75 
    159      &     *exp(-max((fsdept(ji,jj,jk)-150.),0.)/1000.)) 
     166         remip=xremip*zstep*tgfunc(ji,jj,jk)*(1.-0.5*nitrfac(ji,jj,jk)) 
    160167#    if defined key_off_degrad 
    161168     &     *facvol(ji,jj,jk) 
     
    168175C    ----------------------------------------------------------------- 
    169176C 
    170          remip=remip*(1.-0.5*nitrfac(ji,jj,jk)) 
    171 C 
    172177         orem(ji,jj,jk)=remip*trn(ji,jj,jk,jppoc) 
    173178         orem2(ji,jj,jk)=remip*trn(ji,jj,jk,jpgoc) 
     
    188193         zsatur=(sio3eq(ji,jj,jk)-trn(ji,jj,jk,jpsil))/ 
    189194     &     (sio3eq(ji,jj,jk)+rtrn) 
    190          zsatur2=zsatur*(1.+tn(ji,jj,jk)/400.)**2* 
    191      &     (1.+tn(ji,jj,jk)/400.)**2 
    192  
    193          znusil=0.225*(1.+tn(ji,jj,jk)/15.)*zsatur+0.775 
    194      &     *exp(9.25*log(zsatur2)) 
    195  
    196          siremin=xsirem/rjjss*rfact2*tmask(ji,jj,jk)*znusil 
     195         zsatur=max(rtrn,zsatur) 
     196         zsatur2=zsatur*(1.+tn(ji,jj,jk)/400.)**4 
     197         znusil=0.225*(1.+tn(ji,jj,jk)/15.)*zsatur+0.775*zsatur2**9 
     198 
     199         siremin=xsirem*zstep*znusil 
    197200#    if defined key_off_degrad 
    198201     &     *facvol(ji,jj,jk) 
     
    203206           END DO 
    204207         END DO 
    205  
     208C 
     209         fesatur(:,:,:)=0.6E-9 
     210C 
    206211         DO jk = 1,jpkm1 
    207212           DO jj = 1,jpj 
     
    214219C 
    215220         xkeq=fekeq(ji,jj,jk) 
    216          fesatur(ji,jj,jk)=0.6E-9 
    217221         xfeequi=(-(1.+fesatur(ji,jj,jk)*xkeq-xkeq*trn(ji,jj,jk,jpfer))+ 
    218222     &     sqrt((1.+fesatur(ji,jj,jk)*xkeq-xkeq*trn(ji,jj,jk,jpfer))**2 
     
    223227     &      trn(ji,jj,jk,jpdsi))*1E6 
    224228 
    225          xscave(ji,jj,jk)=xfeequi*xlam1b/rjjss*rfact2*tmask(ji,jj,jk) 
     229         xscave(ji,jj,jk)=xfeequi*xlam1b*zstep 
    226230#    if defined key_off_degrad 
    227231     &     *facvol(ji,jj,jk) 
     
    233237C  ----------------------------------------------------------- 
    234238C 
    235          xaggdfe(ji,jj,jk)=2.*xlam1*rfact2/rjjss*max(0., 
    236      &     (trn(ji,jj,jk,jpfer)*1E9-1.))*trn(ji,jj,jk,jpfer) 
    237      &     *tmask(ji,jj,jk) 
    238 #    if defined key_off_degrad 
    239      &     *facvol(ji,jj,jk) 
    240 #    endif 
     239         zlamfac=max(0.,(gphit(ji,jj)+55.)/30.) 
     240         zlamfac=min(1.,zlamfac) 
     241         xlam1b=(80.*(trn(ji,jj,jk,jpdoc)+40E-6)+698. 
     242     &    *trn(ji,jj,jk,jppoc)+1.05E4*trn(ji,jj,jk,jpgoc)) 
     243     &    *zdiss(ji,jj,jk)+1E-5*(1.-zlamfac)+xlam1*max(0., 
     244     &    (trn(ji,jj,jk,jpfer)*1E9-1.)) 
     245 
     246         xaggdfe(ji,jj,jk)=xlam1b*zstep*0.76*(trn(ji,jj,jk,jpfer) 
     247     &     -xfeequi) 
     248#    if defined key_off_degrad 
     249     &     *facvol(ji,jj,jk) 
     250#    endif 
     251 
    241252C 
    242253             END DO 
  • trunk/NEMO/TOP_SRC/SMS/p4zsed.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 p4zsed 
     
    3632CC parameters and commons 
    3733CC ====================== 
     34CDIR$ NOLIST 
    3835      USE oce_trc 
    3936      USE trp_trc 
     
    4138      USE lib_mpp 
    4239      IMPLICIT NONE 
     40#include "domzgr_substitute.h90" 
     41CDIR$ LIST 
    4342CC---------------------------------------------------------------------- 
    4443CC local declarations 
     
    4645      INTEGER ji, jj, jk, ikt 
    4746      REAL sumsedsi,sumsedpo4,sumsedcal 
    48       REAL xconctmp,denitot,nitrpottot,nitrpot(jpi,jpj) 
    49  
    50 CC 
    51 CC---------------------------------------------------------------------- 
    52 CC statement functions 
    53 CC =================== 
    54 CDIR$ NOLIST 
    55 #include "domzgr_substitute.h90" 
    56 CDIR$ LIST 
    57 C 
     47      REAL xconctmp,denitot,nitrpottot,nitrpot(jpi,jpj,jpk) 
     48      REAL xlim,xconctmp2,zstep,zfact 
     49      REAL irondep(jpi,jpj,jpk),sidep(jpi,jpj) 
     50CC 
     51C 
     52C     Time step duration for the biology 
     53C     ---------------------------------- 
     54C 
     55        zstep=rfact2/rjjss 
     56C 
     57C 
     58C     Initialisation of variables used to compute deposition 
     59C     ------------------------------------------------------ 
     60C 
     61      irondep     = 0. 
     62      sidep       = 0. 
     63C 
     64C     Iron and Si deposition at the surface 
     65C     ------------------------------------- 
     66C 
     67       do jj=1,jpj 
     68         do ji=1,jpi 
     69         irondep(ji,jj,1)=(0.014*dust(ji,jj)/(55.85*rmoss) 
     70     &      +3E-10/raass)*rfact2/fse3t(ji,jj,1) 
     71         sidep(ji,jj)=8.8*0.075*dust(ji,jj)*rfact2 
     72     &      /(fse3t(ji,jj,1)*28.1*rmoss) 
     73         end do 
     74       end do 
     75C 
     76C     Iron solubilization of particles in the water column 
     77C     ---------------------------------------------------- 
     78C 
     79      do jk=2,jpk-1 
     80        do jj=1,jpj 
     81          do ji=1,jpi 
     82          irondep(ji,jj,jk)=dust(ji,jj)/(10.*55.85*rmoss)*rfact2 
     83     &      *0.0001 
     84          end do 
     85        end do 
     86      end do 
     87C 
     88C    Add the external input of nutrients, carbon and alkalinity 
     89C    ---------------------------------------------------------- 
     90C 
     91        DO jj = 1,jpj 
     92          DO ji = 1,jpi 
     93          trn(ji,jj,1,jppo4) = trn(ji,jj,1,jppo4) 
     94     &      +rivinp(ji,jj)*rfact2 
     95          trn(ji,jj,1,jpno3) = trn(ji,jj,1,jpno3) 
     96     &      +(rivinp(ji,jj)+nitdep(ji,jj))*rfact2 
     97          trn(ji,jj,1,jpfer) = trn(ji,jj,1,jpfer) 
     98     &      +rivinp(ji,jj)*9E-5*rfact2 
     99          trn(ji,jj,1,jpsil) = trn(ji,jj,1,jpsil) 
     100     &      +sidep(ji,jj)+cotdep(ji,jj)*rfact2/6. 
     101          trn(ji,jj,1,jpdic) = trn(ji,jj,1,jpdic) 
     102     &      +rivinp(ji,jj)*rfact2*2.631 
     103          trn(ji,jj,1,jptal) = trn(ji,jj,1,jptal) 
     104     &      +(cotdep(ji,jj)-rno3*(rivinp(ji,jj) 
     105     &      +nitdep(ji,jj)))*rfact2 
     106          END DO 
     107        END DO 
     108C 
     109C     Add the external input of iron which is 3D distributed 
     110C     (dust, river and sediment mobilization) 
     111C     ------------------------------------------------------ 
     112C 
     113        DO jk=1,jpkm1 
     114          DO jj=1,jpj 
     115            DO ji=1,jpi 
     116          trn(ji,jj,jk,jpfer) = trn(ji,jj,jk,jpfer) 
     117     &      +irondep(ji,jj,jk)+ironsed(ji,jj,jk)*rfact2 
     118            END DO 
     119          END DO 
     120        END DO 
    58121C 
    59122C     Initialisation of variables used to compute Sinking Speed 
     
    72135          DO ji=2,jpim1 
    73136        ikt=max(mbathy(ji,jj)-1,1) 
    74         sumsedsi=sumsedsi+trn(ji,jj,ikt,jpdsi)*e1t(ji,jj) 
    75      &    *e2t(ji,jj)*wsbio4(ji,jj,ikt)*tmask(ji,jj,ikt) 
    76      &    *tmask_i(ji,jj)/rjjss 
    77         sumsedcal=sumsedcal+trn(ji,jj,ikt,jpcal)*e1t(ji,jj) 
    78      &    *e2t(ji,jj)*wsbio4(ji,jj,ikt)*tmask(ji,jj,ikt)*2. 
    79      &    *tmask_i(ji,jj)/rjjss 
     137        zfact=e1t(ji,jj)*e2t(ji,jj)/rjjss 
     138        sumsedsi=sumsedsi+trn(ji,jj,ikt,jpdsi)*wsbio4(ji,jj,ikt) 
     139     &    *zfact 
     140        sumsedcal=sumsedcal+trn(ji,jj,ikt,jpcal)*wscal(ji,jj,ikt) 
     141     &    *2.*zfact 
    80142        sumsedpo4=sumsedpo4+(trn(ji,jj,ikt,jpgoc)*wsbio4(ji,jj,ikt) 
    81      &    +trn(ji,jj,ikt,jppoc)*wsbio3(ji,jj,ikt))/rjjss 
    82      &    *tmask(ji,jj,ikt)*tmask_i(ji,jj)*e1t(ji,jj)*e2t(ji,jj) 
     143     &    +trn(ji,jj,ikt,jppoc)*wsbio3(ji,jj,ikt))*zfact 
    83144          END DO 
    84145        END DO 
     
    99160          DO ji=1,jpi 
    100161        ikt=max(mbathy(ji,jj)-1,1) 
    101         xconctmp=trn(ji,jj,ikt,jpdsi) 
    102         trn(ji,jj,ikt,jpdsi)=trn(ji,jj,ikt,jpdsi) 
    103      &    -xconctmp*wsbio4(ji,jj,ikt) 
    104      &    *rfact2/rjjss/fse3t(ji,jj,ikt) 
    105         trn(ji,jj,ikt,jpsil)=trn(ji,jj,ikt,jpsil) 
    106      &    +xconctmp*wsbio4(ji,jj,ikt) 
    107      &    *rfact2/rjjss/fse3t(ji,jj,ikt)*(1.-(sumdepsi+rivalkinput 
    108      &    /raass/6.)/sumsedsi) 
    109           END DO 
    110         END DO 
    111  
    112         DO jj=1,jpj 
    113           DO ji=1,jpi 
    114         ikt=max(mbathy(ji,jj)-1,1) 
    115         xconctmp=trn(ji,jj,ikt,jpcal) 
    116         trn(ji,jj,ikt,jpcal)=trn(ji,jj,ikt,jpcal) 
    117      &    -xconctmp*wsbio4(ji,jj,ikt) 
    118      &    *rfact2/rjjss/fse3t(ji,jj,ikt) 
    119         trn(ji,jj,ikt,jptal)=trn(ji,jj,ikt,jptal) 
    120      &    +xconctmp*wsbio4(ji,jj,ikt) 
    121      &    *rfact2/rjjss/fse3t(ji,jj,ikt)*(1.-(rivalkinput 
    122      &    /raass)/sumsedcal)*2. 
    123         trn(ji,jj,ikt,jpdic)=trn(ji,jj,ikt,jpdic) 
    124      &    +xconctmp*wsbio4(ji,jj,ikt) 
    125      &    *rfact2/rjjss/fse3t(ji,jj,ikt)*(1.-(rivalkinput 
    126      &    /raass)/sumsedcal) 
     162        xconctmp=trn(ji,jj,ikt,jpdsi)*wsbio4(ji,jj,ikt)*zstep 
     163     &    /fse3t(ji,jj,ikt) 
     164        trn(ji,jj,ikt,jpdsi)=trn(ji,jj,ikt,jpdsi)-xconctmp 
     165        trn(ji,jj,ikt,jpsil)=trn(ji,jj,ikt,jpsil)+xconctmp 
     166     &    *(1.-(sumdepsi+rivalkinput/raass/6.)/sumsedsi) 
     167          END DO 
     168        END DO 
     169 
     170        DO jj=1,jpj 
     171          DO ji=1,jpi 
     172        ikt=max(mbathy(ji,jj)-1,1) 
     173        xconctmp=trn(ji,jj,ikt,jpcal)*wscal(ji,jj,ikt)*zstep 
     174     &    /fse3t(ji,jj,ikt) 
     175        trn(ji,jj,ikt,jpcal)=trn(ji,jj,ikt,jpcal)-xconctmp 
     176        trn(ji,jj,ikt,jptal)=trn(ji,jj,ikt,jptal)+xconctmp 
     177     &    *(1.-(rivalkinput/raass)/sumsedcal)*2. 
     178        trn(ji,jj,ikt,jpdic)=trn(ji,jj,ikt,jpdic)+xconctmp 
     179     &    *(1.-(rivalkinput/raass)/sumsedcal) 
    127180         END DO 
    128181       END DO 
     
    131184          DO ji=1,jpi 
    132185        ikt=max(mbathy(ji,jj)-1,1) 
     186        xconctmp=trn(ji,jj,ikt,jpgoc) 
     187        xconctmp2=trn(ji,jj,ikt,jppoc) 
    133188        trn(ji,jj,ikt,jpgoc)=trn(ji,jj,ikt,jpgoc) 
    134      &    -trn(ji,jj,ikt,jpgoc)*wsbio4(ji,jj,ikt)*rfact2 
    135      &    /fse3t(ji,jj,ikt)/rjjss*rivpo4input/(raass*sumsedpo4) 
     189     &    -xconctmp*wsbio4(ji,jj,ikt)*zstep/fse3t(ji,jj,ikt) 
    136190        trn(ji,jj,ikt,jppoc)=trn(ji,jj,ikt,jppoc) 
    137      &    -trn(ji,jj,ikt,jppoc)*wsbio3(ji,jj,ikt)*rfact2 
    138      &    /fse3t(ji,jj,ikt)/rjjss*rivpo4input/(raass*sumsedpo4) 
     191     &    -xconctmp2*wsbio3(ji,jj,ikt)*zstep/fse3t(ji,jj,ikt) 
     192        trn(ji,jj,ikt,jpdoc)=trn(ji,jj,ikt,jpdoc) 
     193     &    +(xconctmp*wsbio4(ji,jj,ikt)+xconctmp2*wsbio3(ji,jj,ikt)) 
     194     &    *zstep/fse3t(ji,jj,ikt)*(1.-rivpo4input 
     195     &    /(raass*sumsedpo4)) 
    139196        trn(ji,jj,ikt,jpbfe)=trn(ji,jj,ikt,jpbfe) 
    140      &    -trn(ji,jj,ikt,jpbfe)*wsbio4(ji,jj,ikt)*rfact2 
    141      &    /fse3t(ji,jj,ikt)/rjjss*rivpo4input/(raass*sumsedpo4) 
     197     &    -trn(ji,jj,ikt,jpbfe)*wsbio4(ji,jj,ikt)*zstep 
     198     &    /fse3t(ji,jj,ikt) 
    142199        trn(ji,jj,ikt,jpsfe)=trn(ji,jj,ikt,jpsfe) 
    143      &    -trn(ji,jj,ikt,jpsfe)*wsbio3(ji,jj,ikt)*rfact2 
    144      &    /fse3t(ji,jj,ikt)/rjjss*rivpo4input/(raass*sumsedpo4) 
     200     &    -trn(ji,jj,ikt,jpsfe)*wsbio3(ji,jj,ikt)*zstep 
     201     &    /fse3t(ji,jj,ikt) 
    145202          END DO 
    146203        END DO 
     
    153210        denitot=0. 
    154211        DO jk=1,jpk-1 
    155           DO jj=1,jpj 
    156             DO ji=1,jpi 
     212          DO jj=2,jpj-1 
     213            DO ji=2,jpi-1 
    157214        denitot=denitot+denitr(ji,jj,jk)*rdenit*e1t(ji,jj)*e2t(ji,jj) 
    158      &    *fse3t(ji,jj,jk)*tmask(ji,jj,jk)*tmask_i(ji,jj) 
     215     &    *fse3t(ji,jj,jk)*tmask(ji,jj,jk)*znegtr(ji,jj,jk) 
    159216            END DO 
    160217          END DO 
    161218        END DO 
    162         
     219 
    163220        IF( lk_mpp )   CALL mpp_sum( denitot )  ! sum over the global domain 
    164221C 
     
    167224C  ---------------------------------------------------- 
    168225C 
    169         nitrpot(:,:)= 0. 
     226       DO jk=1,jpk 
     227        DO jj=1,jpj 
     228          DO ji=1,jpi 
     229        xlim=(1.-xnanono3(ji,jj,jk)-xnanonh4(ji,jj,jk)) 
     230        if (xlim.le.0.2) xlim=0.01 
     231        nitrpot(ji,jj,jk)=max(0.,(prmax(ji,jj,jk)-2.15/rjjss)) 
     232     &    *xlim*rfact2*trn(ji,jj,jk,jpfer)/(conc3 
     233     &    +trn(ji,jj,jk,jpfer))*(1.-exp(-etot(ji,jj,jk)/50.)) 
     234          END DO 
     235        END DO  
     236       END DO 
     237C 
    170238        nitrpottot=0. 
    171         DO jj=1,jpj 
    172           DO ji=1,jpi 
    173         nitrpot(ji,jj)=prmax(ji,jj,1)*max(0.,(0.1*tn(ji,jj,1) 
    174      &    -2.))*conc0/(trn(ji,jj,1,jpno3)+conc0)*rfact2 
    175      &    *trn(ji,jj,1,jpfer)/(conc3+trn(ji,jj,1,jpfer)) 
    176      &    *trn(ji,jj,1,jppo4)/(conc0+trn(ji,jj,1,jppo4)) 
    177         nitrpottot=nitrpottot+nitrpot(ji,jj)*e1t(ji,jj) 
    178      &    *e2t(ji,jj)*tmask_i(ji,jj)*fse3t(ji,jj,1) 
    179           END DO 
    180         END DO  
    181 C 
     239      DO jk=1,jpkm1 
     240        DO jj=2,jpj-1 
     241          DO ji=2,jpi-1 
     242        nitrpottot=nitrpottot+nitrpot(ji,jj,jk)*e1t(ji,jj) 
     243     &    *e2t(ji,jj)*tmask(ji,jj,jk)*fse3t(ji,jj,jk) 
     244          END DO 
     245        END DO 
     246      END DO 
     247 
    182248        IF( lk_mpp )   CALL mpp_sum( nitrpottot )  ! sum over the global domain 
    183249C 
     
    185251C  ---------------------------------------- 
    186252C 
    187   
    188  
    189         DO jj=1,jpj 
    190           DO ji=1,jpi 
    191         trn(ji,jj,1,jpnh4)=trn(ji,jj,1,jpnh4)+nitrpot(ji,jj) 
    192      &    *(denitot-rivnitinput/raass*rfact2)/(nitrpottot+rtrn) 
    193         trn(ji,jj,1,jpoxy)=trn(ji,jj,1,jpoxy)+nitrpot(ji,jj) 
    194      &    *(denitot-rivnitinput/raass*rfact2)/(nitrpottot+rtrn) 
    195      &    *o2nit 
    196           END DO 
    197         END DO 
    198   
    199  
     253       DO jk=1,jpk 
     254        DO jj=1,jpj 
     255          DO ji=1,jpi 
     256        zfact=nitrpot(ji,jj,jk)*1.E-7 
     257        trn(ji,jj,jk,jpnh4)=trn(ji,jj,jk,jpnh4)+zfact 
     258        trn(ji,jj,jk,jpoxy)=trn(ji,jj,jk,jpoxy)+zfact*o2nit 
     259        trn(ji,jj,jk,jppo4)=trn(ji,jj,jk,jppo4)+30./46.*zfact 
     260          END DO 
     261        END DO 
     262       END DO 
    200263C 
    201264#    if defined key_trc_diaadd 
    202265        DO jj = 1,jpj 
    203266          DO ji = 1,jpi 
    204         trc2d(ji,jj,13) = nitrpot(ji,jj) 
    205      &    *(denitot-rivnitinput/raass*rfact2)/(nitrpottot+rtrn) 
    206      &    /rfact2*fse3t(ji,jj,1) 
     267        trc2d(ji,jj,13) = nitrpot(ji,jj,1)*1E-7*fse3t(ji,jj,1)*1E3 
     268     &    /rfact2 
     269        trc2d(ji,jj,12) = irondep(ji,jj,1)*1e3*rfact2r 
     270     &    *fse3t(ji,jj,1) 
    207271          END DO 
    208272        END DO 
  • trunk/NEMO/TOP_SRC/SMS/p4zsink.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 p4zsink 
     
    4036      USE sms 
    4137      IMPLICIT NONE 
     38#include "domzgr_substitute.h90" 
    4239CDIR$ LIST 
    4340CC---------------------------------------------------------------------- 
     
    4643      INTEGER jksed, ji, jj, jk 
    4744      REAL xagg1,xagg2,xagg3,xagg4 
    48       REAL zdepfact 
    49 CC---------------------------------------------------------------------- 
    50 CC statement functions 
    51 CC =================== 
    52 CDIR$ NOLIST 
    53 #include "domzgr_substitute.h90" 
    54 CDIR$ LIST 
     45      REAL zfact,zstep,wsmax 
    5546C 
     47C    Time step duration for biology 
     48C    ------------------------------ 
     49C 
     50       zstep=rfact2/rjjss 
    5651C 
    5752C    Sinking speeds of detritus is increased with depth as shown 
     
    5954C    ----------------------------------------------------------- 
    6055C 
    61          jksed=10 
     56       jksed=10 
    6257C 
    6358       DO jk=1,jpk-1 
    6459         DO jj=1,jpj 
    6560           DO ji=1,jpi 
    66        zdepfact=sqrt(max(0.,fsdepw(ji,jj,jk+1)-hmld(ji,jj))/5000.) 
    67      &     *(max(0.,fsdepw(ji,jj,jk+1)-hmld(ji,jj))/5000.) 
    68      &     *tmask(ji,jj,jk) 
    69        wsbio4(ji,jj,jk)=wsbio2+(200.-wsbio2)*zdepfact 
    70        wsbio3(ji,jj,jk)=wsbio+(10.-wsbio)*zdepfact 
     61       zfact=max(0.,fsdepw(ji,jj,jk+1)-hmld(ji,jj))/2000. 
     62       wsbio4(ji,jj,jk)=wsbio2+(200.-wsbio2)*zfact 
    7163             END DO 
    7264           END DO 
    7365         END DO 
    74 CCC Chris 
    75       DO jk=1,jpk-1 
    76          DO jj=1,jpj 
    77            DO ji=1,jpi 
    78               wsbio4(ji,jj,jk) = min( wsbio4(ji,jj,jk), 
    79      $         0.75*fse3t(ji,jj,jk)/(rfact2/rjjss) ) 
    80              wsbio3(ji,jj,jk) = min( wsbio3(ji,jj,jk), 
    81      $         0.75*fse3t(ji,jj,jk)/(rfact2/rjjss) ) 
    82              END DO 
    83            END DO 
    84          END DO 
    85 CCC Chris 
     66C 
     67C      LIMIT THE VALUES OF THE SINKING SPEEDS  
     68C      TO AVOID NUMERICAL INSTABILITIES 
     69C 
     70      wsbio3(:,:,:)=wsbio 
     71 
     72      Do jk=1,jpk-1 
     73        DO jj=1,jpj 
     74          DO ji=1,jpi 
     75       wsmax=0.8*fse3t(ji,jj,jk)/zstep 
     76       wsbio4(ji,jj,jk)=min(wsbio4(ji,jj,jk),wsmax) 
     77       wsbio3(ji,jj,jk)=min(wsbio3(ji,jj,jk),wsmax) 
     78          END DO 
     79        END DO 
     80       END DO 
     81 
     82      wscal(:,:,:)=wsbio4(:,:,:) 
     83C 
    8684C 
    8785C   INITIALIZE TO ZERO ALL THE SINKING ARRAYS 
     
    9997C   ----------------------------------------------------- 
    10098C 
    101           CALL p4zsink2(wsbio3,sinking,jppoc) 
    102           CALL p4zsink2(wsbio3,sinkfer,jpsfe) 
    103           CALL p4zsink2(wsbio4,sinking2,jpgoc) 
    104           CALL p4zsink2(wsbio4,sinkfer2,jpbfe) 
    105           CALL p4zsink2(wsbio4,sinksil,jpdsi) 
    106           CALL p4zsink2(wsbio4,sinkcal,jpcal) 
     99         CALL p4zsink2(wsbio3,sinking,jppoc) 
     100         CALL p4zsink2(wsbio3,sinkfer,jpsfe) 
     101         CALL p4zsink2(wsbio4,sinking2,jpgoc) 
     102         CALL p4zsink2(wsbio4,sinkfer2,jpbfe) 
     103         CALL p4zsink2(wsbio4,sinksil,jpdsi) 
     104         CALL p4zsink2(wscal,sinkcal,jpcal) 
    107105C 
    108106C  Exchange between organic matter compartments due to 
     
    110108C  --------------------------------------------------- 
    111109C 
    112          DO jk = 1,jpk-1 
     110         DO jk = 1,jpkm1 
    113111           DO jj = 1,jpj 
    114112             DO ji = 1,jpi 
     113C 
     114        zfact=zstep*zdiss(ji,jj,jk) 
    115115C 
    116116C    Part I : Coagulation dependent on turbulence 
    117117C    ---------------------------------------------- 
    118118C 
    119          xagg1=15./rjjss*rfact2*zdiss(ji,jj,jk) 
    120      &     *trn(ji,jj,jk,jppoc)*trn(ji,jj,jk,jppoc) 
     119         xagg1=940.*zfact*trn(ji,jj,jk,jppoc)*trn(ji,jj,jk,jppoc) 
    121120#    if defined key_off_degrad 
    122121     &     *facvol(ji,jj,jk) 
    123122#    endif 
    124123 
    125          xagg2=7.2E3/rjjss*rfact2*zdiss(ji,jj,jk) 
    126      &     *trn(ji,jj,jk,jppoc)*trn(ji,jj,jk,jpgoc) 
     124         xagg2=1.054E4*zfact*trn(ji,jj,jk,jppoc)*trn(ji,jj,jk,jpgoc) 
    127125#    if defined key_off_degrad 
    128126     &     *facvol(ji,jj,jk) 
     
    133131C    ---------------------------------------------- 
    134132C 
    135          xagg3=0.2/rjjss*rfact2 
    136      &     *trn(ji,jj,jk,jppoc)*trn(ji,jj,jk,jpgoc) 
     133         xagg3=0.66*zstep*trn(ji,jj,jk,jppoc)*trn(ji,jj,jk,jppoc) 
    137134#    if defined key_off_degrad 
    138135     &     *facvol(ji,jj,jk) 
    139136#    endif 
    140137 
    141          xagg4=0./rjjss*rfact2 
    142      &     *trn(ji,jj,jk,jppoc)*trn(ji,jj,jk,jppoc) 
     138         xagg4=0.*zstep*trn(ji,jj,jk,jppoc)*trn(ji,jj,jk,jpgoc) 
    143139#    if defined key_off_degrad 
    144140     &     *facvol(ji,jj,jk) 
    145141#    endif 
    146  
     142C 
    147143         xagg(ji,jj,jk)=xagg1+xagg2+xagg3+xagg4 
    148144         xaggfe(ji,jj,jk)=xagg(ji,jj,jk)*trn(ji,jj,jk,jpsfe)/ 
     
    152148C     -------------------------------------- 
    153149C 
    154          xaggdoc(ji,jj,jk)=(0.4*trn(ji,jj,jk,jpdoc) 
    155      &     +1018.*trn(ji,jj,jk,jppoc))/rjjss*rfact2 
    156      &     *zdiss(ji,jj,jk)*trn(ji,jj,jk,jpdoc) 
     150         xaggdoc(ji,jj,jk)=(80*trn(ji,jj,jk,jpdoc)+698. 
     151     &     *trn(ji,jj,jk,jppoc))*zfact*trn(ji,jj,jk,jpdoc) 
    157152#    if defined key_off_degrad 
    158153     &     *facvol(ji,jj,jk) 
    159154#    endif 
    160155 
    161          xaggdoc2(ji,jj,jk)=7.1E3*trn(ji,jj,jk,jpgoc)*rfact2 
    162      &     /rjjss*zdiss(ji,jj,jk)*trn(ji,jj,jk,jpdoc) 
     156         xaggdoc2(ji,jj,jk)=1.05E4*zfact*trn(ji,jj,jk,jpgoc) 
     157     &     *trn(ji,jj,jk,jpdoc) 
    163158#    if defined key_off_degrad 
    164      &    *facvol(ji,jj,jk) 
     159     &     *facvol(ji,jj,jk) 
    165160#    endif 
    166161C 
  • trunk/NEMO/TOP_SRC/SMS/p4zsink2.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 --------------------------------------------------------------------------- 
    51      SUBROUTINE p4zsink2(wstmp,sinktemp,jn) 
    62CDIR$ LIST 
     
    4541      USE sms 
    4642      IMPLICIT NONE 
     43#include "domzgr_substitute.h90" 
    4744CDIR$ LIST 
    4845CC----------------------------------------------------------------- 
     
    5754      REAL wstmp2(jpi,jpj,jpk) 
    5855 
    59 !!---------------------------------------------------------------------- 
    60 !! statement functions 
    61 !! =================== 
    62 !DIR$ NOLIST 
    63 #include "domzgr_substitute.h90" 
    64 !DIR$ LIST 
    6556!!!--------------------------------------------------------------------- 
    6657!!!  OPA8, LODYC (01/00) 
     
    135126         sinktemp(:,:,1)=0. 
    136127         sinktemp(:,:,jpk)=0. 
     128C 
     129       DO jk=1,jpkm1 
     130          DO jj = 1,jpj 
     131            DO ji = 1, jpi 
     132! 
     133            trn(ji,jj,jk,jn) = trn(ji,jj,jk,jn) 
     134     &        + (sinktemp(ji,jj,jk)-sinktemp(ji,jj,jk+1)) 
     135     &        /fse3t(ji,jj,jk) 
     136! 
     137            ENDDO 
     138          ENDDO 
     139        ENDDO 
     140! 
     141        trb(:,:,:,jn)=trn(:,:,:,jn) 
    137142! 
    138143#endif 
  • trunk/NEMO/TOP_SRC/SMS/trcbio.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 --------------------------------------------------------------------------- 
    5 CDIR$ LIST 
    61      SUBROUTINE trcbio(kt) 
     2#if defined key_passivetrc && defined key_trc_lobster1 
    73CCC--------------------------------------------------------------------- 
    84CCC 
     
    1713CCC   Three options: 
    1814CCC     Default option  : no biological trend 
    19 CCC       If 'key_trc_npzd' : NPZD model 
    2015CCC       IF 'key_trc_lobster1' : LOBSTER1 model 
    2116CCC 
     
    3934CC      multitasked on vertical slab (jj-loop) 
    4035CC 
    41 CCC   MODIFICATIONS: 
     36CC   ----- 
     37CC      argument 
     38CC              ktask           : task identificator 
     39CC              kt              : time step 
     40CC      COMMON 
     41CC            /comcoo/          : orthogonal curvilinear coordinates 
     42CC                                and scale factors 
     43CC                                depths 
     44CC            /cottrp/          : present and next fields for passive 
     45CC                              : tracers 
     46CC            /comtsk/          : multitasking 
     47CC            /comtke/          : emin, en() 
     48CC            /cotbio/          : biological parameters 
     49CC 
     50CC   OUTPUT : 
     51CC   ------ 
     52CC      COMMON 
     53CC            /cottrp/ tra      : general tracer trend increased by the 
     54CC                                now horizontal tracer advection trend 
     55CC            /cottbd/ trbio    : now horizontal tracer advection trend 
     56CC                                (IF 'key_trc_diabio' is activated) 
     57CC 
     58CC   WORKSPACE : 
     59CC   --------- 
     60CC      local 
     61CC               zdet,zzoo,zphy,znh4,zno3,zdom    : now concentrations 
     62CC               zlt,zlno3,zlnh4,zle              : limitation terms for phyto 
     63CC               zfno3phy and so on..             : fluxes between bio boxes 
     64CC               zphya,zzooa,zdeta, ...           : after bio trends 
     65CC               zppz, zpdz, zpppz, zppdz, zfood  : preferences terms 
     66CC               zfilpz, zfilpd                   : filtration terms 
     67CC      COMMON 
     68CC 
     69CC   EXTERNAL :                   no 
     70CC   -------- 
     71CC 
     72CC   REFERENCES :                 no 
     73CC   ---------- 
     74CC 
     75CC   MODIFICATIONS: 
    4276CC   -------------- 
    43 CC       original : 95-02 (M. Levy, NPZD model) 
    44 CC                  99-07 (M. Levy, LOBSTER1 model) 
     77CC       original : 99-07 (M. Levy) 
     78CC                  00-12 (E. Kestenare): assign a parameter  
     79CC                                        to name individual tracers 
     80CC                  01-03 (M. Levy) LNO3 + dia2d 
     81CC---------------------------------------------------------------------- 
     82CC---------------------------------------------------------------------- 
     83      USE oce_trc 
     84      USE trp_trc 
     85      USE sms 
     86      USE lbclnk 
     87      IMPLICIT NONE 
     88CC local declarations 
     89CC ================== 
     90      INTEGER kt 
     91      INTEGER ji,jj,jk,jn 
     92      REAL ztot(jpi), ze3t(jpk) 
     93      REAL zdet,zzoo,zphy,zno3,znh4,zdom,zlno3,zlnh4,zle,zlt 
     94      REAL zno3phy, znh4phy, zphynh4, zphydom, zphydet, zphyzoo, zdetzoo 
     95     $    ,zzoonh4, zzoodom, zzoodet, zdetnh4, zdetdom, znh4no3, zdomnh4 
     96     $    ,zppz,zpdz,zpppz,zppdz,zfood,zfilpz,zfildz,zphya,zzooa,zno3a 
     97     $    ,znh4a,zdeta,zdoma, ztra, zzoobod, zboddet, zdomaju 
     98 
     99CC---------------------------------------------------------------------- 
     100CC statement functions 
     101CC =================== 
     102CDIR$ NOLIST 
     103#include "domzgr_substitute.h90" 
     104CDIR$ LIST 
    45105CCC--------------------------------------------------------------------- 
    46 CCC  OPA8, LODYC (15/11/96) 
     106CCC  OPA8, LODYC (07/99) 
    47107CCC--------------------------------------------------------------------- 
    48 #if defined key_passivetrc  
    49 #  if defined key_trc_npzd  
    50 #    include "trcbio.npzd.h" 
    51 #  elif defined key_trc_lobster1 
    52 #    include "trcbio.lobster1.h" 
     108C   | --------------| 
     109C   | LOBSTER1 MODEL|  
     110C   | --------------| 
     111 
     112#if defined key_trc_diaadd 
     113C convert fluxes in per day 
     114      DO jk=1,jpkbm1 
     115        ze3t(jk)=e3t(jk)*86400. 
     116      END DO  
     117      DO jk=jpkb,jpk 
     118        ze3t(jk)=0. 
     119      END DO  
     120#endif 
     121C 
     122C vertical slab 
     123C ============= 
     124C 
     125      DO 1000 jj = 2,jpjm1 
     126C 
     127C 1. biological level 
     128C =================== 
     129C 
     130        DO ji = 2,jpim1 
     131          fbod(ji,jj)=0. 
     132#if defined key_trc_diaadd 
     133          DO jn=1,jpdia2d 
     134            trc2d(ji,jj,jn)=0.           
     135          END DO  
     136#endif 
     137        END DO  
     138 
     139        DO jk=1,jpkbm1 
     140          DO ji = 2,jpim1 
     141C 
     142C 
     143C 1.1 trophic variables( det, zoo, phy, no3, nh4, dom) 
     144C --------------------------------------------------- 
     145C 
     146C negative trophic variables DO not contribute to the fluxes 
     147C 
     148            zdet = max(0.,trn(ji,jj,jk,jpdet)) 
     149            zzoo = max(0.,trn(ji,jj,jk,jpzoo)) 
     150            zphy = max(0.,trn(ji,jj,jk,jpphy)) 
     151            zno3 = max(0.,trn(ji,jj,jk,jpno3)) 
     152            znh4 = max(0.,trn(ji,jj,jk,jpnh4)) 
     153            zdom = max(0.,trn(ji,jj,jk,jpdom)) 
     154C 
     155C 
     156C 1.2  Limitations 
     157C ---------------- 
     158C 
     159            zlt = 1. 
     160            zle = 1. - exp( -xpar(ji,jj,jk)/aki/zlt) 
     161C psinut,akno3,aknh4 added by asklod AS Kremeur 2005-03 
     162            zlno3 = zno3* exp(-psinut*znh4) / (akno3+zno3) 
     163            zlnh4 = znh4 / (znh4+aknh4)  
     164 
     165C 
     166C 
     167C 1.3 sinks and sources 
     168C --------------------- 
     169C 
     170C 
     171C 1. phytoplankton production and exsudation 
     172C 
     173            zno3phy = tmumax * zle * zlt * zlno3 * zphy 
     174            znh4phy = tmumax * zle * zlt * zlnh4 * zphy 
     175 
     176C fphylab added by asklod AS Kremeur 2005-03 
     177            zphydom = rgamma * (1 - fphylab) * (zno3phy + znh4phy) 
     178            zphynh4 = rgamma * fphylab * (zno3phy + znh4phy) 
     179 
     180C 
     181C 2. zooplankton production 
     182C 
     183C preferences 
     184C 
     185            zppz = rppz 
     186            zpdz = 1. - rppz 
     187            zpppz = ( zppz * zphy ) / 
     188     $          ( ( zppz * zphy + zpdz * zdet ) + 1.e-13 ) 
     189            zppdz = ( zpdz * zdet ) / 
     190     $          ( ( zppz * zphy + zpdz * zdet ) + 1.e-13 ) 
     191            zfood = zpppz * zphy + zppdz * zdet 
     192C 
     193C filtration 
     194C 
     195            zfilpz = taus * zpppz / (aks + zfood) 
     196            zfildz = taus * zppdz / (aks + zfood) 
     197C 
     198C grazing 
     199C 
     200            zphyzoo = zfilpz * zphy * zzoo 
     201            zdetzoo = zfildz * zdet * zzoo 
     202C 
     203C 3. fecal pellets production 
     204C 
     205            zzoodet = rpnaz * zphyzoo + rdnaz * zdetzoo 
     206C 
     207C 4. zooplankton liquide excretion 
     208C 
     209            zzoonh4 = tauzn * zzoo * fdoml  
     210            zzoodom = tauzn * zzoo * (1-fdoml)  
     211 
     212C 5. mortality 
     213C 
     214C phytoplankton mortality  
     215C 
     216            zphydet = tmminp * zphy 
     217C 
     218C 
     219C zooplankton mortality 
     220c closure : flux fbod is redistributed below level jpkbio 
     221C 
     222            zzoobod = tmminz * zzoo * zzoo 
     223            fbod(ji,jj) = fbod(ji,jj) + zzoobod * fse3t(ji,jj,jk) 
     224C 
     225C 
     226C 6. detritus and dom breakdown 
     227C 
     228C 
     229            zdetnh4 = taudn * fdoml * zdet 
     230            zdetdom = taudn * (1 - fdoml) * zdet 
     231            zdomnh4 = taudomn * zdom 
     232C 
     233C 
     234C 7. Nitrification 
     235C 
     236            znh4no3 = taunn * znh4 
     237C 
     238C 
     239C 
     240C 1.4 determination of trends 
     241C --------------------------- 
     242C 
     243C total trend for each biological tracer 
     244C 
     245            zphya =   zno3phy + znh4phy - zphynh4 - zphydom - zphyzoo 
     246     $          - zphydet 
     247            zzooa =   zphyzoo + zdetzoo - zzoodet - zzoodom - zzoonh4 
     248     $          - zzoobod 
     249            zno3a = - zno3phy + znh4no3 
     250            znh4a = - znh4phy - znh4no3 + zphynh4 + zzoonh4 + zdomnh4 
     251     $          + zdetnh4 
     252            zdeta = zphydet + zzoodet  - zdetzoo - zdetnh4 - zdetdom 
     253            zdoma = zphydom + zzoodom + zdetdom - zdomnh4 
     254C 
     255#if defined key_trc_diabio 
     256            trbio(ji,jj,jk,1) = zno3phy 
     257            trbio(ji,jj,jk,2) = znh4phy 
     258            trbio(ji,jj,jk,3) = zphynh4 
     259            trbio(ji,jj,jk,4) = zphydom 
     260            trbio(ji,jj,jk,5) = zphyzoo 
     261            trbio(ji,jj,jk,6) = zphydet 
     262            trbio(ji,jj,jk,7) = zdetzoo 
     263            trbio(ji,jj,jk,9) = zzoodet 
     264            trbio(ji,jj,jk,10) = zzoobod 
     265            trbio(ji,jj,jk,11) = zzoonh4 
     266            trbio(ji,jj,jk,12) = zzoodom 
     267            trbio(ji,jj,jk,13) = znh4no3 
     268            trbio(ji,jj,jk,14) = zdomnh4 
     269            trbio(ji,jj,jk,15) = zdetnh4 
     270#endif 
     271#if defined key_trc_diaadd 
     272            trc2d(ji,jj,1)=trc2d(ji,jj,1)+zno3phy*ze3t(jk)           
     273            trc2d(ji,jj,2)=trc2d(ji,jj,2)+znh4phy*ze3t(jk) 
     274            trc2d(ji,jj,3)=trc2d(ji,jj,3)+zphydom*ze3t(jk) 
     275            trc2d(ji,jj,4)=trc2d(ji,jj,4)+zphynh4*ze3t(jk) 
     276            trc2d(ji,jj,5)=trc2d(ji,jj,5)+zphyzoo*ze3t(jk) 
     277            trc2d(ji,jj,6)=trc2d(ji,jj,6)+zphydet*ze3t(jk) 
     278            trc2d(ji,jj,7)=trc2d(ji,jj,7)+zdetzoo*ze3t(jk) 
     279c trend number 8 is in trcsed.F             
     280            trc2d(ji,jj,9)=trc2d(ji,jj,9)+zzoodet*ze3t(jk) 
     281            trc2d(ji,jj,10)=trc2d(ji,jj,10)+zzoobod*ze3t(jk) 
     282            trc2d(ji,jj,11)=trc2d(ji,jj,11)+zzoonh4*ze3t(jk) 
     283            trc2d(ji,jj,12)=trc2d(ji,jj,12)+zzoodom*ze3t(jk) 
     284            trc2d(ji,jj,13)=trc2d(ji,jj,13)+znh4no3*ze3t(jk) 
     285            trc2d(ji,jj,14)=trc2d(ji,jj,14)+zdomnh4*ze3t(jk) 
     286            trc2d(ji,jj,15)=trc2d(ji,jj,15)+zdetnh4*ze3t(jk) 
     287              
     288            trc2d(ji,jj,16)=trc2d(ji,jj,16)+(zno3phy+znh4phy-zphynh4 
     289     $          -zphydom-zphyzoo-zphydet)*ze3t(jk) 
     290            trc2d(ji,jj,17)=trc2d(ji,jj,17)+(zphyzoo+zdetzoo-zzoodet 
     291     $          -zzoobod-zzoonh4-zzoodom) *ze3t(jk) 
     292            trc2d(ji,jj,18)=trc2d(ji,jj,18)+zdetdom*ze3t(jk) 
     293 
     294            trc3d(ji,jj,jk,1)= zno3phy *86400      
     295            trc3d(ji,jj,jk,2)= znh4phy *86400      
     296            trc3d(ji,jj,jk,3)= znh4no3 *86400      
     297#endif 
     298C 
     299C tracer flux at totox-point added to the general trend 
     300C 
     301            tra(ji,jj,jk,jpdet) = tra(ji,jj,jk,jpdet) + zdeta 
     302            tra(ji,jj,jk,jpzoo) = tra(ji,jj,jk,jpzoo) + zzooa 
     303            tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) + zphya 
     304            tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + zno3a 
     305            tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + znh4a 
     306            tra(ji,jj,jk,jpdom) = tra(ji,jj,jk,jpdom) + zdoma 
     307C 
     308          END DO 
     309        END DO 
     310C 
     311C 2. under biological level 
     312C ========================= 
     313C 
     314        DO jk = jpkb,jpk 
     315C 
     316C 2.1 compute the remineralisation of all quantities towards nitrate  
     317C ------------------------------------------------------------------ 
     318C 
     319          DO ji = 2,jpim1 
     320C 
     321C 2.1.1 trophic variables( det, zoo, phy, no3, nh4, dom) 
     322C ----------------------------------------------------- 
     323C 
     324C negative trophic variables DO not contribute to the fluxes 
     325C 
     326            zdet = max(0.,trn(ji,jj,jk,jpdet)) 
     327            zzoo = max(0.,trn(ji,jj,jk,jpzoo)) 
     328            zphy = max(0.,trn(ji,jj,jk,jpphy)) 
     329            zno3 = max(0.,trn(ji,jj,jk,jpno3)) 
     330            znh4 = max(0.,trn(ji,jj,jk,jpnh4)) 
     331            zdom = max(0.,trn(ji,jj,jk,jpdom)) 
     332CC 
     333CC 2.1.2  Limitations 
     334CC ---------------- 
     335CC 
     336            zlt = 0. 
     337            zle = 0. 
     338            zlno3 = 0. 
     339            zlnh4 = 0. 
     340CC 
     341CC 
     342CC 2.1.3 sinks and sources 
     343CC --------------------- 
     344CC 
     345CC 
     346CC 1. phytoplankton production and exsudation 
     347CC 
     348            zno3phy = 0. 
     349            znh4phy = 0. 
     350C 
     351            zphydom = 0. 
     352            zphynh4 = 0. 
     353CC 
     354CC 2. zooplankton production 
     355CC 
     356CC grazing 
     357CC 
     358            zphyzoo = 0.  
     359            zdetzoo = 0. 
     360CC 
     361CC 3. fecal pellets production 
     362CC 
     363            zzoodet = 0. 
     364CC 
     365CC 4. zooplankton liquide excretion 
     366CC 
     367            zzoonh4 = tauzn * fzoolab * zzoo  
     368            zzoodom = tauzn * (1 - fzoolab) * zzoo 
     369CC 
     370CC 5. mortality 
     371CC 
     372CC phytoplankton mortality  
     373CC 
     374            zphydet = tmminp * zphy 
     375CC 
     376CC 
     377CC zooplankton mortality 
     378Cc closure : flux fbod is redistributed below level jpkbio 
     379CC 
     380            zzoobod = 0. 
     381            zboddet = 0.  
     382CC 
     383CC 
     384CC 6. detritus and dom breakdown 
     385CC 
     386            zdetnh4 = taudn * fdetlab * zdet 
     387            zdetdom = taudn * (1 - fdetlab) * zdet  
     388C 
     389            zdomnh4 = taudomn * zdom 
     390            zdomaju = (1 - redf/reddom) * (zphydom + zzoodom + zdetdom) 
     391CC 
     392CC 7. Nitrification 
     393CC 
     394            znh4no3 = taunn * znh4 
     395CC 
     396CC 
     397CC 2.1.4 determination of trends 
     398CC --------------------------- 
     399CC 
     400CC total trend for each biological tracer 
     401CC 
     402            zphya =   zno3phy + znh4phy - zphynh4 - zphydom - zphyzoo 
     403     $          - zphydet 
     404            zzooa =   zphyzoo + zdetzoo - zzoodet - zzoodom - zzoonh4 
     405     $          - zzoobod 
     406            zno3a = - zno3phy + znh4no3 
     407            znh4a = - znh4phy - znh4no3 + zphynh4 + zzoonh4 + zdomnh4 
     408     $          + zdetnh4 + zdomaju 
     409            zdeta = zphydet + zzoodet  - zdetzoo - zdetnh4 - zdetdom + 
     410     $          zboddet 
     411            zdoma = zphydom + zzoodom + zdetdom - zdomnh4 - zdomaju 
     412CC 
     413#if defined key_trc_diabio 
     414            trbio(ji,jj,jk,1) = zno3phy 
     415            trbio(ji,jj,jk,2) = znh4phy 
     416            trbio(ji,jj,jk,3) = zphynh4 
     417            trbio(ji,jj,jk,4) = zphydom 
     418            trbio(ji,jj,jk,5) = zphyzoo 
     419            trbio(ji,jj,jk,6) = zphydet 
     420            trbio(ji,jj,jk,7) = zdetzoo 
     421            trbio(ji,jj,jk,9) = zzoodet 
     422            trbio(ji,jj,jk,10) = zzoobod 
     423            trbio(ji,jj,jk,11) = zzoonh4 
     424            trbio(ji,jj,jk,12) = zzoodom 
     425            trbio(ji,jj,jk,13) = znh4no3 
     426            trbio(ji,jj,jk,14) = zdomnh4 
     427            trbio(ji,jj,jk,15) = zdetnh4 
     428#endif 
     429#if defined key_trc_diaadd 
     430            trc2d(ji,jj,1)=trc2d(ji,jj,1)+zno3phy*ze3t(jk)           
     431            trc2d(ji,jj,2)=trc2d(ji,jj,2)+znh4phy*ze3t(jk) 
     432            trc2d(ji,jj,3)=trc2d(ji,jj,3)+zphydom*ze3t(jk) 
     433            trc2d(ji,jj,4)=trc2d(ji,jj,4)+zphynh4*ze3t(jk) 
     434            trc2d(ji,jj,5)=trc2d(ji,jj,5)+zphyzoo*ze3t(jk) 
     435            trc2d(ji,jj,6)=trc2d(ji,jj,6)+zphydet*ze3t(jk) 
     436            trc2d(ji,jj,7)=trc2d(ji,jj,7)+zdetzoo*ze3t(jk) 
     437Cc trend number 8 is in trcsed.F             
     438            trc2d(ji,jj,9)=trc2d(ji,jj,9)+zzoodet*ze3t(jk) 
     439            trc2d(ji,jj,10)=trc2d(ji,jj,10)+zzoobod*ze3t(jk) 
     440            trc2d(ji,jj,11)=trc2d(ji,jj,11)+zzoonh4*ze3t(jk) 
     441            trc2d(ji,jj,12)=trc2d(ji,jj,12)+zzoodom*ze3t(jk) 
     442            trc2d(ji,jj,13)=trc2d(ji,jj,13)+znh4no3*ze3t(jk) 
     443            trc2d(ji,jj,14)=trc2d(ji,jj,14)+zdomnh4*ze3t(jk) 
     444            trc2d(ji,jj,15)=trc2d(ji,jj,15)+zdetnh4*ze3t(jk) 
     445              
     446            trc2d(ji,jj,16)=trc2d(ji,jj,16)+(zno3phy+znh4phy-zphynh4 
     447     $          -zphydom-zphyzoo-zphydet)*ze3t(jk) 
     448            trc2d(ji,jj,17)=trc2d(ji,jj,17)+(zphyzoo+zdetzoo-zzoodet 
     449     $          -zzoobod-zzoonh4-zzoodom) *ze3t(jk) 
     450            trc2d(ji,jj,18)=trc2d(ji,jj,18)+zdetdom*ze3t(jk) 
     451 
     452            trc3d(ji,jj,jk,1)= zno3phy *86400      
     453            trc3d(ji,jj,jk,2)= znh4phy *86400      
     454            trc3d(ji,jj,jk,3)= znh4no3 *86400      
     455#endif 
     456CC 
     457CC tracer flux at totox-point added to the general trend 
     458CC 
     459            tra(ji,jj,jk,jpdet) = tra(ji,jj,jk,jpdet) + zdeta 
     460            tra(ji,jj,jk,jpzoo) = tra(ji,jj,jk,jpzoo) + zzooa 
     461            tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) + zphya 
     462            tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + zno3a 
     463            tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + znh4a 
     464            tra(ji,jj,jk,jpdom) = tra(ji,jj,jk,jpdom) + zdoma 
     465CC 
     466          END DO 
     467        END DO 
     468 
     469 
     470 
     471 
     472c$$$        DO jk = jpkb,jpk 
     473c$$$C 
     474c$$$C 2.1 Old way to compute the remineralisation : asklod AS Kremeur (before 2005-03) 
     475c$$$C ------------------------------------------------------------------ 
     476c$$$C 
     477c$$$          DO ji=2,jpim1 
     478c$$$            ztot(ji) = 0. 
     479c$$$          END DO  
     480c$$$          DO jn=1,jptra 
     481c$$$            IF (ctrcnm(jn).NE.'NO3') THEN  
     482c$$$                DO ji=2,jpim1 
     483c$$$                  ztra = remdmp(jk,jn) * trn(ji,jj,jk,jn)  
     484c$$$                  tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) - ztra 
     485c$$$                  ztot(ji) = ztot(ji) + ztra 
     486c$$$                END DO  
     487c$$$            ENDIF 
     488c$$$          END DO  
     489c$$$          DO jn=1,jptra 
     490c$$$            IF (ctrcnm(jn).EQ.'NO3') THEN  
     491c$$$                DO ji=2,jpim1 
     492c$$$                  tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + ztot(ji) 
     493c$$$                END DO 
     494c$$$#if defined key_trc_diabio 
     495c$$$                trbio(ji,jj,jk,1)=ztot(ji) 
     496c$$$#endif  
     497c$$$            ENDIF 
     498c$$$          END DO 
     499c$$$        END DO  
     500 
     501C 
     502C 
     503C END of slab 
     504C =========== 
     505C 
     506 1000 CONTINUE 
     507 
     508#if defined key_trc_diaadd 
     509 
     510C Lateral boundary conditions on trc2d 
     511      DO jn=1,jpdia2d 
     512          CALL lbc_lnk(trc2d(:,:,jn),'T',1. ) 
     513      END DO  
     514 
     515C Lateral boundary conditions on trc3d 
     516      DO jn=1,jpdia3d 
     517          CALL lbc_lnk(trc3d(:,:,1,jn),'T',1. ) 
     518      END DO  
     519 
     520#endif 
     521 
     522#if defined key_trc_diabio 
     523C Lateral boundary conditions on trcbio 
     524      DO jn=1,jpdiabio 
     525          CALL lbc_lnk(trbio(:,:,1,jn),'T',1. ) 
     526      END DO  
     527#endif 
     528 
    53529#  else 
    54530C 
     
    56532C 
    57533#  endif 
    58 #endif 
     534 
    59535C 
    60536C 
  • trunk/NEMO/TOP_SRC/SMS/trcexp.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 --------------------------------------------------------------------------- 
    5       SUBROUTINE trcexp 
    6 #if defined key_passivetrc  
    7 #if defined key_trc_npzd || defined key_trc_lobster1 || defined key_trc_hamocc3 
     1CCC $Header$  
     2      SUBROUTINE trcexp(kt) 
     3#if defined key_passivetrc && defined key_trc_lobster1  
    84CCC--------------------------------------------------------------------- 
    95CCC 
     
    3834CC      additions   : 01-05 (O. Aumont, E. Kestenare): 
    3935CC                           add sediment computations 
     36CC                  :  05-06  (AS. Kremeur) new temporal integration for sedpoc 
    4037CC --------------------------------------------------------------------- 
    4138c ------ 
     
    4744      USE sms 
    4845      USE lbclnk 
     46      USE trc 
     47      USE trctrp_lec 
    4948 
    5049      IMPLICIT NONE 
     
    5453CC ================== 
    5554C 
     55      INTEGER kt 
    5656      INTEGER ji, jj, jk, zkbot(jpi,jpj) 
    57       REAL zwork(jpi,jpj), zgeolpoc 
     57      REAL zwork(jpi,jpj), zgeolpoc, zfact 
    5858CC---------------------------------------------------------------------- 
    5959CC statement functions 
     
    7373        DO jj = 2,jpjm1 
    7474          DO ji = 2,jpim1 
    75 #    if defined key_trc_p3zd 
    76             trn(ji,jj,jk,jppoc) = trn(ji,jj,jk,jppoc)+ 
    77      &          (1./fse3t(ji,jj,jk))*rdt* 
    78      &          dmin3(ji,jj,jk) *fbod(ji,jj) 
    79 #    elif defined key_trc_hamocc3 && ! defined key_trc_p3zd 
    80             tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc)+ 
    81      &          (1./fse3t(ji,jj,jk))* 
    82      &          dmin3(ji,jj,jk) *fbod(ji,jj) 
    83 #    else 
    8475            tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3)+ 
    8576     &          (1./fse3t(ji,jj,jk))* 
    8677     &          dmin3(ji,jj,jk) *fbod(ji,jj) 
    87 #    endif 
    8878          ENDDO 
    8979        ENDDO 
     
    10191          DO ji = 2,jpim1 
    10292    
    103              IF (tmask(ji,jj,jk).eq.1.and. 
    104      .           tmask(ji,jj,jk+1).eq.0) THEN 
    105 C 
     93             IF ( tmask(ji,jj,jk) .eq. 1 .and. 
     94     .            tmask(ji,jj,jk+1). eq. 0 ) THEN 
    10695                  zkbot(ji,jj) = jk 
    107 #    if  ! defined key_trc_hamocc3 
    10896                  zwork(ji,jj) = vsed * trn(ji,jj,jk,jpdet) 
    109 #    endif 
    110 C 
    11197              ENDIF 
    11298     
     
    122108        DO jj = 2,jpjm1 
    123109          DO ji = 2,jpim1 
    124  
    125 #            if defined key_trc_p3zd 
    126              trn(ji,jj,zkbot(ji,jj),jppo4) =  
    127      .          trn(ji,jj,zkbot(ji,jj),jppo4) + 
    128      .               sedlam*sedpoc(ji,jj)*rdt/fse3t(ji,jj,zkbot(ji,jj)) 
    129 #            elif defined key_trc_hamocc3 && ! defined key_trc_p3zd 
    130              tra(ji,jj,zkbot(ji,jj),jppo4) =  
    131      .          tra(ji,jj,zkbot(ji,jj),jppo4) + 
    132      .               sedlam*sedpoc(ji,jj)/fse3t(ji,jj,zkbot(ji,jj)) 
    133 #            else 
    134110             tra(ji,jj,zkbot(ji,jj),jpno3) =  
    135111     .          tra(ji,jj,zkbot(ji,jj),jpno3) + 
    136      .               sedlam*sedpoc(ji,jj)/fse3t(ji,jj,zkbot(ji,jj)) 
    137 #            endif 
    138 C 
     112     .               sedlam*sedpocn(ji,jj)/fse3t(ji,jj,zkbot(ji,jj)) 
     113 
    139114C     Deposition of organic matter in the sediment 
    140115C 
    141              zgeolpoc = zgeolpoc + sedlostpoc*sedpoc(ji,jj)* 
     116             zgeolpoc = zgeolpoc + sedlostpoc*sedpocn(ji,jj)* 
    142117     .                             e1t(ji,jj)*e2t(ji,jj) 
    143118 
    144              sedpoc(ji,jj) = sedpoc(ji,jj)  + 
    145      .                       zwork(ji,jj)*rdt + 
     119             sedpoca(ji,jj) = zwork(ji,jj)*rdt + 
    146120     .                       dminl(ji,jj)*fbod(ji,jj)*rdt - 
    147      .                       sedlam*sedpoc(ji,jj)*rdt - 
    148      .                       sedlostpoc*sedpoc(ji,jj)*rdt 
     121     .                       sedlam*sedpocn(ji,jj)*rdt - 
     122     .                       sedlostpoc*sedpocn(ji,jj)*rdt 
    149123C 
    150124             ENDDO 
     
    153127        DO jj = 2,jpjm1 
    154128          DO ji = 2,jpim1 
    155  
    156 #            if defined key_trc_p3zd 
    157              trn(ji,jj,1,jppo4) = trn(ji,jj,1,jppo4) + zgeolpoc*rdt* 
    158      .                            cmask(ji,jj)/areacot/fse3t(ji,jj,1) 
    159 #            elif defined key_trc_hamocc3 && ! defined key_trc_p3zd 
    160              tra(ji,jj,1,jppo4) = tra(ji,jj,1,jppo4) + zgeolpoc* 
    161      .                            cmask(ji,jj)/areacot/fse3t(ji,jj,1) 
    162 #            else 
    163129             tra(ji,jj,1,jpno3) = tra(ji,jj,1,jpno3) + zgeolpoc* 
    164130     .                            cmask(ji,jj)/areacot/fse3t(ji,jj,1) 
    165 #            endif 
    166  
    167              ENDDO 
     131           ENDDO 
    168132         ENDDO 
    169133 
    170          CALL lbc_lnk( sedpoc, 'T', 1. ) 
     134         CALL lbc_lnk( sedpocn, 'T', 1. ) 
    171135  
    172136C Oa & Ek: diagnostics depending on jpdia2d 
     
    175139           do jj=1,jpj 
    176140             do ji=1,jpi 
    177               trc2d(ji,jj,11)=sedpoc(ji,jj) 
    178 C              trc2d(ji,jj,5) = fbod(ji,jj) 
     141              trc2d(ji,jj,19)=sedpocn(ji,jj) 
    179142             end do 
    180143           end do 
    181144#     endif 
    182145 
    183 #        if defined key_trc_p3zd 
    184             CALL lbc_lnk( trn,'T',1) 
    185 #        endif 
    186 C 
    187 #endif 
     146c      ! 1. Leap-frog scheme (only in explicit case, otherwise the  
     147c      ! -------------------  time stepping is already done in trczdf) 
     148       IF(l_trczdf_exp .AND. (ln_trcadv_cen2 .OR. ln_trcadv_tvd)) THEN 
     149         zfact = 2. * rdttra(jk) * FLOAT(ndttrc)  
     150         IF( neuler == 0 .AND. kt == nittrc000 )  
     151     .     zfact = rdttra(jk) * FLOAT(ndttrc)  
     152         sedpoca(:,:) = ( sedpocb(:,:) + zfact * sedpoca(:,:) ) 
     153      ENDIF 
     154 
     155       
     156c      ! 2. Time filter and swap of arrays 
     157c      ! --------------------------------- 
     158      IF ( ln_trcadv_cen2 .OR. ln_trcadv_tvd  ) THEN          
     159          IF( neuler == 0 .AND. kt == nittrc000 ) THEN 
     160              DO jj = 1, jpj 
     161                DO ji = 1, jpi 
     162                  sedpocb(ji,jj) = sedpocn(ji,jj) 
     163                  sedpocn(ji,jj) = sedpoca(ji,jj) 
     164                  sedpoca(ji,jj) = 0. 
     165                END DO 
     166              END DO 
     167         ELSE 
     168             DO jj = 1, jpj 
     169               DO ji = 1, jpi 
     170                 sedpocb(ji,jj) = atfp*(sedpocb(ji,jj)+sedpoca(ji,jj))  
     171     .                          + atfp1 * sedpocn(ji,jj) 
     172                 sedpocn(ji,jj) = sedpoca(ji,jj) 
     173                 sedpoca(ji,jj) = 0. 
     174               END DO 
     175             END DO 
     176         ENDIF 
     177          
     178      ELSE 
     179c         !  case of smolar scheme or muscl 
     180         DO jj = 1, jpj 
     181            DO ji = 1, jpi 
     182               sedpocb(ji,jj) = sedpoca(ji,jj) 
     183               sedpocn(ji,jj) = sedpoca(ji,jj) 
     184               sedpoca(ji,jj) = 0. 
     185            END DO 
     186         END DO 
     187          
     188      ENDIF 
     189 
    188190#endif 
    189191      RETURN 
  • trunk/NEMO/TOP_SRC/SMS/trcopt.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 --------------------------------------------------------------------------- 
     1CC $Header$ 
    52CDIR$ LIST 
    63      SUBROUTINE trcopt(kt) 
     
    8683      INTEGER kt 
    8784 
    88 #if defined key_passivetrc 
    89 #    if defined key_trc_lobster1 || defined key_trc_npzd 
     85#if defined key_passivetrc && defined key_trc_lobster1 
    9086C 
    9187      INTEGER ji,jj,jk,jn,in 
     
    210206 1000 CONTINUE 
    211207C 
    212 #    else 
    213 C 
    214 C    No optical model 
    215 C 
    216 #    endif 
    217208#else 
    218209C 
  • trunk/NEMO/TOP_SRC/SMS/trcsed.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 --------------------------------------------------------------------------- 
     1CC $Header$ 
    52CDIR$ LIST 
    63      SUBROUTINE trcsed(kt) 
     
    8582      INTEGER kt 
    8683 
    87 #if defined key_passivetrc   
    88  
    89 #   if defined key_trc_npzd || defined key_trc_lobster1 
     84#if defined key_passivetrc && defined key_trc_lobster1 
    9085 
    9186      INTEGER ji,jj,jk 
     
    135130C with simplification : no e1*e2 
    136131C 
    137               DO  jk = 2,jpkm1 
     132              DO  jk = 2,jpk 
    138133                DO  ji = 1,jpi 
    139134                  zwork(ji,jk) = -vsed * trn(ji,jj,jk - 1,jpdet) 
     
    171166#endif 
    172167C 
    173 # else 
    174 C 
    175 C       no Sedimentation 
    176 C 
    177 # endif 
     168 
    178169#else 
    179170C 
Note: See TracChangeset for help on using the changeset viewer.