Changeset 7753 for trunk/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra.F90
- Timestamp:
- 2017-03-03T12:46:59+01:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra.F90
r7698 r7753 116 116 !! aeiu, aeiv initialized once for all or l_ldfeiv_time set to true 117 117 !!---------------------------------------------------------------------- 118 INTEGER :: jk , jj, ji! dummy loop indices118 INTEGER :: jk ! dummy loop indices 119 119 INTEGER :: ierr, inum, ios ! local integer 120 120 REAL(wp) :: zah0 ! local scalar … … 184 184 IF( ierr /= 0 ) CALL ctl_stop( 'STOP', 'ldf_tra_init: failed to allocate arrays') 185 185 ! 186 !$OMP PARALLEL DO schedule(static) private(jj, ji) 187 DO jj = 1, jpj 188 DO ji = 1, jpi 189 ahtu(ji,jj,jpk) = 0._wp ! last level always 0 190 ahtv(ji,jj,jpk) = 0._wp 191 END DO 192 END DO 186 ahtu(:,:,jpk) = 0._wp ! last level always 0 187 ahtv(:,:,jpk) = 0._wp 193 188 ! 194 189 ! ! value of eddy mixing coef. … … 205 200 CASE( 0 ) !== constant ==! 206 201 IF(lwp) WRITE(numout,*) ' tracer mixing coef. = constant = ', rn_aht_0 207 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 208 DO jk = 1, jpk 209 DO jj = 1, jpj 210 DO ji = 1, jpi 211 ahtu(ji,jj,jk) = zah0 * umask(ji,jj,jk) 212 ahtv(ji,jj,jk) = zah0 * vmask(ji,jj,jk) 213 END DO 214 END DO 215 END DO 202 ahtu(:,:,:) = zah0 * umask(:,:,:) 203 ahtv(:,:,:) = zah0 * vmask(:,:,:) 216 204 ! 217 205 CASE( 10 ) !== fixed profile ==! 218 206 IF(lwp) WRITE(numout,*) ' tracer mixing coef. = F( depth )' 219 !$OMP PARALLEL DO schedule(static) private(jj, ji) 220 DO jj = 1, jpj 221 DO ji = 1, jpi 222 ahtu(ji,jj,1) = zah0 * umask(ji,jj,1) ! constant surface value 223 ahtv(ji,jj,1) = zah0 * vmask(ji,jj,1) 224 END DO 225 END DO 207 ahtu(:,:,1) = zah0 * umask(:,:,1) ! constant surface value 208 ahtv(:,:,1) = zah0 * vmask(:,:,1) 226 209 CALL ldf_c1d( 'TRA', r1_4, ahtu(:,:,1), ahtv(:,:,1), ahtu, ahtv ) 227 210 ! … … 232 215 CALL iom_get ( inum, jpdom_data, 'ahtv_2D', ahtv(:,:,1) ) 233 216 CALL iom_close( inum ) 234 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji)235 217 DO jk = 2, jpkm1 236 DO jj = 1, jpj 237 DO ji = 1, jpi 238 ahtu(ji,jj,jk) = ahtu(ji,jj,1) * umask(ji,jj,jk) 239 ahtv(ji,jj,jk) = ahtv(ji,jj,1) * vmask(ji,jj,jk) 240 END DO 241 END DO 218 ahtu(:,:,jk) = ahtu(:,:,1) * umask(:,:,jk) 219 ahtv(:,:,jk) = ahtv(:,:,1) * vmask(:,:,jk) 242 220 END DO 243 221 ! … … 266 244 CALL iom_get ( inum, jpdom_data, 'ahtv_3D', ahtv ) 267 245 CALL iom_close( inum ) 268 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji)269 246 DO jk = 1, jpkm1 270 DO jj = 1, jpj 271 DO ji = 1, jpi 272 ahtu(ji,jj,jk) = ahtu(ji,jj,jk) * umask(ji,jj,jk) 273 ahtv(ji,jj,jk) = ahtv(ji,jj,jk) * vmask(ji,jj,jk) 274 END DO 275 END DO 247 ahtu(:,:,jk) = ahtu(:,:,jk) * umask(:,:,jk) 248 ahtv(:,:,jk) = ahtv(:,:,jk) * vmask(:,:,jk) 276 249 END DO 277 250 ! … … 294 267 ! 295 268 IF( ln_traldf_blp .AND. .NOT. l_ldftra_time ) THEN 296 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 297 DO jk = 1, jpk 298 DO jj = 1, jpj 299 DO ji = 1, jpi 300 ahtu(ji,jj,jk) = SQRT( ahtu(ji,jj,jk) ) 301 ahtv(ji,jj,jk) = SQRT( ahtv(ji,jj,jk) ) 302 END DO 303 END DO 304 END DO 269 ahtu(:,:,:) = SQRT( ahtu(:,:,:) ) 270 ahtv(:,:,:) = SQRT( ahtv(:,:,:) ) 305 271 ENDIF 306 272 ! … … 347 313 ! ! increase to rn_aht_0 within 20N-20S 348 314 IF( ln_ldfeiv .AND. nn_aei_ijk_t == 21 ) THEN ! use the already computed aei. 349 !$OMP PARALLEL DO schedule(static) private(jj,ji) 350 DO jj = 1, jpj 351 DO ji = 1, jpi 352 ahtu(ji,jj,1) = aeiu(ji,jj,1) 353 ahtv(ji,jj,1) = aeiv(ji,jj,1) 354 END DO 355 END DO 315 ahtu(:,:,1) = aeiu(:,:,1) 316 ahtv(:,:,1) = aeiv(:,:,1) 356 317 ELSE ! compute aht. 357 318 CALL ldf_eiv( kt, rn_aht_0, ahtu, ahtv ) … … 360 321 z1_f20 = 1._wp / ( 2._wp * omega * SIN( rad * 20._wp ) ) ! 1 / ff(20 degrees) 361 322 zaht_min = 0.2_wp * rn_aht_0 ! minimum value for aht 362 !$OMP PARALLEL363 !$OMP DO schedule(static) private(jj,ji,zaht,zahf)364 323 DO jj = 1, jpj 365 324 DO ji = 1, jpi … … 372 331 END DO 373 332 END DO 374 !$OMP DO schedule(static) private(jk,jj,ji)375 333 DO jk = 2, jpkm1 ! deeper value = surface value 376 DO jj = 1, jpj 377 DO ji = 1, jpi 378 ahtu(ji,jj,jk) = ahtu(ji,jj,1) * umask(ji,jj,jk) 379 ahtv(ji,jj,jk) = ahtv(ji,jj,1) * vmask(ji,jj,jk) 380 END DO 381 END DO 382 END DO 383 !$OMP END PARALLEL 334 ahtu(:,:,jk) = ahtu(:,:,1) * umask(:,:,jk) 335 ahtv(:,:,jk) = ahtv(:,:,1) * vmask(:,:,jk) 336 END DO 384 337 ! 385 338 CASE( 31 ) !== time varying 3D field ==! = F( local velocity ) 386 339 IF( ln_traldf_lap ) THEN ! laplacian operator |u| e /12 387 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji)388 340 DO jk = 1, jpkm1 389 DO jj = 1, jpj 390 DO ji = 1, jpi 391 ahtu(ji,jj,jk) = ABS( ub(ji,jj,jk) ) * e1u(ji,jj) * r1_12 392 ahtv(ji,jj,jk) = ABS( vb(ji,jj,jk) ) * e2v(ji,jj) * r1_12 393 END DO 394 END DO 341 ahtu(:,:,jk) = ABS( ub(:,:,jk) ) * e1u(:,:) * r1_12 342 ahtv(:,:,jk) = ABS( vb(:,:,jk) ) * e2v(:,:) * r1_12 395 343 END DO 396 344 ELSEIF( ln_traldf_blp ) THEN ! bilaplacian operator sqrt( |u| e^3 /12 ) = sqrt( |u| e /12 ) * e 397 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji)398 345 DO jk = 1, jpkm1 399 DO jj = 1, jpj 400 DO ji = 1, jpi 401 ahtu(ji,jj,jk) = SQRT( ABS( ub(ji,jj,jk) ) * e1u(ji,jj) * r1_12 ) * e1u(ji,jj) 402 ahtv(ji,jj,jk) = SQRT( ABS( vb(ji,jj,jk) ) * e2v(ji,jj) * r1_12 ) * e2v(ji,jj) 403 END DO 404 END DO 346 ahtu(:,:,jk) = SQRT( ABS( ub(:,:,jk) ) * e1u(:,:) * r1_12 ) * e1u(:,:) 347 ahtv(:,:,jk) = SQRT( ABS( vb(:,:,jk) ) * e2v(:,:) * r1_12 ) * e2v(:,:) 405 348 END DO 406 349 ENDIF … … 435 378 !! l_ldfeiv_time : =T if EIV coefficients vary with time 436 379 !!---------------------------------------------------------------------- 437 INTEGER :: jk , jj, ji! dummy loop indices380 INTEGER :: jk ! dummy loop indices 438 381 INTEGER :: ierr, inum, ios ! local integer 439 382 ! … … 476 419 CASE( 0 ) !== constant ==! 477 420 IF(lwp) WRITE(numout,*) ' eddy induced velocity coef. = constant = ', rn_aeiv_0 478 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 479 DO jk = 1, jpk 480 DO jj = 1, jpj 481 DO ji = 1, jpi 482 aeiu(ji,jj,jk) = rn_aeiv_0 483 aeiv(ji,jj,jk) = rn_aeiv_0 484 END DO 485 END DO 486 END DO 421 aeiu(:,:,:) = rn_aeiv_0 422 aeiv(:,:,:) = rn_aeiv_0 487 423 ! 488 424 CASE( 10 ) !== fixed profile ==! 489 425 IF(lwp) WRITE(numout,*) ' eddy induced velocity coef. = F( depth )' 490 !$OMP PARALLEL DO schedule(static) private(jj, ji) 491 DO jj = 1, jpj 492 DO ji = 1, jpi 493 aeiu(ji,jj,1) = rn_aeiv_0 ! constant surface value 494 aeiv(ji,jj,1) = rn_aeiv_0 495 END DO 496 END DO 426 aeiu(:,:,1) = rn_aeiv_0 ! constant surface value 427 aeiv(:,:,1) = rn_aeiv_0 497 428 CALL ldf_c1d( 'TRA', r1_4, aeiu(:,:,1), aeiv(:,:,1), aeiu, aeiv ) 498 429 ! … … 503 434 CALL iom_get ( inum, jpdom_data, 'aeiv', aeiv(:,:,1) ) 504 435 CALL iom_close( inum ) 505 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji)506 436 DO jk = 2, jpk 507 DO jj = 1, jpj 508 DO ji = 1, jpi 509 aeiu(ji,jj,jk) = aeiu(ji,jj,1) 510 aeiv(ji,jj,jk) = aeiv(ji,jj,1) 511 END DO 512 END DO 437 aeiu(:,:,jk) = aeiu(:,:,1) 438 aeiv(:,:,jk) = aeiv(:,:,1) 513 439 END DO 514 440 ! … … 572 498 CALL wrk_alloc( jpi,jpj, zn, zah, zhw, zross, zaeiw ) 573 499 ! 574 !$OMP PARALLEL DO schedule(static) private(jj,ji) 575 DO jj = 1, jpj 576 DO ji = 1, jpi 577 zn (ji,jj) = 0._wp ! Local initialization 578 zhw (ji,jj) = 5._wp 579 zah (ji,jj) = 0._wp 580 zross(ji,jj) = 0._wp 581 END DO 582 END DO 500 zn (:,:) = 0._wp ! Local initialization 501 zhw (:,:) = 5._wp 502 zah (:,:) = 0._wp 503 zross(:,:) = 0._wp 583 504 ! ! Compute lateral diffusive coefficient at T-point 584 505 IF( ln_traldf_triad ) THEN 585 506 DO jk = 1, jpk 586 !$OMP PARALLEL DO schedule(static) private(jj,ji,zn2,ze3w)587 507 DO jj = 2, jpjm1 588 508 DO ji = 2, jpim1 … … 603 523 ELSE 604 524 DO jk = 1, jpk 605 !$OMP PARALLEL DO schedule(static) private(jj,ji,zn2,ze3w)606 525 DO jj = 2, jpjm1 607 526 DO ji = 2, jpim1 … … 623 542 END IF 624 543 625 !$OMP PARALLEL626 !$OMP DO schedule(static) private(jj,ji,zfw)627 544 DO jj = 2, jpjm1 628 545 DO ji = fs_2, fs_jpim1 ! vector opt. … … 637 554 ! !== Bound on eiv coeff. ==! 638 555 z1_f20 = 1._wp / ( 2._wp * omega * sin( rad * 20._wp ) ) 639 !$OMP DO schedule(static) private(jj,ji,zzaei)640 556 DO jj = 2, jpjm1 641 557 DO ji = fs_2, fs_jpim1 ! vector opt. … … 644 560 END DO 645 561 END DO 646 !$OMP END PARALLEL647 562 CALL lbc_lnk( zaeiw(:,:), 'W', 1. ) ! lateral boundary condition 648 563 ! 649 !$OMP PARALLEL DO schedule(static) private(jj,ji)650 564 DO jj = 2, jpjm1 !== aei at u- and v-points ==! 651 565 DO ji = fs_2, fs_jpim1 ! vector opt. … … 656 570 CALL lbc_lnk( paeiu(:,:,1), 'U', 1. ) ; CALL lbc_lnk( paeiv(:,:,1), 'V', 1. ) ! lateral boundary condition 657 571 658 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji)659 572 DO jk = 2, jpkm1 !== deeper values equal the surface one ==! 660 DO jj = 1, jpj 661 DO ji = 1, jpi 662 paeiu(ji,jj,jk) = paeiu(ji,jj,1) * umask(ji,jj,jk) 663 paeiv(ji,jj,jk) = paeiv(ji,jj,1) * vmask(ji,jj,jk) 664 END DO 665 END DO 573 paeiu(:,:,jk) = paeiu(:,:,1) * umask(:,:,jk) 574 paeiv(:,:,jk) = paeiv(:,:,1) * vmask(:,:,jk) 666 575 END DO 667 576 ! … … 715 624 716 625 717 !$OMP PARALLEL 718 !$OMP DO schedule(static) private(jj,ji) 719 DO jj = 1, jpj 720 DO ji = 1, jpi 721 zpsi_uw(ji,jj, 1 ) = 0._wp ; zpsi_vw(ji,jj, 1 ) = 0._wp 722 zpsi_uw(ji,jj,jpk) = 0._wp ; zpsi_vw(ji,jj,jpk) = 0._wp 723 END DO 724 END DO 725 !$OMP END DO NOWAIT 726 ! 727 !$OMP DO schedule(static) private(jk,jj,ji) 626 zpsi_uw(:,:, 1 ) = 0._wp ; zpsi_vw(:,:, 1 ) = 0._wp 627 zpsi_uw(:,:,jpk) = 0._wp ; zpsi_vw(:,:,jpk) = 0._wp 628 ! 728 629 DO jk = 2, jpkm1 729 630 DO jj = 1, jpjm1 … … 737 638 END DO 738 639 ! 739 !$OMP DO schedule(static) private(jk,jj,ji)740 640 DO jk = 1, jpkm1 741 641 DO jj = 1, jpjm1 … … 746 646 END DO 747 647 END DO 748 !$OMP END DO NOWAIT749 !$OMP DO schedule(static) private(jk,jj,ji)750 648 DO jk = 1, jpkm1 751 649 DO jj = 2, jpjm1 … … 756 654 END DO 757 655 END DO 758 !$OMP END PARALLEL759 656 ! 760 657 ! ! diagnose the eddy induced velocity and associated heat transport … … 798 695 CALL wrk_alloc( jpi,jpj,jpk, zw3d ) 799 696 ! 800 !$OMP PARALLEL 801 !$OMP DO schedule(static) private(jj,ji) 802 DO jj = 1, jpj 803 DO ji = 1, jpi 804 zw3d(ji,jj,jpk) = 0._wp ! bottom value always 0 805 END DO 806 END DO 807 !$OMP END DO NOWAIT 808 ! 809 !$OMP DO schedule(static) private(jk,jj,ji) 697 zw3d(:,:,jpk) = 0._wp ! bottom value always 0 698 ! 810 699 DO jk = 1, jpkm1 ! e2u e3u u_eiv = -dk[psi_uw] 811 DO jj = 1, jpj 812 DO ji = 1, jpi 813 zw3d(ji,jj,jk) = ( psi_uw(ji,jj,jk+1) - psi_uw(ji,jj,jk) ) / ( e2u(ji,jj) * e3u_n(ji,jj,jk) ) 814 END DO 815 END DO 816 END DO 817 !$OMP END PARALLEL 700 zw3d(:,:,jk) = ( psi_uw(:,:,jk+1) - psi_uw(:,:,jk) ) / ( e2u(:,:) * e3u_n(:,:,jk) ) 701 END DO 818 702 CALL iom_put( "uoce_eiv", zw3d ) 819 703 ! 820 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji)821 704 DO jk = 1, jpkm1 ! e1v e3v v_eiv = -dk[psi_vw] 822 DO jj = 1, jpj 823 DO ji = 1, jpi 824 zw3d(ji,jj,jk) = ( psi_vw(ji,jj,jk+1) - psi_vw(ji,jj,jk) ) / ( e1v(ji,jj) * e3v_n(ji,jj,jk) ) 825 END DO 826 END DO 705 zw3d(:,:,jk) = ( psi_vw(:,:,jk+1) - psi_vw(:,:,jk) ) / ( e1v(:,:) * e3v_n(:,:,jk) ) 827 706 END DO 828 707 CALL iom_put( "voce_eiv", zw3d ) 829 708 ! 830 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji)831 709 DO jk = 1, jpkm1 ! e1 e2 w_eiv = dk[psix] + dk[psix] 832 710 DO jj = 2, jpjm1 … … 846 724 zztmp = 0.5_wp * rau0 * rcp 847 725 IF( iom_use('ueiv_heattr') .OR. iom_use('ueiv_heattr3d') ) THEN 848 !$OMP PARALLEL 849 !$OMP DO schedule(static) private(jj,ji) 850 DO jj = 1, jpj 851 DO ji = 1, jpi 852 zw2d(ji,jj) = 0._wp 853 END DO 854 END DO 855 !$OMP DO schedule(static) private(jk,jj,ji) 856 DO jk = 1, jpk 857 DO jj = 1, jpj 858 DO ji = 1, jpi 859 zw3d(ji,jj,jk) = 0._wp 860 END DO 861 END DO 862 END DO 863 DO jk = 1, jpkm1 864 !$OMP DO schedule(static) private(jj,ji) 865 DO jj = 2, jpjm1 866 DO ji = fs_2, fs_jpim1 ! vector opt. 867 zw3d(ji,jj,jk) = zw3d(ji,jj,jk) + ( psi_uw(ji,jj,jk+1) - psi_uw(ji,jj,jk) ) & 868 & * ( tsn (ji,jj,jk,jp_tem) + tsn (ji+1,jj,jk,jp_tem) ) 869 zw2d(ji,jj) = zw2d(ji,jj) + zw3d(ji,jj,jk) 870 END DO 871 END DO 872 END DO 873 !$OMP END PARALLEL 874 CALL lbc_lnk( zw2d, 'U', -1. ) 875 CALL lbc_lnk( zw3d, 'U', -1. ) 876 CALL iom_put( "ueiv_heattr" , zztmp * zw2d ) ! heat transport in i-direction 877 CALL iom_put( "ueiv_heattr3d", zztmp * zw3d ) ! heat transport in i-direction 878 ENDIF 879 !$OMP PARALLEL 880 !$OMP DO schedule(static) private(jj,ji) 881 DO jj = 1, jpj 882 DO ji = 1, jpi 883 zw2d(ji,jj) = 0._wp 884 END DO 885 END DO 886 !$OMP DO schedule(static) private(jk,jj,ji) 887 DO jk = 1, jpk 888 DO jj = 1, jpj 889 DO ji = 1, jpi 890 zw3d(ji,jj,jk) = 0._wp 891 END DO 892 END DO 893 END DO 726 zw2d(:,:) = 0._wp 727 zw3d(:,:,:) = 0._wp 728 DO jk = 1, jpkm1 729 DO jj = 2, jpjm1 730 DO ji = fs_2, fs_jpim1 ! vector opt. 731 zw3d(ji,jj,jk) = zw3d(ji,jj,jk) + ( psi_uw(ji,jj,jk+1) - psi_uw(ji,jj,jk) ) & 732 & * ( tsn (ji,jj,jk,jp_tem) + tsn (ji+1,jj,jk,jp_tem) ) 733 zw2d(ji,jj) = zw2d(ji,jj) + zw3d(ji,jj,jk) 734 END DO 735 END DO 736 END DO 737 CALL lbc_lnk( zw2d, 'U', -1. ) 738 CALL lbc_lnk( zw3d, 'U', -1. ) 739 CALL iom_put( "ueiv_heattr" , zztmp * zw2d ) ! heat transport in i-direction 740 CALL iom_put( "ueiv_heattr3d", zztmp * zw3d ) ! heat transport in i-direction 741 ENDIF 742 zw2d(:,:) = 0._wp 743 zw3d(:,:,:) = 0._wp 894 744 DO jk = 1, jpkm1 895 !$OMP DO schedule(static) private(jj,ji)896 745 DO jj = 2, jpjm1 897 746 DO ji = fs_2, fs_jpim1 ! vector opt. … … 902 751 END DO 903 752 END DO 904 !$OMP END PARALLEL905 753 CALL lbc_lnk( zw2d, 'V', -1. ) 906 754 CALL iom_put( "veiv_heattr", zztmp * zw2d ) ! heat transport in j-direction … … 911 759 zztmp = 0.5_wp * 0.5 912 760 IF( iom_use('ueiv_salttr') .OR. iom_use('ueiv_salttr3d')) THEN 913 !$OMP PARALLEL 914 !$OMP DO schedule(static) private(jj,ji) 915 DO jj = 1, jpj 916 DO ji = 1, jpi 917 zw2d(ji,jj) = 0._wp 918 END DO 919 END DO 920 !$OMP DO schedule(static) private(jk,jj,ji) 921 DO jk = 1, jpk 922 DO jj = 1, jpj 923 DO ji = 1, jpi 924 zw3d(ji,jj,jk) = 0._wp 925 END DO 926 END DO 927 END DO 928 DO jk = 1, jpkm1 929 !$OMP DO schedule(static) private(jj,ji) 930 DO jj = 2, jpjm1 931 DO ji = fs_2, fs_jpim1 ! vector opt. 932 zw3d(ji,jj,jk) = zw3d(ji,jj,jk) * ( psi_uw(ji,jj,jk+1) - psi_uw(ji,jj,jk) ) & 933 & * ( tsn (ji,jj,jk,jp_sal) + tsn (ji+1,jj,jk,jp_sal) ) 934 zw2d(ji,jj) = zw2d(ji,jj) + zw3d(ji,jj,jk) 935 END DO 936 END DO 937 END DO 938 CALL lbc_lnk( zw2d, 'U', -1. ) 939 CALL lbc_lnk( zw3d, 'U', -1. ) 940 CALL iom_put( "ueiv_salttr", zztmp * zw2d ) ! salt transport in i-direction 941 CALL iom_put( "ueiv_salttr3d", zztmp * zw3d ) ! salt transport in i-direction 942 !$OMP END PARALLEL 943 ENDIF 944 !$OMP PARALLEL 945 !$OMP DO schedule(static) private(jj,ji) 946 DO jj = 1, jpj 947 DO ji = 1, jpi 948 zw2d(ji,jj) = 0._wp 949 END DO 950 END DO 951 !$OMP DO schedule(static) private(jk,jj,ji) 952 DO jk = 1, jpk 953 DO jj = 1, jpj 954 DO ji = 1, jpi 955 zw3d(ji,jj,jk) = 0._wp 956 END DO 957 END DO 958 END DO 761 zw2d(:,:) = 0._wp 762 zw3d(:,:,:) = 0._wp 763 DO jk = 1, jpkm1 764 DO jj = 2, jpjm1 765 DO ji = fs_2, fs_jpim1 ! vector opt. 766 zw3d(ji,jj,jk) = zw3d(ji,jj,jk) * ( psi_uw(ji,jj,jk+1) - psi_uw(ji,jj,jk) ) & 767 & * ( tsn (ji,jj,jk,jp_sal) + tsn (ji+1,jj,jk,jp_sal) ) 768 zw2d(ji,jj) = zw2d(ji,jj) + zw3d(ji,jj,jk) 769 END DO 770 END DO 771 END DO 772 CALL lbc_lnk( zw2d, 'U', -1. ) 773 CALL lbc_lnk( zw3d, 'U', -1. ) 774 CALL iom_put( "ueiv_salttr", zztmp * zw2d ) ! salt transport in i-direction 775 CALL iom_put( "ueiv_salttr3d", zztmp * zw3d ) ! salt transport in i-direction 776 ENDIF 777 zw2d(:,:) = 0._wp 778 zw3d(:,:,:) = 0._wp 959 779 DO jk = 1, jpkm1 960 !$OMP DO schedule(static) private(jj,ji)961 780 DO jj = 2, jpjm1 962 781 DO ji = fs_2, fs_jpim1 ! vector opt. … … 967 786 END DO 968 787 END DO 969 !$OMP END PARALLEL970 788 CALL lbc_lnk( zw2d, 'V', -1. ) 971 789 CALL iom_put( "veiv_salttr", zztmp * zw2d ) ! salt transport in j-direction
Note: See TracChangeset
for help on using the changeset viewer.