- Timestamp:
- 2017-01-16T20:11:00+01:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/UKMO/CO6_shelfclimate/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_iso.F90
r7566 r7567 30 30 USE wrk_nemo ! Memory Allocation 31 31 USE timing ! Timing 32 #if defined key_bdy 33 USE bdy_oce ! needed for extra diffusion in rim 34 #endif 32 35 33 36 IMPLICIT NONE … … 115 118 REAL(wp) :: zuav, zvav, zuwslpi, zuwslpj, zvwslpi, zvwslpj ! - - 116 119 ! 120 REAL(wp), DIMENSION(jpi,jpj) :: zfactor ! multiplier for diffusion 121 ! 117 122 REAL(wp), POINTER, DIMENSION(:,:) :: ziut, zjuf, zjvt, zivf, zdku, zdk1u, zdkv, zdk1v 118 123 !!---------------------------------------------------------------------- … … 126 131 IF(lwp) WRITE(numout,*) 'dyn_ldf_iso : iso-neutral laplacian diffusive operator or ' 127 132 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~ s-coordinate horizontal diffusive operator' 133 #if defined key_bdy 134 IF(lwp) WRITE(numout,*) '~~~~~ using sponge_factor' 135 #endif 128 136 ! ! allocate dyn_ldf_bilap arrays 129 137 IF( dyn_ldf_iso_alloc() /= 0 ) CALL ctl_stop('STOP', 'dyn_ldf_iso: failed to allocate arrays') … … 155 163 ENDIF 156 164 165 #if defined key_bdy 166 zfactor(:,:) = sponge_factor(:,:) 167 #else 168 zfactor(:,:) = 1.0 169 #endif 157 170 ! ! =============== 158 171 DO jk = 1, jpkm1 ! Horizontal slab … … 199 212 DO jj = 2, jpjm1 200 213 DO ji = fs_2, jpi ! vector opt. 201 zabe1 = (fsahmt(ji,jj,jk)+ahmb0) * e2t(ji,jj) * fse3t(ji,jj,jk) / e1t(ji,jj)214 zabe1 = zfactor(ji,jj) * (fsahmt(ji,jj,jk)+ahmb0) * e2t(ji,jj) * fse3t(ji,jj,jk) / e1t(ji,jj) 202 215 203 216 zmskt = 1./MAX( umask(ji-1,jj,jk )+umask(ji,jj,jk+1) & 204 217 & + umask(ji-1,jj,jk+1)+umask(ji,jj,jk ), 1. ) 205 218 206 zcof1 = - aht0 * e2t(ji,jj) * zmskt * 0.5 * ( uslp(ji-1,jj,jk) + uslp(ji,jj,jk) )219 zcof1 = - zfactor(ji,jj) * aht0 * e2t(ji,jj) * zmskt * 0.5 * ( uslp(ji-1,jj,jk) + uslp(ji,jj,jk) ) 207 220 208 221 ziut(ji,jj) = ( zabe1 * ( ub(ji,jj,jk) - ub(ji-1,jj,jk) ) & … … 216 229 DO jj = 1, jpjm1 217 230 DO ji = 1, fs_jpim1 ! vector opt. 218 zabe2 = ( fsahmf(ji,jj,jk) + ahmb0 ) * e1f(ji,jj) * fse3f(ji,jj,jk) / e2f(ji,jj)231 zabe2 = zfactor(ji,jj) * ( fsahmf(ji,jj,jk) + ahmb0 ) * e1f(ji,jj) * fse3f(ji,jj,jk) / e2f(ji,jj) 219 232 220 233 zmskf = 1./MAX( umask(ji,jj+1,jk )+umask(ji,jj,jk+1) & 221 234 & + umask(ji,jj+1,jk+1)+umask(ji,jj,jk ), 1. ) 222 235 223 zcof2 = - aht0 * e1f(ji,jj) * zmskf * 0.5 * ( vslp(ji+1,jj,jk) + vslp(ji,jj,jk) )236 zcof2 = - zfactor(ji,jj) * aht0 * e1f(ji,jj) * zmskf * 0.5 * ( vslp(ji+1,jj,jk) + vslp(ji,jj,jk) ) 224 237 225 238 zjuf(ji,jj) = ( zabe2 * ( ub(ji,jj+1,jk) - ub(ji,jj,jk) ) & … … 237 250 DO jj = 2, jpjm1 238 251 DO ji = 1, fs_jpim1 ! vector opt. 239 zabe1 = ( fsahmf(ji,jj,jk) + ahmb0 ) * e2f(ji,jj) * fse3f(ji,jj,jk) / e1f(ji,jj)252 zabe1 = zfactor(ji,jj) * ( fsahmf(ji,jj,jk) + ahmb0 ) * e2f(ji,jj) * fse3f(ji,jj,jk) / e1f(ji,jj) 240 253 241 254 zmskf = 1./MAX( vmask(ji+1,jj,jk )+vmask(ji,jj,jk+1) & 242 255 & + vmask(ji+1,jj,jk+1)+vmask(ji,jj,jk ), 1. ) 243 256 244 zcof1 = - aht0 * e2f(ji,jj) * zmskf * 0.5 * ( uslp(ji,jj+1,jk) + uslp(ji,jj,jk) )257 zcof1 = - zfactor(ji,jj) * aht0 * e2f(ji,jj) * zmskf * 0.5 * ( uslp(ji,jj+1,jk) + uslp(ji,jj,jk) ) 245 258 246 259 zivf(ji,jj) = ( zabe1 * ( vb(ji+1,jj,jk) - vb(ji,jj,jk) ) & … … 269 282 DO jj = 2, jpj 270 283 DO ji = 1, fs_jpim1 ! vector opt. 271 zabe2 = (fsahmt(ji,jj,jk)+ahmb0) * e1t(ji,jj) * fse3t(ji,jj,jk) / e2t(ji,jj)284 zabe2 = zfactor(ji,jj) * (fsahmt(ji,jj,jk)+ahmb0) * e1t(ji,jj) * fse3t(ji,jj,jk) / e2t(ji,jj) 272 285 273 286 zmskt = 1./MAX( vmask(ji,jj-1,jk )+vmask(ji,jj,jk+1) & 274 287 & + vmask(ji,jj-1,jk+1)+vmask(ji,jj,jk ), 1. ) 275 288 276 zcof2 = - aht0 * e1t(ji,jj) * zmskt * 0.5 * ( vslp(ji,jj-1,jk) + vslp(ji,jj,jk) )289 zcof2 = - zfactor(ji,jj) * aht0 * e1t(ji,jj) * zmskt * 0.5 * ( vslp(ji,jj-1,jk) + vslp(ji,jj,jk) ) 277 290 278 291 zjvt(ji,jj) = ( zabe2 * ( vb(ji,jj,jk) - vb(ji,jj-1,jk) ) &
Note: See TracChangeset
for help on using the changeset viewer.