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

Changeset 12257


Ignore:
Timestamp:
2019-12-16T14:36:58+01:00 (4 years ago)
Author:
cetlod
Message:

dev_r12072_MERGE_OPTION2_2019: Cleaning PISCES diagnostics output ; fully sette tested

Location:
NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019
Files:
19 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/cfgs/ORCA2_ICE_PISCES/EXPREF/namelist_ice_cfg

    r11731 r12257  
    3838&namdyn_rhg     !   Ice rheology 
    3939!------------------------------------------------------------------------------ 
    40       ln_aEVP       = .false.          !     adaptive rheology (Kimmritz et al. 2016 & 2017) 
    4140/ 
    4241!------------------------------------------------------------------------------ 
  • NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/cfgs/SHARED/field_def_nemo-pisces.xml

    r12110 r12257  
    235235       <field id="AtmCo2"      long_name="Atmospheric CO2 concentration"           unit="ppm"                               /> 
    236236       <field id="Irondep"     long_name="Iron deposition from dust"               unit="mol/m2/s"                        /> 
    237        <field id="Ironsed"     long_name="Iron deposition from sediment"           unit="mol/m2/s"   grid_ref="grid_T_3D" /> 
     237       <field id="Ironsed"     long_name="Iron deposition from sediment"           unit="mol/m2/s"       grid_ref="grid_T_3D" /> 
    238238       <field id="FESCAV"      long_name="Scavenging of Iron"                      unit="mmol-Fe/m3/s"   grid_ref="grid_T_3D" /> 
    239239       <field id="FECOLL"      long_name="Colloidal Pumping of FeL"                unit="mmol-FeL/m3/s"  grid_ref="grid_T_3D" /> 
    240        <field id="LGWCOLL"     long_name="Coagulation loss of ligands"             unit="mmol-L/m3/s"  grid_ref="grid_T_3D" /> 
    241        <field id="REMINF"      long_name="Oxic remineralization suppy of Fe"       unit="mmol-Fe/m3/s"  grid_ref="grid_T_3D" /> 
    242        <field id="BACT"        long_name="Bacterial Biomass"                       unit="mmol/m3"  grid_ref="grid_T_3D" /> 
    243        <field id="FEBACT"      long_name="Bacterial uptake of Fe"                  unit="molFe/m3/s"  grid_ref="grid_T_3D" /> 
    244        <field id="LPRODR"      long_name="OM remineralisation ligand production rate" unit="nmol-L/m3/s"  grid_ref="grid_T_3D" /> 
    245        <field id="LPRODP"      long_name="phytoplankton ligand production rate"    unit="nmol-L/m3/s"  grid_ref="grid_T_3D" /> 
    246        <field id="LIGREM"      long_name="Remineralisation loss of ligands"        unit="nmol-L/m3/s"  grid_ref="grid_T_3D" /> 
    247        <field id="LIGPR"       long_name="Photochemical loss of ligands"           unit="nmol-L/m3/s"  grid_ref="grid_T_3D" /> 
     240       <field id="LGWCOLL"     long_name="Coagulation loss of ligands"             unit="mmol-L/m3/s"    grid_ref="grid_T_3D" /> 
     241       <field id="REMINF"      long_name="Oxic remineralization suppy of Fe"       unit="mmol-Fe/m3/s"   grid_ref="grid_T_3D" /> 
     242       <field id="BACT"        long_name="Bacterial Biomass"                       unit="mmol/m3"        grid_ref="grid_T_3D" /> 
     243       <field id="FEBACT"      long_name="Bacterial uptake of Fe"                  unit="molFe/m3/s"     grid_ref="grid_T_3D" /> 
     244       <field id="LPRODR"      long_name="OM remineralisation ligand production rate" unit="nmol-L/m3/s" grid_ref="grid_T_3D" /> 
     245       <field id="LPRODP"      long_name="phytoplankton ligand production rate"    unit="nmol-L/m3/s"    grid_ref="grid_T_3D" /> 
     246       <field id="LIGREM"      long_name="Remineralisation loss of ligands"        unit="nmol-L/m3/s"    grid_ref="grid_T_3D" /> 
     247       <field id="LIGPR"       long_name="Photochemical loss of ligands"           unit="nmol-L/m3/s"    grid_ref="grid_T_3D" /> 
    248248       <field id="LDETP"       long_name="Ligand destruction during phytoplankton uptake" unit="nmol-L/m3/s"  grid_ref="grid_T_3D" /> 
    249        <field id="LPRODZ2"     long_name="mesozooplankton ligand production rate"  unit="nmol-L/m3/s"  grid_ref="grid_T_3D" /> 
    250        <field id="LPRODZ"      long_name="microzooplankton ligand production rate" unit="nmol-L/m3/s"  grid_ref="grid_T_3D" /> 
     249       <field id="LPRODZ2"     long_name="mesozooplankton ligand production rate"  unit="nmol-L/m3/s"    grid_ref="grid_T_3D" /> 
     250       <field id="LPRODZ"      long_name="microzooplankton ligand production rate" unit="nmol-L/m3/s"    grid_ref="grid_T_3D" /> 
    251251       <field id="FEZOO"       long_name="microzooplankton iron recycling rate"    unit="nmol-FeL/m3/s"  grid_ref="grid_T_3D" /> 
    252252       <field id="FEZOO2"      long_name="mesozooplankton iron recycling rate"     unit="nmol-FeL/m3/s"  grid_ref="grid_T_3D" /> 
     
    268268       <field id="O2MIN"       long_name="Oxygen minimum concentration"                        unit="mol/m3"                          /> 
    269269       <field id="ZO2MIN"      long_name="Depth of oxygen minimum concentration"               unit="m"                              /> 
    270        <field id="INTNFIX"     long_name="Nitrogen fixation rate : vert. integrated"           unit="mol/m2/s"                       /> 
    271        <field id="INTPPPHYN"   long_name="Vertically integrated primary production by nanophy" unit="mol/m2/s"                       /> 
    272        <field id="INTPPPHYD"   long_name="Vertically integrated primary production by diatom"  unit="mol/m2/s"                       /> 
    273        <field id="INTPP"       long_name="Vertically integrated primary production by phyto"   unit="mol/m2/s"                       /> 
    274        <field id="INTPNEW"     long_name="Vertically integrated new primary production"        unit="mol/m2/s"                       /> 
    275        <field id="INTPBFE"     long_name="Vertically integrated of biogenic iron production"   unit="mol/m2/s"                       /> 
    276        <field id="INTPBSI"     long_name="Vertically integrated of biogenic Si production"     unit="mol/m2/s"                       /> 
    277        <field id="INTPCAL"     long_name="Vertically integrated of calcite production"         unit="mol/m2/s"                       /> 
     270 
     271       <field id="INTNFIX"     long_name="Nitrogen fixation rate : vert. integrated"           unit="mol/m2/s"  grid_ref="grid_T_vsum"  detect_missing_value="true" > Nfix * e3t </field > 
     272       <field id="INTPPPHYN"   long_name="Vertically integrated primary production by nanophy" unit="mol/m2/s"  grid_ref="grid_T_vsum"  detect_missing_value="true" > PPPHYN * e3t </field > 
     273       <field id="INTPPPHYD"   long_name="Vertically integrated primary production by diatom"  unit="mol/m2/s"  grid_ref="grid_T_vsum"  detect_missing_value="true" > PPPHYD * e3t </field >                     
     274       <field id="INTPPPHYP"   long_name="Vertically integrated primary production by picophy" unit="mol/m2/s"  grid_ref="grid_T_vsum"  detect_missing_value="true" > PPPHYP * e3t </field >                     
     275       <field id="INTPP"       long_name="Vertically integrated primary production by phyto"   unit="mol/m2/s"  grid_ref="grid_T_vsum"  detect_missing_value="true" > TPP * e3t </field >                             
     276       <field id="INTPNEW"     long_name="Vertically integrated new primary production"        unit="mol/m2/s"  grid_ref="grid_T_vsum"  detect_missing_value="true" > TPNEW * e3t </field >                 
     277       <field id="INTPBFE"     long_name="Vertically integrated of biogenic iron production"   unit="mol/m2/s"  grid_ref="grid_T_vsum"  detect_missing_value="true" > TPBFE * e3t </field >                            
     278       <field id="INTPBSI"     long_name="Vertically integrated of biogenic Si production"     unit="mol/m2/s"  grid_ref="grid_T_vsum"  detect_missing_value="true" > PBSi * e3t </field >                            
    278279 
    279280       <!-- PISCES light : variables available with key_pisces_reduced --> 
  • NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/TOP/PISCES/P4Z/p4zbc.F90

    r12202 r12257  
    9797         ! 
    9898         IF( lk_iomput ) THEN 
    99            IF( iom_use( "Irondep" ) )   & 
    100              &  CALL iom_put( "Irondep", zirondep(:,:,1) * 1.e+3 * rfactr * e3t_n(:,:,1) * tmask(:,:,1) ) ! surface downward dust depo of iron 
    101            IF( iom_use( "pdust" ) )   & 
    102              &  CALL iom_put( "pdust"  , dust(:,:) / ( wdust * rday ) * tmask(:,:,1) ) ! dust concentration at surface 
     99             CALL iom_put( "Irondep", zirondep(:,:,1) * 1.e+3 * rfactr * e3t_n(:,:,1) * tmask(:,:,1) ) ! surface downward dust depo of iron 
     100             CALL iom_put( "pdust"  , dust(:,:) / ( wdust * rday ) * tmask(:,:,1) ) ! dust concentration at surface 
    103101         ENDIF 
    104102         DEALLOCATE( zirondep ) 
     
    157155         tra(:,:,1,jpfer) = tra(:,:,1,jpfer) + zironice(:,:) 
    158156         ! 
    159          IF( lk_iomput .AND. iom_use( "Ironice" ) )   & 
    160             &   CALL iom_put( "Ironice", zironice(:,:) * 1.e+3 * rfactr * e3t_n(:,:,1) * tmask(:,:,1) ) ! iron flux from ice 
     157         IF( lk_iomput )  CALL iom_put( "Ironice", zironice(:,:) * 1.e+3 * rfactr * e3t_n(:,:,1) * tmask(:,:,1) ) ! iron flux from ice 
    161158         ! 
    162159         DEALLOCATE( zironice ) 
     
    169166          tra(:,:,:,jpfer) = tra(:,:,:,jpfer) + ironsed(:,:,:) * rfact 
    170167          ! 
    171           IF( lk_iomput .AND. iom_use( "Ironsed" ) )   & 
    172                &   CALL iom_put( "Ironsed", ironsed(:,:,:) * 1.e+3 * tmask(:,:,:) )  
     168          IF( lk_iomput )  CALL iom_put( "Ironsed", ironsed(:,:,:) * 1.e+3 * tmask(:,:,:) )  
    173169      ENDIF 
    174170 
     
    185181         IF( ln_ligand ) tra(:,:,:,jplgw) = tra(:,:,:,jplgw) + ( hydrofe(:,:,:) * lgw_rath ) * rfact 
    186182         ! 
    187          IF( lk_iomput .AND. iom_use( "HYDR" ) )   & 
    188             &   CALL iom_put( "HYDR", hydrofe(:,:,:) * 1.e+3 * tmask(:,:,:) ) ! hydrothermal iron input 
     183         IF( lk_iomput ) CALL iom_put( "HYDR", hydrofe(:,:,:) * 1.e+3 * tmask(:,:,:) ) ! hydrothermal iron input 
    189184      ENDIF 
    190185      IF( ln_timing )  CALL timing_stop('p4z_bc') 
  • NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/TOP/PISCES/P4Z/p4zfechem.F90

    r12210 r12257  
    7171      IF( ln_timing )   CALL timing_start('p4z_fechem') 
    7272      ! 
    73       zFe3 (:,:,:) = 0. 
    74       zFeL1(:,:,:) = 0. 
    75       zTL1 (:,:,:) = 0. 
    7673 
    7774      ! Total ligand concentration : Ligands can be chosen to be constant or variable 
     
    209206         IF( knt == nrdttrc ) THEN 
    210207            zrfact2 = 1.e3 * rfact2r  ! conversion from mol/L/timestep into mol/m3/s 
    211             IF( iom_use("Fe3")    )  CALL iom_put("Fe3"    , zFe3   (:,:,:)       * tmask(:,:,:) )   ! Fe3+ 
    212             IF( iom_use("FeL1")   )  CALL iom_put("FeL1"   , zFeL1  (:,:,:)       * tmask(:,:,:) )   ! FeL1 
    213             IF( iom_use("TL1")    )  CALL iom_put("TL1"    , zTL1   (:,:,:)       * tmask(:,:,:) )   ! TL1 
     208            IF( iom_use("Fe3")  )  THEN 
     209               zFe3(:,:,jpk) = 0.  ;  CALL iom_put("Fe3" , zFe3(:,:,:) * tmask(:,:,:) )   ! Fe3+ 
     210            ENDIF 
     211            IF( iom_use("FeL1") )  THEN 
     212              zFeL1(:,:,jpk) = 0.  ;  CALL iom_put("FeL1", zFeL1(:,:,:) * tmask(:,:,:) )   ! FeL1 
     213            ENDIF 
     214            IF( iom_use("TL1")  )  THEN 
     215              zTL1(:,:,jpk) = 0.   ;  CALL iom_put("TL1" , zTL1(:,:,:) * tmask(:,:,:) )   ! TL1 
     216            ENDIF 
    214217            IF( iom_use("Totlig") )  CALL iom_put("Totlig" , ztotlig(:,:,:)       * tmask(:,:,:) )   ! TL 
    215218            IF( iom_use("Biron")  )  CALL iom_put("Biron"  , biron  (:,:,:)  * 1e9 * tmask(:,:,:) )   ! biron 
    216             IF( iom_use("FESCAV") )  CALL iom_put("FESCAV" , zscav3d(:,:,:)  * 1e9 * tmask(:,:,:) * zrfact2 ) 
    217             IF( iom_use("FECOLL") )  CALL iom_put("FECOLL" , zcoll3d(:,:,:)  * 1e9 * tmask(:,:,:) * zrfact2 ) 
    218             IF( iom_use("LGWCOLL"))  CALL iom_put("LGWCOLL", zlcoll3d(:,:,:) * 1e9 * tmask(:,:,:) * zrfact2 ) 
     219            IF( iom_use("FESCAV") )  THEN 
     220               zscav3d (:,:,jpk) = 0.  ;  CALL iom_put("FESCAV" , zscav3d(:,:,:)  * 1e9 * tmask(:,:,:) * zrfact2 ) 
     221            ENDIF 
     222            IF( iom_use("FECOLL") ) THEN 
     223               zcoll3d (:,:,jpk) = 0.  ;   CALL iom_put("FECOLL" , zcoll3d(:,:,:)  * 1e9 * tmask(:,:,:) * zrfact2 ) 
     224            ENDIF 
     225            IF( iom_use("LGWCOLL")) THEN 
     226               zlcoll3d(:,:,jpk) = 0.  ;  CALL iom_put("LGWCOLL", zlcoll3d(:,:,:) * 1e9 * tmask(:,:,:) * zrfact2 ) 
     227            ENDIF 
    219228         ENDIF 
    220229      ENDIF 
  • NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/TOP/PISCES/P4Z/p4zflx.F90

    r12210 r12257  
    8080      CHARACTER (len=25) ::   charout 
    8181      REAL(wp), DIMENSION(jpi,jpj) ::   zkgco2, zkgo2, zh2co3, zoflx,  zpco2atm   
    82       REAL(wp), ALLOCATABLE, DIMENSION(:,:) ::   zw2d 
    8382      !!--------------------------------------------------------------------- 
    8483      ! 
     
    186185 
    187186      IF( lk_iomput .AND. knt == nrdttrc ) THEN 
    188          CALL iom_put( "AtmCo2" , satmco2(:,:) * tmask(:,:,1) )   ! Atmospheric CO2 concentration 
    189          !  
    190          ALLOCATE( zw2d(jpi,jpj) )   
    191          IF( iom_use( "Cflx"  ) )  THEN 
    192             zw2d(:,:) = oce_co2(:,:) * 1000.  ! conversion in molC/m2/s 
    193             CALL iom_put( "Cflx"     , zw2d )  
    194          ENDIF 
    195          IF( iom_use( "Oflx"  ) )  THEN 
    196             zw2d(:,:) =  zoflx(:,:) * 1000. 
    197             CALL iom_put( "Oflx" , zw2d ) 
    198          ENDIF 
    199          IF( iom_use( "Kg"    ) )  THEN 
    200             zw2d(:,:) =  zkgco2(:,:) * tmask(:,:,1) 
    201             CALL iom_put( "Kg"   , zw2d ) 
    202          ENDIF 
    203          IF( iom_use( "Dpco2" ) ) THEN 
    204            zw2d(:,:) = ( zpco2atm(:,:) - zh2co3(:,:) / ( chemc(:,:,1) + rtrn ) ) * tmask(:,:,1) 
    205            CALL iom_put( "Dpco2" ,  zw2d ) 
    206          ENDIF 
    207          IF( iom_use( "pCO2sea" ) ) THEN 
    208            zw2d(:,:) = ( zh2co3(:,:) / ( chemc(:,:,1) + rtrn ) ) * tmask(:,:,1) 
    209            CALL iom_put( "pCO2sea" ,  zw2d ) 
    210          ENDIF 
    211  
    212          IF( iom_use( "Dpo2" ) )  THEN 
    213            zw2d(:,:) = ( atcox * patm(:,:) - atcox * trb(:,:,1,jpoxy) / ( chemo2(:,:,1) + rtrn ) ) * tmask(:,:,1) 
    214            CALL iom_put( "Dpo2"  , zw2d ) 
    215          ENDIF 
    216          CALL iom_put( "tcflx"    , t_oce_co2_flx     )   ! molC/s 
    217          CALL iom_put( "tcflxcum" , t_oce_co2_flx_cum )   ! molC 
    218          ! 
    219          DEALLOCATE( zw2d ) 
     187         CALL iom_put( "AtmCo2"  , satmco2(:,:) * tmask(:,:,1) )   ! Atmospheric CO2 concentration 
     188         CALL iom_put( "Cflx"    , oce_co2(:,:) * 1000. )  
     189         CALL iom_put( "Oflx"    , zoflx(:,:) * 1000.  ) 
     190         CALL iom_put( "Kg"      , zkgco2(:,:) * tmask(:,:,1)  ) 
     191         CALL iom_put( "Dpco2"   , ( zpco2atm(:,:) - zh2co3(:,:) / ( chemc(:,:,1) + rtrn ) ) * tmask(:,:,1) ) 
     192         CALL iom_put( "pCO2sea" , ( zh2co3(:,:) / ( chemc(:,:,1) + rtrn ) ) * tmask(:,:,1) ) 
     193         CALL iom_put( "Dpo2"    , ( atcox * patm(:,:) - atcox * trb(:,:,1,jpoxy) / ( chemo2(:,:,1) + rtrn ) ) * tmask(:,:,1) ) 
     194         CALL iom_put( "tcflx"   , t_oce_co2_flx     )   ! molC/s 
     195         CALL iom_put( "tcflxcum", t_oce_co2_flx_cum )   ! molC 
    220196      ENDIF 
    221197      ! 
  • NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/TOP/PISCES/P4Z/p4zligand.F90

    r12210 r12257  
    4343      INTEGER  ::   ji, jj, jk 
    4444      REAL(wp) ::   zlgwp, zlgwpr, zlgwr, zlablgw 
    45       REAL(wp), DIMENSION(jpi,jpj,jpk) :: zligrem, zligpr, zrligprod 
    46       REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   zw3d 
     45      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zligrem, zligpr, zligprod 
    4746      CHARACTER (len=25) ::   charout 
    4847      !!--------------------------------------------------------------------- 
     
    6968               zligrem(ji,jj,jk)   = zlgwr 
    7069               zligpr(ji,jj,jk)    = zlgwpr 
    71                zrligprod(ji,jj,jk) = zlgwp 
     70               zligprod(ji,jj,jk) = zlgwp 
    7271               ! 
    7372            END DO 
     
    7877      !     --------------------------------- 
    7978      IF( lk_iomput .AND. knt == nrdttrc ) THEN 
    80          ALLOCATE( zw3d(jpi,jpj,jpk) ) 
    8179         IF( iom_use( "LIGREM" ) ) THEN 
    82             zw3d(:,:,:) = zligrem(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) 
    83             CALL iom_put( "LIGREM", zw3d ) 
     80           zligrem(:,:,jpk) = 0.  ; CALL iom_put( "LIGREM", zligrem(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ) 
    8481         ENDIF 
    8582         IF( iom_use( "LIGPR" ) ) THEN 
    86             zw3d(:,:,:) = zligpr(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:)  
    87             CALL iom_put( "LIGPR", zw3d ) 
     83           zligpr(:,:,jpk) = 0.   ; CALL iom_put( "LIGPR" , zligpr(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ) 
    8884         ENDIF 
    8985         IF( iom_use( "LPRODR" ) ) THEN 
    90             zw3d(:,:,:) = zrligprod(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:)  
    91             CALL iom_put( "LPRODR", zw3d ) 
     86           zligprod(:,:,jpk) = 0. ; CALL iom_put( "LPRODR", zligprod(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ) 
    9287         ENDIF 
    93          DEALLOCATE( zw3d ) 
    9488      ENDIF 
    9589      ! 
  • NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/TOP/PISCES/P4Z/p4zlim.F90

    r12202 r12257  
    215215      ! 
    216216      IF( lk_iomput .AND. knt == nrdttrc ) THEN        ! save output diagnostics 
    217         IF( iom_use( "xfracal" ) )   CALL iom_put( "xfracal", xfracal(:,:,:) * tmask(:,:,:) )  ! euphotic layer deptht 
    218         IF( iom_use( "LNnut"   ) )   CALL iom_put( "LNnut"  , xlimphy(:,:,:) * tmask(:,:,:) )  ! Nutrient limitation term 
    219         IF( iom_use( "LDnut"   ) )   CALL iom_put( "LDnut"  , xlimdia(:,:,:) * tmask(:,:,:) )  ! Nutrient limitation term 
    220         IF( iom_use( "LNFe"    ) )   CALL iom_put( "LNFe"   , xlimnfe(:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
    221         IF( iom_use( "LDFe"    ) )   CALL iom_put( "LDFe"   , xlimdfe(:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
     217        CALL iom_put( "xfracal", xfracal(:,:,:) * tmask(:,:,:) )  ! euphotic layer deptht 
     218        CALL iom_put( "LNnut"  , xlimphy(:,:,:) * tmask(:,:,:) )  ! Nutrient limitation term 
     219        CALL iom_put( "LDnut"  , xlimdia(:,:,:) * tmask(:,:,:) )  ! Nutrient limitation term 
     220        CALL iom_put( "LNFe"   , xlimnfe(:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
     221        CALL iom_put( "LDFe"   , xlimdfe(:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
    222222      ENDIF 
    223223      ! 
     
    282282      ENDIF 
    283283      ! 
    284       nitrfac (:,:,:) = 0._wp 
     284      nitrfac (:,:,jpk) = 0._wp 
     285      nitrfac2(:,:,jpk) = 0._wp 
     286      xfracal (:,:,jpk) = 0._wp 
     287      xlimphy (:,:,jpk) = 0._wp 
     288      xlimdia (:,:,jpk) = 0._wp 
     289      xlimnfe (:,:,jpk) = 0._wp 
     290      xlimdfe (:,:,jpk) = 0._wp 
    285291      ! 
    286292   END SUBROUTINE p4z_lim_init 
  • NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/TOP/PISCES/P4Z/p4zlys.F90

    r12210 r12257  
    6464      IF( ln_timing )  CALL timing_start('p4z_lys') 
    6565      ! 
    66       zco3    (:,:,:) = 0. 
    67       zcaldiss(:,:,:) = 0. 
    6866      zhinit  (:,:,:) = hi(:,:,:) * 1000. / ( rhop(:,:,:) + rtrn ) 
    6967      ! 
     
    123121 
    124122      IF( lk_iomput .AND. knt == nrdttrc ) THEN 
    125          IF( iom_use( "PH"     ) ) CALL iom_put( "PH"    , -1. * LOG10( MAX( hi(:,:,:), rtrn ) ) * tmask(:,:,:) ) 
    126          IF( iom_use( "CO3"    ) ) CALL iom_put( "CO3"   , zco3(:,:,:)     * 1.e+3               * tmask(:,:,:) ) 
    127          IF( iom_use( "CO3sat" ) ) CALL iom_put( "CO3sat", zco3sat(:,:,:)  * 1.e+3               * tmask(:,:,:) ) 
    128          IF( iom_use( "DCAL"   ) ) CALL iom_put( "DCAL"  , zcaldiss(:,:,:) * 1.e+3 * rfact2r     * tmask(:,:,:) ) 
     123         CALL iom_put( "PH"  , -1. * LOG10( MAX( hi(:,:,:), rtrn ) ) * tmask(:,:,:) ) 
     124         IF( iom_use( "CO3" ) ) THEN 
     125            zco3(:,:,jpk) = 0.    ; CALL iom_put( "CO3"   , zco3(:,:,:)     * 1.e+3           * tmask(:,:,:) ) 
     126         ENDIF 
     127         IF( iom_use( "CO3sat" ) ) THEN 
     128           zco3sat(:,:,jpk) = 0.  ; CALL iom_put( "CO3sat", zco3sat(:,:,:)  * 1.e+3           * tmask(:,:,:) ) 
     129         ENDIF 
     130         IF( iom_use( "DCAL" ) ) THEN 
     131           zcaldiss(:,:,jpk) = 0. ; CALL iom_put( "DCAL"  , zcaldiss(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:) ) 
     132         ENDIF 
    129133      ENDIF 
    130134      ! 
  • NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/TOP/PISCES/P4Z/p4zmeso.F90

    r12251 r12257  
    224224      ! 
    225225      IF( lk_iomput .AND. knt == nrdttrc ) THEN 
    226          zgrazing2(:,:,jpk) = 0._wp 
    227          zfezoo2 (:,:,jpk) = 0._wp 
    228          CALL iom_put( "GRAZ2" , zgrazing2(:,:,:) * 1.e+3       * rfact2r * tmask(:,:,:) )  !   Total grazing of phyto by zooplankton 
    229          CALL iom_put( "PCAL"  , prodcal  (:,:,:) * 1.e+3       * rfact2r * tmask(:,:,:) )  !  Calcite production  
    230          CALL iom_put( "FEZOO2", zfezoo2  (:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ) 
    231          IF( ln_ligand )  THEN 
    232             zz2ligprod(:,:,jpk) = 0._wp 
    233             CALL iom_put( "LPRODZ2", zz2ligprod(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:)  ) 
     226         CALL iom_put( "PCAL"  , prodcal(:,:,:) * 1.e+3  * rfact2r * tmask(:,:,:) )  !  Calcite production  
     227         IF( iom_use("GRAZ2") ) THEN  !   Total grazing of phyto by zooplankton 
     228           zgrazing2(:,:,jpk) = 0._wp ;  CALL iom_put( "GRAZ2" , zgrazing2(:,:,:) * 1.e+3  * rfact2r * tmask(:,:,:) )  
     229         ENDIF 
     230         IF( iom_use("FEZOO2") ) THEN   
     231           zfezoo2 (:,:,jpk) = 0._wp ; CALL iom_put( "FEZOO2", zfezoo2(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ) 
     232         ENDIF 
     233         IF( ln_ligand ) THEN 
     234            zz2ligprod(:,:,jpk) = 0._wp ; CALL iom_put( "LPRODZ2", zz2ligprod(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:)  ) 
    234235         ENDIF 
    235236      ENDIF 
  • NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/TOP/PISCES/P4Z/p4zmicro.F90

    r12251 r12257  
    181181      ! 
    182182      IF( lk_iomput .AND. knt == nrdttrc ) THEN 
    183          zgrazing(:,:,jpk) = 0._wp 
    184          zfezoo  (:,:,jpk) = 0._wp 
    185          CALL iom_put( "GRAZ1", zgrazing(:,:,:) * 1.e+3       * rfact2r * tmask(:,:,:) )  !   Total grazing of phyto by zooplankton 
    186          CALL iom_put( "FEZOO", zfezoo  (:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ) 
    187          IF( ln_ligand )  THEN 
    188             zzligprod(:,:,jpk) = 0._wp 
    189             CALL iom_put( "LPRODZ", zzligprod(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:)  ) 
     183       IF( iom_use("GRAZ1") ) THEN  !   Total grazing of phyto by zooplankton 
     184           zgrazing(:,:,jpk) = 0._wp   ; CALL iom_put( "GRAZ1" , zgrazing(:,:,:) * 1.e+3  * rfact2r * tmask(:,:,:) )  
     185         ENDIF 
     186         IF( iom_use("FEZOO") ) THEN   
     187           zfezoo (:,:,jpk) = 0._wp    ; CALL iom_put( "FEZOO" , zfezoo(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ) 
     188         ENDIF 
     189         IF( ln_ligand ) THEN 
     190            zzligprod(:,:,jpk) = 0._wp ; CALL iom_put( "LPRODZ", zzligprod(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:)) 
    190191         ENDIF 
    191192      ENDIF 
  • NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/TOP/PISCES/P4Z/p4zopt.F90

    r12202 r12257  
    7171      ! 
    7272      IF( ln_timing )   CALL timing_start('p4z_opt') 
    73       IF( ln_p5z    )   ALLOCATE( zetmp5(jpi,jpj) ) 
    7473 
    7574      IF( knt == 1 .AND. ln_varpar )   CALL p4z_opt_sbc( kt ) 
     
    133132         ! 
    134133         DO jk = 1, nksrp       
    135             etot (:,:,jk) =        ze1(:,:,jk) +        ze2(:,:,jk) +       ze3(:,:,jk) 
     134            etot (:,:,jk) =         ze1(:,:,jk) +        ze2(:,:,jk) +       ze3(:,:,jk) 
    136135            enano(:,:,jk) =  1.85 * ze1(:,:,jk) + 0.69 * ze2(:,:,jk) + 0.46 * ze3(:,:,jk) 
    137136            ediat(:,:,jk) =  1.62 * ze1(:,:,jk) + 0.74 * ze2(:,:,jk) + 0.63 * ze3(:,:,jk) 
     
    241240      ! 
    242241      IF( ln_p5z ) THEN 
    243          zetmp5 (:,:) = 0.e0 
     242         ALLOCATE( zetmp5(jpi,jpj) )  ;   zetmp5 (:,:) = 0.e0 
    244243         DO jk = 1, nksrp 
    245244            DO jj = 1, jpj 
     
    264263            END DO 
    265264         END DO 
    266       ENDIF 
    267       IF( lk_iomput ) THEN 
    268         IF( knt == nrdttrc ) THEN 
    269            IF( iom_use( "Heup"  ) ) CALL iom_put( "Heup" , heup(:,:  ) * tmask(:,:,1) )  ! euphotic layer deptht 
    270            IF( iom_use( "PARDM" ) ) CALL iom_put( "PARDM", zpar(:,:,:) * tmask(:,:,:) )  ! Photosynthetically Available Radiation 
    271            IF( iom_use( "PAR"   ) ) CALL iom_put( "PAR"  , emoy(:,:,:) * tmask(:,:,:) )  ! Photosynthetically Available Radiation 
    272         ENDIF 
    273       ENDIF 
    274       ! 
    275       IF( ln_p5z    )   DEALLOCATE( zetmp5 ) 
     265         DEALLOCATE( zetmp5 ) 
     266      ENDIF 
     267      ! 
     268      IF( lk_iomput .AND.  knt == nrdttrc ) THEN 
     269         CALL iom_put( "Heup" , heup(:,:  ) * tmask(:,:,1) )  ! euphotic layer deptht 
     270         CALL iom_put( "PARDM", zpar(:,:,:) * tmask(:,:,:) )  ! Photosynthetically Available Radiation 
     271         CALL iom_put( "PAR"  , emoy(:,:,:) * tmask(:,:,:) )  ! Photosynthetically Available Radiation 
     272      ENDIF 
     273      ! 
    276274      IF( ln_timing )   CALL timing_stop('p4z_opt') 
    277275      ! 
  • NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/TOP/PISCES/P4Z/p4zprod.F90

    r12210 r12257  
    8989      !  Allocate temporary workspace 
    9090      ! 
    91       zprorcan(:,:,:) = 0._wp ; zprorcad(:,:,:) = 0._wp ; zprofed (:,:,:) = 0._wp 
    92       zprofen (:,:,:) = 0._wp ; zysopt  (:,:,:) = 0._wp 
    93       zpronewn(:,:,:) = 0._wp ; zpronewd(:,:,:) = 0._wp ; zprdia  (:,:,:) = 0._wp 
    94       zprbio  (:,:,:) = 0._wp ; zprdch  (:,:,:) = 0._wp ; zprnch  (:,:,:) = 0._wp  
    95       zmxl_fac(:,:,:) = 0._wp ; zmxl_chl(:,:,:) = 0._wp  
     91      zprorcan(:,:,jpk) = 0._wp ; zprorcad(:,:,jpk) = 0._wp ; zprofed (:,:,jpk) = 0._wp 
     92      zprofen (:,:,jpk) = 0._wp ; zysopt  (:,:,jpk) = 0._wp 
     93      zpronewn(:,:,jpk) = 0._wp ; zpronewd(:,:,jpk) = 0._wp ; zprdia  (:,:,jpk) = 0._wp 
     94      zprbio  (:,:,jpk) = 0._wp ; zprdch  (:,:,jpk) = 0._wp ; zprnch  (:,:,jpk) = 0._wp  
     95      zmxl_fac(:,:,jpk) = 0._wp ; zmxl_chl(:,:,jpk) = 0._wp  
    9696 
    9797      ! Computation of the optimal production 
     
    320320     ! 
    321321     IF( ln_ligand ) THEN 
    322          zpligprod1(:,:,:) = 0._wp    ;    zpligprod2(:,:,:) = 0._wp 
     322         zpligprod1(:,:,jpk) = 0._wp    ;    zpligprod2(:,:,jpk) = 0._wp 
    323323         DO jk = 1, jpkm1 
    324324            DO jj = 1, jpj 
     
    341341         & tpp = glob_sum( 'p4zprod', ( zprorcan(:,:,:) + zprorcad(:,:,:) ) * cvol(:,:,:) ) 
    342342 
    343     IF( lk_iomput ) THEN 
    344        IF( knt == nrdttrc ) THEN 
    345           ALLOCATE( zw2d(jpi,jpj), zw3d(jpi,jpj,jpk) ) 
    346           zfact = 1.e+3 * rfact2r  !  conversion from mol/l/kt to  mol/m3/s 
    347           ! 
    348           IF( iom_use( "PPPHYN" ) .OR. iom_use( "PPPHYD" ) )  THEN 
    349               zw3d(:,:,:) = zprorcan(:,:,:) * zfact * tmask(:,:,:)  ! primary production by nanophyto 
    350               CALL iom_put( "PPPHYN"  , zw3d ) 
    351               ! 
    352               zw3d(:,:,:) = zprorcad(:,:,:) * zfact * tmask(:,:,:)  ! primary production by diatomes 
    353               CALL iom_put( "PPPHYD"  , zw3d ) 
    354           ENDIF 
    355           IF( iom_use( "PPNEWN" ) .OR. iom_use( "PPNEWD" ) )  THEN 
    356               zw3d(:,:,:) = zpronewn(:,:,:) * zfact * tmask(:,:,:)  ! new primary production by nanophyto 
    357               CALL iom_put( "PPNEWN"  , zw3d ) 
    358               ! 
    359               zw3d(:,:,:) = zpronewd(:,:,:) * zfact * tmask(:,:,:)  ! new primary production by diatomes 
    360               CALL iom_put( "PPNEWD"  , zw3d ) 
    361           ENDIF 
    362           IF( iom_use( "PBSi" ) )  THEN 
    363               zw3d(:,:,:) = zprorcad(:,:,:) * zfact * tmask(:,:,:) * zysopt(:,:,:) ! biogenic silica production 
    364               CALL iom_put( "PBSi"  , zw3d ) 
    365           ENDIF 
    366           IF( iom_use( "PFeN" ) .OR. iom_use( "PFeD" ) )  THEN 
    367               zw3d(:,:,:) = zprofen(:,:,:) * zfact * tmask(:,:,:)  ! biogenic iron production by nanophyto 
    368               CALL iom_put( "PFeN"  , zw3d ) 
    369               ! 
    370               zw3d(:,:,:) = zprofed(:,:,:) * zfact * tmask(:,:,:)  ! biogenic iron production by  diatomes 
    371               CALL iom_put( "PFeD"  , zw3d ) 
    372           ENDIF 
    373           IF( iom_use( "LPRODP" ) )  THEN 
    374               zw3d(:,:,:) = zpligprod1(:,:,:) * 1e9 * zfact * tmask(:,:,:) 
    375               CALL iom_put( "LPRODP"  , zw3d ) 
    376           ENDIF 
    377           IF( iom_use( "LDETP" ) )  THEN 
    378               zw3d(:,:,:) = zpligprod2(:,:,:) * 1e9 * zfact * tmask(:,:,:) 
    379               CALL iom_put( "LDETP"  , zw3d ) 
    380           ENDIF 
    381           IF( iom_use( "Mumax" ) )  THEN 
    382               zw3d(:,:,:) = zprmaxn(:,:,:) * tmask(:,:,:)   ! Maximum growth rate 
    383               CALL iom_put( "Mumax"  , zw3d ) 
    384           ENDIF 
    385           IF( iom_use( "MuN" ) .OR. iom_use( "MuD" ) )  THEN 
    386               zw3d(:,:,:) = zprbio(:,:,:) * xlimphy(:,:,:) * tmask(:,:,:)  ! Realized growth rate for nanophyto 
    387               CALL iom_put( "MuN"  , zw3d ) 
    388               ! 
    389               zw3d(:,:,:) =  zprdia(:,:,:) * xlimdia(:,:,:) * tmask(:,:,:)  ! Realized growth rate for diatoms 
    390               CALL iom_put( "MuD"  , zw3d ) 
    391           ENDIF 
    392           IF( iom_use( "LNlight" ) .OR. iom_use( "LDlight" ) )  THEN 
    393               zw3d(:,:,:) = zprbio (:,:,:) / (zprmaxn(:,:,:) + rtrn) * tmask(:,:,:) ! light limitation term 
    394               CALL iom_put( "LNlight"  , zw3d ) 
    395               ! 
    396               zw3d(:,:,:) = zprdia (:,:,:) / (zprmaxd(:,:,:) + rtrn) * tmask(:,:,:)  ! light limitation term 
    397               CALL iom_put( "LDlight"  , zw3d ) 
    398           ENDIF 
    399           IF( iom_use( "TPP" ) )  THEN 
    400               zw3d(:,:,:) = ( zprorcan(:,:,:) + zprorcad(:,:,:) ) * zfact * tmask(:,:,:)  ! total primary production 
    401               CALL iom_put( "TPP"  , zw3d ) 
    402           ENDIF 
    403           IF( iom_use( "TPNEW" ) )  THEN 
    404               zw3d(:,:,:) = ( zpronewn(:,:,:) + zpronewd(:,:,:) ) * zfact * tmask(:,:,:)  ! total new production 
    405               CALL iom_put( "TPNEW"  , zw3d ) 
    406           ENDIF 
    407           IF( iom_use( "TPBFE" ) )  THEN 
    408               zw3d(:,:,:) = ( zprofen(:,:,:) + zprofed(:,:,:) ) * zfact * tmask(:,:,:)  ! total biogenic iron production 
    409               CALL iom_put( "TPBFE"  , zw3d ) 
    410           ENDIF 
    411           IF( iom_use( "INTPPPHYN" ) .OR. iom_use( "INTPPPHYD" ) ) THEN   
    412              zw2d(:,:) = 0. 
    413              DO jk = 1, jpkm1 
    414                zw2d(:,:) = zw2d(:,:) + zprorcan(:,:,jk) * e3t_n(:,:,jk) * zfact * tmask(:,:,jk)  ! vert. integrated  primary produc. by nano 
    415              ENDDO 
    416              CALL iom_put( "INTPPPHYN" , zw2d ) 
    417              ! 
    418              zw2d(:,:) = 0. 
    419              DO jk = 1, jpkm1 
    420                 zw2d(:,:) = zw2d(:,:) + zprorcad(:,:,jk) * e3t_n(:,:,jk) * zfact * tmask(:,:,jk) ! vert. integrated  primary produc. by diatom 
    421              ENDDO 
    422              CALL iom_put( "INTPPPHYD" , zw2d ) 
    423           ENDIF 
    424           IF( iom_use( "INTPP" ) ) THEN    
    425              zw2d(:,:) = 0. 
    426              DO jk = 1, jpkm1 
    427                 zw2d(:,:) = zw2d(:,:) + ( zprorcan(:,:,jk) + zprorcad(:,:,jk) ) * e3t_n(:,:,jk) * zfact * tmask(:,:,jk) ! vert. integrated pp 
    428              ENDDO 
    429              CALL iom_put( "INTPP" , zw2d ) 
    430           ENDIF 
    431           IF( iom_use( "INTPNEW" ) ) THEN     
    432              zw2d(:,:) = 0. 
    433              DO jk = 1, jpkm1 
    434                 zw2d(:,:) = zw2d(:,:) + ( zpronewn(:,:,jk) + zpronewd(:,:,jk) ) * e3t_n(:,:,jk) * zfact * tmask(:,:,jk)  ! vert. integrated new prod 
    435              ENDDO 
    436              CALL iom_put( "INTPNEW" , zw2d ) 
    437           ENDIF 
    438           IF( iom_use( "INTPBFE" ) ) THEN           !   total biogenic iron production  ( vertically integrated ) 
    439              zw2d(:,:) = 0. 
    440              DO jk = 1, jpkm1 
    441                 zw2d(:,:) = zw2d(:,:) + ( zprofen(:,:,jk) + zprofed(:,:,jk) ) * e3t_n(:,:,jk) * zfact * tmask(:,:,jk) ! vert integr. bfe prod 
    442              ENDDO 
    443             CALL iom_put( "INTPBFE" , zw2d ) 
    444           ENDIF 
    445           IF( iom_use( "INTPBSI" ) ) THEN           !   total biogenic silica production  ( vertically integrated ) 
    446              zw2d(:,:) = 0. 
    447              DO jk = 1, jpkm1 
    448                 zw2d(:,:) = zw2d(:,:) + zprorcad(:,:,jk) * zysopt(:,:,jk) * e3t_n(:,:,jk) * zfact * tmask(:,:,jk)  ! vert integr. bsi prod 
    449              ENDDO 
    450              CALL iom_put( "INTPBSI" , zw2d ) 
    451           ENDIF 
    452           IF( iom_use( "tintpp" ) )  CALL iom_put( "tintpp" , tpp * zfact )  !  global total integrated primary production molC/s 
    453           ! 
    454           DEALLOCATE( zw2d, zw3d ) 
    455        ENDIF 
     343    IF( lk_iomput .AND.  knt == nrdttrc ) THEN 
     344       zfact = 1.e+3 * rfact2r  !  conversion from mol/l/kt to  mol/m3/s 
     345       ! 
     346       CALL iom_put( "PPPHYN"  , zprorcan(:,:,:) * zfact * tmask(:,:,:) )  ! primary production by nanophyto 
     347       CALL iom_put( "PPPHYD"  , zprorcad(:,:,:) * zfact * tmask(:,:,:)   ) ! primary production by diatomes 
     348       CALL iom_put( "PPNEWN"  , zpronewn(:,:,:) * zfact * tmask(:,:,:)    ) ! new primary production by nanophyto 
     349       CALL iom_put( "PPNEWD"  , zpronewd(:,:,:) * zfact * tmask(:,:,:)   ) ! new primary production by diatomes 
     350       CALL iom_put( "PBSi"    , zprorcad(:,:,:) * zfact * tmask(:,:,:) * zysopt(:,:,:)  ) ! biogenic silica production 
     351       CALL iom_put( "PFeN"    , zprofen(:,:,:) * zfact * tmask(:,:,:)  ) ! biogenic iron production by nanophyto 
     352       CALL iom_put( "PFeD"    , zprofed(:,:,:) * zfact * tmask(:,:,:)  ) ! biogenic iron production by  diatomes 
     353       CALL iom_put( "LPRODP"  , zpligprod1(:,:,:) * 1e9 * zfact * tmask(:,:,:) ) 
     354       CALL iom_put( "LDETP"   , zpligprod2(:,:,:) * 1e9 * zfact * tmask(:,:,:) ) 
     355       CALL iom_put( "Mumax"   , zprmaxn(:,:,:) * tmask(:,:,:)  ) ! Maximum growth rate 
     356       CALL iom_put( "MuN"     , zprbio(:,:,:) * xlimphy(:,:,:) * tmask(:,:,:) ) ! Realized growth rate for nanophyto 
     357       CALL iom_put( "MuD"     , zprdia(:,:,:) * xlimdia(:,:,:) * tmask(:,:,:) ) ! Realized growth rate for diatoms 
     358       CALL iom_put( "LNlight" , zprbio (:,:,:) / (zprmaxn(:,:,:) + rtrn) * tmask(:,:,:)  )  ! light limitation term 
     359       CALL iom_put( "LDlight" , zprdia (:,:,:) / (zprmaxd(:,:,:) + rtrn) * tmask(:,:,:)   ) 
     360       CALL iom_put( "TPP"     , ( zprorcan(:,:,:) + zprorcad(:,:,:) ) * zfact * tmask(:,:,:)  )  ! total primary production 
     361       CALL iom_put( "TPNEW"   , ( zpronewn(:,:,:) + zpronewd(:,:,:) ) * zfact * tmask(:,:,:)  ) ! total new production 
     362       CALL iom_put( "TPBFE"   , ( zprofen(:,:,:) + zprofed(:,:,:) ) * zfact * tmask(:,:,:)  )  ! total biogenic iron production 
     363       CALL iom_put( "tintpp"  , tpp * zfact )  !  global total integrated primary production molC/s 
    456364     ENDIF 
    457365 
  • NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/TOP/PISCES/P4Z/p4zrem.F90

    r12210 r12257  
    6868      REAL(wp), DIMENSION(jpi,jpj    ) :: ztempbac 
    6969      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zdepbac, zolimi, zdepprod, zfacsi, zfacsib, zdepeff, zfebact 
    70       REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zw3d 
    7170      !!--------------------------------------------------------------------- 
    7271      ! 
     
    274273       ENDIF 
    275274 
    276       IF( knt == nrdttrc ) THEN 
    277           zrfact2 = 1.e3 * rfact2r 
    278           ALLOCATE( zw3d(jpi,jpj,jpk) ) 
    279           zfact = 1.e+3 * rfact2r  !  conversion from mol/l/kt to  mol/m3/s 
     275      IF( lk_iomput .AND. knt == nrdttrc ) THEN 
     276          zrfact2 = 1.e+3 * rfact2r  !  conversion from mol/l/kt to  mol/m3/s 
    280277          ! 
    281           IF( iom_use( "REMIN" ) )  THEN 
    282               zw3d(:,:,:) = zolimi(:,:,:) * tmask(:,:,:) * zfact !  Remineralisation rate 
    283               CALL iom_put( "REMIN"  , zw3d ) 
     278          IF( iom_use( "REMIN" ) )  THEN !  Remineralisation rate 
     279             zolimi(:,:,jpk) = 0. ; CALL iom_put( "REMIN"  , zolimi(:,:,:) * tmask(:,:,:) * zrfact2  ) 
    284280          ENDIF 
    285           IF( iom_use( "DENIT" ) )  THEN 
    286               zw3d(:,:,:) = denitr(:,:,:) * rdenit * rno3 * tmask(:,:,:) * zfact ! Denitrification 
    287               CALL iom_put( "DENIT"  , zw3d ) 
     281          CALL iom_put( "DENIT"  , denitr(:,:,:) * rdenit * rno3 * tmask(:,:,:) * zrfact2 ) ! Denitrification  
     282          IF( iom_use( "BACT" ) )  THEN ! Bacterial biomass 
     283             zdepbac(:,:,jpk) = 0.  ;   CALL iom_put( "BACT", zdepbac(:,:,:) * 1.E6 * tmask(:,:,:) ) 
    288284          ENDIF 
    289           IF( iom_use( "BACT" ) )  THEN 
    290                zw3d(:,:,:) = zdepbac(:,:,:) * 1.E6 * tmask(:,:,:)  ! Bacterial biomass 
    291                CALL iom_put( "BACT", zw3d ) 
    292           ENDIF 
    293           IF( iom_use( "FEBACT" ) )  THEN 
    294                zw3d(:,:,:) = zfebact(:,:,:) * 1E9 * tmask(:,:,:) * zrfact2   ! Bacterial iron consumption 
    295                CALL iom_put( "FEBACT" , zw3d ) 
    296           ENDIF 
    297           ! 
    298           DEALLOCATE( zw3d ) 
     285          CALL iom_put( "FEBACT" , zfebact(:,:,:) * 1E9 * tmask(:,:,:) * zrfact2  ) 
    299286       ENDIF 
    300287      ! 
  • NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/TOP/PISCES/P4Z/p4zsed.F90

    r12210 r12257  
    330330      ENDIF 
    331331 
    332       IF( lk_iomput ) THEN 
    333          IF( knt == nrdttrc ) THEN 
    334             zfact = 1.e+3 * rfact2r !  conversion from molC/l/kt  to molN/m3/s 
    335             IF( iom_use("Nfix"   ) ) CALL iom_put( "Nfix", nitrpot(:,:,:) * nitrfix * rno3 * zfact * tmask(:,:,:) )  ! nitrogen fixation  
    336             IF( iom_use("INTNFIX") ) THEN   ! nitrogen fixation rate in ocean ( vertically integrated ) 
    337                zwork(:,:) = 0. 
    338                DO jk = 1, jpkm1 
    339                  zwork(:,:) = zwork(:,:) + nitrpot(:,:,jk) * nitrfix * rno3 * zfact * e3t_n(:,:,jk) * tmask(:,:,jk) 
    340                ENDDO 
    341                CALL iom_put( "INTNFIX" , zwork )  
    342             ENDIF 
    343             IF( iom_use("SedCal" ) ) CALL iom_put( "SedCal", zsedcal(:,:) * zfact ) 
    344             IF( iom_use("SedSi" ) )  CALL iom_put( "SedSi",  zsedsi (:,:) * zfact ) 
    345             IF( iom_use("SedC" ) )   CALL iom_put( "SedC",   zsedc  (:,:) * zfact ) 
    346             IF( iom_use("Sdenit" ) ) CALL iom_put( "Sdenit", sdenit (:,:) * zfact * rno3 ) 
    347          ENDIF 
     332      IF( lk_iomput .AND. knt == nrdttrc ) THEN 
     333         zfact = 1.e+3 * rfact2r !  conversion from molC/l/kt  to molN/m3/s 
     334         CALL iom_put( "Nfix", nitrpot(:,:,:) * nitrfix * rno3 * zfact * tmask(:,:,:) )  ! nitrogen fixation  
     335         CALL iom_put( "SedCal", zsedcal(:,:) * zfact ) 
     336         CALL iom_put( "SedSi" , zsedsi (:,:) * zfact ) 
     337         CALL iom_put( "SedC"  , zsedc  (:,:) * zfact ) 
     338         CALL iom_put( "Sdenit", sdenit (:,:) * zfact * rno3 ) 
    348339      ENDIF 
    349340      ! 
  • NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/TOP/PISCES/P4Z/p4zsink.F90

    r12210 r12257  
    6262      CHARACTER (len=25) :: charout 
    6363      REAL(wp) :: zmax, zfact 
    64       REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zw3d 
    65       REAL(wp), ALLOCATABLE, DIMENSION(:,:  ) :: zw2d 
    6664      !!--------------------------------------------------------------------- 
    6765      ! 
     
    129127        &   t_oce_co2_exp = glob_sum( 'p4zsink', ( sinking(:,:,ik100) + sinking2(:,:,ik100) ) * e1e2t(:,:) * tmask(:,:,1) ) 
    130128     ! 
    131      IF( lk_iomput ) THEN 
    132        IF( knt == nrdttrc ) THEN 
    133           ALLOCATE( zw2d(jpi,jpj), zw3d(jpi,jpj,jpk) ) 
    134           zfact = 1.e+3 * rfact2r  !  conversion from mol/l/kt to  mol/m3/s 
    135           ! 
    136           IF( iom_use( "EPC100" ) )  THEN 
    137               zw2d(:,:) = ( sinking(:,:,ik100) + sinking2(:,:,ik100) ) * zfact * tmask(:,:,1) ! Export of carbon at 100m 
    138               CALL iom_put( "EPC100"  , zw2d ) 
    139           ENDIF 
    140           IF( iom_use( "EPFE100" ) )  THEN 
    141               zw2d(:,:) = ( sinkfer(:,:,ik100) + sinkfer2(:,:,ik100) ) * zfact * tmask(:,:,1) ! Export of iron at 100m 
    142               CALL iom_put( "EPFE100"  , zw2d ) 
    143           ENDIF 
    144           IF( iom_use( "EPCAL100" ) )  THEN 
    145               zw2d(:,:) = sinkcal(:,:,ik100) * zfact * tmask(:,:,1) ! Export of calcite at 100m 
    146               CALL iom_put( "EPCAL100"  , zw2d ) 
    147           ENDIF 
    148           IF( iom_use( "EPSI100" ) )  THEN 
    149               zw2d(:,:) =  sinksil(:,:,ik100) * zfact * tmask(:,:,1) ! Export of bigenic silica at 100m 
    150               CALL iom_put( "EPSI100"  , zw2d ) 
    151           ENDIF 
    152           IF( iom_use( "EXPC" ) )  THEN 
    153               zw3d(:,:,:) = ( sinking(:,:,:) + sinking2(:,:,:) ) * zfact * tmask(:,:,:) ! Export of carbon in the water column 
    154               CALL iom_put( "EXPC"  , zw3d ) 
    155           ENDIF 
    156           IF( iom_use( "EXPFE" ) )  THEN 
    157               zw3d(:,:,:) = ( sinkfer(:,:,:) + sinkfer2(:,:,:) ) * zfact * tmask(:,:,:) ! Export of iron  
    158               CALL iom_put( "EXPFE"  , zw3d ) 
    159           ENDIF 
    160           IF( iom_use( "EXPCAL" ) )  THEN 
    161               zw3d(:,:,:) = sinkcal(:,:,:) * zfact * tmask(:,:,:) ! Export of calcite  
    162               CALL iom_put( "EXPCAL"  , zw3d ) 
    163           ENDIF 
    164           IF( iom_use( "EXPSI" ) )  THEN 
    165               zw3d(:,:,:) = sinksil(:,:,:) * zfact * tmask(:,:,:) ! Export of bigenic silica 
    166               CALL iom_put( "EXPSI"  , zw3d ) 
    167           ENDIF 
    168           IF( iom_use( "tcexp" ) )  CALL iom_put( "tcexp" , t_oce_co2_exp * zfact )   ! molC/s 
    169           !  
    170           DEALLOCATE( zw2d, zw3d ) 
    171         ENDIF 
     129     IF( lk_iomput .AND.  knt == nrdttrc ) THEN 
     130       zfact = 1.e+3 * rfact2r  !  conversion from mol/l/kt to  mol/m3/s 
     131       ! 
     132       CALL iom_put( "EPC100"  , ( sinking(:,:,ik100) + sinking2(:,:,ik100) ) * zfact * tmask(:,:,1) ) ! Export of carbon at 100m  
     133       CALL iom_put( "EPFE100" , ( sinkfer(:,:,ik100) + sinkfer2(:,:,ik100) ) * zfact * tmask(:,:,1) ) ! Export of iron at 100m  
     134       CALL iom_put( "EPCAL100", sinkcal(:,:,ik100) * zfact * tmask(:,:,1) )      ! Export of calcite at 100m  
     135       CALL iom_put( "EPSI100" , sinksil(:,:,ik100) * zfact * tmask(:,:,1) )          ! Export of bigenic silica at 100m  
     136       CALL iom_put( "EXPC"    , ( sinking(:,:,:) + sinking2(:,:,:) ) * zfact * tmask(:,:,:) ) ! Export of carbon in the water column  
     137       CALL iom_put( "EXPFE"   , ( sinkfer(:,:,:) + sinkfer2(:,:,:) ) * zfact * tmask(:,:,:) ) ! Export of iron   
     138       CALL iom_put( "EXPCAL"  , sinkcal(:,:,:) * zfact * tmask(:,:,:) )      ! Export of calcite  
     139       CALL iom_put( "EXPSI"   , sinksil(:,:,:) * zfact * tmask(:,:,:) )      ! Export of bigenic silica 
     140       CALL iom_put( "tcexp"   , t_oce_co2_exp * zfact )   ! molC/s 
     141       !  
    172142      ENDIF 
    173143      ! 
  • NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/TOP/PISCES/P4Z/p5zlim.F90

    r12202 r12257  
    406406      ! 
    407407      IF( lk_iomput .AND. knt == nrdttrc ) THEN        ! save output diagnostics 
    408         IF( iom_use( "xfracal" ) ) CALL iom_put( "xfracal", xfracal(:,:,:) * tmask(:,:,:) )  ! euphotic layer deptht 
    409         IF( iom_use( "LNnut"   ) ) CALL iom_put( "LNnut"  , xlimphy(:,:,:) * tmask(:,:,:) )  ! Nutrient limitation term 
    410         IF( iom_use( "LPnut"   ) ) CALL iom_put( "LPnut"  , xlimpic(:,:,:) * tmask(:,:,:) )  ! Nutrient limitation term 
    411         IF( iom_use( "LDnut"   ) ) CALL iom_put( "LDnut"  , xlimdia(:,:,:) * tmask(:,:,:) )  ! Nutrient limitation term 
    412         IF( iom_use( "LNFe"    ) ) CALL iom_put( "LNFe"   , xlimnfe(:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
    413         IF( iom_use( "LPFe"    ) ) CALL iom_put( "LPFe"   , xlimpfe(:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
    414         IF( iom_use( "LDFe"    ) ) CALL iom_put( "LDFe"   , xlimdfe(:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
    415         IF( iom_use( "SIZEN"   ) ) CALL iom_put( "SIZEN"  , sizen(:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
    416         IF( iom_use( "SIZEP"   ) ) CALL iom_put( "SIZEP"  , sizep(:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
    417         IF( iom_use( "SIZED"   ) ) CALL iom_put( "SIZED"  , sized(:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
     408        CALL iom_put( "xfracal", xfracal(:,:,:) * tmask(:,:,:) )  ! euphotic layer deptht 
     409        CALL iom_put( "LNnut"  , xlimphy(:,:,:) * tmask(:,:,:) )  ! Nutrient limitation term 
     410        CALL iom_put( "LPnut"  , xlimpic(:,:,:) * tmask(:,:,:) )  ! Nutrient limitation term 
     411        CALL iom_put( "LDnut"  , xlimdia(:,:,:) * tmask(:,:,:) )  ! Nutrient limitation term 
     412        CALL iom_put( "LNFe"   , xlimnfe(:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
     413        CALL iom_put( "LPFe"   , xlimpfe(:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
     414        CALL iom_put( "LDFe"   , xlimdfe(:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
     415        CALL iom_put( "SIZEN"  , sizen  (:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
     416        CALL iom_put( "SIZEP"  , sizep  (:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
     417        CALL iom_put( "SIZED"  , sized  (:,:,:) * tmask(:,:,:) )  ! Iron limitation term 
    418418      ENDIF 
    419419      ! 
     
    522522      zpsiuptk = 2.3 * rno3 
    523523      ! 
    524       nitrfac (:,:,:) = 0._wp 
     524      nitrfac(:,:,jpk) = 0._wp 
     525      xfracal(:,:,jpk) = 0._wp 
     526      xlimphy(:,:,jpk) = 0._wp 
     527      xlimpic(:,:,jpk) = 0._wp 
     528      xlimdia(:,:,jpk) = 0._wp 
     529      xlimnfe(:,:,jpk) = 0._wp 
     530      xlimpfe(:,:,jpk) = 0._wp 
     531      xlimdfe(:,:,jpk) = 0._wp 
     532      sizen  (:,:,jpk) = 0._wp 
     533      sizep  (:,:,jpk) = 0._wp 
     534      sized  (:,:,jpk) = 0._wp 
    525535      ! 
    526536   END SUBROUTINE p5z_lim_init 
  • NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/TOP/PISCES/P4Z/p5zmeso.F90

    r12210 r12257  
    8686      CHARACTER (len=25) :: charout 
    8787      REAL(wp) :: zrfact2, zmetexcess 
    88       REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgrazing, zfezoo2 
    89       REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zw3d, zz2ligprod 
     88      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgrazing2, zfezoo2, zz2ligprod 
    9089 
    9190      !!--------------------------------------------------------------------- 
     
    9392      IF( ln_timing )   CALL timing_start('p5z_meso') 
    9493      ! 
    95  
    96       zgrazing(:,:,:) = 0._wp 
    97       zfezoo2 (:,:,:) = 0._wp 
    98       ! 
    99       IF (ln_ligand) THEN 
    100          ALLOCATE( zz2ligprod(jpi,jpj,jpk) ) 
    101          zz2ligprod(:,:,:) = 0._wp 
    102       ENDIF 
    10394 
    10495      zmetexcess = 0.0 
     
    224215 
    225216               ! Total grazing ( grazing by microzoo is already computed in p5zmicro ) 
    226                zgrazing(ji,jj,jk) = zgraztotc 
     217               zgrazing2(ji,jj,jk) = zgraztotc 
    227218 
    228219               !   Stoichiometruc ratios of the food ingested by zooplanton  
     
    355346      END DO 
    356347      ! 
    357       IF( lk_iomput .AND. knt == nrdttrc ) THEN 
    358          ALLOCATE( zw3d(jpi,jpj,jpk) ) 
    359          IF( iom_use( "GRAZ2" ) ) THEN 
    360             zw3d(:,:,:) = zgrazing(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:)  !   Total grazing of phyto by zooplankton 
    361             CALL iom_put( "GRAZ2", zw3d ) 
     348       IF( lk_iomput .AND. knt == nrdttrc ) THEN 
     349         CALL iom_put( "PCAL"  , prodcal(:,:,:) * 1.e+3  * rfact2r * tmask(:,:,:) )  !  Calcite production  
     350         IF( iom_use("GRAZ2") ) THEN  !   Total grazing of phyto by zooplankton 
     351           zgrazing2(:,:,jpk) = 0._wp ;  CALL iom_put( "GRAZ2" , zgrazing2(:,:,:) * 1.e+3  * rfact2r * tmask(:,:,:) )  
    362352         ENDIF 
    363          IF( iom_use( "PCAL" ) ) THEN 
    364             zw3d(:,:,:) = prodcal(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:)   !  Calcite production 
    365             CALL iom_put( "PCAL", zw3d ) 
     353         IF( iom_use("FEZOO2") ) THEN   
     354           zfezoo2 (:,:,jpk) = 0._wp ; CALL iom_put( "FEZOO2", zfezoo2(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ) 
    366355         ENDIF 
    367          IF( iom_use( "FEZOO2" ) ) THEN 
    368             zw3d(:,:,:) = zfezoo2(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:)   ! 
    369             CALL iom_put( "FEZOO2", zw3d ) 
     356         IF( ln_ligand ) THEN 
     357            zz2ligprod(:,:,jpk) = 0._wp ; CALL iom_put( "LPRODZ2", zz2ligprod(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:)  ) 
    370358         ENDIF 
    371          IF( iom_use( "LPRODZ2" ) .AND. ln_ligand )  THEN 
    372             zw3d(:,:,:) = zz2ligprod(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) 
    373             CALL iom_put( "LPRODZ2"  , zw3d ) 
    374          ENDIF 
    375          DEALLOCATE( zw3d ) 
    376359      ENDIF 
    377360      ! 
  • NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/TOP/PISCES/P4Z/p5zmicro.F90

    r12210 r12257  
    8484      REAL(wp) :: zgrazdc, zgrazdn, zgrazdp, zgrazdf, zgraznf, zgrazz 
    8585      REAL(wp) :: zgrazpc, zgrazpn, zgrazpp, zgrazpf, zbeta, zrfact2, zmetexcess 
    86       REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgrazing, zfezoo 
    87       REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zw3d, zzligprod 
     86      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgrazing, zfezoo, zzligprod 
    8887      CHARACTER (len=25) :: charout 
    8988      !!--------------------------------------------------------------------- 
    9089      ! 
    9190      IF( ln_timing )   CALL timing_start('p5z_micro') 
    92       ! 
    93       IF (ln_ligand) THEN 
    94          ALLOCATE( zzligprod(jpi,jpj,jpk) ) 
    95          zzligprod(:,:,:) = 0._wp 
    96       ENDIF 
    9791      ! 
    9892      zmetexcess = 0.0 
     
    299293      END DO 
    300294      ! 
    301       IF( lk_iomput ) THEN 
    302          IF( knt == nrdttrc ) THEN 
    303             ALLOCATE( zw3d(jpi,jpj,jpk) ) 
    304             IF( iom_use( "GRAZ1" ) ) THEN 
    305                zw3d(:,:,:) = zgrazing(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:)  !  Total grazing of phyto by zooplankton 
    306                CALL iom_put( "GRAZ1", zw3d ) 
    307             ENDIF 
    308             IF( iom_use( "FEZOO" ) ) THEN 
    309                zw3d(:,:,:) = zfezoo(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:)   ! 
    310                CALL iom_put( "FEZOO", zw3d ) 
    311             ENDIF 
    312             IF( iom_use( "LPRODZ" ) .AND. ln_ligand )  THEN 
    313                zw3d(:,:,:) = zzligprod(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) 
    314                CALL iom_put( "LPRODZ"  , zw3d ) 
    315             ENDIF 
    316             DEALLOCATE( zw3d ) 
     295      IF( lk_iomput .AND. knt == nrdttrc ) THEN 
     296        IF( iom_use("GRAZ1") ) THEN  !   Total grazing of phyto by zooplankton 
     297           zgrazing(:,:,jpk) = 0._wp   ; CALL iom_put( "GRAZ1" , zgrazing(:,:,:) * 1.e+3  * rfact2r * tmask(:,:,:) )  
     298         ENDIF 
     299         IF( iom_use("FEZOO") ) THEN   
     300           zfezoo (:,:,jpk) = 0._wp    ; CALL iom_put( "FEZOO" , zfezoo(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:) ) 
     301         ENDIF 
     302         IF( ln_ligand ) THEN 
     303            zzligprod(:,:,jpk) = 0._wp ; CALL iom_put( "LPRODZ", zzligprod(:,:,:) * 1e9 * 1.e+3 * rfact2r * tmask(:,:,:)) 
    317304         ENDIF 
    318305      ENDIF 
  • NEMO/branches/2019/dev_r12072_MERGE_OPTION2_2019/src/TOP/PISCES/P4Z/p5zprod.F90

    r12210 r12257  
    9494      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zmxl_fac, zmxl_chl 
    9595      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zpligprod1, zpligprod2 
    96       REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zw3d 
    97       REAL(wp), ALLOCATABLE, DIMENSION(:,:  ) :: zw2d 
    9896      !!--------------------------------------------------------------------- 
    9997      ! 
    10098      IF( ln_timing )   CALL timing_start('p5z_prod') 
    10199      ! 
    102       zprorcan(:,:,:) = 0._wp ; zprorcap(:,:,:) = 0._wp ; zprorcad(:,:,:) = 0._wp 
    103       zprofed (:,:,:) = 0._wp ; zprofep (:,:,:) = 0._wp ; zprofen (:,:,:) = 0._wp 
    104       zpronewn(:,:,:) = 0._wp ; zpronewp(:,:,:) = 0._wp ; zpronewd(:,:,:) = 0._wp 
    105       zproregn(:,:,:) = 0._wp ; zproregp(:,:,:) = 0._wp ; zproregd(:,:,:) = 0._wp  
    106       zpropo4n(:,:,:) = 0._wp ; zpropo4p(:,:,:) = 0._wp ; zpropo4d(:,:,:) = 0._wp 
    107       zprdia  (:,:,:) = 0._wp ; zprpic  (:,:,:) = 0._wp ; zprbio  (:,:,:) = 0._wp 
    108       zprodopn(:,:,:) = 0._wp ; zprodopp(:,:,:) = 0._wp ; zprodopd(:,:,:) = 0._wp 
    109       zysopt  (:,:,:) = 0._wp 
    110       zrespn  (:,:,:) = 0._wp ; zrespp  (:,:,:) = 0._wp ; zrespd  (:,:,:) = 0._wp  
     100      zprorcan(:,:,jpk) = 0._wp ; zprorcap(:,:,jpk) = 0._wp ; zprorcad(:,:,jpk) = 0._wp 
     101      zcroissn(:,:,jpk) = 0._wp ; zcroissp(:,:,jpk) = 0._wp ; zcroissd(:,:,jpk) = 0._wp 
     102      zprofed (:,:,jpk) = 0._wp ; zprofep (:,:,jpk) = 0._wp ; zprofen (:,:,jpk) = 0._wp 
     103      zpronewn(:,:,jpk) = 0._wp ; zpronewp(:,:,jpk) = 0._wp ; zpronewd(:,:,jpk) = 0._wp 
     104      zproregn(:,:,jpk) = 0._wp ; zproregp(:,:,jpk) = 0._wp ; zproregd(:,:,jpk) = 0._wp  
     105      zpropo4n(:,:,jpk) = 0._wp ; zpropo4p(:,:,jpk) = 0._wp ; zpropo4d(:,:,jpk) = 0._wp 
     106      zprdia  (:,:,jpk) = 0._wp ; zprpic  (:,:,jpk) = 0._wp ; zprbio  (:,:,jpk) = 0._wp 
     107      zprodopn(:,:,jpk) = 0._wp ; zprodopp(:,:,jpk) = 0._wp ; zprodopd(:,:,jpk) = 0._wp 
     108      zysopt  (:,:,jpk) = 0._wp  
     109      zrespn  (:,:,jpk) = 0._wp ; zrespp  (:,:,jpk) = 0._wp ; zrespd  (:,:,jpk) = 0._wp  
    111110 
    112111      ! Computation of the optimal production 
     
    444443     ! 
    445444     IF( ln_ligand ) THEN 
    446          zpligprod1(:,:,:) = 0._wp    ;    zpligprod2(:,:,:) = 0._wp 
     445         zpligprod1(:,:,jpk) = 0._wp    ;    zpligprod2(:,:,jpk) = 0._wp         
    447446         DO jk = 1, jpkm1 
    448447            DO jj = 1, jpj 
     
    465464      & tpp = glob_sum( 'p5zprod', ( zprorcan(:,:,:) + zprorcad(:,:,:) + zprorcap(:,:,:) ) * cvol(:,:,:) ) 
    466465 
    467     IF( lk_iomput ) THEN 
    468        IF( knt == nrdttrc ) THEN 
    469           ALLOCATE( zw2d(jpi,jpj), zw3d(jpi,jpj,jpk) ) 
    470           zfact = 1.e+3 * rfact2r  !  conversion from mol/l/kt to  mol/m3/s 
    471           ! 
    472           IF( iom_use( "PPPHYN" ) .OR. iom_use( "PPPHYD" ) .OR. iom_use( "PPPHYP" ) )  THEN 
    473               zw3d(:,:,:) = zprorcan(:,:,:) * zfact * tmask(:,:,:)  ! primary production by nanophyto 
    474               CALL iom_put( "PPPHYN"  , zw3d ) 
    475               ! 
    476               zw3d(:,:,:) = zprorcap(:,:,:) * zfact * tmask(:,:,:)  ! primary production by picophyto 
    477               CALL iom_put( "PPPHYP"  , zw3d ) 
    478               ! 
    479               zw3d(:,:,:) = zprorcad(:,:,:) * zfact * tmask(:,:,:)  ! primary production by diatomes 
    480               CALL iom_put( "PPPHYD"  , zw3d ) 
    481           ENDIF 
    482           IF( iom_use( "PPNEWN" ) .OR. iom_use( "PPNEWD" ) .OR. iom_use( "PPNEWP" ) )  THEN 
    483               zw3d(:,:,:) = zpronewn(:,:,:) * zfact * tmask(:,:,:)  ! new primary production by nanophyto 
    484               CALL iom_put( "PPNEWN"  , zw3d ) 
    485               ! 
    486               zw3d(:,:,:) = zpronewp(:,:,:) * zfact * tmask(:,:,:)  ! new primary production by picophyto 
    487               CALL iom_put( "PPNEWP"  , zw3d ) 
    488               ! 
    489               zw3d(:,:,:) = zpronewd(:,:,:) * zfact * tmask(:,:,:)  ! new primary production by diatomes 
    490               CALL iom_put( "PPNEWD"  , zw3d ) 
    491           ENDIF 
    492           IF( iom_use( "PBSi" ) )  THEN 
    493               zw3d(:,:,:) = zprorcad(:,:,:) * zfact * tmask(:,:,:) * zysopt(:,:,:) ! biogenic silica production 
    494               CALL iom_put( "PBSi"  , zw3d ) 
    495           ENDIF 
    496           IF( iom_use( "PFeN" ) .OR. iom_use( "PFeD" ) .OR. iom_use( "PFeP" ) )  THEN 
    497               zw3d(:,:,:) = zprofen(:,:,:) * zfact * tmask(:,:,:)  ! biogenic iron production by nanophyto 
    498               CALL iom_put( "PFeN"  , zw3d ) 
    499               ! 
    500               zw3d(:,:,:) = zprofep(:,:,:) * zfact * tmask(:,:,:)  ! biogenic iron production by picophyto 
    501               CALL iom_put( "PFeP"  , zw3d ) 
    502               ! 
    503               zw3d(:,:,:) = zprofed(:,:,:) * zfact * tmask(:,:,:)  ! biogenic iron production by  diatomes 
    504               CALL iom_put( "PFeD"  , zw3d ) 
    505           ENDIF 
    506           IF( iom_use( "LPRODP" ) )  THEN 
    507               zw3d(:,:,:) = zpligprod1(:,:,:) * 1e9 * zfact * tmask(:,:,:) 
    508               CALL iom_put( "LPRODP"  , zw3d ) 
    509           ENDIF 
    510           IF( iom_use( "LDETP" ) )  THEN 
    511               zw3d(:,:,:) = zpligprod2(:,:,:) * 1e9 * zfact * tmask(:,:,:) 
    512               CALL iom_put( "LDETP"  , zw3d ) 
    513           ENDIF 
    514           IF( iom_use( "Mumax" ) )  THEN 
    515               zw3d(:,:,:) = zprmaxn(:,:,:) * tmask(:,:,:)   ! Maximum growth rate 
    516               CALL iom_put( "Mumax"  , zw3d ) 
    517           ENDIF 
    518           IF( iom_use( "MuN" ) .OR. iom_use( "MuD" ) .OR. iom_use( "MuP" ) )  THEN 
    519               zw3d(:,:,:) = zprbio(:,:,:) * xlimphy(:,:,:) * tmask(:,:,:)  ! Realized growth rate for nanophyto 
    520               CALL iom_put( "MuN"  , zw3d ) 
    521               ! 
    522               zw3d(:,:,:) = zprpic(:,:,:) * xlimpic(:,:,:) * tmask(:,:,:)  ! Realized growth rate for picophyto 
    523               CALL iom_put( "MuP"  , zw3d ) 
    524               ! 
    525               zw3d(:,:,:) =  zprdia(:,:,:) * xlimdia(:,:,:) * tmask(:,:,:)  ! Realized growth rate for diatoms 
    526               CALL iom_put( "MuD"  , zw3d ) 
    527           ENDIF 
    528           IF( iom_use( "LNlight" ) .OR. iom_use( "LDlight" ) .OR. iom_use( "LPlight" ) )  THEN 
    529               zw3d(:,:,:) = zprbio (:,:,:) / (zprmaxn(:,:,:) + rtrn) * tmask(:,:,:) ! light limitation term 
    530               CALL iom_put( "LNlight"  , zw3d ) 
    531               ! 
    532               zw3d(:,:,:) = zprpic (:,:,:) / (zprmaxp(:,:,:) + rtrn) * tmask(:,:,:) ! light limitation term 
    533               CALL iom_put( "LPlight"  , zw3d ) 
    534               ! 
    535               zw3d(:,:,:) =  zprdia (:,:,:) / (zprmaxd(:,:,:) + rtrn) * tmask(:,:,:)  ! light limitation term 
    536               CALL iom_put( "LDlight"  , zw3d ) 
    537           ENDIF 
    538           IF( iom_use( "MunetN" ) .OR. iom_use( "MunetD" ) .OR. iom_use( "MunetP" ) )  THEN 
    539               zw3d(:,:,:) = zcroissn(:,:,:) * tmask(:,:,:) ! ! Realized growth rate for nanophyto 
    540               CALL iom_put( "MunetN"  , zw3d ) 
    541               ! 
    542               zw3d(:,:,:) = zcroissp(:,:,:) * tmask(:,:,:) ! ! Realized growth rate for picophyto 
    543               CALL iom_put( "MunetP"  , zw3d ) 
    544               ! 
    545               zw3d(:,:,:) = zcroissd(:,:,:) * tmask(:,:,:) ! ! Realized growth rate for diatomes 
    546               CALL iom_put( "MunetD"  , zw3d ) 
    547               ! 
    548           ENDIF 
    549  
    550           IF( iom_use( "tintpp" ) )  CALL iom_put( "tintpp" , tpp * zfact )  !  global total integrated primary production molC/s 
    551           ! 
    552           DEALLOCATE( zw2d, zw3d ) 
    553        ENDIF 
     466    IF( lk_iomput .AND.  knt == nrdttrc ) THEN 
     467       zfact = 1.e+3 * rfact2r  !  conversion from mol/l/kt to  mol/m3/s 
     468       ! 
     469       CALL iom_put( "PPPHYP"  , zprorcap(:,:,:) * zfact * tmask(:,:,:)   ) ! primary production by picophyto 
     470       CALL iom_put( "PPPHYN"  , zprorcan(:,:,:) * zfact * tmask(:,:,:) )  ! primary production by nanophyto 
     471       CALL iom_put( "PPPHYD"  , zprorcad(:,:,:) * zfact * tmask(:,:,:)   ) ! primary production by diatomes 
     472       CALL iom_put( "PPNEWN"  , zpronewp(:,:,:) * zfact * tmask(:,:,:)    ) ! new primary production by picophyto 
     473       CALL iom_put( "PPNEWN"  , zpronewn(:,:,:) * zfact * tmask(:,:,:)    ) ! new primary production by nanophyto 
     474       CALL iom_put( "PPNEWD"  , zpronewd(:,:,:) * zfact * tmask(:,:,:)   ) ! new primary production by diatomes 
     475       CALL iom_put( "PBSi"    , zprorcad(:,:,:) * zfact * tmask(:,:,:) * zysopt(:,:,:)  ) ! biogenic silica production 
     476       CALL iom_put( "PFeP"    , zprofep(:,:,:) * zfact * tmask(:,:,:)  ) ! biogenic iron production by picophyto 
     477       CALL iom_put( "PFeN"    , zprofen(:,:,:) * zfact * tmask(:,:,:)  ) ! biogenic iron production by nanophyto 
     478       CALL iom_put( "PFeD"    , zprofed(:,:,:) * zfact * tmask(:,:,:)  ) ! biogenic iron production by  diatomes 
     479       CALL iom_put( "LPRODP"  , zpligprod1(:,:,:) * 1e9 * zfact * tmask(:,:,:) ) 
     480       CALL iom_put( "LDETP"   , zpligprod2(:,:,:) * 1e9 * zfact * tmask(:,:,:) ) 
     481       CALL iom_put( "Mumax"   , zprmaxn(:,:,:) * tmask(:,:,:)  ) ! Maximum growth rate 
     482       CALL iom_put( "MuP"     , zprpic(:,:,:) * xlimpic(:,:,:) * tmask(:,:,:) ) ! Realized growth rate for picophyto 
     483       CALL iom_put( "MuN"     , zprbio(:,:,:) * xlimphy(:,:,:) * tmask(:,:,:) ) ! Realized growth rate for nanophyto 
     484       CALL iom_put( "MuD"     , zprdia(:,:,:) * xlimdia(:,:,:) * tmask(:,:,:) ) ! Realized growth rate for diatoms 
     485       CALL iom_put( "LPlight" , zprpic(:,:,:) / (zprmaxp(:,:,:) + rtrn) * tmask(:,:,:)  )  ! light limitation term 
     486       CALL iom_put( "LNlight" , zprbio(:,:,:) / (zprmaxn(:,:,:) + rtrn) * tmask(:,:,:)  )  ! light limitation term 
     487       CALL iom_put( "LDlight" , zprdia(:,:,:) / (zprmaxd(:,:,:) + rtrn) * tmask(:,:,:)   ) 
     488       CALL iom_put( "MunetP"  , zcroissp(:,:,:) * tmask(:,:,:) ) ! Realized growth rate for picophyto 
     489       CALL iom_put( "MunetN"  , zcroissn(:,:,:) * tmask(:,:,:) ) ! Realized growth rate for nanophyto 
     490       CALL iom_put( "MunetD"  , zcroissd(:,:,:) * tmask(:,:,:) ) ! Realized growth rate for diatoms 
     491       CALL iom_put( "TPP"     , ( zprorcap(:,:,:) + zprorcan(:,:,:) + zprorcad(:,:,:) ) * zfact * tmask(:,:,:)  )  ! total primary production 
     492       CALL iom_put( "TPNEW"   , ( zpronewp(:,:,:) + zpronewn(:,:,:) + zpronewd(:,:,:) ) * zfact * tmask(:,:,:)  ) ! total new production 
     493       CALL iom_put( "TPBFE"   , ( zprofep (:,:,:) + zprofen (:,:,:) + zprofed (:,:,:) ) * zfact * tmask(:,:,:)  )  ! total biogenic iron production 
     494       CALL iom_put( "tintpp"  , tpp * zfact )  !  global total integrated primary production molC/s 
    554495     ENDIF 
    555496 
Note: See TracChangeset for help on using the changeset viewer.