Changeset 5845 for branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf_imp.F90
- Timestamp:
- 2015-10-31T08:40:45+01:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2015/dev_r5836_NOC3_vvl_by_default/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf_imp.F90
r5836 r5845 36 36 37 37 !! * Substitutions 38 # include "domzgr_substitute.h90"39 38 # include "vectopt_loop_substitute.h90" 40 39 !!---------------------------------------------------------------------- … … 103 102 ikbu = mbku(ji,jj) ! ocean bottom level at u- and v-points 104 103 ikbv = mbkv(ji,jj) ! (deepest ocean u- and v-points) 105 avmu(ji,jj,ikbu+1) = -bfrua(ji,jj) * fse3uw(ji,jj,ikbu+1)106 avmv(ji,jj,ikbv+1) = -bfrva(ji,jj) * fse3vw(ji,jj,ikbv+1)104 avmu(ji,jj,ikbu+1) = -bfrua(ji,jj) * e3uw_n(ji,jj,ikbu+1) 105 avmv(ji,jj,ikbv+1) = -bfrva(ji,jj) * e3vw_n(ji,jj,ikbv+1) 107 106 END DO 108 107 END DO … … 112 111 ikbu = miku(ji,jj) ! ocean top level at u- and v-points 113 112 ikbv = mikv(ji,jj) ! (first wet ocean u- and v-points) 114 IF (ikbu .GE. 2) avmu(ji,jj,ikbu) = -tfrua(ji,jj) * fse3uw(ji,jj,ikbu)115 IF (ikbv .GE. 2) avmv(ji,jj,ikbv) = -tfrva(ji,jj) * fse3vw(ji,jj,ikbv)113 IF (ikbu .GE. 2) avmu(ji,jj,ikbu) = -tfrua(ji,jj) * e3uw_n(ji,jj,ikbu) 114 IF (ikbv .GE. 2) avmv(ji,jj,ikbv) = -tfrva(ji,jj) * e3vw_n(ji,jj,ikbv) 116 115 END DO 117 116 END DO … … 127 126 ELSE ! applied on thickness weighted velocity 128 127 DO jk = 1, jpkm1 129 ua(:,:,jk) = ( ub(:,:,jk) * fse3u_b(:,:,jk) &130 & + p2dt * ua(:,:,jk) * fse3u_n(:,:,jk) ) &131 & / fse3u_a(:,:,jk) * umask(:,:,jk)132 va(:,:,jk) = ( vb(:,:,jk) * fse3v_b(:,:,jk) &133 & + p2dt * va(:,:,jk) * fse3v_n(:,:,jk) ) &134 & / fse3v_a(:,:,jk) * vmask(:,:,jk)128 ua(:,:,jk) = ( ub(:,:,jk) * e3u_b(:,:,jk) & 129 & + p2dt * ua(:,:,jk) * e3u_n(:,:,jk) ) & 130 & / e3u_a(:,:,jk) * umask(:,:,jk) 131 va(:,:,jk) = ( vb(:,:,jk) * e3v_b(:,:,jk) & 132 & + p2dt * va(:,:,jk) * e3v_n(:,:,jk) ) & 133 & / e3v_a(:,:,jk) * vmask(:,:,jk) 135 134 END DO 136 135 ENDIF … … 147 146 ikbu = mbku(ji,jj) ! ocean bottom level at u- and v-points 148 147 ikbv = mbkv(ji,jj) ! (deepest ocean u- and v-points) 149 ze3ua = ( 1._wp - r_vvl ) * fse3u_n(ji,jj,ikbu) + r_vvl * fse3u_a(ji,jj,ikbu)150 ze3va = ( 1._wp - r_vvl ) * fse3v_n(ji,jj,ikbv) + r_vvl * fse3v_a(ji,jj,ikbv)148 ze3ua = ( 1._wp - r_vvl ) * e3u_n(ji,jj,ikbu) + r_vvl * e3u_a(ji,jj,ikbu) 149 ze3va = ( 1._wp - r_vvl ) * e3v_n(ji,jj,ikbv) + r_vvl * e3v_a(ji,jj,ikbv) 151 150 ua(ji,jj,ikbu) = ua(ji,jj,ikbu) + p2dt * bfrua(ji,jj) * ua_b(ji,jj) / ze3ua 152 151 va(ji,jj,ikbv) = va(ji,jj,ikbv) + p2dt * bfrva(ji,jj) * va_b(ji,jj) / ze3va … … 158 157 ikbu = miku(ji,jj) ! top ocean level at u- and v-points 159 158 ikbv = mikv(ji,jj) ! (first wet ocean u- and v-points) 160 ze3ua = ( 1._wp - r_vvl ) * fse3u_n(ji,jj,ikbu) + r_vvl * fse3u_a(ji,jj,ikbu)161 ze3va = ( 1._wp - r_vvl ) * fse3v_n(ji,jj,ikbv) + r_vvl * fse3v_a(ji,jj,ikbv)159 ze3ua = ( 1._wp - r_vvl ) * e3u_n(ji,jj,ikbu) + r_vvl * e3u_a(ji,jj,ikbu) 160 ze3va = ( 1._wp - r_vvl ) * e3v_n(ji,jj,ikbv) + r_vvl * e3v_a(ji,jj,ikbv) 162 161 ua(ji,jj,ikbu) = ua(ji,jj,ikbu) + p2dt * tfrua(ji,jj) * ua_b(ji,jj) / ze3ua 163 162 va(ji,jj,ikbv) = va(ji,jj,ikbv) + p2dt * tfrva(ji,jj) * va_b(ji,jj) / ze3va … … 177 176 DO jj = 2, jpjm1 178 177 DO ji = fs_2, fs_jpim1 ! vector opt. 179 ze3ua = ( 1._wp - r_vvl ) * fse3u_n(ji,jj,jk) + r_vvl * fse3u_a(ji,jj,jk) ! after scale factor at T-point178 ze3ua = ( 1._wp - r_vvl ) * e3u_n(ji,jj,jk) + r_vvl * e3u_a(ji,jj,jk) ! after scale factor at T-point 180 179 zcoef = - p2dt / ze3ua 181 zzwi = zcoef * avmu (ji,jj,jk ) / fse3uw(ji,jj,jk )180 zzwi = zcoef * avmu (ji,jj,jk ) / e3uw_n(ji,jj,jk ) 182 181 zwi(ji,jj,jk) = zzwi * wumask(ji,jj,jk ) 183 zzws = zcoef * avmu (ji,jj,jk+1) / fse3uw(ji,jj,jk+1)182 zzws = zcoef * avmu (ji,jj,jk+1) / e3uw_n(ji,jj,jk+1) 184 183 zws(ji,jj,jk) = zzws * wumask(ji,jj,jk+1) 185 184 zwd(ji,jj,jk) = 1._wp - zzwi - zzws … … 220 219 DO ji = fs_2, fs_jpim1 ! vector opt. 221 220 #if defined key_dynspg_ts 222 ze3ua = ( 1._wp - r_vvl ) * fse3u_n(ji,jj,1) + r_vvl * fse3u_a(ji,jj,1)221 ze3ua = ( 1._wp - r_vvl ) * e3u_n(ji,jj,1) + r_vvl * e3u_a(ji,jj,1) 223 222 ua(ji,jj,1) = ua(ji,jj,1) + p2dt * 0.5_wp * ( utau_b(ji,jj) + utau(ji,jj) ) & 224 223 & / ( ze3ua * rau0 ) * umask(ji,jj,1) … … 226 225 ua(ji,jj,1) = ub(ji,jj,1) & 227 226 & + p2dt *(ua(ji,jj,1) + 0.5_wp * ( utau_b(ji,jj) + utau(ji,jj) ) & 228 & / ( fse3u(ji,jj,1) * rau0 ) * umask(ji,jj,1) )227 & / ( e3u_n(ji,jj,1) * rau0 ) * umask(ji,jj,1) ) 229 228 #endif 230 229 END DO … … 276 275 DO jj = 2, jpjm1 277 276 DO ji = fs_2, fs_jpim1 ! vector opt. 278 ze3va = ( 1._wp - r_vvl ) * fse3v_n(ji,jj,jk) + r_vvl * fse3v_a(ji,jj,jk) ! after scale factor at T-point277 ze3va = ( 1._wp - r_vvl ) * e3v_n(ji,jj,jk) + r_vvl * e3v_a(ji,jj,jk) ! after scale factor at T-point 279 278 zcoef = - p2dt / ze3va 280 zzwi = zcoef * avmv (ji,jj,jk ) / fse3vw(ji,jj,jk )279 zzwi = zcoef * avmv (ji,jj,jk ) / e3vw_n(ji,jj,jk ) 281 280 zwi(ji,jj,jk) = zzwi * wvmask(ji,jj,jk) 282 zzws = zcoef * avmv (ji,jj,jk+1) / fse3vw(ji,jj,jk+1)281 zzws = zcoef * avmv (ji,jj,jk+1) / e3vw_n(ji,jj,jk+1) 283 282 zws(ji,jj,jk) = zzws * wvmask(ji,jj,jk+1) 284 283 zwd(ji,jj,jk) = 1._wp - zzwi - zzws … … 319 318 DO ji = fs_2, fs_jpim1 ! vector opt. 320 319 #if defined key_dynspg_ts 321 ze3va = ( 1._wp - r_vvl ) * fse3v_n(ji,jj,1) + r_vvl * fse3v_a(ji,jj,1)320 ze3va = ( 1._wp - r_vvl ) * e3v_n(ji,jj,1) + r_vvl * e3v_a(ji,jj,1) 322 321 va(ji,jj,1) = va(ji,jj,1) + p2dt * 0.5_wp * ( vtau_b(ji,jj) + vtau(ji,jj) ) & 323 322 & / ( ze3va * rau0 ) … … 325 324 va(ji,jj,1) = vb(ji,jj,1) & 326 325 & + p2dt *(va(ji,jj,1) + 0.5_wp * ( vtau_b(ji,jj) + vtau(ji,jj) ) & 327 & / ( fse3v(ji,jj,1) * rau0 ) )326 & / ( e3v_n(ji,jj,1) * rau0 ) ) 328 327 #endif 329 328 END DO
Note: See TracChangeset
for help on using the changeset viewer.