- Timestamp:
- 2009-04-07T17:10:46+02:00 (15 years ago)
- 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 94 94 ! of the square root of the resulting N^2 ( required to compute 95 95 ! 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 ) 97 97 zn(ji,1) = zn(ji,1) + SQRT( zn2 ) * fse3w(ji,1,jk) 98 98 ! Compute elements required for the inverse time scale of baroclinic … … 113 113 ! of the square root of the resulting N^2 ( required to compute 114 114 ! 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 ) 116 116 zn(ji,jj) = zn(ji,jj) + SQRT( zn2 ) * fse3w(ji,jj,jk) 117 117 ! Compute elements required for the inverse time scale of baroclinic -
branches/dev_004_VVL/NEMO/OPA_SRC/ZDF/zdfevd.F90
r1152 r1388 79 79 DO jk = 1, jpkm1 ! Horizontal slab 80 80 ! ! =============== 81 # 81 #if defined key_vectopt_loop 82 82 !!! WHERE( rn2(:,:,jk) <= -1.e-12 ) avt(:,:,jk) = tmask(:,:,jk) * avevd ! agissant sur T SEUL! 83 83 jj = 1 ! big loop forced 84 84 DO ji = jpi+2, jpij 85 # 85 # if defined key_zdfkpp 86 86 !! 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) ) ) THEN88 # 89 IF( rn2(ji,jj,jk) <= -1.e-12 ) THEN90 # 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 91 91 avt (ji ,jj ,jk) = avevd * tmask(ji ,jj ,jk) 92 92 avmu(ji ,jj ,jk) = avevd * umask(ji ,jj ,jk) … … 96 96 ENDIF 97 97 END DO 98 # 98 #else 99 99 DO jj = 2, jpj ! no vector opt. 100 100 DO ji = 2, jpi 101 # 101 # if defined key_zdfkpp 102 102 !! 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) ) ) THEN104 # 105 IF( rn2(ji,jj,jk) <= -1.e-12 ) THEN106 # 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 107 107 avt (ji ,jj ,jk) = avevd * tmask(ji ,jj ,jk) 108 108 avmu(ji ,jj ,jk) = avevd * umask(ji ,jj ,jk) … … 113 113 END DO 114 114 END DO 115 # 115 #endif 116 116 ! ! =============== 117 117 END DO ! End of slab … … 129 129 ! ! =============== 130 130 !!! WHERE( rn2(:,:,jk) <= -1.e-12 ) avt(:,:,jk) = tmask(:,:,jk) * avevd ! agissant sur T SEUL! 131 # 131 #if defined key_vectopt_loop 132 132 jj = 1 ! big loop forced 133 133 DO ji = 1, jpij 134 # 134 # if defined key_zdfkpp 135 135 !! 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 137 140 avt(ji,jj,jk) = avevd * tmask(ji,jj,jk) 138 # else139 IF( rn2(ji,jj,jk) <= -1.e-12 ) avt(ji,jj,jk) = avevd * tmask(ji,jj,jk)140 # endif141 141 END DO 142 # 142 #else 143 143 DO jj = 1, jpj ! loop over the whole domain (no lbc_lnk call) 144 144 DO ji = 1, jpi 145 # 145 # if defined key_zdfkpp 146 146 !! 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) 152 152 END DO 153 153 END DO 154 # 154 #endif 155 155 ! ! =============== 156 156 END DO ! End of slab -
branches/dev_004_VVL/NEMO/OPA_SRC/ZDF/zdftke.F90
r1268 r1388 224 224 !CDIR NOVERRCHK 225 225 DO ji = fs_2, fs_jpim1 ! vector opt. 226 zrn2 = MAX( rn2 (ji,jj,jk), rsmall )226 zrn2 = MAX( rn2b(ji,jj,jk), rsmall ) 227 227 zmxlm(ji,jj,jk) = MAX( rn_lmin, SQRT( 2. * en(ji,jj,jk) / zrn2 ) ) 228 228 END DO … … 321 321 ! 322 322 ! 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) 324 324 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) 326 326 END DO 327 327 ! … … 427 427 zdkv = zcoef * ( vb( ji ,jj-1,jk-1) + vb(ji,jj,jk-1) & 428 428 & - 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) 430 430 ! 431 431 ! ! Matrix … … 464 464 & - vb(ji ,jj-1,jk ) - vb(ji,jj,jk ) ) 465 465 zsh2 = zdku * zdku + zdkv * zdkv ! square of shear 466 zri = MAX( rn2 (ji,jj,jk), 0. ) / ( zsh2 + 1.e-20 ) ! local Richardson number466 zri = MAX( rn2b(ji,jj,jk), 0. ) / ( zsh2 + 1.e-20 ) ! local Richardson number 467 467 # if defined key_c1d 468 468 e_ric(ji,jj,jk) = zri * tmask(ji,jj,jk) ! c1d config. : save Ri … … 471 471 IF( zri >= 0.2 ) zpdl = 0.2 / zri 472 472 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) 474 474 ! 475 475 ! ! Matrix -
branches/dev_004_VVL/NEMO/OPA_SRC/oce.F90
r1380 r1388 39 39 rhd , & !: in situ density anomalie rhd=(rho-rau0)/rau0 (no units) 40 40 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 42 44 43 45 !! advection scheme choice -
branches/dev_004_VVL/NEMO/OPA_SRC/step.F90
r1380 r1388 208 208 CALL div_cur( kstp ) ! Horizontal divergence & Relative vorticity 209 209 IF( n_cla == 1 ) CALL div_cla( kstp ) ! Cross Land Advection (Update Hor. divergence) 210 CALL ssh_wzv( kstp )! after ssh & vertical velocity210 CALL ssh_wzv( kstp ) ! after ssh & vertical velocity 211 211 212 212 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … … 232 232 ! N.B. ua, va, ta, sa arrays are used as workspace in this section 233 233 !----------------------------------------------------------------------- 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 239 242 ! ! Vertical eddy viscosity and diffusivity coefficients 240 243 IF( lk_zdfric ) CALL zdf_ric( kstp ) ! Richardson number dependent Kz … … 266 269 #if defined key_zdftke2 267 270 IF( .NOT. ln_dynhpg_imp ) THEN 268 CALL bn2( tb, sb, rn2 ) ! before Brunt-Vaisala frequency269 271 CALL eos( tb, sb, rhd, rhop ) ! now (swap=before) in situ density for dynhpg module 270 272 #endif … … 274 276 ! N.B. ua, va, ta, sa arrays are used as workspace in this section 275 277 !----------------------------------------------------------------------- 276 IF( lk_ldfslp ) CALL ldf_slp( kstp, rhd, rn2 )! before slope of the lateral mixing278 IF( lk_ldfslp ) CALL ldf_slp( kstp, rhd, rn2b ) ! before slope of the lateral mixing 277 279 #if defined key_traldf_c2d 278 280 IF( lk_traldf_eiv ) CALL ldf_eiv( kstp ) ! eddy induced velocity coefficient
Note: See TracChangeset
for help on using the changeset viewer.