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 9241 for branches/2015 – NEMO

Changeset 9241 for branches/2015


Ignore:
Timestamp:
2018-01-16T13:59:31+01:00 (6 years ago)
Author:
cetlod
Message:

v3.6 stable : bugfix on PISCES, see ticket #2003

Location:
branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsbc.F90

    r9240 r9241  
    4848   LOGICAL  ::  ll_solub 
    4949 
    50    INTEGER , PARAMETER  :: jpriv  = 7   !: Maximum number of river input fields 
    51    INTEGER , PARAMETER  :: jr_dic = 1   !: index of dissolved inorganic carbon 
    52    INTEGER , PARAMETER  :: jr_doc = 2   !: index of dissolved organic carbon 
    53    INTEGER , PARAMETER  :: jr_din = 3   !: index of dissolved inorganic nitrogen 
    54    INTEGER , PARAMETER  :: jr_don = 4   !: index of dissolved organic nitrogen 
    55    INTEGER , PARAMETER  :: jr_dip = 5   !: index of dissolved inorganic phosporus 
    56    INTEGER , PARAMETER  :: jr_dop = 6   !: index of dissolved organic phosphorus 
    57    INTEGER , PARAMETER  :: jr_dsi = 7   !: index of dissolved silicate 
     50   INTEGER, PARAMETER  :: jpriv  = 7   !: Maximum number of river input fields 
     51   INTEGER, PARAMETER  :: jr_dic = 1   !: index of dissolved inorganic carbon 
     52   INTEGER, PARAMETER  :: jr_doc = 2   !: index of dissolved organic carbon 
     53   INTEGER, PARAMETER  :: jr_din = 3   !: index of dissolved inorganic nitrogen 
     54   INTEGER, PARAMETER  :: jr_don = 4   !: index of dissolved organic nitrogen 
     55   INTEGER, PARAMETER  :: jr_dip = 5   !: index of dissolved inorganic phosporus 
     56   INTEGER, PARAMETER  :: jr_dop = 6   !: index of dissolved organic phosphorus 
     57   INTEGER, PARAMETER  :: jr_dsi = 7   !: index of dissolved silicate 
    5858 
    5959 
     
    7777   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: hydrofe   !: Hydrothermal vent supply of iron 
    7878 
    79    REAL(wp), PUBLIC :: sumdepsi, rivalkinput, rivdicinput, nitdepinput 
     79   REAL(wp), PUBLIC :: sedsilfrac, sedcalfrac 
     80   REAL(wp), PUBLIC :: rivalkinput, rivdicinput 
    8081   REAL(wp), PUBLIC :: rivdininput, rivdipinput, rivdsiinput 
    8182 
     
    267268      ! dust input from the atmosphere 
    268269      ! ------------------------------ 
    269       sumdepsi  = 0._wp 
    270270      IF( ln_dust ) THEN  
    271271         ! 
     
    365365      ! nutrient input from dust 
    366366      ! ------------------------ 
    367       nitdepinput = 0._wp 
    368367      IF( ln_ndepo ) THEN 
    369368         ! 
     
    473472      ENDIF 
    474473      ! 
     474      sedsilfrac = 0.03     ! percentage of silica loss in the sediments 
     475      sedcalfrac = 0.6      ! percentage of calcite loss in the sediments 
     476      ! 
    475477      IF( nn_timing == 1 )  CALL timing_stop('p4z_sbc_init') 
    476478      ! 
  • branches/2015/nemo_v3_6_STABLE/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsed.F90

    r8610 r9241  
    6161      INTEGER  ::   ji, jj, jk, ikt 
    6262#if ! defined key_sed 
    63       REAL(wp) ::   zsumsedsi, zsumsedpo4, zsumsedcal 
    6463      REAL(wp) ::   zrivalk, zrivsil, zrivno3 
    6564#endif 
     
    7170      ! 
    7271      CHARACTER (len=25) :: charout 
    73       REAL(wp), POINTER, DIMENSION(:,:  ) :: zpdep, zsidep, zwork1, zwork2, zwork3 
     72      REAL(wp), POINTER, DIMENSION(:,:  ) :: zpdep, zsidep, zwork 
    7473      REAL(wp), POINTER, DIMENSION(:,:)   :: zsedcal, zsedsi, zsedc 
    7574      REAL(wp), POINTER, DIMENSION(:,:  ) :: zdenit2d, zironice, zbureff 
     
    8382      ! 
    8483      ! Allocate temporary workspace 
    85       CALL wrk_alloc( jpi, jpj, zdenit2d, zwork1, zwork2, zwork3, zbureff ) 
     84      CALL wrk_alloc( jpi, jpj, zdenit2d, zbureff ) 
    8685      CALL wrk_alloc( jpi, jpj, zsedcal,  zsedsi, zsedc ) 
    8786      CALL wrk_alloc( jpi, jpj, zwsbio3, zwsbio4, zwscal ) 
     
    9089      zdenit2d(:,:) = 0.e0 
    9190      zbureff (:,:) = 0.e0 
    92       zwork1  (:,:) = 0.e0 
    93       zwork2  (:,:) = 0.e0 
    94       zwork3  (:,:) = 0.e0 
    9591      zsedsi   (:,:) = 0.e0 
    9692      zsedcal  (:,:) = 0.e0 
     
    247243      END DO  
    248244 
    249       ! Loss of biogenic silicon, Caco3 organic carbon in the sediments.  
    250       ! First, the total loss is computed. 
    251       ! The factor for calcite comes from the alkalinity effect 
    252       ! ------------------------------------------------------------- 
    253       DO jj = 1, jpj 
    254          DO ji = 1, jpi 
    255             IF( tmask(ji,jj,1) == 1 ) THEN 
    256                ikt = mbkt(ji,jj)  
    257 # if defined key_kriest 
    258                zwork1(ji,jj) = trb(ji,jj,ikt,jpgsi) * zwscal (ji,jj) 
    259                zwork2(ji,jj) = trb(ji,jj,ikt,jppoc) * zwsbio3(ji,jj) 
    260 # else 
    261                zwork1(ji,jj) = trb(ji,jj,ikt,jpgsi) * zwsbio4(ji,jj) 
    262                zwork2(ji,jj) = trb(ji,jj,ikt,jpgoc) * zwsbio4(ji,jj) + trb(ji,jj,ikt,jppoc) * zwsbio3(ji,jj)  
    263 # endif 
    264                ! For calcite, burial efficiency is made a function of saturation 
    265                zfactcal      = MIN( excess(ji,jj,ikt), 0.2 ) 
    266                zfactcal      = MIN( 1., 1.3 * ( 0.2 - zfactcal ) / ( 0.4 - zfactcal ) ) 
    267                zwork3(ji,jj) = trb(ji,jj,ikt,jpcal) * zwscal(ji,jj) * 2.e0 * zfactcal 
    268             ENDIF 
    269          END DO 
    270       END DO 
    271       zsumsedsi  = glob_sum( zwork1(:,:) * e1e2t(:,:) ) * r1_rday 
    272       zsumsedpo4 = glob_sum( zwork2(:,:) * e1e2t(:,:) ) * r1_rday 
    273       zsumsedcal = glob_sum( zwork3(:,:) * e1e2t(:,:) ) * r1_rday 
    274245#endif 
    275246 
     
    278249      ! ------------------------------------------------------ 
    279250#if ! defined key_sed 
    280       zrivsil =  1._wp - ( sumdepsi + rivdsiinput * r1_ryyss ) / ( zsumsedsi + rtrn ) 
     251      zrivsil =  1._wp - sedsilfrac 
    281252#endif 
    282253 
     
    298269#if ! defined key_sed 
    299270            tra(ji,jj,ikt,jpsil) = tra(ji,jj,ikt,jpsil) + zsiloss * zrivsil  
     271            ! Loss of biogenic silicon, Caco3 organic carbon in the sediments.  
     272            ! The factor for calcite comes from the alkalinity effect 
     273            ! ------------------------------------------------------------- 
    300274            zfactcal = MIN( excess(ji,jj,ikt), 0.2 ) 
    301275            zfactcal = MIN( 1., 1.3 * ( 0.2 - zfactcal ) / ( 0.4 - zfactcal ) ) 
    302             zrivalk  =  1._wp - ( rivalkinput * r1_ryyss ) * zfactcal / ( zsumsedcal + rtrn ) 
     276            zrivalk  =  sedcalfrac * zfactcal 
    303277            tra(ji,jj,ikt,jptal) =  tra(ji,jj,ikt,jptal) + zcaloss * zrivalk * 2.0 
    304278            tra(ji,jj,ikt,jpdic) =  tra(ji,jj,ikt,jpdic) + zcaloss * zrivalk 
     
    394368            IF( iom_use("Nfix"   ) ) CALL iom_put( "Nfix", nitrpot(:,:,:) * nitrfix * rno3 * zfact * tmask(:,:,:) )  ! nitrogen fixation  
    395369            IF( iom_use("INTNFIX") ) THEN   ! nitrogen fixation rate in ocean ( vertically integrated ) 
    396                zwork1(:,:) = 0. 
     370               CALL wrk_alloc( jpi, jpj, zwork ) 
     371               zwork(:,:) = 0. 
    397372               DO jk = 1, jpkm1 
    398                  zwork1(:,:) = zwork1(:,:) + nitrpot(:,:,jk) * nitrfix * rno3 * zfact * fse3t(:,:,jk) * tmask(:,:,jk) 
     373                 zwork(:,:) = zwork(:,:) + nitrpot(:,:,jk) * nitrfix * rno3 * zfact * fse3t(:,:,jk) * tmask(:,:,jk) 
    399374               ENDDO 
    400                CALL iom_put( "INTNFIX" , zwork1 )  
     375               CALL iom_put( "INTNFIX", zwork )  
     376               CALL wrk_dealloc( jpi, jpj, zwork ) 
    401377            ENDIF 
    402378            IF( iom_use("SedCal" ) ) CALL iom_put( "SedCal", zsedcal(:,:) * zfact ) 
     
    418394      ENDIF 
    419395      ! 
    420       CALL wrk_dealloc( jpi, jpj, zdenit2d, zwork1, zwork2, zwork3, zbureff ) 
     396      CALL wrk_dealloc( jpi, jpj, zdenit2d, zbureff ) 
    421397      CALL wrk_dealloc( jpi, jpj, zsedcal , zsedsi, zsedc ) 
    422398      CALL wrk_dealloc( jpi, jpj, zwsbio3, zwsbio4, zwscal ) 
Note: See TracChangeset for help on using the changeset viewer.