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 6534 for branches/CNRS/dev_r6526_PISCES_ISO – NEMO

Ignore:
Timestamp:
2016-05-13T16:26:32+02:00 (8 years ago)
Author:
cetlod
Message:

1st implementation of PISCES + isotopes

Location:
branches/CNRS/dev_r6526_PISCES_ISO/NEMOGCM
Files:
12 added
16 edited

Legend:

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

    r6348 r6534  
    77AMM12 OPA_SRC 
    88ORCA2_OFF_PISCES OPA_SRC OFF_SRC TOP_SRC 
     9ORCA2_OFF_PISCES_ISO 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_ISO/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zflx.F90

    r6287 r6534  
    3939   !                               !!** Namelist  nampisext  ** 
    4040   REAL(wp)          ::  atcco2     !: pre-industrial atmospheric [co2] (ppm)     
     41#ifdef key_c13 
     42   REAL(wp)          ::  d13c_co2   !: d13c of atmospheric [co2] (ppm)    
     43#endif 
    4144   LOGICAL           ::  ln_co2int  !: flag to read in a file and interpolate atmospheric pco2 or not 
    4245   CHARACTER(len=34) ::  clname     !: filename of pco2 values 
     
    5558 
    5659   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: oce_co2   !: ocean carbon flux  
     60#if defined key_c13 
     61   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: oce_c13  !: ocean C13 flux 
     62#endif 
    5763   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: satmco2   !: atmospheric pco2  
    5864 
     
    8490      ! 
    8591      INTEGER  ::   ji, jj, jm, iind, iindm1 
    86       REAL(wp) ::   ztc, ztc2, ztc3, ztc4, zws, zkgwan 
     92      REAL(wp) ::   ztc, ztc2, ztc3, zws, zkgwan 
    8793      REAL(wp) ::   zfld, zflu, zfld16, zflu16, zfact 
    8894      REAL(wp) ::   zph, zah2, zbot, zdic, zalk, zsch_o2, zalka, zsch_co2 
    8995      REAL(wp) ::   zyr_dec, zdco2dt 
    9096      CHARACTER (len=25) :: charout 
    91       REAL(wp), POINTER, DIMENSION(:,:) :: zkgco2, zkgo2, zh2co3, zoflx, zw2d  
     97      REAL(wp), POINTER, DIMENSION(:,:) :: zkgco2, zkgo2, zh2co3, z_co3, zoflx, zw2d  
     98#ifdef key_c13 
     99      REAL(wp) ::   zft, zfco3 
     100      REAL(wp), POINTER, DIMENSION(:,:) :: za_dic, za_g 
     101#endif 
    92102      !!--------------------------------------------------------------------- 
    93103      ! 
    94104      IF( nn_timing == 1 )  CALL timing_start('p4z_flx') 
    95105      ! 
    96       CALL wrk_alloc( jpi, jpj, zkgco2, zkgo2, zh2co3, zoflx ) 
     106#ifdef key_c13  
     107      CALL wrk_alloc( jpi, jpj, zkgco2, zkgo2, zh2co3, z_co3, zoflx,  za_dic, za_g ) 
     108#else 
     109      CALL wrk_alloc( jpi, jpj, zkgco2, zkgo2, zh2co3, z_co3, zoflx ) 
     110#endif 
    97111      ! 
    98112 
     
    133147               zph   = MAX( hi(ji,jj,1), 1.e-10 ) / zfact 
    134148               zalka = trb(ji,jj,1,jptal) / zfact 
     149 
     150               ! CALCULATE [ALK]([CO3--], [HCO3-]) 
     151               zalk  = zalka - (  akw3(ji,jj,1) / zph - zph + zbot / ( 1.+ zph / akb3(ji,jj,1) )  ) 
    135152 
    136153               ! CALCULATE [ALK]([CO3--], [HCO3-]) 
     
    178195            zkgco2(ji,jj) = zkgwan * SQRT( 660./ zsch_co2 ) 
    179196            zkgo2 (ji,jj) = zkgwan * SQRT( 660./ zsch_o2 ) 
     197#if defined key_c13 
     198            ! Compute fractionation factors for C13 from Zhang et al. 1995 
     199            zfco3 = MAX(0.05,(z_co3(ji,jj)/trb(ji,jj,1,jpdic)+rtrn)) 
     200            zfco3 = MIN(0.2 , zfco3) 
     201            zft = MIN( 25., ztc ) 
     202            zft = MAX(  5., zft ) 
     203            za_g  (ji,jj) = 1. + ( -0.0049 * zft - 1.31 ) / 1000. 
     204            za_dic(ji,jj) = 1. + ( 0.014 * zft * zfco3  - 0.105 * zft + 10.53 ) / 1000. 
     205#endif 
    180206         END DO 
    181207      END DO 
     
    183209      DO jj = 1, jpj 
    184210         DO ji = 1, jpi 
    185             ! Compute CO2 flux for the sea and air 
     211             ! Compute CO2 flux for the sea and air 
    186212            zfld = satmco2(ji,jj) * patm(ji,jj) * tmask(ji,jj,1) * chemc(ji,jj) * zkgco2(ji,jj)   ! (mol/L) * (m/s) 
    187213            zflu = zh2co3(ji,jj) * tmask(ji,jj,1) * zkgco2(ji,jj)                                   ! (mol/L) (m/s) ? 
     
    195221            zoflx(ji,jj) = zfld16 - zflu16 
    196222            tra(ji,jj,1,jpoxy) = tra(ji,jj,1,jpoxy) + zoflx(ji,jj) * rfact2 / fse3t(ji,jj,1) 
     223#if defined key_c13 
     224            tra(ji,jj,1,jp13dic) = tra(ji,jj,1,jp13dic) + ( zfld * (1 + d13c_co2 / 1000.) & 
     225                                         - zflu * trb(ji,jj,1,jp13dic) / ( trb(ji,jj,1,jpdic) + rtrn ) & 
     226                                       / ( za_dic(ji,jj) + rtrn) ) & 
     227                                         * 0.99919 * za_g(ji,jj) * rfact2 / fse3t(ji,jj,1) 
     228 
     229             oce_c13(ji,jj) = ( zfld * (1 + d13c_co2 / 1000.) & 
     230                              - zflu * trb(ji,jj,1,jp13dic) / ( trb(ji,jj,1,jpdic) + rtrn ) & 
     231                                 / ( za_dic(ji,jj) + rtrn) ) & 
     232                                 * 0.99919 * za_g(ji,jj)  * rfact2 * e1e2t(ji,jj) * tmask(ji,jj,1) * 1000. 
     233#endif 
    197234         END DO 
    198235      END DO 
     
    215252            CALL iom_put( "Cflx"     , zw2d )  
    216253         ENDIF 
     254#if defined key_c13 
     255         CALL wrk_alloc( jpi, jpj, zw2d ) 
     256         IF( iom_use( "C13flx"  ) )  THEN 
     257            zw2d(:,:) = oce_c13(:,:) / e1e2t(:,:) * rfact2r 
     258            CALL iom_put( "C13flx"     , zw2d ) 
     259         ENDIF 
     260#endif 
    217261         IF( iom_use( "Oflx"  ) )  THEN 
    218262            zw2d(:,:) =  zoflx(:,:) * 1000 * tmask(:,:,1) 
     
    224268         ENDIF 
    225269         IF( iom_use( "Dpco2" ) ) THEN 
    226            zw2d(:,:) = ( satmco2(:,:) * patm(:,:) - zh2co3(:,:) / ( chemc(:,:) + rtrn ) ) * tmask(:,:,1) 
     270           zw2d(:,:) = ( satmco2(:,:) * patm(:,:) - zh2co3(:,:) / ( chemc(:,:,1) + rtrn ) ) * tmask(:,:,1) 
    227271           CALL iom_put( "Dpco2" ,  zw2d ) 
    228272         ENDIF 
    229273         IF( iom_use( "Dpo2" ) )  THEN 
    230            zw2d(:,:) = ( atcox * patm(:,:) - atcox * trn(:,:,1,jpoxy) / ( chemo2(:,:,1) + rtrn ) ) * tmask(:,:,1) 
     274           zw2d(:,:) = ( atcox * patm(:,:) - trb(:,:,1,jpoxy) / ( chemc(:,:,2) + rtrn ) ) * tmask(:,:,1) 
    231275           CALL iom_put( "Dpo2"  , zw2d ) 
    232276         ENDIF 
     
    240284            trc2d(:,:,jp_pcs0_2d + 1) = zoflx(:,:) * 1000 * tmask(:,:,1)  
    241285            trc2d(:,:,jp_pcs0_2d + 2) = zkgco2(:,:) * tmask(:,:,1)  
    242             trc2d(:,:,jp_pcs0_2d + 3) = ( satmco2(:,:) * patm(:,:) - zh2co3(:,:) / ( chemc(:,:) + rtrn ) ) * tmask(:,:,1)  
    243          ENDIF 
    244       ENDIF 
    245       ! 
    246       CALL wrk_dealloc( jpi, jpj, zkgco2, zkgo2, zh2co3, zoflx ) 
     286            trc2d(:,:,jp_pcs0_2d + 3) = ( satmco2(:,:) * patm(:,:) - zh2co3(:,:) / ( chemc(:,:,1) + rtrn ) ) * tmask(:,:,1)  
     287         ENDIF 
     288      ENDIF 
     289      ! 
     290#ifdef key_c13  
     291      CALL wrk_dealloc( jpi, jpj, zkgco2, zkgo2, zh2co3, z_co3, zoflx,  za_dic, za_g ) 
     292#else 
     293      CALL wrk_dealloc( jpi, jpj, zkgco2, zkgo2, zh2co3, z_co3, zoflx ) 
     294#endif 
    247295      ! 
    248296      IF( nn_timing == 1 )  CALL timing_stop('p4z_flx') 
     
    261309      !! ** input   :   Namelist nampisext 
    262310      !!---------------------------------------------------------------------- 
    263       NAMELIST/nampisext/ln_co2int, atcco2, clname, nn_offset 
     311      NAMELIST/nampisext/ln_co2int, atcco2, & 
     312#if defined key_c13 
     313                         &  d13c_co2,       & 
     314#endif 
     315                         &  clname, nn_offset 
    264316      INTEGER :: jm 
    265317      INTEGER :: ios                 ! Local integer output status for namelist read 
     
    286338         IF(lwp) THEN                         ! control print 
    287339            WRITE(numout,*) '    Constant Atmospheric pCO2 value  atcco2    =', atcco2 
     340#if defined key_c13 
     341            WRITE(numout,*) '    Constant Atm. d13C of pCO2 value  d13c_co2 =', d13c_co2 
     342#endif 
    288343            WRITE(numout,*) ' ' 
    289344         ENDIF 
     
    316371      t_oce_co2_flx = 0._wp 
    317372      t_atm_co2_flx = 0._wp 
     373#ifdef key_c13 
     374       oce_c13(:,:)  = 0._wp 
     375#endif 
    318376      ! 
    319377      CALL p4z_patm( nit000 ) 
     
    384442      !!                     ***  ROUTINE p4z_flx_alloc  *** 
    385443      !!---------------------------------------------------------------------- 
    386       ALLOCATE( oce_co2(jpi,jpj), satmco2(jpi,jpj), patm(jpi,jpj), STAT=p4z_flx_alloc ) 
     444      ALLOCATE( oce_co2(jpi,jpj), satmco2(jpi,jpj), patm(jpi,jpj), oce_c13(jpi,jpj), STAT=p4z_flx_alloc ) 
    387445      ! 
    388446      IF( p4z_flx_alloc /= 0 )   CALL ctl_warn('p4z_flx_alloc : failed to allocate arrays') 
     
    402460 
    403461   !!====================================================================== 
    404 END MODULE p4zflx 
     462END MODULE  p4zflx 
  • branches/CNRS/dev_r6526_PISCES_ISO/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zlim.F90

    r6204 r6534  
    115115               ! Michaelis-Menten Limitation term for nutrients Small bacteria 
    116116               ! ------------------------------------------------------------- 
    117                zdenom = 1. /  ( concbno3 * concbnh4 + concbnh4 * trb(ji,jj,jk,jpno3) + concbno3 * trb(ji,jj,jk,jpnh4) ) 
    118                xnanono3(ji,jj,jk) = trb(ji,jj,jk,jpno3) * concbnh4 * zdenom 
    119                xnanonh4(ji,jj,jk) = trb(ji,jj,jk,jpnh4) * concbno3 * zdenom 
     117               xnanonh4(ji,jj,jk) = MAX(0., trb(ji,jj,jk,jpnh4) - 1.E-8 ) / (MAX(0., trb(ji,jj,jk,jpnh4) - 1.E-8 ) + concbnh4) 
     118               xnanono3(ji,jj,jk) = MAX(0., trb(ji,jj,jk,jpno3) - 1.E-8 ) / (MAX(0., trb(ji,jj,jk,jpno3) - 1.E-8 )  & 
     119                          &                                                  + concbno3) * (1. - xnanonh4(ji,jj,jk) )  
    120120               ! 
    121121               zlim1    = xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk) 
    122                zlim2    = trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + concbnh4 ) 
     122               zlim2    = MAX(0., trb(ji,jj,jk,jppo4) - 1E-9 )/ ( trb(ji,jj,jk,jppo4) + concbnh4 ) 
    123123               zlim3    = trb(ji,jj,jk,jpfer) / ( concbfe + trb(ji,jj,jk,jpfer) ) 
    124124               zlim4    = trb(ji,jj,jk,jpdoc) / ( xkdoc   + trb(ji,jj,jk,jpdoc) ) 
     
    128128               ! Michaelis-Menten Limitation term for nutrients Small flagellates 
    129129               ! ----------------------------------------------- 
    130                zdenom = 1. /  ( zconc0n * zconc0nnh4 + zconc0nnh4 * trb(ji,jj,jk,jpno3) + zconc0n * trb(ji,jj,jk,jpnh4) ) 
    131                xnanono3(ji,jj,jk) = trb(ji,jj,jk,jpno3) * zconc0nnh4 * zdenom 
    132                xnanonh4(ji,jj,jk) = trb(ji,jj,jk,jpnh4) * zconc0n    * zdenom 
     130               xnanonh4(ji,jj,jk) = MAX(0., trb(ji,jj,jk,jpnh4) - 1.E-7 ) / (MAX(0., trb(ji,jj,jk,jpnh4) - 1.E-7 ) + zconc0nnh4) 
     131               xnanono3(ji,jj,jk) = MAX(0., trb(ji,jj,jk,jpno3) - 1.E-7 ) / (MAX(0., trb(ji,jj,jk,jpno3) - 1.E-7 )  & 
     132                          &                      + zconc0n) * (1. - xnanonh4(ji,jj,jk) )    
    133133               ! 
    134134               zlim1    = xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk) 
    135                zlim2    = trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + zconc0nnh4 ) 
     135               zlim2    = MAX(0., trb(ji,jj,jk,jppo4) - 1.E-7 ) / ( trb(ji,jj,jk,jppo4) + zconc0nnh4 ) 
    136136               zratio   = trb(ji,jj,jk,jpnfe) * z1_trbphy  
    137137               zironmin = xcoef1 * trb(ji,jj,jk,jpnch) * z1_trbphy + xcoef2 * zlim1 + xcoef3 * xnanono3(ji,jj,jk) 
     
    143143               !   Michaelis-Menten Limitation term for nutrients Diatoms 
    144144               !   ---------------------------------------------- 
    145                zdenom   = 1. / ( zconc1d * zconc1dnh4 + zconc1dnh4 * trb(ji,jj,jk,jpno3) + zconc1d * trb(ji,jj,jk,jpnh4) ) 
    146                xdiatno3(ji,jj,jk) = trb(ji,jj,jk,jpno3) * zconc1dnh4 * zdenom 
    147                xdiatnh4(ji,jj,jk) = trb(ji,jj,jk,jpnh4) * zconc1d    * zdenom 
     145               xdiatnh4(ji,jj,jk) = MAX(0., trb(ji,jj,jk,jpnh4) - 1.E-7 ) / (MAX(0., trb(ji,jj,jk,jpnh4) - 1.E-7 ) + zconc1dnh4) 
     146               xdiatno3(ji,jj,jk) = MAX(0., trb(ji,jj,jk,jpno3) - 1.E-7 ) / (MAX(0., trb(ji,jj,jk,jpno3) - 1.E-7 ) & 
     147                          &                   + zconc1d ) * (1- xdiatnh4(ji,jj,jk))  
    148148               ! 
    149149               zlim1    = xdiatno3(ji,jj,jk) + xdiatnh4(ji,jj,jk) 
    150                zlim2    = trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + zconc1dnh4  ) 
     150               zlim2    = MAX(0., trb(ji,jj,jk,jppo4) - 1.E-7 ) / ( trb(ji,jj,jk,jppo4) + zconc1dnh4  ) 
    151151               zlim3    = trb(ji,jj,jk,jpsil) / ( trb(ji,jj,jk,jpsil) + xksi(ji,jj) ) 
    152152               zratio   = trb(ji,jj,jk,jpdfe) * z1_trbdia 
     
    265265 
    266266   !!====================================================================== 
    267 END MODULE p4zlim 
     267END MODULE  p4zlim 
  • branches/CNRS/dev_r6526_PISCES_ISO/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zlys.F90

    r6287 r6534  
    142142              tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) -      zcaldiss(ji,jj,jk) 
    143143              tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) +      zcaldiss(ji,jj,jk) 
     144 
     145#if defined key_c13 
     146              zaldi  = zcaldiss(ji,jj,jk) *  trb(ji,jj,jk,jp13cal) / ( trb(ji,jj,jk,jpcal) + rtrn ) 
     147              tra(ji,jj,jk,jp13cal) = tra(ji,jj,jk,jp13cal) - zaldi 
     148              tra(ji,jj,jk,jp13dic) = tra(ji,jj,jk,jp13dic) + zaldi  
     149#endif 
     150 
    144151            END DO 
    145152         END DO 
  • branches/CNRS/dev_r6526_PISCES_ISO/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmeso.F90

    r6204 r6534  
    4949   REAL(wp), PUBLIC ::  epsher2      !: half sturation constant for grazing 2 
    5050   REAL(wp), PUBLIC ::  grazflux     !: mesozoo flux feeding rate 
     51#if defined key_n15 
     52   REAL(wp), PUBLIC ::  e15n_ex2     !: N15 mesozoo excretion fractionation 
     53   REAL(wp), PUBLIC ::  e15n_ing2    !: N15 mesozoo ingestion fractionation 
     54#endif 
     55#if defined key_c13 
     56   REAL(wp), PUBLIC ::  e13c_cal2    !: C13 mesozoo calcification fractionation 
     57#endif 
    5158 
    5259   !!* Substitution 
     
    8289      REAL(wp) :: zgrazn, zgrazpoc, zgraznf, zgrazf 
    8390      REAL(wp) :: zgrazfffp, zgrazfffg, zgrazffep, zgrazffeg 
     91#if defined key_n15 
     92      REAL(wp) :: zgrazn15,zgrazd15,zgrazpo15,zgrazff15p,zgrazff15g,zgraztot15 
     93      REAL(wp) :: zgrarem2_15,zgrarsig_15,zgrarsigex_15,zmortzgoc_15,zgrapoc2_15,zfrac15 
     94#endif 
     95#if defined key_c13 
     96      REAL(wp) :: zgrazn13,zgrazd13,zgrazpo13,zgrazff13p,zgrazff13g,zgraztot13 
     97      REAL(wp) :: zgrarem2_13,zgrarsig_13,zmortzgoc_13,zgrapoc2_13,zfrac13 
     98#endif 
    8499      CHARACTER (len=25) :: charout 
    85100      REAL(wp), POINTER, DIMENSION(:,:,:) :: zgrazing, zw3d 
     
    139154               zgrazpof  = zgrazpoc * trb(ji,jj,jk,jpsfe) / ( trb(ji,jj,jk,jppoc) + rtrn) 
    140155 
     156#ifdef key_n15 
     157               zgrazn15   = zgrazn   * trb(ji,jj,jk,jp15phy) / ( trb(ji,jj,jk,jpphy) + rtrn) 
     158               zgrazd15   = zgrazd   * trb(ji,jj,jk,jp15dia) / ( trb(ji,jj,jk,jpdia) + rtrn) 
     159               zgrazpo15  = zgrazpoc * trb(ji,jj,jk,jp15poc) / ( trb(ji,jj,jk,jppoc) + rtrn) 
     160#endif 
     161#ifdef key_c13 
     162               zgrazn13   = zgrazn   * trb(ji,jj,jk,jp13phy) / ( trb(ji,jj,jk,jpphy) + rtrn) 
     163               zgrazd13   = zgrazd   * trb(ji,jj,jk,jp13dia) / ( trb(ji,jj,jk,jpdia) + rtrn) 
     164               zgrazpo13  = zgrazpoc * trb(ji,jj,jk,jp13poc) / ( trb(ji,jj,jk,jppoc) + rtrn) 
     165#endif 
     166 
     167 
    141168               !  Mesozooplankton flux feeding on GOC 
    142169               !  ---------------------------------- 
     
    150177               &           * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpmes) 
    151178               zgrazfffp = zgrazffep * trb(ji,jj,jk,jpsfe) / (trb(ji,jj,jk,jppoc) + rtrn) 
     179#ifdef key_n15 
     180               zgrazff15g = zgrazffeg * trb(ji,jj,jk,jp15goc) / (trb(ji,jj,jk,jpgoc) + rtrn) 
     181               zgrazff15p = zgrazffep * trb(ji,jj,jk,jp15poc) / (trb(ji,jj,jk,jppoc) + rtrn) 
     182#endif 
     183#ifdef key_c13 
     184               zgrazff13g = zgrazffeg * trb(ji,jj,jk,jp13goc) / (trb(ji,jj,jk,jpgoc) + rtrn) 
     185               zgrazff13p = zgrazffep * trb(ji,jj,jk,jp13poc) / (trb(ji,jj,jk,jppoc) + rtrn) 
     186#endif 
     187 
    152188              ! 
    153189# if ! defined key_kriest 
     
    173209              &   + zgrazpoc + zgrazffep + zgrazffeg 
    174210              zgraztotf = zgrazf + zgraznf + zgrazz * ferat3 + zgrazpof + zgrazfffp + zgrazfffg 
     211 
     212#ifdef key_n15 
     213              zfrac15   =  zfrac * trb(ji,jj,jk,jp15goc) / (trb(ji,jj,jk,jpgoc) + rtrn) 
     214              zgrazff15p = zproport * zgrazff15p 
     215              zgrazff15g = zproport * zgrazff15g 
     216              zgraztot15 = zgrazd15 + zgrazn15 + zgrazz * trb(ji,jj,jk,jp15zoo) / (trb(ji,jj,jk,jpzoo) + rtrn)  + zgrazpo15 + zgrazff15p + zgrazff15g 
     217#endif 
     218#ifdef key_c13 
     219              zfrac13   =  zfrac * trb(ji,jj,jk,jp13goc) / (trb(ji,jj,jk,jpgoc) + rtrn) 
     220              zgrazff13p = zproport * zgrazff13p 
     221              zgrazff13g = zproport * zgrazff13g 
     222              zgraztot13 = zgrazd13 + zgrazn13 + zgrazz * trb(ji,jj,jk,jp13zoo) / (trb(ji,jj,jk,jpzoo) + rtrn)  + zgrazpo13 + zgrazff13p + zgrazff13g 
     223#endif 
     224 
     225 
     226 
    175227# else 
    176228              zgraztot  = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep 
     
    198250                &       + ferat3 * ( ( 1. - epsher2 - unass2 ) /( 1. - epsher2 ) * ztortz2 ) 
    199251               zgrapoc2  = zgraztot * unass2 
     252 
     253#ifdef key_n15 
     254               zgrarem2_15  = zgraztot15 * ( 1. - zepsherv - unass2 )            & 
     255                        + ( 1. - epsher2 - unass2 ) / ( 1. - epsher2 ) * ztortz2 & 
     256                        * trb(ji,jj,jk,jp15mes) / ( trb(ji,jj,jk,jpmes) + rtrn ) 
     257               zgrarsig_15  = zgrarem2_15 * sigma2 
     258               zgrarsigex_15  =  zgraztot15 * ( 1. - epsher2 - unass2 ) * sigma2 * zgrasratn 
     259               zgrapoc2_15  = zgraztot15 * unass2 
     260               zmortzgoc_15  = ( unass2 / ( 1. - epsher2 ) * ztortz2 + zrespz2 )  & 
     261                        * trb(ji,jj,jk,jp15mes) / ( trb(ji,jj,jk,jpmes) + rtrn ) 
     262#endif 
     263#ifdef key_c13 
     264               zgrarem2_13  = zgraztot13 * ( 1. - zepsherv - unass2 ) & 
     265                        + ( 1. - epsher2 - unass2 ) / ( 1. - epsher2 ) * ztortz2 & 
     266                        * trb(ji,jj,jk,jp13mes) / ( trb(ji,jj,jk,jpmes) + rtrn ) 
     267               zgrarsig_13  = zgrarem2_13 * sigma2 
     268               zgrapoc2_13  = zgraztot13 * unass2 
     269               zmortzgoc_13  = ( unass2 / ( 1. - epsher2 ) * ztortz2 + zrespz2 ) & 
     270                        * trb(ji,jj,jk,jp13mes) / ( trb(ji,jj,jk,jpmes) + rtrn ) 
     271#endif 
     272 
    200273 
    201274               !   Update the arrays TRA which contain the biological sources and sinks 
     
    222295               tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) - zgrazf 
    223296 
     297#if defined key_n15 
     298               tra(ji,jj,jk,jp15nh4) = tra(ji,jj,jk,jp15nh4) + (1. - e15n_ex2 / 1000.) * zgrarsigex_15   & 
     299               &  + (zgrarsig_15-zgrarsigex_15) 
     300               tra(ji,jj,jk,jp15doc) = tra(ji,jj,jk,jp15doc) + zgrarem2_15 - zgrarsig_15 
     301               tra(ji,jj,jk,jp15mes) = tra(ji,jj,jk,jp15mes) - zmortz2 * trb(ji,jj,jk,jp15mes) / (trb(ji,jj,jk,jpmes) + rtrn) & 
     302                                                             + zepsherv * zgraztot15 & 
     303                                                             + zgrarsigex_15 * (e15n_ex2 / 1000.) & 
     304               &                                             + zgrapoc2_15  * (e15n_ing2 / 1000.) 
     305               tra(ji,jj,jk,jp15dia) = tra(ji,jj,jk,jp15dia) - zgrazd15  
     306               tra(ji,jj,jk,jp15zoo) = tra(ji,jj,jk,jp15zoo) - zgrazz * trb(ji,jj,jk,jp15zoo) / ( trb(ji,jj,jk,jpzoo) + rtrn ) 
     307               tra(ji,jj,jk,jp15phy) = tra(ji,jj,jk,jp15phy) - zgrazn15  
     308#endif 
     309#if defined key_c13 
     310               tra(ji,jj,jk,jp13dic) = tra(ji,jj,jk,jp13dic) + zgrarsig_13 
     311               tra(ji,jj,jk,jp13doc) = tra(ji,jj,jk,jp13doc) + zgrarem2_13 - zgrarsig_13 
     312               tra(ji,jj,jk,jp13mes) = tra(ji,jj,jk,jp13mes) - zmortz2 * trb(ji,jj,jk,jp13mes) / (trb(ji,jj,jk,jpmes) + rtrn) & 
     313                                                             + zepsherv * zgraztot13  
     314               tra(ji,jj,jk,jp13dia) = tra(ji,jj,jk,jp13dia) - zgrazd13 
     315               tra(ji,jj,jk,jp13zoo) = tra(ji,jj,jk,jp13zoo) - zgrazz * trb(ji,jj,jk,jp13zoo) / ( trb(ji,jj,jk,jpzoo) + rtrn ) 
     316               tra(ji,jj,jk,jp13phy) = tra(ji,jj,jk,jp13phy) - zgrazn13 
     317#endif 
     318 
    224319               ! calcite production 
    225320               zprcaca = xfracal(ji,jj,jk) * zgrazn 
     
    230325               tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2. * zprcaca 
    231326               tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) + zprcaca 
     327#if defined key_c13 
     328               tra(ji,jj,jk,jp13dic) = tra(ji,jj,jk,jp13dic) - zprcaca *  ( 1.  - e13c_cal2/1000. ) & 
     329                                                  * ( trb(ji,jj,jk,jp13dic) / (trb(ji,jj,jk,jpdic) + rtrn ) ) 
     330               tra(ji,jj,jk,jp13cal) = tra(ji,jj,jk,jp13cal) + zprcaca *  ( 1.  - e13c_cal2/1000. ) & 
     331                                                  * ( trb(ji,jj,jk,jp13dic) / (trb(ji,jj,jk,jpdic) + rtrn ) ) 
     332#endif 
     333 
    232334#if defined key_kriest 
    233335              znumpoc = trb(ji,jj,jk,jpnum) / ( trb(ji,jj,jk,jppoc) + rtrn ) 
     
    243345              tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + ferat3 * zmortzgoc - zgrazfffg     & 
    244346                 &                + zgraztotf * unass2 - zfracfe 
     347#if defined key_n15 
     348              tra(ji,jj,jk,jp15poc) = tra(ji,jj,jk,jp15poc) - zgrazpo15 - zgrazff15p + zfrac15 
     349              tra(ji,jj,jk,jp15goc) = tra(ji,jj,jk,jp15goc) + zmortzgoc_15 - zgrazff15g       & 
     350                 &    + (1. - e15n_ing2/1000.) * zgrapoc2_15 - zfrac15 
     351#endif 
     352#if defined key_c13 
     353              tra(ji,jj,jk,jp13poc) = tra(ji,jj,jk,jp13poc) - zgrazpo13 - zgrazff13p + zfrac13 
     354              tra(ji,jj,jk,jp13goc) = tra(ji,jj,jk,jp13goc) + zmortzgoc_13 - zgrazff13g + zgrapoc2_13 - zfrac13 
     355#endif 
    245356#endif 
    246357            END DO 
     
    289400      NAMELIST/nampismes/ part2, grazrat2, resrat2, mzrat2, xprefc, xprefp, xprefz,   & 
    290401         &                xprefpoc, xthresh2dia, xthresh2phy, xthresh2zoo, xthresh2poc, & 
     402#if defined key_n15 
     403         &                e15n_ex2, e15n_ing2,   & 
     404#endif 
     405#if defined key_c13 
     406         &                e13c_cal2,  & 
     407#endif 
    291408         &                xthresh2, xkgraz2, epsher2, sigma2, unass2, grazflux 
     409 
    292410      INTEGER :: ios                 ! Local integer output status for namelist read 
    293411 
     
    324442         WRITE(numout,*) '    Fraction of mesozoo excretion as DOM           sigma2       =', sigma2 
    325443         WRITE(numout,*) '    half sturation constant for grazing 2          xkgraz2      =', xkgraz2 
     444#if defined key_n15 
     445         WRITE(numout,*) '    N15 mesozoo excretion fractionation            e15n_ex2     =', e15n_ex2 
     446         WRITE(numout,*) '    N15 mesozoo ingestion fractionation            e15n_ing2    =', e15n_ing2 
     447#endif 
     448#if defined key_c13 
     449         WRITE(numout,*) '    C13 mesozoo calcification fractionation        e13c_cal2    =', e13c_cal2 
     450#endif 
    326451      ENDIF 
    327452 
     
    340465 
    341466   !!====================================================================== 
    342 END MODULE p4zmeso 
     467END MODULE  p4zmeso 
  • branches/CNRS/dev_r6526_PISCES_ISO/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmicro.F90

    r6204 r6534  
    4747   REAL(wp), PUBLIC ::  sigma1      !: Fraction of microzoo excretion as DOM  
    4848   REAL(wp), PUBLIC ::  epsher      !: half sturation constant for grazing 1  
    49  
     49#if defined key_n15 
     50   REAL(wp), PUBLIC ::  e15n_ex     !: N15 microzoo excretion fractionation 
     51   REAL(wp), PUBLIC ::  e15n_ing     !: N15 microzoo ingestion fractionation 
     52#endif 
     53#if defined key_c13 
     54   REAL(wp), PUBLIC ::  e13c_calz   !: C13 microzoo calcification fractionation 
     55#endif 
    5056 
    5157   !!* Substitution 
     
    7985      REAL(wp) :: zgrazp, zgrazm, zgrazsd 
    8086      REAL(wp) :: zgrazmf, zgrazsf, zgrazpf 
     87#if defined key_n15 
     88      REAL(wp) :: zgrazp15,zgrazm15,zgrazs15,zgraztot15 
     89      REAL(wp) :: zgrarem_15,zgrarsig_15,zgrarsigex_15,zmortz_15,zgrapoc_15 
     90#endif 
     91#if defined key_c13 
     92      REAL(wp) :: zgrazp13,zgrazm13,zgrazs13,zgraztot13 
     93      REAL(wp) :: zgrarem_13,zgrarsig_13,zmortz_13,zgrapoc_13 
     94#endif 
    8195      REAL(wp), POINTER, DIMENSION(:,:,:) :: zgrazing, zw3d 
    8296      CHARACTER (len=25) :: charout 
     
    126140               zgrazmf   = zgrazm  * trb(ji,jj,jk,jpsfe) / (trb(ji,jj,jk,jppoc) + rtrn) 
    127141               zgrazsf   = zgrazsd * trb(ji,jj,jk,jpdfe) / (trb(ji,jj,jk,jpdia) + rtrn) 
     142 
    128143               ! 
    129144               zgraztot  = zgrazp  + zgrazm  + zgrazsd  
    130145               zgraztotf = zgrazpf + zgrazsf + zgrazmf  
    131146               zgraztotn = zgrazp * quotan(ji,jj,jk) + zgrazm + zgrazsd * quotad(ji,jj,jk) 
     147               ! 
     148#ifdef key_n15 
     149               zgrazp15   = zgrazp   * trb(ji,jj,jk,jp15phy) / ( trb(ji,jj,jk,jpphy) + rtrn) 
     150               zgrazm15   = zgrazm   * trb(ji,jj,jk,jp15poc) / ( trb(ji,jj,jk,jppoc) + rtrn) 
     151               zgrazs15  =  zgrazsd  * trb(ji,jj,jk,jp15dia) / ( trb(ji,jj,jk,jpdia) + rtrn) 
     152               zgraztot15 = zgrazp15 + zgrazm15 + zgrazs15 
     153#endif 
     154#ifdef key_c13 
     155               zgrazp13   = zgrazp   * trb(ji,jj,jk,jp13phy) / ( trb(ji,jj,jk,jpphy) + rtrn) 
     156               zgrazm13   = zgrazm   * trb(ji,jj,jk,jp13poc) / ( trb(ji,jj,jk,jppoc) + rtrn) 
     157               zgrazs13  =  zgrazsd  * trb(ji,jj,jk,jp13dia) / ( trb(ji,jj,jk,jpdia) + rtrn) 
     158               zgraztot13 = zgrazp13 + zgrazm13 + zgrazs13 
     159#endif 
    132160 
    133161               ! Grazing by microzooplankton 
     
    143171               zgrarem   = zgraztot * ( 1. - zepsherv - unass ) 
    144172               zgrapoc   = zgraztot * unass 
     173 
     174#ifdef key_n15 
     175               zgrarem_15   = zgraztot15 * ( 1. - zepsherv - unass ) 
     176               zgrapoc_15   = zgraztot15 * unass 
     177               zgrarsig_15  = zgrarem_15 * sigma1 
     178               zgrarsigex_15 = (1. - epsher - unass ) * zgraztot15 * sigma1 * zgrasratn 
     179               zmortz_15 = (ztortz + zrespz) * trb(ji,jj,jk,jp15zoo) / ( trb(ji,jj,jk,jpzoo) + rtrn ) 
     180#endif 
     181#ifdef key_c13 
     182               zgrarem_13   = zgraztot13 * ( 1. - zepsherv - unass ) 
     183               zgrapoc_13   = zgraztot13 * unass 
     184               zgrarsig_13  = zgrarem_13 * sigma1 
     185               zmortz_13 = (ztortz + zrespz) * trb(ji,jj,jk,jp13zoo) / ( trb(ji,jj,jk,jpzoo) + rtrn ) 
     186#endif 
     187 
    145188 
    146189               !  Update of the TRA arrays 
     
    159202               tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) + zgrapoc * xkr_dmicro 
    160203#endif 
     204               ! 
     205#if defined key_n15 
     206               tra(ji,jj,jk,jp15nh4) = tra(ji,jj,jk,jp15nh4) + (1. - e15n_ex / 1000.) * zgrarsigex_15   & 
     207               &   + (zgrarsig_15-zgrarsigex_15) 
     208               tra(ji,jj,jk,jp15doc) = tra(ji,jj,jk,jp15doc) + zgrarem_15 - zgrarsig_15 
     209               tra(ji,jj,jk,jp15poc) = tra(ji,jj,jk,jp15poc) + (1. - e15n_ing / 1000.) * zgrapoc_15 
     210#endif 
     211#if defined key_c13 
     212               tra(ji,jj,jk,jp13dic) = tra(ji,jj,jk,jp13dic) + zgrarsig_13 
     213               tra(ji,jj,jk,jp13doc) = tra(ji,jj,jk,jp13doc) + zgrarem_13 - zgrarsig_13 
     214               tra(ji,jj,jk,jp13poc) = tra(ji,jj,jk,jp13poc) + zgrapoc_13 
     215#endif 
     216 
     217               ! 
    161218               !   Update the arrays TRA which contain the biological sources and sinks 
    162219               !   -------------------------------------------------------------------- 
     
    186243                                                         - zgrazm * trb(ji,jj,jk,jpnum) / ( trb(ji,jj,jk,jppoc) + rtrn ) 
    187244#endif 
     245               ! 
     246#if defined key_n15 
     247               tra(ji,jj,jk,jp15zoo) = tra(ji,jj,jk,jp15zoo) - zmortz_15 + zepsherv * zgraztot15    & 
     248               &                       + e15n_ex / 1000. * zgrarsigex_15 + e15n_ing / 1000. * zgrapoc_15 
     249               tra(ji,jj,jk,jp15phy) = tra(ji,jj,jk,jp15phy) - zgrazp15 
     250               tra(ji,jj,jk,jp15dia) = tra(ji,jj,jk,jp15dia) - zgrazs15 
     251               tra(ji,jj,jk,jp15poc) = tra(ji,jj,jk,jp15poc) + zmortz_15 - zgrazm15 
     252#endif 
     253#if defined key_c13 
     254               tra(ji,jj,jk,jp13zoo) = tra(ji,jj,jk,jp13zoo) - zmortz_13 + zepsherv * zgraztot13 
     255               tra(ji,jj,jk,jp13phy) = tra(ji,jj,jk,jp13phy) - zgrazp13 
     256               tra(ji,jj,jk,jp13dia) = tra(ji,jj,jk,jp13dia) - zgrazs13 
     257               tra(ji,jj,jk,jp13poc) = tra(ji,jj,jk,jp13poc) + zmortz_13 - zgrazm13 
     258 
     259               tra(ji,jj,jk,jp13dic) = tra(ji,jj,jk,jp13dic) - zprcaca *  ( 1.  - e13c_calz/1000. ) & 
     260                                                  * ( trb(ji,jj,jk,jp13dic) / (trb(ji,jj,jk,jpdic) + rtrn ) ) 
     261               tra(ji,jj,jk,jp13cal) = tra(ji,jj,jk,jp13cal) + zprcaca *  ( 1.  - e13c_calz/1000. ) & 
     262                                                  * ( trb(ji,jj,jk,jp13dic) / (trb(ji,jj,jk,jpdic) + rtrn ) ) 
     263#endif 
     264 
    188265            END DO 
    189266         END DO 
     
    228305      NAMELIST/nampiszoo/ part, grazrat, resrat, mzrat, xpref2c, xpref2p, & 
    229306         &                xpref2d,  xthreshdia,  xthreshphy,  xthreshpoc, & 
     307#ifdef key_n15 
     308         &                e15n_ex, e15n_ing,   & 
     309#endif 
     310#ifdef key_c13 
     311         &                e13c_calz, & 
     312#endif 
    230313         &                xthresh, xkgraz, epsher, sigma1, unass 
    231314      INTEGER :: ios                 ! Local integer output status for namelist read 
     
    259342         WRITE(numout,*) '    Fraction of microzoo excretion as DOM           sigma1      =', sigma1 
    260343         WRITE(numout,*) '    half sturation constant for grazing 1           xkgraz      =', xkgraz 
     344#if defined key_n15 
     345         WRITE(numout,*) '    N15 microzoo excretion fractionation            e15n_ex     =', e15n_ex 
     346         WRITE(numout,*) '    N15 microzoo ingestion fractionation            e15n_ing    =', e15n_ing 
     347#endif 
     348#if defined key_c13 
     349         WRITE(numout,*) '    C13 microzoo calcification fractionation        e13c_calz   =', e13c_calz 
     350#endif 
    261351      ENDIF 
    262352 
     
    273363 
    274364   !!====================================================================== 
    275 END MODULE p4zmicro 
     365END MODULE  p4zmicro 
  • branches/CNRS/dev_r6526_PISCES_ISO/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmort.F90

    r6204 r6534  
    3333   REAL(wp), PUBLIC :: mprat   !: 
    3434   REAL(wp), PUBLIC :: mprat2  !: 
     35#if defined key_c13 
     36   REAL(wp), PUBLIC :: e13c_cal !: 
     37#endif 
    3538 
    3639 
     
    121124               tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2. * zprcaca 
    122125               tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) + zprcaca 
     126#if defined key_n15 
     127               tra(ji,jj,jk,jp15phy) = tra(ji,jj,jk,jp15phy) - zmortp   & 
     128                                                  * ( trb(ji,jj,jk,jp15phy) / (trb(ji,jj,jk,jpphy) + rtrn ) ) 
     129#endif 
     130 
     131#if defined key_c13 
     132               tra(ji,jj,jk,jp13phy) = tra(ji,jj,jk,jp13phy) - zmortp   & 
     133                                                  * ( trb(ji,jj,jk,jp13phy) / (trb(ji,jj,jk,jpphy) + rtrn ) ) 
     134 
     135               tra(ji,jj,jk,jp13dic) = tra(ji,jj,jk,jp13dic) - zprcaca *  ( 1. - e13c_cal/1000. ) & 
     136                                                  * ( trb(ji,jj,jk,jp13dic) / (trb(ji,jj,jk,jpdic) + rtrn ) )  
     137               tra(ji,jj,jk,jp13cal) = tra(ji,jj,jk,jp13cal) + zprcaca *  ( 1. - e13c_cal/1000. ) & 
     138                                                  * ( trb(ji,jj,jk,jp13dic) / (trb(ji,jj,jk,jpdic) + rtrn ) ) 
     139#endif 
     140 
     141               ! 
    123142#if defined key_kriest 
    124143               tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortp 
     
    130149               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ( 1. - zfracal ) * zmortp * zfactfe 
    131150               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zfracal * zmortp * zfactfe 
     151#if defined key_n15 
     152               tra(ji,jj,jk,jp15goc) = tra(ji,jj,jk,jp15goc) + zfracal * zmortp &  
     153                                                  * ( trb(ji,jj,jk,jp15phy) / (trb(ji,jj,jk,jpphy) + rtrn ) ) 
     154               tra(ji,jj,jk,jp15poc) = tra(ji,jj,jk,jp15poc) + ( 1. - zfracal ) * zmortp & 
     155                                                  * ( trb(ji,jj,jk,jp15phy) / (trb(ji,jj,jk,jpphy) + rtrn ) ) 
     156#endif 
     157 
     158#if defined key_c13 
     159               tra(ji,jj,jk,jp13goc) = tra(ji,jj,jk,jp13goc) + zfracal * zmortp & 
     160                                                  * ( trb(ji,jj,jk,jp13phy) / (trb(ji,jj,jk,jpphy) + rtrn ) ) 
     161               tra(ji,jj,jk,jp13poc) = tra(ji,jj,jk,jp13poc) + ( 1. - zfracal ) * zmortp & 
     162                                                  * ( trb(ji,jj,jk,jp13phy) / (trb(ji,jj,jk,jpphy) + rtrn ) ) 
     163#endif 
     164 
    132165#endif 
    133166            END DO 
     
    204237               tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) - zmortp2 * zfactsi 
    205238               tra(ji,jj,jk,jpgsi) = tra(ji,jj,jk,jpgsi) + zmortp2 * zfactsi 
     239#if defined key_n15 
     240               tra(ji,jj,jk,jp15dia) = tra(ji,jj,jk,jp15dia) - zmortp2 &  
     241                                                  * ( trb(ji,jj,jk,jp15dia) / (trb(ji,jj,jk,jpdia) + rtrn ) ) 
     242#endif 
     243#if defined key_c13 
     244               tra(ji,jj,jk,jp13dia) = tra(ji,jj,jk,jp13dia) - zmortp2 & 
     245                                                  * ( trb(ji,jj,jk,jp13dia) / (trb(ji,jj,jk,jpdia) + rtrn ) ) 
     246#endif 
     247 
     248 
    206249#if defined key_kriest 
    207250               tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortp2   
     
    213256               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + 0.5 * ztortp2 * zfactfe 
    214257               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + ( zrespp2 + 0.5 * ztortp2 ) * zfactfe 
     258#if defined key_n15 
     259               tra(ji,jj,jk,jp15goc) = tra(ji,jj,jk,jp15goc) + ( zrespp2 + 0.5 * ztortp2 ) & 
     260                                                  * ( trb(ji,jj,jk,jp15dia) / (trb(ji,jj,jk,jpdia) + rtrn ) ) 
     261               tra(ji,jj,jk,jp15poc) = tra(ji,jj,jk,jp15poc) + 0.5 * ztortp2 & 
     262                                                  * ( trb(ji,jj,jk,jp15dia) / (trb(ji,jj,jk,jpdia) + rtrn ) ) 
     263#endif 
     264 
     265#if defined key_n15 
     266               tra(ji,jj,jk,jp13goc) = tra(ji,jj,jk,jp13goc) + ( zrespp2 + 0.5 * ztortp2 ) & 
     267                                                  * ( trb(ji,jj,jk,jp13dia) / (trb(ji,jj,jk,jpdia) + rtrn ) ) 
     268               tra(ji,jj,jk,jp13poc) = tra(ji,jj,jk,jp13poc) + 0.5 * ztortp2 & 
     269                                                  * ( trb(ji,jj,jk,jp13dia) / (trb(ji,jj,jk,jpdia) + rtrn ) ) 
     270#endif 
     271 
    215272#endif 
    216273            END DO 
     
    242299      !!---------------------------------------------------------------------- 
    243300 
    244       NAMELIST/nampismort/ wchl, wchld, wchldm, mprat, mprat2 
     301      NAMELIST/nampismort/ wchl, wchld, wchldm, mprat, & 
     302#ifdef key_c13 
     303                &     e13c_cal,                        & 
     304#endif 
     305                &     mprat2 
    245306      INTEGER :: ios                 ! Local integer output status for namelist read 
    246307 
     
    263324         WRITE(numout,*) '    phytoplankton mortality rate              mprat     =', mprat 
    264325         WRITE(numout,*) '    Diatoms mortality rate                    mprat2    =', mprat2 
     326#ifdef key_c13 
     327          WRITE(numout,*) '    C13 Calcification Fractionation          e13c_cal  =', e13c_cal 
     328#endif 
    265329      ENDIF 
    266330 
     
    277341 
    278342   !!====================================================================== 
    279 END MODULE p4zmort 
     343END MODULE  p4zmort 
  • branches/CNRS/dev_r6526_PISCES_ISO/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zprod.F90

    r6204 r6534  
    4545   REAL(wp), PUBLIC ::  fecdm           !: 
    4646   REAL(wp), PUBLIC ::  grosip          !: 
     47#if defined key_n15 
     48   REAL(wp), PUBLIC ::  e15n_prod       !: 
     49#endif 
     50#if defined key_c13 
     51   REAL(wp), PUBLIC ::  e13c_min       !: 
     52   REAL(wp), PUBLIC ::  e13c_max      !: 
     53#endif 
    4754 
    4855   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   prmax    !: optimal production = f(temperature) 
     
    7683      INTEGER, INTENT(in) :: kt, knt 
    7784      ! 
    78       INTEGER  ::   ji, jj, jk 
     85      INTEGER  ::   ji, jj, jk, jm 
    7986      REAL(wp) ::   zsilfac, znanotot, zdiattot, zconctemp, zconctemp2 
    8087      REAL(wp) ::   zratio, zmax, zsilim, ztn, zadap 
    8188      REAL(wp) ::   zlim, zsilfac2, zsiborn, zprod, zproreg, zproreg2 
     89#ifdef key_n15 
     90      REAL(wp) ::   zr15_reg, zr15_new, zu_15, zun_15 
     91#endif 
     92#ifdef key_c13 
     93      REAL(wp) ::   zr13, zr13_2, z_e13c_prod, z_e13c_prod2 
     94      REAL(wp) ::   ztc, zft, zrhop, zfco3, zbot, zdic, zph, zalka, zalk, zah2 
     95#endif 
    8296      REAL(wp) ::   zmxltst, zmxlday, zmaxday 
    8397      REAL(wp) ::   zpislopen  , zpislope2n 
     
    88102      REAL(wp), POINTER, DIMENSION(:,:,:) :: zpislopead, zpislopead2, zprdia, zprbio, zprdch, zprnch, zysopt, zw3d    
    89103      REAL(wp), POINTER, DIMENSION(:,:,:) :: zprorca, zprorcad, zprofed, zprofen, zprochln, zprochld, zpronew, zpronewd 
     104#ifdef key_c13 
     105      REAL(wp), POINTER, DIMENSION(:,:,:) :: za_g, za_dic, zh2co3, z_co3 
     106#endif 
    90107      !!--------------------------------------------------------------------- 
    91108      ! 
     
    96113      CALL wrk_alloc( jpi, jpj, jpk, zpislopead, zpislopead2, zprdia, zprbio, zprdch, zprnch, zysopt            )  
    97114      CALL wrk_alloc( jpi, jpj, jpk, zprorca, zprorcad, zprofed, zprofen, zprochln, zprochld, zpronew, zpronewd ) 
     115#ifdef key_c13 
     116      CALL wrk_alloc( jpi, jpj, jpk, za_g, za_dic, zh2co3, z_co3) 
     117#endif 
    98118      ! 
    99119      zprorca (:,:,:) = 0._wp 
     
    294314         END DO 
    295315      END DO 
     316 
     317      ! Computation of the C13 fractionation factor from Laws et al. 1995 
     318#if defined key_c13 
     319      DO jm = 1, 10 
     320!CDIR NOVERRCHK 
     321         DO jk = 1, jpkm1 
     322!CDIR NOVERRCHK 
     323           DO jj = 1, jpj 
     324!CDIR NOVERRCHK 
     325             DO ji = 1, jpi 
     326 
     327               ! DUMMY VARIABLES FOR DIC, H+, AND BORATE 
     328               zbot  = borat(ji,jj,jk) 
     329               zrhop = rhop(ji,jj,jk) / 1000. + rtrn 
     330               zdic  = trb(ji,jj,jk,jpdic) / zrhop 
     331               zph   = MAX( hi(ji,jj,jk), 1.e-10 ) / zrhop 
     332               zalka = trb(ji,jj,jk,jptal) / zrhop 
     333 
     334               ! CALCULATE [ALK]([CO3--], [HCO3-]) 
     335               zalk  = zalka - (  akw3(ji,jj,jk) / zph - zph + zbot / ( 1.+ zph / akb3(ji,jj,jk) )  ) 
     336 
     337               ! CALCULATE [H+] AND [H2CO3] 
     338               zah2   = SQRT(  (zdic-zalk)**2 + 4.* ( zalk * ak23(ji,jj,jk)   & 
     339                  &                               / ak13(ji,jj,jk) ) * ( 2.* zdic - zalk )  ) 
     340               zah2   = 0.5 * ak13(ji,jj,jk) / zalk * ( ( zdic - zalk ) + zah2 ) 
     341               zh2co3(ji,jj,jk) = ( 2.* zdic - zalk ) / ( 2.+ ak13(ji,jj,jk) / zah2) * zrhop 
     342               z_co3(ji,jj,jk) = zalk / ( 2. + zah2 / ak23(ji,jj,jk) ) * zrhop 
     343               hi(ji,jj,jk)   = zah2 * zrhop 
     344             END DO 
     345           END DO 
     346         END DO 
     347      END DO 
     348 
     349!CDIR NOVERRCHK 
     350         DO jk = 1, jpkm1 
     351!CDIR NOVERRCHK 
     352           DO jj = 1, jpj 
     353!CDIR NOVERRCHK 
     354             DO ji = 1, jpi 
     355 
     356 
     357!           ! Compute fractionation factors for C13 from Zhang et al. 1995 
     358 
     359               zfco3 = MAX(0.05,(z_co3(ji,jj,jk)/trb(ji,jj,jk,jpdic)+rtrn)) 
     360               zfco3 = MIN(0.2 , zfco3) 
     361               ztc = MIN( 35., tsn(ji,jj,jk,jp_tem) ) 
     362               zft = MIN(25.,ztc) 
     363               zft = MAX( 5.,zft) 
     364               za_g(ji,jj,jk) = 1.   + ( -0.0049 * zft - 1.31 ) / 1000. 
     365               za_dic(ji,jj,jk) = 1. + ( 0.014 * zft * zfco3 & 
     366                   - 0.105 * zft + 10.53 ) / 1000. 
     367            END DO 
     368         END DO 
     369      END DO 
     370 
     371#endif 
    296372 
    297373      ! Computation of the various production terms  
     
    390466              zproreg  = zprorca(ji,jj,jk) - zpronew(ji,jj,jk) 
    391467              zproreg2 = zprorcad(ji,jj,jk) - zpronewd(ji,jj,jk) 
     468#ifdef key_n15 
     469              zu_15 = MIN(1.,MAX(0., 1. - (zpronew(ji,jj,jk)+zpronewd(ji,jj,jk))/(rtrn + trb(ji,jj,jk,jp15no3)))) 
     470              zun_15 = MIN(1.,MAX(0., 1. - (zproreg+zproreg2) / (rtrn + trb(ji,jj,jk,jp15nh4)))) 
     471 
     472              zr15_new = ( 1. - e15n_prod/1000. * zu_15) * trb(ji,jj,jk,jp15no3) / (trb(ji,jj,jk,jpno3) + rtrn) 
     473              zr15_reg = ( 1. - e15n_prod/1000. * zun_15) * trb(ji,jj,jk,jp15nh4) / (trb(ji,jj,jk,jpnh4) + rtrn) 
     474#endif 
     475 
     476#ifdef key_c13 
     477 
     478              z_e13c_prod  = MAX(e13c_min,MIN(e13c_max,( (86400 * zprorca(ji,jj,jk) / (rtrn + trb(ji,jj,jk,jpphy) ) & 
     479              &                               / ( rfact2 * (zh2co3(ji,jj,jk)/1025*1.e9 + rtrn)  ) - 0.371 ) / (-0.015)))) 
     480               
     481              z_e13c_prod2 = MAX(e13c_min,MIN(e13c_max,( ( 86400 * zprorcad(ji,jj,jk) / (rtrn + trb(ji,jj,jk,jpdia) ) & 
     482              &                               / ( rfact2 * (zh2co3(ji,jj,jk)/1025*1.e9 + rtrn)  ) - 0.371 ) / (-0.015)))) 
     483 
     484              ! 
     485              if ((mig(ji).eq.74).and.(mig(jj).eq.74).and.(jk.eq.1)) THEN 
     486                      write(numout,*) z_e13c_prod, 86400*(zprorca(ji,jj,jk)/(rtrn + trb(ji,jj,jk,jpphy))/rfact2) , (zh2co3(ji,jj,jk)) , & 
     487               &                      ((86400 * zprorca(ji,jj,jk) / (rtrn + trb(ji,jj,jk,jpphy) ) & 
     488               &                             / ( rfact2 * (zh2co3(ji,jj,jk)/1025*1.e9 + rtrn)  ) - 0.371 ) / (-0.015)) 
     489              endif 
     490 
     491 
     492              zr13 = ( 1. - z_e13c_prod/1000. ) * trb(ji,jj,jk,jp13dic) / (trb(ji,jj,jk,jpdic) + rtrn )  !& 
     493              !&                                 * za_g(ji,jj,jk) / (za_dic(ji,jj,jk) + rtrn) 
     494              zr13_2 = ( 1. - z_e13c_prod2/1000. ) * trb(ji,jj,jk,jp13dic) / (trb(ji,jj,jk,jpdic) + rtrn ) !& 
     495              !&                                 * za_g(ji,jj,jk) / (za_dic(ji,jj,jk) + rtrn) 
     496#endif 
     497 
    392498              tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) - zprorca(ji,jj,jk) - zprorcad(ji,jj,jk) 
    393499              tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) - zpronew(ji,jj,jk) - zpronewd(ji,jj,jk) 
     
    408514              tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * ( zpronew(ji,jj,jk) + zpronewd(ji,jj,jk) ) & 
    409515                 &                                      - rno3 * ( zproreg + zproreg2 ) 
     516#ifdef key_n15 
     517 
     518              tra(ji,jj,jk,jp15no3) = tra(ji,jj,jk,jp15no3) - zr15_new * ( zpronew(ji,jj,jk) + zpronewd(ji,jj,jk) ) 
     519              tra(ji,jj,jk,jp15nh4) = tra(ji,jj,jk,jp15nh4) - zr15_reg * ( zproreg + zproreg2 ) 
     520              tra(ji,jj,jk,jp15phy) = tra(ji,jj,jk,jp15phy) + zr15_new * zpronew(ji,jj,jk) * texcret  & 
     521                                                            + zr15_reg * zproreg * texcret     
     522              tra(ji,jj,jk,jp15dia) = tra(ji,jj,jk,jp15dia) + zr15_new * zpronewd(ji,jj,jk) * texcret2  & 
     523                                                            + zr15_reg * zproreg2 * texcret2  
     524              tra(ji,jj,jk,jp15doc) = tra(ji,jj,jk,jp15doc) + zr15_new * zpronew(ji,jj,jk) * excret     & 
     525                                                            + zr15_reg * zproreg * excret     & 
     526                                                            + zr15_new * zpronewd(ji,jj,jk) * excret2   & 
     527                                                            + zr15_reg * zproreg2 * excret2 
     528#endif 
     529 
     530#ifdef key_c13 
     531              tra(ji,jj,jk,jp13dic) = tra(ji,jj,jk,jp13dic) - zr13 * zprorca(ji,jj,jk) - zr13_2 * zprorcad(ji,jj,jk)  
     532              tra(ji,jj,jk,jp13phy) = tra(ji,jj,jk,jp13phy) + zr13 * zprorca(ji,jj,jk) * texcret   
     533              tra(ji,jj,jk,jp13dia) = tra(ji,jj,jk,jp13dia) + zr13_2 * zprorcad(ji,jj,jk) * texcret2  
     534              tra(ji,jj,jk,jp13doc) = tra(ji,jj,jk,jp13doc) + zr13 * zprorca(ji,jj,jk) * excret       &    
     535                                                            + zr13_2 * zprorcad(ji,jj,jk) * excret2 
     536#endif 
    410537          END DO 
    411538        END DO 
     
    548675     CALL wrk_dealloc( jpi, jpj, jpk, zpislopead, zpislopead2, zprdia, zprbio, zprdch, zprnch, zysopt            )  
    549676     CALL wrk_dealloc( jpi, jpj, jpk, zprorca, zprorcad, zprofed, zprofen, zprochln, zprochld, zpronew, zpronewd ) 
     677#ifdef key_c13 
     678     CALL wrk_dealloc( jpi, jpj, jpk, za_g, za_dic, zh2co3, z_co3) 
     679#endif 
    550680     ! 
    551681     IF( nn_timing == 1 )  CALL timing_stop('p4z_prod') 
     
    567697      ! 
    568698      NAMELIST/nampisprod/ pislope, pislope2, xadap, ln_newprod, bresp, excret, excret2,  & 
     699#if defined key_n15 
     700         &                 e15n_prod, & 
     701#endif 
     702#if defined key_c13 
     703         &                 e13c_min, e13c_max, & 
     704#endif 
     705 
    569706         &                 chlcnm, chlcdm, chlcmin, fecnm, fecdm, grosip 
     707 
    570708      INTEGER :: ios                 ! Local integer output status for namelist read 
    571709      !!---------------------------------------------------------------------- 
     
    599737         WRITE(numout,*) '    Maximum Fe/C in nanophytoplankton         fecnm        =', fecnm 
    600738         WRITE(numout,*) '    Minimum Fe/C in diatoms                   fecdm        =', fecdm 
     739#if defined key_n15 
     740         WRITE(numout,*) '    N15 assimilation fractionation            e15n_prod    =', e15n_prod 
     741#endif 
     742#if defined key_c13 
     743         WRITE(numout,*) '    C13 assimilation fractionation min       e13c_min    =', e13c_min 
     744         WRITE(numout,*) '    C13 assimilation fractionation max       e13c_max   =', e13c_max 
     745#endif 
     746 
    601747      ENDIF 
    602748      ! 
     
    629775 
    630776   !!====================================================================== 
    631 END MODULE p4zprod 
     777END MODULE  p4zprod 
  • branches/CNRS/dev_r6526_PISCES_ISO/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zrem.F90

    r5385 r6534  
    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_n15 
     48   REAL(wp), PUBLIC ::  e15n_denit !: N15 denitrification fractionation  
     49   REAL(wp), PUBLIC ::  e15n_nit !: N15 nitrification fractionation  
     50#endif 
    4851 
    4952   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   denitr     !: denitrification array 
     
    141144               ! ----------------------------------------------------- 
    142145               zolimit = zremik * ( 1.- nitrfac(ji,jj,jk) ) * trb(ji,jj,jk,jpdoc)  
    143                zolimi(ji,jj,jk) = MIN( ( trb(ji,jj,jk,jpoxy) - rtrn ) / o2ut, zolimit )  
     146               zolimi(ji,jj,jk) = MIN( ( trb(ji,jj,jk,jpoxy) - 1.E-8 ) / o2ut, zolimit )  
    144147               ! Ammonification in suboxic waters with denitrification 
    145148               ! ------------------------------------------------------- 
    146                denitr(ji,jj,jk)  = MIN(  ( trb(ji,jj,jk,jpno3) - rtrn ) / rdenit,   & 
     149               denitr(ji,jj,jk)  = MIN(  ( trb(ji,jj,jk,jpno3) - 1.E-8 ) / rdenit,   & 
    147150                  &                     zremik * nitrfac(ji,jj,jk) * trb(ji,jj,jk,jpdoc)  ) 
    148151               ! 
     
    169172               ! Update of the tracers trends 
    170173               ! ---------------------------- 
     174               denitnh4(ji,jj,jk)  = MIN(  ( trb(ji,jj,jk,jpno3) - 1.E-8 ) / rdenita,   & 
     175                  &                     denitnh4(ji,jj,jk)  ) 
     176               denitnh4(ji,jj,jk) = MAX(0., denitnh4(ji,jj,jk) ) 
     177 
    171178               tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) - zonitr - denitnh4(ji,jj,jk) 
    172179               tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + zonitr - rdenita * denitnh4(ji,jj,jk) 
    173180               tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2nit * zonitr 
    174181               tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2 * rno3 * zonitr + rno3 * ( rdenita - 1. ) * denitnh4(ji,jj,jk) 
     182# if defined key_n15 
     183               tra(ji,jj,jk,jp15nh4) = tra(ji,jj,jk,jp15nh4) - ( zonitr * (1. - e15n_nit / 1000.) + denitnh4(ji,jj,jk) ) & 
     184                                 &     *   trb(ji,jj,jk,jp15nh4) / (trb(ji,jj,jk,jpnh4) + rtrn ) 
     185               tra(ji,jj,jk,jp15no3) = tra(ji,jj,jk,jp15no3) + zonitr * (1. - e15n_nit / 1000.) &   
     186                                 &     *  trb(ji,jj,jk,jp15nh4) / (trb(ji,jj,jk,jpnh4) + rtrn )  & 
     187                                 &    - rdenita * denitnh4(ji,jj,jk) *   trb(ji,jj,jk,jp15no3) / (trb(ji,jj,jk,jpno3) + rtrn ) 
     188# endif 
    175189            END DO 
    176190         END DO 
     
    242256               tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zorem 
    243257               tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zofer 
     258#if defined key_n15 
     259               tra(ji,jj,jk,jp15doc) = tra(ji,jj,jk,jp15doc) + zorem * trb(ji,jj,jk,jp15poc) / (trb(ji,jj,jk,jppoc) + rtrn ) 
     260#endif 
     261#if defined key_c13 
     262               tra(ji,jj,jk,jp13doc) = tra(ji,jj,jk,jp13doc) + zorem * trb(ji,jj,jk,jp13poc) / (trb(ji,jj,jk,jppoc) + rtrn ) 
     263#endif 
     264 
    244265#if defined key_kriest 
    245266               tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zorem 
     
    247268               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zofer 
    248269#else 
    249                tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zorem2 - zorem 
    250                tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) - zorem2 
     270               tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zorem2 - zorem  
     271               tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) - zorem2  
    251272               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zofer2 - zofer 
    252273               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) - zofer2 
     274#if defined key_n15 
     275               tra(ji,jj,jk,jp15poc) = tra(ji,jj,jk,jp15poc) + zorem2 * trb(ji,jj,jk,jp15goc) / (trb(ji,jj,jk,jpgoc) + rtrn ) & 
     276                                      - zorem * trb(ji,jj,jk,jp15poc) / (trb(ji,jj,jk,jppoc) + rtrn ) 
     277               tra(ji,jj,jk,jp15goc) = tra(ji,jj,jk,jp15goc) - zorem2 * trb(ji,jj,jk,jp15goc) / (trb(ji,jj,jk,jpgoc) + rtrn ) 
     278#endif 
     279#if defined key_c13 
     280               tra(ji,jj,jk,jp13poc) = tra(ji,jj,jk,jp13poc) + zorem2 * trb(ji,jj,jk,jp13goc) / (trb(ji,jj,jk,jpgoc) + rtrn ) & 
     281                                      - zorem * trb(ji,jj,jk,jp13poc) / (trb(ji,jj,jk,jppoc) + rtrn ) 
     282               tra(ji,jj,jk,jp13goc) = tra(ji,jj,jk,jp13goc) - zorem2 * trb(ji,jj,jk,jp13goc) / (trb(ji,jj,jk,jpgoc) + rtrn ) 
     283#endif 
    253284#endif 
    254285 
     
    313344         tra(:,:,jk,jpdic) = tra(:,:,jk,jpdic) + zolimi (:,:,jk) + denitr(:,:,jk) 
    314345         tra(:,:,jk,jptal) = tra(:,:,jk,jptal) + rno3 * ( zolimi(:,:,jk) + ( rdenit + 1.) * denitr(:,:,jk) ) 
     346#if defined key_n15 
     347         tra(:,:,jk,jp15nh4) = tra(:,:,jk,jp15nh4) + ( zolimi (:,:,jk) + denitr(:,:,jk) ) & 
     348                                                   * trb(:,:,jk,jp15doc) / ( trb(:,:,jk,jpdoc) + rtrn ) 
     349         tra(:,:,jk,jp15no3) = tra(:,:,jk,jp15no3) - (1. - e15n_denit / 1000.) * denitr (:,:,jk) * rdenit & 
     350                                                   * trb(:,:,jk,jp15no3) / ( trb(:,:,jk,jpno3) + rtrn ) 
     351         tra(:,:,jk,jp15doc) = tra(:,:,jk,jp15doc) - ( zolimi (:,:,jk) + denitr(:,:,jk) ) & 
     352                                                   * trb(:,:,jk,jp15doc) / ( trb(:,:,jk,jpdoc) + rtrn ) 
     353#endif 
     354#if defined key_c13 
     355         tra(:,:,jk,jp13dic) = tra(:,:,jk,jp13dic) + ( zolimi (:,:,jk) + denitr(:,:,jk) ) & 
     356                                                   * trb(:,:,jk,jp13doc) / ( trb(:,:,jk,jpdoc) + rtrn ) 
     357         tra(:,:,jk,jp13doc) = tra(:,:,jk,jp13doc) - ( zolimi (:,:,jk) + denitr(:,:,jk) ) & 
     358                                                   * trb(:,:,jk,jp13doc) / ( trb(:,:,jk,jpdoc) + rtrn ) 
     359#endif 
     360 
    315361      END DO 
    316362 
     
    357403      !! 
    358404      !!---------------------------------------------------------------------- 
     405#if ! defined key_n15 
    359406      NAMELIST/nampisrem/ xremik, xremip, nitrif, xsirem, xsiremlab, xsilab,   & 
    360407      &                   oxymin 
     408#else 
     409      NAMELIST/nampisrem/ xremik, xremip, nitrif, xsirem, xsiremlab, xsilab,   & 
     410      &                   oxymin, e15n_denit, e15n_nit 
     411#endif 
    361412      INTEGER :: ios                 ! Local integer output status for namelist read 
    362413 
     
    381432         WRITE(numout,*) '    NH4 nitrification rate                    nitrif    =', nitrif 
    382433         WRITE(numout,*) '    halk saturation constant for anoxia       oxymin    =', oxymin 
     434#if defined key_n15 
     435         WRITE(numout,*) '    N15 denitrification fractionation        e15n_denit =', e15n_denit 
     436         WRITE(numout,*) '    N15 nitrification fractionation          e15n_nit =', e15n_nit 
     437#endif 
    383438      ENDIF 
    384439      ! 
  • branches/CNRS/dev_r6526_PISCES_ISO/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsbc.F90

    r6204 r6534  
    4242   REAL(wp), PUBLIC  :: concfediaz  !: Fe half-saturation Cste for diazotrophs  
    4343   REAL(wp)          :: hratio      !: Fe:3He ratio assumed for vent iron supply 
     44#ifdef key_n15 
     45   REAL(wp), PUBLIC  :: e15n_bdenit  !: N15 Benthic denit fractionation 
     46   REAL(wp), PUBLIC  :: d15n_nfix    !: dN15 Nfix 
     47   REAL(wp), PUBLIC  :: d15n_river   !: dN15 river input 
     48   REAL(wp), PUBLIC  :: d15n_depo    !: dN15 depo 
     49#endif 
     50#ifdef key_c13 
     51   REAL(wp), PUBLIC  :: d13c_rivdoc   !: dC13 river doc input 
     52   REAL(wp), PUBLIC  :: d13c_rivdic   !: dC13 river dic input 
     53#endif 
     54 
    4455 
    4556   LOGICAL , PUBLIC  :: ll_sbc 
     
    204215      TYPE(FLD_N) ::   sn_riverdoc, sn_riverdic, sn_riverdsi   ! informations about the fields to be read 
    205216      TYPE(FLD_N) ::   sn_riverdin, sn_riverdon, sn_riverdip, sn_riverdop 
    206       ! 
     217       
    207218      NAMELIST/nampissbc/cn_dir, sn_dust, sn_solub, sn_riverdic, sn_riverdoc, sn_riverdin, sn_riverdon,     & 
    208219        &                sn_riverdip, sn_riverdop, sn_riverdsi, sn_ndepo, sn_ironsed, sn_hydrofe, & 
    209220        &                ln_dust, ln_solub, ln_river, ln_ndepo, ln_ironsed, ln_ironice, ln_hydrofe,    & 
     221#ifdef key_n15 
     222        &                e15n_bdenit, d15n_nfix, d15n_river, d15n_depo,   & 
     223#endif 
     224#ifdef key_c13 
     225        &                d13c_rivdic, d13c_rivdoc,     & 
     226#endif 
    210227        &                sedfeinput, dustsolub, icefeinput, wdust, mfrac, nitrfix, diazolight, concfediaz, hratio 
     228 
    211229      !!---------------------------------------------------------------------- 
    212230      ! 
     
    252270         WRITE(numout,*) '    fe half-saturation cste for diazotrophs  concfediaz  = ', concfediaz 
    253271         WRITE(numout,*) '    Fe to 3He ratio assumed for vent iron supply hratio  = ', hratio 
     272#ifdef key_n15 
     273         WRITE(numout,*) '    N15 Benthic denit fractionation          e15n_bdenit = ', e15n_bdenit 
     274         WRITE(numout,*) '    dN15 nfix                                d15n_nfix   = ', d15n_nfix 
     275         WRITE(numout,*) '    dN15 river input                         d15n_river  = ', d15n_river 
     276         WRITE(numout,*) '    dN15 depo                                d15n_depo   = ', d15n_depo 
     277#endif 
     278#ifdef key_c13 
     279         WRITE(numout,*) '    dC13 river dic input                     d13c_rivdic = ', d13c_rivdic 
     280         WRITE(numout,*) '    dC13 river doc input                     d13c_rivdoc = ', d13c_rivdoc 
     281#endif 
    254282      END IF 
    255283 
     
    519547 
    520548   !!====================================================================== 
    521 END MODULE p4zsbc 
     549END MODULE  p4zsbc 
  • branches/CNRS/dev_r6526_PISCES_ISO/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsed.F90

    r6315 r6534  
    6969      REAL(wp) ::  zsiloss, zcaloss, zws3, zws4, zwsc, zdep, zwstpoc 
    7070      REAL(wp) ::  ztrfer, ztrpo4, zwdust, zlight 
     71      REAL(wp) :: zwstpoc15, zwstpoc13 
     72 
    7173      ! 
    7274      CHARACTER (len=25) :: charout 
     
    175177                  tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) +  rivdic(ji,jj) * rfact2 
    176178                  tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) +  ( rivalk(ji,jj) - rno3 * rivdin(ji,jj) ) * rfact2 
     179#if defined key_n15 
     180                  tra(ji,jj,jk,jp15no3) = tra(ji,jj,jk,jp15no3) + ( 1. + d15n_river / 1000. ) * rivdin(ji,jj) * rfact2 
     181#endif 
     182#if defined key_c13 
     183                  tra(ji,jj,jk,jp13dic) = tra(ji,jj,jk,jp13dic) + ( 1. + d13c_rivdic / 1000. ) * rivdic(ji,jj) * rfact2 
     184#endif 
     185 
    177186               ENDDO 
    178187            ENDDO 
     
    185194         tra(:,:,1,jpno3) = tra(:,:,1,jpno3) + nitdep(:,:) * rfact2 
    186195         tra(:,:,1,jptal) = tra(:,:,1,jptal) - rno3 * nitdep(:,:) * rfact2 
     196#if defined key_n15 
     197         tra(:,:,1,jp15no3) = tra(:,:,1,jp15no3) + (1. + d15n_depo / 1000.) * nitdep(:,:) * rfact2 
     198#endif 
    187199      ENDIF 
    188200 
     
    305317            zsedcal(ji,jj) = (1.0 - zrivalk) * zcaloss / zdep 
    306318            zsedsi (ji,jj) = (1.0 - zrivsil) * zsiloss / zdep 
     319#if defined key_c13 
     320            tra(ji,jj,ikt,jp13dic) =  tra(ji,jj,ikt,jp13dic) + zcaloss * zrivalk & 
     321              &                     * trb(ji,jj,ikt,jp13cal) / ( trb(ji,jj,ikt,jpcal) + rtrn) 
     322            tra(ji,jj,ikt,jp13cal) =  tra(ji,jj,ikt,jp13cal) - zcaloss * trb(ji,jj,ikt,jp13cal) & 
     323              &                     / ( trb(ji,jj,ikt,jpcal) + rtrn) 
     324#endif 
     325 
    307326#endif 
    308327         END DO 
     
    322341            tra(ji,jj,ikt,jpsfe) = tra(ji,jj,ikt,jpsfe) - trb(ji,jj,ikt,jpsfe) * zws3 
    323342            zwstpoc              = trb(ji,jj,ikt,jpgoc) * zws4 + trb(ji,jj,ikt,jppoc) * zws3 
     343#if defined key_n15 
     344            tra(ji,jj,ikt,jp15goc) = tra(ji,jj,ikt,jp15goc) - trb(ji,jj,ikt,jp15goc) * zws4 
     345            tra(ji,jj,ikt,jp15poc) = tra(ji,jj,ikt,jp15poc) - trb(ji,jj,ikt,jp15poc) * zws3 
     346            zwstpoc15              = trb(ji,jj,ikt,jp15goc) * zws4 + trb(ji,jj,ikt,jp15poc) * zws3 
     347#endif 
     348#if defined key_c13 
     349            tra(ji,jj,ikt,jp13goc) = tra(ji,jj,ikt,jp13goc) - trb(ji,jj,ikt,jp13goc) * zws4 
     350            tra(ji,jj,ikt,jp13poc) = tra(ji,jj,ikt,jp13poc) - trb(ji,jj,ikt,jp13poc) * zws3 
     351            zwstpoc13              = trb(ji,jj,ikt,jp13goc) * zws4 + trb(ji,jj,ikt,jp13poc) * zws3 
     352#endif 
     353 
    324354# else 
    325355            tra(ji,jj,ikt,jpnum) = tra(ji,jj,ikt,jpnum) - trb(ji,jj,ikt,jpnum) * zws4  
     
    345375            sdenit(ji,jj) = rdenit * zpdenit / zdep 
    346376            zsedc(ji,jj)   = (1. - zrivno3) * zwstpoc / zdep 
     377#if defined key_n15 
     378            tra(ji,jj,ikt,jp15doc) = tra(ji,jj,ikt,jp15doc) + zwstpoc15 * zrivno3  & 
     379                                   - zolimit * zwstpoc15 / ( zwstpoc + rtrn ) & 
     380                          &        - (zpdenit + zdenitt) * zwstpoc15 / ( zwstpoc + rtrn ) 
     381            tra(ji,jj,ikt,jp15nh4) = tra(ji,jj,ikt,jp15nh4) + zolimit * zwstpoc15 / ( zwstpoc + rtrn ) & 
     382                          &        + (zpdenit + zdenitt) * zwstpoc15 / ( zwstpoc + rtrn ) 
     383            tra(ji,jj,ikt,jp15no3) = tra(ji,jj,ikt,jp15no3) - (1. - e15n_bdenit / 1000.) * rdenit * (zpdenit + zdenitt) &  
     384                          &        * trb(ji,jj,ikt,jp15no3) / ( trb(ji,jj,ikt,jpno3) + rtrn ) 
     385#endif 
     386#if defined key_c13 
     387            tra(ji,jj,ikt,jp13doc) = tra(ji,jj,ikt,jp13doc) + zwstpoc13 * zrivno3  & 
     388                                   - zolimit * zwstpoc13 / ( zwstpoc + rtrn ) & 
     389                          &        - (zpdenit + zdenitt) * zwstpoc13 / ( zwstpoc + rtrn ) 
     390            tra(ji,jj,ikt,jp13dic) = tra(ji,jj,ikt,jp13dic) + zolimit * zwstpoc13 / ( zwstpoc + rtrn ) & 
     391                          &        + (zpdenit + zdenitt) * zwstpoc13 / ( zwstpoc + rtrn ) 
     392#endif 
    347393#endif 
    348394         END DO 
     
    385431               &                     * 0.002 * trb(ji,jj,jk,jpdoc) * xstep 
    386432               tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + 0.002 * 4E-10 * zsoufer(ji,jj,jk) * xstep 
     433#if defined key_n15 
     434               tra(ji,jj,jk,jp15nh4) = tra(ji,jj,jk,jp15nh4) +  (1. + d15n_nfix / 1000.)  * zfact 
     435#endif 
    387436           END DO 
    388437         END DO  
  • branches/CNRS/dev_r6526_PISCES_ISO/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsink.F90

    r6204 r6534  
    4040   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sinkfer2           !: Big iron sinking fluxes 
    4141#endif 
    42  
     42#if defined key_n15 
     43   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sink15n, sink15n2   !: N15 POC sinking fluxes 
     44#endif 
     45#if defined key_c13 
     46   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sink13c, sink13c2, sink13cal   !: C13 POC sinking fluxes 
     47#endif 
    4348   INTEGER  :: ik100 
    4449 
     
    9499      REAL(wp) ::   zagg , zaggfe, zaggdoc, zaggdoc2, zaggdoc3 
    95100      REAL(wp) ::   zfact, zwsmax, zmax, zstep 
     101#if defined key_n15  
     102      REAL(wp) :: zagg_15, zratdoc_15 
     103#endif 
     104#if defined key_c13 
     105      REAL(wp) :: zagg_13, zratdoc_13 
     106#endif 
    96107      CHARACTER (len=25) :: charout 
    97108      REAL(wp), POINTER, DIMENSION(:,:,:) :: zw3d 
     
    172183      sinksil (:,:,:) = 0.e0 
    173184      sinkfer2(:,:,:) = 0.e0 
    174  
    175185      !   Compute the sedimentation term using p4zsink2 for all the sinking particles 
    176186      !   ----------------------------------------------------- 
     
    187197      END DO 
    188198 
     199#if defined key_n15 
     200      sink15n (:,:,:) = 0.e0 
     201      sink15n2(:,:,:) = 0.e0 
     202      DO jit = 1, iiter1 
     203        CALL p4z_sink2( wsbio3, sink15n , jp15poc, iiter1 ) 
     204      END DO 
     205      DO jit = 1, iiter2 
     206        CALL p4z_sink2( wsbio4, sink15n2, jp15goc, iiter2 ) 
     207      END DO 
     208#endif 
     209#ifdef key_c13 
     210      sink13c (:,:,:) = 0.e0 
     211      sink13c2(:,:,:) = 0.e0 
     212      sink13cal(:,:,:) = 0.e0 
     213      DO jit = 1, iiter1 
     214        CALL p4z_sink2( wsbio3, sink13c , jp13poc, iiter1 ) 
     215      END DO 
     216      DO jit = 1, iiter2 
     217        CALL p4z_sink2( wsbio4, sink13c2, jp13goc, iiter2 ) 
     218        CALL p4z_sink2( wscal , sink13cal,jp13cal, iiter2 ) 
     219      END DO 
     220#endif 
    189221      !  Exchange between organic matter compartments due to coagulation/disaggregation 
    190222      !  --------------------------------------------------- 
     
    230262               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zaggfe 
    231263               tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - zaggdoc - zaggdoc2 - zaggdoc3 
     264#if defined key_n15 
     265               zagg_15 = zagg * trb(ji,jj,jk,jp15poc) / ( trb(ji,jj,jk,jppoc) + rtrn ) 
     266               zratdoc_15 = trb(ji,jj,jk,jp15doc)/ ( trb(ji,jj,jk,jpdoc) + rtrn ) 
     267               tra(ji,jj,jk,jp15poc) = tra(ji,jj,jk,jp15poc) - zagg_15 + ( zaggdoc + zaggdoc3 ) * zratdoc_15 
     268               tra(ji,jj,jk,jp15goc) = tra(ji,jj,jk,jp15goc) + zagg_15 + zaggdoc2 * zratdoc_15 
     269               tra(ji,jj,jk,jp15doc) = tra(ji,jj,jk,jp15doc) - ( zaggdoc + zaggdoc2 + zaggdoc3 )   & 
     270               &                       * zratdoc_15 
     271#endif 
     272#if defined key_c13 
     273               zagg_13 = zagg * trb(ji,jj,jk,jp13poc) / ( trb(ji,jj,jk,jppoc) + rtrn ) 
     274               zratdoc_13 = trb(ji,jj,jk,jp13doc)/ ( trb(ji,jj,jk,jpdoc) + rtrn) 
     275               tra(ji,jj,jk,jp13poc) = tra(ji,jj,jk,jp13poc) - zagg_13 + ( zaggdoc + zaggdoc3 ) * zratdoc_13 
     276               tra(ji,jj,jk,jp13goc) = tra(ji,jj,jk,jp13goc) + zagg_13 + zaggdoc2 * zratdoc_13 
     277               tra(ji,jj,jk,jp13doc) = tra(ji,jj,jk,jp13doc) - ( zaggdoc + zaggdoc2 + zaggdoc3 )   & 
     278               &                       * zratdoc_13 
     279#endif 
     280 
    232281               ! 
    233282            END DO 
     
    891940      ALLOCATE( wsbio3 (jpi,jpj,jpk) , wsbio4  (jpi,jpj,jpk) , wscal(jpi,jpj,jpk) ,     & 
    892941         &      sinking(jpi,jpj,jpk) , sinking2(jpi,jpj,jpk)                      ,     &                 
    893          &      sinkcal(jpi,jpj,jpk) , sinksil (jpi,jpj,jpk)                      ,     &                 
     942         &      sinkcal(jpi,jpj,jpk) , sinksil (jpi,jpj,jpk)                      ,     &   
     943#if defined key_n15 
     944         &      sink15n(jpi,jpj,jpk) , sink15n2(jpi,jpj,jpk)                      ,     & 
     945#endif        
     946#if defined key_c13 
     947         &      sink13c(jpi,jpj,jpk) , sink13c2(jpi,jpj,jpk), sink13cal(jpi,jpj,jpk) ,     & 
     948#endif         
    894949#if defined key_kriest 
    895950         &      xnumm(jpk)                                                        ,     &                 
     
    913968 
    914969   !!====================================================================== 
    915 END MODULE p4zsink 
     970END MODULE  p4zsink 
  • branches/CNRS/dev_r6526_PISCES_ISO/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsms.F90

    r6420 r6534  
    7171      INTEGER ::   ji, jj, jk, jnt, jn, jl 
    7272      REAL(wp) ::  ztra 
     73#if defined key_n15 
     74      REAL(wp) ::  zn15min, zn15max 
     75#endif 
    7376#if defined key_kriest 
    7477      REAL(wp) ::  zcoef1, zcoef2 
     
    133136         ! 
    134137         CALL p4z_bio( kt, jnt )   ! Biology 
     138         CALL p4z_sed( kt, jnt )   ! Sedimentation 
    135139         CALL p4z_lys( kt, jnt )   ! Compute CaCO3 saturation 
    136          CALL p4z_sed( kt, jnt )   ! Surface and Bottom boundary conditions 
    137140         CALL p4z_flx( kt, jnt )   ! Compute surface fluxes 
    138          ! 
    139141         xnegtr(:,:,:) = 1.e0 
    140142         DO jn = jp_pcs0, jp_pcs1 
     
    153155         !                                !  
    154156         DO jn = jp_pcs0, jp_pcs1 
    155            trb(:,:,:,jn) = trb(:,:,:,jn) + xnegtr(:,:,:) * tra(:,:,:,jn) 
     157           trb(:,:,:,jn) = trb(:,:,:,jn) + xnegtr(:,:,:) * tra(:,:,:,jn) * tmask(:,:,:) 
    156158         END DO 
    157159        ! 
     
    159161            tra(:,:,:,jn) = 0._wp 
    160162         END DO 
    161          ! 
     163        ! 
     164#if defined key_n15 
     165         zn15min = -30. 
     166         zn15max = 30. 
     167         ! 
     168         trb(:,:,:,jp15no3) = MIN(trb(:,:,:,jp15no3) , ( (zn15max/1000.)  + 1.)*trb(:,:,:,jpno3) ) 
     169         trb(:,:,:,jp15no3) = MAX(trb(:,:,:,jp15no3) , ( (zn15min/1000.)  + 1.)*trb(:,:,:,jpno3) ) 
     170#endif 
     171      ! 
    162172         IF( ln_top_euler ) THEN 
    163173            DO jn = jp_pcs0, jp_pcs1 
     
    166176         ENDIF 
    167177      END DO 
    168  
     178      ! 
    169179#if defined key_kriest 
    170180      !  
  • branches/CNRS/dev_r6526_PISCES_ISO/NEMOGCM/NEMO/TOP_SRC/PISCES/par_pisces.F90

    r5385 r6534  
    7575   INTEGER, PUBLIC, PARAMETER ::   jpnh4 = 23    !: Ammonium Concentration 
    7676 
     77 
    7778#elif defined key_pisces 
    7879   !!--------------------------------------------------------------------- 
     
    8283   LOGICAL, PUBLIC, PARAMETER ::   lk_p4z        = .TRUE.  !: p4z flag  
    8384   LOGICAL, PUBLIC, PARAMETER ::   lk_kriest     = .FALSE. !: Kriest flag  
    84    INTEGER, PUBLIC, PARAMETER ::   jp_pisces     = 24      !: number of PISCES passive tracers 
    85    INTEGER, PUBLIC, PARAMETER ::   jp_pisces_2d  = 13      !: additional 2d output  
    86    INTEGER, PUBLIC, PARAMETER ::   jp_pisces_3d  = 11      !: additional 3d output  
    87    INTEGER, PUBLIC, PARAMETER ::   jp_pisces_trd =  1      !: number of sms trends for PISCES 
    8885 
    8986   ! assign an index in trc arrays for each LOBSTER prognostic variables 
    9087   !    WARNING: be carefull about the order when reading the restart 
    9188        !   !!gm  this warning should be obsolet with IOM 
     89#if ! defined key_n15  && ! defined key_c13 
     90   LOGICAL, PUBLIC, PARAMETER ::   lk_n15        = .FALSE.  !: N15 flag  
     91   LOGICAL, PUBLIC, PARAMETER ::   lk_c13        = .FALSE.  !: C13 flag  
     92   INTEGER, PUBLIC, PARAMETER ::   jp_pisces     = 24      !: number of PISCES passive tracers 
     93   INTEGER, PUBLIC, PARAMETER ::   jp_pisces_2d  = 20      !: additional 2d output  
     94   INTEGER, PUBLIC, PARAMETER ::   jp_pisces_3d  = 14      !: additional 3d output  
     95   INTEGER, PUBLIC, PARAMETER ::   jp_pisces_trd =  1      !: number of sms trends for PISCES 
     96#endif 
    9297   INTEGER, PUBLIC, PARAMETER ::   jpdic =  1    !: dissolved inoganic carbon concentration  
    9398   INTEGER, PUBLIC, PARAMETER ::   jptal =  2    !: total alkalinity  
     
    115120   INTEGER, PUBLIC, PARAMETER ::   jpnh4 = 24    !: Ammonium Concentration 
    116121 
     122#if defined key_n15  && defined key_c13 
     123   LOGICAL, PUBLIC, PARAMETER ::   lk_n15        = .TRUE.  !: N15 flag  
     124   LOGICAL, PUBLIC, PARAMETER ::   lk_c13        = .TRUE.  !: C13 flag  
     125   INTEGER, PUBLIC, PARAMETER ::   jp_pisces     = 42      !: number of PISCES passive tracers 
     126   INTEGER, PUBLIC, PARAMETER ::   jp_pisces_2d  = 20      !: additional 2d output  
     127   INTEGER, PUBLIC, PARAMETER ::   jp_pisces_3d  = 14      !: additional 3d output  
     128   INTEGER, PUBLIC, PARAMETER ::   jp_pisces_trd =  1      !: number of sms trends for PISCES 
     129 
     130   INTEGER, PUBLIC, PARAMETER ::   jp15poc = 25  !: 15N small particulate organic concentration 
     131   INTEGER, PUBLIC, PARAMETER ::   jp15phy = 26  !: 15N phytoplancton concentration  
     132   INTEGER, PUBLIC, PARAMETER ::   jp15zoo = 27  !: 15N zooplancton concentration 
     133   INTEGER, PUBLIC, PARAMETER ::   jp15doc = 28  !: 15N dissolved organic carbon concentration  
     134   INTEGER, PUBLIC, PARAMETER ::   jp15dia = 29  !: 15N Diatoms Concentration 
     135   INTEGER, PUBLIC, PARAMETER ::   jp15mes = 30  !: 15N Mesozooplankton Concentration 
     136   INTEGER, PUBLIC, PARAMETER ::   jp15goc = 31  !: 15N big particulate organic concentration 
     137   INTEGER, PUBLIC, PARAMETER ::   jp15no3 = 32  !: 15N Nitrates Concentration 
     138   INTEGER, PUBLIC, PARAMETER ::   jp15nh4 = 33  !: 15N Ammonium Concentration 
     139 
     140   INTEGER, PUBLIC, PARAMETER ::   jp13dic = 34  !: 13C dissolved inorganic concentration 
     141   INTEGER, PUBLIC, PARAMETER ::   jp13cal = 35  !: 13C calcite Concentration 
     142   INTEGER, PUBLIC, PARAMETER ::   jp13poc = 36  !: 13C small particulate organic concentration 
     143   INTEGER, PUBLIC, PARAMETER ::   jp13phy = 37  !: 13C phytoplancton concentration  
     144   INTEGER, PUBLIC, PARAMETER ::   jp13zoo = 38  !: 13C zooplancton concentration 
     145   INTEGER, PUBLIC, PARAMETER ::   jp13doc = 39  !: 13C dissolved organic carbon concentration  
     146   INTEGER, PUBLIC, PARAMETER ::   jp13dia = 40  !: 13C Diatoms Concentration 
     147   INTEGER, PUBLIC, PARAMETER ::   jp13mes = 41  !: 13C Mesozooplankton Concentration 
     148   INTEGER, PUBLIC, PARAMETER ::   jp13goc = 42  !: 13C big particulate organic concentration 
     149#endif 
     150#if defined key_n15  && ! defined key_c13 
     151   LOGICAL, PUBLIC, PARAMETER ::   lk_n15        = .TRUE.  !: N15 flag  
     152   LOGICAL, PUBLIC, PARAMETER ::   lk_c13        = .FALSE.  !: C13 flag  
     153   INTEGER, PUBLIC, PARAMETER ::   jp_pisces     = 33      !: number of PISCES passive tracers 
     154   INTEGER, PUBLIC, PARAMETER ::   jp_pisces_2d  = 20      !: additional 2d output  
     155   INTEGER, PUBLIC, PARAMETER ::   jp_pisces_3d  = 14      !: additional 3d output  
     156   INTEGER, PUBLIC, PARAMETER ::   jp_pisces_trd =  1      !: number of sms trends for PISCES 
     157 
     158   INTEGER, PUBLIC, PARAMETER ::   jp15poc = 25  !: 15N small particulate organic phosphate concentration 
     159   INTEGER, PUBLIC, PARAMETER ::   jp15phy = 26  !: 15N phytoplancton concentration  
     160   INTEGER, PUBLIC, PARAMETER ::   jp15zoo = 27  !: 15N zooplancton concentration 
     161   INTEGER, PUBLIC, PARAMETER ::   jp15doc = 28  !: 15N dissolved organic carbon concentration  
     162   INTEGER, PUBLIC, PARAMETER ::   jp15dia = 29  !: 15N Diatoms Concentration 
     163   INTEGER, PUBLIC, PARAMETER ::   jp15mes = 30  !: 15N Mesozooplankton Concentration 
     164   INTEGER, PUBLIC, PARAMETER ::   jp15goc = 31  !: 15N big particulate organic phosphate concentration 
     165   INTEGER, PUBLIC, PARAMETER ::   jp15no3 = 32  !: 15N Nitrates Concentration 
     166   INTEGER, PUBLIC, PARAMETER ::   jp15nh4 = 33  !: 15N Ammonium Concentration 
     167#endif 
     168#if ! defined key_n15  &&  defined key_c13 
     169   LOGICAL, PUBLIC, PARAMETER ::   lk_n15        = .FALSE.  !: N15 flag  
     170   LOGICAL, PUBLIC, PARAMETER ::   lk_c13        = .TRUE.  !: C13 flag  
     171   INTEGER, PUBLIC, PARAMETER ::   jp_pisces     = 33      !: number of PISCES passive tracers 
     172   INTEGER, PUBLIC, PARAMETER ::   jp_pisces_2d  = 20      !: additional 2d output  
     173   INTEGER, PUBLIC, PARAMETER ::   jp_pisces_3d  = 14      !: additional 3d output  
     174   INTEGER, PUBLIC, PARAMETER ::   jp_pisces_trd =  1      !: number of sms trends for PISCES 
     175 
     176   INTEGER, PUBLIC, PARAMETER ::   jp13dic = 25  !: 13C dissolved inorganic concentration 
     177   INTEGER, PUBLIC, PARAMETER ::   jp13cal = 26  !: 13C calcite Concentration 
     178   INTEGER, PUBLIC, PARAMETER ::   jp13poc = 27  !: 13C small particulate organic concentration 
     179   INTEGER, PUBLIC, PARAMETER ::   jp13phy = 28  !: 13C phytoplancton concentration  
     180   INTEGER, PUBLIC, PARAMETER ::   jp13zoo = 29  !: 13C zooplancton concentration 
     181   INTEGER, PUBLIC, PARAMETER ::   jp13doc = 30  !: 13C dissolved organic carbon concentration  
     182   INTEGER, PUBLIC, PARAMETER ::   jp13dia = 31  !: 13C Diatoms Concentration 
     183   INTEGER, PUBLIC, PARAMETER ::   jp13mes = 32  !: 13C Mesozooplankton Concentration 
     184   INTEGER, PUBLIC, PARAMETER ::   jp13goc = 33  !: 13C big particulate organic concentration 
     185#endif 
     186 
     187#endif 
     188 
    117189#else 
    118190   !!--------------------------------------------------------------------- 
  • branches/CNRS/dev_r6526_PISCES_ISO/NEMOGCM/NEMO/TOP_SRC/PISCES/trcini_pisces.F90

    r6324 r6534  
    159159      END IF 
    160160 
     161#if defined key_n15 
     162      trn(:,:,:,jp15doc) = trn(:,:,:,jpdoc) 
     163      trn(:,:,:,jp15poc) = trn(:,:,:,jppoc) 
     164      trn(:,:,:,jp15goc) = trn(:,:,:,jpgoc) 
     165      trn(:,:,:,jp15phy) = trn(:,:,:,jpphy) 
     166      trn(:,:,:,jp15dia) = trn(:,:,:,jpdia) 
     167      trn(:,:,:,jp15zoo) = trn(:,:,:,jpzoo) 
     168      trn(:,:,:,jp15mes) = trn(:,:,:,jpmes) 
     169      trn(:,:,:,jp15no3) = trn(:,:,:,jpno3) 
     170      trn(:,:,:,jp15nh4) = trn(:,:,:,jpnh4) 
     171#endif 
     172#if defined key_c13 
     173      trn(:,:,:,jp13doc) = trn(:,:,:,jpdoc) 
     174      trn(:,:,:,jp13poc) = trn(:,:,:,jppoc) 
     175      trn(:,:,:,jp13goc) = trn(:,:,:,jpgoc) 
     176      trn(:,:,:,jp13phy) = trn(:,:,:,jpphy) 
     177      trn(:,:,:,jp13dia) = trn(:,:,:,jpdia) 
     178      trn(:,:,:,jp13zoo) = trn(:,:,:,jpzoo) 
     179      trn(:,:,:,jp13mes) = trn(:,:,:,jpmes) 
     180      trn(:,:,:,jp13dic) = trn(:,:,:,jpdic) 
     181      trn(:,:,:,jp13cal) = trn(:,:,:,jpcal) 
     182#endif 
     183 
    161184 
    162185      CALL p4z_sink_init      !  vertical flux of particulate organic matter 
  • branches/CNRS/dev_r6526_PISCES_ISO/NEMOGCM/NEMO/TOP_SRC/PISCES/trcwri_pisces.F90

    r4996 r6534  
    4747         zfact = 1.0e+6  
    4848         IF( jn == jpno3 .OR. jn == jpnh4 ) zfact = rno3 * 1.0e+6  
     49#if defined key_n15 
     50         IF( jn == jp15no3 .OR. jn == jp15nh4 ) zfact = rno3 * 1.0e+6 
     51#endif 
    4952         IF( jn == jppo4  )                 zfact = po4r * 1.0e+6 
    5053         cltra = TRIM( ctrcnm(jn) )                  ! short title for tracer 
Note: See TracChangeset for help on using the changeset viewer.