Ignore:
Timestamp:
2014-03-03T19:12:24+01:00 (7 years ago)
Author:
cetlod
Message:

v3.6alpha : bugfixes in PISCES, see ticket #1251

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2013/dev_MERGE_2013/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsed.F90

    r4162 r4521  
    7070      REAL(wp) ::  zlim, zfact, zfactcal 
    7171      REAL(wp) ::  zo2, zno3, zflx, zpdenit, z1pdenit, zdenitt, zolimit 
    72       REAL(wp) ::  zsiloss, zcaloss, zwsbio3, zwsbio4, zwscal, zdep, zwstpoc 
     72      REAL(wp) ::  zsiloss, zcaloss, zws3, zws4, zwsc, zdep, zwstpoc 
    7373      REAL(wp) ::  ztrfer, ztrpo4, zwdust 
    7474      REAL(wp) ::  zrdenittot, zsdenittot, znitrpottot 
     
    7777      REAL(wp), POINTER, DIMENSION(:,:  ) :: zpdep, zsidep, zwork1, zwork2, zwork3, zwork4 
    7878      REAL(wp), POINTER, DIMENSION(:,:  ) :: zdenit2d, zironice 
     79      REAL(wp), POINTER, DIMENSION(:,:  ) :: zwsbio3, zwsbio4, zwscal 
    7980      REAL(wp), POINTER, DIMENSION(:,:,:) :: znitrpot, zirondep 
    8081      !!--------------------------------------------------------------------- 
     
    9394      ! Allocate temporary workspace 
    9495      CALL wrk_alloc( jpi, jpj, zdenit2d, zwork1, zwork2, zwork3, zwork4 ) 
     96      CALL wrk_alloc( jpi, jpj, zwsbio3, zwsbio4, zwscal ) 
    9597      CALL wrk_alloc( jpi, jpj, jpk, znitrpot ) 
     98 
    9699      zdenit2d(:,:) = 0.e0 
    97100 
     
    196199      ENDIF 
    197200 
     201 
     202      ! OA: Warning, the following part is necessary, especially with Kriest 
     203      ! to avoid CFL problems above the sediments 
     204      ! -------------------------------------------------------------------- 
     205      DO jj = 1, jpj 
     206         DO ji = 1, jpi 
     207            ikt  = mbkt(ji,jj) 
     208            zdep = fse3t(ji,jj,ikt) / xstep 
     209            zwsbio4(ji,jj) = MIN( 0.99 * zdep, wsbio4(ji,jj,ikt) ) 
     210            zwscal (ji,jj) = MIN( 0.99 * zdep, wscal (ji,jj,ikt) ) 
     211            zwsbio3(ji,jj) = MIN( 0.99 * zdep, wsbio3(ji,jj,ikt) ) 
     212         END DO 
     213      END DO 
     214 
    198215#if ! defined key_sed 
    199216      ! Computation of the sediment denitrification proportion: The metamodel from midlleburg (2006) is being used 
     
    204221              ikt = mbkt(ji,jj) 
    205222# if defined key_kriest 
    206               zflx =    trn(ji,jj,ikt,jppoc) * wsbio3(ji,jj,ikt)    * 1E3 * 1E6 / 1E4 
     223              zflx =    trn(ji,jj,ikt,jppoc) * zwsbio3(ji,jj)    * 1E3 * 1E6 / 1E4 
    207224# else 
    208               zflx = (  trn(ji,jj,ikt,jpgoc) * wsbio4(ji,jj,ikt)   & 
    209                 &     + trn(ji,jj,ikt,jppoc) * wsbio3(ji,jj,ikt) )  * 1E3 * 1E6 / 1E4 
     225              zflx = (  trn(ji,jj,ikt,jpgoc) * zwsbio4(ji,jj)   & 
     226                &     + trn(ji,jj,ikt,jppoc) * zwsbio3(ji,jj) )  * 1E3 * 1E6 / 1E4 
    210227#endif 
    211228              zflx  = LOG10( MAX( 1E-3, zflx ) ) 
     
    227244            ikt = mbkt(ji,jj)  
    228245# if defined key_kriest 
    229             zwork1(ji,jj) = trn(ji,jj,ikt,jpgsi) * wscal (ji,jj,ikt) 
    230             zwork2(ji,jj) = trn(ji,jj,ikt,jppoc) * wsbio3(ji,jj,ikt) 
     246            zwork1(ji,jj) = trn(ji,jj,ikt,jpgsi) * zwscal (ji,jj) 
     247            zwork2(ji,jj) = trn(ji,jj,ikt,jppoc) * zwsbio3(ji,jj) 
    231248# else 
    232             zwork1(ji,jj) = trn(ji,jj,ikt,jpgsi) * wsbio4(ji,jj,ikt) 
    233             zwork2(ji,jj) = trn(ji,jj,ikt,jpgoc) * wsbio4(ji,jj,ikt) + trn(ji,jj,ikt,jppoc) * wsbio3(ji,jj,ikt)  
     249            zwork1(ji,jj) = trn(ji,jj,ikt,jpgsi) * zwsbio4(ji,jj) 
     250            zwork2(ji,jj) = trn(ji,jj,ikt,jpgoc) * zwsbio4(ji,jj) + trn(ji,jj,ikt,jppoc) * zwsbio3(ji,jj)  
    234251# endif 
    235252            ! For calcite, burial efficiency is made a function of saturation 
    236253            zfactcal      = MIN( excess(ji,jj,ikt), 0.2 ) 
    237254            zfactcal      = MIN( 1., 1.3 * ( 0.2 - zfactcal ) / ( 0.4 - zfactcal ) ) 
    238             zwork3(ji,jj) = trn(ji,jj,ikt,jpcal) * wscal (ji,jj,ikt) * 2.e0 * zfactcal 
     255            zwork3(ji,jj) = trn(ji,jj,ikt,jpcal) * zwscal(ji,jj) * 2.e0 * zfactcal 
    239256         END DO 
    240257      END DO 
     
    256273            ikt  = mbkt(ji,jj) 
    257274            zdep = xstep / fse3t(ji,jj,ikt) 
    258             zwsbio4 = wsbio4(ji,jj,ikt) * zdep 
    259             zwscal  = wscal (ji,jj,ikt) * zdep 
     275            zws4 = zwsbio4(ji,jj) * zdep 
     276            zwsc = zwscal (ji,jj) * zdep 
    260277# if defined key_kriest 
    261             zsiloss = trn(ji,jj,ikt,jpgsi) * zwsbio4 
     278            zsiloss = trn(ji,jj,ikt,jpgsi) * zws4 
    262279# else 
    263             zsiloss = trn(ji,jj,ikt,jpgsi) * zwscal 
     280            zsiloss = trn(ji,jj,ikt,jpgsi) * zwsc 
    264281# endif 
    265             zcaloss = trn(ji,jj,ikt,jpcal) * zwscal 
     282            zcaloss = trn(ji,jj,ikt,jpcal) * zwsc 
    266283            ! 
    267284            trn(ji,jj,ikt,jpgsi) = trn(ji,jj,ikt,jpgsi) - zsiloss 
     
    282299            ikt     = mbkt(ji,jj) 
    283300            zdep    = xstep / fse3t(ji,jj,ikt) 
    284             zwsbio4 = wsbio4(ji,jj,ikt) * zdep 
    285             zwsbio3 = wsbio3(ji,jj,ikt) * zdep 
     301            zws4 = zwsbio4(ji,jj) * zdep 
     302            zws3 = zwsbio3(ji,jj) * zdep 
    286303# if ! defined key_kriest 
    287             trn(ji,jj,ikt,jpgoc) = trn(ji,jj,ikt,jpgoc) - trn(ji,jj,ikt,jpgoc) * zwsbio4 
    288             trn(ji,jj,ikt,jppoc) = trn(ji,jj,ikt,jppoc) - trn(ji,jj,ikt,jppoc) * zwsbio3 
    289             trn(ji,jj,ikt,jpbfe) = trn(ji,jj,ikt,jpbfe) - trn(ji,jj,ikt,jpbfe) * zwsbio4 
    290             trn(ji,jj,ikt,jpsfe) = trn(ji,jj,ikt,jpsfe) - trn(ji,jj,ikt,jpsfe) * zwsbio3 
    291             zwstpoc =  trn(ji,jj,ikt,jpgoc) * zwsbio4 + trn(ji,jj,ikt,jppoc) * zwsbio3  
     304            trn(ji,jj,ikt,jpgoc) = trn(ji,jj,ikt,jpgoc) - trn(ji,jj,ikt,jpgoc) * zws4 
     305            trn(ji,jj,ikt,jppoc) = trn(ji,jj,ikt,jppoc) - trn(ji,jj,ikt,jppoc) * zws3 
     306            trn(ji,jj,ikt,jpbfe) = trn(ji,jj,ikt,jpbfe) - trn(ji,jj,ikt,jpbfe) * zws4 
     307            trn(ji,jj,ikt,jpsfe) = trn(ji,jj,ikt,jpsfe) - trn(ji,jj,ikt,jpsfe) * zws3 
     308            zwstpoc              =  trn(ji,jj,ikt,jpgoc) * zws4 + trn(ji,jj,ikt,jppoc) * zws3  
    292309# else 
    293             trn(ji,jj,ikt,jpnum) = trn(ji,jj,ikt,jpnum) - trn(ji,jj,ikt,jpnum) * zwsbio4 
    294             trn(ji,jj,ikt,jppoc) = trn(ji,jj,ikt,jppoc) - trn(ji,jj,ikt,jppoc) * zwsbio3 
    295             trn(ji,jj,ikt,jpsfe) = trn(ji,jj,ikt,jpsfe) - trn(ji,jj,ikt,jpsfe) * zwsbio3 
    296             zwstpoc = trn(ji,jj,ikt,jppoc) * zwsbio3  
     310            trn(ji,jj,ikt,jpnum) = trn(ji,jj,ikt,jpnum) - trn(ji,jj,ikt,jpnum) * zws4 
     311            trn(ji,jj,ikt,jppoc) = trn(ji,jj,ikt,jppoc) - trn(ji,jj,ikt,jppoc) * zws3 
     312            trn(ji,jj,ikt,jpsfe) = trn(ji,jj,ikt,jpsfe) - trn(ji,jj,ikt,jpsfe) * zws3 
     313            zwstpoc = trn(ji,jj,ikt,jppoc) * zws3  
    297314# endif 
    298315 
     
    383400      ! 
    384401      CALL wrk_dealloc( jpi, jpj, zdenit2d, zwork1, zwork2, zwork3, zwork4 ) 
     402      CALL wrk_dealloc( jpi, jpj, zwsbio3, zwsbio4, zwscal ) 
    385403      CALL wrk_dealloc( jpi, jpj, jpk, znitrpot ) 
    386404      ! 
Note: See TracChangeset for help on using the changeset viewer.