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 2005 for branches/DEV_r1837_MLF/NEMO/OPA_SRC/DYN/sshwzv.F90 – NEMO

Ignore:
Timestamp:
2010-07-09T15:07:02+02:00 (14 years ago)
Author:
mlelod
Message:

ticket: #663 MLF: second part (local compatibility essentially)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/DEV_r1837_MLF/NEMO/OPA_SRC/DYN/sshwzv.F90

    r1975 r2005  
    189189         CALL lbc_lnk( sshu_a, 'U', 1. ) 
    190190         CALL lbc_lnk( sshv_a, 'V', 1. ) 
    191          DO jj = 1, jpjm1 
    192             DO ji = 1, jpim1      ! NO Vector Opt. 
    193                sshf_a(ji,jj) = 0.5  * umask(ji,jj,1) * umask(ji,jj+1,1)                   & 
    194                     &               / ( e1f(ji,jj  ) * e2f(ji,jj  ) )                     & 
    195                     &               * ( e1u(ji,jj  ) * e2u(ji,jj  ) * sshu_a(ji,jj  )     & 
    196                     &                 + e1u(ji,jj+1) * e2u(ji,jj+1) * sshu_a(ji,jj+1) ) 
    197             END DO 
    198          END DO 
    199          ! Boundaries conditions 
    200          CALL lbc_lnk( sshf_a, 'F', 1. ) 
    201       ENDIF 
    202  
     191      ENDIF 
     192      !                                           !----------------------------------------! 
     193      !                                           !     vertical scale factor laplacian    ! 
     194      !                                           !----------------------------------------! 
     195      ! Needed for Robert-Asselin time filter and for Brown & Campana semi implicit hydrostatic presure gradient 
     196      fse3t_m(:,:,:) =          fse3t_b(:,:,:)   & 
     197         &             - 2.e0 * fse3t_n(:,:,:)   & 
     198         &             +        fse3t_a(:,:,:) 
    203199      !                                           !------------------------------! 
    204200      !                                           !     Now Vertical Velocity    ! 
     
    219215      CALL iom_put( "ssh2", sshn(:,:) * sshn(:,:) )   ! square of sea surface height 
    220216      IF( lk_diaar5 ) THEN                            ! vertical mass transport & its square value 
     217         ! Caution: in the VVL case, it only correponds to the baroclinic mass transport. 
    221218         z2d(:,:) = rau0 * e1t(:,:) * e2t(:,:) 
    222219         DO jk = 1, jpk 
     
    264261 
    265262      !                       !--------------------------! 
    266       IF( lk_vvl ) THEN       !  Variable volume levels  !   ssh at t-, u-, v, f-points 
     263      IF( lk_vvl ) THEN       !  Variable volume levels  ! 
    267264         !                    !--------------------------! 
     265         ! 
     266         ! ssh at t-, u-, v, f-points 
     267         !=========================== 
    268268         IF( neuler == 0 .AND. kt == nit000 ) THEN      ! Euler time-stepping at first time-step : no filter 
    269269            sshn  (:,:) = ssha  (:,:)                        ! now <-- after  (before already = now) 
    270270            sshu_n(:,:) = sshu_a(:,:) 
    271271            sshv_n(:,:) = sshv_a(:,:) 
    272             sshf_n(:,:) = sshf_a(:,:) 
     272            DO jj = 1, jpjm1 
     273               DO ji = 1, jpim1      ! NO Vector Opt. 
     274                  sshf_n(ji,jj) = 0.5  * umask(ji,jj,1) * umask(ji,jj+1,1)                   & 
     275                     &               / ( e1f(ji,jj  ) * e2f(ji,jj  ) )                     & 
     276                     &               * ( e1u(ji,jj  ) * e2u(ji,jj  ) * sshu_n(ji,jj  )     & 
     277                     &                 + e1u(ji,jj+1) * e2u(ji,jj+1) * sshu_n(ji,jj+1) ) 
     278               END DO 
     279            END DO 
     280            ! Boundaries conditions 
     281            CALL lbc_lnk( sshf_n, 'F', 1. ) 
    273282         ELSE                                           ! Leap-Frog time-stepping: Asselin filter + swap 
    274             zec = atfp * rdt / rau0 
    275283            DO jj = 1, jpj 
    276284               DO ji = 1, jpi                                ! before <-- now filtered 
     
    280288                  sshu_n(ji,jj) = sshu_a(ji,jj) 
    281289                  sshv_n(ji,jj) = sshv_a(ji,jj) 
    282                   sshf_n(ji,jj) = sshf_a(ji,jj) 
    283                END DO 
    284             END DO 
     290               END DO 
     291            END DO 
     292            DO jj = 1, jpjm1 
     293               DO ji = 1, jpim1      ! NO Vector Opt. 
     294                  sshf_n(ji,jj) = 0.5  * umask(ji,jj,1) * umask(ji,jj+1,1)                 & 
     295                     &               / ( e1f(ji,jj  ) * e2f(ji,jj  ) )                     & 
     296                     &               * ( e1u(ji,jj  ) * e2u(ji,jj  ) * sshu_n(ji,jj  )     & 
     297                     &                 + e1u(ji,jj+1) * e2u(ji,jj+1) * sshu_n(ji,jj+1) ) 
     298               END DO 
     299            END DO 
     300            ! Boundaries conditions 
     301            CALL lbc_lnk( sshf_n, 'F', 1. ) 
    285302            DO jj = 1, jpjm1 
    286303               DO ji = 1, jpim1      ! NO Vector Opt. 
     
    296313            CALL lbc_lnk( sshu_b, 'U', 1. ) 
    297314            CALL lbc_lnk( sshv_b, 'V', 1. ) 
    298             DO jj = 1, jpjm1 
    299                DO ji = 1, jpim1      ! NO Vector Opt. 
    300                   sshf_b(ji,jj) = 0.5  * umask(ji,jj,1) * umask(ji,jj+1,1)                   & 
    301                      &                 / ( e1f(ji,jj  ) * e2f(ji,jj  ) )                     & 
    302                      &                 * ( e1u(ji,jj  ) * e2u(ji,jj  ) * sshu_b(ji,jj  )     & 
    303                      &                   + e1u(ji,jj+1) * e2u(ji,jj+1) * sshu_b(ji,jj+1) ) 
    304                END DO 
    305             END DO 
    306             ! Boundaries conditions 
    307             CALL lbc_lnk( sshf_b, 'F', 1. ) 
    308315         ENDIF 
    309316         !                    !--------------------------! 
    310       ELSE                    !        fixed levels      !   ssh at t-point only 
     317      ELSE                    !        fixed levels      ! 
    311318         !                    !--------------------------! 
     319         ! 
     320         ! ssh at t-point only 
     321         !==================== 
    312322         IF( neuler == 0 .AND. kt == nit000 ) THEN      ! Euler time-stepping at first time-step : no filter 
    313323            sshn(:,:) = ssha(:,:)                            ! now <-- after  (before already = now) 
Note: See TracChangeset for help on using the changeset viewer.