Changeset 12372


Ignore:
Timestamp:
2020-02-12T13:37:21+01:00 (8 weeks ago)
Author:
acc
Message:

Branch 2019/dev_r11943_MERGE_2019. A few changes to align the option 1 branch with the trunk@12371. These include a fix for #2317 (changes for LFRA freshwater correction) which was done at changeset 12279 on the trunk. These affect dynatf.F90, traatf.F90 and isfdynatf.F90 and pass SETTE but change results in all tests that use freshwater input (expected). All other changes on the trunk are present (where applicable) up to and including changeset 12367 (Solve #2380)

Location:
NEMO/branches/2019/dev_r11943_MERGE_2019
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r11943_MERGE_2019/cfgs/SHARED/field_def_nemo-oce.xml

    r12252 r12372  
    388388          <field id="hflx_rain_cea" long_name="heat flux due to rainfall"                                standard_name="temperature_flux_due_to_rainfall_expressed_as_heat_flux_into_sea_water"        unit="W/m2"     /> 
    389389          <field id="hflx_evap_cea" long_name="heat flux due to evaporation"                             standard_name="temperature_flux_due_to_evaporation_expressed_as_heat_flux_out_of_sea_water"   unit="W/m2"     /> 
     390          <field id="hflx_prec_cea" long_name="heat flux due to all precip"                              standard_name="temperature_flux_due_to_all_precip_expressed_as_heat_flux_into_sea_water"      unit="W/m2"     /> 
    390391          <field id="hflx_snow_cea" long_name="heat flux due to snow falling"                            standard_name="heat_flux_onto_ocean_and_ice_due_to_snow_thermodynamics"                       unit="W/m2"     /> 
    391392          <field id="hflx_snow_ai_cea" long_name="heat flux due to snow falling over ice"                standard_name="heat_flux_onto_ice_due_to_snow_thermodynamics"                                 unit="W/m2"     /> 
  • NEMO/branches/2019/dev_r11943_MERGE_2019/cfgs/SHARED/grid_def_nemo.xml

    r12252 r12372  
    102102         <axis axis_ref="depthw"  /> 
    103103         <axis axis_ref="basin" /> 
     104       </grid> 
     105 
     106       <grid id="grid_ptr_W_GLO"> 
     107         <domain  domain_ref="ptr" /> 
     108         <axis axis_ref="depthw"  /> 
     109         <scalar> 
     110           <extract_axis position="0" /> 
     111         </scalar> 
     112       </grid> 
     113 
     114       <grid id="grid_ptr_W_ATL"> 
     115         <domain  domain_ref="ptr" /> 
     116         <axis axis_ref="depthw"  /> 
     117         <scalar> 
     118           <extract_axis position="1" /> 
     119         </scalar> 
     120       </grid> 
     121 
     122       <grid id="grid_ptr_W_IND"> 
     123         <domain  domain_ref="ptr" /> 
     124         <axis axis_ref="depthw"  /> 
     125         <scalar> 
     126           <extract_axis position="2" /> 
     127         </scalar> 
    104128       </grid> 
    105129 
  • NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/DYN/dynatf.F90

    r12340 r12372  
    102102      REAL(wp) ::   zue3a, zue3n, zue3b, zcoef    ! local scalars 
    103103      REAL(wp) ::   zve3a, zve3n, zve3b, z1_2dt   !   -      - 
    104       REAL(wp), ALLOCATABLE, DIMENSION(:,:)   ::   zue, zve 
     104      REAL(wp), ALLOCATABLE, DIMENSION(:,:)   ::   zue, zve, zwfld 
    105105      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   ze3t_f, ze3u_f, ze3v_f, zua, zva  
    106106      !!---------------------------------------------------------------------- 
     
    191191            ! Time-filtered scale factor at t-points 
    192192            ! ---------------------------------------------------- 
    193             ALLOCATE( ze3t_f(jpi,jpj,jpk) ) 
     193            ALLOCATE( ze3t_f(jpi,jpj,jpk), zwfld(jpi,jpj) ) 
    194194            DO jk = 1, jpkm1 
    195195               ze3t_f(:,:,jk) = pe3t(:,:,jk,Kmm) + atfp * ( pe3t(:,:,jk,Kbb) - 2._wp * pe3t(:,:,jk,Kmm) + pe3t(:,:,jk,Kaa) ) 
    196196            END DO 
    197197            ! Add volume filter correction: compatibility with tracer advection scheme 
    198             ! => time filter + conservation correction (only at the first level) 
     198            ! => time filter + conservation correction 
    199199            zcoef = atfp * rdt * r1_rau0 
    200  
    201             ze3t_f(:,:,1) = ze3t_f(:,:,1) - zcoef * ( emp_b(:,:) - emp(:,:) ) * tmask(:,:,1) 
    202  
    203             IF ( ln_rnf ) THEN 
    204                IF( ln_rnf_depth ) THEN 
    205                   DO_3D_11_11( 1, jpkm1 ) 
    206                      IF( jk <=  nk_rnf(ji,jj)  ) THEN 
    207                          ze3t_f(ji,jj,jk) =   ze3t_f(ji,jj,jk) - zcoef *  ( - rnf_b(ji,jj) + rnf(ji,jj) ) & 
    208                                 &          * ( pe3t(ji,jj,jk,Kmm) / h_rnf(ji,jj) ) * tmask(ji,jj,jk) 
    209                      ENDIF 
    210                   END_3D 
    211                ELSE 
    212                   ze3t_f(:,:,1) = ze3t_f(:,:,1) - zcoef *  ( -rnf_b(:,:) + rnf(:,:))*tmask(:,:,1) 
    213                ENDIF 
    214             END IF 
     200            zwfld(:,:) = emp_b(:,:) - emp(:,:) 
     201            IF ( ln_rnf ) zwfld(:,:) =  zwfld(:,:) - ( rnf_b(:,:) - rnf(:,:) ) 
     202            DO jk = 1, jpkm1 
     203               ze3t_f(:,:,jk) = ze3t_f(:,:,jk) - zcoef * zwfld(:,:) * tmask(:,:,jk) & 
     204                              &                        * pe3t(:,:,jk,Kmm) / ( ht(:,:) + 1._wp - ssmask(:,:) )  
     205            END DO 
    215206            ! 
    216207            ! ice shelf melting (deal separately as it can be in depth) 
     
    254245            ENDIF 
    255246            ! 
    256             DEALLOCATE( ze3t_f ) 
     247            DEALLOCATE( ze3t_f, zwfld ) 
    257248         ENDIF 
    258249         ! 
  • NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/ISF/isfdynatf.F90

    r12340 r12372  
    1414 
    1515   USE phycst , ONLY: r1_rau0         ! physical constant 
    16    USE dom_oce, ONLY: e3t, r1_e1e2t   ! time and space domain 
     16   USE dom_oce, ONLY: tmask, ssmask, ht, e3t, r1_e1e2t   ! time and space domain 
    1717 
    1818   USE in_out_manager 
     
    7777      ! 
    7878      ! compute fwf conservation correction 
    79       zfwfinc(:,:) = pcoef * ( pfwf_b(:,:) - pfwf(:,:) ) / phtbl(:,:) * r1_rau0 
     79      zfwfinc(:,:) = pcoef * ( pfwf_b(:,:) - pfwf(:,:) ) / ( ht(:,:) + 1._wp - ssmask(:,:) ) * r1_rau0 
    8080      ! 
    81       ! add the increment in the tbl 
    82       DO_3D_11_11( 1, jpkm1 ) 
    83          IF( ktop(ji,jj) <= jk .AND. jk < kbot(ji,jj)  ) THEN 
    84             pe3t_f(ji,jj,jk) = pe3t_f(ji,jj,jk) - zfwfinc(ji,jj) * e3t(ji,jj,jk,Kmm) 
    85          ELSEIF ( jk == kbot(ji,jj) ) THEN 
    86             pe3t_f(ji,jj,jk) = pe3t_f(ji,jj,jk) - zfwfinc(ji,jj) * e3t(ji,jj,jk,Kmm) * pfrac(ji,jj) 
    87          ENDIF 
    88       END_3D 
     81      ! add the increment 
     82      DO jk = 1, jpkm1 
     83         pe3t_f(:,:,jk) = pe3t_f(:,:,jk) - tmask(:,:,jk) * zfwfinc(:,:) * e3t(:,:,jk,Kmm) 
     84      END DO 
    8985      ! 
    9086   END SUBROUTINE isf_dynatf_mlt 
  • NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/SBC/fldread.F90

    r12350 r12372  
    571571 
    572572      REAL(wp), DIMENSION(:,:,:), INTENT(in   ) ::   pdta_read       ! data read in bdy file 
    573       REAL(wp), DIMENSION(:,:,:), INTENT(inout) ::   pdta_read_z     ! depth of the data read in bdy file 
    574       REAL(wp), DIMENSION(:,:,:), INTENT(inout) ::   pdta_read_dz    ! thickness of the levels in bdy file 
     573      REAL(wp), DIMENSION(:,:,:), INTENT(in   ) ::   pdta_read_z     ! depth of the data read in bdy file 
     574      REAL(wp), DIMENSION(:,:,:), INTENT(in   ) ::   pdta_read_dz    ! thickness of the levels in bdy file 
    575575      REAL(wp), DIMENSION(:,:,:), INTENT(  out) ::   pdta            ! output field on model grid (2 dimensional) 
    576576      REAL(wp)                  , INTENT(in   ) ::   pfv             ! fillvalue of the data read in bdy file 
     
    580580      INTEGER, OPTIONAL         , INTENT(in   ) ::   Kmm             ! ocean time level index 
    581581      !! 
    582       INTEGER                                   ::   ipi             ! length of boundary data on local process 
    583       INTEGER                                   ::   ipkb            ! number of vertical levels in boundary data file 
    584       INTEGER                                   ::   jb, ji, jj, jk, jkb   ! loop counters 
    585       REAL(wp)                                  ::   zcoef 
    586       REAL(wp)                                  ::   zl, zi, zh      ! tmp variable for current depth and interpolation factor 
    587       REAL(wp)                                  ::   zfv_alt, ztrans, ztrans_new ! fillvalue and alternative -ABS(pfv) 
    588       REAL(wp), DIMENSION(jpk)                  ::   zdepth, zdhalf  ! level and half-level depth 
     582      INTEGER                  ::   ipi                 ! length of boundary data on local process 
     583      INTEGER                  ::   ipkb                ! number of vertical levels in boundary data file 
     584      INTEGER                  ::   ipkmax              ! number of vertical levels in boundary data file where no mask 
     585      INTEGER                  ::   jb, ji, jj, jk, jkb ! loop counters 
     586      REAL(wp)                 ::   zcoef, zi           !  
     587      REAL(wp)                 ::   ztrans, ztrans_new  ! transports 
     588      REAL(wp), DIMENSION(jpk) ::   zdepth, zdhalf      ! level and half-level depth 
    589589      !!--------------------------------------------------------------------- 
    590590      
     
    592592      ipkb = SIZE( pdta_read, 3 ) 
    593593       
    594       zfv_alt = -ABS(pfv)  ! set _FillValue < 0 as we make use of MAXVAL and MAXLOC later 
    595       ! 
    596       WHERE( pdta_read == pfv ) 
    597          pdta_read_z  = zfv_alt ! safety: put fillvalue into external depth field so consistent with data 
    598          pdta_read_dz = 0._wp   ! safety: put 0._wp into external thickness factors to ensure transport is correct 
    599       ENDWHERE 
    600        
    601594      DO jb = 1, ipi 
    602595         ji = idx_bdy(kbdy)%nbi(jb,kgrd) 
    603596         jj = idx_bdy(kbdy)%nbj(jb,kgrd) 
    604          zh  = SUM(pdta_read_dz(jb,1,:) ) 
    605          ! 
     597         ! 
     598         ! --- max jk where input data /= FillValue --- ! 
     599         ipkmax = 1 
     600         DO jkb = 2, ipkb 
     601            IF( pdta_read(jb,1,jkb) /= pfv )   ipkmax = MAX( ipkmax, jkb ) 
     602         END DO 
     603         ! 
     604         ! --- calculate depth at t,u,v points --- ! 
    606605         SELECT CASE( kgrd )                          
    607          CASE(1) 
    608             ! depth of T points: 
     606         CASE(1)            ! depth of T points: 
    609607            zdepth(:) = gdept(ji,jj,:,Kmm) 
    610          CASE(2) 
    611             ! depth of U points: we must not use gdept_n as we don't want to do a communication 
    612             !   --> copy what is done for gdept_n in domvvl... 
     608         CASE(2)            ! depth of U points: we must not use gdept_n as we don't want to do a communication 
     609            !                 --> copy what is done for gdept_n in domvvl... 
    613610            zdhalf(1) = 0.0_wp 
    614611            zdepth(1) = 0.5_wp * e3uw(ji,jj,1,Kmm) 
     
    620617               zcoef = ( umask(ji,jj,jk) - wumask(ji,jj,jk) ) 
    621618               zdhalf(jk) = zdhalf(jk-1) + e3u(ji,jj,jk-1,Kmm) 
    622                zdepth(jk) =      zcoef  * ( zdhalf(jk  ) + 0.5 * e3uw(ji,jj,jk,Kmm))  & 
    623                   &         + (1-zcoef) * ( zdepth(jk-1) + e3uw(ji,jj,jk,Kmm)) 
     619               zdepth(jk) =          zcoef  * ( zdhalf(jk  ) + 0.5_wp * e3uw(ji,jj,jk,Kmm))  & 
     620                  &         + (1._wp-zcoef) * ( zdepth(jk-1) +          e3uw(ji,jj,jk,Kmm)) 
    624621            END DO 
    625          CASE(3) 
    626             ! depth of V points: we must not use gdept_n as we don't want to do a communication 
    627             !   --> copy what is done for gdept_n in domvvl... 
     622         CASE(3)            ! depth of V points: we must not use gdept_n as we don't want to do a communication 
     623            !                 --> copy what is done for gdept_n in domvvl... 
    628624            zdhalf(1) = 0.0_wp 
    629625            zdepth(1) = 0.5_wp * e3vw(ji,jj,1,Kmm) 
     
    635631               zcoef = ( vmask(ji,jj,jk) - wvmask(ji,jj,jk) ) 
    636632               zdhalf(jk) = zdhalf(jk-1) + e3v(ji,jj,jk-1,Kmm) 
    637                zdepth(jk) =      zcoef  * ( zdhalf(jk  ) + 0.5 * e3vw(ji,jj,jk,Kmm))  & 
    638                   &         + (1-zcoef) * ( zdepth(jk-1) + e3vw(ji,jj,jk,Kmm)) 
     633               zdepth(jk) =          zcoef  * ( zdhalf(jk  ) + 0.5_wp * e3vw(ji,jj,jk,Kmm))  & 
     634                  &         + (1._wp-zcoef) * ( zdepth(jk-1) +          e3vw(ji,jj,jk,Kmm)) 
    639635            END DO 
    640636         END SELECT 
    641          ! 
    642          DO jk = 1, jpk                       
    643             IF(     zdepth(jk) < pdta_read_z(jb,1,          1) ) THEN                ! above the first level of external data 
    644                pdta(jb,1,jk) =  pdta_read(jb,1,1) 
    645             ELSEIF( zdepth(jk) > pdta_read_z(jb,1,ipkb) ) THEN                       ! below the last level of external data  
    646                pdta(jb,1,jk) =  pdta_read(jb,1,MAXLOC(pdta_read_z(jb,1,:),1)) 
    647             ELSE                                                             ! inbetween: vertical interpolation between jkb & jkb+1 
    648                DO jkb = 1, ipkb-1                                            ! when  gdept_n(jkb) < zdepth(jk) < gdept_n(jkb+1) 
    649                   IF( ( ( zdepth(jk) - pdta_read_z(jb,1,jkb) ) * ( zdepth(jk) - pdta_read_z(jb,1,jkb+1) ) <= 0._wp ) & 
    650                      &    .AND. ( pdta_read_z(jb,1,jkb+1) /= zfv_alt) ) THEN  ! linear interpolation between 2 levels 
     637         !          
     638         ! --- interpolate bdy data on the model grid --- ! 
     639         DO jk = 1, jpk 
     640            IF(     zdepth(jk) <= pdta_read_z(jb,1,1)      ) THEN   ! above the first level of external data 
     641               pdta(jb,1,jk) = pdta_read(jb,1,1) 
     642            ELSEIF( zdepth(jk) >  pdta_read_z(jb,1,ipkmax) ) THEN   ! below the last level of external data /= FillValue 
     643               pdta(jb,1,jk) = pdta_read(jb,1,ipkmax) 
     644            ELSE                                                    ! inbetween: vertical interpolation between jkb & jkb+1 
     645               DO jkb = 1, ipkmax-1 
     646                  IF( ( ( zdepth(jk) - pdta_read_z(jb,1,jkb) ) * ( zdepth(jk) - pdta_read_z(jb,1,jkb+1) ) ) <= 0._wp ) THEN ! linear interpolation between 2 levels 
    651647                     zi = ( zdepth(jk) - pdta_read_z(jb,1,jkb) ) / ( pdta_read_z(jb,1,jkb+1) - pdta_read_z(jb,1,jkb) ) 
    652                      pdta(jb,1,jk) = pdta_read(jb,1,jkb) + ( pdta_read  (jb,1,jkb+1) - pdta_read  (jb,1,jkb) ) * zi 
     648                     pdta(jb,1,jk) = pdta_read(jb,1,jkb) + zi * ( pdta_read(jb,1,jkb+1) - pdta_read(jb,1,jkb) ) 
    653649                  ENDIF 
    654650               END DO 
     
    657653         ! 
    658654      END DO   ! ipi 
    659        
    660       IF(kgrd == 2) THEN                                  ! do we need to adjust the transport term? 
     655 
     656      ! --- mask data and adjust transport --- ! 
     657      SELECT CASE( kgrd )                          
     658 
     659      CASE(1)                                 ! mask data (probably unecessary) 
    661660         DO jb = 1, ipi 
    662661            ji = idx_bdy(kbdy)%nbi(jb,kgrd) 
    663662            jj = idx_bdy(kbdy)%nbj(jb,kgrd) 
    664             zh  = SUM(pdta_read_dz(jb,1,:) ) 
     663            DO jk = 1, jpk                       
     664               pdta(jb,1,jk) = pdta(jb,1,jk) * tmask(ji,jj,jk) 
     665            END DO 
     666         END DO 
     667          
     668      CASE(2)                                 ! adjust the U-transport term 
     669         DO jb = 1, ipi 
     670            ji = idx_bdy(kbdy)%nbi(jb,kgrd) 
     671            jj = idx_bdy(kbdy)%nbj(jb,kgrd) 
    665672            ztrans = 0._wp 
     673            DO jkb = 1, ipkb                              ! calculate transport on input grid 
     674               IF( pdta_read(jb,1,jkb) /= pfv )   ztrans = ztrans + pdta_read(jb,1,jkb) * pdta_read_dz(jb,1,jkb) 
     675            ENDDO 
    666676            ztrans_new = 0._wp 
    667             DO jkb = 1, ipkb                              ! calculate transport on input grid 
    668                ztrans     = ztrans     + pdta_read(jb,1,jkb) * pdta_read_dz(jb, 1,jkb) 
    669             ENDDO 
    670677            DO jk = 1, jpk                                ! calculate transport on model grid 
    671678               ztrans_new = ztrans_new +      pdta(jb,1,jk ) * e3u(ji,jj,jk,Kmm ) * umask(ji,jj,jk) 
     
    674681               IF(ldtotvel) THEN ! bdy data are total velocity so adjust bt transport term to match input data 
    675682                  pdta(jb,1,jk) = ( pdta(jb,1,jk) + ( ztrans - ztrans_new ) * r1_hu(ji,jj,Kmm) ) * umask(ji,jj,jk) 
    676                ELSE ! we're just dealing with bc velocity so bt transport term should sum to zero 
     683               ELSE              ! we're just dealing with bc velocity so bt transport term should sum to zero 
    677684                  pdta(jb,1,jk) =   pdta(jb,1,jk) + (  0._wp - ztrans_new ) * r1_hu(ji,jj,Kmm)   * umask(ji,jj,jk) 
    678685               ENDIF 
    679686            ENDDO 
    680687         ENDDO 
    681       ENDIF 
    682        
    683       IF(kgrd == 3) THEN                                  ! do we need to adjust the transport term? 
     688 
     689      CASE(3)                                 ! adjust the V-transport term 
    684690         DO jb = 1, ipi 
    685691            ji = idx_bdy(kbdy)%nbi(jb,kgrd) 
    686692            jj = idx_bdy(kbdy)%nbj(jb,kgrd) 
    687             zh  = SUM(pdta_read_dz(jb,1,:) ) 
    688693            ztrans = 0._wp 
     694            DO jkb = 1, ipkb                              ! calculate transport on input grid 
     695               IF( pdta_read(jb,1,jkb) /= pfv )   ztrans = ztrans + pdta_read(jb,1,jkb) * pdta_read_dz(jb,1,jkb) 
     696            ENDDO 
    689697            ztrans_new = 0._wp 
    690             DO jkb = 1, ipkb                              ! calculate transport on input grid 
    691                ztrans     = ztrans     + pdta_read(jb,1,jkb) * pdta_read_dz(jb, 1,jkb) 
    692             ENDDO 
    693698            DO jk = 1, jpk                                ! calculate transport on model grid 
    694                ztrans_new = ztrans_new +      pdta(jb,1,jk ) *        e3v(ji,jj,jk,Kmm ) * vmask(ji,jj,jk) 
     699               ztrans_new = ztrans_new +      pdta(jb,1,jk ) * e3v(ji,jj,jk,Kmm ) * vmask(ji,jj,jk) 
    695700            ENDDO 
    696701            DO jk = 1, jpk                                ! make transport correction 
    697702               IF(ldtotvel) THEN ! bdy data are total velocity so adjust bt transport term to match input data 
    698703                  pdta(jb,1,jk) = ( pdta(jb,1,jk) + ( ztrans - ztrans_new ) * r1_hv(ji,jj,Kmm) ) * vmask(ji,jj,jk) 
    699                ELSE ! we're just dealing with bc velocity so bt transport term should sum to zero 
     704               ELSE              ! we're just dealing with bc velocity so bt transport term should sum to zero 
    700705                  pdta(jb,1,jk) =   pdta(jb,1,jk) + (  0._wp - ztrans_new ) * r1_hv(ji,jj,Kmm)   * vmask(ji,jj,jk) 
    701706               ENDIF 
    702707            ENDDO 
    703708         ENDDO 
    704       ENDIF 
     709      END SELECT 
    705710       
    706711   END SUBROUTINE fld_bdy_interp 
  • NEMO/branches/2019/dev_r11943_MERGE_2019/src/OCE/TRA/traatf.F90

    r12353 r12372  
    252252      INTEGER  ::   ji, jj, jk, jn              ! dummy loop indices 
    253253      REAL(wp) ::   zfact, zfact1, ztc_a , ztc_n , ztc_b , ztc_f , ztc_d    ! local scalar 
    254       REAL(wp) ::   zfact2, ze3t_b, ze3t_n, ze3t_a, ze3t_f, ze3t_d   !   -      - 
     254      REAL(wp) ::   zfact2, ze3t_b, ze3t_n, ze3t_a, ze3t_f, ze3t_d, zscale  !   -      - 
    255255      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) ::   ztrd_atf 
    256256      !!---------------------------------------------------------------------- 
     
    295295            ztc_f  = ztc_n  + atfp * ztc_d 
    296296            ! 
     297            ! Add asselin correction on scale factors: 
     298            zscale = tmask(ji,jj,jk) * e3t(ji,jj,jk,Kmm) / ( ht(ji,jj) + 1._wp - ssmask(ji,jj) )  
     299            ze3t_f = ze3t_f - zfact2 * zscale * ( emp_b(ji,jj) - emp(ji,jj) )  
     300            IF ( ll_rnf ) ze3t_f = ze3t_f + zfact2 * zscale * (    rnf_b(ji,jj) -    rnf(ji,jj) )  
     301            IF ( ll_isf ) THEN 
     302               IF ( ln_isfcav_mlt ) ze3t_f = ze3t_f - zfact2 * zscale * ( fwfisf_cav_b(ji,jj) - fwfisf_cav(ji,jj) ) 
     303               IF ( ln_isfpar_mlt ) ze3t_f = ze3t_f - zfact2 * zscale * ( fwfisf_par_b(ji,jj) - fwfisf_par(ji,jj) ) 
     304            ENDIF 
     305            ! 
    297306            IF( jk == mikt(ji,jj) ) THEN           ! first level  
    298                ze3t_f = ze3t_f - zfact2 * ( emp_b(ji,jj)    - emp(ji,jj) ) 
    299307               ztc_f  = ztc_f  - zfact1 * ( psbc_tc(ji,jj,jn) - psbc_tc_b(ji,jj,jn) ) 
    300308            ENDIF 
    301             IF( ln_rnf_depth ) THEN 
    302                ! Rivers are not just at the surface must go down to nk_rnf(ji,jj) 
    303                IF( jk <= nk_rnf(ji,jj)  ) THEN 
    304                   ze3t_f = ze3t_f - zfact2 * ( - (rnf_b(ji,jj) - rnf(ji,jj)   )  ) & 
    305               &                            * ( e3t(ji,jj,jk,Kmm) / h_rnf(ji,jj) )  
    306                ENDIF 
    307             ELSE 
    308                IF( jk == 1 ) THEN           ! first level  
    309                   ze3t_f = ze3t_f - zfact2 * ( - (rnf_b(ji,jj)    - rnf(ji,jj)   ) )  
    310                ENDIF 
    311             ENDIF 
    312             ! 
    313309            ! 
    314310            ! solar penetration (temperature only) 
     
    331327                     ztc_f  = ztc_f  - zfact1 * ( risf_cav_tsc(ji,jj,jn) - risf_cav_tsc_b(ji,jj,jn) ) & 
    332328                        &                     * e3t(ji,jj,jk,Kmm) / rhisf_tbl_cav(ji,jj) 
    333                      ze3t_f = ze3t_f - zfact2 * ( fwfisf_cav_b(ji,jj) - fwfisf_cav(ji,jj) )           & 
    334                         &                     * e3t(ji,jj,jk,Kmm) / rhisf_tbl_cav(ji,jj) 
    335329                  END IF 
    336330                  ! level partially include in Losch_2008 ice shelf boundary layer  
     
    338332                     ztc_f  = ztc_f  - zfact1 * ( risf_cav_tsc(ji,jj,jn) - risf_cav_tsc_b(ji,jj,jn) )  & 
    339333                            &                 * e3t(ji,jj,jk,Kmm) / rhisf_tbl_cav(ji,jj) * rfrac_tbl_cav(ji,jj) 
    340                      ze3t_f = ze3t_f - zfact2 * ( fwfisf_cav_b(ji,jj) - fwfisf_cav(ji,jj) )            & 
    341                         &                     * e3t(ji,jj,jk,Kmm) / rhisf_tbl_cav(ji,jj) * rfrac_tbl_cav(ji,jj) 
    342334                  END IF 
    343335               END IF 
     
    349341                     ztc_f  = ztc_f  - zfact1 * ( risf_par_tsc(ji,jj,jn) - risf_par_tsc_b(ji,jj,jn) )  & 
    350342                            &                 * e3t(ji,jj,jk,Kmm) / rhisf_tbl_par(ji,jj) 
    351                      ze3t_f = ze3t_f - zfact2 * ( fwfisf_par_b(ji,jj) - fwfisf_par(ji,jj) )            & 
    352                         &                     * e3t(ji,jj,jk,Kmm) / rhisf_tbl_par(ji,jj) 
    353343                  END IF 
    354344                  ! level partially include in Losch_2008 ice shelf boundary layer  
     
    356346                     ztc_f  = ztc_f  - zfact1 * ( risf_par_tsc(ji,jj,jn) - risf_par_tsc_b(ji,jj,jn) )  & 
    357347                            &                 * e3t(ji,jj,jk,Kmm) / rhisf_tbl_par(ji,jj) * rfrac_tbl_par(ji,jj) 
    358                      ze3t_f = ze3t_f - zfact2 * ( fwfisf_par_b(ji,jj) - fwfisf_par(ji,jj) )            & 
    359                         &                     * e3t(ji,jj,jk,Kmm) / rhisf_tbl_par(ji,jj) * rfrac_tbl_par(ji,jj) 
    360348                  END IF 
    361349               END IF 
     
    367355                  IF ( ln_rstart .AND. kt == nit000+1 ) THEN 
    368356                     ztc_f  = ztc_f  + zfact1 * risfcpl_tsc(ji,jj,jk,jn) * r1_e1e2t(ji,jj) 
     357                     ! Shouldn't volume increment be spread according thanks to zscale  ? 
    369358                     ze3t_f = ze3t_f - zfact1 * risfcpl_vol(ji,jj,jk   ) * r1_e1e2t(ji,jj) 
    370359                  END IF 
  • NEMO/branches/2019/dev_r11943_MERGE_2019/src/TOP/PISCES/P4Z/p4zprod.F90

    r12340 r12372  
    323323       CALL iom_put( "LDlight" , zprdia (:,:,:) / (zprmaxd(:,:,:) + rtrn) * tmask(:,:,:)   ) 
    324324       CALL iom_put( "TPP"     , ( zprorcan(:,:,:) + zprorcad(:,:,:) ) * zfact * tmask(:,:,:)  )  ! total primary production 
    325        CALL iom_put( "TPNEW"   , ( zprorcan(:,:,:) + zprorcad(:,:,:) ) * zfact * tmask(:,:,:)  ) ! total new production 
     325       CALL iom_put( "TPNEW"   , ( zpronewn(:,:,:) + zpronewd(:,:,:) ) * zfact * tmask(:,:,:)  ) ! total new production 
    326326       CALL iom_put( "TPBFE"   , ( zprofen(:,:,:) + zprofed(:,:,:) ) * zfact * tmask(:,:,:)  )  ! total biogenic iron production 
    327327       CALL iom_put( "tintpp"  , tpp * zfact )  !  global total integrated primary production molC/s 
Note: See TracChangeset for help on using the changeset viewer.