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

Changeset 12279


Ignore:
Timestamp:
2019-12-20T14:36:15+01:00 (4 years ago)
Author:
jchanut
Message:

#2317, changes for LFRA freshwater correction

Location:
NEMO/trunk/src/OCE
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/src/OCE/DYN/dynnxt.F90

    r12026 r12279  
    225225            zcoef = atfp * rdt * r1_rau0 
    226226 
    227             e3t_b(:,:,1) = e3t_b(:,:,1) - zcoef * ( emp_b(:,:) - emp(:,:) ) * tmask(:,:,1) 
     227            DO jk = 1, jpkm1 
     228               e3t_b(:,:,jk) = e3t_b(:,:,jk) - zcoef * ( emp_b(:,:) - emp(:,:) ) * tmask(:,:,jk) &  
     229                             &                       * e3t_n(:,:,jk) /  ( ht_n(:,:) + 1._wp - ssmask(:,:) ) 
     230            END DO 
    228231 
    229232            IF ( ln_rnf ) THEN 
    230                IF( ln_rnf_depth ) THEN 
    231                   DO jk = 1, jpkm1 ! Deal with Rivers separetely, as can be through depth too 
    232                      DO jj = 1, jpj 
    233                         DO ji = 1, jpi 
    234                            IF( jk <=  nk_rnf(ji,jj)  ) THEN 
    235                                e3t_b(ji,jj,jk) =   e3t_b(ji,jj,jk) - zcoef *  ( - rnf_b(ji,jj) + rnf(ji,jj) ) & 
    236                                       &          * ( e3t_n(ji,jj,jk) / h_rnf(ji,jj) ) * tmask(ji,jj,jk) 
    237                            ENDIF 
    238                         ENDDO 
    239                      ENDDO 
    240                   ENDDO 
    241                ELSE 
    242                   e3t_b(:,:,1) = e3t_b(:,:,1) - zcoef *  ( -rnf_b(:,:) + rnf(:,:))*tmask(:,:,1) 
    243                ENDIF 
    244             END IF 
    245  
    246             IF ( ln_isf ) THEN   ! if ice shelf melting 
    247                DO jk = 1, jpkm1 ! Deal with isf separetely, as can be through depth too 
    248                   DO jj = 1, jpj 
    249                      DO ji = 1, jpi 
    250                         IF( misfkt(ji,jj) <=jk .and. jk < misfkb(ji,jj)  ) THEN 
    251                            e3t_b(ji,jj,jk) = e3t_b(ji,jj,jk) - zcoef * ( fwfisf_b(ji,jj) - fwfisf(ji,jj) ) & 
    252                                 &          * ( e3t_n(ji,jj,jk) * r1_hisf_tbl(ji,jj) ) * tmask(ji,jj,jk) 
    253                         ELSEIF ( jk==misfkb(ji,jj) ) THEN 
    254                            e3t_b(ji,jj,jk) = e3t_b(ji,jj,jk) - zcoef * ( fwfisf_b(ji,jj) - fwfisf(ji,jj) ) & 
    255                                 &          * ( e3t_n(ji,jj,jk) * r1_hisf_tbl(ji,jj) ) * ralpha(ji,jj) * tmask(ji,jj,jk) 
    256                         ENDIF 
    257                      END DO 
    258                   END DO 
    259                END DO 
    260             END IF 
     233               DO jk = 1, jpkm1 
     234                  e3t_b(:,:,jk) = e3t_b(:,:,jk) - zcoef * ( rnf_b(:,:) - rnf(:,:) ) * tmask(:,:,jk) &  
     235                                &                       * e3t_n(:,:,jk) /  ( ht_n(:,:) + 1._wp - ssmask(:,:) ) 
     236               END DO 
     237            ENDIF 
     238 
     239            IF ( ln_isf ) THEN 
     240               DO jk = 1, jpkm1 
     241                  e3t_b(:,:,jk) = e3t_b(:,:,jk) - zcoef * ( fwfisf_b(:,:) - fwfisf(:,:) ) * tmask(:,:,jk) &  
     242                                &                       * e3t_n(:,:,jk) /  ( ht_n(:,:) + 1._wp - ssmask(:,:) ) 
     243               END DO 
     244            ENDIF 
    261245            ! 
    262246            IF( ln_dynadv_vec ) THEN      ! Asselin filter applied on velocity 
  • NEMO/trunk/src/OCE/TRA/tranxt.F90

    r10425 r12279  
    267267      INTEGER  ::   ji, jj, jk, jn              ! dummy loop indices 
    268268      REAL(wp) ::   zfact, zfact1, ztc_a , ztc_n , ztc_b , ztc_f , ztc_d    ! local scalar 
    269       REAL(wp) ::   zfact2, ze3t_b, ze3t_n, ze3t_a, ze3t_f, ze3t_d   !   -      - 
     269      REAL(wp) ::   zfact2, ze3t_b, ze3t_n, ze3t_a, ze3t_f, ze3t_d, zscale  !   -      - 
    270270      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) ::   ztrd_atf 
    271271      !!---------------------------------------------------------------------- 
     
    312312                  ztc_f  = ztc_n  + atfp * ztc_d 
    313313                  ! 
     314                  zscale = zfact2 * e3t_n(ji,jj,jk) / ( ht_n(ji,jj) + 1._wp - ssmask(ji,jj) ) 
     315                  ze3t_f = ze3t_f - zscale * ( emp_b(ji,jj) - emp(ji,jj) ) 
     316                  IF ( ll_rnf ) ze3t_f = ze3t_f - zscale * (    rnf_b(ji,jj) -    rnf(ji,jj) ) 
     317                  IF ( ll_isf ) ze3t_f = ze3t_f - zscale * ( fwfisf_b(ji,jj) - fwfisf(ji,jj) ) 
     318 
    314319                  IF( jk == mikt(ji,jj) ) THEN           ! first level  
    315                      ze3t_f = ze3t_f - zfact2 * ( (emp_b(ji,jj)    - emp(ji,jj)   )  & 
    316                             &                   + (fwfisf_b(ji,jj) - fwfisf(ji,jj))  ) 
    317320                     ztc_f  = ztc_f  - zfact1 * ( psbc_tc(ji,jj,jn) - psbc_tc_b(ji,jj,jn) ) 
    318321                  ENDIF 
    319                   IF( ln_rnf_depth ) THEN 
    320                      ! Rivers are not just at the surface must go down to nk_rnf(ji,jj) 
    321                      IF( mikt(ji,jj) <=jk .and. jk <= nk_rnf(ji,jj)  ) THEN 
    322                         ze3t_f = ze3t_f - zfact2 * ( - (rnf_b(ji,jj) - rnf(ji,jj)   )  ) & 
    323                     &                            * ( e3t_n(ji,jj,jk) / h_rnf(ji,jj) )  
    324                      ENDIF 
    325                   ELSE 
    326                      IF( jk == mikt(ji,jj) ) THEN           ! first level  
    327                         ze3t_f = ze3t_f - zfact2 * ( - (rnf_b(ji,jj)    - rnf(ji,jj)   ) )  
    328                      ENDIF 
    329                   ENDIF 
    330  
    331322                  ! 
    332323                  ! solar penetration (temperature only) 
Note: See TracChangeset for help on using the changeset viewer.