Changeset 4450


Ignore:
Timestamp:
2014-02-04T13:16:16+01:00 (7 years ago)
Author:
trackstand2
Message:

Add mbkmax in dynvor

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2011/DEV_r2739_STFC_dCSE/NEMOGCM/NEMO/OPA_SRC/DYN/dynvor.F90

    r4449 r4450  
    628628         DO jj = 1, jpjm1 
    629629            DO ji = 1, jpim1 
    630                DO jk = 1, jpk 
     630               DO jk = 1, mbkmax(ji,jj) ! jpk 
    631631#else 
    632632         DO jk = 1, jpk 
     
    646646 
    647647#if defined key_z_first 
    648 !      DO jk = 1, jpkm1 
    649648          
    650          ! Potential vorticity and horizontal fluxes 
    651          ! ----------------------------------------- 
    652          SELECT CASE( kvor )      ! vorticity considered 
    653          CASE ( 1 )                                                ! planetary vorticity (Coriolis) 
    654             DO jj = 1, jpj, 1 
    655                DO ji = 1, jpi, 1 
    656                   DO jk = 1, jpkm1 
    657                      zwz(ji,jj,jk) = ff(ji,jj)      * ze3f(ji,jj,jk) 
    658                   END DO 
    659                END DO 
    660             END DO 
    661          CASE ( 2 )                                                ! relative  vorticity 
    662             DO jj = 1, jpj, 1 
    663                DO ji = 1, jpi, 1 
    664                   DO jk = 1, jpkm1 
    665                      zwz(ji,jj,jk) = rotn(ji,jj,jk) * ze3f(ji,jj,jk) 
    666                   END DO 
    667                END DO 
    668             END DO 
    669          CASE ( 3 )                                                ! metric term 
    670             DO jj = 1, jpjm1 
    671                DO ji = 1, jpim1  
    672                   DO jk = 1, jpkm1 
    673                      zwz(ji,jj,jk) = (   ( vn(ji+1,jj  ,jk) + vn (ji,jj,jk) ) * ( e2v(ji+1,jj  ) - e2v(ji,jj) ) & 
     649      ! Potential vorticity and horizontal fluxes 
     650      ! ----------------------------------------- 
     651      SELECT CASE( kvor )      ! vorticity considered 
     652      CASE ( 1 )                                                ! planetary vorticity (Coriolis) 
     653         DO jj = 1, jpj, 1 
     654            DO ji = 1, jpi, 1 
     655               DO jk = 1, mbkmax(ji,jj)-1 ! jpkm1 
     656                  zwz(ji,jj,jk) = ff(ji,jj)      * ze3f(ji,jj,jk) 
     657               END DO 
     658            END DO 
     659         END DO 
     660      CASE ( 2 )                                                ! relative  vorticity 
     661         DO jj = 1, jpj, 1 
     662            DO ji = 1, jpi, 1 
     663               DO jk = 1, mbkmax(ji,jj)-1 ! jpkm1 
     664                  zwz(ji,jj,jk) = rotn(ji,jj,jk) * ze3f(ji,jj,jk) 
     665               END DO 
     666            END DO 
     667         END DO 
     668      CASE ( 3 )                                                ! metric term 
     669         DO jj = 1, jpjm1 
     670            DO ji = 1, jpim1  
     671               DO jk = 1, mbkmax(ji,jj)-1 ! jpkm1 
     672                  zwz(ji,jj,jk) = (   ( vn(ji+1,jj  ,jk) + vn (ji,jj,jk) ) * ( e2v(ji+1,jj  ) - e2v(ji,jj) ) & 
    674673                       &         - ( un(ji  ,jj+1,jk) + un (ji,jj,jk) ) * ( e1u(ji  ,jj+1) - e1u(ji,jj) )   )   & 
    675                        &     * 0.5 / ( e1f(ji,jj) * e2f(ji,jj) ) * ze3f(ji,jj,jk) 
    676                   END DO 
    677                END DO 
    678             END DO 
    679             CALL lbc_lnk( zwz, 'F', 1. ) 
    680          CASE ( 4 )                                                ! total (relative + planetary vorticity) 
    681             DO jj = 1, jpj, 1 
    682                DO ji = 1, jpi, 1 
    683                   DO jk = 1, jpkm1 
    684                      zwz(ji,jj,jk) = ( rotn(ji,jj,jk) + ff(ji,jj) ) * ze3f(ji,jj,jk) 
    685                   END DO 
    686                END DO 
    687             END DO 
    688          CASE ( 5 )                                                ! total (coriolis + metric) 
    689             DO jj = 1, jpjm1 
    690                DO ji = 1, fs_jpim1   ! vector opt. 
    691                   DO jk = 1, jpkm1 
    692                      zwz(ji,jj,jk) = ( ff (ji,jj)                                                                 & 
     674                       &     * 0.5_wp / ( e1f(ji,jj) * e2f(ji,jj) ) * ze3f(ji,jj,jk) 
     675               END DO 
     676            END DO 
     677         END DO 
     678         CALL lbc_lnk( zwz, 'F', 1. ) 
     679      CASE ( 4 )                                                ! total (relative + planetary vorticity) 
     680         DO jj = 1, jpj, 1 
     681            DO ji = 1, jpi, 1 
     682               DO jk = 1, mbkmax(ji,jj)-1 ! jpkm1 
     683                  zwz(ji,jj,jk) = ( rotn(ji,jj,jk) + ff(ji,jj) ) * ze3f(ji,jj,jk) 
     684               END DO 
     685            END DO 
     686         END DO 
     687      CASE ( 5 )                                                ! total (coriolis + metric) 
     688         DO jj = 1, jpjm1 
     689            DO ji = 1, fs_jpim1   ! vector opt. 
     690               DO jk = 1, mbkmax(ji,jj)-1 ! jpkm1 
     691                  zwz(ji,jj,jk) = ( ff (ji,jj)                                                                 & 
    693692                       &       + (   ( vn(ji+1,jj  ,jk) + vn (ji,jj,jk) ) * ( e2v(ji+1,jj  ) - e2v(ji,jj) )       & 
    694693                       &           - ( un(ji  ,jj+1,jk) + un (ji,jj,jk) ) * ( e1u(ji  ,jj+1) - e1u(ji,jj) )   )   & 
    695694                       &       * 0.5 / ( e1f(ji,jj) * e2f(ji,jj) )                                                & 
    696695                       &       ) * ze3f(ji,jj,jk) 
    697                   END DO 
    698                END DO 
    699             END DO 
    700             CALL lbc_lnk( zwz, 'F', 1. ) 
    701          END SELECT 
    702  
    703          DO jj = 1, jpj, 1 
    704             DO ji = 1, jpi, 1 
    705                DO jk = 1, jpkm1 
    706                   zwx(ji,jj,jk) = e2u(ji,jj) * fse3u(ji,jj,jk) * un(ji,jj,jk) 
    707                   zwy(ji,jj,jk) = e1v(ji,jj) * fse3v(ji,jj,jk) * vn(ji,jj,jk) 
    708                END DO 
    709             END DO 
    710          END DO 
    711  
    712          ! Compute and add the vorticity term trend 
    713          ! ---------------------------------------- 
    714          DO jj = 1,jpj,1 
    715             DO jk = 1,jpk,1 
    716                ztne(1,jj,jk) = 0.0_wp ; ztnw(1,jj,jk) = 0.0_wp  
    717                ztse(1,jj,jk) = 0.0_wp ; ztsw(1,jj,jk) = 0.0_wp 
    718             END DO 
    719          END DO 
    720  
    721          DO jj = 2, jpj 
    722             DO ji = 2, jpi 
    723                DO jk = 1, jpkm1 
    724                   ztne(ji,jj,jk) = zwz(ji-1,jj  ,jk) + zwz(ji  ,jj  ,jk) + zwz(ji  ,jj-1,jk) 
    725                   ztnw(ji,jj,jk) = zwz(ji-1,jj-1,jk) + zwz(ji-1,jj  ,jk) + zwz(ji  ,jj  ,jk) 
    726                   ztse(ji,jj,jk) = zwz(ji  ,jj  ,jk) + zwz(ji  ,jj-1,jk) + zwz(ji-1,jj-1,jk) 
    727                   ztsw(ji,jj,jk) = zwz(ji  ,jj-1,jk) + zwz(ji-1,jj-1,jk) + zwz(ji-1,jj  ,jk) 
    728                END DO 
    729             END DO 
    730          END DO 
    731          DO jj = 2, jpjm1 
    732             DO ji = fs_2, jpim1 
    733                DO jk = 1, jpkm1 
    734                   zua = + zfac12 / e1u(ji,jj) * (  ztne(ji,jj  ,jk) * zwy(ji  ,jj  ,jk) + & 
    735                           ztnw(ji+1,jj,jk) * zwy(ji+1,jj  ,jk)   & 
    736                   &     + ztse(ji,jj  ,jk) * zwy(ji  ,jj-1,jk) + ztsw(ji+1,jj,jk) * zwy(ji+1,jj-1,jk) ) 
    737  
    738                   zva = - zfac12 / e2v(ji,jj) * (  ztsw(ji,jj+1,jk) * zwx(ji-1,jj+1,jk) + & 
    739                           ztse(ji,jj+1,jk) * zwx(ji  ,jj+1,jk)   & 
    740                   &     + ztnw(ji,jj  ,jk) * zwx(ji-1,jj  ,jk) + ztne(ji,jj  ,jk) * zwx(ji  ,jj  ,jk) ) 
    741  
    742                   pua(ji,jj,jk) = pua(ji,jj,jk) + zua 
    743                   pva(ji,jj,jk) = pva(ji,jj,jk) + zva 
    744                END DO 
    745             END DO   
    746          END DO   
    747  
    748 !      END DO 
     696               END DO 
     697            END DO 
     698         END DO 
     699         CALL lbc_lnk( zwz, 'F', 1. ) 
     700      END SELECT 
     701 
     702      DO jj = 1, jpj, 1 
     703         DO ji = 1, jpi, 1 
     704            DO jk = 1, mbkmax(ji,jj)-1 ! jpkm1 
     705               zwx(ji,jj,jk) = e2u(ji,jj) * fse3u(ji,jj,jk) * un(ji,jj,jk) 
     706               zwy(ji,jj,jk) = e1v(ji,jj) * fse3v(ji,jj,jk) * vn(ji,jj,jk) 
     707            END DO 
     708         END DO 
     709      END DO 
     710 
     711      ! Compute and add the vorticity term trend 
     712      ! ---------------------------------------- 
     713      DO jj = 1,jpj,1 
     714         DO jk = 1,mbkmax(1,jj) ! jpk,1 
     715            ztne(1,jj,jk) = 0.0_wp ; ztnw(1,jj,jk) = 0.0_wp  
     716            ztse(1,jj,jk) = 0.0_wp ; ztsw(1,jj,jk) = 0.0_wp 
     717         END DO 
     718      END DO 
     719 
     720      DO jj = 2, jpj 
     721         DO ji = 2, jpi 
     722            DO jk = 1, mbkmax(ji,jj)-1 ! jpkm1 
     723               ztne(ji,jj,jk) = zwz(ji-1,jj  ,jk) + zwz(ji  ,jj  ,jk) + zwz(ji  ,jj-1,jk) 
     724               ztnw(ji,jj,jk) = zwz(ji-1,jj-1,jk) + zwz(ji-1,jj  ,jk) + zwz(ji  ,jj  ,jk) 
     725               ztse(ji,jj,jk) = zwz(ji  ,jj  ,jk) + zwz(ji  ,jj-1,jk) + zwz(ji-1,jj-1,jk) 
     726               ztsw(ji,jj,jk) = zwz(ji  ,jj-1,jk) + zwz(ji-1,jj-1,jk) + zwz(ji-1,jj  ,jk) 
     727            END DO 
     728         END DO 
     729      END DO 
     730      DO jj = 2, jpjm1 
     731         DO ji = fs_2, jpim1 
     732            DO jk = 1, mbkmax(ji,jj)-1 ! jpkm1 
     733               zua = + zfac12 / e1u(ji,jj) * (  ztne(ji,jj  ,jk) * zwy(ji  ,jj  ,jk) + & 
     734                    ztnw(ji+1,jj,jk) * zwy(ji+1,jj  ,jk)   & 
     735                    &     + ztse(ji,jj  ,jk) * zwy(ji  ,jj-1,jk) + ztsw(ji+1,jj,jk) * zwy(ji+1,jj-1,jk) ) 
     736                
     737               zva = - zfac12 / e2v(ji,jj) * (  ztsw(ji,jj+1,jk) * zwx(ji-1,jj+1,jk) + & 
     738                    ztse(ji,jj+1,jk) * zwx(ji  ,jj+1,jk)   & 
     739                    &     + ztnw(ji,jj  ,jk) * zwx(ji-1,jj  ,jk) + ztne(ji,jj  ,jk) * zwx(ji  ,jj  ,jk) ) 
     740 
     741               pua(ji,jj,jk) = pua(ji,jj,jk) + zua 
     742               pva(ji,jj,jk) = pva(ji,jj,jk) + zva 
     743            END DO 
     744         END DO 
     745      END DO 
    749746 
    750747#else 
Note: See TracChangeset for help on using the changeset viewer.