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 12193 for NEMO/branches/2019/dev_r11943_MERGE_2019/src/TOP/PISCES/P4Z/p4zbc.F90 – NEMO

Ignore:
Timestamp:
2019-12-11T17:15:54+01:00 (5 years ago)
Author:
davestorkey
Message:

2019/dev_r11943_MERGE_2019: Merge in dev_r12072_TOP-01_ENHANCE-11_cethe

File:
1 copied

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r11943_MERGE_2019/src/TOP/PISCES/P4Z/p4zbc.F90

    r12182 r12193  
    5555CONTAINS 
    5656 
    57    SUBROUTINE p4z_bc( kt ) 
     57   SUBROUTINE p4z_bc( kt, Kbb, Kmm, Krhs ) 
    5858      !!---------------------------------------------------------------------- 
    5959      !!                  ***  routine p4z_bc  *** 
     
    6666      !! 
    6767      !!---------------------------------------------------------------------- 
    68       INTEGER, INTENT(in) ::   kt   ! ocean time step 
     68      INTEGER, INTENT(in) ::   kt              ! ocean time step 
     69      INTEGER, INTENT(in) ::   Kbb, Kmm, Krhs  ! time level index 
    6970      ! 
    7071      INTEGER  ::  ji, jj, jk, jl  
     
    8687         ! 
    8788         jl = n_trc_indsbc(jpfer) 
    88          zirondep(:,:,1) = rf_trsfac(jl) * sf_trcsbc(jl)%fnow(:,:,1) / e3t_n(:,:,1) / rn_sbc_time 
     89         zirondep(:,:,1) = rf_trsfac(jl) * sf_trcsbc(jl)%fnow(:,:,1) / e3t(:,:,1,Kmm) / rn_sbc_time 
    8990         !                                              ! Iron solubilization of particles in the water column 
    9091         !                                              ! dust in kg/m2/s ---> 1/55.85 to put in mol/Fe ;  wdust in m/j 
    9192         zwdust = 0.03 / ( wdust / rday ) / ( 270. * rday ) 
    9293         DO jk = 2, jpkm1 
    93             zirondep(:,:,jk) = ( mfrac * dust(:,:) * zwdust / mMass_Fe ) * rfact * EXP( -gdept_n(:,:,jk) / 540. ) 
    94             tra(:,:,jk,jpfer) = tra(:,:,jk,jpfer) + zirondep(:,:,jk) 
    95             tra(:,:,jk,jppo4) = tra(:,:,jk,jppo4) + zirondep(:,:,jk) * 0.023 
     94            zirondep(:,:,jk) = ( mfrac * dust(:,:) * zwdust / mMass_Fe ) * rfact * EXP( -gdept(:,:,jk,Kmm) / 540. ) 
     95            tr(:,:,jk,jpfer,Krhs) = tr(:,:,jk,jpfer,Krhs) + zirondep(:,:,jk) 
     96            tr(:,:,jk,jppo4,Krhs) = tr(:,:,jk,jppo4,Krhs) + zirondep(:,:,jk) * 0.023 
    9697         ENDDO 
    9798         ! 
    9899         IF( lk_iomput ) THEN 
    99100           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             &  CALL iom_put( "Irondep", zirondep(:,:,1) * 1.e+3 * rfactr * e3t(:,:,1,Kmm) * tmask(:,:,1) ) ! surface downward dust depo of iron 
    101102           IF( iom_use( "pdust" ) )   & 
    102103             &  CALL iom_put( "pdust"  , dust(:,:) / ( wdust * rday ) * tmask(:,:,1) ) ! dust concentration at surface 
     
    117118                   zcoef = rn_rfact / ( e1e2t(ji,jj) * h_rnf(ji,jj) * rn_cbc_time ) * tmask(ji,jj,1) 
    118119                   zrivdin = rf_trcfac(jl) * sf_trccbc(jl)%fnow(ji,jj,1) * zcoef 
    119                    tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - rno3 * zrivdin * rfact 
     120                   tr(ji,jj,jk,jptal,Krhs) = tr(ji,jj,jk,jptal,Krhs) - rno3 * zrivdin * rfact 
    120121               ENDDO 
    121122             END DO 
     
    129130         IF( ln_trc_sbc(jpno3) ) THEN 
    130131            jl = n_trc_indsbc(jpno3) 
    131             zndep(:,:) = rf_trsfac(jl) * sf_trcsbc(jl)%fnow(:,:,1) / e3t_n(:,:,1) / rn_sbc_time 
    132             tra(:,:,1,jptal) = tra(:,:,1,jptal) - rno3 * zndep(:,:) * rfact 
     132            zndep(:,:) = rf_trsfac(jl) * sf_trcsbc(jl)%fnow(:,:,1) / e3t(:,:,1,Kmm) / rn_sbc_time 
     133            tr(:,:,1,jptal,Krhs) = tr(:,:,1,jptal,Krhs) - rno3 * zndep(:,:) * rfact 
    133134         ENDIF 
    134135         IF( ln_trc_sbc(jpnh4) ) THEN 
    135136            jl = n_trc_indsbc(jpnh4) 
    136             zndep(:,:) = rf_trsfac(jl) * sf_trcsbc(jl)%fnow(:,:,1) / e3t_n(:,:,1) / rn_sbc_time 
    137             tra(:,:,1,jptal) = tra(:,:,1,jptal) - rno3 * zndep(:,:) * rfact 
     137            zndep(:,:) = rf_trsfac(jl) * sf_trcsbc(jl)%fnow(:,:,1) / e3t(:,:,1,Kmm) / rn_sbc_time 
     138            tr(:,:,1,jptal,Krhs) = tr(:,:,1,jptal,Krhs) - rno3 * zndep(:,:) * rfact 
    138139         ENDIF 
    139140         DEALLOCATE( zndep ) 
     
    149150         DO jj = 1, jpj 
    150151            DO ji = 1, jpi 
    151                zdep    = rfact / e3t_n(ji,jj,1) 
     152               zdep    = rfact / e3t(ji,jj,1,Kmm) 
    152153               zwflux  = fmmflx(ji,jj) / 1000._wp 
    153                zironice(ji,jj) =  MAX( -0.99 * trb(ji,jj,1,jpfer), -zwflux * icefeinput * zdep ) 
     154               zironice(ji,jj) =  MAX( -0.99 * tr(ji,jj,1,jpfer,Kbb), -zwflux * icefeinput * zdep ) 
    154155            END DO 
    155156         END DO 
    156157         ! 
    157          tra(:,:,1,jpfer) = tra(:,:,1,jpfer) + zironice(:,:) 
     158         tr(:,:,1,jpfer,Krhs) = tr(:,:,1,jpfer,Krhs) + zironice(:,:) 
    158159         ! 
    159160         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 
     161            &   CALL iom_put( "Ironice", zironice(:,:) * 1.e+3 * rfactr * e3t(:,:,1,Kmm) * tmask(:,:,1) ) ! iron flux from ice 
    161162         ! 
    162163         DEALLOCATE( zironice ) 
     
    167168      ! ------------------------------------------------------ 
    168169      IF( ln_ironsed .AND. .NOT.lk_sed ) THEN 
    169           tra(:,:,:,jpfer) = tra(:,:,:,jpfer) + ironsed(:,:,:) * rfact 
     170          tr(:,:,:,jpfer,Krhs) = tr(:,:,:,jpfer,Krhs) + ironsed(:,:,:) * rfact 
    170171          ! 
    171172          IF( lk_iomput .AND. iom_use( "Ironsed" ) )   & 
     
    179180         DO jk = 1, jpk 
    180181            hydrofe(:,:,jk) = ( MAX( rtrn, sf_hydrofe(1)%fnow(:,:,jk) ) * hratio ) & 
    181               &              / ( e1e2t(:,:) * e3t_n(:,:,jk) * ryyss + rtrn ) / 1000._wp & 
     182              &              / ( e1e2t(:,:) * e3t(:,:,jk,Kmm) * ryyss + rtrn ) / 1000._wp & 
    182183              &              * tmask(:,:,jk) 
    183184         ENDDO 
    184                          tra(:,:,:,jpfer) = tra(:,:,:,jpfer) + hydrofe(:,:,:) * rfact 
    185          IF( ln_ligand ) tra(:,:,:,jplgw) = tra(:,:,:,jplgw) + ( hydrofe(:,:,:) * lgw_rath ) * rfact 
     185                         tr(:,:,:,jpfer,Krhs) = tr(:,:,:,jpfer,Krhs) + hydrofe(:,:,:) * rfact 
     186         IF( ln_ligand ) tr(:,:,:,jplgw,Krhs) = tr(:,:,:,jplgw,Krhs) + ( hydrofe(:,:,:) * lgw_rath ) * rfact 
    186187         ! 
    187188         IF( lk_iomput .AND. iom_use( "HYDR" ) )   & 
     
    193194 
    194195 
    195    SUBROUTINE p4z_bc_init 
     196   SUBROUTINE p4z_bc_init( Kmm )  
    196197      !!---------------------------------------------------------------------- 
    197198      !!                  ***  routine p4z_bc_init  *** 
     
    205206      !! 
    206207      !!---------------------------------------------------------------------- 
     208      INTEGER, INTENT( in ) ::   Kmm  ! time level index 
    207209      INTEGER  :: ji, jj, jk, jm 
    208210      INTEGER  :: ii0, ii1, ij0, ij1 
     
    229231      ENDIF 
    230232      !                            !* set file information 
    231       REWIND( numnatp_ref )              ! Namelist nampisbc in reference namelist : Pisces external sources of nutrients 
    232233      READ  ( numnatp_ref, nampisbc, IOSTAT = ios, ERR = 901) 
    233234901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'nampisbc in reference namelist' ) 
    234       REWIND( numnatp_cfg )              ! Namelist nampisbc in configuration namelist : Pisces external sources of nutrients 
    235235      READ  ( numnatp_cfg, nampisbc, IOSTAT = ios, ERR = 902 ) 
    236236902   IF( ios >  0 )   CALL ctl_nam ( ios , 'nampisbc in configuration namelist' ) 
     
    328328            DO jj = 1, jpj 
    329329               DO ji = 1, jpi 
    330                   zexpide   = MIN( 8.,( gdept_n(ji,jj,jk) / 500. )**(-1.5) ) 
     330                  zexpide   = MIN( 8.,( gdept(ji,jj,jk,Kmm) / 500. )**(-1.5) ) 
    331331                  zdenitide = -0.9543 + 0.7662 * LOG( zexpide ) - 0.235 * LOG( zexpide )**2 
    332332                  zcmask(ji,jj,jk) = zcmask(ji,jj,jk) * MIN( 1., EXP( zdenitide ) / 0.5 ) 
Note: See TracChangeset for help on using the changeset viewer.