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 2060 – NEMO

Changeset 2060


Ignore:
Timestamp:
2010-08-18T13:35:40+02:00 (14 years ago)
Author:
sga
Message:

Commits to NEMO branch DEV_r1924_nocs_latphys.

Added Griffies skew flux as formulated by Chris Harris
and modified by George Nurser at NOC. Not tested yet.

Unfinished, expecting to put in new metric terms.

Location:
branches/DEV_r1924_nocs_latphys/NEMO/OPA_SRC
Files:
2 added
6 edited

Legend:

Unmodified
Added
Removed
  • branches/DEV_r1924_nocs_latphys/NEMO/OPA_SRC/LDF/ldfslp.F90

    r1515 r2060  
    2424   USE phycst          ! physical constants 
    2525   USE zdfmxl          ! mixed layer depth 
     26   USE eosbn2 
    2627   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    2728   USE in_out_manager  ! I/O manager 
     
    3233 
    3334   PUBLIC   ldf_slp    ! routine called by step.F90 
     35   PUBLIC ldf_slp_grif   !              " 
    3436 
    3537   LOGICAL , PUBLIC, PARAMETER              ::   lk_ldfslp = .TRUE.   !: slopes flag 
    3638   REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) ::   uslp, wslpi          !: i_slope at U- and W-points 
    3739   REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) ::   vslp, wslpj          !: j-slope at V- and W-points 
     40   REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) ::   wslp2                !: wslp**2 from Griffies quarter cells 
     41   REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) ::   alpha, beta          !: alpha,beta at T points 
     42   REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk) ::   tfw,sfw,ftu,fsu,ftv,fsv,ftud,fsud,ftvd,fsvd 
    3843    
    3944   REAL(wp), DIMENSION(jpi,jpj,jpk) ::   omlmask           ! mask of the surface mixed layer at T-pt 
     
    4348   !! * Substitutions 
    4449#  include "domzgr_substitute.h90" 
     50#  include "ldftra_substitute.h90" 
     51#  include "ldfeiv_substitute.h90" 
    4552#  include "vectopt_loop_substitute.h90" 
    4653   !!---------------------------------------------------------------------- 
     
    305312      END DO 
    306313          
    307  
    308314      ! III.  Specific grid points      
    309315      ! ===========================  
     
    340346      ! 
    341347   END SUBROUTINE ldf_slp 
     348 
     349   SUBROUTINE ldf_slp_grif ( kt ) 
     350     !!---------------------------------------------------------------------- 
     351     !!                 ***  ROUTINE ldf_slp_grif  *** 
     352     !! 
     353     !! ** Purpose :   Compute the squared slopes of neutral surfaces (slope 
     354     !!      of iso-pycnal surfaces referenced locally) ('key_traldfiso') 
     355     !!      at W-points using the Griffies quarter-cells.  Also calculates 
     356     !!      alpha and beta at T-points for use in the Griffies isopycnal 
     357     !!      scheme. 
     358     !! 
     359     !! ** Method  :   The slope in the i-direction is computed at U- and 
     360     !!      W-points (uslp, wslpi) and the slope in the j-direction is 
     361     !!      computed at V- and W-points (vslp, wslpj). 
     362     !! 
     363     !! ** Action : - alpha, beta 
     364     !!               wslp2 squared slope of neutral surfaces at w-points. 
     365     !! 
     366     !! History : 
     367     !!   9.0  !  06-10  (C. Harris)  New subroutine 
     368     !!---------------------------------------------------------------------- 
     369     !! * Modules used 
     370     USE oce            , zdit  => ua,  &  ! use ua as workspace 
     371          zdis  => va,  &  ! use va as workspace 
     372          zdjt  => ta,  &  ! use ta as workspace 
     373          zdjs  => sa      ! use sa as workspace 
     374     !! * Arguments 
     375     INTEGER, INTENT( in ) ::   kt         ! ocean time-step index 
     376 
     377     !! * Local declarations 
     378     INTEGER  ::   ji, jj, jk, ip, jp, kp  ! dummy loop indices 
     379     INTEGER  ::   iku, ikv                ! temporary integer 
     380     REAL(wp) ::   & 
     381          zt, zs, zh, zt2, zsp5, zp1t1,   &  ! temporary scalars 
     382          zdenr, zrhotmp, zdndt, zdddt,   &  !     "        " 
     383          zdnds, zddds, znum, zden,       &  !     "        " 
     384          zsxe, za_sxe, zslopec, zdsloper,&  !     "        " 
     385          zfact, zepsln, zdx, zdy, zatempw,zatempu,zatempv, &   !     "        " 
     386          ze1ur,ze2vr,ze3wr,zdxt,zdxs,zdyt,zdys,zdzt,zdzs,zarea,zvolf 
     387     REAL(wp), DIMENSION(jpi,jpj,jpk) ::   & 
     388          zdkt,zdks 
     389     REAL(wp), DIMENSION(jpi,jpj,jpk,2) ::   & 
     390          zdelta2 
     391     !!---------------------------------------------------------------------- 
     392 
     393     ! 0. Local constant initialization 
     394     ! -------------------------------- 
     395 
     396     zslopec=0.004 
     397     zdsloper=1000.0 
     398     zepsln=1e-25 
     399 
     400     SELECT CASE ( neos ) 
     401 
     402     CASE ( 0 )               ! Jackett and McDougall (1994) formulation 
     403 
     404        !                                                ! =============== 
     405        DO jk = 1, jpk                                   ! Horizontal slab 
     406           !                                             ! =============== 
     407           DO jj = 1, jpjm1 
     408              DO ji = 1, fs_jpim1 
     409                 zt = tb(ji,jj,jk)          ! potential temperature 
     410                 zs = sb(ji,jj,jk) - 35.0   ! salinity anomaly (s-35) 
     411                 zh = fsdept(ji,jj,jk)      ! depth in meters 
     412 
     413                 beta(ji,jj,jk) = ( ( -0.415613e-09 * zt + 0.555579e-07 ) * zt      & 
     414                      &                            - 0.301985e-05 ) * zt      & 
     415                      &   + 0.785567e-03                                      & 
     416                      &   + (     0.515032e-08 * zs                           & 
     417                      &         + 0.788212e-08 * zt - 0.356603e-06 ) * zs     & 
     418                      &   +(  (   0.121551e-17 * zh                           & 
     419                      &         - 0.602281e-15 * zs                           & 
     420                      &         - 0.175379e-14 * zt + 0.176621e-12 ) * zh     & 
     421                      &                             + 0.408195e-10   * zs     & 
     422                      &     + ( - 0.213127e-11 * zt + 0.192867e-09 ) * zt     & 
     423                      &                             - 0.121555e-07 ) * zh 
     424 
     425                 alpha(ji,jj,jk) = - beta(ji,jj,jk) *                       & 
     426                      &     (((( - 0.255019e-07 * zt + 0.298357e-05 ) * zt   & 
     427                      &                               - 0.203814e-03 ) * zt   & 
     428                      &                               + 0.170907e-01 ) * zt   & 
     429                      &   + 0.665157e-01                                      & 
     430                      &   +     ( - 0.678662e-05 * zs                         & 
     431                      &           - 0.846960e-04 * zt + 0.378110e-02 ) * zs   & 
     432                      &   +   ( ( - 0.302285e-13 * zh                         & 
     433                      &           - 0.251520e-11 * zs                         & 
     434                      &           + 0.512857e-12 * zt * zt           ) * zh   & 
     435                      &           - 0.164759e-06 * zs                         & 
     436                      &        +(   0.791325e-08 * zt - 0.933746e-06 ) * zt   & 
     437                      &                               + 0.380374e-04 ) * zh) 
     438 
     439              ENDDO 
     440           ENDDO 
     441        ENDDO 
     442 
     443     CASE ( 1 ) 
     444 
     445        alpha(:,:,:)=-ralpha 
     446        beta(:,:,:)=0.0 
     447 
     448     CASE ( 2 ) 
     449 
     450        alpha(:,:,:)=-ralpha 
     451        beta (:,:,:)=rbeta 
     452 
     453     CASE ( 3 ) 
     454 
     455        DO jk =1, jpk 
     456           DO jj = 1, jpjm1 
     457              DO ji = 1, fs_jpim1 
     458                 zt = tb(ji,jj,jk) 
     459                 zs = sb(ji,jj,jk) 
     460                 zh = fsdept(ji,jj,jk) 
     461                 zt2 = zt**2 
     462                 zsp5 = sqrt(ABS(zs)) 
     463                 zp1t1=zh*zt 
     464                 znum=9.99843699e+02+zt*(7.35212840e+00+zt*(-5.45928211e-02+3.98476704e-04*zt)) & 
     465                      +zs*(2.96938239e+00-7.23268813e-03*zt+2.12382341e-03*zs)  & 
     466                      +zh*(1.04004591e-02+1.03970529e-07*zt2+5.18761880e-06*zs+ & 
     467                      zh*(-3.24041825e-08-1.23869360e-11*zt2)) 
     468                 zden=1.00000000e+00+zt*(7.28606739e-03+zt*(-4.60835542e-05+zt*(3.68390573e-07+zt*1.80809186e-10))) & 
     469                      +zs*(2.14691708e-03+zt*(-9.27062484e-06-1.78343643e-10*zt2)+zsp5*(4.76534122e-06+1.63410736e-09*zt2)) & 
     470                      + zh*(5.30848875e-06+zh*zt*(-3.03175128e-16*zt2-1.27934137e-17*zh)) 
     471                 zdenr=1.0/zden 
     472                 zrhotmp=znum*zdenr 
     473                 zdndt=7.35212840e+00+zt*(-1.091856422e-01+1.195430112e-03*zt)-7.23268813e-03*zs & 
     474                      +zp1t1*(2.07941058e-07-2.4773872e-11*zh) 
     475                 zdddt=7.28606739e-03+zt*(-9.21671084e-05+zt*(1.105171719e-06+7.23236744e-10*zt))  & 
     476                      +zs*(-9.27062484e-06+zt*(-5.35030929e-10*zt+3.26821472e-09*zsp5))  & 
     477                      +zh*zh*(-9.09525384e-16*zt2-1.27934137e-17*zh) 
     478                 zdnds=2.96938239e+00-7.23268813e-03*zt+2*2.12382341e-03*zs+5.18761880e-06*zh 
     479                 zddds=2.14691708e-03+zt*(-9.27062484e-06-1.78343643e-10*zt2)+zsp5*(7.14801183e-06+2.45116104e-09*zt2) 
     480                 alpha(ji,jj,jk)=(zdndt-zrhotmp*zdddt)*zdenr 
     481                 beta(ji,jj,jk)=zdenr*(zdnds-zrhotmp*zddds) 
     482 
     483              END DO 
     484           END DO 
     485        END DO 
     486 
     487     CASE DEFAULT 
     488 
     489        IF(lwp) WRITE(numout,cform_err) 
     490        IF(lwp) WRITE(numout,*) '          bad flag value for neos = ', neos 
     491        nstop = nstop + 1 
     492 
     493     END SELECT 
     494 
     495     CALL lbc_lnk( alpha, 'T', 1. ) 
     496     CALL lbc_lnk( beta, 'T', 1. ) 
     497 
     498 
     499     DO jk = 1, jpkm1 
     500        DO jj = 1, jpjm1 
     501           DO ji = 1, fs_jpim1   ! vector opt. 
     502              ! i-gradient of T and S at jj 
     503              zdit (ji,jj,jk) = ( tb(ji+1,jj,jk)-tb(ji,jj,jk) ) * umask(ji,jj,jk) 
     504              zdis (ji,jj,jk) = ( sb(ji+1,jj,jk)-sb(ji,jj,jk) ) * umask(ji,jj,jk) 
     505              ! j-gradient of T and S at jj 
     506              zdjt (ji,jj,jk) = ( tb(ji,jj+1,jk)-tb(ji,jj,jk) ) * vmask(ji,jj,jk) 
     507              zdjs (ji,jj,jk) = ( sb(ji,jj+1,jk)-sb(ji,jj,jk) ) * vmask(ji,jj,jk) 
     508           END DO 
     509        END DO 
     510     END DO 
     511 
     512     IF( ln_zps ) THEN      ! partial steps correction at the last level 
     513# if defined key_vectopt_loop   &&   ! defined key_mpp_omp 
     514     jj = 1 
     515        DO ji = 1, jpij-jpi   ! vector opt. (forced unrolling) 
     516# else 
     517           DO jj = 1, jpjm1 
     518              DO ji = 1, jpim1 
     519# endif 
     520                 ! last ocean level 
     521                 iku  = MIN( mbathy(ji,jj), mbathy(ji+1,jj  ) ) - 1 
     522                 ikv  = MIN( mbathy(ji,jj), mbathy(ji  ,jj+1) ) - 1 
     523                 ! i-gradient of T and S 
     524                 zdit (ji,jj,iku) = gtu(ji,jj) 
     525                 zdis (ji,jj,iku) = gsu(ji,jj) 
     526                 ! j-gradient of T and S 
     527                 zdjt (ji,jj,ikv) = gtv(ji,jj) 
     528                 zdjs (ji,jj,ikv) = gsv(ji,jj) 
     529# if ! defined key_vectopt_loop   ||   defined key_mpp_omp 
     530              END DO 
     531# endif 
     532           END DO 
     533        ENDIF 
     534 
     535        wslp2(:,:,:)=0.0 
     536        tfw(:,:,:) = 0.0 
     537        sfw(:,:,:) = 0.0 
     538        ftu(:,:,:) = 0.0 
     539        fsu(:,:,:) = 0.0 
     540        ftv(:,:,:) = 0.0 
     541        fsv(:,:,:) = 0.0 
     542        ftud(:,:,:) = 0.0 
     543        fsud(:,:,:) = 0.0 
     544        ftvd(:,:,:) = 0.0 
     545        fsvd(:,:,:) = 0.0 
     546 
     547        DO jk = 2, jpk 
     548           ! 
     549           ! 1. Vertical tracer gradient at level jk 
     550           ! --------------------------------------- 
     551           zdkt(:,:,jk) = ( tb(:,:,jk-1) - tb(:,:,jk) ) * tmask(:,:,jk) 
     552           zdks(:,:,jk) = ( sb(:,:,jk-1) - sb(:,:,jk) ) * tmask(:,:,jk) 
     553        END DO 
     554 
     555        zdkt(:,:,1) = 0.0 
     556        zdks(:,:,1) = 0.0 
     557 
     558        DO jk = 1, jpkm1 
     559           DO ji = 1, fs_jpim1   ! vector opt. 
     560              zdelta2(ji,:,jk,1)=MIN((fsdept(ji,:,jk)-fsdepw(ji,:,jk)),(fsdept(ji+1,:,jk)-fsdepw(ji+1,:,jk))) 
     561              zdelta2(ji,:,jk,2)=MIN((fsdepw(ji,:,jk+1)-fsdept(ji,:,jk)),(fsdepw(ji+1,:,jk+1)-fsdept(ji+1,:,jk))) 
     562           END DO 
     563        END DO 
     564 
     565        ! interior (1=<jk=<jpk-1) 
     566        DO ip=0,1 
     567           DO kp=0,1 
     568 
     569              DO jk = 1, jpkm1 
     570 
     571                 DO jj = 1, jpjm1 
     572 
     573                    DO ji = 1, fs_jpim1   ! vector opt. 
     574 
     575                       ze1ur=1.0/e1u(ji,jj) 
     576                       zdxt=zdit(ji,jj,jk)*ze1ur 
     577                       zdxs=zdis(ji,jj,jk)*ze1ur 
     578 
     579                       zdx=(e1t(ji+ip,jj)+e1u(ji,jj))/4 
     580                       ze3wr=1.0/fse3w(ji+ip,jj,jk+kp) 
     581                       zdzt=zdkt(ji+ip,jj,jk+kp)*ze3wr 
     582                       zdzs=zdks(ji+ip,jj,jk+kp)*ze3wr 
     583                       ! Calculate the density gradient terms 
     584                       zsxe=-(alpha(ji+ip,jj,jk)*zdxt+beta(ji+ip,jj,jk)*zdxs) / & 
     585                            (-ABS(alpha(ji+ip,jj,jk)*zdzt+beta(ji+ip,jj,jk)*zdzs)-zepsln) 
     586                       ! Check value and taper if necessary 
     587                       za_sxe = MIN(1.0,(abs(zsxe)-zslopec)*zdsloper) 
     588                       za_sxe = MAX(-1.0,za_sxe) 
     589                       zfact = 0.5*(1.0-za_sxe)*umask(ji,jj,jk)*tmask(ji+ip,jj,jk+kp) 
     590 
     591                       zarea=zdx*zdelta2(ji,jj,jk,kp+1) 
     592                       zvolf=zarea*e2t(ji+ip,jj)*zfact 
     593 
     594                       ftu(ji,jj,jk)= ftu(ji,jj,jk)+zsxe*zdzt*zvolf*ze1ur 
     595                       fsu(ji,jj,jk)= fsu(ji,jj,jk)+zsxe*zdzs*zvolf*ze1ur 
     596                       ftud(ji,jj,jk)=ftud(ji,jj,jk)+fsahtu(ji,jj,jk)*zdxt*zvolf*ze1ur 
     597                       fsud(ji,jj,jk)=fsud(ji,jj,jk)+fsahtu(ji,jj,jk)*zdxs*zvolf*ze1ur 
     598                       tfw(ji+ip,jj,jk+kp)=tfw(ji+ip,jj,jk+kp)+(zvolf*ze3wr)*zsxe*zdxt 
     599                       sfw(ji+ip,jj,jk+kp)=sfw(ji+ip,jj,jk+kp)+(zvolf*ze3wr)*zsxe*zdxs 
     600                       wslp2(ji+ip,jj,jk+kp)=wslp2(ji+ip,jj,jk+kp)+(zarea*ze3wr/e1t(ji+ip,jj))*zfact*(zsxe)**2 
     601 
     602                    END DO 
     603                 END DO 
     604 
     605              END DO 
     606           END DO 
     607        END DO 
     608 
     609        DO jk = 1, jpkm1 
     610           DO jj = 1, jpjm1 
     611              zdelta2(:,jj,jk,1)=MIN((fsdept(:,jj,jk)-fsdepw(:,jj,jk)),(fsdept(:,jj+1,jk)-fsdepw(:,jj+1,jk))) 
     612              zdelta2(:,jj,jk,2)=MIN((fsdepw(:,jj,jk+1)-fsdept(:,jj,jk)),(fsdepw(:,jj+1,jk+1)-fsdept(:,jj+1,jk))) 
     613           END DO 
     614        END DO 
     615 
     616        DO jp=0,1 
     617           DO kp=0,1 
     618 
     619              DO jk = 1, jpkm1 
     620                 DO jj = 1, jpjm1 
     621                    DO ji = fs_2, fs_jpim1   ! vector opt. 
     622 
     623                       ze2vr=1.0/e2v(ji,jj) 
     624                       zdyt=zdjt(ji,jj,jk)*ze2vr 
     625                       zdys=zdjs(ji,jj,jk)*ze2vr 
     626 
     627                       zdy=(e2t(ji,jj+jp)+e2v(ji,jj))/4 
     628                       ze3wr=1.0/fse3w(ji,jj+jp,jk+kp) 
     629                       zdzt=zdkt(ji,jj+jp,jk+kp)*ze3wr 
     630                       zdzs=zdks(ji,jj+jp,jk+kp)*ze3wr 
     631                       ! Calculate the density gradient terms 
     632                       zsxe=-(alpha(ji,jj+jp,jk)*zdyt+beta(ji,jj+jp,jk)*zdys) / & 
     633                            (-ABS(alpha(ji,jj+jp,jk)*zdzt+beta(ji,jj+jp,jk)*zdzs)-zepsln) 
     634                       ! Check value and taper if necessary 
     635                       za_sxe = MIN(1.0,(abs(zsxe)-zslopec)*zdsloper) 
     636                       za_sxe = MAX(-1.0,za_sxe) 
     637                       zfact = 0.5*(1.0-za_sxe)*vmask(ji,jj,jk)*tmask(ji,jj+jp,jk+kp) 
     638 
     639                       zarea=zdy*zdelta2(ji,jj,jk,kp+1) 
     640                       zvolf=zarea*e1t(ji,jj+jp)*zfact 
     641 
     642                       ftv(ji,jj,jk)= ftv(ji,jj,jk)+zsxe*zdzt*zvolf*ze2vr 
     643                       fsv(ji,jj,jk)= fsv(ji,jj,jk)+zsxe*zdzs*zvolf*ze2vr 
     644                       ftvd(ji,jj,jk)=ftvd(ji,jj,jk)+fsahtv(ji,jj,jk)*zdyt*zvolf*ze2vr 
     645                       fsvd(ji,jj,jk)=fsvd(ji,jj,jk)+fsahtv(ji,jj,jk)*zdys*zvolf*ze2vr 
     646                       tfw(ji,jj+jp,jk+kp)=tfw(ji,jj+jp,jk+kp)+(zvolf*ze3wr)*zsxe*zdyt 
     647                       sfw(ji,jj+jp,jk+kp)=sfw(ji,jj+jp,jk+kp)+(zvolf*ze3wr)*zsxe*zdys 
     648                       wslp2(ji,jj+jp,jk+kp)=wslp2(ji,jj+jp,jk+kp)+(zarea*ze3wr/e2t(ji,jj+jp))*zfact*(zsxe)**2 
     649 
     650                    END DO 
     651                 END DO 
     652 
     653              END DO 
     654           END DO 
     655        END DO 
     656 
     657        tfw(:,:,1)=0.0 
     658        sfw(:,:,1)=0.0 
     659        wslp2(:,:,1)=0.0 
     660 
     661        CALL lbc_lnk( wslp2, 'W', 1. ) 
     662        CALL lbc_lnk( tfw, 'W', 1. ) 
     663        CALL lbc_lnk( sfw, 'W', 1. ) 
     664        CALL lbc_lnk( ftu, 'U', -1. ) 
     665        CALL lbc_lnk( fsu, 'U', -1. ) 
     666        CALL lbc_lnk( ftv, 'V', -1. ) 
     667        CALL lbc_lnk( fsv, 'V', -1. ) 
     668        CALL lbc_lnk( ftud, 'U', -1. ) 
     669        CALL lbc_lnk( fsud, 'U', -1. ) 
     670        CALL lbc_lnk( ftvd, 'V', -1. ) 
     671        CALL lbc_lnk( fsvd, 'V', -1. ) 
     672 
     673 
     674      END SUBROUTINE ldf_slp_grif 
    342675 
    343676 
  • branches/DEV_r1924_nocs_latphys/NEMO/OPA_SRC/LDF/ldftra_oce.F90

    r1601 r2060  
    2020   LOGICAL , PUBLIC ::   ln_traldf_hor   = .FALSE.   !: horizontal (geopotential) direction 
    2121   LOGICAL , PUBLIC ::   ln_traldf_iso   = .TRUE.    !: iso-neutral direction 
     22   LOGICAL , PUBLIC ::   ln_traldf_grif  = .TRUE.    !: griffies skew flux 
     23   LOGICAL , PUBLIC ::   ln_traldf_vis   = .FALSE.   !: griffies skew flux 
    2224   REAL(wp), PUBLIC ::   rn_aht_0        = 2000._wp  !: lateral eddy diffusivity (m2/s) 
    2325   REAL(wp), PUBLIC ::   rn_ahtb_0       =    0._wp  !: lateral background eddy diffusivity (m2/s) 
    2426   REAL(wp), PUBLIC ::   rn_aeiv_0       = 2000._wp  !: eddy induced velocity coefficient (m2/s) 
    2527 
    26    REAL(wp), PUBLIC ::   aht0, ahtb0, aeiv0         !!: OLD namelist names 
     28!  REAL(wp), PUBLIC ::   aht0, ahtb0, aeiv0         !!: OLD namelist names 
    2729 
    2830#if defined key_traldf_c3d 
  • branches/DEV_r1924_nocs_latphys/NEMO/OPA_SRC/TRA/traadv.F90

    r1601 r2060  
    8484            zwn(:,:,:) = wn(:,:,:) 
    8585         ENDIF 
    86          CALL tra_adv_eiv( kt, zun, zvn, zwn )  
     86         IF (.NOT. ln_traldf_grif)  CALL tra_adv_eiv( kt, zun, zvn, zwn ) ! compute and add the eiv velocity 
    8787      ENDIF 
    8888 
  • branches/DEV_r1924_nocs_latphys/NEMO/OPA_SRC/TRA/traldf.F90

    r1601 r2060  
    2020   USE traldf_bilap    ! lateral mixing             (tra_ldf_bilap routine) 
    2121   USE traldf_iso      ! lateral mixing               (tra_ldf_iso routine) 
     22   USE traldf_iso_grif ! lateral mixing          (tra_ldf_iso_grif routine) 
    2223   USE traldf_lap      ! lateral mixing               (tra_ldf_lap routine) 
    2324   USE trdmod          ! ocean active tracers trends 
     
    7273      SELECT CASE ( nldf )                       ! compute lateral mixing trend and add it to the general trend 
    7374      CASE ( 0 )   ;   CALL tra_ldf_lap   ( kt )      ! iso-level laplacian 
    74       CASE ( 1 )   ;   CALL tra_ldf_iso   ( kt )      ! rotated laplacian (except dk[ dk[.] ] part) 
     75      CASE ( 1 ) 
     76         IF ( ln_traldf_grif ) THEN 
     77            CALL tra_ldf_iso_grif    ( kt )           ! Griffies quarter-cell formulation 
     78         ELSE 
     79            CALL tra_ldf_iso    ( kt )                ! rotated laplacian (except dk[ dk[.] ] part) 
     80         ENDIF 
    7581      CASE ( 2 )   ;   CALL tra_ldf_bilap ( kt )      ! iso-level bilaplacian 
    7682      CASE ( 3 )   ;   CALL tra_ldf_bilapg( kt )      ! s-coord. horizontal bilaplacian 
     
    8086         CALL prt_ctl( tab3d_1=ta, clinfo1=' ldf0 - Ta: ', mask1=tmask,               & 
    8187            &          tab3d_2=sa, clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
     88         IF ( ln_traldf_grif ) THEN 
     89            CALL tra_ldf_iso_grif    ( kt ) 
     90         ELSE 
    8291         CALL tra_ldf_iso    ( kt ) 
     92         ENDIF 
    8393         CALL prt_ctl( tab3d_1=ta, clinfo1=' ldf1 - Ta: ', mask1=tmask,               & 
    8494            &          tab3d_2=sa, clinfo2=       ' Sa: ', mask2=tmask, clinfo3='tra' ) 
     
    143153         WRITE(numout,*) '      horizontal (geopotential)   ln_traldf_hor   = ', ln_traldf_hor 
    144154         WRITE(numout,*) '      iso-neutral                 ln_traldf_iso   = ', ln_traldf_iso 
     155         WRITE(numout,*) '          iso-neutral (Griffies)      ln_traldf_grif  = ', ln_traldf_grif 
     156         WRITE(numout,*) '          Visbeck scheme for aeiv     ln_traldf_vis   = ', ln_traldf_vis 
    145157      ENDIF 
    146158 
  • branches/DEV_r1924_nocs_latphys/NEMO/OPA_SRC/TRA/trazdf_imp.F90

    r1517 r2060  
    136136#if defined key_ldfslp 
    137137      ! update and save of avt (and avs if double diffusive mixing) 
    138       IF( l_traldf_rot ) THEN 
     138      IF ( ln_traldf_grif ) THEN 
     139         DO jk = 2, jpkm1 
     140            DO jj = 2, jpjm1 
     141               DO ji = fs_2, fs_jpim1   ! vector opt. 
     142                  zavi = fsahtw(ji,jj,jk) * wslp2(ji,jj,jk)                ! vertical mixing coef. due to lateral mixing 
     143                  zwt(ji,jj,jk) = avt(ji,jj,jk) + zavi              ! zwt=avt+zavi (total vertical mixing coef. on temperature) 
     144# if defined key_zdfddm 
     145                  zavsi(ji,jj,jk) = fsavs(ji,jj,jk) + zavi          ! dd mixing: zavsi = total vertical mixing coef. on salinity 
     146# endif 
     147               END DO 
     148            END DO 
     149         END DO 
     150      ELSE IF (l_traldf_rot ) THEN 
    139151         DO jk = 2, jpkm1 
    140152            DO jj = 2, jpjm1 
     
    281293      END DO 
    282294 
    283       ! Surface boudary conditions 
     295      ! Surface boundary conditions 
    284296      DO jj = 2, jpjm1 
    285297         DO ji = fs_2, fs_jpim1   ! vector opt. 
  • branches/DEV_r1924_nocs_latphys/NEMO/OPA_SRC/step.F90

    r1793 r2060  
    8585   USE ldfslp          ! iso-neutral slopes               (ldf_slp routine) 
    8686   USE ldfeiv          ! eddy induced velocity coef.      (ldf_eiv routine) 
     87   USE ldfeiv_vis      ! eddy induced velocity coef.  (ldf_eiv_vis routine) 
    8788 
    8889   USE zdftmx          ! tide-induced vertical mixing     (zdf_tmx routine) 
     
    234235            &                              gtu, gsu, gru,  &    ! of t, s, rd at the last ocean level 
    235236            &                              gtv, gsv, grv ) 
     237         IF ( .NOT. ln_traldf_grif ) THEN 
    236238                         CALL ldf_slp( kstp, rhd, rn2b )        ! before slope of the lateral mixing 
     239         ELSE 
     240                         CALL ldf_slp_grif( kstp ) 
     241                         IF ( ln_dynldf_bilap .OR. ln_dynldf_iso ) CALL ldf_slp( kstp, rhd, rn2b ) 
     242      ENDIF 
    237243      ENDIF 
    238244#if defined key_traldf_c2d 
    239       IF( lk_traldf_eiv )   CALL ldf_eiv( kstp )      ! eddy induced velocity coefficient 
     245      IF( lk_traldf_eiv )  THEN                                  ! eddy induced velocity coefficient 
     246         IF ( ln_traldf_vis )   THEN 
     247            CALL ldf_eiv_vis( kstp ) 
     248         ELSE 
     249            CALL ldf_eiv( kstp ) 
     250         ENDIF 
     251      ENDIF 
    240252#  endif 
    241253 
Note: See TracChangeset for help on using the changeset viewer.