- Timestamp:
- 2011-12-11T16:00:26+01:00 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2011/DEV_r2739_STFC_dCSE/NEMOGCM/NEMO/OPA_SRC/DYN/dynnxt.F90
r2723 r3211 49 49 PUBLIC dyn_nxt ! routine called by step.F90 50 50 51 !! * Control permutation of array indices 52 # include "oce_ftrans.h90" 53 # include "dom_oce_ftrans.h90" 54 # include "sbc_oce_ftrans.h90" 55 # include "domvvl_ftrans.h90" 56 # include "obc_oce_ftrans.h90" 57 51 58 !! * Substitutions 52 59 # include "domzgr_substitute.h90" … … 95 102 USE oce , ONLY: ze3u_f => ta , ze3v_f => sa ! (ta,sa) used as 3D workspace 96 103 USE wrk_nemo, ONLY: zs_t => wrk_2d_1 , zs_u_1 => wrk_2d_2 , zs_v_1 => wrk_2d_3 104 !! DCSE_NEMO: need additional directives for renamed module variables 105 !FTRANS ze3u_f :I :I :z 106 !FTRANS ze3v_f :I :I :z 97 107 ! 98 108 INTEGER, INTENT( in ) :: kt ! ocean time-step index … … 214 224 ! ------------------------------------------ 215 225 IF( neuler == 0 .AND. kt == nit000 ) THEN !* Euler at first time-step: only swap 226 #if defined key_z_first 227 DO jj = 1, jpj 228 DO ji = 1, jpi 229 DO jk = 1, jpkm1 230 un(ji,jj,jk) = ua(ji,jj,jk) ! un <-- ua 231 vn(ji,jj,jk) = va(ji,jj,jk) 232 END DO 233 END DO 234 END DO 235 #else 216 236 DO jk = 1, jpkm1 217 237 un(:,:,jk) = ua(:,:,jk) ! un <-- ua 218 238 vn(:,:,jk) = va(:,:,jk) 219 239 END DO 240 #endif 220 241 ELSE !* Leap-Frog : Asselin filter and swap 221 242 ! ! =============! 222 243 IF( .NOT. lk_vvl ) THEN ! Fixed volume ! 223 244 ! ! =============! 245 #if defined key_z_first 246 DO jj = 1, jpj 247 DO ji = 1, jpi 248 DO jk = 1, jpkm1 249 #else 224 250 DO jk = 1, jpkm1 225 251 DO jj = 1, jpj 226 252 DO ji = 1, jpi 253 #endif 227 254 zuf = un(ji,jj,jk) + atfp * ( ub(ji,jj,jk) - 2.e0 * un(ji,jj,jk) + ua(ji,jj,jk) ) 228 255 zvf = vn(ji,jj,jk) + atfp * ( vb(ji,jj,jk) - 2.e0 * vn(ji,jj,jk) + va(ji,jj,jk) ) … … 247 274 ! Add volume filter correction only at the first level of t-point scale factors 248 275 zec = atfp * rdt / rau0 276 #if defined key_z_first 277 fse3t_b(:,:,1) = fse3t_b(:,:,1) - zec * ( emp_b(:,:) - emp(:,:) ) * tmask_1(:,:) 278 #else 249 279 fse3t_b(:,:,1) = fse3t_b(:,:,1) - zec * ( emp_b(:,:) - emp(:,:) ) * tmask(:,:,1) 280 #endif 250 281 ! surface at t-points and inverse surface at (u/v)-points used in surface averaging computations 251 282 zs_t (:,:) = e1t(:,:) * e2t(:,:) … … 257 288 ! ----------------------------------- 258 289 ! Scale factor anomaly at (u/v)-points: surface averaging of scale factor at t-points 290 #if defined key_z_first 291 DO jj = 1, jpjm1 292 DO ji = 1, jpim1 293 DO jk = 1, jpkm1 294 #else 259 295 DO jk = 1, jpkm1 260 296 DO jj = 1, jpjm1 261 297 DO ji = 1, jpim1 298 #endif 262 299 zv_t_ij = zs_t(ji ,jj ) * fse3t_b(ji ,jj ,jk) 263 300 zv_t_ip1j = zs_t(ji+1,jj ) * fse3t_b(ji+1,jj ,jk) … … 276 313 ! Leap-Frog - Asselin filter and swap: applied on velocity 277 314 ! ----------------------------------- 315 #if defined key_z_first 316 DO jj = 1, jpj 317 DO ji = 1, jpi 318 DO jk = 1, jpkm1 319 #else 278 320 DO jk = 1, jpkm1 279 321 DO jj = 1, jpj 280 322 DO ji = 1, jpi 323 #endif 281 324 zuf = un(ji,jj,jk) + atfp * ( ub(ji,jj,jk) - 2.e0 * un(ji,jj,jk) + ua(ji,jj,jk) ) 282 325 zvf = vn(ji,jj,jk) + atfp * ( vb(ji,jj,jk) - 2.e0 * vn(ji,jj,jk) + va(ji,jj,jk) ) … … 294 337 !----------------------------------------------- 295 338 ! Scale factor anomaly at (u/v)-points: surface averaging of scale factor at t-points 339 #if defined key_z_first 340 DO jj = 1, jpjm1 341 DO ji = 1, jpim1 342 DO jk = 1, jpkm1 343 #else 296 344 DO jk = 1, jpkm1 297 345 DO jj = 1, jpjm1 298 346 DO ji = 1, jpim1 347 #endif 299 348 zv_t_ij = zs_t(ji ,jj ) * fse3t_b(ji ,jj ,jk) 300 349 zv_t_ip1j = zs_t(ji+1,jj ) * fse3t_b(ji+1,jj ,jk) … … 313 362 ! Leap-Frog - Asselin filter and swap: applied on thickness weighted velocity 314 363 ! ----------------------------------- =========================== 364 #if defined key_z_first 365 DO jj = 1, jpj 366 DO ji = 1, jpim1 367 DO jk = 1, jpkm1 368 #else 315 369 DO jk = 1, jpkm1 316 370 DO jj = 1, jpj 317 371 DO ji = 1, jpim1 372 #endif 318 373 zue3a = ua(ji,jj,jk) * fse3u_a(ji,jj,jk) 319 374 zve3a = va(ji,jj,jk) * fse3v_a(ji,jj,jk)
Note: See TracChangeset
for help on using the changeset viewer.