Changeset 14820 for NEMO/trunk/src/OCE/DYN
- Timestamp:
- 2021-05-10T10:26:13+02:00 (3 years ago)
- Location:
- NEMO/trunk/src/OCE/DYN
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/OCE/DYN/divhor.F90
r13558 r14820 78 78 ! 79 79 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) !== Horizontal divergence ==! 80 hdiv(ji,jj,jk) = ( e2u(ji ,jj) * e3u(ji ,jj,jk,Kmm) * uu(ji ,jj,jk,Kmm) & 81 & - e2u(ji-1,jj) * e3u(ji-1,jj,jk,Kmm) * uu(ji-1,jj,jk,Kmm) & 82 & + e1v(ji,jj ) * e3v(ji,jj ,jk,Kmm) * vv(ji,jj ,jk,Kmm) & 83 & - e1v(ji,jj-1) * e3v(ji,jj-1,jk,Kmm) * vv(ji,jj-1,jk,Kmm) ) & 84 & * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 80 ! round brackets added to fix the order of floating point operations 81 ! needed to ensure halo 1 - halo 2 compatibility 82 hdiv(ji,jj,jk) = ( ( e2u(ji ,jj) * e3u(ji ,jj,jk,Kmm) * uu(ji ,jj,jk,Kmm) & 83 & - e2u(ji-1,jj) * e3u(ji-1,jj,jk,Kmm) * uu(ji-1,jj,jk,Kmm) & 84 & ) & ! bracket for halo 1 - halo 2 compatibility 85 & + ( e1v(ji,jj ) * e3v(ji,jj ,jk,Kmm) * vv(ji,jj ,jk,Kmm) & 86 & - e1v(ji,jj-1) * e3v(ji,jj-1,jk,Kmm) * vv(ji,jj-1,jk,Kmm) & 87 & ) & ! bracket for halo 1 - halo 2 compatibility 88 & ) * r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 85 89 END_3D 86 90 ! -
NEMO/trunk/src/OCE/DYN/dynadv_ubs.F90
r14433 r14820 109 109 ! 110 110 DO_2D( 0, 0, 0, 0 ) ! laplacian 111 zlu_uu(ji,jj,jk,1) = ( puu (ji+1,jj ,jk,Kbb) - 2.*puu (ji,jj,jk,Kbb) + puu (ji-1,jj ,jk,Kbb) ) * umask(ji,jj,jk) 112 zlv_vv(ji,jj,jk,1) = ( pvv (ji ,jj+1,jk,Kbb) - 2.*pvv (ji,jj,jk,Kbb) + pvv (ji ,jj-1,jk,Kbb) ) * vmask(ji,jj,jk) 111 ! round brackets added to fix the order of floating point operations 112 ! needed to ensure halo 1 - halo 2 compatibility 113 zlu_uu(ji,jj,jk,1) = ( (puu (ji+1,jj ,jk,Kbb) - puu (ji ,jj ,jk,Kbb)) + & 114 & (puu (ji-1,jj ,jk,Kbb) - puu (ji ,jj ,jk,Kbb)) ) * umask(ji ,jj ,jk) 115 zlv_vv(ji,jj,jk,1) = ( (pvv (ji ,jj+1,jk,Kbb) - pvv (ji ,jj ,jk,Kbb)) + & 116 & (pvv (ji ,jj-1,jk,Kbb) - pvv (ji ,jj ,jk,Kbb)) ) * vmask(ji ,jj ,jk) 113 117 zlu_uv(ji,jj,jk,1) = ( puu (ji ,jj+1,jk,Kbb) - puu (ji ,jj ,jk,Kbb) ) * fmask(ji ,jj ,jk) & 114 118 & - ( puu (ji ,jj ,jk,Kbb) - puu (ji ,jj-1,jk,Kbb) ) * fmask(ji ,jj-1,jk) … … 116 120 & - ( pvv (ji ,jj ,jk,Kbb) - pvv (ji-1,jj ,jk,Kbb) ) * fmask(ji-1,jj ,jk) 117 121 ! 118 zlu_uu(ji,jj,jk,2) = ( zfu(ji+1,jj ,jk) - 2.*zfu(ji,jj,jk) + zfu(ji-1,jj ,jk) ) * umask(ji,jj,jk) 119 zlv_vv(ji,jj,jk,2) = ( zfv(ji ,jj+1,jk) - 2.*zfv(ji,jj,jk) + zfv(ji ,jj-1,jk) ) * vmask(ji,jj,jk) 122 zlu_uu(ji,jj,jk,2) = ( (zfu(ji+1,jj ,jk) - zfu(ji ,jj ,jk)) + & 123 & (zfu(ji-1,jj ,jk) - zfu(ji ,jj ,jk)) ) * umask(ji ,jj ,jk) 124 zlv_vv(ji,jj,jk,2) = ( (zfv(ji ,jj+1,jk) - zfv(ji ,jj ,jk)) + & 125 & (zfv(ji ,jj-1,jk) - zfv(ji ,jj ,jk)) ) * vmask(ji ,jj ,jk) 120 126 zlu_uv(ji,jj,jk,2) = ( zfu(ji ,jj+1,jk) - zfu(ji ,jj ,jk) ) * fmask(ji ,jj ,jk) & 121 127 & - ( zfu(ji ,jj ,jk) - zfu(ji ,jj-1,jk) ) * fmask(ji ,jj-1,jk) … … 124 130 END_2D 125 131 END DO 126 CALL lbc_lnk( 'dynadv_ubs', zlu_uu(:,:,:,1), 'U', 1.0_wp , zlu_uv(:,:,:,1), 'U',1.0_wp, &127 & zlu_uu(:,:,:,2), 'U', 1.0_wp , zlu_uv(:,:,:,2), 'U', 1.0_wp, &128 & zlv_vv(:,:,:,1), 'V', 1.0_wp , zlv_vu(:,:,:,1), 'V',1.0_wp, &129 & zlv_vv(:,:,:,2), 'V', 1.0_wp , zlv_vu(:,:,:,2), 'V',1.0_wp )132 CALL lbc_lnk( 'dynadv_ubs', zlu_uu(:,:,:,1), 'U', -1.0_wp , zlu_uv(:,:,:,1), 'U', -1.0_wp, & 133 & zlu_uu(:,:,:,2), 'U', -1.0_wp , zlu_uv(:,:,:,2), 'U', -1.0_wp, & 134 & zlv_vv(:,:,:,1), 'V', -1.0_wp , zlv_vu(:,:,:,1), 'V', -1.0_wp, & 135 & zlv_vv(:,:,:,2), 'V', -1.0_wp , zlv_vu(:,:,:,2), 'V', -1.0_wp ) 130 136 ! 131 137 ! ! ====================== ! -
NEMO/trunk/src/OCE/DYN/dynkeg.F90
r13497 r14820 110 110 CASE ( nkeg_HW ) !-- Hollingsworth scheme --! 111 111 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 112 ! round brackets added to fix the order of floating point operations 113 ! needed to ensure halo 1 - halo 2 compatibility 112 114 zu = 8._wp * ( puu(ji-1,jj ,jk,Kmm) * puu(ji-1,jj ,jk,Kmm) & 113 115 & + puu(ji ,jj ,jk,Kmm) * puu(ji ,jj ,jk,Kmm) ) & 114 & + ( puu(ji-1,jj-1,jk,Kmm) + puu(ji-1,jj+1,jk,Kmm) ) * ( puu(ji-1,jj-1,jk,Kmm) + puu(ji-1,jj+1,jk,Kmm) ) & 115 & + ( puu(ji ,jj-1,jk,Kmm) + puu(ji ,jj+1,jk,Kmm) ) * ( puu(ji ,jj-1,jk,Kmm) + puu(ji ,jj+1,jk,Kmm) ) 116 & + ( ( puu(ji-1,jj-1,jk,Kmm) + puu(ji-1,jj+1,jk,Kmm) ) * ( puu(ji-1,jj-1,jk,Kmm) + puu(ji-1,jj+1,jk,Kmm) ) & 117 & + ( puu(ji ,jj-1,jk,Kmm) + puu(ji ,jj+1,jk,Kmm) ) * ( puu(ji ,jj-1,jk,Kmm) + puu(ji ,jj+1,jk,Kmm) ) & 118 & ) ! bracket for halo 1 - halo 2 compatibility 116 119 ! 117 120 zv = 8._wp * ( pvv(ji ,jj-1,jk,Kmm) * pvv(ji ,jj-1,jk,Kmm) & 118 121 & + pvv(ji ,jj ,jk,Kmm) * pvv(ji ,jj ,jk,Kmm) ) & 119 & + ( pvv(ji-1,jj-1,jk,Kmm) + pvv(ji+1,jj-1,jk,Kmm) ) * ( pvv(ji-1,jj-1,jk,Kmm) + pvv(ji+1,jj-1,jk,Kmm) ) & 120 & + ( pvv(ji-1,jj ,jk,Kmm) + pvv(ji+1,jj ,jk,Kmm) ) * ( pvv(ji-1,jj ,jk,Kmm) + pvv(ji+1,jj ,jk,Kmm) ) 122 & + ( ( pvv(ji-1,jj-1,jk,Kmm) + pvv(ji+1,jj-1,jk,Kmm) ) * ( pvv(ji-1,jj-1,jk,Kmm) + pvv(ji+1,jj-1,jk,Kmm) ) & 123 & + ( pvv(ji-1,jj ,jk,Kmm) + pvv(ji+1,jj ,jk,Kmm) ) * ( pvv(ji-1,jj ,jk,Kmm) + pvv(ji+1,jj ,jk,Kmm) ) & 124 & ) ! bracket for halo 1 - halo 2 compatibility 121 125 zhke(ji,jj,jk) = r1_48 * ( zv + zu ) 122 126 END_3D -
NEMO/trunk/src/OCE/DYN/dynvor.F90
r14433 r14820 632 632 CASE ( 0 ) ! original formulation (masked averaging of e3t divided by 4) 633 633 DO_2D( 1, 0, 1, 0 ) 634 ze3f = ( e3t(ji ,jj+1,jk,Kmm)*tmask(ji ,jj+1,jk) & 635 & + e3t(ji+1,jj+1,jk,Kmm)*tmask(ji+1,jj+1,jk) & 636 & + e3t(ji ,jj ,jk,Kmm)*tmask(ji ,jj ,jk) & 637 & + e3t(ji+1,jj ,jk,Kmm)*tmask(ji+1,jj ,jk) ) 634 ! round brackets added to fix the order of floating point operations 635 ! needed to ensure halo 1 - halo 2 compatibility 636 ze3f = ( (e3t(ji ,jj+1,jk,Kmm)*tmask(ji ,jj+1,jk) & 637 & + e3t(ji+1,jj+1,jk,Kmm)*tmask(ji+1,jj+1,jk)) & 638 & + (e3t(ji ,jj ,jk,Kmm)*tmask(ji ,jj ,jk) & 639 & + e3t(ji+1,jj ,jk,Kmm)*tmask(ji+1,jj ,jk)) ) 638 640 IF( ze3f /= 0._wp ) THEN ; z1_e3f(ji,jj) = 4._wp / ze3f 639 641 ELSE ; z1_e3f(ji,jj) = 0._wp … … 642 644 CASE ( 1 ) ! new formulation (masked averaging of e3t divided by the sum of mask) 643 645 DO_2D( 1, 0, 1, 0 ) 644 ze3f = ( e3t(ji ,jj+1,jk,Kmm)*tmask(ji ,jj+1,jk) & 645 & + e3t(ji+1,jj+1,jk,Kmm)*tmask(ji+1,jj+1,jk) & 646 & + e3t(ji ,jj ,jk,Kmm)*tmask(ji ,jj ,jk) & 647 & + e3t(ji+1,jj ,jk,Kmm)*tmask(ji+1,jj ,jk) ) 646 ! round brackets added to fix the order of floating point operations 647 ! needed to ensure halo 1 - halo 2 compatibility 648 ze3f = ( (e3t(ji ,jj+1,jk,Kmm)*tmask(ji ,jj+1,jk) & 649 & + e3t(ji+1,jj+1,jk,Kmm)*tmask(ji+1,jj+1,jk)) & 650 & + (e3t(ji ,jj ,jk,Kmm)*tmask(ji ,jj ,jk) & 651 & + e3t(ji+1,jj ,jk,Kmm)*tmask(ji+1,jj ,jk)) ) 648 652 zmsk = ( tmask(ji,jj+1,jk) + tmask(ji+1,jj+1,jk) & 649 653 & + tmask(ji,jj ,jk) + tmask(ji+1,jj ,jk) ) … … 678 682 CASE ( np_CRV ) !* Coriolis + relative vorticity 679 683 DO_2D( 1, 0, 1, 0 ) 680 zwz(ji,jj,jk) = ( ff_f(ji,jj) + ( e2v(ji+1,jj ) * pv(ji+1,jj,jk) - e2v(ji,jj) * pv(ji,jj,jk) & 681 & - e1u(ji ,jj+1) * pu(ji,jj+1,jk) + e1u(ji,jj) * pu(ji,jj,jk) ) & 682 & * r1_e1e2f(ji,jj) ) * z1_e3f(ji,jj) 684 ! round brackets added to fix the order of floating point operations 685 ! needed to ensure halo 1 - halo 2 compatibility 686 zwz(ji,jj,jk) = ( ff_f(ji,jj) + ( ( e2v(ji+1,jj ) * pv(ji+1,jj,jk) - e2v(ji,jj) * pv(ji,jj,jk) & 687 & ) & ! bracket for halo 1 - halo 2 compatibility 688 & - ( e1u(ji ,jj+1) * pu(ji,jj+1,jk) - e1u(ji,jj) * pu(ji,jj,jk) & 689 & ) & ! bracket for halo 1 - halo 2 compatibility 690 & ) * r1_e1e2f(ji,jj) ) * z1_e3f(ji,jj) 683 691 END_2D 684 692 IF( ln_dynvor_msk ) THEN ! mask the relative vorticity … … 781 789 CASE ( np_RVO ) !* relative vorticity 782 790 DO_2D( 1, 0, 1, 0 ) 783 zwz(ji,jj,jk) = ( e2v(ji+1,jj ) * pv(ji+1,jj ,jk) - e2v(ji,jj) * pv(ji,jj,jk) & 784 & - e1u(ji ,jj+1) * pu(ji ,jj+1,jk) + e1u(ji,jj) * pu(ji,jj,jk) ) & 791 ! round brackets added to fix the order of floating point operations 792 ! needed to ensure halo 1 - halo 2 compatibility 793 zwz(ji,jj,jk) = ( (e2v(ji+1,jj ) * pv(ji+1,jj ,jk) - e2v(ji,jj) * pv(ji,jj,jk)) & 794 & - (e1u(ji ,jj+1) * pu(ji ,jj+1,jk) - e1u(ji,jj) * pu(ji,jj,jk)) ) & 785 795 & * r1_e1e2f(ji,jj) 786 796 END_2D … … 797 807 CASE ( np_CRV ) !* Coriolis + relative vorticity 798 808 DO_2D( 1, 0, 1, 0 ) 799 zwz(ji,jj,jk) = ( ff_f(ji,jj) + ( e2v(ji+1,jj ) * pv(ji+1,jj ,jk) - e2v(ji,jj) * pv(ji,jj,jk) & 800 & - e1u(ji ,jj+1) * pu(ji ,jj+1,jk) + e1u(ji,jj) * pu(ji,jj,jk) ) & 809 ! round brackets added to fix the order of floating point operations 810 ! needed to ensure halo 1 - halo 2 compatibility 811 zwz(ji,jj,jk) = ( ff_f(ji,jj) + ( (e2v(ji+1,jj ) * pv(ji+1,jj ,jk) - e2v(ji,jj) * pv(ji,jj,jk)) & 812 & - (e1u(ji ,jj+1) * pu(ji ,jj+1,jk) - e1u(ji,jj) * pu(ji,jj,jk)) ) & 801 813 & * r1_e1e2f(ji,jj) ) 802 814 END_2D
Note: See TracChangeset
for help on using the changeset viewer.