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

Changeset 1388


Ignore:
Timestamp:
2009-04-07T17:10:46+02:00 (15 years ago)
Author:
rblod
Message:

Add bfore Brunt-Vaisala frequency for evd, see ticket #401

Location:
branches/dev_004_VVL/NEMO/OPA_SRC
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • branches/dev_004_VVL/NEMO/OPA_SRC/LDF/ldfeiv.F90

    r1146 r1388  
    9494            ! of the square root of the resulting N^2 ( required to compute 
    9595            ! internal Rossby radius Ro = .5 * sum_jpk(N) / f 
    96             zn2 = MAX( rn2(ji,1,jk), 0.e0 ) 
     96            zn2 = MAX( rn2b(ji,1,jk), 0.e0 ) 
    9797            zn(ji,1) = zn(ji,1) + SQRT( zn2 ) * fse3w(ji,1,jk) 
    9898            ! Compute elements required for the inverse time scale of baroclinic 
     
    113113               ! of the square root of the resulting N^2 ( required to compute  
    114114               ! internal Rossby radius Ro = .5 * sum_jpk(N) / f  
    115                zn2 = MAX( rn2(ji,jj,jk), 0.e0 ) 
     115               zn2 = MAX( rn2b(ji,jj,jk), 0.e0 ) 
    116116               zn(ji,jj) = zn(ji,jj) + SQRT( zn2 ) * fse3w(ji,jj,jk) 
    117117               ! Compute elements required for the inverse time scale of baroclinic 
  • branches/dev_004_VVL/NEMO/OPA_SRC/ZDF/zdfevd.F90

    r1152 r1388  
    7979         DO jk = 1, jpkm1                                 ! Horizontal slab 
    8080            !                                             ! =============== 
    81 #   if defined key_vectopt_loop 
     81#if defined key_vectopt_loop 
    8282!!!         WHERE( rn2(:,:,jk) <= -1.e-12 ) avt(:,:,jk) = tmask(:,:,jk) * avevd   ! agissant sur T SEUL! 
    8383            jj = 1                     ! big loop forced 
    8484            DO ji = jpi+2, jpij    
    85 #   if defined key_zdfkpp 
     85# if defined key_zdfkpp 
    8686!! no implicit mixing in the boundary layer with KPP 
    87                IF( ( rn2(ji,jj,jk) <= -1.e-12 ) .AND. ( fsdepw(ji,jj,jk) > hkpp(ji,jj) ) ) THEN 
    88 #   else 
    89                IF( rn2(ji,jj,jk) <= -1.e-12 ) THEN 
    90 #   endif 
     87               IF( ( MIN( rn2(ji,jj,jk), rn2b(ji,jj,jk) ) <= -1.e-12 ) .AND. ( fsdepw(ji,jj,jk) > hkpp(ji,jj) ) ) THEN 
     88# else 
     89               IF(   MIN( rn2(ji,jj,jk), rn2b(ji,jj,jk) ) <= -1.e-12 ) THEN 
     90# endif 
    9191                  avt (ji  ,jj  ,jk) = avevd * tmask(ji  ,jj  ,jk) 
    9292                  avmu(ji  ,jj  ,jk) = avevd * umask(ji  ,jj  ,jk) 
     
    9696               ENDIF 
    9797            END DO 
    98 #   else 
     98#else 
    9999            DO jj = 2, jpj             ! no vector opt. 
    100100               DO ji = 2, jpi 
    101 #   if defined key_zdfkpp 
     101# if defined key_zdfkpp 
    102102!! no implicit mixing in the boundary layer with KPP 
    103                IF( ( rn2(ji,jj,jk) <= -1.e-12 ) .AND. ( fsdepw(ji,jj,jk) > hkpp(ji,jj) ) ) THEN 
    104 #   else 
    105                IF( rn2(ji,jj,jk) <= -1.e-12 ) THEN 
    106 #   endif 
     103               IF( ( MIN( rn2(ji,jj,jk),  rn2b(ji,jj,jk) ) <= -1.e-12 ) .AND. ( fsdepw(ji,jj,jk) > hkpp(ji,jj) ) ) THEN 
     104# else 
     105               IF(   MIN( rn2(ji,jj,jk),  rn2b(ji,jj,jk) ) <= -1.e-12 ) THEN 
     106# endif 
    107107                     avt (ji  ,jj  ,jk) = avevd * tmask(ji  ,jj  ,jk) 
    108108                     avmu(ji  ,jj  ,jk) = avevd * umask(ji  ,jj  ,jk) 
     
    113113               END DO 
    114114            END DO 
    115 #   endif 
     115#endif 
    116116            !                                             ! =============== 
    117117         END DO                                           !   End of slab 
     
    129129            !                                             ! =============== 
    130130!!!         WHERE( rn2(:,:,jk) <= -1.e-12 ) avt(:,:,jk) = tmask(:,:,jk) * avevd   ! agissant sur T SEUL!  
    131 #   if defined key_vectopt_loop 
     131#if defined key_vectopt_loop 
    132132            jj = 1                     ! big loop forced 
    133133            DO ji = 1, jpij    
    134 #   if defined key_zdfkpp 
     134# if defined key_zdfkpp 
    135135!! no implicit mixing in the boundary layer with KPP 
    136                IF( ( rn2(ji,jj,jk) <= -1.e-12 ) .AND. ( fsdepw(ji,jj,jk) > hkpp(ji,jj) ) ) &               
     136               IF( ( MIN( rn2(ji,jj,jk), rn2b(ji,jj,jk) ) <= -1.e-12 ) .AND. ( fsdepw(ji,jj,jk) > hkpp(ji,jj) ) ) &               
     137# else 
     138               IF(   MIN( rn2(ji,jj,jk), rn2b(ji,jj,jk) ) <= -1.e-12 ) & 
     139# endif 
    137140                  avt(ji,jj,jk) = avevd * tmask(ji,jj,jk) 
    138 #   else 
    139                IF( rn2(ji,jj,jk) <= -1.e-12 )   avt(ji,jj,jk) = avevd * tmask(ji,jj,jk) 
    140 #   endif 
    141141            END DO 
    142 #   else 
     142#else 
    143143            DO jj = 1, jpj             ! loop over the whole domain (no lbc_lnk call) 
    144144               DO ji = 1, jpi 
    145 #   if defined key_zdfkpp 
     145# if defined key_zdfkpp 
    146146!! no implicit mixing in the boundary layer with KPP 
    147                IF( ( rn2(ji,jj,jk) <= -1.e-12 ) .AND. ( fsdepw(ji,jj,jk) > hkpp(ji,jj) ) ) &           
    148                   avt(ji,jj,jk) = avevd * tmask(ji,jj,jk) 
    149 #   else 
    150                   IF( rn2(ji,jj,jk) <= -1.e-12 )   avt(ji,jj,jk) = avevd * tmask(ji,jj,jk) 
    151 #   endif 
     147                  IF( ( MIN( rn2(ji,jj,jk), rn2b(ji,jj,jk) ) <= -1.e-12 ) .AND. ( fsdepw(ji,jj,jk) > hkpp(ji,jj) ) ) &           
     148# else 
     149                  IF(   MIN( rn2(ji,jj,jk), rn2b(ji,jj,jk) ) <= -1.e-12 ) & 
     150# endif 
     151                     avt(ji,jj,jk) = avevd * tmask(ji,jj,jk) 
    152152               END DO 
    153153            END DO 
    154 #   endif 
     154#endif 
    155155            !                                             ! =============== 
    156156         END DO                                           !   End of slab 
  • branches/dev_004_VVL/NEMO/OPA_SRC/ZDF/zdftke.F90

    r1268 r1388  
    224224!CDIR NOVERRCHK 
    225225            DO ji = fs_2, fs_jpim1   ! vector opt. 
    226                zrn2 = MAX( rn2(ji,jj,jk), rsmall ) 
     226               zrn2 = MAX( rn2b(ji,jj,jk), rsmall ) 
    227227               zmxlm(ji,jj,jk) = MAX(  rn_lmin,  SQRT( 2. * en(ji,jj,jk) / zrn2 )  ) 
    228228            END DO 
     
    321321         ! 
    322322         ! Computation of total energy produce by LC : cumulative sum over jk 
    323          zpelc(:,:,1) =  MAX( rn2(:,:,1), 0. ) * fsdepw(:,:,1) * fse3w(:,:,1) 
     323         zpelc(:,:,1) =  MAX( rn2b(:,:,1), 0. ) * fsdepw(:,:,1) * fse3w(:,:,1) 
    324324         DO jk = 2, jpk 
    325             zpelc(:,:,jk)  = zpelc(:,:,jk-1) + MAX( rn2(:,:,jk), 0. ) * fsdepw(:,:,jk) * fse3w(:,:,jk) 
     325            zpelc(:,:,jk)  = zpelc(:,:,jk-1) + MAX( rn2b(:,:,jk), 0. ) * fsdepw(:,:,jk) * fse3w(:,:,jk) 
    326326         END DO 
    327327         ! 
     
    427427                  zdkv = zcoef * (  vb( ji ,jj-1,jk-1) + vb(ji,jj,jk-1)   & 
    428428                     &            - vb( ji ,jj-1,jk  ) - vb(ji,jj,jk  )  ) 
    429                   zesh2 =  eboost * ( zdku*zdku + zdkv*zdkv ) - rn2(ji,jj,jk)        ! coefficient (zesh2) 
     429                  zesh2 =  eboost * ( zdku*zdku + zdkv*zdkv ) - rn2b(ji,jj,jk)        ! coefficient (zesh2) 
    430430                  ! 
    431431                  !                                                             ! Matrix 
     
    464464                  &               - vb(ji  ,jj-1,jk  ) - vb(ji,jj,jk  )  ) 
    465465                  zsh2 = zdku * zdku + zdkv * zdkv                                   ! square of shear 
    466                   zri  = MAX( rn2(ji,jj,jk), 0. ) / ( zsh2 + 1.e-20 )                ! local Richardson number 
     466                  zri  = MAX( rn2b(ji,jj,jk), 0. ) / ( zsh2 + 1.e-20 )                ! local Richardson number 
    467467# if defined key_c1d 
    468468                  e_ric(ji,jj,jk) = zri * tmask(ji,jj,jk)                            ! c1d config. : save Ri  
     
    471471                  IF( zri >= 0.2 )   zpdl = 0.2 / zri 
    472472                  zpdl = MAX( 0.1, zpdl ) 
    473                   zesh2 = eboost * zsh2 - zpdl * rn2(ji,jj,jk)                       ! coefficient (esh2) 
     473                  zesh2 = eboost * zsh2 - zpdl * rn2b(ji,jj,jk)                       ! coefficient (esh2) 
    474474                  ! 
    475475                  !                                                             ! Matrix 
  • branches/dev_004_VVL/NEMO/OPA_SRC/oce.F90

    r1380 r1388  
    3939      rhd ,                              &  !: in situ density anomalie rhd=(rho-rau0)/rau0 (no units) 
    4040      rhop,                              &  !: potential volumic mass (kg/m3) 
    41       rn2                                   !: brunt-vaisala frequency (1/s2) 
     41      rn2,                               &  !: now    brunt-vaisala frequency (1/s2) 
     42      rn2b                                  !: before brunt-vaisala frequency (1/s2) 
     43 
    4244 
    4345      !! advection scheme choice 
  • branches/dev_004_VVL/NEMO/OPA_SRC/step.F90

    r1380 r1388  
    208208                       CALL div_cur( kstp )                 ! Horizontal divergence & Relative vorticity 
    209209      IF( n_cla == 1 ) CALL div_cla( kstp )                 ! Cross Land Advection (Update Hor. divergence) 
    210                        CALL ssh_wzv( kstp       )           ! after ssh & vertical velocity 
     210                       CALL ssh_wzv( kstp )                 ! after ssh & vertical velocity 
    211211 
    212212      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
     
    232232      ! N.B. ua, va, ta, sa arrays are used as workspace in this section 
    233233      !----------------------------------------------------------------------- 
    234 #if defined key_zdftke2 
    235                         CALL bn2( tn, sn, rn2 )              ! now Brunt-Vaisala frequency 
    236 #else 
    237                         CALL bn2( tb, sb, rn2 )              ! before Brunt-Vaisala frequency 
    238 #endif 
     234      IF( neuler == 0 .AND. kstp == nit000 ) THEN 
     235                        CALL bn2( tn, sn, rn2 )              ! now    Brunt-Vaisala frequency 
     236                        rn2b(:,:,:) = rn2(:,:,:) 
     237      ELSE 
     238                        rn2b(:,:,:) = rn2(:,:,:)             ! before Brunt-Vaisala frequency   
     239                        CALL bn2( tn, sn, rn2 )              ! now    Brunt-Vaisala frequency 
     240      ENDIF 
     241 
    239242      !                                                     ! Vertical eddy viscosity and diffusivity coefficients 
    240243      IF( lk_zdfric )   CALL zdf_ric( kstp )                       ! Richardson number dependent Kz 
     
    266269#if defined key_zdftke2 
    267270      IF( .NOT. ln_dynhpg_imp ) THEN 
    268                         CALL bn2( tb, sb, rn2 )              ! before Brunt-Vaisala frequency 
    269271                        CALL eos( tb, sb, rhd, rhop )        ! now (swap=before) in situ density for dynhpg module 
    270272#endif 
     
    274276      ! N.B. ua, va, ta, sa arrays are used as workspace in this section 
    275277      !----------------------------------------------------------------------- 
    276       IF( lk_ldfslp     )   CALL ldf_slp( kstp, rhd, rn2 )       ! before slope of the lateral mixing 
     278      IF( lk_ldfslp     )   CALL ldf_slp( kstp, rhd, rn2b )      ! before slope of the lateral mixing 
    277279#if defined key_traldf_c2d 
    278280      IF( lk_traldf_eiv )   CALL ldf_eiv( kstp )                 ! eddy induced velocity coefficient 
Note: See TracChangeset for help on using the changeset viewer.