Ignore:
Timestamp:
2018-11-21T11:25:53+01:00 (2 years ago)
Author:
smasson
Message:

dev_r10164_HPC09_ESIWACE_PREP_MERGE: merge with trunk@10344, see #2133

Location:
NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/TOP/PISCES/P4Z
Files:
2 deleted
12 edited
2 copied

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/TOP/PISCES/P4Z/p4zbio.F90

    r10069 r10345  
    1515   USE p4zsink         !  vertical flux of particulate matter due to sinking 
    1616   USE p4zopt          !  optical model 
    17    USE p4zice          !  Co-limitations of differents nutrients 
     17   USE p4zlim          !  Co-limitations of differents nutrients 
    1818   USE p4zprod         !  Growth rate of the 2 phyto groups 
    1919   USE p4zmort         !  Mortality terms for phytoplankton 
    2020   USE p4zmicro        !  Sources and sinks of microzooplankton 
    2121   USE p4zmeso         !  Sources and sinks of mesozooplankton 
    22    USE p5zice          !  Co-limitations of differents nutrients 
     22   USE p5zlim          !  Co-limitations of differents nutrients 
    2323   USE p5zprod         !  Growth rate of the 2 phyto groups 
    2424   USE p5zmort         !  Mortality terms for phytoplankton 
  • NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/TOP/PISCES/P4Z/p4zche.F90

    r10068 r10345  
    3737   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   tempis   ! In situ temperature 
    3838 
    39    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   akb3       !: ??? 
    40    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   akw3       !: ??? 
    41    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   akf3       !: ??? 
    42    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   aks3       !: ??? 
    43    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   ak1p3      !: ??? 
    44    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   ak2p3      !: ??? 
    45    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   ak3p3      !: ??? 
    46    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   aksi3      !: ??? 
    47    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   borat      !: ??? 
    48    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   fluorid    !: ??? 
    49    REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sulfat     !: ??? 
     39   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   akb3       !: ??? 
     40   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   akw3       !: ??? 
     41   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   akf3       !: ??? 
     42   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   aks3       !: ??? 
     43   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   ak1p3      !: ??? 
     44   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   ak2p3      !: ??? 
     45   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   ak3p3      !: ??? 
     46   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   aksi3      !: ??? 
     47   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   borat      !: ??? 
     48   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   fluorid    !: ??? 
     49   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   sulfat     !: ??? 
    5050 
    5151   !!* Variable for chemistry of the CO2 cycle 
     
    233233        END DO 
    234234 
    235  
    236  
    237235      ! CHEMICAL CONSTANTS - DEEP OCEAN 
    238236      ! ------------------------------- 
     
    449447      ! 
    450448   END SUBROUTINE p4z_che 
    451  
    452449 
    453450   SUBROUTINE ahini_for_at(p_hini) 
  • NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/TOP/PISCES/P4Z/p4zmeso.F90

    r10069 r10345  
    108108               zdenom    = zfoodlim / ( xkgraz2 + zfoodlim ) 
    109109               zdenom2   = zdenom / ( zfood + rtrn ) 
    110                zgraze2   = grazrat2 * xstep * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpmes)  
     110               zgraze2   = grazrat2 * xstep * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpmes) * (1. - nitrfac(ji,jj,jk))  
    111111 
    112112               zgrazd    = zgraze2  * xprefc   * zcompadi  * zdenom2  
  • NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/TOP/PISCES/P4Z/p4zmicro.F90

    r10069 r10345  
    1414   USE trc             ! passive tracers common variables  
    1515   USE sms_pisces      ! PISCES Source Minus Sink variables 
    16    USE p4zice          ! Co-limitations 
     16   USE p4zlim          ! Co-limitations 
    1717   USE p4zprod         ! production 
    1818   USE iom             ! I/O manager 
  • NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/TOP/PISCES/P4Z/p4zmort.F90

    r10068 r10345  
    1414   USE sms_pisces      ! PISCES Source Minus Sink variables 
    1515   USE p4zprod         ! Primary productivity  
    16    USE p4zice          ! Phytoplankton limitation terms 
     16   USE p4zlim          ! Phytoplankton limitation terms 
    1717   USE prtctl_trc      ! print control for debugging 
    1818 
  • NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/TOP/PISCES/P4Z/p4zprod.F90

    r10314 r10345  
    1515   USE trc             ! passive tracers common variables  
    1616   USE sms_pisces      ! PISCES Source Minus Sink variables 
    17    USE p4zice          ! Co-limitations of differents nutrients 
     17   USE p4zlim          ! Co-limitations of differents nutrients 
    1818   USE prtctl_trc      ! print control for debugging 
    1919   USE iom             ! I/O manager 
  • NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/TOP/PISCES/P4Z/p4zrem.F90

    r10069 r10345  
    1717   USE p4zche          !  chemical model 
    1818   USE p4zprod         !  Growth rate of the 2 phyto groups 
    19    USE p4zice 
     19   USE p4zlim 
    2020   USE prtctl_trc      !  print control for debugging 
    2121   USE iom             !  I/O manager 
     
    116116                  zammonic = zremik * nitrfac(ji,jj,jk) * trb(ji,jj,jk,jpdoc) 
    117117                  denitr(ji,jj,jk)  = zammonic * ( 1. - nitrfac2(ji,jj,jk) ) 
    118                   zoxyrem           = zammonic *        nitrfac2(ji,jj,jk) 
     118                  denitr(ji,jj,jk)  = MIN( ( trb(ji,jj,jk,jpno3) - rtrn ) / rdenit, denitr(ji,jj,jk) ) 
     119                  zoxyrem           = zammonic - denitr(ji,jj,jk) 
    119120                  ! 
    120121                  zolimi (ji,jj,jk) = MAX( 0.e0, zolimi (ji,jj,jk) ) 
     
    189190               &         / ( 1.+ emoy(ji,jj,jk) ) * ( 1. + fr_i(ji,jj) * emoy(ji,jj,jk) )  
    190191               zdenitnh4 = nitrif * xstep * trb(ji,jj,jk,jpnh4) * nitrfac(ji,jj,jk) 
     192               zdenitnh4 = MIN(  ( trb(ji,jj,jk,jpno3) - rtrn ) / rdenita, zdenitnh4 )  
    191193               ! Update of the tracers trends 
    192194               ! ---------------------------- 
  • NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/TOP/PISCES/P4Z/p4zsed.F90

    r10127 r10345  
    1414   USE trc             !  passive tracers common variables  
    1515   USE sms_pisces      !  PISCES Source Minus Sink variables 
    16    USE p4zice          !  Co-limitations of differents nutrients 
     16   USE p4zlim          !  Co-limitations of differents nutrients 
    1717   USE p4zsbc          !  External source of nutrients  
    1818   USE p4zint          !  interpolation and computation of various fields 
     19   USE sed             !  Sediment module 
    1920   USE iom             !  I/O manager 
    2021   USE prtctl_trc      !  print control for debugging 
     
    2930   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:  ) :: sdenit     !: Nitrate reduction in the sediments 
    3031   REAL(wp) :: r1_rday                  !: inverse of rday 
     32   LOGICAL, SAVE :: lk_sed 
    3133 
    3234   !!---------------------------------------------------------------------- 
     
    7072      ! 
    7173      IF( ln_timing )  CALL timing_start('p4z_sed') 
     74      ! 
     75      IF( kt == nittrc000 .AND. knt == 1 )   THEN 
     76          r1_rday  = 1. / rday 
     77          IF (ln_sediment .AND. ln_sed_2way) THEN 
     78             lk_sed = .TRUE. 
     79          ELSE 
     80             lk_sed = .FALSE. 
     81          ENDIF 
     82      ENDIF 
    7283      ! 
    7384      IF( kt == nittrc000 .AND. knt == 1 )   r1_rday  = 1. / rday 
     
    185196      ENDIF 
    186197 
    187       ! Add the external input of iron from sediment mobilization 
    188       ! ------------------------------------------------------ 
    189       IF( ln_ironsed ) THEN 
    190                          tra(:,:,:,jpfer) = tra(:,:,:,jpfer) + ironsed(:,:,:) * rfact2 
    191          IF( ln_ligand ) tra(:,:,:,jpfep) = tra(:,:,:,jpfep) + ( ironsed(:,:,:) * fep_rats ) * rfact2 
    192          ! 
    193          IF( lk_iomput .AND. knt == nrdttrc .AND. iom_use( "Ironsed" ) )   & 
    194             &   CALL iom_put( "Ironsed", ironsed(:,:,:) * 1.e+3 * tmask(:,:,:) ) ! iron inputs from sediments 
    195       ENDIF 
    196  
    197198      ! Add the external input of iron from hydrothermal vents 
    198199      ! ------------------------------------------------------ 
     
    231232 
    232233      IF( .NOT.lk_sed ) THEN 
     234! 
     235         ! Add the external input of iron from sediment mobilization 
     236         ! ------------------------------------------------------ 
     237         IF( ln_ironsed ) THEN 
     238                            tra(:,:,:,jpfer) = tra(:,:,:,jpfer) + ironsed(:,:,:) * rfact2 
     239            IF( ln_ligand ) tra(:,:,:,jpfep) = tra(:,:,:,jpfep) + ( ironsed(:,:,:) * fep_rats ) * rfact2 
     240            ! 
     241            IF( lk_iomput .AND. knt == nrdttrc .AND. iom_use( "Ironsed" ) )   & 
     242               &   CALL iom_put( "Ironsed", ironsed(:,:,:) * 1.e+3 * tmask(:,:,:) ) ! iron inputs from sediments 
     243         ENDIF 
     244 
    233245         ! Computation of the sediment denitrification proportion: The metamodel from midlleburg (2006) is being used 
    234246         ! Computation of the fraction of organic matter that is permanently buried from Dunne's model 
  • NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/TOP/PISCES/P4Z/p4zsms.F90

    r10314 r10345  
    7474            CALL p4z_che                              ! initialize the chemical constants 
    7575            CALL ahini_for_at(hi)   !  set PH at kt=nit000 
     76            t_oce_co2_flx_cum = 0._wp 
    7677        ELSE 
    7778            CALL p4z_rst( nittrc000, 'READ' )  !* read or initialize all required fields 
     
    101102      ENDIF 
    102103      ! 
     104      IF( ll_sbc ) CALL p4z_sbc( kt )   ! external sources of nutrients  
     105      ! 
     106#if ! defined key_sed_off 
    103107      CALL p4z_che              ! computation of chemical constants 
    104108      CALL p4z_int( kt )        ! computation of various rates for biogeochemistry 
    105109      ! 
    106       IF( ll_sbc ) CALL p4z_sbc( kt )   ! external sources of nutrients  
    107  
    108110      DO jnt = 1, nrdttrc          ! Potential time splitting if requested 
    109111         ! 
     
    149151         END DO 
    150152      END IF 
    151       ! 
    152       IF( lk_sed ) THEN  
     153#endif 
     154      ! 
     155      IF( ln_sediment ) THEN  
    153156         ! 
    154157         CALL sed_model( kt )     !  Main program of Sediment model 
     158         ! 
     159         IF( ln_top_euler ) THEN 
     160            DO jn = jp_pcs0, jp_pcs1 
     161               trn(:,:,:,jn) = trb(:,:,:,jn) 
     162            END DO 
     163         ENDIF 
    155164         ! 
    156165      ENDIF 
     
    352361      IF(lwp)  WRITE(numout,*) 
    353362 
    354       IF( cn_cfg == "orca" .AND. .NOT. lk_c1d ) THEN      ! ORCA configuration (not 1D) ! 
    355          !                                                ! --------------------------- ! 
    356          ! set total alkalinity, phosphate, nitrate & silicate 
    357          zarea          = 1._wp / glob_sum( 'p4zsms', cvol(:,:,:) ) * 1e6               
    358  
    359          zalksumn = glob_sum( 'p4zsms', trn(:,:,:,jptal) * cvol(:,:,:)  ) * zarea 
    360          zpo4sumn = glob_sum( 'p4zsms', trn(:,:,:,jppo4) * cvol(:,:,:)  ) * zarea * po4r 
    361          zno3sumn = glob_sum( 'p4zsms', trn(:,:,:,jpno3) * cvol(:,:,:)  ) * zarea * rno3 
    362          zsilsumn = glob_sum( 'p4zsms', trn(:,:,:,jpsil) * cvol(:,:,:)  ) * zarea 
     363      IF( cn_cfg == "ORCA" .OR. cn_cfg == "orca") THEN 
     364         IF( .NOT. lk_c1d ) THEN      ! ORCA configuration (not 1D) ! 
     365            !                                                ! --------------------------- ! 
     366            ! set total alkalinity, phosphate, nitrate & silicate 
     367            zarea          = 1._wp / glob_sum( 'p4zsms', cvol(:,:,:) ) * 1e6               
     368 
     369            zalksumn = glob_sum( 'p4zsms', trn(:,:,:,jptal) * cvol(:,:,:)  ) * zarea 
     370            zpo4sumn = glob_sum( 'p4zsms', trn(:,:,:,jppo4) * cvol(:,:,:)  ) * zarea * po4r 
     371            zno3sumn = glob_sum( 'p4zsms', trn(:,:,:,jpno3) * cvol(:,:,:)  ) * zarea * rno3 
     372            zsilsumn = glob_sum( 'p4zsms', trn(:,:,:,jpsil) * cvol(:,:,:)  ) * zarea 
    363373  
    364          IF(lwp) WRITE(numout,*) '       TALKN mean : ', zalksumn 
    365          trn(:,:,:,jptal) = trn(:,:,:,jptal) * alkmean / zalksumn 
    366  
    367          IF(lwp) WRITE(numout,*) '       PO4N  mean : ', zpo4sumn 
    368          trn(:,:,:,jppo4) = trn(:,:,:,jppo4) * po4mean / zpo4sumn 
    369  
    370          IF(lwp) WRITE(numout,*) '       NO3N  mean : ', zno3sumn 
    371          trn(:,:,:,jpno3) = trn(:,:,:,jpno3) * no3mean / zno3sumn 
    372  
    373          IF(lwp) WRITE(numout,*) '       SiO3N mean : ', zsilsumn 
    374          trn(:,:,:,jpsil) = MIN( 400.e-6,trn(:,:,:,jpsil) * silmean / zsilsumn ) 
    375          ! 
    376          ! 
    377          IF( .NOT. ln_top_euler ) THEN 
    378             zalksumb = glob_sum( 'p4zsms', trb(:,:,:,jptal) * cvol(:,:,:)  ) * zarea 
    379             zpo4sumb = glob_sum( 'p4zsms', trb(:,:,:,jppo4) * cvol(:,:,:)  ) * zarea * po4r 
    380             zno3sumb = glob_sum( 'p4zsms', trb(:,:,:,jpno3) * cvol(:,:,:)  ) * zarea * rno3 
    381             zsilsumb = glob_sum( 'p4zsms', trb(:,:,:,jpsil) * cvol(:,:,:)  ) * zarea 
     374            IF(lwp) WRITE(numout,*) '       TALKN mean : ', zalksumn 
     375            trn(:,:,:,jptal) = trn(:,:,:,jptal) * alkmean / zalksumn 
     376 
     377            IF(lwp) WRITE(numout,*) '       PO4N  mean : ', zpo4sumn 
     378            trn(:,:,:,jppo4) = trn(:,:,:,jppo4) * po4mean / zpo4sumn 
     379 
     380            IF(lwp) WRITE(numout,*) '       NO3N  mean : ', zno3sumn 
     381            trn(:,:,:,jpno3) = trn(:,:,:,jpno3) * no3mean / zno3sumn 
     382 
     383            IF(lwp) WRITE(numout,*) '       SiO3N mean : ', zsilsumn 
     384            trn(:,:,:,jpsil) = MIN( 400.e-6,trn(:,:,:,jpsil) * silmean / zsilsumn ) 
     385            ! 
     386            ! 
     387            IF( .NOT. ln_top_euler ) THEN 
     388               zalksumb = glob_sum( 'p4zsms', trb(:,:,:,jptal) * cvol(:,:,:)  ) * zarea 
     389               zpo4sumb = glob_sum( 'p4zsms', trb(:,:,:,jppo4) * cvol(:,:,:)  ) * zarea * po4r 
     390               zno3sumb = glob_sum( 'p4zsms', trb(:,:,:,jpno3) * cvol(:,:,:)  ) * zarea * rno3 
     391               zsilsumb = glob_sum( 'p4zsms', trb(:,:,:,jpsil) * cvol(:,:,:)  ) * zarea 
    382392  
    383             IF(lwp) WRITE(numout,*) ' ' 
    384             IF(lwp) WRITE(numout,*) '       TALKB mean : ', zalksumb 
    385             trb(:,:,:,jptal) = trb(:,:,:,jptal) * alkmean / zalksumb 
    386  
    387             IF(lwp) WRITE(numout,*) '       PO4B  mean : ', zpo4sumb 
    388             trb(:,:,:,jppo4) = trb(:,:,:,jppo4) * po4mean / zpo4sumb 
    389  
    390             IF(lwp) WRITE(numout,*) '       NO3B  mean : ', zno3sumb 
    391             trb(:,:,:,jpno3) = trb(:,:,:,jpno3) * no3mean / zno3sumb 
    392  
    393             IF(lwp) WRITE(numout,*) '       SiO3B mean : ', zsilsumb 
    394             trb(:,:,:,jpsil) = MIN( 400.e-6,trb(:,:,:,jpsil) * silmean / zsilsumb ) 
     393               IF(lwp) WRITE(numout,*) ' ' 
     394               IF(lwp) WRITE(numout,*) '       TALKB mean : ', zalksumb 
     395               trb(:,:,:,jptal) = trb(:,:,:,jptal) * alkmean / zalksumb 
     396 
     397               IF(lwp) WRITE(numout,*) '       PO4B  mean : ', zpo4sumb 
     398               trb(:,:,:,jppo4) = trb(:,:,:,jppo4) * po4mean / zpo4sumb 
     399 
     400               IF(lwp) WRITE(numout,*) '       NO3B  mean : ', zno3sumb 
     401               trb(:,:,:,jpno3) = trb(:,:,:,jpno3) * no3mean / zno3sumb 
     402 
     403               IF(lwp) WRITE(numout,*) '       SiO3B mean : ', zsilsumb 
     404               trb(:,:,:,jpsil) = MIN( 400.e-6,trb(:,:,:,jpsil) * silmean / zsilsumb ) 
     405           ENDIF 
    395406        ENDIF 
    396407        ! 
  • NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/TOP/PISCES/P4Z/p5zmicro.F90

    r10070 r10345  
    1515   USE trc             !  passive tracers common variables  
    1616   USE sms_pisces      !  PISCES Source Minus Sink variables 
    17    USE p5zice          !  Phytoplankton limitation terms 
     17   USE p5zlim          !  Phytoplankton limitation terms 
    1818   USE iom             !  I/O manager 
    1919   USE prtctl_trc      !  print control for debugging 
  • NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/TOP/PISCES/P4Z/p5zmort.F90

    r10070 r10345  
    1414   USE trc             !  passive tracers common variables  
    1515   USE sms_pisces      !  PISCES Source Minus Sink variables 
    16    USE p5zice          !  Phytoplankton limitation terms 
     16   USE p5zlim          !  Phytoplankton limitation terms 
    1717   USE prtctl_trc      !  print control for debugging 
    1818 
  • NEMO/branches/2018/dev_r10164_HPC09_ESIWACE_PREP_MERGE/src/TOP/PISCES/P4Z/p5zprod.F90

    r10314 r10345  
    1616   USE trc             !  passive tracers common variables  
    1717   USE sms_pisces      !  PISCES Source Minus Sink variables 
    18    USE p5zice          !  Co-limitations of differents nutrients 
     18   USE p5zlim          !  Co-limitations of differents nutrients 
    1919   USE prtctl_trc      !  print control for debugging 
    2020   USE iom             !  I/O manager 
Note: See TracChangeset for help on using the changeset viewer.