Changeset 14215
- Timestamp:
- 2020-12-18T14:49:22+01:00 (4 years ago)
- Location:
- NEMO/trunk/src
- Files:
-
- 21 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/trunk/src/ABL/ablmod.F90
r14072 r14215 1263 1263 smth_b = 1._wp / 4._wp 1264 1264 ! 1265 DO_2D( 1, 1, 1, 0)1265 DO_2D( 1, 0, 1, 1 ) 1266 1266 zumsk = msk(ji,jj) * msk(ji+1,jj) 1267 1267 zdX ( ji, jj ) = ( pvar2d( ji+1,jj ) - pvar2d( ji ,jj ) ) * zumsk 1268 1268 END_2D 1269 1269 1270 DO_2D( 1, 0, 1, 1)1270 DO_2D( 1, 1, 1, 0 ) 1271 1271 zvmsk = msk(ji,jj) * msk(ji,jj+1) 1272 1272 zdY ( ji, jj ) = ( pvar2d( ji, jj+1 ) - pvar2d( ji ,jj ) ) * zvmsk 1273 1273 END_2D 1274 1274 1275 DO_2D( 1, 0, 0, 0 )1275 DO_2D( 0, 0, 1, 0 ) 1276 1276 zFY ( ji, jj ) = zdY ( ji, jj ) & 1277 1277 & + smth_a* ( (zdX ( ji, jj+1 ) - zdX( ji-1, jj+1 )) & … … 1279 1279 END_2D 1280 1280 1281 DO_2D( 0, 0, 1, 0 )1281 DO_2D( 1, 0, 0, 0 ) 1282 1282 zFX( ji, jj ) = zdX( ji, jj ) & 1283 1283 & + smth_a*( (zdY( ji+1, jj ) - zdY( ji+1, jj-1)) & -
NEMO/trunk/src/ICE/icedyn_adv_pra.F90
r14103 r14215 582 582 ! 583 583 ! Limitation of moments. 584 DO_2D( 1, 1, ji0, ji0)584 DO_2D( ji0, ji0, 1, 1 ) 585 585 ! 586 586 zpsm = psm (ji,jj,jl) ! optimization … … 642 642 END_2D 643 643 ! 644 DO_2D( 1, 0, ji0, ji0 )644 DO_2D( ji0, ji0, 1, 0 ) 645 645 ! ! Flux from j+1 to j when v LT 0. 646 646 zalf = MAX( 0._wp, -pvt(ji,jj) ) * pdt / psm(ji,jj+1,jl) … … 662 662 END_2D 663 663 664 DO_2D( 0, 0, ji0, ji0 )664 DO_2D( ji0, ji0, 0, 0 ) 665 665 ! ! Readjust moments remaining in the box. 666 666 zbt = zbet(ji,jj-1) -
NEMO/trunk/src/ICE/icedyn_adv_umx.F90
r14072 r14215 491 491 IF( pamsk == 0._wp ) THEN 492 492 DO jl = 1, jpl 493 DO_2D( 0, 0, 1, 0 )493 DO_2D( 1, 0, 0, 0 ) 494 494 IF( ABS( pu(ji,jj) ) > epsi10 ) THEN 495 495 zfu_ho (ji,jj,jl) = zfu_ho (ji,jj,jl) * puc (ji,jj,jl) / pu(ji,jj) … … 501 501 ! 502 502 END_2D 503 DO_2D( 1, 0, 0, 0 )503 DO_2D( 0, 0, 1, 0 ) 504 504 IF( ABS( pv(ji,jj) ) > epsi10 ) THEN 505 505 zfv_ho (ji,jj,jl) = zfv_ho (ji,jj,jl) * pvc (ji,jj,jl) / pv(ji,jj) … … 536 536 IF( PRESENT( pua_ho ) ) THEN 537 537 DO jl = 1, jpl 538 DO_2D( 0, 0, 1, 0 )538 DO_2D( 1, 0, 0, 0 ) 539 539 pua_ho (ji,jj,jl) = zfu_ho (ji,jj,jl) 540 540 pua_ups(ji,jj,jl) = zfu_ups(ji,jj,jl) 541 541 END_2D 542 DO_2D( 1, 0, 0, 0 )542 DO_2D( 0, 0, 1, 0 ) 543 543 pva_ho (ji,jj,jl) = zfv_ho (ji,jj,jl) 544 544 pva_ups(ji,jj,jl) = zfv_ups(ji,jj,jl) … … 594 594 ! 595 595 DO jl = 1, jpl !-- flux in x-direction 596 DO_2D( 1, 1, 1, 0)596 DO_2D( 1, 0, 1, 1 ) 597 597 pfu_ups(ji,jj,jl) = MAX( pu(ji,jj), 0._wp ) * pt(ji,jj,jl) + MIN( pu(ji,jj), 0._wp ) * pt(ji+1,jj,jl) 598 598 END_2D … … 600 600 ! 601 601 DO jl = 1, jpl !-- first guess of tracer from u-flux 602 DO_2D( 1, 1, 0, 0)602 DO_2D( 0, 0, 1, 1 ) 603 603 ztra = - ( pfu_ups(ji,jj,jl) - pfu_ups(ji-1,jj,jl) ) & 604 604 & + ( pu (ji,jj ) - pu (ji-1,jj ) ) * pt(ji,jj,jl) * (1.-pamsk) … … 609 609 ! 610 610 DO jl = 1, jpl !-- flux in y-direction 611 DO_2D( 1, 0, 0, 0 )611 DO_2D( 0, 0, 1, 0 ) 612 612 pfv_ups(ji,jj,jl) = MAX( pv(ji,jj), 0._wp ) * zpt(ji,jj,jl) + MIN( pv(ji,jj), 0._wp ) * zpt(ji,jj+1,jl) 613 613 END_2D … … 617 617 ! 618 618 DO jl = 1, jpl !-- flux in y-direction 619 DO_2D( 1, 0, 1, 1)619 DO_2D( 1, 1, 1, 0 ) 620 620 pfv_ups(ji,jj,jl) = MAX( pv(ji,jj), 0._wp ) * pt(ji,jj,jl) + MIN( pv(ji,jj), 0._wp ) * pt(ji,jj+1,jl) 621 621 END_2D … … 623 623 ! 624 624 DO jl = 1, jpl !-- first guess of tracer from v-flux 625 DO_2D( 0, 0, 1, 1)625 DO_2D( 1, 1, 0, 0 ) 626 626 ztra = - ( pfv_ups(ji,jj,jl) - pfv_ups(ji,jj-1,jl) ) & 627 627 & + ( pv (ji,jj ) - pv (ji,jj-1 ) ) * pt(ji,jj,jl) * (1.-pamsk) … … 632 632 ! 633 633 DO jl = 1, jpl !-- flux in x-direction 634 DO_2D( 0, 0, 1, 0 )634 DO_2D( 1, 0, 0, 0 ) 635 635 pfu_ups(ji,jj,jl) = MAX( pu(ji,jj), 0._wp ) * zpt(ji,jj,jl) + MIN( pu(ji,jj), 0._wp ) * zpt(ji+1,jj,jl) 636 636 END_2D … … 681 681 ! 682 682 DO jl = 1, jpl 683 DO_2D( 1, 0, 1, 1 ) 684 pfu_ho(ji,jj,jl) = 0.5_wp * pu(ji,jj) * ( pt(ji,jj,jl) + pt(ji+1,jj ,jl) ) 685 END_2D 683 686 DO_2D( 1, 1, 1, 0 ) 684 pfu_ho(ji,jj,jl) = 0.5_wp * pu(ji,jj) * ( pt(ji,jj,jl) + pt(ji+1,jj ,jl) )685 END_2D686 DO_2D( 1, 0, 1, 1 )687 687 pfv_ho(ji,jj,jl) = 0.5_wp * pv(ji,jj) * ( pt(ji,jj,jl) + pt(ji ,jj+1,jl) ) 688 688 END_2D … … 701 701 ! 702 702 DO jl = 1, jpl !-- flux in x-direction 703 DO_2D( 1, 1, 1, 0)703 DO_2D( 1, 0, 1, 1 ) 704 704 pfu_ho(ji,jj,jl) = 0.5_wp * pu(ji,jj) * ( pt(ji,jj,jl) + pt(ji+1,jj,jl) ) 705 705 END_2D … … 708 708 709 709 DO jl = 1, jpl !-- first guess of tracer from u-flux 710 DO_2D( 1, 1, 0, 0)710 DO_2D( 0, 0, 1, 1 ) 711 711 ztra = - ( pfu_ho(ji,jj,jl) - pfu_ho(ji-1,jj,jl) ) & 712 712 & + ( pu (ji,jj ) - pu (ji-1,jj ) ) * pt(ji,jj,jl) * (1.-pamsk) … … 717 717 718 718 DO jl = 1, jpl !-- flux in y-direction 719 DO_2D( 1, 0, 0, 0 )719 DO_2D( 0, 0, 1, 0 ) 720 720 pfv_ho(ji,jj,jl) = 0.5_wp * pv(ji,jj) * ( zpt(ji,jj,jl) + zpt(ji,jj+1,jl) ) 721 721 END_2D … … 726 726 ! 727 727 DO jl = 1, jpl !-- flux in y-direction 728 DO_2D( 1, 0, 1, 1)728 DO_2D( 1, 1, 1, 0 ) 729 729 pfv_ho(ji,jj,jl) = 0.5_wp * pv(ji,jj) * ( pt(ji,jj,jl) + pt(ji,jj+1,jl) ) 730 730 END_2D … … 733 733 ! 734 734 DO jl = 1, jpl !-- first guess of tracer from v-flux 735 DO_2D( 0, 0, 1, 1)735 DO_2D( 1, 1, 0, 0 ) 736 736 ztra = - ( pfv_ho(ji,jj,jl) - pfv_ho(ji,jj-1,jl) ) & 737 737 & + ( pv (ji,jj ) - pv (ji,jj-1 ) ) * pt(ji,jj,jl) * (1.-pamsk) … … 742 742 ! 743 743 DO jl = 1, jpl !-- flux in x-direction 744 DO_2D( 0, 0, 1, 0 )744 DO_2D( 1, 0, 0, 0 ) 745 745 pfu_ho(ji,jj,jl) = 0.5_wp * pu(ji,jj) * ( zpt(ji,jj,jl) + zpt(ji+1,jj,jl) ) 746 746 END_2D … … 899 899 ! 900 900 DO jl = 1, jpl 901 DO_2D( 0, 0, 1, 0 )901 DO_2D( 1, 0, 0, 0 ) 902 902 pt_u(ji,jj,jl) = 0.5_wp * umask(ji,jj,1) * ( pt(ji+1,jj,jl) + pt(ji,jj,jl) & 903 903 & - SIGN( 1._wp, pu(ji,jj) ) * ( pt(ji+1,jj,jl) - pt(ji,jj,jl) ) ) … … 908 908 ! 909 909 DO jl = 1, jpl 910 DO_2D( 0, 0, 1, 0 )910 DO_2D( 1, 0, 0, 0 ) 911 911 zcu = pu(ji,jj) * r1_e2u(ji,jj) * pdt * r1_e1u(ji,jj) 912 912 pt_u(ji,jj,jl) = 0.5_wp * umask(ji,jj,1) * ( pt(ji+1,jj,jl) + pt(ji,jj,jl) & … … 918 918 ! 919 919 DO jl = 1, jpl 920 DO_2D( 0, 0, 1, 0 )920 DO_2D( 1, 0, 0, 0 ) 921 921 zcu = pu(ji,jj) * r1_e2u(ji,jj) * pdt * r1_e1u(ji,jj) 922 922 zdx2 = e1u(ji,jj) * e1u(ji,jj) … … 932 932 ! 933 933 DO jl = 1, jpl 934 DO_2D( 0, 0, 1, 0 )934 DO_2D( 1, 0, 0, 0 ) 935 935 zcu = pu(ji,jj) * r1_e2u(ji,jj) * pdt * r1_e1u(ji,jj) 936 936 zdx2 = e1u(ji,jj) * e1u(ji,jj) … … 946 946 ! 947 947 DO jl = 1, jpl 948 DO_2D( 0, 0, 1, 0 )948 DO_2D( 1, 0, 0, 0 ) 949 949 zcu = pu(ji,jj) * r1_e2u(ji,jj) * pdt * r1_e1u(ji,jj) 950 950 zdx2 = e1u(ji,jj) * e1u(ji,jj) … … 967 967 IF( ll_neg ) THEN 968 968 DO jl = 1, jpl 969 DO_2D( 0, 0, 1, 0 )969 DO_2D( 1, 0, 0, 0 ) 970 970 IF( pt_u(ji,jj,jl) < 0._wp .OR. ( imsk_small(ji,jj,jl) == 0 .AND. pamsk == 0. ) ) THEN 971 971 pt_u(ji,jj,jl) = 0.5_wp * umask(ji,jj,1) * ( pt(ji+1,jj,jl) + pt(ji,jj,jl) & … … 977 977 ! !-- High order flux in i-direction --! 978 978 DO jl = 1, jpl 979 DO_2D( 0, 0, 1, 0 )979 DO_2D( 1, 0, 0, 0 ) 980 980 pfu_ho(ji,jj,jl) = pu(ji,jj) * pt_u(ji,jj,jl) 981 981 END_2D … … 1010 1010 ! !-- Laplacian in j-direction --! 1011 1011 DO jl = 1, jpl 1012 DO_2D( 1, 0, 0, 0 ) ! First derivative (gradient)1012 DO_2D( 0, 0, 1, 0 ) ! First derivative (gradient) 1013 1013 ztv1(ji,jj,jl) = ( pt(ji,jj+1,jl) - pt(ji,jj,jl) ) * r1_e2v(ji,jj) * vmask(ji,jj,1) 1014 1014 END_2D … … 1021 1021 ! !-- BiLaplacian in j-direction --! 1022 1022 DO jl = 1, jpl 1023 DO_2D( 1, 0, 0, 0 ) ! First derivative1023 DO_2D( 0, 0, 1, 0 ) ! First derivative 1024 1024 ztv3(ji,jj,jl) = ( ztv2(ji,jj+1,jl) - ztv2(ji,jj,jl) ) * r1_e2v(ji,jj) * vmask(ji,jj,1) 1025 1025 END_2D … … 1035 1035 CASE( 1 ) !== 1st order central TIM ==! (Eq. 21) 1036 1036 DO jl = 1, jpl 1037 DO_2D( 1, 0, 0, 0 )1037 DO_2D( 0, 0, 1, 0 ) 1038 1038 pt_v(ji,jj,jl) = 0.5_wp * vmask(ji,jj,1) * ( pt(ji,jj+1,jl) + pt(ji,jj,jl) & 1039 1039 & - SIGN( 1._wp, pv(ji,jj) ) * ( pt(ji,jj+1,jl) - pt(ji,jj,jl) ) ) … … 1043 1043 CASE( 2 ) !== 2nd order central TIM ==! (Eq. 23) 1044 1044 DO jl = 1, jpl 1045 DO_2D( 1, 0, 0, 0 )1045 DO_2D( 0, 0, 1, 0 ) 1046 1046 zcv = pv(ji,jj) * r1_e1v(ji,jj) * pdt * r1_e2v(ji,jj) 1047 1047 pt_v(ji,jj,jl) = 0.5_wp * vmask(ji,jj,1) * ( pt(ji,jj+1,jl) + pt(ji,jj,jl) & … … 1052 1052 CASE( 3 ) !== 3rd order central TIM ==! (Eq. 24) 1053 1053 DO jl = 1, jpl 1054 DO_2D( 1, 0, 0, 0 )1054 DO_2D( 0, 0, 1, 0 ) 1055 1055 zcv = pv(ji,jj) * r1_e1v(ji,jj) * pdt * r1_e2v(ji,jj) 1056 1056 zdy2 = e2v(ji,jj) * e2v(ji,jj) … … 1065 1065 CASE( 4 ) !== 4th order central TIM ==! (Eq. 27) 1066 1066 DO jl = 1, jpl 1067 DO_2D( 1, 0, 0, 0 )1067 DO_2D( 0, 0, 1, 0 ) 1068 1068 zcv = pv(ji,jj) * r1_e1v(ji,jj) * pdt * r1_e2v(ji,jj) 1069 1069 zdy2 = e2v(ji,jj) * e2v(ji,jj) … … 1078 1078 CASE( 5 ) !== 5th order central TIM ==! (Eq. 29) 1079 1079 DO jl = 1, jpl 1080 DO_2D( 1, 0, 0, 0 )1080 DO_2D( 0, 0, 1, 0 ) 1081 1081 zcv = pv(ji,jj) * r1_e1v(ji,jj) * pdt * r1_e2v(ji,jj) 1082 1082 zdy2 = e2v(ji,jj) * e2v(ji,jj) … … 1099 1099 IF( ll_neg ) THEN 1100 1100 DO jl = 1, jpl 1101 DO_2D( 1, 0, 0, 0 )1101 DO_2D( 0, 0, 1, 0 ) 1102 1102 IF( pt_v(ji,jj,jl) < 0._wp .OR. ( jmsk_small(ji,jj,jl) == 0 .AND. pamsk == 0. ) ) THEN 1103 1103 pt_v(ji,jj,jl) = 0.5_wp * vmask(ji,jj,1) * ( ( pt(ji,jj+1,jl) + pt(ji,jj,jl) ) & … … 1109 1109 ! !-- High order flux in j-direction --! 1110 1110 DO jl = 1, jpl 1111 DO_2D( 1, 0, 0, 0 )1111 DO_2D( 0, 0, 1, 0 ) 1112 1112 pfv_ho(ji,jj,jl) = pv(ji,jj) * pt_v(ji,jj,jl) 1113 1113 END_2D … … 1145 1145 ! -------------------------------------------------- 1146 1146 DO jl = 1, jpl 1147 DO_2D( 1, 0, 0, 0 ) 1148 pfu_ho(ji,jj,jl) = pfu_ho(ji,jj,jl) - pfu_ups(ji,jj,jl) 1149 END_2D 1147 1150 DO_2D( 0, 0, 1, 0 ) 1148 pfu_ho(ji,jj,jl) = pfu_ho(ji,jj,jl) - pfu_ups(ji,jj,jl)1149 END_2D1150 DO_2D( 1, 0, 0, 0 )1151 1151 pfv_ho(ji,jj,jl) = pfv_ho(ji,jj,jl) - pfv_ups(ji,jj,jl) 1152 1152 END_2D … … 1254 1254 ! --------------------------------- 1255 1255 DO jl = 1, jpl 1256 DO_2D( 0, 0, 1, 0 )1256 DO_2D( 1, 0, 0, 0 ) 1257 1257 zau = MIN( 1._wp , zbetdo(ji,jj,jl) , zbetup(ji+1,jj,jl) ) 1258 1258 zbu = MIN( 1._wp , zbetup(ji,jj,jl) , zbetdo(ji+1,jj,jl) ) … … 1265 1265 END_2D 1266 1266 1267 DO_2D( 1, 0, 0, 0 )1267 DO_2D( 0, 0, 1, 0 ) 1268 1268 zav = MIN( 1._wp , zbetdo(ji,jj,jl) , zbetup(ji,jj+1,jl) ) 1269 1269 zbv = MIN( 1._wp , zbetup(ji,jj,jl) , zbetdo(ji,jj+1,jl) ) -
NEMO/trunk/src/OCE/DIA/diaptr.F90
r14090 r14215 382 382 zts(:,:,:,:) = 0._wp 383 383 384 DO_3D( 1, 0, 1, 1, 1, jpkm1 )384 DO_3D( 1, 1, 1, 0, 1, jpkm1 ) 385 385 zvfc = e1v(ji,jj) * e3v(ji,jj,jk,Kmm) 386 386 zmask(ji,jj,jk) = vmask(ji,jj,jk) * zvfc … … 437 437 zts(:,:,:,:) = 0._wp 438 438 439 DO_3D( 1, 0, 1, 1, 1, jpkm1 )439 DO_3D( 1, 1, 1, 0, 1, jpkm1 ) 440 440 zvfc = e1v(ji,jj) * e3v(ji,jj,jk,Kmm) 441 441 zts(ji,jj,jk,jp_tem) = (ts(ji,jj,jk,jp_tem,Kmm)+ts(ji,jj+1,jk,jp_tem,Kmm)) * 0.5 * zvfc !Tracers averaged onto V grid -
NEMO/trunk/src/OCE/DOM/dommsk.F90
r14053 r14215 182 182 ssfmask(:,:) = MAXVAL( fmask(:,:,:), DIM=3 ) 183 183 IF( lk_SWE ) THEN ! Shallow Water Eq. case : redefine ssfmask 184 DO_2D( 0,0 , 0,0)184 DO_2D( 0,0, 0,0 ) 185 185 ssfmask(ji,jj) = MAX( ssmask(ji,jj+1), ssmask(ji+1,jj+1), & 186 186 & ssmask(ji,jj ), ssmask(ji+1,jj ) ) -
NEMO/trunk/src/OCE/DYN/dynldf_iso.F90
r13497 r14215 168 168 169 169 IF( ln_zps ) THEN ! z-coordinate - partial steps : min(e3u) 170 DO_2D( 0, 0, 0, 1)170 DO_2D( 0, 1, 0, 0 ) 171 171 zabe1 = ( ahmt(ji,jj,jk)+rn_ahm_b ) * e2t(ji,jj) & 172 172 & * MIN( e3u(ji ,jj,jk,Kmm), & … … 183 183 END_2D 184 184 ELSE ! other coordinate system (zco or sco) : e3t 185 DO_2D( 0, 0, 0, 1)185 DO_2D( 0, 1, 0, 0 ) 186 186 zabe1 = ( ahmt(ji,jj,jk)+rn_ahm_b ) & 187 187 & * e2t(ji,jj) * e3t(ji,jj,jk,Kmm) * r1_e1t(ji,jj) … … 219 219 ! i-flux at f-point | t | 220 220 221 DO_2D( 0, 0, 1, 0 )221 DO_2D( 1, 0, 0, 0 ) 222 222 zabe1 = ( ahmf(ji,jj,jk) + rn_ahm_b ) & 223 223 & * e2f(ji,jj) * e3f(ji,jj,jk) * r1_e1f(ji,jj) … … 235 235 ! j-flux at t-point 236 236 IF( ln_zps ) THEN ! z-coordinate - partial steps : min(e3u) 237 DO_2D( 0, 1, 1, 0)237 DO_2D( 1, 0, 0, 1 ) 238 238 zabe2 = ( ahmt(ji,jj,jk)+rn_ahm_b ) * e1t(ji,jj) & 239 239 & * MIN( e3v(ji,jj ,jk,Kmm), & … … 250 250 END_2D 251 251 ELSE ! other coordinate system (zco or sco) : e3t 252 DO_2D( 0, 1, 1, 0)252 DO_2D( 1, 0, 0, 1 ) 253 253 zabe2 = ( ahmt(ji,jj,jk)+rn_ahm_b ) & 254 254 & * e1t(ji,jj) * e3t(ji,jj,jk,Kmm) * r1_e2t(ji,jj) -
NEMO/trunk/src/OCE/DYN/dynspg_ts.F90
r14207 r14215 461 461 #if defined key_qcoTest_FluxForm 462 462 ! ! 'key_qcoTest_FluxForm' : simple ssh average 463 DO_2D( 1, 1, 1, 0) ! not jpi-column463 DO_2D( 1, 0, 1, 1 ) ! not jpi-column 464 464 zhup2_e(ji,jj) = hu_0(ji,jj) + r1_2 * ( zsshp2_e(ji,jj) + zsshp2_e(ji+1,jj ) ) * ssumask(ji,jj) 465 465 END_2D 466 DO_2D( 1, 0, 1, 1)466 DO_2D( 1, 1, 1, 0 ) 467 467 zhvp2_e(ji,jj) = hv_0(ji,jj) + r1_2 * ( zsshp2_e(ji,jj) + zsshp2_e(ji ,jj+1) ) * ssvmask(ji,jj) 468 468 END_2D 469 469 #else 470 470 ! ! no 'key_qcoTest_FluxForm' : surface weighted ssh average 471 DO_2D( 1, 1, 1, 0) ! not jpi-column471 DO_2D( 1, 0, 1, 1 ) ! not jpi-column 472 472 zhup2_e(ji,jj) = hu_0(ji,jj) + r1_2 * r1_e1e2u(ji,jj) & 473 473 & * ( e1e2t(ji ,jj) * zsshp2_e(ji ,jj) & 474 474 & + e1e2t(ji+1,jj) * zsshp2_e(ji+1,jj) ) * ssumask(ji,jj) 475 475 END_2D 476 DO_2D( 1, 0, 1, 1) ! not jpj-row476 DO_2D( 1, 1, 1, 0 ) ! not jpj-row 477 477 zhvp2_e(ji,jj) = hv_0(ji,jj) + r1_2 * r1_e1e2v(ji,jj) & 478 478 & * ( e1e2t(ji,jj ) * zsshp2_e(ji,jj ) & … … 538 538 #if defined key_qcoTest_FluxForm 539 539 ! ! 'key_qcoTest_FluxForm' : simple ssh average 540 DO_2D( 1, 0, 1, 1 ) 541 zsshu_a(ji,jj) = r1_2 * ( ssha_e(ji,jj) + ssha_e(ji+1,jj ) ) * ssumask(ji,jj) 542 END_2D 540 543 DO_2D( 1, 1, 1, 0 ) 541 zsshu_a(ji,jj) = r1_2 * ( ssha_e(ji,jj) + ssha_e(ji+1,jj ) ) * ssumask(ji,jj)542 END_2D543 DO_2D( 1, 0, 1, 1 )544 544 zsshv_a(ji,jj) = r1_2 * ( ssha_e(ji,jj) + ssha_e(ji ,jj+1) ) * ssvmask(ji,jj) 545 545 END_2D … … 1253 1253 !!---------------------------------------------------------------------- 1254 1254 ! 1255 DO_2D( 1, 1, 1, 0) ! not jpi-column1255 DO_2D( 1, 0, 1, 1 ) ! not jpi-column 1256 1256 IF ( phU(ji,jj) > 0._wp ) THEN ; pUmsk(ji,jj) = pTmsk(ji ,jj) 1257 1257 ELSE ; pUmsk(ji,jj) = pTmsk(ji+1,jj) … … 1261 1261 END_2D 1262 1262 ! 1263 DO_2D( 1, 0, 1, 1) ! not jpj-row1263 DO_2D( 1, 1, 1, 0 ) ! not jpj-row 1264 1264 IF ( phV(ji,jj) > 0._wp ) THEN ; pVmsk(ji,jj) = pTmsk(ji,jj ) 1265 1265 ELSE ; pVmsk(ji,jj) = pTmsk(ji,jj+1) -
NEMO/trunk/src/OCE/ISF/isftbl.F90
r13295 r14215 78 78 ! compute tbl property at T point 79 79 pvarout(1,:) = 0._wp 80 DO_2D( 1, 1, 0, 1 )80 DO_2D( 0, 1, 1, 1 ) 81 81 pvarout(ji,jj) = 0.5_wp * (zvarout(ji,jj) + zvarout(ji-1,jj)) 82 82 END_2D … … 99 99 ! pvarout is an averaging of wet point 100 100 pvarout(:,1) = 0._wp 101 DO_2D( 0, 1, 1, 1 )101 DO_2D( 1, 1, 0, 1 ) 102 102 pvarout(ji,jj) = 0.5_wp * (zvarout(ji,jj) + zvarout(ji,jj-1)) 103 103 END_2D -
NEMO/trunk/src/OCE/SBC/geo2ocean.F90
r13295 r14215 160 160 ! (computation done on the north stereographic polar plane) 161 161 ! 162 DO_2D( 0, 0, 0, 1)162 DO_2D( 0, 1, 0, 0 ) 163 163 ! 164 164 zlam = plamt(ji,jj) ! north pole direction & modulous (at t-point) … … 249 249 ! =============== ! 250 250 251 DO_2D( 0, 0, 0, 1)251 DO_2D( 0, 1, 0, 0 ) 252 252 IF( MOD( ABS( plamv(ji,jj) - plamv(ji,jj-1) ), 360. ) < 1.e-8 ) THEN 253 253 gsint(ji,jj) = 0. -
NEMO/trunk/src/OCE/SBC/sbcice_cice.F90
r14053 r14215 312 312 ! x comp of wind stress (CI_1) 313 313 ! U point to F point 314 DO_2D( 1, 0, 1, 1)314 DO_2D( 1, 1, 1, 0 ) 315 315 ztmp(ji,jj) = 0.5 * ( fr_iu(ji,jj) * utau(ji,jj) & 316 316 + fr_iu(ji,jj+1) * utau(ji,jj+1) ) * fmask(ji,jj,1) … … 320 320 ! y comp of wind stress (CI_2) 321 321 ! V point to F point 322 DO_2D( 1, 1, 1, 0)322 DO_2D( 1, 0, 1, 1 ) 323 323 ztmp(ji,jj) = 0.5 * ( fr_iv(ji,jj) * vtau(ji,jj) & 324 324 + fr_iv(ji+1,jj) * vtau(ji+1,jj) ) * fmask(ji,jj,1) … … 437 437 ! x comp and y comp of surface ocean current 438 438 ! U point to F point 439 DO_2D( 1, 0, 1, 1)439 DO_2D( 1, 1, 1, 0 ) 440 440 ztmp(ji,jj)=0.5*(ssu_m(ji,jj)+ssu_m(ji,jj+1))*fmask(ji,jj,1) 441 441 END_2D … … 443 443 444 444 ! V point to F point 445 DO_2D( 1, 1, 1, 0)445 DO_2D( 1, 0, 1, 1 ) 446 446 ztmp(ji,jj)=0.5*(ssv_m(ji,jj)+ssv_m(ji+1,jj))*fmask(ji,jj,1) 447 447 END_2D … … 513 513 ! F point to V point 514 514 515 DO_2D( 1, 0, 0, 0 )515 DO_2D( 0, 0, 1, 0 ) 516 516 ss_iov(ji,jj) = 0.5 * ( ztmp1(ji-1,jj) + ztmp1(ji,jj) ) * vmask(ji,jj,1) 517 517 END_2D -
NEMO/trunk/src/OCE/TRA/traadv_qck.F90
r14189 r14215 145 145 ! 146 146 !!gm why not using a SHIFT instruction... 147 DO_3D( 0, 0, nn_hls-1, nn_hls-1, 1, jpkm1 ) !--- Computation of the ustream and downstream value of the tracer and the mask147 DO_3D( nn_hls-1, nn_hls-1, 0, 0, 1, jpkm1 ) !--- Computation of the ustream and downstream value of the tracer and the mask 148 148 zfc(ji,jj,jk) = pt(ji-1,jj,jk,jn,Kbb) ! Upstream in the x-direction for the tracer 149 149 zfd(ji,jj,jk) = pt(ji+1,jj,jk,jn,Kbb) ! Downstream in the x-direction for the tracer … … 154 154 ! Horizontal advective fluxes 155 155 ! --------------------------- 156 DO_3D( 0, 0, nn_hls-1, 0, 1, jpkm1 )156 DO_3D( nn_hls-1, 0, 0, 0, 1, jpkm1 ) 157 157 zdir = 0.5 + SIGN( 0.5_wp, pU(ji,jj,jk) ) ! if pU > 0 : zdir = 1 otherwise zdir = 0 158 158 zfu(ji,jj,jk) = zdir * zfc(ji,jj,jk ) + ( 1. - zdir ) * zfd(ji+1,jj,jk) ! FU in the x-direction for T 159 159 END_3D 160 160 ! 161 DO_3D( 0, 0, nn_hls-1, 0, 1, jpkm1 )161 DO_3D( nn_hls-1, 0, 0, 0, 1, jpkm1 ) 162 162 zdir = 0.5 + SIGN( 0.5_wp, pU(ji,jj,jk) ) ! if pU > 0 : zdir = 1 otherwise zdir = 0 163 163 zdx = ( zdir * e1t(ji,jj) + ( 1. - zdir ) * e1t(ji+1,jj) ) * e2u(ji,jj) * e3u(ji,jj,jk,Kmm) … … 173 173 ! 174 174 ! Mask at the T-points in the x-direction (mask=0 or mask=1) 175 DO_3D( 0, 0, nn_hls-1, nn_hls-1, 1, jpkm1 )175 DO_3D( nn_hls-1, nn_hls-1, 0, 0, 1, jpkm1 ) 176 176 zfu(ji,jj,jk) = tmask(ji-1,jj,jk) + tmask(ji,jj,jk) + tmask(ji+1,jj,jk) - 2. 177 177 END_3D … … 180 180 ! 181 181 ! Tracer flux on the x-direction 182 DO_3D( 0, 0, 1, 0, 1, jpkm1 )182 DO_3D( 1, 0, 0, 0, 1, jpkm1 ) 183 183 zdir = 0.5 + SIGN( 0.5_wp, pU(ji,jj,jk) ) ! if pU > 0 : zdir = 1 otherwise zdir = 0 184 184 !--- If the second ustream point is a land point … … 232 232 ! 233 233 !--- Computation of the ustream and downstream value of the tracer and the mask 234 DO_2D( nn_hls-1, nn_hls-1, 0, 0)234 DO_2D( 0, 0, nn_hls-1, nn_hls-1 ) 235 235 ! Upstream in the x-direction for the tracer 236 236 zfc(ji,jj,jk) = pt(ji,jj-1,jk,jn,Kbb) … … 245 245 ! --------------------------- 246 246 ! 247 DO_3D( nn_hls-1, 0, 0, 0, 1, jpkm1 )247 DO_3D( 0, 0, nn_hls-1, 0, 1, jpkm1 ) 248 248 zdir = 0.5 + SIGN( 0.5_wp, pV(ji,jj,jk) ) ! if pU > 0 : zdir = 1 otherwise zdir = 0 249 249 zfu(ji,jj,jk) = zdir * zfc(ji,jj,jk ) + ( 1. - zdir ) * zfd(ji,jj+1,jk) ! FU in the x-direction for T 250 250 END_3D 251 251 ! 252 DO_3D( nn_hls-1, 0, 0, 0, 1, jpkm1 )252 DO_3D( 0, 0, nn_hls-1, 0, 1, jpkm1 ) 253 253 zdir = 0.5 + SIGN( 0.5_wp, pV(ji,jj,jk) ) ! if pU > 0 : zdir = 1 otherwise zdir = 0 254 254 zdx = ( zdir * e2t(ji,jj) + ( 1. - zdir ) * e2t(ji,jj+1) ) * e1v(ji,jj) * e3v(ji,jj,jk,Kmm) … … 265 265 ! 266 266 ! Mask at the T-points in the x-direction (mask=0 or mask=1) 267 DO_3D( nn_hls-1, nn_hls-1, 0, 0, 1, jpkm1 )267 DO_3D( 0, 0, nn_hls-1, nn_hls-1, 1, jpkm1 ) 268 268 zfu(ji,jj,jk) = tmask(ji,jj-1,jk) + tmask(ji,jj,jk) + tmask(ji,jj+1,jk) - 2. 269 269 END_3D … … 271 271 ! 272 272 ! Tracer flux on the x-direction 273 DO_3D( 1, 0, 0, 0, 1, jpkm1 )273 DO_3D( 0, 0, 1, 0, 1, jpkm1 ) 274 274 zdir = 0.5 + SIGN( 0.5_wp, pV(ji,jj,jk) ) ! if pU > 0 : zdir = 1 otherwise zdir = 0 275 275 !--- If the second ustream point is a land point -
NEMO/trunk/src/OCE/TRA/trabbl.F90
r14189 r14215 248 248 DO jn = 1, kjpt ! tracer loop 249 249 ! ! =========== 250 DO_2D( is j, 0, isi, 0 ) ! CAUTION start from i=1 to update i=2 when cyclic east-west250 DO_2D( isi, 0, isj, 0 ) ! CAUTION start from i=1 to update i=2 when cyclic east-west 251 251 IF( utr_bbl(ji,jj) /= 0.e0 ) THEN ! non-zero i-direction bbl advection 252 252 ! down-slope i/k-indices (deep) & up-slope i/k indices (shelf) -
NEMO/trunk/src/OCE/TRA/traldf_lap_blp.F90
r14189 r14215 158 158 ENDIF 159 159 ! 160 DO_3D( is j, iej, isi, iei, 1, jpkm1 ) !== Second derivative (divergence) added to the general tracer trends ==!160 DO_3D( isi, iei, isj, iej, 1, jpkm1 ) !== Second derivative (divergence) added to the general tracer trends ==! 161 161 pt_rhs(ji,jj,jk,jn) = pt_rhs(ji,jj,jk,jn) + ( ztu(ji,jj,jk) - ztu(ji-1,jj,jk) & 162 162 & + ztv(ji,jj,jk) - ztv(ji,jj-1,jk) ) & -
NEMO/trunk/src/OCE/TRA/traldf_triad.F90
r14090 r14215 387 387 ! !== add the vertical 33 flux ==! 388 388 IF( ln_traldf_lap ) THEN ! laplacian case: eddy coef = ah_wslp2 - akz 389 DO_3D( 1, 0, 0, 0, 2, jpkm1 )389 DO_3D( 0, 0, 1, 0, 2, jpkm1 ) 390 390 ztfw(ji,jj,jk) = ztfw(ji,jj,jk) - e1e2t(ji,jj) / e3w(ji,jj,jk,Kmm) * tmask(ji,jj,jk) & 391 391 & * ( ah_wslp2(ji,jj,jk) - akz(ji,jj,jk) ) & … … 395 395 SELECT CASE( kpass ) 396 396 CASE( 1 ) ! 1st pass : eddy coef = ah_wslp2 397 DO_3D( 1, 0, 0, 0, 2, jpkm1 )397 DO_3D( 0, 0, 1, 0, 2, jpkm1 ) 398 398 ztfw(ji,jj,jk) = ztfw(ji,jj,jk) - e1e2t(ji,jj) / e3w(ji,jj,jk,Kmm) * tmask(ji,jj,jk) & 399 399 & * ah_wslp2(ji,jj,jk) * ( pt(ji,jj,jk-1,jn) - pt(ji,jj,jk,jn) ) 400 400 END_3D 401 401 CASE( 2 ) ! 2nd pass : eddy flux = ah_wslp2 and akz applied on pt and pt2 gradients, resp. 402 DO_3D( 1, 0, 0, 0, 2, jpkm1 )402 DO_3D( 0, 0, 1, 0, 2, jpkm1 ) 403 403 ztfw(ji,jj,jk) = ztfw(ji,jj,jk) - e1e2t(ji,jj) / e3w(ji,jj,jk,Kmm) * tmask(ji,jj,jk) & 404 404 & * ( ah_wslp2(ji,jj,jk) * ( pt (ji,jj,jk-1,jn) - pt (ji,jj,jk,jn) ) & -
NEMO/trunk/src/OCE/TRA/tranpc.F90
r14189 r14215 112 112 IF( ntej == Nje0 ) THEN ; iej = nn_hls ; ELSE ; iej = 0 ; ENDIF 113 113 ! 114 DO_2D( is j, iej, isi, iei) ! interior column only114 DO_2D( isi, iei, isj, iej ) ! interior column only 115 115 ! 116 116 IF( tmask(ji,jj,2) == 1 ) THEN ! At least 2 ocean points -
NEMO/trunk/src/OCE/TRA/traqsr.F90
r14189 r14215 151 151 ELSE ! No restart or Euler forward at 1st time step 152 152 z1_2 = 1._wp 153 DO_3D( is j, iej, isi, iei, 1, jpk )153 DO_3D( isi, iei, isj, iej, 1, jpk ) 154 154 qsr_hc_b(ji,jj,jk) = 0._wp 155 155 END_3D … … 157 157 ELSE !== Swap of qsr heat content ==! 158 158 z1_2 = 0.5_wp 159 DO_3D( is j, iej, isi, iei, 1, jpk )159 DO_3D( isi, iei, isj, iej, 1, jpk ) 160 160 qsr_hc_b(ji,jj,jk) = qsr_hc(ji,jj,jk) 161 161 END_3D … … 168 168 CASE( np_BIO ) !== bio-model fluxes ==! 169 169 ! 170 DO_3D( is j, iej, isi, iei, 1, nksr )170 DO_3D( isi, iei, isj, iej, 1, nksr ) 171 171 qsr_hc(ji,jj,jk) = r1_rho0_rcp * ( etot3(ji,jj,jk) - etot3(ji,jj,jk+1) ) 172 172 END_3D … … 190 190 ! most expensive calculations) 191 191 ! 192 DO_2D( is j, iej, isi, iei)192 DO_2D( isi, iei, isj, iej ) 193 193 ! zlogc = log(zchl) 194 194 zlogc = LOG ( MIN( 10. , MAX( 0.03, sf_chl(1)%fnow(ji,jj,1) ) ) ) … … 209 209 210 210 ! 211 DO_3D( is j, iej, isi, iei, 1, nksr + 1 )211 DO_3D( isi, iei, isj, iej, 1, nksr + 1 ) 212 212 ! zchl = ALOG( ze0(ji,jj) ) 213 213 zlogc = ze0(ji,jj) … … 239 239 ! 240 240 zcoef = ( 1. - rn_abs ) / 3._wp !* surface equi-partition in R-G-B 241 DO_2D( is j, iej, isi, iei)241 DO_2D( isi, iei, isj, iej ) 242 242 ze0(ji,jj) = rn_abs * qsr(ji,jj) 243 243 ze1(ji,jj) = zcoef * qsr(ji,jj) … … 250 250 ! 251 251 ! !* interior equi-partition in R-G-B depending on vertical profile of Chl 252 DO_3D( is j, iej, isi, iei, 2, nksr + 1 )252 DO_3D( isi, iei, isj, iej, 2, nksr + 1 ) 253 253 ze3t = e3t(ji,jj,jk-1,Kmm) 254 254 irgb = NINT( ztmp3d(ji,jj,jk) ) … … 264 264 END_3D 265 265 ! 266 DO_3D( is j, iej, isi, iei, 1, nksr ) !* now qsr induced heat content266 DO_3D( isi, iei, isj, iej, 1, nksr ) !* now qsr induced heat content 267 267 qsr_hc(ji,jj,jk) = r1_rho0_rcp * ( ztmp3d(ji,jj,jk) - ztmp3d(ji,jj,jk+1) ) 268 268 END_3D … … 274 274 zz0 = rn_abs * r1_rho0_rcp ! surface equi-partition in 2-bands 275 275 zz1 = ( 1. - rn_abs ) * r1_rho0_rcp 276 DO_3D( is j, iej, isi, iei, 1, nksr ) !* now qsr induced heat content276 DO_3D( isi, iei, isj, iej, 1, nksr ) !* now qsr induced heat content 277 277 zc0 = zz0 * EXP( -gdepw(ji,jj,jk ,Kmm)*xsi0r ) + zz1 * EXP( -gdepw(ji,jj,jk ,Kmm)*xsi1r ) 278 278 zc1 = zz0 * EXP( -gdepw(ji,jj,jk+1,Kmm)*xsi0r ) + zz1 * EXP( -gdepw(ji,jj,jk+1,Kmm)*xsi1r ) … … 292 292 ! 293 293 ! sea-ice: store the 1st ocean level attenuation coefficient 294 DO_2D( is j, iej, isi, iei)294 DO_2D( isi, iei, isj, iej ) 295 295 IF( qsr(ji,jj) /= 0._wp ) THEN ; fraqsr_1lev(ji,jj) = qsr_hc(ji,jj,1) / ( r1_rho0_rcp * qsr(ji,jj) ) 296 296 ELSE ; fraqsr_1lev(ji,jj) = 1._wp -
NEMO/trunk/src/OCE/TRA/trasbc.F90
r14189 r14215 105 105 !!gm This should be moved into sbcmod.F90 module ? (especially now that ln_traqsr is read in namsbc namelist) 106 106 IF( .NOT.ln_traqsr ) THEN ! no solar radiation penetration 107 DO_2D( is j, iej, isi, iei)107 DO_2D( isi, iei, isj, iej ) 108 108 qns(ji,jj) = qns(ji,jj) + qsr(ji,jj) ! total heat flux in qns 109 109 qsr(ji,jj) = 0._wp ! qsr set to zero … … 126 126 ELSE ! No restart or restart not found: Euler forward time stepping 127 127 zfact = 1._wp 128 DO_2D( is j, iej, isi, iei)128 DO_2D( isi, iei, isj, iej ) 129 129 sbc_tsc(ji,jj,:) = 0._wp 130 130 sbc_tsc_b(ji,jj,:) = 0._wp … … 133 133 ELSE !* other time-steps: swap of forcing fields 134 134 zfact = 0.5_wp 135 DO_2D( is j, iej, isi, iei)135 DO_2D( isi, iei, isj, iej ) 136 136 sbc_tsc_b(ji,jj,:) = sbc_tsc(ji,jj,:) 137 137 END_2D 138 138 ENDIF 139 139 ! !== Now sbc tracer content fields ==! 140 DO_2D( is j, iej, isi, iei)140 DO_2D( isi, iei, isj, iej ) 141 141 sbc_tsc(ji,jj,jp_tem) = r1_rho0_rcp * qns(ji,jj) ! non solar heat flux 142 142 sbc_tsc(ji,jj,jp_sal) = r1_rho0 * sfx(ji,jj) ! salt flux due to freezing/melting 143 143 END_2D 144 144 IF( ln_linssh ) THEN !* linear free surface 145 DO_2D( is j, iej, isi, iei) !==>> add concentration/dilution effect due to constant volume cell145 DO_2D( isi, iei, isj, iej ) !==>> add concentration/dilution effect due to constant volume cell 146 146 sbc_tsc(ji,jj,jp_tem) = sbc_tsc(ji,jj,jp_tem) + r1_rho0 * emp(ji,jj) * pts(ji,jj,1,jp_tem,Kmm) 147 147 sbc_tsc(ji,jj,jp_sal) = sbc_tsc(ji,jj,jp_sal) + r1_rho0 * emp(ji,jj) * pts(ji,jj,1,jp_sal,Kmm) -
NEMO/trunk/src/OCE/ZDF/zdfosm.F90
r14072 r14215 2347 2347 ! calculate horizontal gradients at u & v points 2348 2348 2349 DO_2D( 0, 0, 1, 0 )2349 DO_2D( 1, 0, 0, 0 ) 2350 2350 zdtdx(ji,jj) = ( ztm(ji+1,jj) - ztm( ji,jj) ) * umask(ji,jj,1) / e1u(ji,jj) 2351 2351 zdsdx(ji,jj) = ( zsm(ji+1,jj) - zsm( ji,jj) ) * umask(ji,jj,1) / e1u(ji,jj) … … 2355 2355 END_2D 2356 2356 2357 DO_2D( 1, 0, 0, 0 )2357 DO_2D( 0, 0, 1, 0 ) 2358 2358 zdtdy(ji,jj) = ( ztm(ji,jj+1) - ztm( ji,jj) ) * vmask(ji,jj,1) / e1v(ji,jj) 2359 2359 zdsdy(ji,jj) = ( zsm(ji,jj+1) - zsm( ji,jj) ) * vmask(ji,jj,1) / e1v(ji,jj) … … 2366 2366 CALL eos_rab(ztsm_midv, zmld_midv, zabv, Kmm) 2367 2367 2368 DO_2D( 0, 0, 1, 0 )2368 DO_2D( 1, 0, 0, 0 ) 2369 2369 dbdx_mle(ji,jj) = grav*(zdtdx(ji,jj)*zabu(ji,jj,jp_tem) - zdsdx(ji,jj)*zabu(ji,jj,jp_sal)) 2370 2370 END_2D 2371 DO_2D( 1, 0, 0, 0 )2371 DO_2D( 0, 0, 1, 0 ) 2372 2372 dbdy_mle(ji,jj) = grav*(zdtdy(ji,jj)*zabv(ji,jj,jp_tem) - zdsdy(ji,jj)*zabv(ji,jj,jp_sal)) 2373 2373 END_2D -
NEMO/trunk/src/OCE/do_loop_substitute.h90
r14072 r14215 2 2 ! These comments are not intended to be retained during preprocessing; i.e. do not define "show_comments" 3 3 !!---------------------------------------------------------------------- 4 !! NEMO/OCE 4. 0 , NEMO Consortium (2018)4 !! NEMO/OCE 4.x , NEMO Consortium (2020) 5 5 !! Software governed by the CeCILL license (see ./LICENSE) 6 6 !!---------------------------------------------------------------------- … … 25 25 ! Upper limits of jpi, jpim1 or fs_jpim1 (for ji) or jpj, jpjm1 or fs_jpjm1 (for jj) 26 26 ! 27 ! The macro naming convention takes the form: DO_2D( B, T, L, R) where: 27 ! The macro naming convention takes the form: DO_2D( L, R, B, T) where: 28 ! L is the Left offset from the PE's inner domain; 29 ! R is the Right offset from the PE's inner domain 28 30 ! B is the Bottom offset from the PE's inner domain; 29 31 ! T is the Top offset from the PE's inner domain; 30 ! L is the Left offset from the PE's inner domain;31 ! R is the Right offset from the PE's inner domain32 32 ! 33 33 ! So, given an inner domain of 2,jpim1 and 2,jpjm1, a typical example would replace: … … 42 42 ! with: 43 43 ! 44 ! DO_2D( 0, 1, 1, 0)44 ! DO_2D( 1, 0, 0, 1 ) 45 45 ! . 46 46 ! . … … 59 59 #endif 60 60 61 #define DO_2D( B, T, L, R) DO jj = ntsj-(B), ntej+(T) ; DO ji = ntsi-(L), ntei+(R)61 #define DO_2D(L, R, B, T) DO jj = ntsj-(B), ntej+(T) ; DO ji = ntsi-(L), ntei+(R) 62 62 #define A1Di(H) ntsi-H:ntei+H 63 63 #define A1Dj(H) ntsj-H:ntej+H … … 70 70 #define KJPT : 71 71 72 #define DO_3D( B, T, L, R, ks, ke) DO jk = ks, ke ; DO_2D(B, T, L, R)72 #define DO_3D(L, R, B, T, ks, ke) DO jk = ks, ke ; DO_2D(L, R, B, T) 73 73 74 #define DO_3DS( B, T, L, R, ks, ke, ki) DO jk = ks, ke, ki ; DO_2D(B, T, L, R)74 #define DO_3DS(L, R, B, T, ks, ke, ki) DO jk = ks, ke, ki ; DO_2D(L, R, B, T) 75 75 76 76 #define END_2D END DO ; END DO -
NEMO/trunk/src/TOP/TRP/trcsbc.F90
r14086 r14215 122 122 ! 123 123 DO jn = 1, jptra 124 DO_2D( 0, 1, 0, 0)124 DO_2D( 0, 0, 0, 1 ) 125 125 sbc_trc(ji,jj,jn) = zsfx(ji,jj) * r1_rho0 * ptr(ji,jj,1,jn,Kmm) 126 126 END_2D … … 130 130 ! 131 131 DO jn = 1, jptra 132 DO_2D( 0, 1, 0, 0)132 DO_2D( 0, 0, 0, 1 ) 133 133 sbc_trc(ji,jj,jn) = ( zsfx(ji,jj) + fmmflx(ji,jj) ) * r1_rho0 * ptr(ji,jj,1,jn,Kmm) 134 134 END_2D … … 138 138 ! 139 139 DO jn = 1, jptra 140 DO_2D( 0, 1, 0, 0)140 DO_2D( 0, 0, 0, 1 ) 141 141 zse3t = 1. / e3t(ji,jj,1,Kmm) 142 142 ! tracer flux at the ice/ocean interface (tracer/m2/s) … … 162 162 IF( l_trdtrc ) ztrtrd(:,:,:) = ptr(:,:,:,jn,Krhs) ! save trends 163 163 ! 164 DO_2D( 0, 1, 0, 0)164 DO_2D( 0, 0, 0, 1 ) 165 165 zse3t = zfact / e3t(ji,jj,1,Kmm) 166 166 ptr(ji,jj,1,jn,Krhs) = ptr(ji,jj,1,jn,Krhs) + ( sbc_trc_b(ji,jj,jn) + sbc_trc(ji,jj,jn) ) * zse3t -
NEMO/trunk/src/TOP/trcbc.F90
r13295 r14215 415 415 ! Remove river dilution for tracers with absent river load 416 416 IF( ln_rnf_ctl .AND. .NOT.ln_trc_cbc(jn) ) THEN 417 DO_2D( 0, 1, 0, 0)417 DO_2D( 0, 0, 0, 1 ) 418 418 DO jk = 1, nk_rnf(ji,jj) 419 419 zrnf = (rnf(ji,jj) + rnf_b(ji,jj)) * 0.5_wp * r1_rho0 / h_rnf(ji,jj) … … 429 429 jl = n_trc_indsbc(jn) 430 430 sf_trcsbc(jl)%fnow(:,:,1) = MAX( rtrn, sf_trcsbc(jl)%fnow(:,:,1) ) ! avoid nedgative value due to interpolation 431 DO_2D( 0, 1, 0, 0)431 DO_2D( 0, 0, 0, 1 ) 432 432 zfact = 1. / ( e3t(ji,jj,1,Kmm) * rn_sbc_time ) 433 433 ptr(ji,jj,1,jn,Krhs) = ptr(ji,jj,1,jn,Krhs) + rf_trsfac(jl) * sf_trcsbc(jl)%fnow(ji,jj,1) * zfact … … 439 439 IF( l_offline ) rn_rfact = 1._wp 440 440 jl = n_trc_indcbc(jn) 441 DO_2D( 0, 1, 0, 0)441 DO_2D( 0, 0, 0, 1 ) 442 442 DO jk = 1, nk_rnf(ji,jj) 443 443 zfact = rn_rfact / ( e1e2t(ji,jj) * h_rnf(ji,jj) * rn_cbc_time ) * tmask(ji,jj,1)
Note: See TracChangeset
for help on using the changeset viewer.