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 3865 for branches/2013/dev_r3858_NOC_ZTC/NEMOGCM/NEMO/OPA_SRC/DYN/dynnxt.F90 – NEMO

Ignore:
Timestamp:
2013-04-09T18:34:38+02:00 (11 years ago)
Author:
acc
Message:

Branch 2013/dev_r3858_NOC_ZTC, #863. Nearly complete port of 2011/dev_r2739_LOCEAN8_ZTC development branch into v3.5aplha base. Compiles and runs but currently unstable after 8 timesteps with ORCA2_LIM reference configuration.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2013/dev_r3858_NOC_ZTC/NEMOGCM/NEMO/OPA_SRC/DYN/dynnxt.F90

    r3764 r3865  
    201201               DO jj = 1, jpj 
    202202                  DO ji = 1, jpi     
    203                      zuf = un(ji,jj,jk) + atfp * ( ub(ji,jj,jk) - 2.e0 * un(ji,jj,jk) + ua(ji,jj,jk) ) 
    204                      zvf = vn(ji,jj,jk) + atfp * ( vb(ji,jj,jk) - 2.e0 * vn(ji,jj,jk) + va(ji,jj,jk) ) 
     203                     zuf = un(ji,jj,jk) + atfp * ( ub(ji,jj,jk) - 2.e0_wp * un(ji,jj,jk) + ua(ji,jj,jk) ) 
     204                     zvf = vn(ji,jj,jk) + atfp * ( vb(ji,jj,jk) - 2.e0_wp * vn(ji,jj,jk) + va(ji,jj,jk) ) 
    205205                     ! 
    206206                     ub(ji,jj,jk) = zuf                      ! ub <-- filtered velocity 
     
    214214         ELSE                             ! Variable volume ! 
    215215            !                             ! ================! 
     216            ! Before scale factor at t-points 
     217            ! (used as a now filtered scale factor until the swap) 
     218            ! ---------------------------------------------------- 
     219            fse3t_b(:,:,:) = fse3t_n(:,:,:) + atfp * ( fse3t_b(:,:,:) - 2._wp * fse3t_n(:,:,:) + fse3t_a(:,:,:) ) 
     220            ! Add volume filter correction: compatibility with tracer advection scheme 
     221            ! => time filter + conservation correction (only at the first level) 
     222            fse3t_b(:,:,1) = fse3t_b(:,:,1) - atfp * rdt * r1_rau0 * ( emp_b(:,:) - emp(:,:) ) * tmask(:,:,1) 
    216223            ! 
    217             DO jk = 1, jpkm1                 ! Before scale factor at t-points 
    218                fse3t_b(:,:,jk) = fse3t_n(:,:,jk)                                   & 
    219                   &              + atfp * (  fse3t_b(:,:,jk) + fse3t_a(:,:,jk)     & 
    220                   &                         - 2._wp * fse3t_n(:,:,jk)            ) 
    221             END DO 
    222             zec = atfp * rdt / rau0          ! Add filter correction only at the 1st level of t-point scale factors 
    223             fse3t_b(:,:,1) = fse3t_b(:,:,1) - zec * ( emp_b(:,:) - emp(:,:) ) * tmask(:,:,1) 
    224             ! 
    225             IF( ln_dynadv_vec ) THEN         ! vector invariant form (no thickness weighted calulation) 
    226                ! 
    227                !                                      ! before scale factors at u- & v-pts (computed from fse3t_b) 
    228                CALL dom_vvl_2( kt, fse3u_b(:,:,:), fse3v_b(:,:,:) ) 
    229                ! 
    230                DO jk = 1, jpkm1                       ! Leap-Frog - Asselin filter and swap: applied on velocity 
    231                   DO jj = 1, jpj                      !                                                 -------- 
     224            IF( ln_dynadv_vec ) THEN 
     225               ! Before scale factor at (u/v)-points 
     226               ! ----------------------------------- 
     227               CALL dom_vvl_interpol( fse3t_b(:,:,:), fse3u_b(:,:,:), 'U' ) 
     228               CALL dom_vvl_interpol( fse3t_b(:,:,:), fse3v_b(:,:,:), 'V' ) 
     229               ! Leap-Frog - Asselin filter and swap: applied on velocity 
     230               ! ----------------------------------- 
     231               DO jk = 1, jpkm1 
     232                  DO jj = 1, jpj 
    232233                     DO ji = 1, jpi 
    233                         zuf = un(ji,jj,jk) + atfp * ( ub(ji,jj,jk) - 2.e0 * un(ji,jj,jk) + ua(ji,jj,jk) ) 
    234                         zvf = vn(ji,jj,jk) + atfp * ( vb(ji,jj,jk) - 2.e0 * vn(ji,jj,jk) + va(ji,jj,jk) ) 
     234                        zuf = un(ji,jj,jk) + atfp * ( ub(ji,jj,jk) - 2._wp * un(ji,jj,jk) + ua(ji,jj,jk) ) 
     235                        zvf = vn(ji,jj,jk) + atfp * ( vb(ji,jj,jk) - 2._wp * vn(ji,jj,jk) + va(ji,jj,jk) ) 
    235236                        ! 
    236237                        ub(ji,jj,jk) = zuf                      ! ub <-- filtered velocity 
     
    242243               END DO 
    243244               ! 
    244             ELSE                             ! flux form (thickness weighted calulation) 
    245                ! 
    246                CALL dom_vvl_2( kt, ze3u_f, ze3v_f )   ! before scale factors at u- & v-pts (computed from fse3t_b) 
    247                ! 
    248                DO jk = 1, jpkm1                       ! Leap-Frog - Asselin filter and swap:  
    249                   DO jj = 1, jpj                      !                   applied on thickness weighted velocity 
     245            ELSE 
     246               ! Temporary filtered scale factor at (u/v)-points (will become before scale factor) 
     247               !------------------------------------------------ 
     248               CALL dom_vvl_interpol( fse3t_b(:,:,:), ze3u_f, 'U' ) 
     249               CALL dom_vvl_interpol( fse3t_b(:,:,:), ze3v_f, 'V' ) 
     250               ! Leap-Frog - Asselin filter and swap: applied on thickness weighted velocity 
     251               ! -----------------------------------             =========================== 
     252               DO jk = 1, jpkm1 
     253                  DO jj = 1, jpj 
    250254                     DO ji = 1, jpi                   !                              --------------------------- 
    251255                        zue3a = ua(ji,jj,jk) * fse3u_a(ji,jj,jk) 
Note: See TracChangeset for help on using the changeset viewer.