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 14416 for NEMO/branches/2021/dev_r14383_PISCES_NEWDEV_PISCO/src/TOP – NEMO

Ignore:
Timestamp:
2021-02-07T16:08:48+01:00 (3 years ago)
Author:
cetlod
Message:

dev_r14383_PISCES_NEWDEV_PISCO : minor improvments

Location:
NEMO/branches/2021/dev_r14383_PISCES_NEWDEV_PISCO/src/TOP
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2021/dev_r14383_PISCES_NEWDEV_PISCO/src/TOP/PISCES/P4Z/p4zbc.F90

    r14385 r14416  
    282282         ! 
    283283         ALLOCATE( sf_dust(1), STAT=ierr )           !* allocate and fill sf_sst (forcing structure) with sn_sst 
    284          IF( ierr > 0 )   CALL ctl_stop( 'STOP', 'p4z_sed_init: unable to allocate sf_dust structure' ) 
    285          ! 
    286          CALL fld_fill( sf_dust, (/ sn_dust /), cn_dir, 'p4z_sed_init', 'Atmospheric dust deposition', 'nampissed' ) 
     284         IF( ierr > 0 )   CALL ctl_stop( 'STOP', 'p4z_bc_init: unable to allocate sf_dust structure' ) 
     285         ! 
     286         CALL fld_fill( sf_dust, (/ sn_dust /), cn_dir, 'p4z_bc_init', 'Atmospheric dust deposition', 'nampisbc' ) 
    287287                                   ALLOCATE( sf_dust(1)%fnow(jpi,jpj,1)   ) 
    288288         IF( sn_dust%ln_tint )     ALLOCATE( sf_dust(1)%fdta(jpi,jpj,1,2) ) 
     
    350350         ! 
    351351         ALLOCATE( sf_hydrofe(1), STAT=ierr )           !* allocate and fill sf_sst (forcing structure) with sn_sst 
    352          IF( ierr > 0 )   CALL ctl_stop( 'STOP', 'p4z_sed_init: unable to allocate sf_hydro structure' ) 
    353          ! 
    354          CALL fld_fill( sf_hydrofe, (/ sn_hydrofe /), cn_dir, 'p4z_sed_init', 'Input of iron from hydrothermal vents', 'nampisbc' ) 
     352         IF( ierr > 0 )   CALL ctl_stop( 'STOP', 'p4z_bc_init: unable to allocate sf_hydro structure' ) 
     353         ! 
     354         CALL fld_fill( sf_hydrofe, (/ sn_hydrofe /), cn_dir, 'p4z_bc_init', 'Input of iron from hydrothermal vents', 'nampisbc' ) 
    355355                                   ALLOCATE( sf_hydrofe(1)%fnow(jpi,jpj,jpk)   ) 
    356356         IF( sn_hydrofe%ln_tint )    ALLOCATE( sf_hydrofe(1)%fdta(jpi,jpj,jpk,2) ) 
  • NEMO/branches/2021/dev_r14383_PISCES_NEWDEV_PISCO/src/TOP/PISCES/P4Z/p4zfechem.F90

    r14385 r14416  
    5959      REAL(wp) ::   zscave, zaggdfea, zaggdfeb, ztrc, zdust, zklight 
    6060      REAL(wp) ::   ztfe, zhplus, zxlam, zaggliga, zaggligb 
     61      REAL(wp) ::   zprecip, zprecipno3, zvar 
    6162      REAL(wp) ::   zrfact2 
    6263      CHARACTER (len=25) :: charout 
    63       REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zTL1, zFe3, ztotlig, precip, precipno3, zFeL1 
    64       REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zcoll3d, zscav3d, zlcoll3d, zprecip3d 
     64      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zTL1, zFe3, ztotlig, zfeprecip, zFeL1 
     65      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zcoll3d, zscav3d, zlcoll3d 
    6566      !!--------------------------------------------------------------------- 
    6667      ! 
    6768      IF( ln_timing )   CALL timing_start('p4z_fechem') 
    6869      ! 
    69       zFe3 (:,:,:) = 0. 
    70       zFeL1(:,:,:) = 0. 
    71       zTL1 (:,:,:) = 0. 
     70      zFe3     (:,:,jpk) = 0. 
     71      zFeL1    (:,:,jpk) = 0. 
     72      zTL1     (:,:,jpk) = 0. 
     73      zfeprecip(:,:,jpk) = 0. 
     74      zcoll3d  (:,:,jpk) = 0. 
     75      zscav3d  (:,:,jpk) = 0. 
     76      zlcoll3d (:,:,jpk) = 0. 
    7277 
    7378      ! Total ligand concentration : Ligands can be chosen to be constant or variable 
     
    7580      ! ------------------------------------------------- 
    7681      IF( ln_ligvar ) THEN 
    77          ztotlig(:,:,:) =  0.09 * 0.667 * tr(:,:,:,jpdoc,Kbb) * 1E6 + ligand * 1E9 + MAX(0., chemo2(:,:,:) - tr(:,:,:,jpoxy,Kbb) ) / 400.E-6 
     82         ztotlig(:,:,:) =  0.09 * 0.667 * tr(:,:,:,jpdoc,Kbb) * 1E6 & 
     83           &             + ligand * 1E9 & 
     84           &             + MAX(0., chemo2(:,:,:) - tr(:,:,:,jpoxy,Kbb) ) / 400.E-6 
    7885         ztotlig(:,:,:) =  MIN( ztotlig(:,:,:), 10. ) 
    7986      ELSE 
     
    95102          ztfe            = (1.0 + zklight) * tr(ji,jj,jk,jpfer,Kbb)  
    96103          ! Fe' is the root of a 2nd order polynom 
    97           zFe3 (ji,jj,jk) = ( -( 1. + zfesatur * zkeq + zklight + consfe3(ji,jj,jk)/10**-6.3 - zkeq * tr(ji,jj,jk,jpfer,Kbb) )               & 
    98              &              + SQRT( ( 1. + zfesatur * zkeq + zklight + consfe3(ji,jj,jk)/10**-6.3 - zkeq * tr(ji,jj,jk,jpfer,Kbb) )**2       & 
    99              &              + 4. * ztfe * zkeq) ) / ( 2. * zkeq ) 
     104          zvar =  1. + zfesatur * zkeq + zklight + consfe3(ji,jj,jk)/10**-6.3 - zkeq * tr(ji,jj,jk,jpfer,Kbb) 
     105          zFe3 (ji,jj,jk) = ( -1 * zvar + SQRT( zvar**2 + 4. * ztfe * zkeq) ) / ( 2. * zkeq + rtrn ) 
    100106          zFeL1(ji,jj,jk) = MAX( 0., tr(ji,jj,jk,jpfer,Kbb) - zFe3(ji,jj,jk) ) 
    101107      END_3D 
     
    116122         zfecoll = 0.5 * zFeL1(ji,jj,jk) * 1E-9 
    117123         ! precipitation of Fe3+, creation of nanoparticles 
    118          precip(ji,jj,jk) = MAX( 0., ( zFe3(ji,jj,jk) - fe3sol ) ) * kfep * xstep * ( 1.0 - nitrfac(ji,jj,jk) )  
     124         zprecip = MAX( 0., ( zFe3(ji,jj,jk) - fe3sol ) ) * kfep * xstep * ( 1.0 - nitrfac(ji,jj,jk) )  
    119125         ! Precipitation of Fe2+ due to oxidation by NO3 (Croot et al., 2019) 
    120126         ! This occurs in anoxic waters only 
    121          precipno3(ji,jj,jk) = 2.0 * 130.0 * tr(ji,jj,jk,jpno3,Kbb) * nitrfac(ji,jj,jk) * xstep * zFe3(ji,jj,jk) 
     127         zprecipno3 = 2.0 * 130.0 * tr(ji,jj,jk,jpno3,Kbb) * nitrfac(ji,jj,jk) * xstep * zFe3(ji,jj,jk) 
     128         ! 
     129         zfeprecip(ji,jj,jk) = zprecip + zprecipno3 
    122130         ! 
    123131         ztrc   = ( tr(ji,jj,jk,jppoc,Kbb) + tr(ji,jj,jk,jpgoc,Kbb) + tr(ji,jj,jk,jpcal,Kbb) + tr(ji,jj,jk,jpgsi,Kbb) ) * 1.e6  
     
    142150         ! 
    143151         tr(ji,jj,jk,jpfer,Krhs) = tr(ji,jj,jk,jpfer,Krhs) - zscave - zaggdfea - zaggdfeb & 
    144          &                       - precip(ji,jj,jk) - precipno3(ji,jj,jk) 
     152         &                       - zfeprecip(ji,jj,jk) 
    145153 
    146154         tr(ji,jj,jk,jpsfe,Krhs) = tr(ji,jj,jk,jpsfe,Krhs) + zscave * scaveff * tr(ji,jj,jk,jppoc,Kbb) / ztrc 
     
    163171          zscav3d(ji,jj,jk)   = zscave  
    164172          zcoll3d(ji,jj,jk)   = zaggdfea + zaggdfeb 
    165           zprecip3d(ji,jj,jk) = precip(ji,jj,jk) + precipno3(ji,jj,jk) 
    166173         ! 
    167174      END_3D 
     
    205212         IF( iom_use("FESCAV") )  CALL iom_put("FESCAV" , zscav3d(:,:,:)  * 1e9 * tmask(:,:,:) * zrfact2 ) 
    206213         IF( iom_use("FECOLL") )  CALL iom_put("FECOLL" , zcoll3d(:,:,:)  * 1e9 * tmask(:,:,:) * zrfact2 ) 
    207          IF( iom_use("FEPREC") )  CALL iom_put("FEPREC" , zprecip3d(:,:,:)  * 1e9 * tmask(:,:,:) * zrfact2 ) 
     214         IF( iom_use("FEPREC") )  CALL iom_put("FEPREC" , zfeprecip(:,:,:) *1e9*tmask(:,:,:)*zrfact2 ) 
    208215         IF( iom_use("LGWCOLL"))  CALL iom_put("LGWCOLL", zlcoll3d(:,:,:) * 1e9 * tmask(:,:,:) * zrfact2 ) 
    209216      ENDIF 
  • NEMO/branches/2021/dev_r14383_PISCES_NEWDEV_PISCO/src/TOP/PISCES/P4Z/p4zint.F90

    r14385 r14416  
    3737      INTEGER, INTENT( in ) ::   Kbb, Kmm ! time level indices 
    3838      ! 
    39       INTEGER  :: ji, jj                 ! dummy loop indices 
     39      INTEGER  :: ji, jj, jk              ! dummy loop indices 
    4040      REAL(wp) :: zrum, zcodel, zargu, zvar 
    4141      !!--------------------------------------------------------------------- 
     
    7575      ! day length in hours 
    7676      strn(:,:) = 0. 
    77       DO jj = 1, jpj 
    78          DO ji = 1, jpi 
    79             zargu = TAN( zcodel ) * TAN( gphit(ji,jj) * rad ) 
    80             zargu = MAX( -1., MIN(  1., zargu ) ) 
    81             strn(ji,jj) = MAX( 0.0, 24. - 2. * ACOS( zargu ) / rad / 15. ) 
    82          END DO 
    83       END DO 
     77      DO_2D( 1, 1, 1, 1 ) 
     78         zargu = TAN( zcodel ) * TAN( gphit(ji,jj) * rad ) 
     79         zargu = MAX( -1., MIN(  1., zargu ) ) 
     80         strn(ji,jj) = MAX( 0.0, 24. - 2. * ACOS( zargu ) / rad / 15. ) 
     81      END_2D 
     82      ! 
     83      DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 
     84        ! denitrification factor computed from O2 levels 
     85         ! This factor diagnoses below which level of O2 denitrification 
     86         ! is active 
     87         nitrfac(ji,jj,jk) = MAX(  0.e0, 0.4 * ( 6.e-6  - tr(ji,jj,jk,jpoxy,Kbb) )    & 
     88            &                                / ( oxymin + tr(ji,jj,jk,jpoxy,Kbb) )  ) 
     89         nitrfac(ji,jj,jk) = MIN( 1., nitrfac(ji,jj,jk) ) 
     90         ! 
     91         ! redox factor computed from NO3 levels 
     92         ! This factor diagnoses below which level of NO3 additional redox 
     93         ! reactions are taking place. 
     94         nitrfac2(ji,jj,jk) = MAX( 0.e0,       ( 1.E-6 - tr(ji,jj,jk,jpno3,Kbb) )  & 
     95            &                                / ( 1.E-6 + tr(ji,jj,jk,jpno3,Kbb) ) ) 
     96         nitrfac2(ji,jj,jk) = MIN( 1., nitrfac2(ji,jj,jk) ) 
     97      END_3D 
    8498      ! 
    8599      IF( ln_timing )   CALL timing_stop('p4z_int') 
  • NEMO/branches/2021/dev_r14383_PISCES_NEWDEV_PISCO/src/TOP/PISCES/P4Z/p4zlim.F90

    r14385 r14416  
    4040   REAL(wp), PUBLIC ::  xkdoc       !:  2nd half-sat. of DOC remineralization   
    4141   REAL(wp), PUBLIC ::  concbfe     !:  Fe half saturation for bacteria  
    42    REAL(wp), PUBLIC ::  oxymin      !:  half saturation constant for anoxia 
    4342   REAL(wp), PUBLIC ::  qnfelim     !:  optimal Fe quota for nanophyto 
    4443   REAL(wp), PUBLIC ::  qdfelim     !:  optimal Fe quota for diatoms 
    45    REAL(wp), PUBLIC ::  caco3r      !:  mean rainratio  
    4644 
    4745   !!* Phytoplankton limitation terms 
     
    250248         xfracal(ji,jj,jk) = MIN( 0.8 , xfracal(ji,jj,jk) ) 
    251249         xfracal(ji,jj,jk) = MAX( 0.02, xfracal(ji,jj,jk) ) 
    252       END_3D 
    253       ! 
    254       DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 
    255         ! denitrification factor computed from O2 levels 
    256          ! This factor diagnoses below which level of O2 denitrification 
    257          ! is active 
    258          nitrfac(ji,jj,jk) = MAX(  0.e0, 0.4 * ( 6.e-6  - tr(ji,jj,jk,jpoxy,Kbb) )    & 
    259             &                                / ( oxymin + tr(ji,jj,jk,jpoxy,Kbb) )  ) 
    260          nitrfac(ji,jj,jk) = MIN( 1., nitrfac(ji,jj,jk) ) 
    261          ! 
    262          ! redox factor computed from NO3 levels 
    263          ! This factor diagnoses below which level of NO3 additional redox 
    264          ! reactions are taking place. 
    265          nitrfac2(ji,jj,jk) = MAX( 0.e0,       ( 1.E-6 - tr(ji,jj,jk,jpno3,Kbb) )  & 
    266             &                                / ( 1.E-6 + tr(ji,jj,jk,jpno3,Kbb) ) ) 
    267          nitrfac2(ji,jj,jk) = MIN( 1., nitrfac2(ji,jj,jk) ) 
    268250      END_3D 
    269251      ! 
  • NEMO/branches/2021/dev_r14383_PISCES_NEWDEV_PISCO/src/TOP/PISCES/P4Z/p4zopt.F90

    r14385 r14416  
    6767      REAL(wp), DIMENSION(jpi,jpj    ) :: zdepmoy, zetmp1, zetmp2, zetmp3, zetmp4 
    6868      REAL(wp), DIMENSION(jpi,jpj    ) :: zqsr100, zqsr_corr 
    69       REAL(wp), DIMENSION(jpi,jpj,jpk) :: zpar, ze0, ze1, ze2, ze3, zchl3d 
     69      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zpar, ze0, ze1, ze2, ze3 
    7070      !!--------------------------------------------------------------------- 
    7171      ! 
     
    7979      ze2(:,:,:) = 0._wp 
    8080      ze3(:,:,:) = 0._wp 
     81 
    8182      ! 
    8283      ! Attenuation coef. function of Chlorophyll and wavelength (Red-Green-Blue) 
     
    8586      ! in Lengaigne et al. (2007). 
    8687      ! -------------------------------------------------------- 
    87                      zchl3d(:,:,:) = tr(:,:,:,jpnch,Kbb) + tr(:,:,:,jpdch,Kbb) 
    88       IF( ln_p5z )   zchl3d(:,:,:) = zchl3d(:,:,:)       + tr(:,:,:,jppch,Kbb) 
    8988      ! 
    9089      ! Computation of the light attenuation parameters based on a  
    9190      ! look-up table 
    9291      DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 
    93          zchl = ( zchl3d(ji,jj,jk) + rtrn ) * 1.e6 
     92         zchl =  ( tr(ji,jj,jk,jpnch,Kbb) + tr(ji,jj,jk,jpdch,Kbb) + rtrn ) * 1.e6 
     93         IF( ln_p5z )   zchl = zchl + tr(ji,jj,jk,jppch,Kbb) * 1.e6 
    9494         zchl = MIN(  10. , MAX( 0.05, zchl )  ) 
    9595         irgb = NINT( 41 + 20.* LOG10( zchl ) + rtrn ) 
     
    9999         ekr(ji,jj,jk) = rkrgb(3,irgb) * e3t(ji,jj,jk,Kmm) 
    100100      END_3D 
     101 
    101102 
    102103      ! Photosynthetically Available Radiation (PAR) 
     
    329330         pe3(:,:,1) = zqsr(:,:) 
    330331         ! 
    331          DO jk = 2, nksr + 1 
    332             DO jj = 1, jpj 
    333                DO ji = 1, jpi 
    334                   pe0(ji,jj,jk) = pe0(ji,jj,jk-1) * EXP( -e3t(ji,jj,jk-1,Kmm) * xsi0r ) 
    335                   pe1(ji,jj,jk) = pe1(ji,jj,jk-1) * EXP( -ekb  (ji,jj,jk-1 )        ) 
    336                   pe2(ji,jj,jk) = pe2(ji,jj,jk-1) * EXP( -ekg  (ji,jj,jk-1 )        ) 
    337                   pe3(ji,jj,jk) = pe3(ji,jj,jk-1) * EXP( -ekr  (ji,jj,jk-1 )        ) 
    338                END DO 
    339               ! 
    340             END DO 
    341             ! 
    342          END DO 
     332         DO_3D( 1, 1, 1, 1, 2, nksr + 1 ) 
     333            pe0(ji,jj,jk) = pe0(ji,jj,jk-1) * EXP( -e3t(ji,jj,jk-1,Kmm) * xsi0r ) 
     334            pe1(ji,jj,jk) = pe1(ji,jj,jk-1) * EXP( -ekb  (ji,jj,jk-1 )        ) 
     335            pe2(ji,jj,jk) = pe2(ji,jj,jk-1) * EXP( -ekg  (ji,jj,jk-1 )        ) 
     336            pe3(ji,jj,jk) = pe3(ji,jj,jk-1) * EXP( -ekr  (ji,jj,jk-1 )        ) 
     337        END_3D 
    343338        ! 
    344339      ELSE   ! T- level 
  • NEMO/branches/2021/dev_r14383_PISCES_NEWDEV_PISCO/src/TOP/PISCES/P4Z/p4zprod.F90

    r14385 r14416  
    8181      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zpislopeadn, zpislopeadd, zysopt   
    8282      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zprdia, zprbio, zprchld, zprchln    
    83       REAL(wp), DIMENSION(jpi,jpj,jpk) :: zprdch, zprnch 
    8483      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zprorcan, zprorcad, zprofed, zprofen 
    8584      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zpronewn, zpronewd 
     
    9594      zprofen (:,:,:) = 0._wp ; zysopt  (:,:,:) = 0._wp 
    9695      zpronewn(:,:,:) = 0._wp ; zpronewd(:,:,:) = 0._wp ; zprdia(:,:,:) = 0._wp 
    97       zprbio  (:,:,:) = 0._wp ; zprdch  (:,:,:) = 0._wp ; zprnch(:,:,:) = 0._wp  
     96      zprbio  (:,:,:) = 0._wp ; zprchld (:,:,:) = 0._wp ; zprchln(:,:,:) = 0._wp  
    9897      zmxl_fac(:,:,:) = 0._wp ; zmxl_chl(:,:,:) = 0._wp  
    99       consfe3 (:,:,:) = 0._wp 
    10098 
    10199      ! Computation of the maximimum production. Based on a Q10 description 
     
    111109      ! absolute light level definition of the euphotic zone 
    112110      ! -------------------------------------------------------------------------  
    113       DO jk = 1, jpkm1 
    114          DO jj = 1 ,jpj 
    115             DO ji = 1, jpi 
    116                IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 
    117                   zval = MAX( 1., strn(ji,jj) ) 
    118                   IF( gdepw(ji,jj,jk+1,Kmm) <= hmld(ji,jj) ) THEN 
    119                      zval = zval * MIN(1., heup_01(ji,jj) / ( hmld(ji,jj) + rtrn )) 
    120                   ENDIF 
    121                   zmxl_chl(ji,jj,jk) = zval / 24. 
    122                   zmxl_fac(ji,jj,jk) = 1.0 - exp( -0.26 * zval ) 
    123                ENDIF 
    124             END DO 
    125          END DO 
    126       END DO 
     111      DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 
     112         IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 
     113            zval = MAX( 1., strn(ji,jj) ) 
     114            IF( gdepw(ji,jj,jk+1,Kmm) <= hmld(ji,jj) ) THEN 
     115               zval = zval * MIN(1., heup_01(ji,jj) / ( hmld(ji,jj) + rtrn )) 
     116            ENDIF 
     117            zmxl_chl(ji,jj,jk) = zval / 24. 
     118            zmxl_fac(ji,jj,jk) = 1.0 - exp( -0.26 * zval ) 
     119         ENDIF 
     120      END_3D 
    127121 
    128122      zprbio(:,:,:) = zprmaxn(:,:,:) * zmxl_fac(:,:,:) 
     
    174168             zpislopen = zpislopeadn(ji,jj,jk) / ( zprmaxn(ji,jj,jk) * zmxl_chl(ji,jj,jk) * rday + rtrn ) 
    175169             zpisloped = zpislopeadd(ji,jj,jk) / ( zprmaxd(ji,jj,jk) * zmxl_chl(ji,jj,jk) * rday + rtrn ) 
    176              zprnch(ji,jj,jk) = zprmaxn(ji,jj,jk) * ( 1.- EXP( -zpislopen * enanom(ji,jj,jk) ) ) 
    177              zprdch(ji,jj,jk) = zprmaxd(ji,jj,jk) * ( 1.- EXP( -zpisloped * ediatm(ji,jj,jk) ) ) 
     170             zprchln(ji,jj,jk) = zprmaxn(ji,jj,jk) * ( 1.- EXP( -zpislopen * enanom(ji,jj,jk) ) ) 
     171             zprchld(ji,jj,jk) = zprmaxd(ji,jj,jk) * ( 1.- EXP( -zpisloped * ediatm(ji,jj,jk) ) ) 
    178172         ENDIF 
    179173      END_3D 
     
    300294            !  production terms for nanophyto. ( chlorophyll ) 
    301295            znanotot = enanom(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 
    302             zprod    = rday * zprorcan(ji,jj,jk) * zprnch(ji,jj,jk) * xlimphy(ji,jj,jk) 
     296            zprod    = rday * zprorcan(ji,jj,jk) * zprchln(ji,jj,jk) * xlimphy(ji,jj,jk) 
    303297            zprochln = chlcmin * 12. * zprorcan (ji,jj,jk) 
    304298            zprochln = zprochln + (chlcnm - chlcmin) * 12. * zprod / & 
     
    307301            !  production terms for diatoms ( chlorophyll ) 
    308302            zdiattot = ediatm(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 
    309             zprod    = rday * zprorcad(ji,jj,jk) * zprdch(ji,jj,jk) * xlimdia(ji,jj,jk) 
     303            zprod    = rday * zprorcad(ji,jj,jk) * zprchld(ji,jj,jk) * xlimdia(ji,jj,jk) 
    310304            zprochld = chlcmin * 12. * zprorcad(ji,jj,jk) 
    311305            zprochld = zprochld + (chlcdm - chlcmin) * 12. * zprod / & 
  • NEMO/branches/2021/dev_r14383_PISCES_NEWDEV_PISCO/src/TOP/PISCES/P4Z/p5zlim.F90

    r14385 r14416  
    5454   REAL(wp), PUBLIC ::  qfpmax      !:  maximum Fe quota for picophyto 
    5555   REAL(wp), PUBLIC ::  qfdmax      !:  maximum Fe quota for diatoms 
    56    REAL(wp), PUBLIC ::  zpsinh4     !:  respiration cost of NH4 assimilation 
    57    REAL(wp), PUBLIC ::  zpsino3     !:  respiration cost of NO3 assimilation 
    58    REAL(wp), PUBLIC ::  zpsiuptk    !:  Mean respiration cost 
     56   REAL(wp), PUBLIC ::  xpsinh4     !:  respiration cost of NH4 assimilation 
     57   REAL(wp), PUBLIC ::  xpsino3     !:  respiration cost of NO3 assimilation 
     58   REAL(wp), PUBLIC ::  xpsiuptk    !:  Mean respiration cost 
    5959 
    6060   !!*  Allometric variations of the quotas 
     
    128128      REAL(wp) ::   zlim1, zlim2, zlim3, zlim4, zno3, zferlim 
    129129      REAL(wp) ::   z1_trndia, z1_trnpic, z1_trnphy, ztem1, ztem2, zetot1 
    130       REAL(wp) ::   zratio, zration, zratiof, znutlim, zfalim, zzpsiuptk 
     130      REAL(wp) ::   zratio, zration, zratiof, znutlim, zfalim, zxpsiuptk 
    131131      REAL(wp) ::   zconc1d, zconc1dnh4, zconc0n, zconc0nnh4, zconc0npo4, zconc0dpo4 
    132132      REAL(wp) ::   zconc0p, zconc0pnh4, zconc0ppo4, zconcpfe, zconcnfe, zconcdfe 
     
    280280         zration = tr(ji,jj,jk,jpnph,Kbb) * z1_trnphy 
    281281         zration = MIN(xqnnmax(ji,jj,jk), MAX( xqnnmin(ji,jj,jk), zration )) 
    282          fvnuptk(ji,jj,jk) = 2.5 * zpsiuptk * xqnnmin(ji,jj,jk) / (zration + rtrn)  & 
     282         fvnuptk(ji,jj,jk) = 2.5 * xpsiuptk * xqnnmin(ji,jj,jk) / (zration + rtrn)  & 
    283283         &                   * MAX(0., (1. - zratchl * znanochl / 12. ) ) 
    284284         ! 
     
    330330         zration   = tr(ji,jj,jk,jpnpi,Kbb) * z1_trnpic 
    331331         zration = MIN(xqnpmax(ji,jj,jk), MAX( xqnpmin(ji,jj,jk), zration )) 
    332          fvpuptk(ji,jj,jk) = 2.5 * zpsiuptk * xqnpmin(ji,jj,jk) / (zration + rtrn)  & 
     332         fvpuptk(ji,jj,jk) = 2.5 * xpsiuptk * xqnpmin(ji,jj,jk) / (zration + rtrn)  & 
    333333         &                   * MAX(0., (1. - zratchl * zpicochl / 12. ) )  
    334334         ! 
     
    383383         zration   = tr(ji,jj,jk,jpndi,Kbb) * z1_trndia 
    384384         zration   = MIN(xqndmax(ji,jj,jk), MAX( xqndmin(ji,jj,jk), zration )) 
    385          fvduptk(ji,jj,jk) = 2.5 * zpsiuptk * xqndmin(ji,jj,jk) / (zration + rtrn)   & 
     385         fvduptk(ji,jj,jk) = 2.5 * xpsiuptk * xqndmin(ji,jj,jk) / (zration + rtrn)   & 
    386386         &                   * MAX(0., (1. - zratchl * zdiatchl / 12. ) )  
    387387         ! 
     
    484484            &                * zetot1 * MIN( 1., 50. / ( hmld(ji,jj) + rtrn ) ) 
    485485         xfracal(ji,jj,jk) = MAX( 0.02, MIN( 0.8 , xfracal(ji,jj,jk) ) ) 
    486       END_3D 
    487       ! 
    488       DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 
    489          ! denitrification factor computed from O2 levels 
    490          nitrfac(ji,jj,jk) = MAX(  0.e0, 0.4 * ( 6.e-6  - tr(ji,jj,jk,jpoxy,Kbb) )    & 
    491             &                                / ( oxymin + tr(ji,jj,jk,jpoxy,Kbb) )  ) 
    492          nitrfac(ji,jj,jk) = MIN( 1., nitrfac(ji,jj,jk) ) 
    493          ! 
    494          ! redox factor computed from NO3 levels 
    495          nitrfac2(ji,jj,jk) = MAX( 0.e0,       ( 1.E-6 - tr(ji,jj,jk,jpno3,Kbb) )  & 
    496             &                                / ( 1.E-6 + tr(ji,jj,jk,jpno3,Kbb) ) ) 
    497          nitrfac2(ji,jj,jk) = MIN( 1., nitrfac2(ji,jj,jk) ) 
    498486      END_3D 
    499487      ! 
     
    615603      ! 
    616604      ! Metabolic cost of nitrate and ammonium utilisation 
    617       zpsino3  = 2.3 * rno3 
    618       zpsinh4  = 1.8 * rno3 
    619       zpsiuptk = 1.0 / 6.625 
     605      xpsino3  = 2.3 * rno3 
     606      xpsinh4  = 1.8 * rno3 
     607      xpsiuptk = 1.0 / 6.625 
    620608      ! 
    621609      nitrfac(:,:,jpk) = 0._wp 
  • NEMO/branches/2021/dev_r14383_PISCES_NEWDEV_PISCO/src/TOP/PISCES/P4Z/p5zprod.F90

    r14385 r14416  
    115115      zrespn  (:,:,:) = 0._wp ; zrespp  (:,:,:) = 0._wp ; zrespd  (:,:,:) = 0._wp  
    116116      zmxl_fac(:,:,:) = 0._wp ; zmxl_chl(:,:,:) = 0._wp 
    117       consfe3 (:,:,:) = 0._wp 
    118117 
    119118      ! Computation of the optimal production rates and nutrient uptake 
    120119      ! rates. Based on a Q10 description of the thermal dependency. 
    121120      zprnut (:,:,:) =  0.8_wp * r1_rday * tgfunc(:,:,:) 
    122       zprmaxn(:,:,:) =  0.8_wp * (1. + zpsino3 * qnnmax ) * r1_rday * tgfunc(:,:,:) 
    123       zprmaxd(:,:,:) =  0.8_wp * (1. + zpsino3 * qndmax ) * r1_rday * tgfunc(:,:,:) 
    124       zprmaxp(:,:,:) =  0.6_wp * (1. + zpsino3 * qnpmax ) * r1_rday * tgfunc(:,:,:) 
     121      zprmaxn(:,:,:) =  0.8_wp * (1. + xpsino3 * qnnmax ) * r1_rday * tgfunc(:,:,:) 
     122      zprmaxd(:,:,:) =  0.8_wp * (1. + xpsino3 * qndmax ) * r1_rday * tgfunc(:,:,:) 
     123      zprmaxp(:,:,:) =  0.6_wp * (1. + xpsino3 * qnpmax ) * r1_rday * tgfunc(:,:,:) 
    125124 
    126125      ! Impact of the day duration and light intermittency on phytoplankton growth 
     
    442441        tr(ji,jj,jk,jpphy,Krhs) = tr(ji,jj,jk,jpphy,Krhs)         & 
    443442           &                     + zprorcan(ji,jj,jk) * texcretn  & 
    444            &                     - zpsino3 * zpronewn(ji,jj,jk)   & 
    445            &                     - zpsinh4 * zproregn(ji,jj,jk)   & 
     443           &                     - xpsino3 * zpronewn(ji,jj,jk)   & 
     444           &                     - xpsinh4 * zproregn(ji,jj,jk)   & 
    446445           &                     - zrespn(ji,jj,jk)  
    447446 
     
    453452        tr(ji,jj,jk,jppic,Krhs) = tr(ji,jj,jk,jppic,Krhs)         & 
    454453           &                     + zprorcap(ji,jj,jk) * texcretp  & 
    455            &                     - zpsino3 * zpronewp(ji,jj,jk)   & 
    456            &                     - zpsinh4 * zproregp(ji,jj,jk)   & 
     454           &                     - xpsino3 * zpronewp(ji,jj,jk)   & 
     455           &                     - xpsinh4 * zproregp(ji,jj,jk)   & 
    457456           &                     - zrespp(ji,jj,jk)  
    458457 
     
    464463        tr(ji,jj,jk,jpdia,Krhs) = tr(ji,jj,jk,jpdia,Krhs)         & 
    465464           &                    + zprorcad(ji,jj,jk) * texcretd   & 
    466            &                    - zpsino3 * zpronewd(ji,jj,jk)    & 
    467            &                    - zpsinh4 * zproregd(ji,jj,jk)    & 
     465           &                    - xpsino3 * zpronewd(ji,jj,jk)    & 
     466           &                    - xpsinh4 * zproregd(ji,jj,jk)    & 
    468467           &                    - zrespd(ji,jj,jk)  
    469468 
     
    487486 
    488487        tr(ji,jj,jk,jpdic,Krhs) = tr(ji,jj,jk,jpdic,Krhs) - zpptot  & 
    489            &                     + zpsino3 * zpronewn(ji,jj,jk) + zpsinh4 * zproregn(ji,jj,jk)   & 
    490            &                     + zpsino3 * zpronewp(ji,jj,jk) + zpsinh4 * zproregp(ji,jj,jk)   & 
    491            &                     + zpsino3 * zpronewd(ji,jj,jk) + zpsinh4 * zproregd(ji,jj,jk)   
     488           &                     + xpsino3 * zpronewn(ji,jj,jk) + xpsinh4 * zproregn(ji,jj,jk)   & 
     489           &                     + xpsino3 * zpronewp(ji,jj,jk) + xpsinh4 * zproregp(ji,jj,jk)   & 
     490           &                     + xpsino3 * zpronewd(ji,jj,jk) + xpsinh4 * zproregd(ji,jj,jk)   
    492491 
    493492        tr(ji,jj,jk,jptal,Krhs) = tr(ji,jj,jk,jptal,Krhs) + rno3 * ( zpnewtot - zpregtot ) 
  • NEMO/branches/2021/dev_r14383_PISCES_NEWDEV_PISCO/src/TOP/PISCES/sms_pisces.F90

    r14385 r14416  
    5050   REAL(wp) ::   no3rat3          !: C/N ratio of zooplankton 
    5151   REAL(wp) ::   po4rat3          !: C/P ratio of zooplankton 
     52   REAL(wp) ::  oxymin            !:  half saturation constant for anoxia 
     53   REAL(wp) ::  caco3r            !:  mean rainratio 
    5254 
    5355   !!*  diagnostic parameters  
  • NEMO/branches/2021/dev_r14383_PISCES_NEWDEV_PISCO/src/TOP/PISCES/trcini_pisces.F90

    r14385 r14416  
    247247         ! initialize the half saturation constant for silicate 
    248248         ! ---------------------------------------------------- 
    249          xksi(:,:)    = 2.e-6 
    250          xksimax(:,:) = xksi(:,:) 
    251          IF( ln_p5z ) THEN 
    252             sized(:,:,:) = 1.0 
    253             sizen(:,:,:) = 1.0 
    254             sized(:,:,:) = 1.0 
    255          ENDIF 
     249         xksi(:,:)      = 2.e-6 
     250         xksimax(:,:)   = xksi(:,:) 
     251         consfe3(:,:,:) = 0._wp 
     252         ! 
     253         sized(:,:,:) = 1.0 
     254         sizen(:,:,:) = 1.0 
     255         IF( ln_p5z )  sizep(:,:,:) = 1.0 
    256256      END IF 
    257257 
  • NEMO/branches/2021/dev_r14383_PISCES_NEWDEV_PISCO/src/TOP/trcbc.F90

    r14215 r14416  
    439439            IF( l_offline )   rn_rfact = 1._wp 
    440440            jl = n_trc_indcbc(jn) 
     441            sf_trccbc(jl)%fnow(:,:,1) = MAX( rtrn, sf_trccbc(jl)%fnow(:,:,1) ) ! avoid nedgative value due to interpolation 
    441442            DO_2D( 0, 0, 0, 1 ) 
    442443               DO jk = 1, nk_rnf(ji,jj) 
    443                   zfact = rn_rfact / ( e1e2t(ji,jj) * h_rnf(ji,jj) * rn_cbc_time ) * tmask(ji,jj,1) 
     444                  zfact = rn_rfact / ( e1e2t(ji,jj) * h_rnf(ji,jj) * rn_cbc_time )  
    444445                  ptr(ji,jj,jk,jn,Krhs) = ptr(ji,jj,jk,jn,Krhs) + rf_trcfac(jl) * sf_trccbc(jl)%fnow(ji,jj,1) * zfact 
    445446               END DO 
Note: See TracChangeset for help on using the changeset viewer.