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 1565 for trunk/NEMO/OPA_SRC/DYN/sshwzv.F90 – NEMO

Ignore:
Timestamp:
2009-07-31T16:01:08+02:00 (15 years ago)
Author:
rblod
Message:

Use appropiate e3 for divergence computation and for sea-ice, see ticket #507

File:
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OPA_SRC/DYN/sshwzv.F90

    r1564 r1565  
    1 MODULE wzvmod 
    2 !! MODULE sshwzv    
     1MODULE sshwzv    
    32   !!============================================================================== 
    43   !!                       ***  MODULE  sshwzv  *** 
     
    1716   USE sbc_oce         ! surface boundary condition: ocean 
    1817   USE domvvl          ! Variable volume 
     18   USE divcur          ! hor. divergence and curl      (div & cur routines) 
     19   USE cla_div         ! cross land: hor. divergence      (div_cla routine) 
    1920   USE iom             ! I/O library 
    2021   USE restart         ! only for lrst_oce 
     
    109110      ENDIF 
    110111 
    111       ! set time step size (Euler/Leapfrog) 
    112       z2dt = 2. * rdt  
    113       IF( neuler == 0 .AND. kt == nit000 ) z2dt =rdt 
    114  
    115       zraur = 1. / rauw 
    116  
    117       !                                           !------------------------------! 
    118       !                                           !   After Sea Surface Height   ! 
    119       !                                           !------------------------------! 
    120       zhdiv(:,:) = 0.e0 
    121       DO jk = 1, jpkm1                                 ! Horizontal divergence of barotropic transports 
    122         zhdiv(:,:) = zhdiv(:,:) + fse3t(:,:,jk) * hdivn(:,:,jk) 
    123       END DO 
    124  
    125       !                                                ! Sea surface elevation time stepping 
    126       ssha(:,:) = (  sshb(:,:) - z2dt * ( zraur * emp(:,:) + zhdiv(:,:) )  ) * tmask(:,:,1) 
    127  
    128 #if defined key_obc 
    129 # if defined key_agrif 
    130       IF ( Agrif_Root() ) THEN  
    131 # endif 
    132          ssha(:,:) = ssha(:,:) * obctmsk(:,:) 
    133          CALL lbc_lnk( ssha, 'T', 1. )  ! absolutly compulsory !! (jmm) 
    134 # if defined key_agrif 
    135       ENDIF 
    136 # endif 
    137 #endif 
    138  
    139       !                                                ! Sea Surface Height at u-,v- and f-points (vvl case only) 
    140       IF( lk_vvl ) THEN                                ! (required only in key_vvl case) 
    141          DO jj = 1, jpjm1 
    142             DO ji = 1, fs_jpim1   ! Vector Opt. 
    143                sshu_a(ji,jj) = 0.5  * umask(ji,jj,1) / ( e1u(ji  ,jj) * e2u(ji  ,jj) )                   & 
    144                   &                                  * ( e1t(ji  ,jj) * e2t(ji  ,jj) * ssha(ji  ,jj)     & 
    145                   &                                    + e1t(ji+1,jj) * e2t(ji+1,jj) * ssha(ji+1,jj) ) 
    146                sshv_a(ji,jj) = 0.5  * vmask(ji,jj,1) / ( e1v(ji,jj  ) * e2v(ji,jj  ) )                   & 
    147                   &                                  * ( e1t(ji,jj  ) * e2t(ji,jj  ) * ssha(ji,jj  )     & 
    148                   &                                    + e1t(ji,jj+1) * e2t(ji,jj+1) * ssha(ji,jj+1) ) 
    149                sshf_a(ji,jj) = 0.25 * umask(ji,jj,1) * umask (ji,jj+1,1)   &   ! Caution : fmask not used 
    150                   &                                  * ( ssha(ji  ,jj) + ssha(ji  ,jj+1)                 & 
    151                   &                                    + ssha(ji+1,jj) + ssha(ji+1,jj+1) ) 
    152             END DO 
    153          END DO 
    154          CALL lbc_lnk( sshu_a, 'U', 1. )               ! Boundaries conditions 
    155          CALL lbc_lnk( sshv_a, 'V', 1. ) 
    156          CALL lbc_lnk( sshf_a, 'F', 1. ) 
    157       ENDIF 
    158  
    159       !                                           !------------------------------! 
    160       !                                           !     Now Vertical Velocity    ! 
    161       !                                           !------------------------------! 
    162       !                                                ! integrate from the bottom the hor. divergence 
    163       DO jk = jpkm1, 1, -1 
    164          wn(:,:,jk) = wn(:,:,jk+1) -    fse3t_n(:,:,jk) * hdivn(:,:,jk)   & 
    165               &                    - (  fse3t_a(:,:,jk)                   & 
    166               &                       - fse3t_b(:,:,jk) ) * tmask(:,:,jk) / z2dt 
    167       END DO 
    168       ! 
    169       CALL iom_put( "woce", wn   )                     ! vert. current 
    170       CALL iom_put( "ssh" , sshn )                     ! sea surface height 
    171  
    172112      !                                           !------------------------------! 
    173113      !                                           !  Update Now Vertical coord.  ! 
     
    194134         hur(:,:) = umask(:,:,1) / ( hu(:,:) + 1.e0 - umask(:,:,1) ) 
    195135         hvr(:,:) = vmask(:,:,1) / ( hv(:,:) + 1.e0 - vmask(:,:,1) ) 
    196  
    197       ENDIF 
     136         ! 
     137      ENDIF 
     138 
     139                         CALL div_cur( kt )            ! Horizontal divergence & Relative vorticity 
     140      IF( n_cla == 1 )   CALL div_cla( kt )            ! Cross Land Advection (Update Hor. divergence) 
     141 
     142      ! set time step size (Euler/Leapfrog) 
     143      z2dt = 2. * rdt  
     144      IF( neuler == 0 .AND. kt == nit000 ) z2dt =rdt 
     145 
     146      zraur = 1. / rauw 
     147 
     148      !                                           !------------------------------! 
     149      !                                           !   After Sea Surface Height   ! 
     150      !                                           !------------------------------! 
     151      zhdiv(:,:) = 0.e0 
     152      DO jk = 1, jpkm1                                 ! Horizontal divergence of barotropic transports 
     153        zhdiv(:,:) = zhdiv(:,:) + fse3t(:,:,jk) * hdivn(:,:,jk) 
     154      END DO 
     155 
     156      !                                                ! Sea surface elevation time stepping 
     157      ssha(:,:) = (  sshb(:,:) - z2dt * ( zraur * emp(:,:) + zhdiv(:,:) )  ) * tmask(:,:,1) 
     158 
     159#if defined key_obc 
     160# if defined key_agrif 
     161      IF ( Agrif_Root() ) THEN  
     162# endif 
     163         ssha(:,:) = ssha(:,:) * obctmsk(:,:) 
     164         CALL lbc_lnk( ssha, 'T', 1. )  ! absolutly compulsory !! (jmm) 
     165# if defined key_agrif 
     166      ENDIF 
     167# endif 
     168#endif 
     169 
     170      !                                                ! Sea Surface Height at u-,v- and f-points (vvl case only) 
     171      IF( lk_vvl ) THEN                                ! (required only in key_vvl case) 
     172         DO jj = 1, jpjm1 
     173            DO ji = 1, fs_jpim1   ! Vector Opt. 
     174               sshu_a(ji,jj) = 0.5  * umask(ji,jj,1) / ( e1u(ji  ,jj) * e2u(ji  ,jj) )                   & 
     175                  &                                  * ( e1t(ji  ,jj) * e2t(ji  ,jj) * ssha(ji  ,jj)     & 
     176                  &                                    + e1t(ji+1,jj) * e2t(ji+1,jj) * ssha(ji+1,jj) ) 
     177               sshv_a(ji,jj) = 0.5  * vmask(ji,jj,1) / ( e1v(ji,jj  ) * e2v(ji,jj  ) )                   & 
     178                  &                                  * ( e1t(ji,jj  ) * e2t(ji,jj  ) * ssha(ji,jj  )     & 
     179                  &                                    + e1t(ji,jj+1) * e2t(ji,jj+1) * ssha(ji,jj+1) ) 
     180               sshf_a(ji,jj) = 0.25 * umask(ji,jj,1) * umask (ji,jj+1,1)   &   ! Caution : fmask not used 
     181                  &                                  * ( ssha(ji  ,jj) + ssha(ji  ,jj+1)                 & 
     182                  &                                    + ssha(ji+1,jj) + ssha(ji+1,jj+1) ) 
     183            END DO 
     184         END DO 
     185         CALL lbc_lnk( sshu_a, 'U', 1. )               ! Boundaries conditions 
     186         CALL lbc_lnk( sshv_a, 'V', 1. ) 
     187         CALL lbc_lnk( sshf_a, 'F', 1. ) 
     188      ENDIF 
     189 
     190      !                                           !------------------------------! 
     191      !                                           !     Now Vertical Velocity    ! 
     192      !                                           !------------------------------! 
     193      !                                                ! integrate from the bottom the hor. divergence 
     194      DO jk = jpkm1, 1, -1 
     195         wn(:,:,jk) = wn(:,:,jk+1) -    fse3t_n(:,:,jk) * hdivn(:,:,jk)   & 
     196              &                    - (  fse3t_a(:,:,jk)                   & 
     197              &                       - fse3t_b(:,:,jk) ) * tmask(:,:,jk) / z2dt 
     198      END DO 
     199      ! 
     200      CALL iom_put( "woce", wn   )                     ! vert. current 
     201      CALL iom_put( "ssh" , sshn )                     ! sea surface height 
    198202      ! 
    199203   END SUBROUTINE ssh_wzv 
     
    307311 
    308312   !!====================================================================== 
    309 END MODULE wzvmod 
     313END MODULE sshwzv 
Note: See TracChangeset for help on using the changeset viewer.