Changeset 4432 for branches/2011/DEV_r2739_STFC_dCSE
- Timestamp:
- 2014-02-04T13:14:28+01:00 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2011/DEV_r2739_STFC_dCSE/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_bilapg.F90
r4409 r4432 137 137 DO jj = 2, jpjm1 ! add the diffusive trend to the general momentum trends 138 138 DO ji = 2, jpim1 139 DO jk = 1, jpkm1139 DO jk = 1, mbkmax(ji,jj)-1 ! jpkm1 140 140 #else 141 141 DO jj = 2, jpjm1 ! add the diffusive trend to the general momentum trends … … 238 238 239 239 #if defined key_z_first 240 ! ! ********** ! ! =============== 241 ! DO jk = 1, jpkm1 ! First step ! ! Horizontal slab 242 ! ! ********** ! ! =============== 243 244 ! I.1 Vertical gradient of pu and pv at level jk and jk+1 245 ! ------------------------------------------------------- 246 ! surface boundary condition: zdku(jk=1)=zdku(jk=2) 247 ! zdkv(jk=1)=zdkv(jk=2) 248 #if 0 249 DO jjf = 1, jpj 250 DO jif = 1, jpi 251 252 !!$ jj= jjf 253 !!$ ji = jif 254 !!$ 255 !!$ zdk1u = ( pu(ji,jj,jk) - pu(ji,jj,jk+1) ) * umask(ji,jj,jk+1) 256 !!$ zdk1v = ( pv(ji,jj,jk) - pv(ji,jj,jk+1) ) * vmask(ji,jj,jk+1) 257 !!$ 258 !!$ IF( jk == 1 ) THEN 259 !!$ zdku = zdk1u 260 !!$ zdkv = zdk1v 261 !!$ ELSE 262 !!$ zdku = ( pu(ji,jj,jk-1) - pu(ji,jj,jk) ) * umask(ji,jj,jk) 263 !!$ zdkv = ( pv(ji,jj,jk-1) - pv(ji,jj,jk) ) * vmask(ji,jj,jk) 264 !!$ ENDIF 265 ! END DO 266 ! END DO 267 ! -----f----- 268 ! I.2 Horizontal fluxes on U | 269 ! ------------------------=== t u t 270 ! | 271 ! i-flux at t-point -----f----- 272 ! DO jj = 1, jpjm1 273 ! DO ji = 2, jpi 274 ! DO jjf = 1, jpj 275 ! DO jif = 1, jpi 276 277 jj = MIN(jjf, jpjm1) 278 ji = MAX(2, jif) 279 280 ! zabe1 = e2t(ji,jj) * fse3t(ji,jj,jk) / e1t(ji,jj) 281 282 ! zmkt = 1._wp/MAX( umask(ji-1,jj,jk )+umask(ji,jj,jk+1) & 283 ! + umask(ji-1,jj,jk+1)+umask(ji,jj,jk ), 1._wp ) 284 285 ! zcof1 = -e2t(ji,jj) / MAX( umask(ji-1,jj,jk )+umask(ji,jj,jk+1) & 286 ! + umask(ji-1,jj,jk+1)+umask(ji,jj,jk ), 1._wp ) & 287 ! * 0.5 * ( uslp(ji-1,jj,jk) + uslp(ji,jj,jk) ) 288 289 IF( jk == 1 )THEN 290 ziut(ji,jj) = tmask(ji,jj,jk) * & 291 ( (e2t(ji,jj) * fse3t(ji,jj,jk) / e1t(ji,jj)) * ( pu(ji,jj,jk) - pu(ji-1,jj,jk) ) & 292 ! + zcof1 * ( zdku (ji,jj) + zdk1u(ji-1,jj) & 293 + (-e2t(ji,jj) / MAX( umask(ji-1,jj,jk )+umask(ji,jj,jk+1) & 294 + umask(ji-1,jj,jk+1)+umask(ji,jj,jk ), 1._wp ) & 295 * 0.5 * ( uslp(ji-1,jj,jk) + uslp(ji,jj,jk) ) ) * & 296 ( ( pu(ji ,jj,jk) - pu(ji ,jj,jk+1) ) * umask(ji,jj,jk+1) + & 297 ( pu(ji-1,jj,jk) - pu(ji-1,jj,jk+1) ) * umask(ji-1,jj,jk+1) + & 298 ! +zdk1u(ji,jj) + zdku (ji-1,jj) ) ) 299 ( pu(ji ,jj,jk) - pu(ji ,jj,jk+1) ) * umask(ji,jj,jk+1) + & 300 ( pu(ji-1,jj,jk) - pu(ji-1,jj,jk+1) ) * umask(ji-1,jj,jk+1) & 301 ) ) 302 ELSE 303 ziut(ji,jj) = tmask(ji,jj,jk) * & 304 ( (e2t(ji,jj) * fse3t(ji,jj,jk) / e1t(ji,jj)) * ( pu(ji,jj,jk) - pu(ji-1,jj,jk) ) & 305 ! + zcof1 * ( zdku (ji,jj) + zdk1u(ji-1,jj) & 306 + (-e2t(ji,jj) / MAX(umask(ji-1,jj,jk)+umask(ji,jj,jk+1) & 307 + umask(ji-1,jj,jk+1)+umask(ji,jj,jk), 1._wp ) & 308 * 0.5 * ( uslp(ji-1,jj,jk) + uslp(ji,jj,jk) ) ) * & 309 ( ( pu(ji ,jj,jk-1) - pu(ji ,jj,jk ) ) * umask(ji,jj,jk) + & 310 ( pu(ji-1,jj,jk ) - pu(ji-1,jj,jk+1) ) * umask(ji-1,jj,jk+1) + & 311 ! +zdk1u(ji,jj) + zdku (ji-1,jj) ) ) 312 ( pu(ji ,jj,jk ) - pu(ji ,jj,jk+1) ) * umask(ji,jj,jk+1) + & 313 ( pu(ji-1,jj,jk-1) - pu(ji-1,jj,jk ) ) * umask(ji-1,jj,jk) & 314 ) ) 315 END IF 316 ! END DO 317 ! END DO 318 319 ! j-flux at f-point 320 ! DO jj = 1, jpjm1 321 ! DO ji = 1, jpim1 322 ! DO jjf = 1, jpj 323 ! DO jif = 1, jpi 324 325 jj = MIN(jjf, jpjm1) 326 ji = MIN(jif, jpim1) 327 328 !zabe2 = e1f(ji,jj) * fse3f(ji,jj,jk) / e2f(ji,jj) 329 330 !zmkf = 1./MAX( umask(ji,jj+1,jk )+umask(ji,jj,jk+1) & 331 ! + umask(ji,jj+1,jk+1)+umask(ji,jj,jk ), 1. ) 332 333 !zcof2 = -e1f(ji,jj) /MAX(umask(ji,jj+1,jk)+umask(ji,jj,jk+1) & 334 ! + umask(ji,jj+1,jk+1)+umask(ji,jj,jk), 1. ) & 335 ! * 0.5 * ( vslp(ji+1,jj,jk) + vslp(ji,jj,jk) ) 336 337 IF(jk == 1)THEN 338 ! zdku = zdk1u 339 zjuf(ji,jj) = fmask(ji,jj,jk) * & 340 ( (e1f(ji,jj) * fse3f(ji,jj,jk) / e2f(ji,jj) ) * ( pu(ji,jj+1,jk) - pu(ji,jj,jk) ) & 341 ! + zcof2 * ( zdku (ji,jj+1) + zdk1u(ji,jj) & 342 + (-e1f(ji,jj) /MAX(umask(ji,jj+1,jk)+umask(ji,jj,jk+1) & 343 + umask(ji,jj+1,jk+1)+umask(ji,jj,jk), 1. ) & 344 * 0.5 * ( vslp(ji+1,jj,jk) + vslp(ji,jj,jk) ) ) * & 345 ( & 346 ( pu(ji,jj+1,jk) - pu(ji,jj+1,jk+1) ) * umask(ji,jj+1,jk+1) & 347 + ( pu(ji,jj ,jk) - pu(ji,jj ,jk+1) ) * umask(ji,jj ,jk+1) & 348 ! +zdk1u(ji,jj+1) + zdku (ji,jj) ) ) 349 + ( pu(ji,jj+1,jk) - pu(ji,jj+1,jk+1) ) * umask(ji,jj+1,jk+1) & 350 + ( pu(ji,jj ,jk) - pu(ji,jj ,jk+1) ) * umask(ji,jj,jk+1) & 351 ) ) 352 353 ELSE 354 zjuf(ji,jj) = fmask(ji,jj,jk) * & 355 ( (e1f(ji,jj) * fse3f(ji,jj,jk) / e2f(ji,jj) ) * ( pu(ji,jj+1,jk) - pu(ji,jj,jk) ) & 356 ! + zcof2 * ( zdku (ji,jj+1) + zdk1u(ji,jj) & 357 + (-e1f(ji,jj) /MAX(umask(ji,jj+1,jk)+umask(ji,jj,jk+1) & 358 + umask(ji,jj+1,jk+1)+umask(ji,jj,jk), 1. ) & 359 * 0.5 * ( vslp(ji+1,jj,jk) + vslp(ji,jj,jk) ) ) * & 360 ( & 361 (pu(ji,jj+1,jk-1) - pu(ji,jj+1,jk ) ) * umask(ji,jj+1,jk) + & 362 (pu(ji,jj ,jk ) - pu(ji,jj ,jk+1) ) * umask(ji,jj,jk+1) + & 363 ! +zdk1u(ji,jj+1) + zdku (ji,jj) ) ) 364 (pu(ji,jj+1,jk ) - pu(ji,jj+1,jk+1) ) * umask(ji,jj+1,jk+1) + & 365 (pu(ji,jj ,jk-1) - pu(ji,jj ,jk ) ) * umask(ji,jj,jk) & 366 ) ) 367 ENDIF 368 ! END DO 369 ! END DO 370 371 ! | t | 372 ! I.3 Horizontal fluxes on V | | 373 ! ------------------------=== f---v---f 374 ! | | 375 ! i-flux at f-point | t | 376 ! DO jj = 1, jpjm1 377 ! DO ji = 1, jpim1 378 ! DO jjf = 1, jpj 379 ! DO jif = 1, jpi 380 381 jj = MIN(jjf, jpjm1) 382 ji = MIN(jif, jpim1) 383 384 ! zabe1 = e2f(ji,jj) * fse3f(ji,jj,jk) / e1f(ji,jj) 385 386 ! zmkf = 1./MAX( vmask(ji+1,jj,jk )+vmask(ji,jj,jk+1) & 387 ! + vmask(ji+1,jj,jk+1)+vmask(ji,jj,jk ), 1. ) 388 389 ! zcof1 = (-e2f(ji,jj) / MAX( vmask(ji+1,jj,jk )+vmask(ji,jj,jk+1) & 390 ! + vmask(ji+1,jj,jk+1)+vmask(ji,jj,jk ), 1. )) & 391 ! * 0.5 * ( uslp(ji,jj+1,jk) + uslp(ji,jj,jk) ) 392 393 IF (jk == 1)THEN 394 ! zdku == zdk1u 395 zivf(ji,jj) = fmask(ji,jj,jk) * & 396 ( (e2f(ji,jj) * fse3f(ji,jj,jk) / e1f(ji,jj)) * ( pu(ji+1,jj,jk) - pu(ji,jj,jk) ) & 397 ! + zcof1 * ( zdku (ji,jj) + zdk1u(ji+1,jj) & 398 + ((-e2f(ji,jj) / MAX( vmask(ji+1,jj,jk )+vmask(ji,jj,jk+1) & 399 + vmask(ji+1,jj,jk+1)+vmask(ji,jj,jk ), 1. )) & 400 * 0.5 * ( uslp(ji,jj+1,jk) + uslp(ji,jj,jk) )) * ( & 401 ( pu(ji ,jj,jk) - pu(ji ,jj,jk+1) ) * umask(ji ,jj,jk+1) + & 402 ( pu(ji+1,jj,jk) - pu(ji+1,jj,jk+1) ) * umask(ji+1,jj,jk+1) + & 403 ! +zdk1u(ji,jj) + zdku (ji+1,jj) ) ) 404 ( pu(ji ,jj,jk) - pu(ji ,jj,jk+1) ) * umask(ji ,jj,jk+1) + & 405 ( pu(ji+1,jj,jk) - pu(ji+1,jj,jk+1) ) * umask(ji+1,jj,jk+1) ) ) 406 ELSE 407 zivf(ji,jj) = fmask(ji,jj,jk) * & 408 ( (e2f(ji,jj) * fse3f(ji,jj,jk) / e1f(ji,jj)) * ( pu(ji+1,jj,jk) - pu(ji,jj,jk) ) & 409 ! + zcof1 * ( zdku (ji,jj) + zdk1u(ji+1,jj) & 410 + ((-e2f(ji,jj) / MAX( vmask(ji+1,jj,jk )+vmask(ji,jj,jk+1) & 411 + vmask(ji+1,jj,jk+1)+vmask(ji,jj,jk ), 1. )) & 412 * 0.5 * ( uslp(ji,jj+1,jk) + uslp(ji,jj,jk) )) * ( & 413 ( pu(ji ,jj,jk-1) - pu(ji ,jj,jk ) ) * umask(ji ,jj,jk ) + & 414 ( pu(ji+1,jj,jk ) - pu(ji+1,jj,jk+1) ) * umask(ji+1,jj,jk+1) + & 415 ! +zdk1u(ji,jj) + zdku (ji+1,jj) ) ) 416 ( pu(ji ,jj,jk ) - pu(ji ,jj,jk+1) ) * umask(ji ,jj,jk+1) + & 417 ( pu(ji+1,jj,jk-1) - pu(ji+1,jj,jk ) ) * umask(ji+1,jj,jk ) ) ) 418 END IF 419 ! END DO 420 ! END DO 421 422 ! j-flux at t-point 423 ! DO jj = 2, jpj 424 ! DO ji = 1, jpim1 425 ! DO jjf = 1, jpj 426 ! DO jif = 1, jpi 427 428 jj = MAX(2,jjf) 429 ji = MIN(jif, jpim1) 430 431 !zabe2 = e1t(ji,jj) * fse3t(ji,jj,jk) / e2t(ji,jj) 432 433 !zmkt = 1./MAX( vmask(ji,jj-1,jk )+vmask(ji,jj,jk+1) & 434 ! + vmask(ji,jj-1,jk+1)+vmask(ji,jj,jk ), 1. ) 435 436 !zcof2 = (-e1t(ji,jj)/MAX( vmask(ji,jj-1,jk )+vmask(ji,jj,jk+1) & 437 ! + vmask(ji,jj-1,jk+1)+vmask(ji,jj,jk ), 1. ) ) & 438 ! * 0.5 * ( vslp(ji,jj-1,jk) + vslp(ji,jj,jk) ) 439 440 IF( jk == 1 )THEN 441 zjvt(ji,jj) = tmask(ji,jj,jk) * & 442 ( (e1t(ji,jj) * fse3t(ji,jj,jk) / e2t(ji,jj)) * ( pu(ji,jj,jk) - pu(ji,jj-1,jk) ) & 443 ! + zcof2 * ( zdku (ji,jj-1) + zdk1u(ji,jj) & 444 + ((-e1t(ji,jj)/MAX( vmask(ji,jj-1,jk )+vmask(ji,jj,jk+1) & 445 + vmask(ji,jj-1,jk+1)+vmask(ji,jj,jk ), 1. ) ) & 446 * 0.5 * ( vslp(ji,jj-1,jk) + vslp(ji,jj,jk) )) * ( & 447 ( pu(ji,jj-1,jk) - pu(ji,jj-1,jk+1) ) * umask(ji,jj-1,jk+1) + & 448 ( pu(ji,jj ,jk) - pu(ji,jj ,jk+1) ) * umask(ji,jj,jk+1) + & 449 ! +zdk1u(ji,jj-1) + zdku (ji,jj) ) ) 450 ( pu(ji,jj-1,jk) - pu(ji,jj-1,jk+1) ) * umask(ji,jj-1,jk+1) + & 451 ( pu(ji,jj ,jk) - pu(ji,jj ,jk+1) ) * umask(ji,jj,jk+1) ) ) 452 ELSE 453 zjvt(ji,jj) = tmask(ji,jj,jk) * & 454 ( (e1t(ji,jj) * fse3t(ji,jj,jk) / e2t(ji,jj)) * ( pu(ji,jj,jk) - pu(ji,jj-1,jk) ) & 455 ! + zcof2 * ( zdku (ji,jj-1) + zdk1u(ji,jj) & 456 + ((-e1t(ji,jj)/MAX( vmask(ji,jj-1,jk )+vmask(ji,jj,jk+1) & 457 + vmask(ji,jj-1,jk+1)+vmask(ji,jj,jk ), 1. ) ) & 458 * 0.5 * ( vslp(ji,jj-1,jk) + vslp(ji,jj,jk) )) * & 459 ( & 460 ( pu(ji,jj-1,jk-1) - pu(ji,jj-1,jk ) ) * umask(ji,jj-1,jk) + & 461 ( pu(ji,jj ,jk ) - pu(ji,jj ,jk+1) ) * umask(ji,jj,jk+1) + & 462 ! +zdk1u(ji,jj-1) + zdku (ji,jj) ) ) 463 ( pu(ji,jj-1,jk ) - pu(ji,jj-1,jk+1) ) * umask(ji,jj-1,jk+1) + & 464 ( pu(ji,jj ,jk-1) - pu(ji,jj ,jk ) ) * umask(ji,jj,jk) ) ) 465 END IF 466 END DO 467 END DO 468 #endif 469 470 ! I.4 Second derivative (divergence) (not divided by the volume) 471 ! --------------------- 472 473 240 ! ! ********** ! 241 ! First step ! 242 ! ! ********** ! 474 243 DO jj = 2, jpjm1 475 244 DO ji = 2, jpim1 … … 590 359 591 360 592 DO jk = 2, jpkm1361 DO jk = 2, mbkmax(ji,jj)-1 ! jpkm1 593 362 594 363 ! plu(ji,jj,jk) = ziut (ji+1,jj) - & … … 715 484 END DO 716 485 717 ! ! ===============718 END DO ! End of slab719 ! ! =============== 486 ! 487 END DO 488 720 489 #else 721 490 ! ! ********** ! ! =============== … … 850 619 #if defined key_z_first 851 620 DO ji = 2, jpi 852 DO jk = 1, jpk621 DO jk = 1, mbkmax(ji,jj) ! jpk 853 622 ! i-gradient of u at jj 854 623 zdiu (ji,jk) = tmask(ji,jj ,jk) * ( pu(ji,jj ,jk) - pu(ji-1,jj ,jk) ) … … 862 631 END DO 863 632 DO ji = 1, jpim1 864 DO jk = 1, jpk633 DO jk = 1, mbkmax(ji,jj) ! jpk 865 634 ! i-gradient of v at jj 866 635 zdiv (ji,jk) = fmask(ji,jj ,jk) * ( pv(ji+1,jj,jk) - pv(ji ,jj ,jk) ) … … 893 662 ! Surface and bottom vertical fluxes set to zero 894 663 664 #if defined key_z_first 665 DO ji=1, jpi 666 zfuw(ji, 1 ) = 0.e0 667 zfvw(ji, 1 ) = 0.e0 668 zfuw(ji,mbkmax(ji,jj):jpk) = 0.e0 669 zfvw(ji,mbkmax(ji,jj):jpk) = 0.e0 670 END DO 671 #else 895 672 zfuw(:, 1 ) = 0.e0 896 673 zfvw(:, 1 ) = 0.e0 897 674 zfuw(:,jpk) = 0.e0 898 675 zfvw(:,jpk) = 0.e0 899 676 #endif 900 677 ! interior (2=<jk=<jpk-1) on pu field 901 678 902 679 #if defined key_z_first 903 680 DO ji = 2, jpim1 904 DO jk = 2, jpkm1681 DO jk = 2, mbkmax(ji,jj)-1 ! jpkm1 905 682 #else 906 683 DO jk = 2, jpkm1 … … 935 712 #if defined key_z_first 936 713 DO ji = 2, jpim1 937 DO jk = 2, jpkm1714 DO jk = 2, mbkmax(ji,jj)-1 ! jpkm1 938 715 #else 939 716 DO jk = 2, jpkm1 … … 972 749 #if defined key_z_first 973 750 DO ji = 2, jpim1 974 DO jk = 1, jpkm1751 DO jk = 1, mbkmax(ji,jj)-1 ! jpkm1 975 752 #else 976 753 DO jk = 1, jpkm1 … … 992 769 #if defined key_z_first 993 770 DO ji = 2, jpim1 994 DO jk = 1, jpkm1771 DO jk = 1, mbkmax(ji,jj)-1 ! jpkm1 995 772 #else 996 773 DO jk = 1, jpkm1
Note: See TracChangeset
for help on using the changeset viewer.