- Timestamp:
- 2016-10-18T15:32:04+02:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra.F90
r6748 r7037 276 276 ! 277 277 IF( ln_traldf_blp .AND. .NOT. l_ldftra_time ) THEN 278 !$OMP PARALLEL WORKSHARE279 278 ahtu(:,:,:) = SQRT( ahtu(:,:,:) ) 280 279 ahtv(:,:,:) = SQRT( ahtv(:,:,:) ) 281 !$OMP END PARALLEL WORKSHARE282 280 ENDIF 283 281 ! … … 335 333 z1_f20 = 1._wp / ( 2._wp * omega * SIN( rad * 20._wp ) ) ! 1 / ff(20 degrees) 336 334 zaht_min = 0.2_wp * rn_aht_0 ! minimum value for aht 335 !$OMP PARALLEL 336 !$OMP DO schedule(static) private(jj,ji,zaht) 337 337 DO jj = 1, jpj 338 338 DO ji = 1, jpi … … 342 342 END DO 343 343 END DO 344 !$OMP DO schedule(static) private(jk) 344 345 DO jk = 2, jpkm1 ! deeper value = surface value 345 346 ahtu(:,:,jk) = ahtu(:,:,1) * umask(:,:,jk) 346 347 ahtv(:,:,jk) = ahtv(:,:,1) * vmask(:,:,jk) 347 348 END DO 349 !$OMP END DO NOWAIT 350 !$OMP END PARALLEL 348 351 ! 349 352 CASE( 31 ) !== time varying 3D field ==! = F( local velocity ) 350 353 IF( ln_traldf_lap ) THEN ! laplacian operator |u| e /12 354 !$OMP PARALLEL DO schedule(static) private(jk) 351 355 DO jk = 1, jpkm1 352 356 ahtu(:,:,jk) = ABS( ub(:,:,jk) ) * e1u(:,:) * r1_12 … … 354 358 END DO 355 359 ELSEIF( ln_traldf_blp ) THEN ! bilaplacian operator sqrt( |u| e^3 /12 ) = sqrt( |u| e /12 ) * e 360 !$OMP PARALLEL DO schedule(static) private(jk) 356 361 DO jk = 1, jpkm1 357 362 ahtu(:,:,jk) = SQRT( ABS( ub(:,:,jk) ) * e1u(:,:) * r1_12 ) * e1u(:,:) … … 516 521 CALL wrk_alloc( jpi,jpj, zn, zah, zhw, zross, zaeiw ) 517 522 ! 523 !$OMP PARALLEL WORKSHARE 518 524 zn (:,:) = 0._wp ! Local initialization 519 525 zhw (:,:) = 5._wp 520 526 zah (:,:) = 0._wp 521 527 zross(:,:) = 0._wp 528 !$OMP END PARALLEL WORKSHARE 522 529 ! ! Compute lateral diffusive coefficient at T-point 523 530 IF( ln_traldf_triad ) THEN 524 531 DO jk = 1, jpk 532 !$OMP PARALLEL DO schedule(static) private(jj,ji,zn2,ze3w) 525 533 DO jj = 2, jpjm1 526 534 DO ji = 2, jpim1 … … 541 549 ELSE 542 550 DO jk = 1, jpk 551 !$OMP PARALLEL DO schedule(static) private(jj,ji,zn2,ze3w) 543 552 DO jj = 2, jpjm1 544 553 DO ji = 2, jpim1 … … 560 569 END IF 561 570 571 !$OMP PARALLEL 572 !$OMP DO schedule(static) private(jj,ji,zfw) 562 573 DO jj = 2, jpjm1 563 574 DO ji = fs_2, fs_jpim1 ! vector opt. … … 581 592 ! !== Bound on eiv coeff. ==! 582 593 z1_f20 = 1._wp / ( 2._wp * omega * sin( rad * 20._wp ) ) 594 !$OMP DO schedule(static) private(jj,ji,zzaei) 583 595 DO jj = 2, jpjm1 584 596 DO ji = fs_2, fs_jpim1 ! vector opt. … … 587 599 END DO 588 600 END DO 601 !$OMP END DO NOWAIT 602 !$OMP END PARALLEL 589 603 CALL lbc_lnk( zaeiw(:,:), 'W', 1. ) ! lateral boundary condition 590 604 ! 605 !$OMP PARALLEL DO schedule(static) private(jj,ji,zfw) 591 606 DO jj = 2, jpjm1 !== aei at u- and v-points ==! 592 607 DO ji = fs_2, fs_jpim1 ! vector opt. … … 597 612 CALL lbc_lnk( paeiu(:,:,1), 'U', 1. ) ; CALL lbc_lnk( paeiv(:,:,1), 'V', 1. ) ! lateral boundary condition 598 613 614 !$OMP PARALLEL DO schedule(static) private(jk) 599 615 DO jk = 2, jpkm1 !== deeper values equal the surface one ==! 600 616 paeiu(:,:,jk) = paeiu(:,:,1) * umask(:,:,jk) … … 651 667 652 668 669 !$OMP PARALLEL 670 !$OMP WORKSHARE 653 671 zpsi_uw(:,:, 1 ) = 0._wp ; zpsi_vw(:,:, 1 ) = 0._wp 654 672 zpsi_uw(:,:,jpk) = 0._wp ; zpsi_vw(:,:,jpk) = 0._wp 655 ! 673 !$OMP END WORKSHARE NOWAIT 674 ! 675 !$OMP DO schedule(static) private(jk,jj,ji) 656 676 DO jk = 2, jpkm1 657 677 DO jj = 1, jpjm1 … … 665 685 END DO 666 686 ! 687 !$OMP DO schedule(static) private(jk,jj,ji) 667 688 DO jk = 1, jpkm1 668 689 DO jj = 1, jpjm1 … … 673 694 END DO 674 695 END DO 696 !$OMP END DO NOWAIT 697 !$OMP DO schedule(static) private(jk,jj,ji) 675 698 DO jk = 1, jpkm1 676 699 DO jj = 2, jpjm1 … … 681 704 END DO 682 705 END DO 706 !$OMP END DO NOWAIT 707 !$OMP END PARALLEL 683 708 ! 684 709 ! ! diagnose the eddy induced velocity and associated heat transport … … 722 747 CALL wrk_alloc( jpi,jpj,jpk, zw3d ) 723 748 ! 749 !$OMP PARALLEL 750 !$OMP WORKSHARE 724 751 zw3d(:,:,jpk) = 0._wp ! bottom value always 0 725 ! 752 !$OMP END WORKSHARE NOWAIT 753 ! 754 !$OMP DO schedule(static) private(jk) 726 755 DO jk = 1, jpkm1 ! e2u e3u u_eiv = -dk[psi_uw] 727 756 zw3d(:,:,jk) = ( psi_uw(:,:,jk+1) - psi_uw(:,:,jk) ) / ( e2u(:,:) * e3u_n(:,:,jk) ) 728 757 END DO 758 !$OMP END DO NOWAIT 759 !$OMP END PARALLEL 729 760 CALL iom_put( "uoce_eiv", zw3d ) 730 761 ! 762 !$OMP PARALLEL DO schedule(static) private(jk) 731 763 DO jk = 1, jpkm1 ! e1v e3v v_eiv = -dk[psi_vw] 732 764 zw3d(:,:,jk) = ( psi_vw(:,:,jk+1) - psi_vw(:,:,jk) ) / ( e1v(:,:) * e3v_n(:,:,jk) ) … … 734 766 CALL iom_put( "voce_eiv", zw3d ) 735 767 ! 768 !$OMP PARALLEL DO schedule(static) private(jk,jj,ji) 736 769 DO jk = 1, jpkm1 ! e1 e2 w_eiv = dk[psix] + dk[psix] 737 770 DO jj = 2, jpjm1 … … 752 785 ! 753 786 zztmp = 0.5_wp * rau0 * rcp 754 zw2d(:,:) = 0._wp 787 !$OMP PARALLEL 788 !$OMP WORKSHARE 789 zw2d(:,:) = 0._wp 790 !$OMP END WORKSHARE 755 791 DO jk = 1, jpkm1 792 !$OMP DO schedule(static) private(jj,ji) 756 793 DO jj = 2, jpjm1 757 794 DO ji = fs_2, fs_jpim1 ! vector opt. … … 760 797 END DO 761 798 END DO 762 END DO 799 !$OMP END DO NOWAIT 800 END DO 801 !$OMP END PARALLEL 763 802 CALL lbc_lnk( zw2d, 'U', -1. ) 764 803 CALL iom_put( "ueiv_heattr", zw2d ) ! heat transport in i-direction 804 !$OMP PARALLEL 805 !$OMP WORKSHARE 765 806 zw2d(:,:) = 0._wp 807 !$OMP END WORKSHARE 766 808 DO jk = 1, jpkm1 809 !$OMP DO schedule(static) private(jj,ji) 767 810 DO jj = 2, jpjm1 768 811 DO ji = fs_2, fs_jpim1 ! vector opt. … … 771 814 END DO 772 815 END DO 773 END DO 816 !$OMP END DO NOWAIT 817 END DO 818 !$OMP END PARALLEL 774 819 CALL lbc_lnk( zw2d, 'V', -1. ) 775 820 CALL iom_put( "veiv_heattr", zw2d ) ! heat transport in i-direction
Note: See TracChangeset
for help on using the changeset viewer.