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 8805 for branches/2017/dev_r8624_ENHANCE4_FREESURFACE/NEMOGCM/NEMO/OPA_SRC/DYN/dynnxt.F90 – NEMO

Ignore:
Timestamp:
2017-11-24T12:28:45+01:00 (6 years ago)
Author:
jchanut
Message:

Enhance4-freesurface. step 1: recover tracer conservation with split explicit free surface - #1959

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_r8624_ENHANCE4_FREESURFACE/NEMOGCM/NEMO/OPA_SRC/DYN/dynnxt.F90

    r7753 r8805  
    209209            ! (used as a now filtered scale factor until the swap) 
    210210            ! ---------------------------------------------------- 
    211             IF( ln_dynspg_ts .AND. ln_bt_fw ) THEN    ! No asselin filtering on thicknesses if forward time splitting 
    212                e3t_b(:,:,1:jpkm1) = e3t_n(:,:,1:jpkm1) 
    213             ELSE 
    214                DO jk = 1, jpkm1 
    215                   e3t_b(:,:,jk) = e3t_n(:,:,jk) + atfp * ( e3t_b(:,:,jk) - 2._wp * e3t_n(:,:,jk) + e3t_a(:,:,jk) ) 
     211            DO jk = 1, jpkm1 
     212               e3t_b(:,:,jk) = e3t_n(:,:,jk) + atfp * ( e3t_b(:,:,jk) - 2._wp * e3t_n(:,:,jk) + e3t_a(:,:,jk) ) 
     213            END DO 
     214            ! Add volume filter correction: compatibility with tracer advection scheme 
     215            ! => time filter + conservation correction (only at the first level) 
     216            zcoef = atfp * rdt * r1_rau0 
     217            IF ( .NOT. ln_isf ) THEN   ! if no ice shelf melting 
     218               e3t_b(:,:,1) = e3t_b(:,:,1) - zcoef * ( emp_b(:,:) - emp(:,:) & 
     219                              &                      - rnf_b(:,:) + rnf(:,:) ) * tmask(:,:,1) 
     220            ELSE                     ! if ice shelf melting 
     221               DO jj = 1, jpj 
     222                  DO ji = 1, jpi 
     223                     ikt = mikt(ji,jj) 
     224                     e3t_b(ji,jj,ikt) = e3t_b(ji,jj,ikt) - zcoef * (  emp_b   (ji,jj) - emp   (ji,jj)  & 
     225                        &                                           - rnf_b   (ji,jj) + rnf   (ji,jj)  & 
     226                        &                                           + fwfisf_b(ji,jj) - fwfisf(ji,jj)  ) * tmask(ji,jj,ikt) 
     227                  END DO 
    216228               END DO 
    217                ! Add volume filter correction: compatibility with tracer advection scheme 
    218                ! => time filter + conservation correction (only at the first level) 
    219                zcoef = atfp * rdt * r1_rau0 
    220                IF ( .NOT. ln_isf ) THEN   ! if no ice shelf melting 
    221                   e3t_b(:,:,1) = e3t_b(:,:,1) - zcoef * ( emp_b(:,:) - emp(:,:) & 
    222                                  &                      - rnf_b(:,:) + rnf(:,:) ) * tmask(:,:,1) 
    223                ELSE                     ! if ice shelf melting 
    224                   DO jj = 1, jpj 
    225                      DO ji = 1, jpi 
    226                         ikt = mikt(ji,jj) 
    227                         e3t_b(ji,jj,ikt) = e3t_b(ji,jj,ikt) - zcoef * (  emp_b   (ji,jj) - emp   (ji,jj)  & 
    228                            &                                           - rnf_b   (ji,jj) + rnf   (ji,jj)  & 
    229                            &                                           + fwfisf_b(ji,jj) - fwfisf(ji,jj)  ) * tmask(ji,jj,ikt) 
    230                      END DO 
    231                   END DO 
    232                END IF 
    233             ENDIF 
     229            END IF 
    234230            ! 
    235231            IF( ln_dynadv_vec ) THEN      ! Asselin filter applied on velocity 
Note: See TracChangeset for help on using the changeset viewer.