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

Changeset 2969


Ignore:
Timestamp:
2011-10-20T18:00:23+02:00 (13 years ago)
Author:
acc
Message:

branches/2011/dev_r2782_NOCS_Griffies ticket #838. Final style changes and removal of outdated comments

Location:
branches/2011/dev_r2782_NOCS_Griffies
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • branches/2011/dev_r2782_NOCS_Griffies/DOC/TexFiles/Namelist/namtra_ldf

    r2540 r2969  
    99   ln_traldf_hor    =  .false.  !  horizontal (geopotential)            (require "key_ldfslp" when ln_sco=T) 
    1010   ln_traldf_iso    =  .true.   !  iso-neutral                          (require "key_ldfslp") 
    11    ln_traldf_grif   =  .false.  !  griffies skew flux formulation       (require "key_ldfslp")  ! UNDER TEST, DO NOT USE 
    12    ln_traldf_gdia   =  .false.  !  griffies operator strfn diagnostics  (require "key_ldfslp")  ! UNDER TEST, DO NOT USE 
     11   ln_traldf_grif   =  .false.  !  griffies skew flux formulation       (require "key_ldfslp") 
     12   ln_traldf_gdia   =  .false.  !  griffies operator strfn diagnostics  (require "key_ldfslp") 
     13   ln_triad_iso     =  .false.  !  griffies operator calculates triads twice => pure lateral mixing in ML (require "key_ldfslp") 
     14   ln_botmix_grif   =  .false.  !  griffies operator with lateral mixing on bottom (require "key_ldfslp") 
    1315   !                       !  Coefficient 
    1416   rn_aht_0         =  2000.    !  horizontal eddy diffusivity for tracers [m2/s] 
  • branches/2011/dev_r2782_NOCS_Griffies/NEMOGCM/CONFIG/GYRE/EXP00/namelist

    r2715 r2969  
    463463   ln_traadv_muscl2 =  .false.  !  MUSCL2 scheme + cen2 at boundaries   
    464464   ln_traadv_ubs    =  .false.  !  UBS scheme                  
    465    ln_traadv_qck    =  .false.  !  QUCIKEST scheme                  
     465   ln_traadv_qck    =  .false.  !  QUICKEST scheme                  
    466466/ 
    467467!----------------------------------------------------------------------- 
     
    475475   ln_traldf_hor    =  .false.  !  horizontal (geopotential)            (require "key_ldfslp" when ln_sco=T) 
    476476   ln_traldf_iso    =  .true.   !  iso-neutral                          (require "key_ldfslp") 
    477    ln_traldf_grif   =  .false.  !  griffies skew flux formulation       (require "key_ldfslp")  ! UNDER TEST, DO NOT USE 
    478    ln_traldf_gdia   =  .false.  !  griffies operator strfn diagnostics  (require "key_ldfslp")  ! UNDER TEST, DO NOT USE 
     477   ln_traldf_grif   =  .false.  !  griffies skew flux formulation       (require "key_ldfslp") 
     478   ln_traldf_gdia   =  .false.  !  griffies operator strfn diagnostics  (require "key_ldfslp") 
     479   ln_triad_iso     =  .false.  !  griffies operator calculates triads twice => pure lateral mixing in ML (require "key_ldfslp") 
     480   ln_botmix_grif   =  .false.  !  griffies operator with lateral mixing on bottom (require "key_ldfslp") 
    479481   !                       !  Coefficient 
    480482   rn_aht_0         =  1000.    !  horizontal eddy diffusivity for tracers [m2/s] 
  • branches/2011/dev_r2782_NOCS_Griffies/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/namelist

    r2715 r2969  
    463463   ln_traadv_muscl2 =  .false.  !  MUSCL2 scheme + cen2 at boundaries   
    464464   ln_traadv_ubs    =  .false.  !  UBS scheme                  
    465    ln_traadv_qck    =  .false.  !  QUCIKEST scheme                  
     465   ln_traadv_qck    =  .false.  !  QUICKEST scheme                  
    466466/ 
    467467!----------------------------------------------------------------------- 
     
    475475   ln_traldf_hor    =  .false.  !  horizontal (geopotential)            (require "key_ldfslp" when ln_sco=T) 
    476476   ln_traldf_iso    =  .true.   !  iso-neutral                          (require "key_ldfslp") 
    477    ln_traldf_grif   =  .false.  !  griffies skew flux formulation       (require "key_ldfslp")  ! UNDER TEST, DO NOT USE 
    478    ln_traldf_gdia   =  .false.  !  griffies operator strfn diagnostics  (require "key_ldfslp")  ! UNDER TEST, DO NOT USE 
    479    !                       !  Coefficient 
     477   ln_traldf_grif   =  .false.  !  griffies skew flux formulation       (require "key_ldfslp") 
     478   ln_traldf_gdia   =  .false.  !  griffies operator strfn diagnostics  (require "key_ldfslp") 
     479   ln_triad_iso     =  .false.  !  griffies operator calculates triads twice => pure lateral mixing in ML (require "key_ldfslp") 
     480   ln_botmix_grif   =  .false.  !  griffies operator with lateral mixing on bottom (require "key_ldfslp") 
     481                         !  Coefficient 
    480482   rn_aht_0         =  2000.    !  horizontal eddy diffusivity for tracers [m2/s] 
    481483   rn_ahtb_0        =     0.    !  background eddy diffusivity for ldf_iso [m2/s] 
  • branches/2011/dev_r2782_NOCS_Griffies/NEMOGCM/CONFIG/ORCA2_OFF_PISCES/EXP00/namelist

    r2715 r2969  
    463463   ln_traadv_muscl2 =  .false.  !  MUSCL2 scheme + cen2 at boundaries   
    464464   ln_traadv_ubs    =  .false.  !  UBS scheme                  
    465    ln_traadv_qck    =  .false.  !  QUCIKEST scheme                  
     465   ln_traadv_qck    =  .false.  !  QUICKEST scheme 
    466466/ 
    467467!----------------------------------------------------------------------- 
     
    475475   ln_traldf_hor    =  .false.  !  horizontal (geopotential)            (require "key_ldfslp" when ln_sco=T) 
    476476   ln_traldf_iso    =  .true.   !  iso-neutral                          (require "key_ldfslp") 
    477    ln_traldf_grif   =  .false.  !  griffies skew flux formulation       (require "key_ldfslp")  ! UNDER TEST, DO NOT USE 
    478    ln_traldf_gdia   =  .false.  !  griffies operator strfn diagnostics  (require "key_ldfslp")  ! UNDER TEST, DO NOT USE 
    479    !                       !  Coefficient 
     477   ln_traldf_grif   =  .false.  !  griffies skew flux formulation       (require "key_ldfslp") 
     478   ln_traldf_gdia   =  .false.  !  griffies operator strfn diagnostics  (require "key_ldfslp") 
     479   ln_triad_iso     =  .false.  !  griffies operator calculates triads twice => pure lateral mixing in ML (require "key_ldfslp") 
     480   ln_botmix_grif   =  .false.  !  griffies operator with lateral mixing on bottom (require "key_ldfslp") 
     481                         !  Coefficient 
    480482   rn_aht_0         =  2000.    !  horizontal eddy diffusivity for tracers [m2/s] 
    481483   rn_ahtb_0        =     0.    !  background eddy diffusivity for ldf_iso [m2/s] 
  • branches/2011/dev_r2782_NOCS_Griffies/NEMOGCM/CONFIG/POMME/EXP00/namelist

    r2650 r2969  
    463463   ln_traadv_muscl2 =  .false.  !  MUSCL2 scheme + cen2 at boundaries   
    464464   ln_traadv_ubs    =  .false.  !  UBS scheme                  
    465    ln_traadv_qck    =  .false.  !  QUCIKEST scheme                  
     465   ln_traadv_qck    =  .false.  !  QUICKEST scheme                  
    466466/ 
    467467!----------------------------------------------------------------------- 
     
    475475   ln_traldf_hor    =  .false.  !  horizontal (geopotential)            (require "key_ldfslp" when ln_sco=T) 
    476476   ln_traldf_iso    =  .true.   !  iso-neutral                          (require "key_ldfslp") 
    477    ln_traldf_grif   =  .false.  !  griffies skew flux formulation       (require "key_ldfslp")  ! UNDER TEST, DO NOT USE 
    478    ln_traldf_gdia   =  .false.  !  griffies operator strfn diagnostics  (require "key_ldfslp")  ! UNDER TEST, DO NOT USE 
     477   ln_traldf_grif   =  .false.  !  griffies skew flux formulation       (require "key_ldfslp") 
     478   ln_traldf_gdia   =  .false.  !  griffies operator strfn diagnostics  (require "key_ldfslp") 
     479   ln_triad_iso     =  .false.  !  griffies operator calculates triads twice => pure lateral mixing in ML (require "key_ldfslp") 
     480   ln_botmix_grif   =  .false.  !  griffies operator with lateral mixing on bottom (require "key_ldfslp") 
    479481   !                       !  Coefficient 
    480482   rn_aht_0         =   300.    !  horizontal eddy diffusivity for tracers [m2/s] 
  • branches/2011/dev_r2782_NOCS_Griffies/NEMOGCM/NEMO/OPA_SRC/LDF/ldfslp.F90

    r2840 r2969  
    402402      !!---------------------------------------------------------------------- 
    403403      USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released 
    404       USE oce     , ONLY:   zalbet  => ua   ! use ua as workspace 
     404      USE oce     , ONLY:   zalbet  => ua       ! use ua as workspace 
    405405      USE wrk_nemo, ONLY:   z1_mlbw => wrk_2d_1 
    406406      !! 
    407       INTEGER, INTENT( in ) ::   kt         ! ocean time-step index 
     407      INTEGER, INTENT( in ) ::   kt             ! ocean time-step index 
    408408      !! 
    409409      INTEGER  ::   ji, jj, jk, jl, ip, jp, kp  ! dummy loop indices 
     
    425425      !--------------------------------! 
    426426      ! 
    427       CALL eos_alpbet( tsb, zalbet, zbeta0 )         !==  before local thermal/haline expension ratio at T-points  ==! 
    428       ! 
    429       DO jl = 0, 1                           !==  unmasked before density i- j-, k-gradients  ==! 
     427      CALL eos_alpbet( tsb, zalbet, zbeta0 )  !==  before local thermal/haline expension ratio at T-points  ==! 
     428      ! 
     429      DO jl = 0, 1                            !==  unmasked before density i- j-, k-gradients  ==! 
    430430         ! 
    431          ip = jl   ;   jp = jl        ! guaranteed nonzero gradients ( absolute value larger than repsln) 
    432          DO jk = 1, jpkm1                          ! done each pair of triad 
    433             DO jj = 1, jpjm1                       ! NB: not masked ==>  a minimum value is set 
    434                DO ji = 1, fs_jpim1   ! vector opt. 
     431         ip = jl   ;   jp = jl                ! guaranteed nonzero gradients ( absolute value larger than repsln) 
     432         DO jk = 1, jpkm1                     ! done each pair of triad 
     433            DO jj = 1, jpjm1                  ! NB: not masked ==>  a minimum value is set 
     434               DO ji = 1, fs_jpim1            ! vector opt. 
    435435                  zdit = ( tsb(ji+1,jj,jk,jp_tem) - tsb(ji,jj,jk,jp_tem) )    ! i-gradient of T & S at u-point 
    436436                  zdis = ( tsb(ji+1,jj,jk,jp_sal) - tsb(ji,jj,jk,jp_sal) ) 
     
    445445         END DO 
    446446         ! 
    447          IF( ln_zps.and.ln_grad_zps ) THEN                       ! partial steps: correction of i- & j-grad on bottom 
     447         IF( ln_zps.and.l_grad_zps ) THEN     ! partial steps: correction of i- & j-grad on bottom 
    448448# if defined key_vectopt_loop 
    449449            DO jj = 1, 1 
    450                DO ji = 1, jpij-jpi   ! vector opt. (forced unrolling) 
     450               DO ji = 1, jpij-jpi            ! vector opt. (forced unrolling) 
    451451# else 
    452452            DO jj = 1, jpjm1 
     
    466466      END DO 
    467467 
    468       DO kp = 0, 1                           !==  unmasked before density i- j-, k-gradients  ==! 
    469          DO jk = 1, jpkm1                          ! done each pair of triad 
    470             DO jj = 1, jpj                       ! NB: not masked ==>  a minimum value is set 
    471                DO ji = 1, jpi  ! vector opt. 
    472                   IF( jk+kp > 1 ) THEN                                       ! k-gradient of T & S a jk+kp 
     468      DO kp = 0, 1                            !==  unmasked before density i- j-, k-gradients  ==! 
     469         DO jk = 1, jpkm1                     ! done each pair of triad 
     470            DO jj = 1, jpj                    ! NB: not masked ==>  a minimum value is set 
     471               DO ji = 1, jpi                 ! vector opt. 
     472                  IF( jk+kp > 1 ) THEN        ! k-gradient of T & S a jk+kp 
    473473                     zdkt = ( tsb(ji,jj,jk+kp-1,jp_tem) - tsb(ji,jj,jk+kp,jp_tem) ) 
    474474                     zdks = ( tsb(ji,jj,jk+kp-1,jp_sal) - tsb(ji,jj,jk+kp,jp_sal) ) 
     
    484484      END DO 
    485485      ! 
    486       DO jj = 1, jpj                         !==  Reciprocal depth of the w-point below ML base  ==! 
     486      DO jj = 1, jpj                          !==  Reciprocal depth of the w-point below ML base  ==! 
    487487         DO ji = 1, jpi 
    488488            jk = MIN( nmln(ji,jj), mbkt(ji,jj) ) + 1     ! MIN in case ML depth is the ocean depth 
     
    491491      END DO 
    492492      ! 
    493       !                                      !==  intialisations to zero  ==! 
    494       ! 
    495       wslp2  (:,:,:)     = 0._wp                                        ! wslp2 will be cumulated 3D field set to zero 
     493      !                                       !==  intialisations to zero  ==! 
     494      ! 
     495      wslp2  (:,:,:)     = 0._wp              ! wslp2 will be cumulated 3D field set to zero 
    496496      triadi_g(:,:,1,:,:) = 0._wp   ;   triadi_g(:,:,jpk,:,:) = 0._wp   ! set surface and bottom slope to zero 
    497497      triadj_g(:,:,1,:,:) = 0._wp   ;   triadj_g(:,:,jpk,:,:) = 0._wp 
    498 !!gm _iso set to zero missing 
     498      !!gm _iso set to zero missing 
    499499      triadi  (:,:,1,:,:) = 0._wp   ;   triadj  (:,:,jpk,:,:) = 0._wp   ! set surface and bottom slope to zero 
    500500      triadj  (:,:,1,:,:) = 0._wp   ;   triadj  (:,:,jpk,:,:) = 0._wp 
     
    504504      !-------------------------------------! 
    505505      ! 
    506       DO jl = 0, 1               ! calculate slope of the 4 triads immediately ONE level below mixed-layer base 
    507          DO kp = 0, 1            ! with only the slope-max limit   and   MASKED 
     506      DO jl = 0, 1                            ! calculate slope of the 4 triads immediately ONE level below mixed-layer base 
     507         DO kp = 0, 1                         ! with only the slope-max limit   and   MASKED 
    508508            DO jj = 1, jpjm1 
    509509               DO ji = 1, fs_jpim1 
     
    527527      !-------------------------------------! 
    528528      ! 
    529       DO kp = 0, 1                        ! k-index of triads 
     529      DO kp = 0, 1                            ! k-index of triads 
    530530         DO jl = 0, 1 
    531             ip = jl   ;   jp = jl         ! i- and j-indices of triads (i-k and j-k planes) 
     531            ip = jl   ;   jp = jl             ! i- and j-indices of triads (i-k and j-k planes) 
    532532            DO jk = 1, jpkm1 
    533533               DO jj = 1, jpjm1 
    534                   DO ji = 1, fs_jpim1   ! vector opt. 
     534                  DO ji = 1, fs_jpim1         ! vector opt. 
    535535                     ! 
    536536                     ! Calculate slope relative to geopotentials used for GM skew fluxes 
     
    575575                     zti_lim  = ( zti_g_lim + zti_coord ) * umask(ji,jj,jk+kp)    ! remove coordinate slope => relative to coordinate surfaces 
    576576                     ztj_lim  = ( ztj_g_lim + ztj_coord ) * vmask(ji,jj,jk+kp) 
    577                      zti_lim2 = zti_lim * zti_lim      ! square of limited slopes            ! masked <<== 
     577                     zti_lim2 = zti_lim * zti_lim      ! square of limited slopes                          ! masked <<== 
    578578                     ztj_lim2 = ztj_lim * ztj_lim 
    579579                     ! 
     
    596596                     zbtj = e1t(ji,jj+jp) * e2t(ji,jj+jp) * fse3w(ji,jj+jp,jk+kp) 
    597597                     ! 
    598 !!gm this may inhibit vectorization on Vect Computers, and even on scalar computers....  ==> to be checked 
    599 ! agn may need to change to using ztj_g_lim**2, as wslp2 just used for eddy growth rate, needs *real* slope 
     598                     !!gm this may inhibit vectorization on Vect Computers, and even on scalar computers....  ==> to be checked 
     599                     ! agn may need to change to using ztj_g_lim**2, as wslp2 just used for eddy growth rate, needs *real* slope 
    600600                     wslp2 (ji+ip,jj,jk+kp) = wslp2(ji+ip,jj,jk+kp) + 0.25_wp * zbu / zbti * zti_lim2      ! masked 
    601601                     wslp2 (ji,jj+jp,jk+kp) = wslp2(ji,jj+jp,jk+kp) + 0.25_wp * zbv / zbtj * ztj_lim2 
     
    637637      REAL(wp), DIMENSION(:,:,:), INTENT(in) ::   p_dzr          ! z-gradient of density      (T-point) 
    638638      !! 
    639       INTEGER  ::   ji , jj , jk         ! dummy loop indices 
    640       INTEGER  ::   iku, ikv, ik, ikm1   ! local integers 
     639      INTEGER  ::   ji , jj , jk                   ! dummy loop indices 
     640      INTEGER  ::   iku, ikv, ik, ikm1             ! local integers 
    641641      REAL(wp) ::   zeps, zm1_g, zm1_2g            ! local scalars 
    642642      REAL(wp) ::   zci, zfi, zau, zbu, zai, zbi   !   -      - 
     
    654654      wslpjml(1,:) = 0._wp      ;      wslpjml(jpi,:) = 0._wp 
    655655      ! 
    656       !                          !==   surface mixed layer mask   ! 
    657       DO jk = 1, jpk                      ! =1 inside the mixed layer, =0 otherwise 
     656      !                                            !==   surface mixed layer mask   ! 
     657      DO jk = 1, jpk                               ! =1 inside the mixed layer, =0 otherwise 
    658658# if defined key_vectopt_loop 
    659659         DO jj = 1, 1 
    660             DO ji = 1, jpij   ! vector opt. (forced unrolling) 
     660            DO ji = 1, jpij                        ! vector opt. (forced unrolling) 
    661661# else 
    662662         DO jj = 1, jpj 
     
    689689         DO ji = 2, jpim1 
    690690# endif 
    691             !                    !==   Slope at u- & v-points just below the Mixed Layer   ==! 
     691            !                        !==   Slope at u- & v-points just below the Mixed Layer   ==! 
    692692            ! 
    693             !                          !- vertical density gradient for u- and v-slopes (from dzr at T-point) 
     693            !                        !- vertical density gradient for u- and v-slopes (from dzr at T-point) 
    694694            iku = MIN(  MAX( 1, nmln(ji,jj) , nmln(ji+1,jj) ) , jpkm1  )   ! ML (MAX of T-pts, bound by jpkm1) 
    695695            ikv = MIN(  MAX( 1, nmln(ji,jj) , nmln(ji,jj+1) ) , jpkm1  )   ! 
    696696            zbu = 0.5_wp * ( p_dzr(ji,jj,iku) + p_dzr(ji+1,jj  ,iku) ) 
    697697            zbv = 0.5_wp * ( p_dzr(ji,jj,ikv) + p_dzr(ji  ,jj+1,ikv) ) 
    698             !                          !- horizontal density gradient at u- & v-points 
     698            !                        !- horizontal density gradient at u- & v-points 
    699699            zau = p_gru(ji,jj,iku) / e1u(ji,jj) 
    700700            zav = p_grv(ji,jj,ikv) / e2v(ji,jj) 
    701             !                          !- bound the slopes: abs(zw.)<= 1/100 and zb..<0 
    702             !                                kxz max= ah slope max =< e1 e3 /(pi**2 2 dt) 
     701            !                        !- bound the slopes: abs(zw.)<= 1/100 and zb..<0 
     702            !                           kxz max= ah slope max =< e1 e3 /(pi**2 2 dt) 
    703703            zbu = MIN(  zbu , -100._wp* ABS( zau ) , -7.e+3_wp/fse3u(ji,jj,iku)* ABS( zau )  ) 
    704704            zbv = MIN(  zbv , -100._wp* ABS( zav ) , -7.e+3_wp/fse3v(ji,jj,ikv)* ABS( zav )  ) 
    705             !                          !- Slope at u- & v-points (uslpml, vslpml) 
     705            !                        !- Slope at u- & v-points (uslpml, vslpml) 
    706706            uslpml(ji,jj) = zau / ( zbu - zeps ) * umask(ji,jj,iku) 
    707707            vslpml(ji,jj) = zav / ( zbv - zeps ) * vmask(ji,jj,ikv) 
    708708            ! 
    709             !                    !==   i- & j-slopes at w-points just below the Mixed Layer   ==! 
     709            !                        !==   i- & j-slopes at w-points just below the Mixed Layer   ==! 
    710710            ! 
    711711            ik   = MIN( nmln(ji,jj) + 1, jpk ) 
    712712            ikm1 = MAX( 1, ik-1 ) 
    713             !                          !- vertical density gradient for w-slope (from N^2) 
     713            !                        !- vertical density gradient for w-slope (from N^2) 
    714714            zbw = zm1_2g * pn2 (ji,jj,ik) * ( prd (ji,jj,ik) + prd (ji,jj,ikm1) + 2. ) 
    715             !                          !- horizontal density i- & j-gradient at w-points 
     715            !                        !- horizontal density i- & j-gradient at w-points 
    716716            zci = MAX(   umask(ji-1,jj,ik  ) + umask(ji,jj,ik  )           & 
    717717               &       + umask(ji-1,jj,ikm1) + umask(ji,jj,ikm1) , zeps  ) * e1t(ji,jj) 
     
    722722            zaj =    (   p_grv(ji,jj-1,ik  ) + p_grv(ji,jj,ik  )           & 
    723723               &       + p_grv(ji,jj-1,ikm1) + p_grv(ji,jj,ikm1)  ) / zcj  * tmask(ji,jj,ik) 
    724             !                          !- bound the slopes: abs(zw.)<= 1/100 and zb..<0. 
    725             !                             kxz max= ah slope max =< e1 e3 /(pi**2 2 dt) 
     724            !                        !- bound the slopes: abs(zw.)<= 1/100 and zb..<0. 
     725            !                           kxz max= ah slope max =< e1 e3 /(pi**2 2 dt) 
    726726            zbi = MIN(  zbw , -100._wp* ABS( zai ) , -7.e+3_wp/fse3w(ji,jj,ik)* ABS( zai )  ) 
    727727            zbj = MIN(  zbw , -100._wp* ABS( zaj ) , -7.e+3_wp/fse3w(ji,jj,ik)* ABS( zaj )  ) 
    728             !                          !- i- & j-slope at w-points (wslpiml, wslpjml) 
     728            !                        !- i- & j-slope at w-points (wslpiml, wslpjml) 
    729729            wslpiml(ji,jj) = zai / ( zbi - zeps ) * tmask (ji,jj,ik) 
    730730            wslpjml(ji,jj) = zaj / ( zbj - zeps ) * tmask (ji,jj,ik) 
    731731         END DO 
    732732      END DO 
    733 !!gm this lbc_lnk should be useless.... 
     733      !!gm this lbc_lnk should be useless.... 
    734734      CALL lbc_lnk( uslpml , 'U', -1. )   ;   CALL lbc_lnk( vslpml , 'V', -1. )   ! lateral boundary cond. (sign change) 
    735735      CALL lbc_lnk( wslpiml, 'W', -1. )   ;   CALL lbc_lnk( wslpjml, 'W', -1. )   ! lateral boundary conditions 
     
    765765         IF( ln_dynldf_iso )   CALL ctl_stop( 'ldf_slp_init: Griffies operator on momentum not supported' ) 
    766766         ! 
    767          ! IF( ( ln_traldf_hor .OR. ln_dynldf_hor ) .AND. ln_sco )   & 
    768          !    CALL ctl_stop( 'ldf_slp_init: horizontal Griffies operator in s-coordinate not supported' ) 
    769          ! 
    770767      ELSE                             ! Madec operator : slopes at u-, v-, and w-points 
    771768         ALLOCATE( uslp(jpi,jpj,jpk) , vslp(jpi,jpj,jpk) , wslpi(jpi,jpj,jpk) , wslpj(jpi,jpj,jpk) ,                & 
     
    780777         wslpj(:,:,:) = 0._wp   ;   wslpjml(:,:) = 0._wp 
    781778 
    782 !!gm I no longer understand this..... 
     779         !!gm I no longer understand this..... 
    783780         IF( (ln_traldf_hor .OR. ln_dynldf_hor) .AND. .NOT. (lk_vvl .AND. ln_rstart) ) THEN 
    784781            IF(lwp)   WRITE(numout,*) '          Horizontal mixing in s-coordinate: slope = slope of s-surfaces' 
     
    813810   LOGICAL, PUBLIC, PARAMETER ::   lk_ldfslp = .FALSE.    !: slopes flag 
    814811CONTAINS 
    815    SUBROUTINE ldf_slp( kt, prd, pn2 )        ! Dummy routine 
     812   SUBROUTINE ldf_slp( kt, prd, pn2 )   ! Dummy routine 
    816813      INTEGER, INTENT(in) :: kt 
    817814      REAL, DIMENSION(:,:,:), INTENT(in) :: prd, pn2 
     
    822819      WRITE(*,*) 'ldf_slp_grif: You should not have seen this print! error?', kt 
    823820   END SUBROUTINE ldf_slp_grif 
    824    SUBROUTINE ldf_slp_init       ! Dummy routine 
     821   SUBROUTINE ldf_slp_init              ! Dummy routine 
    825822   END SUBROUTINE ldf_slp_init 
    826823#endif 
  • branches/2011/dev_r2782_NOCS_Griffies/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra.F90

    r2840 r2969  
    6767         &                 ln_traldf_level, ln_traldf_hor  , ln_traldf_iso,   & 
    6868         &                 ln_traldf_grif , ln_traldf_gdia,                   & 
    69          &                 ln_triad_iso , ln_botmix, ln_grad_zps,    & 
     69         &                 ln_triad_iso   , ln_botmix_grif,                   & 
    7070         &                 rn_aht_0       , rn_ahtb_0      , rn_aeiv_0,       & 
    7171         &                 rn_slpmax 
     
    9595         WRITE(numout,*) '      maximum isoppycnal slope      rn_slpmax       = ', rn_slpmax 
    9696         WRITE(numout,*) '   + griffies operator internal controls not set via the namelist (experimental): ' 
    97          WRITE(numout,*) '      calculate triads twice        ln_triad_iso     = ', ln_triad_iso 
    98          WRITE(numout,*) '      special Tgradts w ptl steps   ln_grad_zps     = ', ln_grad_zps 
    99          WRITE(numout,*) '      GM -->lat mixing on bottom    ln_botmix       = ', ln_botmix 
     97         WRITE(numout,*) '      calculate triads twice        ln_triad_iso    = ', ln_triad_iso 
     98         WRITE(numout,*) '      GM -->lat mixing on bottom    ln_botmix_grif  = ', ln_botmix_grif 
    10099         WRITE(numout,*) 
    101100      ENDIF 
  • branches/2011/dev_r2782_NOCS_Griffies/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra_oce.F90

    r2840 r2969  
    3232 
    3333   REAL(wp), PUBLIC ::   aht0, ahtb0, aeiv0         !!: OLD namelist names 
    34    LOGICAL , PUBLIC ::   ln_triad_iso     = .FALSE.   !: calculate triads twice 
    35    LOGICAL , PUBLIC ::   ln_grad_zps     = .FALSE.   !: special treatment for Horz Tgradients w partial steps 
    36    LOGICAL , PUBLIC ::   ln_botmix     = .FALSE.   !:  mixing on bottom 
     34   LOGICAL , PUBLIC ::   ln_triad_iso    = .FALSE.   !: calculate triads twice 
     35   LOGICAL , PUBLIC ::   ln_botmix_grif  = .FALSE.   !: mixing on bottom 
     36   LOGICAL , PUBLIC ::   l_grad_zps      = .FALSE.   !: special treatment for Horz Tgradients w partial steps  
    3737 
    3838#if defined key_traldf_c3d 
  • branches/2011/dev_r2782_NOCS_Griffies/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso_grif.F90

    r2958 r2969  
    3434   REAL(wp), PUBLIC, DIMENSION(:,:,:), ALLOCATABLE, SAVE ::   psix_eiv, psiy_eiv   !: eiv stream function (diag only) 
    3535   REAL(wp), PUBLIC, DIMENSION(:,:,:), ALLOCATABLE, SAVE ::   ah_wslp2             !: aeiv*w-slope^2 
    36    REAL(wp),         DIMENSION(:,:,:), ALLOCATABLE, SAVE ::   zdkt                 !  atypic workspace 
     36   REAL(wp),         DIMENSION(:,:,:), ALLOCATABLE, SAVE ::   zdkt3d               !: vertical tracer gradient at 2 levels 
    3737 
    3838   !! * Substitutions 
     
    108108      REAL(wp) ::  zmskv, zabe2, zcof2, zcoef4   !   -      - 
    109109      REAL(wp) ::  zcoef0, zbtr                  !   -      - 
    110       !REAL(wp), POINTER, DIMENSION(:,:,:) ::   zdkt           ! 2D+1 workspace 
    111110      ! 
    112111      REAL(wp) ::   zslope_skew, zslope_iso, zslope2, zbu, zbv 
     
    121120         CALL ctl_stop('tra_ldf_iso_grif: requested workspace arrays unavailable.')   ;   RETURN 
    122121      ENDIF 
    123       ! ARP - line below uses 'bounds re-mapping' which is only defined in 
    124       ! Fortran 2003 and up. We would be OK if code was written to use 
    125       ! zdkt(:,:,1:2) instead as then wouldn't need to re-map bounds. 
    126       ! As it is, we make zdkt a module array and allocate it in _alloc(). 
    127       !zdkt(1:jpi,1:jpj,0:1) => wrk_3d_9(:,:,1:2) 
    128122 
    129123      IF( kt == nit000.AND..NOT.ALLOCATED(ah_wslp2) )  THEN 
     
    131125         IF(lwp) WRITE(numout,*) 'tra_ldf_iso_grif : rotated laplacian diffusion operator on ', cdtype 
    132126         IF(lwp) WRITE(numout,*) '~~~~~~~~~~~' 
    133          ALLOCATE( ah_wslp2(jpi,jpj,jpk) , zdkt(jpi,jpj,0:1), STAT=ierr ) 
     127         ALLOCATE( ah_wslp2(jpi,jpj,jpk) , zdkt3d(jpi,jpj,0:1), STAT=ierr ) 
    134128         IF( lk_mpp   )   CALL mpp_sum ( ierr ) 
    135129         IF( ierr > 0 )   CALL ctl_stop('STOP', 'tra_ldf_iso_grif: unable to allocate arrays') 
     
    145139      !!---------------------------------------------------------------------- 
    146140 
    147 !!gm Future development: consider using Ah defined at T-points and attached to the 4 t-point triads 
     141      !!gm Future development: consider using Ah defined at T-points and attached to the 4 t-point triads 
    148142 
    149143      ah_wslp2(:,:,:) = 0._wp 
     
    161155                     ze3wr = 1._wp / fse3w(ji+ip,jj,jk+kp) 
    162156                     zbu   = 0.25_wp * e1u(ji,jj) * e2u(ji,jj) * fse3u(ji,jj,jk) 
    163                      zah   = fsahtu(ji,jj,jk)                                  !  fsaht(ji+ip,jj,jk) 
     157                     zah   = fsahtu(ji,jj,jk)                                  ! fsaht(ji+ip,jj,jk) 
    164158                     zslope_skew = triadi_g(ji+ip,jj,jk,1-ip,kp) 
    165159                     ! Subtract s-coordinate slope at t-points to give slope rel to s surfaces 
    166                      !    (do this by *adding* gradient of depth) 
     160                     ! (do this by *adding* gradient of depth) 
    167161                     zslope2 = zslope_skew + ( fsdept(ji+1,jj,jk) - fsdept(ji ,jj ,jk) ) * ze1ur * umask(ji,jj,jk+kp) 
    168162                     zslope2 = zslope2 *zslope2 
     
    170164                        &                     + zah * ( zbu * ze3wr / ( e1t(ji+ip,jj) * e2t(ji+ip,jj) ) ) * zslope2 
    171165                     IF( ln_traldf_gdia ) THEN 
    172                         zaei_slp = fsaeiw(ji+ip,jj,jk) * zslope_skew        !fsaeit(ji+ip,jj,jk)*zslope_skew 
     166                        zaei_slp = fsaeiw(ji+ip,jj,jk) * zslope_skew           ! fsaeit(ji+ip,jj,jk)*zslope_skew 
    173167                        psix_eiv(ji,jj,jk+kp) = psix_eiv(ji,jj,jk+kp) + 0.25_wp * zaei_slp 
    174168                     ENDIF 
     
    187181                     ze3wr = 1.0_wp / fse3w(ji,jj+jp,jk+kp) 
    188182                     zbv   = 0.25_wp * e1v(ji,jj) * e2v(ji,jj) * fse3v(ji,jj,jk) 
    189                      zah   = fsahtv(ji,jj,jk)                                       !fsaht(ji,jj+jp,jk) 
     183                     zah   = fsahtv(ji,jj,jk)                                  ! fsaht(ji,jj+jp,jk) 
    190184                     zslope_skew = triadj_g(ji,jj+jp,jk,1-jp,kp) 
    191185                     ! Subtract s-coordinate slope at t-points to give slope rel to s surfaces 
     
    196190                        &                     + zah * ( zbv * ze3wr / ( e1t(ji,jj+jp) * e2t(ji,jj+jp) ) ) * zslope2 
    197191                     IF( ln_traldf_gdia ) THEN 
    198                         zaei_slp = fsaeiw(ji,jj+jp,jk) * zslope_skew     !fsaeit(ji,jj+jp,jk)*zslope_skew 
     192                        zaei_slp = fsaeiw(ji,jj+jp,jk) * zslope_skew           ! fsaeit(ji,jj+jp,jk)*zslope_skew 
    199193                        psiy_eiv(ji,jj,jk+kp) = psiy_eiv(ji,jj,jk+kp) + 0.25_wp * zaei_slp 
    200194                     ENDIF 
     
    221215            END DO 
    222216         END DO 
    223          IF( ln_zps.and.ln_grad_zps ) THEN              ! partial steps: correction at the last level 
     217         IF( ln_zps.and.l_grad_zps ) THEN              ! partial steps: correction at the last level 
    224218# if defined key_vectopt_loop 
    225219            DO jj = 1, 1 
     
    242236            ! 
    243237            !                    !==  Vertical tracer gradient at level jk and jk+1 
    244             zdkt(:,:,1) = ( ptb(:,:,jk,jn) - ptb(:,:,jk+1,jn) ) * tmask(:,:,jk+1) 
     238            zdkt3d(:,:,1) = ( ptb(:,:,jk,jn) - ptb(:,:,jk+1,jn) ) * tmask(:,:,jk+1) 
    245239            ! 
    246             !                          ! surface boundary condition: zdkt(jk=1)=zdkt(jk=2) 
    247             IF( jk == 1 ) THEN   ;   zdkt(:,:,0) = zdkt(:,:,1) 
    248             ELSE                 ;   zdkt(:,:,0) = ( ptb(:,:,jk-1,jn) - ptb(:,:,jk,jn) ) * tmask(:,:,jk) 
     240            !                    ! surface boundary condition: zdkt3d(jk=0)=zdkt3d(jk=1) 
     241            IF( jk == 1 ) THEN   ;   zdkt3d(:,:,0) = zdkt3d(:,:,1) 
     242            ELSE                 ;   zdkt3d(:,:,0) = ( ptb(:,:,jk-1,jn) - ptb(:,:,jk,jn) ) * tmask(:,:,jk) 
    249243            ENDIF 
    250244 
    251245 
    252             IF (ln_botmix) THEN 
     246            IF (ln_botmix_grif) THEN 
    253247               DO ip = 0, 1              !==  Horizontal & vertical fluxes 
    254248                  DO kp = 0, 1 
     
    256250                        DO ji = 1, fs_jpim1 
    257251                           ze1ur = 1._wp / e1u(ji,jj) 
    258                            zdxt = zdit(ji,jj,jk) * ze1ur 
     252                           zdxt  = zdit(ji,jj,jk) * ze1ur 
    259253                           ze3wr = 1._wp / fse3w(ji+ip,jj,jk+kp) 
    260                            zdzt  = zdkt(ji+ip,jj,kp) * ze3wr 
     254                           zdzt  = zdkt3d(ji+ip,jj,kp) * ze3wr 
    261255                           zslope_skew = triadi_g(ji+ip,jj,jk,1-ip,kp) 
    262256                           zslope_iso  = triadi(ji+ip,jj,jk,1-ip,kp) 
    263257 
    264258                           zbu = 0.25_wp * e1u(ji,jj) * e2u(ji,jj) * fse3u(ji,jj,jk) 
    265                            ! ln_botmix is .T. don't mask zah for bottom half cells 
     259                           ! ln_botmix_grif is .T. don't mask zah for bottom half cells 
    266260                           zah = fsahtu(ji,jj,jk)   !*umask(ji,jj,jk+kp)         !fsaht(ji+ip,jj,jk)           ===>>  ???? 
    267261                           zah_slp  = zah * zslope_iso 
     
    279273                        DO ji = 1, fs_jpim1 
    280274                           ze2vr = 1._wp / e2v(ji,jj) 
    281                            zdyt = zdjt(ji,jj,jk) * ze2vr 
     275                           zdyt  = zdjt(ji,jj,jk) * ze2vr 
    282276                           ze3wr = 1._wp / fse3w(ji,jj+jp,jk+kp) 
    283                            zdzt = zdkt(ji,jj+jp,kp) * ze3wr 
     277                           zdzt  = zdkt3d(ji,jj+jp,kp) * ze3wr 
    284278                           zslope_skew = triadj_g(ji,jj+jp,jk,1-jp,kp) 
    285279                           zslope_iso  = triadj(ji,jj+jp,jk,1-jp,kp) 
    286280                           zbv = 0.25_wp * e1v(ji,jj) * e2v(ji,jj) * fse3v(ji,jj,jk) 
    287                            ! ln_botmix is .T. don't mask zah for bottom half cells 
    288                            zah = fsahtv(ji,jj,jk)        !*vmask(ji,jj,jk+kp)         !fsaht(ji,jj+jp,jk) 
     281                           ! ln_botmix_grif is .T. don't mask zah for bottom half cells 
     282                           zah = fsahtv(ji,jj,jk)        !*vmask(ji,jj,jk+kp)  ! fsaht(ji,jj+jp,jk) 
    289283                           zah_slp = zah * zslope_iso 
    290                            zaei_slp = fsaeiw(ji,jj+jp,jk) * zslope_skew    !fsaeit(ji,jj+jp,jk)*zslope_skew 
     284                           zaei_slp = fsaeiw(ji,jj+jp,jk) * zslope_skew        ! fsaeit(ji,jj+jp,jk)*zslope_skew 
    291285                           zftv(ji,jj,jk) = zftv(ji,jj,jk) - ( zah * zdyt + (zah_slp - zaei_slp) * zdzt ) * zbv * ze2vr 
    292286                           ztfw(ji,jj+jp,jk+kp) = ztfw(ji,jj+jp,jk+kp) - (zah_slp + zaei_slp) * zdyt * zbv * ze3wr 
     
    301295                        DO ji = 1, fs_jpim1 
    302296                           ze1ur = 1._wp / e1u(ji,jj) 
    303                            zdxt = zdit(ji,jj,jk) * ze1ur 
     297                           zdxt  = zdit(ji,jj,jk) * ze1ur 
    304298                           ze3wr = 1._wp / fse3w(ji+ip,jj,jk+kp) 
    305                            zdzt  = zdkt(ji+ip,jj,kp) * ze3wr 
     299                           zdzt  = zdkt3d(ji+ip,jj,kp) * ze3wr 
    306300                           zslope_skew = triadi_g(ji+ip,jj,jk,1-ip,kp) 
    307301                           zslope_iso  = triadi(ji+ip,jj,jk,1-ip,kp) 
    308302 
    309303                           zbu = 0.25_wp * e1u(ji,jj) * e2u(ji,jj) * fse3u(ji,jj,jk) 
    310                            ! ln_botmix is .F. mask zah for bottom half cells 
    311                            zah = fsahtu(ji,jj,jk) * umask(ji,jj,jk+kp)         !fsaht(ji+ip,jj,jk)           ===>>  ???? 
     304                           ! ln_botmix_grif is .F. mask zah for bottom half cells 
     305                           zah = fsahtu(ji,jj,jk) * umask(ji,jj,jk+kp)         ! fsaht(ji+ip,jj,jk)   ===>>  ???? 
    312306                           zah_slp  = zah * zslope_iso 
    313                            zaei_slp = fsaeiw(ji+ip,jj,jk) * zslope_skew    !fsaeit(ji+ip,jj,jk)*zslope_skew 
     307                           zaei_slp = fsaeiw(ji+ip,jj,jk) * zslope_skew        ! fsaeit(ji+ip,jj,jk)*zslope_skew 
    314308                           zftu(ji,jj,jk) = zftu(ji,jj,jk) - ( zah * zdxt + (zah_slp - zaei_slp) * zdzt ) * zbu * ze1ur 
    315309                           ztfw(ji+ip,jj,jk+kp) = ztfw(ji+ip,jj,jk+kp) - (zah_slp + zaei_slp) * zdxt * zbu * ze3wr 
     
    324318                        DO ji = 1, fs_jpim1 
    325319                           ze2vr = 1._wp / e2v(ji,jj) 
    326                            zdyt = zdjt(ji,jj,jk) * ze2vr 
     320                           zdyt  = zdjt(ji,jj,jk) * ze2vr 
    327321                           ze3wr = 1._wp / fse3w(ji,jj+jp,jk+kp) 
    328                            zdzt = zdkt(ji,jj+jp,kp) * ze3wr 
     322                           zdzt  = zdkt3d(ji,jj+jp,kp) * ze3wr 
    329323                           zslope_skew = triadj_g(ji,jj+jp,jk,1-jp,kp) 
    330324                           zslope_iso  = triadj(ji,jj+jp,jk,1-jp,kp) 
    331325                           zbv = 0.25_wp * e1v(ji,jj) * e2v(ji,jj) * fse3v(ji,jj,jk) 
    332                            ! ln_botmix is .F. mask zah for bottom half cells 
    333                            zah = fsahtv(ji,jj,jk) * vmask(ji,jj,jk+kp)         !fsaht(ji,jj+jp,jk) 
     326                           ! ln_botmix_grif is .F. mask zah for bottom half cells 
     327                           zah = fsahtv(ji,jj,jk) * vmask(ji,jj,jk+kp)         ! fsaht(ji,jj+jp,jk) 
    334328                           zah_slp = zah * zslope_iso 
    335                            zaei_slp = fsaeiw(ji,jj+jp,jk) * zslope_skew    !fsaeit(ji,jj+jp,jk)*zslope_skew 
     329                           zaei_slp = fsaeiw(ji,jj+jp,jk) * zslope_skew        ! fsaeit(ji,jj+jp,jk)*zslope_skew 
    336330                           zftv(ji,jj,jk) = zftv(ji,jj,jk) - ( zah * zdyt + (zah_slp - zaei_slp) * zdzt ) * zbv * ze2vr 
    337331                           ztfw(ji,jj+jp,jk+kp) = ztfw(ji,jj+jp,jk+kp) - (zah_slp + zaei_slp) * zdyt * zbv * ze3wr 
     
    341335               END DO 
    342336            END IF 
    343             !                        !==  divergence and add to the general trend  ==! 
     337            !                          !==  divergence and add to the general trend  ==! 
    344338            DO jj = 2 , jpjm1 
    345                DO ji = fs_2, fs_jpim1   ! vector opt. 
     339               DO ji = fs_2, fs_jpim1  ! vector opt. 
    346340                  zbtr = 1._wp / ( e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) ) 
    347341                  pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + zbtr * (   zftu(ji-1,jj,jk) - zftu(ji,jj,jk)   & 
     
    352346         END DO 
    353347         ! 
    354          DO jk = 1, jpkm1            !== Divergence of vertical fluxes added to the general tracer trend 
     348         DO jk = 1, jpkm1              !== Divergence of vertical fluxes added to the general tracer trend 
    355349            DO jj = 2, jpjm1 
    356                DO ji = fs_2, fs_jpim1   ! vector opt. 
     350               DO ji = fs_2, fs_jpim1  ! vector opt. 
    357351                  pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + (  ztfw(ji,jj,jk+1) - ztfw(ji,jj,jk)  )   & 
    358352                     &                                / ( e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) ) 
     
    361355         END DO 
    362356         ! 
    363          !                            ! "Poleward" diffusive heat or salt transports (T-S case only) 
     357         !                             ! "Poleward" diffusive heat or salt transports (T-S case only) 
    364358         IF( cdtype == 'TRA' .AND. ln_diaptr .AND. ( MOD( kt, nn_fptr ) == 0 ) ) THEN 
    365359            IF( jn == jp_tem)   htr_ldf(:) = ptr_vj( zftv(:,:,:) )        ! 3.3  names 
     
    391385            z2d(:,:) = zztmp * z2d(:,:) 
    392386            CALL lbc_lnk( z2d, 'V', -1. ) 
    393             CALL iom_put( "vdiff_heattr", z2d )                  !  heat transport in i-direction 
     387            CALL iom_put( "vdiff_heattr", z2d )                  !  heat transport in j-direction 
    394388         END IF 
    395389#endif 
Note: See TracChangeset for help on using the changeset viewer.