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

Changeset 6530


Ignore:
Timestamp:
2016-05-13T14:28:44+02:00 (8 years ago)
Author:
cetlod
Message:

1st implementation of PISCES GAS

Location:
branches/CNRS/dev_r6526_PISCES_GAS/NEMOGCM
Files:
19 added
15 edited

Legend:

Unmodified
Added
Removed
  • branches/CNRS/dev_r6526_PISCES_GAS/NEMOGCM/CONFIG/cfg.txt

    r6348 r6530  
    77AMM12 OPA_SRC 
    88ORCA2_OFF_PISCES OPA_SRC OFF_SRC TOP_SRC 
     9ORCA2_OFF_PISCES_GAS OPA_SRC OFF_SRC TOP_SRC 
    910ORCA2_LIM_PISCES OPA_SRC LIM_SRC_2 NST_SRC TOP_SRC 
    1011ORCA2_LIM3 OPA_SRC LIM_SRC_3 NST_SRC 
  • branches/CNRS/dev_r6526_PISCES_GAS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zche.F90

    r6287 r6530  
    123123   REAL(wp) :: devk53  = 0. 
    124124   REAL(wp) :: devk54  = 0.0794E-3       
    125    REAL(wp) :: devk55  = 0.3692E-3       
     125   REAL(wp) :: devk55  = 0.3692E-3      
     126 
     127   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   chemn2o  !  Solubility of N2O 
     128   REAL(wp), PUBLIC ::   atn2o   = 284.472 
     129   REAL(wp) ::   nx0 
     130   REAL(wp) ::   nx1 
     131   REAL(wp) ::   nx2 
     132   REAL(wp) ::   nx22 
     133   REAL(wp) ::   nx3 
     134   REAL(wp) ::   nx4 
     135   REAL(wp) ::   nx5 
     136   ! 
     137   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   chemcos  !  Solubilities of CO, COS and isoprene 
     138   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   k_hydr   ! TL : constant for OCS hydrolysis 
     139   REAL(wp), PUBLIC ::   atco   = 90.e-9    ! units atm (90 ppbv) 
     140   REAL(wp), PUBLIC ::   atisp  = 0.        ! 5.e-12   ! units atm 
     141   REAL(wp) ::   coatm  = 1. / ( 1.e+9 )  ! TEST LB  
     142   REAL(wp) ::   ispatm = 1. / ( 1.e+9 * 17.e-12 )   ! conversion factor for nL --> L and 1/atco for units in atm-1 
     143   REAL(wp) ::   co1    = -169.4951      ! Solubility constants for CO in nL/L 
     144   REAL(wp) ::   co2    =  263.5657      ! (from Moist Air at 1 atm total Pressure) 
     145   REAL(wp) ::   co3    =  159.2552      ! from Table VI for Eq 7 of Wiesenburg and Guinasso, 1979.      
     146   REAL(wp) ::   co4    = -25.4967 
     147   REAL(wp) ::   co5    =  0.051198 
     148   REAL(wp) ::   co6    = -0.044591 
     149   REAL(wp) ::   co7    =  0.0086462 
     150 
     151   REAL(wp) ::   isp1   = -17.85      ! Solubility constants for isoprene in non-saline water 
     152   REAL(wp) ::   isp2   =  4130.          ! van't Hoff-type equation parameters; isp1 = dimensionless ; isp2 = K 
     153                                          ! from Mochalski et al., 2011 (Table 
     154                                          ! 1) 
     155                                          ! (J.Breath Res., 
     156                                          ! doi:10.1088/1752-7155/5/4/046010) 
     157   REAL(wp) ::   cos1   = 12.722      ! Solubility constants for OCS in saline water 
     158   REAL(wp) ::   cos2   = -3496.          ! Johnson et Harrison JGR, VOL. 91, NO. D7, PAGES 7883-7888, JUNE 20, 1986 
     159   REAL(wp) ::   cos_hydr5   = 4.19*1.e12      ! Kamyshn, 2003  
     160   REAL(wp) ::   cos_hydr6   = -12110.           !  
     161   REAL(wp) ::   cos_hydr7   = 1.41*1.e+18      !  
     162   REAL(wp) ::   cos_hydr8   = -11580.          !  
     163   REAL(wp) ::   cos_hydr1   = 24.3      ! Vonhobe, 2003  
     164   REAL(wp) ::   cos_hydr2   = -10450.   !  
     165   REAL(wp) ::   cos_hydr3   = 22.8      !  
     166   REAL(wp) ::   cos_hydr4   = -6040.    !  exp(24.3-10450./Tkel)+exp(22.8-6040./Tkel)*(kw/zph)  
     167   REAL(wp) ::   kw   = 1E-14            ! kw = [OH-][H3O+] for hydrolysis purpose 
     168   ! 
     169  
    126170 
    127171   !!* Substitution 
     
    150194      REAL(wp) ::   zckb , zck1 , zck2  , zckw  , zak1 , zak2  , zakb , zaksp0, zakw 
    151195      REAL(wp) ::   zst  , zft  , zcks  , zckf  , zaksp1 
     196      REAL(wp) ::   zph, zfact 
     197      REAL(wp) ::   ztco , ztco2, ztco3, ztco4, zco, zisp, zcos 
     198      REAL(wp) ::   znx 
     199 
    152200      !!--------------------------------------------------------------------- 
    153201      ! 
     
    199247        END DO 
    200248 
     249      IF( lk_gas ) THEN 
     250      ! N2O SOLUBILITY  
     251      ! ------------------------------- 
     252!CDIR NOVERRCHK 
     253         DO jj = 1, jpj 
     254!CDIR NOVERRCHK 
     255           DO ji = 1, jpi 
     256               !                             ! SET ABSOLUTE TEMPERATURE 
     257               ztkel = tsn(ji,jj,1,jp_tem) + 273.16 
     258               zt    = ztkel * 0.01 
     259               zt2   = zt * zt 
     260               zsal  = tsn(ji,jj,1,jp_sal) + ( 1.- tmask(ji,jj,1) ) * 35. 
     261               zsal2 = zsal * zsal 
     262               zlogt = LOG( zt ) 
     263               ! 
     264               znx = nx0 + nx1 / zt + nx2 * zlogt + nx22 * zt2 + zsal *( nx3 + nx4 * zt + nx5 * zt2 ) 
     265               chemn2o(ji,jj) = EXP( znx ) * 1.e-9 
     266           END DO 
     267         END DO 
     268      ! 
     269!CDIR NOVERRCHK 
     270      ! CO, ISOPRENE, COS SOLUBILITY  
     271      ! ------------------------------- 
     272         DO jj = 1, jpj 
     273!CDIR NOVERRCHK 
     274            DO ji = 1, jpi 
     275               !                             ! SET ABSOLUTE TEMPERATURE 
     276               ztkel = tsn(ji,jj,1,jp_tem) + 273.16 
     277                                         ! LN(K0) OF SOLUBILITY OF CO in nl/L 
     278                                         ! (EQ.7, WIESENBURG AND GUINASSO,1979) 
     279               zsal  = tsn(ji,jj,1,jp_sal) + ( 1.- tmask(ji,jj,1) ) * 35. 
     280               ztco  = 100. / ztkel 
     281               ztco2 = LOG( 1. / ztco ) 
     282               ztco3 = 1. / ztco 
     283               ztco4 = ztco3 * ztco3 
     284               zco   = co1 + co2 * ztco + co3 * ztco2 + co4 * ztco3  & 
     285                 &    + zsal * ( co5 + co6 * ztco3 + co7 * ztco4 ) 
     286                                      ! LN (K0) OF SOLUBILITY OF ISOPRENE (EQ.4, 
     287                                      ! Mochalski et al., 2011) 
     288               zisp  = isp1 + isp2 / ztkel 
     289               zcos  = cos1 + cos2 / ztkel 
     290                     !                ! SET SOLUBILITIES OF CO AND ISOPRENE 
     291               chemcos(ji,jj,1) = ( EXP( zco  ) * coatm ) * oxyco ! mol/(L atm) 
     292               chemcos(ji,jj,2) = 100 * EXP( zisp )               ! mol/(L atm) 
     293               chemcos(ji,jj,3) = 0.022 * EXP(2100.*( (1./ztkel) - 1./298.15 )) !mol/(L atm) 
     294            END DO 
     295         END DO 
     296      ENDIF 
    201297 
    202298 
     
    337433      !!                     ***  ROUTINE p4z_che_alloc  *** 
    338434      !!---------------------------------------------------------------------- 
    339       ALLOCATE( sio3eq(jpi,jpj,jpk), fekeq(jpi,jpj,jpk), chemc(jpi,jpj), chemo2(jpi,jpj,jpk),   & 
    340       &         STAT=p4z_che_alloc ) 
     435      INTEGER :: ierr(2) 
     436 
     437      ierr(:) = 0 
     438      ALLOCATE( sio3eq(jpi,jpj,jpk), fekeq(jpi,jpj,jpk), chemc(jpi,jpj), chemo2(jpi,jpj,jpk), STAT= ierr(1) ) 
     439      IF (lk_gas) ALLOCATE ( chemcos(jpi,jpj,3), k_hydr(jpi,jpj,jpk), chemn2o(jpi,jpj), STAT= ierr(2) ) 
     440 
     441      p4z_che_alloc = MAXVAL( ierr ) 
     442       
    341443      ! 
    342444      IF( p4z_che_alloc /= 0 )   CALL ctl_warn('p4z_che_alloc : failed to allocate arrays.') 
  • branches/CNRS/dev_r6526_PISCES_GAS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zflx.F90

    r6287 r6530  
    9090      CHARACTER (len=25) :: charout 
    9191      REAL(wp), POINTER, DIMENSION(:,:) :: zkgco2, zkgo2, zh2co3, zoflx, zw2d  
     92      REAL(wp) ::   zsch_dms, zfludms,zflddms 
     93      REAL(wp) ::   zfldco, zfluco, zsch_co, zkin_vis, zD 
     94      REAL(wp) ::   zfldcos, zflucos 
     95      REAL(wp) ::   zfldisp, zfluisp, zsch_isp, zsch_cos 
     96      REAL(wp) ::   zsch_n2o, zfldn2o, zflun2o 
     97      REAL(wp), POINTER, DIMENSION(:,:) :: zkgdms, zdmsflx 
     98      REAL(wp), POINTER, DIMENSION(:,:) :: zkgco, zcoflx, zkgisp, zispflx 
     99      REAL(wp), POINTER, DIMENSION(:,:) :: zH_cos, zkgcos, zcosflx 
     100      REAL(wp), POINTER, DIMENSION(:,:) :: zkgn2o, znflx 
     101 
    92102      !!--------------------------------------------------------------------- 
    93103      ! 
     
    95105      ! 
    96106      CALL wrk_alloc( jpi, jpj, zkgco2, zkgo2, zh2co3, zoflx ) 
     107      IF( lk_gas ) THEN 
     108         CALL wrk_alloc( jpi, jpj, zkgco, zcoflx, zkgisp, zispflx ) 
     109         CALL wrk_alloc( jpi, jpj, zcosflx, zkgcos, zH_cos ) 
     110         CALL wrk_alloc( jpi, jpj, zkgdms, zdmsflx ) 
     111         CALL wrk_alloc( jpi, jpj, zkgn2o, znflx ) 
     112      ENDIF 
    97113      ! 
    98114 
     
    181197      END DO 
    182198 
     199      IF( lk_gas ) THEN 
     200!CDIR NOVERRCHK 
     201         DO jj = 1, jpj 
     202!CDIR NOVERRCHK 
     203            DO ji = 1, jpi 
     204               ztc  = MIN( 35., tsn(ji,jj,1,jp_tem) ) 
     205               ztc2 = ztc * ztc 
     206               ztc3 = ztc * ztc2  
     207                 
     208               zsch_dms = 3628.5 - 234.58 * ztc + 7.8601 * ztc2 - 0.1148   * ztc3 
     209               !zsch_co  = 1889.126 - 127.2150  * ztc + 4.499079 * ztc2 - 
     210               !0.08973561 * ztc3 
     211               zsch_co  =  2124 - 140.07 * ztc + 4.3825 * ztc2 - 0.0553 * ztc3  
     212               !  pb with the above equation - this one comes from Zafiriou 2008 see w/ B. Bonsang 
     213               zsch_isp  = 3546.535 - 217.2178 * ztc + 5.732073 * ztc2 - 0.06035193 * ztc3 
     214               !compute Schmidt number for cos, taken from Ulshofer 
     215               zkin_vis = (1.792747 - 0.05126103 * ztc + 0.0005918645 * ztc2 ) * 1.E-6 ! m2/s   
     216               zD = ( 10**( -1010. / ( ztc + 273.15 ) - 1.3246) ) * 1.E-4 !  cm2/s to m2/s 
     217               zsch_cos = zkin_vis / zD 
     218               zkgdms(ji,jj) = zkgwan * SQRT( 660./ zsch_dms ) 
     219               zkgco (ji,jj) = zkgwan * SQRT( 660./ zsch_co ) 
     220               zkgisp(ji,jj) = zkgwan * SQRT( 660./ zsch_isp) 
     221               zkgcos(ji,jj) = zkgwan * SQRT( 660./ zsch_cos) 
     222               zH_cos(ji,jj) = EXP( 12.722 - 3496./ ( ztc + 273.15 ) ) + rtrn 
     223            ! 
     224               zsch_n2o = 2301.1 - 151.1 * ztc + 4.7364 * ztc2 - 0.059431 * ztc3 
     225               zkgn2o(ji,jj) = zkgwan * SQRT( 660./ zsch_n2o ) 
     226            END DO 
     227         END DO 
     228         ! 
     229      ENDIF 
     230 
    183231      DO jj = 1, jpj 
    184232         DO ji = 1, jpi 
     
    197245         END DO 
    198246      END DO 
     247 
     248 
     249      IF( lk_gas ) THEN 
     250         DO jj = 1, jpj 
     251            DO ji = 1, jpi 
     252              ! Compute DMS flux                                                  
     253               zfludms = trb(ji,jj,1,jpdms) * tmask(ji,jj,1) * zkgdms(ji,jj) 
     254               zdmsflx(ji,jj) = -1. *  zfludms 
     255               tra(ji,jj,1,jpdms) = tra(ji,jj,1,jpdms) - ( zfludms ) / fse3t(ji,jj,1) 
     256 
     257               ! Compute CO flux  
     258               zfldco = atco * patm(ji,jj) * chemcos(ji,jj,1) *tmask(ji,jj,1) * zkgco(ji,jj) 
     259               zfluco = trb(ji,jj,1,jpco) * tmask(ji,jj,1) * zkgco(ji,jj) 
     260               zcoflx(ji,jj) = zfldco - zfluco 
     261               tra(ji,jj,1,jpco) = tra(ji,jj,1,jpco) + zcoflx(ji,jj) / fse3t(ji,jj,1) 
     262 
     263               ! Compute isoprene flux  
     264               zfldisp = atisp * patm(ji,jj) * chemcos(ji,jj,2) *tmask(ji,jj,1) * zkgisp(ji,jj)         ! (mol/L) * (m/s) 
     265               zfluisp = trb(ji,jj,1,jpisp) * tmask(ji,jj,1) * zkgisp(ji,jj) 
     266               zispflx(ji,jj) = zfldisp - zfluisp 
     267               tra(ji,jj,1,jpisp) = tra(ji,jj,1,jpisp) + zispflx(ji,jj) / fse3t(ji,jj,1) 
     268 
     269               ! Compute COS flux  
     270               zfldcos = atccos * patm(ji,jj) * chemcos(ji,jj,3) *tmask(ji,jj,1) *zkgcos(ji,jj)         ! (mol/L) * (m/s) 
     271               zflucos = trb(ji,jj,1,jpcos) * tmask(ji,jj,1) * zkgcos(ji,jj) 
     272               zcosflx(ji,jj) = zfldcos - zflucos 
     273               tra(ji,jj,1,jpcos) = tra(ji,jj,1,jpcos) + zcosflx(ji,jj) / fse3t(ji,jj,1) 
     274 
     275              ! Compute N2O flux                                                  
     276               zfldn2o = atcn2o * patm(ji,jj) * chemn2o(ji,jj) *tmask(ji,jj,1) * zkgn2o(ji,jj) 
     277               zflun2o = trb(ji,jj,1,jpn2o) * tmask(ji,jj,1) * zkgn2o(ji,jj) 
     278               znflx(ji,jj) = zfldn2o - zflun2o 
     279               tra(ji,jj,1,jpn2o) = tra(ji,jj,1,jpn2o) + znflx(ji,jj) / fse3t(ji,jj,1) 
     280            END DO 
     281         END DO 
     282      ENDIF 
     283 
    199284 
    200285      t_oce_co2_flx     = glob_sum( oce_co2(:,:) )                    !  Total Flux of Carbon 
     
    228313         ENDIF 
    229314         IF( iom_use( "Dpo2" ) )  THEN 
    230            zw2d(:,:) = ( atcox * patm(:,:) - atcox * trn(:,:,1,jpoxy) / ( chemo2(:,:,1) + rtrn ) ) * tmask(:,:,1) 
     315           zw2d(:,:) = ( atcox * patm(:,:) - atcox * trb(:,:,1,jpoxy) / ( chemo2(:,:,1) + rtrn ) ) * tmask(:,:,1) 
    231316           CALL iom_put( "Dpo2"  , zw2d ) 
    232317         ENDIF 
     
    234319         CALL iom_put( "tcflxcum" , t_oce_co2_flx_cum )      ! molC 
    235320         ! 
     321         IF (lk_gas) THEN 
     322         IF ( iom_use( "DMSflx" ) )  THEN 
     323           zw2d(:,:) = zdmsflx(:,:) * 1000 * tmask(:,:,1) 
     324           CALL iom_put( "DMSflx"  , zw2d ) 
     325         ENDIF  
     326         IF ( iom_use( "COflx" ) )  THEN 
     327           zw2d(:,:) = zcoflx(:,:) * 1000 * tmask(:,:,1) 
     328           CALL iom_put( "COflx"  , zw2d ) 
     329         ENDIF 
     330         IF ( iom_use( "ISPflx" ) )  THEN 
     331           zw2d(:,:) = zispflx(:,:) * 1000 * tmask(:,:,1) 
     332           CALL iom_put( "ISPflx"  , zw2d ) 
     333         ENDIF 
     334         IF ( iom_use( "COSflx" ) )  THEN 
     335           zw2d(:,:) = zcosflx(:,:) * 1000 * tmask(:,:,1) 
     336           CALL iom_put( "COSflx"  , zw2d ) 
     337         ENDIF 
     338         IF ( iom_use( "H_cos" ) )  THEN 
     339           zw2d(:,:) = zH_cos(:,:) * tmask(:,:,1) 
     340           CALL iom_put( "H_cos"  , zw2d ) 
     341         ENDIF 
     342         IF ( iom_use( "N2Oflx" ) )  THEN 
     343           zw2d(:,:) = znflx(:,:) * 1000 * tmask(:,:,1) 
     344           CALL iom_put( "N2Oflx"  , zw2d ) 
     345         ENDIF 
     346         ENDIF 
     347 
    236348         CALL wrk_dealloc( jpi, jpj, zw2d ) 
    237349      ELSE 
     
    261373      !! ** input   :   Namelist nampisext 
    262374      !!---------------------------------------------------------------------- 
    263       NAMELIST/nampisext/ln_co2int, atcco2, clname, nn_offset 
     375      NAMELIST/nampisext/ln_co2int, atcco2, clname,  & 
     376#ifdef key_gas 
     377                   &  atccos, atcn2o,  & 
     378#endif 
     379                   &  nn_offset 
    264380      INTEGER :: jm 
    265381      INTEGER :: ios                 ! Local integer output status for namelist read 
  • branches/CNRS/dev_r6526_PISCES_GAS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zint.F90

    r6204 r6530  
    4141      INTEGER, INTENT( in ) ::   kt      ! ocean time-step index 
    4242      ! 
    43       INTEGER  :: ji, jj                 ! dummy loop indices 
     43      INTEGER  :: ji, jj, jk             ! dummy loop indices 
    4444      REAL(wp) :: zvar                   ! local variable 
     45      REAL(wp) :: zo2                    ! local variable 
     46      
    4547      !!--------------------------------------------------------------------- 
    4648      ! 
     
    6668      ENDIF 
    6769      ! 
     70      ! Computation of the suboxic term for N2O production 
     71      ! ---------------------------------------- 
     72      IF (lk_gas) THEN 
     73         ! 
     74         xn2osub(:,:,:) = 0.0 
     75         ! 
     76         DO ji = 1, jpi 
     77           DO jj = 1, jpj 
     78            DO jk = 11, jpk 
     79 
     80               IF (trb(ji,jj,jk,jpoxy)*1.e6.lt.xlow) THEN 
     81                      zo2=trb(ji,jj,jk,jpoxy)*1.e6 
     82               ELSE IF ((trb(ji,jj,jk,jpoxy)*1.e6.ge.xlow).and.(trb(ji,jj,jk,jpoxy)*1.e6.lt.xhigh)) THEN 
     83                      zo2=xlow 
     84                ELSE 
     85                      zo2 = 0.7*xlow*exp(-0.1*(trb(ji,jj,jk,jpoxy)*1.e6 - xhigh))  & 
     86                     &   +  0.3*xlow*exp(-0.01*(trb(ji,jj,jk,jpoxy)*1.e6 - xhigh)) 
     87                ENDIF 
     88                
     89                
     90               xn2osub(ji,jj,jk) = alphan2o + betan2o * zo2 
     91             ENDDO 
     92            ENDDO 
     93          ENDDO 
     94 
     95      ENDIF 
     96      ! 
    6897      IF( nn_timing == 1 )  CALL timing_stop('p4z_int') 
    6998      ! 
     
    81110 
    82111   !!====================================================================== 
    83 END MODULE p4zint 
     112END MODULE  p4zint 
  • branches/CNRS/dev_r6526_PISCES_GAS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zlim.F90

    r6204 r6530  
    4747   REAL(wp), PUBLIC ::  qdfelim     !:  optimal Fe quota for diatoms 
    4848   REAL(wp), PUBLIC ::  caco3r      !:  mean rainratio  
    49  
     49#ifdef key_gas 
     50     REAL(wp), PUBLIC ::  xknfer    !: DMS FER  half saturation for nano 
     51     REAL(wp), PUBLIC ::  xkdfer    !: DMS FER  half saturation for diatoms 
     52     REAL(wp), PUBLIC ::  xkdocdms  !: DMS DOC  half saturation  
     53     REAL(wp), PUBLIC ::  xknpo4    !: DMS PO4  half saturation for nano  
     54     REAL(wp), PUBLIC ::  xkdpo4    !: DMS PO4  half saturation for diatoms 
     55     REAL(wp), PUBLIC ::  xkdms     !:  DMS half saturation for bacterial loss  
     56     REAL(wp), PUBLIC ::  xscdiat   !:  S/C ratio for diatoms 
     57     REAL(wp), PUBLIC ::  xscnanom  !:  min S/C ratio for nano 
     58     REAL(wp), PUBLIC ::  xscnanov  !:  var S/C ratio for nano 
     59     REAL(wp), PUBLIC ::  xysvar    !:  DMSP-to-DMS yield var 
     60     REAL(wp), PUBLIC ::  xysmin    !:  DMSP-to-DMS yield min  
     61#endif 
    5062   ! Coefficient for iron limitation 
    5163   REAL(wp) ::  xcoef1   = 0.0016  / 55.85   
     
    7991      REAL(wp) ::   z1_trbdia, z1_trbphy, ztem1, ztem2, zetot1, zetot2 
    8092      REAL(wp) ::   zdenom, zratio, zironmin 
    81       REAL(wp) ::   zconc1d, zconc1dnh4, zconc0n, zconc0nnh4    
     93      REAL(wp) ::   zconc1d, zconc1dnh4, zconc0n, zconc0nnh4  
     94#ifdef key_gas 
     95       REAL(wp) ::   zlim5, zferdms, zpo4dms 
     96       REAL(wp) ::   zstress1, zstress2, zstress2d, zstress3, zstress3d  
     97       REAL(wp) ::   zstress, zstressd, zstresst 
     98#endif 
    8299      !!--------------------------------------------------------------------- 
    83100      ! 
     
    161178      END DO 
    162179 
     180      IF( lk_gas ) THEN 
     181         DO jk = 1, jpkm1 
     182            DO jj = 1, jpj 
     183               DO ji = 1, jpi 
     184                  ! new parameterisation (Vogt) below: 
     185                  zpo4dms = MAX(trb(ji,jj,jk,jppo4), 4.88E-9 )  ! 0.1nanoM po4=0.122E-7 
     186                  zlim1   = zpo4dms / ( zpo4dms + xknpo4 ) 
     187                  zferdms = MAX( trb(ji,jj,jk,jpfer), 2.E-11 ) 
     188                  zlim2   = zferdms / ( zferdms + xknfer ) 
     189                  zlim3   = trb(ji,jj,jk,jpdoc) / ( trb(ji,jj,jk,jpdoc) + xkdocdms ) 
     190                  zlim4   = trb(ji,jj,jk,jpdms) / ( trb(ji,jj,jk,jpdms) + xkdms) 
     191                  ! L-bac-light 
     192                  xlimbac2(ji,jj,jk) = MIN( zlim1, zlim2, zlim3 ) 
     193 
     194                  zlim5 = MIN( 1., MAX( 0.66, ( 1. - ( ( etot(ji,jj,jk) / 80.)**6 ) + 0.18 ) ) ) 
     195                  xlimdms(ji,jj,jk) = MIN( ( MIN(zlim1,zlim2,zlim3) ), zlim4 ) * zlim5  ! normal 
     196               END DO 
     197            END DO 
     198         END DO 
     199      ENDIF 
     200 
    163201      ! Compute the fraction of nanophytoplankton that is made of calcifiers 
    164202      ! -------------------------------------------------------------------- 
     
    187225      END DO 
    188226      ! 
     227      IF( lk_gas ) THEN 
     228         ! Compute S/C ratios and dmsp-to-dms yield for DMS module 
     229         DO jk = 1, jpkm1 
     230            DO jj = 1, jpj 
     231               DO ji = 1, jpi 
     232                  !  Bopp 
     233                  xeffic(ji,jj,jk) = xysmin + xysvar * ( 1. - xlimbac2(ji,jj,jk)) 
     234                  ! Vogt:  xeffic(ji,jj,jk) =  xysmin + xysvar * 
     235                  ! xlimbac2(ji,jj,jk) 
     236                  zstress1 = etot(ji,jj,jk) / 80. 
     237                  ! stress due to Fe        
     238                  zferdms = MAX( trb(ji,jj,jk,jpfer), 2.E-11 ) 
     239                  zstress2  = xknfer / ( xknfer + zferdms ) 
     240                  zstress2d = xkdfer / ( xkdfer + zferdms ) 
     241                  ! stress due to PO4 
     242                  zpo4dms   = MAX( trb(ji,jj,jk,jppo4), 4.88E-9 ) 
     243                  zstress3  = 0.7 * ( xknpo4 / ( xknpo4 + zpo4dms) ) 
     244                  zstress3d = 0.7 * ( xkdpo4 / ( xkdpo4 + zpo4dms) ) 
     245                  ! total stress due to nutrients and light 
     246                  zstress  = MAX( zstress1, zstress2 , zstress3 , 0.30 ) * 2. 
     247                  zstressd = MAX( zstress1, zstress2d, zstress3d, 0.30 ) * 2. 
     248                  zstress  = zstress  - 0.25 
     249                  zstressd = zstressd - 0.25 
     250                  ! temperature effect 
     251                  zstresst = 1. + ( 1. / ( ( tsn(ji,jj,jk,jp_tem) + 2.5 )**6 ) ) 
     252 
     253                  ! calculate the S/C quota 
     254                  xcelln(ji,jj,jk) = xscnanom + xscnanov * zstress * zstresst 
     255                  xcelld(ji,jj,jk) = xscdiat + xscdiat * zstressd * zstresst 
     256              END DO 
     257            END DO 
     258         END DO 
     259      ENDIF 
    189260      ! 
    190261      IF( lk_iomput .AND. knt == nrdttrc ) THEN        ! save output diagnostics 
     
    214285      !!---------------------------------------------------------------------- 
    215286 
    216       NAMELIST/nampislim/ concnno3, concdno3, concnnh4, concdnh4, concnfer, concdfer, concbfe,   & 
    217          &                concbno3, concbnh4, xsizedia, xsizephy, xsizern, xsizerd,          &  
     287        NAMELIST/nampislim/ concnno3, concdno3, concnnh4, concdnh4, concnfer, concdfer, concbfe,   & 
     288         &                concbno3, concbnh4, xsizedia, xsizephy, xsizern, xsizerd,          & 
     289#ifdef key_gas 
     290         &                xkdms, xscdiat, xscnanom, xscnanov, xysmin, xysvar, xknfer, xkdfer, & 
     291         &                xkdocdms, xknpo4, xkdpo4, & 
     292#endif 
    218293         &                xksi1, xksi2, xkdoc, qnfelim, qdfelim, caco3r 
     294       
    219295      INTEGER :: ios                 ! Local integer output status for namelist read 
    220296 
     
    251327         WRITE(numout,*) '    optimal Fe quota for nano.               qnfelim   = ', qnfelim 
    252328         WRITE(numout,*) '    Optimal Fe quota for diatoms             qdfelim   = ', qdfelim 
     329         IF( lk_gas ) THEN 
     330            WRITE(numout,*) '    DMS half saturation for bacterial loss   xkdms    = ', xkdms 
     331            WRITE(numout,*) '    S/C ratio for diatoms                    xscdiat  = ', xscdiat 
     332            WRITE(numout,*) '    min S/C ratio for nano                   xscnanom = ', xscnanom 
     333            WRITE(numout,*) '    var S/C ratio for nano                   xscnanov = ', xscnanov 
     334            WRITE(numout,*) '    DMSP-to-DMS yield min                    xysmin   = ', xysmin 
     335            WRITE(numout,*) '    DMSP-to-DMS yield var                    xysvar   = ', xysvar 
     336            WRITE(numout,*) '    DMS FER  half saturation for nano        xknfer   = ', xknfer 
     337            WRITE(numout,*) '    DMS FER  half saturation for diatoms     xkdfer   = ', xkdfer 
     338            WRITE(numout,*) '    DMS DOC  half saturation                 xkdocdms = ', xkdocdms 
     339            WRITE(numout,*) '    DMS PO4  half saturation for nano        xknpo4   = ', xknpo4 
     340            WRITE(numout,*) '    DMS PO4  half saturation for diatoms     xkdpo4   = ', xkdpo4 
     341        ENDIF 
    253342      ENDIF 
    254343 
     
    265354 
    266355   !!====================================================================== 
    267 END MODULE p4zlim 
     356END MODULE  p4zlim 
  • branches/CNRS/dev_r6526_PISCES_GAS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmeso.F90

    r6204 r6530  
    244244                 &                + zgraztotf * unass2 - zfracfe 
    245245#endif 
     246               IF( lk_gas )  THEN 
     247                       tra(ji,jj,jk,jpdms) = tra(ji,jj,jk,jpdms) & 
     248                   &                 + xeffic(ji,jj,jk) * ( xcelln(ji,jj,jk) * zgrazn + xcelld(ji,jj,jk) * zgrazd ) 
     249                       tra(ji,jj,jk,jpn2o) = tra(ji,jj,jk,jpn2o) + xn2osub(jpi,jpj,jpk) * o2ut * zgrarsig 
     250               ENDIF 
    246251            END DO 
    247252         END DO 
     
    340345 
    341346   !!====================================================================== 
    342 END MODULE p4zmeso 
     347END MODULE  p4zmeso 
  • branches/CNRS/dev_r6526_PISCES_GAS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmicro.F90

    r6204 r6530  
    186186                                                         - zgrazm * trb(ji,jj,jk,jpnum) / ( trb(ji,jj,jk,jppoc) + rtrn ) 
    187187#endif 
     188               IF( lk_gas )   THEN 
     189                       tra(ji,jj,jk,jpdms) = tra(ji,jj,jk,jpdms) & 
     190                   &                 + xeffic(ji,jj,jk) * ( xcelln(ji,jj,jk) * zgrazp + xcelld(ji,jj,jk) * zgrazsd ) 
     191                       tra(ji,jj,jk,jpn2o) = tra(ji,jj,jk,jpn2o) + xn2osub(jpi,jpj,jpk) * o2ut * zgrarsig 
     192               ENDIF 
    188193            END DO 
    189194         END DO 
     
    273278 
    274279   !!====================================================================== 
    275 END MODULE p4zmicro 
     280END MODULE  p4zmicro 
  • branches/CNRS/dev_r6526_PISCES_GAS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmort.F90

    r6204 r6530  
    131131               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zfracal * zmortp * zfactfe 
    132132#endif 
     133               IF( lk_gas ) & 
     134                  &    tra(ji,jj,jk,jpdms) = tra(ji,jj,jk,jpdms) + xeffic(ji,jj,jk) * xcelln(ji,jj,jk) * zmortp 
    133135            END DO 
    134136         END DO 
     
    214216               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + ( zrespp2 + 0.5 * ztortp2 ) * zfactfe 
    215217#endif 
     218               IF( lk_gas )  & 
     219                  &    tra(ji,jj,jk,jpdms) = tra(ji,jj,jk,jpdms) + xeffic(ji,jj,jk) * xcelld(ji,jj,jk) * zmortp2 
    216220            END DO 
    217221         END DO 
     
    277281 
    278282   !!====================================================================== 
    279 END MODULE p4zmort 
     283END MODULE  p4zmort 
  • branches/CNRS/dev_r6526_PISCES_GAS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zopt.F90

    r6204 r6530  
    3636   REAL(wp) :: xparsw                 !: parlux/3 
    3737   REAL(wp) :: xsi0r                 !:  1. /rn_si0 
     38   ! 
     39   REAL(wp) :: uvlux          ! proportion of UV radiant flux to global solar radiation 
     40   REAL(wp) :: xa350_a300  
     41   REAL(wp) :: xa350_a400 
     42   REAL(wp) :: xa350_a440  
    3843 
    3944   TYPE(FLD), ALLOCATABLE, DIMENSION(:) ::   sf_par      ! structure of input par 
     
    4651   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: emoy           !: averaged PAR in the mixed layer 
    4752   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: ekb, ekg, ekr  !: wavelength (Red-Green-Blue) 
     53#ifdef key_gas 
     54       REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: euv        !: averaged UV in the mixed layer 
     55       REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: a350       !: wavelength (350 for COS) 
     56#endif 
    4857 
    4958   INTEGER  ::   nksrp   ! levels below which the light cannot penetrate ( depth larger than 391 m) 
     
    7887      REAL(wp), POINTER, DIMENSION(:,:  ) :: zdepmoy, zetmp1, zetmp2, zetmp3, zetmp4, zqsr100 
    7988      REAL(wp), POINTER, DIMENSION(:,:,:) :: zpar, ze0, ze1, ze2, ze3 
     89      REAL(wp) ::  za300, za400, za440, zpera440 
    8090      !!--------------------------------------------------------------------- 
    8191      ! 
     
    109119         END DO 
    110120      END DO 
     121      ! 
     122      IF( lk_gas ) THEN 
     123         ! calculation of absorbance coefficient at 350 nm 
     124         DO jk = 1, jpk 
     125            DO jj = 1, jpj 
     126               DO ji = 1, jpi 
     127                  zchl = ( trb(ji,jj,jk,jpnch) + trb(ji,jj,jk,jpdch) + rtrn ) * 1.e6 
     128                  !za300 = 0.429 + 0.079 * LOG10( zchl ) ! Kettle 2001 
     129                  !a350(ji,jj,jk) = max(0.,za300 * xa350_a300) 
     130                  ! 
     131                  !Xu 2001 
     132                  !a350(ji,jj,jk) = 0.0077 + 0.0115 * zchl ! Xu 2001 
     133                  ! 
     134                  !!Morel  
     135                  !za400 = 0.065*zchl**(0.63) 
     136                  !a350(ji,jj,jk) = max(0.,za400 * xa350_a400) 
     137                  ! 
     138                  ! Preiswerk 
     139                  zpera440 = (-26. * LOG10( zchl )) +26. 
     140                  za440 = ((zchl * 0.0448)*zpera440)/(100.-zpera440) 
     141                  a350(ji,jj,jk) = max(0.,za440 * xa350_a440) 
     142                  ! Fichot 
     143                  !C=log10(zchl) 
     144                  !a350(ji,jj,jk) = 
     145                  !exp((0.5346*C)-(0.0263*C*C)-(0.0036*C*C*C)+(0.0012*C*C*C*C)-1.6340) 
     146              END DO 
     147            END DO 
     148         END DO 
     149      ENDIF 
     150 
    111151      !                                        !* Photosynthetically Available Radiation (PAR) 
    112152      !                                        !  -------------------------------------- 
     
    141181         END DO 
    142182         etot_ndcy(:,:,:) =  etot(:,:,:)  
     183      ENDIF 
     184 
     185      IF( lk_gas ) THEN 
     186         IF( l_trcdm2dc ) THEN 
     187            euv(:,:,1) = uvlux * qsr_mean(:,:) * EXP( -0.5 * ze1(:,:,1) ) 
     188         ELSE  
     189            euv(:,:,1) = uvlux * qsr(:,:) * EXP( -0.5 * ze1(:,:,1) ) 
     190         ENDIF 
     191         DO jk = 2, nksrp 
     192!CDIR NOVERRCHK 
     193            DO jj = 1, jpj 
     194!CDIR NOVERRCHK 
     195               DO ji = 1, jpi 
     196                  euv(ji,jj,jk) = euv(ji,jj,jk-1) * EXP( -0.5 * ( ze1(ji,jj,jk-1) + ze1(ji,jj,jk) ) ) 
     197               ENDDO 
     198            ENDDO 
     199         ENDDO 
    143200      ENDIF 
    144201 
     
    218275           IF( iom_use( "PARDM" ) ) CALL iom_put( "PARDM", zpar(:,:,:) * tmask(:,:,:) )  ! Photosynthetically Available Radiation 
    219276           IF( iom_use( "PAR"   ) ) CALL iom_put( "PAR"  , emoy(:,:,:) * tmask(:,:,:) )  ! Photosynthetically Available Radiation 
     277           IF (lk_gas) THEN 
     278              IF( iom_use( "UV"   ) ) CALL iom_put( "UV", euv(:,:,:) * tmask(:,:,:) )  ! Photosynthetically Available Radiation 
     279              IF( iom_use( "A350" ) ) CALL iom_put( "A350"  , a350(:,:,:) * tmask(:,:,:) )  ! Photosynthetically Available Radiation 
     280           ENDIF 
    220281        ENDIF 
    221282      ELSE 
     
    353414      TYPE(FLD_N) ::   sn_par                ! informations about the fields to be read 
    354415      ! 
    355       NAMELIST/nampisopt/cn_dir, sn_par, ln_varpar, parlux 
    356  
     416      NAMELIST/nampisopt/cn_dir, sn_par, ln_varpar, & 
     417#ifdef key_gas 
     418               & uvlux, & 
     419#endif 
     420               & parlux 
    357421      !!---------------------------------------------------------------------- 
    358422 
     
    374438         WRITE(numout,*) '    PAR as a variable fraction of SW     ln_varpar      = ', ln_varpar 
    375439         WRITE(numout,*) '    Default value for the PAR fraction   parlux         = ', parlux 
     440         IF( lk_gas ) & 
     441       &  WRITE(numout,*) '    Proportion of UV radiant flux to global solar radiation uvlux   = ', uvlux 
    376442      ENDIF 
    377443      ! 
     
    411477                         ediat    (:,:,:) = 0._wp 
    412478      IF( ln_qsr_bio )   etot3    (:,:,:) = 0._wp 
     479 
     480      IF( lk_gas )  THEN 
     481        xa350_a300 = 0.36787944117_wp   !  exp(-0.02*(350.-300.))  = exp(-1) 
     482        xa350_a400 = 2.459603_wp        !  exp(-0.018*(350.-400.))  
     483        xa350_a440 = 6.049647_wp        !  exp(-0.02*(350.-440.))  
     484        ! 
     485        euv  (:,:,:) = 0._wp 
     486        a350 (:,:,:) = 0._wp 
     487      ENDIF 
    413488      !  
    414489      IF( nn_timing == 1 )  CALL timing_stop('p4z_opt_init') 
     
    421496      !!                     ***  ROUTINE p4z_opt_alloc  *** 
    422497      !!---------------------------------------------------------------------- 
     498      INTEGER :: ierr(2) 
     499 
     500      ierr(:) = 0 
     501 
    423502      ALLOCATE( ekb(jpi,jpj,jpk)      , ekr(jpi,jpj,jpk), ekg(jpi,jpj,jpk),   & 
    424503        &       enano(jpi,jpj,jpk)    , ediat(jpi,jpj,jpk), & 
    425         &       etot_ndcy(jpi,jpj,jpk), emoy (jpi,jpj,jpk), STAT=p4z_opt_alloc )  
    426          ! 
     504        &       etot_ndcy(jpi,jpj,jpk), emoy (jpi,jpj,jpk), ierr(1) )  
     505 
     506      IF( lk_gas ) ALLOCATE( euv(jpi,jpj,jpk), a350(jpi,jpj,jpk), ierr(2) ) 
     507       
     508      p4z_opt_alloc = MAXVAL( ierr ) 
     509 
    427510      IF( p4z_opt_alloc /= 0 ) CALL ctl_warn('p4z_opt_alloc : failed to allocate arrays.') 
    428511      ! 
     
    439522 
    440523   !!====================================================================== 
    441 END MODULE p4zopt 
     524END MODULE  p4zopt 
  • branches/CNRS/dev_r6526_PISCES_GAS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zprod.F90

    r6204 r6530  
    4545   REAL(wp), PUBLIC ::  fecdm           !: 
    4646   REAL(wp), PUBLIC ::  grosip          !: 
     47#if defined key_gas 
     48   REAL(wp), PUBLIC ::  xnanoco    !: 
     49   REAL(wp), PUBLIC ::  xdiaco     !: 
     50   REAL(wp), PUBLIC ::  xnanoIsp   !: 
     51   REAL(wp), PUBLIC ::  xdiaIsp    !: 
     52#endif 
    4753 
    4854   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   prmax    !: optimal production = f(temperature) 
     
    8894      REAL(wp), POINTER, DIMENSION(:,:,:) :: zpislopead, zpislopead2, zprdia, zprbio, zprdch, zprnch, zysopt, zw3d    
    8995      REAL(wp), POINTER, DIMENSION(:,:,:) :: zprorca, zprorcad, zprofed, zprofen, zprochln, zprochld, zpronew, zpronewd 
     96      REAL(wp) ::  zstep 
     97      REAL(wp), POINTER, DIMENSION(:,:,:) :: zproco, zproisp 
    9098      !!--------------------------------------------------------------------- 
    9199      ! 
     
    110118      zprnch  (:,:,:) = 0._wp 
    111119      zysopt  (:,:,:) = 0._wp 
     120      ! 
     121      IF( lk_gas ) THEN 
     122         CALL wrk_alloc( jpi, jpj, jpk,  zproco, zproisp ) 
     123         zproco  (:,:,:) = 0._wp 
     124         zproisp (:,:,:) = 0._wp 
     125      ENDIF 
     126 
    112127 
    113128      ! Computation of the optimal production 
     
    411426        END DO 
    412427     END DO 
     428     ! 
     429     IF( lk_gas ) THEN 
     430        zstep = xstep * 1.e-6 
     431        DO jk = 1, jpkm1 
     432           DO jj = 1, jpj 
     433             DO ji =1 ,jpi 
     434               ! update the dms with sources & sinks 
     435               tra(ji,jj,jk,jpdms) = tra(ji,jj,jk,jpdms) & 
     436                  &                + xeffic(ji,jj,jk) * ( xcelld(ji,jj,jk) * zprorcad(ji,jj,jk ) * excret2 & 
     437                  &                                     + xcelln(ji,jj,jk) * zprorca(ji,jj,jk)   * excret ) 
     438               ! production rate of CO & Isoprene : function of phytoplancton 
     439               ! growth 
     440               zproco(ji,jj,jk)  = zstep * ( xnanoco  * trb(ji,jj,jk,jpnch) + xdiaco  * trb(ji,jj,jk,jpdch) ) 
     441               zproisp(ji,jj,jk) = zstep * ( xnanoIsp * trb(ji,jj,jk,jpnch) + xdiaIsp * trb(ji,jj,jk,jpdch) ) 
     442               ! Add the trends 
     443               tra(ji,jj,jk,jpco)  = tra(ji,jj,jk,jpco)  + zproco(ji,jj,jk) 
     444               tra(ji,jj,jk,jpisp) = tra(ji,jj,jk,jpisp) + zproisp(ji,jj,jk) 
     445             END DO 
     446           END DO 
     447        END DO 
     448     ENDIF 
    413449 
    414450 
     
    520556          ENDIF 
    521557          IF( iom_use( "tintpp" ) )  CALL iom_put( "tintpp" , tpp * zfact )  !  global total integrated primary production molC/s 
     558          ! 
     559          IF( lk_gas ) THEN 
     560              IF( iom_use( "SCquotan" ) )  THEN 
     561                zw3d(:,:,:) = xcelln(:,:,:) * tmask(:,:,:)  ! Quota S/C for Nanos 
     562                CALL iom_put( "SCquotan"  , zw3d ) 
     563              ENDIF 
     564              IF( iom_use( "SCquotad" ) )  THEN 
     565                zw3d(:,:,:) = xcelld(:,:,:) * tmask(:,:,:)  ! Quota S/C for Diatoms 
     566                CALL iom_put( "SCquotad"  , zw3d ) 
     567              ENDIF 
     568              IF( iom_use( "Yield" ) )  THEN 
     569                zw3d(:,:,:) = xeffic(:,:,:) * tmask(:,:,:)  ! DMSP to DMS Yield 
     570                CALL iom_put( "Yield"  , zw3d ) 
     571              ENDIF 
     572              IF( iom_use( "BioprodCO" ) )  THEN 
     573                zw3d(:,:,:) = zproco(:,:,:) * zfact * tmask(:,:,:)  !  Biological Production of CO 
     574                CALL iom_put( "BioprodCO"  , zw3d ) 
     575              ENDIF 
     576              IF( iom_use( "BioprodISP" ) )  THEN 
     577                zw3d(:,:,:) = zproisp(:,:,:) * zfact * tmask(:,:,:)  !  Biological Production of ISP 
     578                CALL iom_put( "BioprodISP"  , zw3d ) 
     579              ENDIF 
     580          ENDIF 
    522581          ! 
    523582          CALL wrk_dealloc( jpi, jpj,      zw2d ) 
     
    545604     ENDIF 
    546605     ! 
    547      CALL wrk_dealloc( jpi, jpj,      zmixnano, zmixdiat, zstrn                                                  ) 
    548      CALL wrk_dealloc( jpi, jpj, jpk, zpislopead, zpislopead2, zprdia, zprbio, zprdch, zprnch, zysopt            )  
    549      CALL wrk_dealloc( jpi, jpj, jpk, zprorca, zprorcad, zprofed, zprofen, zprochln, zprochld, zpronew, zpronewd ) 
     606                  CALL wrk_dealloc( jpi, jpj,      zmixnano, zmixdiat, zstrn                                                  ) 
     607                  CALL wrk_dealloc( jpi, jpj, jpk, zpislopead, zpislopead2, zprdia, zprbio, zprdch, zprnch, zysopt            )  
     608                  CALL wrk_dealloc( jpi, jpj, jpk, zprorca, zprorcad, zprofed, zprofen, zprochln, zprochld, zpronew, zpronewd ) 
     609     IF( lk_gas ) CALL wrk_dealloc( jpi, jpj, jpk,  zproco, zproisp ) 
    550610     ! 
    551611     IF( nn_timing == 1 )  CALL timing_stop('p4z_prod') 
     
    567627      ! 
    568628      NAMELIST/nampisprod/ pislope, pislope2, xadap, ln_newprod, bresp, excret, excret2,  & 
     629#if defined key_gas 
     630         &                 xnanoco, xdiaco, xnanoIsp, xdiaIsp,    & 
     631#endif 
    569632         &                 chlcnm, chlcdm, chlcmin, fecnm, fecdm, grosip 
    570633      INTEGER :: ios                 ! Local integer output status for namelist read 
     
    599662         WRITE(numout,*) '    Maximum Fe/C in nanophytoplankton         fecnm        =', fecnm 
    600663         WRITE(numout,*) '    Minimum Fe/C in diatoms                   fecdm        =', fecdm 
     664#if defined key_gas 
     665         WRITE(numout,*) '    Production of CO via nanophyto       (µmol.gChla-1.d-1)  xnanoco   =', xnanoco 
     666         WRITE(numout,*) '    Production of CO via diatome         (µmol.gChla-1.d-1)  xdiaco    =', xdiaco 
     667         WRITE(numout,*) '    Production of isoprene via nanophyto (µmol.gChla-1.d-1)  xnanoIsp  =', xnanoIsp 
     668         WRITE(numout,*) '    Production of isoprene via diatome   (µmol.gChla-1.d-1)  xdiaIsp   =', xdiaIsp 
     669#endif 
    601670      ENDIF 
    602671      ! 
     
    629698 
    630699   !!====================================================================== 
    631 END MODULE p4zprod 
     700END MODULE  p4zprod 
  • branches/CNRS/dev_r6526_PISCES_GAS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zrem.F90

    r5385 r6530  
    4545   REAL(wp), PUBLIC ::  xsilab     !: fraction of labile biogenic silica  
    4646   REAL(wp), PUBLIC ::  oxymin     !: halk saturation constant for anoxia  
    47  
     47#if defined key_gas 
     48   REAL(wp), PUBLIC ::  xlightdms   !: photodegradation rate constant of DMS 
     49   REAL(wp), PUBLIC ::  xsinkdms    !: microbial degradation rate of DMS  
     50   REAL(wp), PUBLIC ::  xvsinkdms   !: microbial degradation rate of DMS VOGT 
     51   REAL(wp), PUBLIC ::  xprodco     !: CO photoproduction 
     52   REAL(wp), PUBLIC ::  xsinkco     !: CO bacterial sink 
     53   REAL(wp), PUBLIC ::  xsinkisp    !: Isoprene bacterial sink 
     54#endif 
    4855 
    4956   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   denitr     !: denitrification array 
     
    8289      REAL(wp), POINTER, DIMENSION(:,:  ) :: ztempbac 
    8390      REAL(wp), POINTER, DIMENSION(:,:,:) :: zdepbac, zolimi, zdepprod, zw3d 
     91      REAL(wp) ::   ztkel, zlim1 
     92      REAL(wp), POINTER, DIMENSION(:,:,:) :: zlightdms, zsinkdms 
     93      REAL(wp), POINTER, DIMENSION(:,:,:) :: zprodco, zsinkco, zsinkisp 
     94      REAL(wp), POINTER, DIMENSION(:,:,:) :: zhydrcos,zprodcos,zdarkcos 
    8495      !!--------------------------------------------------------------------- 
    8596      ! 
     
    93104      zdepprod(:,:,:) = 1._wp 
    94105      ztempbac(:,:)   = 0._wp 
     106 
     107      IF( lk_gas ) THEN 
     108         CALL wrk_alloc( jpi, jpj, jpk, zlightdms, zsinkdms ) 
     109         CALL wrk_alloc( jpi, jpj, jpk, zprodco , zsinkco , zsinkisp ) 
     110         CALL wrk_alloc( jpi, jpj, jpk, zhydrcos, zprodcos, zdarkcos ) 
     111         ! Initialisation of temprary arrys 
     112         zlightdms(:,:,:)= 0._wp 
     113         zsinkdms(:,:,:) = 0._wp 
     114         zprodco (:,:,:) = 0._wp 
     115         zprodcos(:,:,:) = 0._wp 
     116         zhydrcos(:,:,:) = 0._wp 
     117         zdarkcos(:,:,:) = 0._wp 
     118         zsinkco (:,:,:) = 0._wp 
     119         zsinkisp(:,:,:) = 0._wp 
     120      ENDIF 
    95121 
    96122      ! Computation of the mean phytoplankton concentration as 
     
    154180      END DO 
    155181 
     182      IF( lk_gas ) THEN 
     183         DO jk = 1, jpkm1 
     184            DO jj = 1, jpj 
     185               DO ji = 1, jpi 
     186                  zstep   = xstep 
     187# if defined key_degrad 
     188                  zstep = zstep * facvol(ji,jj,jk) 
     189#endif 
     190                  !     PhotoDegradation of DMS 
     191                  zlim1 = trb(ji,jj,jk,jpno3) / ( 4.E-6 + trb(ji,jj,jk,jpno3) ) 
     192                  zlim1 = MAX( zlim1, 0.01 ) 
     193 
     194                  zlightdms(ji,jj,jk)= ( etot(ji,jj,jk) / ( etot(ji,jj,jk) + 5.) ) & 
     195                     &                 * 0.25 * zlim1 * zstep * trb(ji,jj,jk,jpdms) 
     196                  !  DMS microbial sink. Depends on depth, phytoplankton biomass 
     197                  !     and a limitation term which is supposed to be a 
     198                  !     parameterization 
     199                  !     of the bacterial activity.   
     200                  zsinkdms(ji,jj,jk) = xsinkdms * tgfunc(ji,jj,jk) * zstep / 1.e-6 * xlimdms(ji,jj,jk) & 
     201                     &                * zdepbac(ji,jj,jk) * trb(ji,jj,jk,jpdms) 
     202                  ! Vogt model assumes only 33% of bacteria can use DMS 
     203                  ! xvsinkdms=0.33 
     204                  zsinkdms(ji,jj,jk) = zsinkdms(ji,jj,jk) * xvsinkdms 
     205 
     206                  zlightdms(ji,jj,jk) = MAX( 0.e0, zlightdms(ji,jj,jk) ) 
     207                  zsinkdms(ji,jj,jk)  = MAX( 0.e0, zsinkdms(ji,jj,jk) ) 
     208 
     209                  !  Production of CO from DOC photodegradation 
     210                  ! formulae avec UV pour la production photochimique du CO 
     211                  ! zprodco in mol.L-1.timestep-1 ; xprodco in mol.W-1.s-1 ; 
     212                  ! euv(ji,jj,jk) in W.m-2 
     213                  ! *1.e-3 to convert m-3 --> L-1 ; rfact2 to convert s/timestep 
     214                  zprodco(ji,jj,jk) = xprodco * 1.e-3 * rfact2 * euv(ji,jj,jk) / fse3t(ji,jj,jk) 
     215 
     216                  ! CO microbial sink. Depends on depth, phytoplankton biomass 
     217                  ! and a limitation term which is supposed to be a 
     218                  ! parameterization of the bacterial activity.  
     219                  ! zsinkco in mol.L-1.timestep-1 ; trb(ji,jj,jk,jpco) in mol/L 
     220                  ! ; xsinkco in d-1 
     221                  ! zstep to convert d-1 into timestep-1 
     222                  zsinkco (ji,jj,jk) = xsinkco * zstep * trb(ji,jj,jk,jpco) 
     223 
     224                  !     Isoprene microbial sink from Palmer and Shaw, 2005 
     225                  !     (doi:10.1029/2005GL022592)  
     226                  ! zsinkisp in mol.L-1.timestep-1; trb(ji,jj,jk,jpisp) in 
     227                  ! mol/L; xsinkisp in d-1 
     228                  zsinkisp (ji,jj,jk) = xsinkisp * zstep * trb(ji,jj,jk,jpisp) 
     229                  zhydrcos(ji,jj,jk)  = trb(ji,jj,jk,jpcos) * k_hydr(ji,jj,jk) * rfact2 
     230 
     231                  ! TL 2013 : darkproduction : selon la formulation de Von Hobe, 
     232                  ! 2001 
     233                  ztkel = tsn(ji,jj,jk,jp_tem) + 273.16 
     234                  zdarkcos(ji,jj,jk) = a350(ji,jj,jk) * EXP( 55.8 - 16200. / ztkel ) * 1.e-12 * rfact2 * 1.E-3 
     235 
     236                  ! UV penetrates only first 80m. And 20m if there is a high 
     237                  ! concentration of chlorophylle 
     238                  if (jk .LT. 4) then ! test, only first layer priduces COS by photoproduction 
     239                    if ((jk .EQ. 1) .OR. ((jk .GT. 1) .AND.  (sum(a350(ji,jj,1:2))/2. .LT. 0.1))) then 
     240                      zprodcos(ji,jj,jk) = 2.1 * euv(ji,jj,jk) * a350(ji,jj,jk) * 1.e-12 * rfact2 * 1.E-3 
     241!                      WRITE(numout,*) 'jk=, zprodcos(ji,jj,jk) = ', jk, 
     242!                      zprodcos(ji,jj,jk)  
     243                    endif 
     244                  endif 
     245               END DO 
     246            END DO 
     247         END DO 
     248      ENDIF 
    156249 
    157250      DO jk = 1, jpkm1 
     
    173266               tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2nit * zonitr 
    174267               tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2 * rno3 * zonitr + rno3 * ( rdenita - 1. ) * denitnh4(ji,jj,jk) 
     268               IF (lk_gas) tra(ji,jj,jk,jpn2o) = tra(ji,jj,jk,jpn2o) + xn2osub(ji,jj,jk) * o2nit * zonitr                
    175269            END DO 
    176270         END DO 
     
    315409      END DO 
    316410 
     411      ! 
     412      IF( lk_gas ) THEN 
     413         DO jk = 1, jpkm1 
     414            !   zlightdms(:,:,jk) =0. 
     415            !   zsinkdms(:,:,jk) =0. 
     416            tra(:,:,jk,jpdms) = tra(:,:,jk,jpdms) - zlightdms(:,:,jk) - zsinkdms(:,:,jk) 
     417            tra(:,:,jk,jpco)  = tra(:,:,jk,jpco)  + zprodco(:,:,jk)   - zsinkco(:,:,jk) 
     418            tra(:,:,jk,jpisp) = tra(:,:,jk,jpisp) - zsinkisp(:,:,jk) 
     419            tra(:,:,jk,jpcos) = tra(:,:,jk,jpcos) + zprodcos(:,:,jk)  + zdarkcos(:,:,jk) - zhydrcos(:,:,jk) 
     420            tra(:,:,jk,jpn2o) = tra(:,:,jk,jpn2o) + xn2osub(:,:,jk) * zolimi (:,:,jk) * o2ut - sinkn2o * tra(:,:,jk,jpn2o) 
     421 
     422         ENDDO 
     423      ENDIF 
     424 
    317425      IF( knt == nrdttrc ) THEN 
    318426          CALL wrk_alloc( jpi, jpj, jpk, zw3d ) 
     
    328436          ENDIF 
    329437          ! 
     438          IF( lk_gas ) THEN 
     439              IF( iom_use( "Sinkdms" ) )  THEN 
     440                zw3d(:,:,:) = zsinkdms(:,:,:) * tmask(:,:,:) * rfact2r ! DMS Microbial Sink 
     441                CALL iom_put( "REMIN"  , zw3d ) 
     442              ENDIF 
     443             ! 
     444             IF( iom_use( "Lightdms" ) )  THEN 
     445                zw3d(:,:,:) = zlightdms(:,:,:) * tmask(:,:,:) * rfact2r ! DMS Photochemical Sink 
     446                CALL iom_put( "Lightdms"  , zw3d ) 
     447              ENDIF 
     448             ! 
     449              IF( iom_use( "PhotoprodCO" ) )  THEN 
     450                zw3d(:,:,:) = zprodco(:,:,:) * tmask(:,:,:) * rfact2r ! CO Photoproduction 
     451                CALL iom_put( "PhotoprodCO"  , zw3d ) 
     452              ENDIF 
     453             ! 
     454              IF( iom_use( "BactconsCO" ) )  THEN 
     455                zw3d(:,:,:) = zsinkco(:,:,:) * tmask(:,:,:) * rfact2r ! CO Microbial Sink 
     456                CALL iom_put( "BactconsCO"  , zw3d ) 
     457              ENDIF 
     458             ! 
     459              IF( iom_use( "BactconsISP" ) )  THEN 
     460                zw3d(:,:,:) = zsinkisp(:,:,:) * tmask(:,:,:) * rfact2r !  Isoprene Microbial Sink 
     461                CALL iom_put( "BactconsISP"  , zw3d ) 
     462              ENDIF 
     463             ! 
     464              IF( iom_use( "OCS_hydr" ) )  THEN 
     465                zw3d(:,:,:) = zhydrcos(:,:,:) * tmask(:,:,:) * rfact2r !  COS Hydrolysis Sink 
     466                CALL iom_put( "OCS_hydr"  , zw3d ) 
     467              ENDIF 
     468             ! 
     469              IF( iom_use( "OCS_dark" ) )  THEN 
     470                zw3d(:,:,:) = zdarkcos(:,:,:) * tmask(:,:,:) * rfact2r !  COS Dark Production 
     471                CALL iom_put( "OCS_dark"  , zw3d ) 
     472              ENDIF 
     473             ! 
     474              IF( iom_use( "OCS_phot" ) )  THEN 
     475                zw3d(:,:,:) = zprodcos(:,:,:) * tmask(:,:,:) * rfact2r !  COS Photoproduction 
     476                CALL iom_put( "OCS_phot"  , zw3d ) 
     477              ENDIF 
     478             ! 
     479          ENDIF 
     480          ! 
    330481          CALL wrk_dealloc( jpi, jpj, jpk, zw3d ) 
    331482       ENDIF 
     
    339490      CALL wrk_dealloc( jpi, jpj,      ztempbac                  ) 
    340491      CALL wrk_dealloc( jpi, jpj, jpk, zdepbac, zdepprod, zolimi ) 
     492      IF( lk_gas ) THEN 
     493         CALL wrk_dealloc( jpi, jpj, jpk, zlightdms, zsinkdms ) 
     494         CALL wrk_dealloc( jpi, jpj, jpk, zprodco , zsinkco , zsinkisp ) 
     495         CALL wrk_dealloc( jpi, jpj, jpk, zhydrcos, zprodcos, zdarkcos ) 
     496      ENDIF 
    341497      ! 
    342498      IF( nn_timing == 1 )  CALL timing_stop('p4z_rem') 
     
    358514      !!---------------------------------------------------------------------- 
    359515      NAMELIST/nampisrem/ xremik, xremip, nitrif, xsirem, xsiremlab, xsilab,   & 
     516#if defined_key_gas 
     517      &                   xlightdms, xsinkdms, xvsinkdms, xprodco, xsinkco, xsinkisp, &  
     518#endif 
    360519      &                   oxymin 
    361520      INTEGER :: ios                 ! Local integer output status for namelist read 
     
    381540         WRITE(numout,*) '    NH4 nitrification rate                    nitrif    =', nitrif 
    382541         WRITE(numout,*) '    halk saturation constant for anoxia       oxymin    =', oxymin 
     542#if defined key_gas 
     543         WRITE(numout,*) '    photodegradation rate constant of DMS     xlightdms =', xlightdms  
     544         WRITE(numout,*) '    microbial degradation rate of DMS         xsinkdms  =', xsinkdms  
     545         WRITE(numout,*) '    microbial degradation rate of DMS VOGT    xvsinkdms =', xvsinkdms  
     546         WRITE(numout,*) '    CO photoproduction                        xprodco   =', xprodco  
     547         WRITE(numout,*) '    CO bacterial sink                         xsinkco   =', xsinkco   
     548         WRITE(numout,*) '    Isoprene bacterial sink                   xsinkisp  =', xsinkisp  
     549#endif 
    383550      ENDIF 
    384551      ! 
  • branches/CNRS/dev_r6526_PISCES_GAS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsms.F90

    r6420 r6530  
    216216      !!                       natkriest ("key_kriest") 
    217217      !!---------------------------------------------------------------------- 
    218       NAMELIST/nampisbio/ nrdttrc, wsbio, xkmort, ferat3, wsbio2, niter1max, niter2max 
     218      NAMELIST/nampisbio/ nrdttrc, wsbio, xkmort, ferat3, wsbio2, & 
     219#if defined key_gas 
     220                     &    alphan2o, betan2o, xlow, xhigh, sinkn2o, & 
     221#endif 
     222                     &    niter1max, niter2max 
    219223#if defined key_kriest 
    220224      NAMELIST/nampiskrp/ xkr_eta, xkr_zeta, xkr_ncontent, xkr_mass_min, xkr_mass_max 
     
    243247         WRITE(numout,*) '    Maximum number of iterations for POC      niter1max =', niter1max 
    244248         WRITE(numout,*) '    Maximum number of iterations for GOC      niter2max =', niter2max 
     249#if defined key_gas 
     250         WRITE(numout,*) '    Nitrification coefficient for n2o         alphan2o  =', alphan2o 
     251         WRITE(numout,*) '    Denitrification coefficient for n2o       betan2o   =', betan2o 
     252         WRITE(numout,*) '    lower boundary of suboxia                 xlow      =', xlow 
     253         WRITE(numout,*) '    upper boundary of suboxia                 xhigh     =', xhigh 
     254         WRITE(numout,*) '    n2o sink term coefficient                 sinkn2o   =', sinkn2o 
     255#endif 
    245256      ENDIF 
    246257 
  • branches/CNRS/dev_r6526_PISCES_GAS/NEMOGCM/NEMO/TOP_SRC/PISCES/par_pisces.F90

    r5385 r6530  
    4343   LOGICAL, PUBLIC, PARAMETER ::   lk_p4z        = .TRUE. !: p4z flag  
    4444   LOGICAL, PUBLIC, PARAMETER ::   lk_kriest     = .TRUE.  !: Kriest flag  
     45   LOGICAL, PUBLIC, PARAMETER ::   lk_gas        = .FALSE. !: Gas flag  
    4546   INTEGER, PUBLIC, PARAMETER ::   jp_pisces     =  23     !: number of passive tracers 
    4647   INTEGER, PUBLIC, PARAMETER ::   jp_pisces_2d  =  13     !: additional 2d output  
     
    7576   INTEGER, PUBLIC, PARAMETER ::   jpnh4 = 23    !: Ammonium Concentration 
    7677 
     78#elif defined key_pisces & key_gas 
     79   !!--------------------------------------------------------------------- 
     80   !!   'key_pisces'   :                         standard PISCES bio-model 
     81   !!--------------------------------------------------------------------- 
     82   LOGICAL, PUBLIC, PARAMETER ::   lk_pisces     = .TRUE.  !: PISCES flag  
     83   LOGICAL, PUBLIC, PARAMETER ::   lk_p4z        = .TRUE.  !: p4z flag  
     84   LOGICAL, PUBLIC, PARAMETER ::   lk_kriest     = .FALSE. !: Kriest flag  
     85   LOGICAL, PUBLIC, PARAMETER ::   lk_gas        = .TRUE.  !: Gas flag  
     86   INTEGER, PUBLIC, PARAMETER ::   jp_pisces     = 29      !: number of PISCES passive tracers 
     87   INTEGER, PUBLIC, PARAMETER ::   jp_pisces_2d  = 21      !: additional 2d output  
     88   INTEGER, PUBLIC, PARAMETER ::   jp_pisces_3d  = 15      !: additional 3d output  
     89   INTEGER, PUBLIC, PARAMETER ::   jp_pisces_trd =  1      !: number of sms trends for PISCES 
     90 
     91   ! assign an index in trc arrays for each LOBSTER prognostic variables 
     92   !    WARNING: be carefull about the order when reading the restart 
     93        !   !!gm  this warning should be obsolet with IOM 
     94   INTEGER, PUBLIC, PARAMETER ::   jpdic =  1    !: dissolved inoganic carbon concentration  
     95   INTEGER, PUBLIC, PARAMETER ::   jptal =  2    !: total alkalinity  
     96   INTEGER, PUBLIC, PARAMETER ::   jpoxy =  3    !: oxygen carbon concentration  
     97   INTEGER, PUBLIC, PARAMETER ::   jpcal =  4    !: calcite  concentration  
     98   INTEGER, PUBLIC, PARAMETER ::   jppo4 =  5    !: phosphate concentration  
     99   INTEGER, PUBLIC, PARAMETER ::   jppoc =  6    !: small particulate organic phosphate concentration 
     100   INTEGER, PUBLIC, PARAMETER ::   jpsil =  7    !: silicate concentration 
     101   INTEGER, PUBLIC, PARAMETER ::   jpphy =  8    !: phytoplancton concentration  
     102   INTEGER, PUBLIC, PARAMETER ::   jpzoo =  9    !: zooplancton concentration 
     103   INTEGER, PUBLIC, PARAMETER ::   jpdoc = 10    !: dissolved organic carbon concentration  
     104   INTEGER, PUBLIC, PARAMETER ::   jpdia = 11    !: Diatoms Concentration 
     105   INTEGER, PUBLIC, PARAMETER ::   jpmes = 12    !: Mesozooplankton Concentration 
     106   INTEGER, PUBLIC, PARAMETER ::   jpdsi = 13    !: Diatoms Silicate Concentration 
     107   INTEGER, PUBLIC, PARAMETER ::   jpfer = 14    !: Iron Concentration 
     108   INTEGER, PUBLIC, PARAMETER ::   jpbfe = 15    !: Big iron particles Concentration 
     109   INTEGER, PUBLIC, PARAMETER ::   jpgoc = 16    !: big particulate organic phosphate concentration 
     110   INTEGER, PUBLIC, PARAMETER ::   jpsfe = 17    !: Small iron particles Concentration 
     111   INTEGER, PUBLIC, PARAMETER ::   jpdfe = 18    !: Diatoms iron Concentration 
     112   INTEGER, PUBLIC, PARAMETER ::   jpgsi = 19    !: (big) Silicate Concentration 
     113   INTEGER, PUBLIC, PARAMETER ::   jpnfe = 20    !: Nano iron Concentration 
     114   INTEGER, PUBLIC, PARAMETER ::   jpnch = 21    !: Nano Chlorophyll Concentration 
     115   INTEGER, PUBLIC, PARAMETER ::   jpdch = 22    !: Diatoms Chlorophyll Concentration 
     116   INTEGER, PUBLIC, PARAMETER ::   jpno3 = 23    !: Nitrates Concentration 
     117   INTEGER, PUBLIC, PARAMETER ::   jpnh4 = 24    !: Ammonium Concentration 
     118   INTEGER, PUBLIC, PARAMETER ::   jpn2o = 25    !: Nitrous Oxide Concentration 
     119   INTEGER, PUBLIC, PARAMETER ::   jpdms = 26    !: Dimethylsulfide Concentration 
     120   INTEGER, PUBLIC, PARAMETER ::   jpco  = 27    !: Carbon Monoxide Concentration 
     121   INTEGER, PUBLIC, PARAMETER ::   jpisp = 28    !: Isoprene Concentration 
     122   INTEGER, PUBLIC, PARAMETER ::   jpcos = 29    !: Carbonyl Sulfide Concentration 
     123 
    77124#elif defined key_pisces 
    78125   !!--------------------------------------------------------------------- 
     
    82129   LOGICAL, PUBLIC, PARAMETER ::   lk_p4z        = .TRUE.  !: p4z flag  
    83130   LOGICAL, PUBLIC, PARAMETER ::   lk_kriest     = .FALSE. !: Kriest flag  
     131   LOGICAL, PUBLIC, PARAMETER ::   lk_gas        = .FALSE. !: Gas flag  
    84132   INTEGER, PUBLIC, PARAMETER ::   jp_pisces     = 24      !: number of PISCES passive tracers 
    85133   INTEGER, PUBLIC, PARAMETER ::   jp_pisces_2d  = 13      !: additional 2d output  
  • branches/CNRS/dev_r6526_PISCES_GAS/NEMOGCM/NEMO/TOP_SRC/PISCES/sms_pisces.F90

    r6287 r6530  
    108108   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   tgfunc2   !: Temp. dependancy of mesozooplankton rates 
    109109 
     110   REAL(wp) ::  alphan2o  
     111   REAL(wp) ::  betan2o 
     112   REAL(wp) ::  xhigh 
     113   REAL(wp) ::  xlow 
     114   REAL(wp) ::  sinkn2o 
     115     ! 
     116   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   xlimbac2   !: ??? 
     117   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   xlimdms    !: ?? 
     118   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   xcelln     !: ?? 
     119   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   xcelld     !: ?? 
     120   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   xeffic     !: ?? 
     121   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   xn2osub    !: Jin formualtion for N2O production 
     122 
     123 
    110124#if defined key_kriest 
    111125   !!*  Kriest parameter for aggregation 
     
    130144      !!---------------------------------------------------------------------- 
    131145      USE lib_mpp , ONLY: ctl_warn 
    132       INTEGER ::   ierr(5)        ! Local variables 
     146      INTEGER ::   ierr(6)        ! Local variables 
    133147      !!---------------------------------------------------------------------- 
    134148      ierr(:) = 0 
     
    162176      ALLOCATE( tgfunc(jpi,jpj,jpk)  , tgfunc2(jpi,jpj,jpk) ,    STAT=ierr(5) ) 
    163177         ! 
     178 
     179      !* SMS for GAS 
     180      IF( lk_gas ) THEN 
     181        ALLOCATE( xlimbac2(jpi,jpj,jpk), xcelln (jpi,jpj,jpk),       & 
     182         &        xcelld  (jpi,jpj,jpk), xlimdms(jpi,jpj,jpk),       & 
     183         &        xeffic  (jpi,jpj,jpk), xn2osub(jpi,jpj,jpk),    STAT=ierr(6) ) 
     184      ENDIF 
     185 
    164186#endif 
    165187      ! 
  • branches/CNRS/dev_r6526_PISCES_GAS/NEMOGCM/NEMO/TOP_SRC/PISCES/trcini_pisces.F90

    r6324 r6530  
    153153         trn(:,:,:,jpnh4) = bioma0 
    154154 
     155         IF( lk_gas ) THEN 
     156            trn(:,:,:,jpdms) = bioma0 / 1.e2 
     157            trn(:,:,:,jpco)  = bioma0 / 1.e2 
     158            trn(:,:,:,jpisp) = bioma0 / 1.e4 
     159            trn(:,:,:,jpcos) = bioma0 / 1.e4  
     160            trn(:,:,:,jpn2o) = 10.e-9 
     161         ENDIF 
     162 
    155163         ! initialize the half saturation constant for silicate 
    156164         ! ---------------------------------------------------- 
Note: See TracChangeset for help on using the changeset viewer.