- Timestamp:
- 2020-11-27T17:26:33+01:00 (4 years ago)
- Location:
- NEMO/branches/2020/tickets_icb_1900
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/tickets_icb_1900
- Property svn:externals
-
NEMO/branches/2020/tickets_icb_1900/src/OCE/DYN/dynhpg.F90
r13237 r13899 257 257 258 258 ! Surface value 259 DO_2D _00_00259 DO_2D( 0, 0, 0, 0 ) 260 260 zcoef1 = zcoef0 * e3w(ji,jj,1,Kmm) 261 261 ! hydrostatic pressure gradient … … 269 269 ! 270 270 ! interior value (2=<jk=<jpkm1) 271 DO_3D _00_00(2, jpkm1 )271 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 272 272 zcoef1 = zcoef0 * e3w(ji,jj,jk,Kmm) 273 273 ! hydrostatic pressure gradient … … 319 319 320 320 ! Surface value (also valid in partial step case) 321 DO_2D _00_00321 DO_2D( 0, 0, 0, 0 ) 322 322 zcoef1 = zcoef0 * e3w(ji,jj,1,Kmm) 323 323 ! hydrostatic pressure gradient … … 330 330 331 331 ! interior value (2=<jk=<jpkm1) 332 DO_3D _00_00(2, jpkm1 )332 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 333 333 zcoef1 = zcoef0 * e3w(ji,jj,jk,Kmm) 334 334 ! hydrostatic pressure gradient … … 346 346 347 347 ! partial steps correction at the last level (use zgru & zgrv computed in zpshde.F90) 348 DO_2D _00_00348 DO_2D( 0, 0, 0, 0 ) 349 349 iku = mbku(ji,jj) 350 350 ikv = mbkv(ji,jj) … … 411 411 ! 412 412 IF( ln_wd_il ) THEN 413 DO_2D _00_00413 DO_2D( 0, 0, 0, 0 ) 414 414 ll_tmp1 = MIN( ssh(ji,jj,Kmm) , ssh(ji+1,jj,Kmm) ) > & 415 415 & MAX( -ht_0(ji,jj) , -ht_0(ji+1,jj) ) .AND. & … … 452 452 453 453 ! Surface value 454 DO_2D _00_00454 DO_2D( 0, 0, 0, 0 ) 455 455 ! hydrostatic pressure gradient along s-surfaces 456 456 zhpi(ji,jj,1) = & … … 481 481 482 482 ! interior value (2=<jk=<jpkm1) 483 DO_3D _00_00(2, jpkm1 )483 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 484 484 ! hydrostatic pressure gradient along s-surfaces 485 485 zhpi(ji,jj,jk) = zhpi(ji,jj,jk-1) + zcoef0 * r1_e1u(ji,jj) & … … 563 563 !===== Compute surface value ===================================================== 564 564 !================================================================================== 565 DO_2D _00_00565 DO_2D( 0, 0, 0, 0 ) 566 566 ikt = mikt(ji,jj) 567 567 iktp1i = mikt(ji+1,jj) … … 592 592 !================================================================================== 593 593 ! interior value (2=<jk=<jpkm1) 594 DO_3D _00_00(2, jpkm1 )594 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 595 595 ! hydrostatic pressure gradient along s-surfaces 596 596 zhpi(ji,jj,jk) = zhpi(ji,jj,jk-1) + zcoef0 / e1u(ji,jj) & … … 643 643 IF( ln_wd_il ) THEN 644 644 ALLOCATE( zcpx(jpi,jpj) , zcpy(jpi,jpj) ) 645 DO_2D _00_00645 DO_2D( 0, 0, 0, 0 ) 646 646 ll_tmp1 = MIN( ssh(ji,jj,Kmm) , ssh(ji+1,jj,Kmm) ) > & 647 647 & MAX( -ht_0(ji,jj) , -ht_0(ji+1,jj) ) .AND. & … … 699 699 !!bug gm Not a true bug, but... dzz=e3w for dzx, dzy verify what it is really 700 700 701 DO_3D _00_00(2, jpkm1 )701 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 702 702 drhoz(ji,jj,jk) = rhd (ji ,jj ,jk) - rhd (ji,jj,jk-1) 703 703 dzz (ji,jj,jk) = gde3w(ji ,jj ,jk) - gde3w(ji,jj,jk-1) … … 716 716 !!bug gm idem for drhox, drhoy et ji=jpi and jj=jpj 717 717 718 DO_3D _00_00(2, jpkm1 )718 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 719 719 cffw = 2._wp * drhoz(ji ,jj ,jk) * drhoz(ji,jj,jk-1) 720 720 … … 784 784 ! true if gde3w(:,:,:) is really defined as the sum of the e3w scale factors as, it seems to me, it should be 785 785 786 DO_2D _00_00786 DO_2D( 0, 0, 0, 0 ) 787 787 rho_k(ji,jj,1) = -grav * ( e3w(ji,jj,1,Kmm) - gde3w(ji,jj,1) ) & 788 788 & * ( rhd(ji,jj,1) & … … 795 795 !!bug gm : optimisation: 1/10 and 1/12 the division should be done before the loop 796 796 797 DO_3D _00_00(2, jpkm1 )797 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 798 798 799 799 rho_k(ji,jj,jk) = zcoef0 * ( rhd (ji,jj,jk) + rhd (ji,jj,jk-1) ) & … … 830 830 ! Surface value 831 831 ! --------------- 832 DO_2D _00_00832 DO_2D( 0, 0, 0, 0 ) 833 833 zhpi(ji,jj,1) = ( rho_k(ji+1,jj ,1) - rho_k(ji,jj,1) - rho_i(ji,jj,1) ) * r1_e1u(ji,jj) 834 834 zhpj(ji,jj,1) = ( rho_k(ji ,jj+1,1) - rho_k(ji,jj,1) - rho_j(ji,jj,1) ) * r1_e2v(ji,jj) … … 845 845 ! interior value (2=<jk=<jpkm1) 846 846 ! ---------------- 847 DO_3D _00_00(2, jpkm1 )847 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 848 848 ! hydrostatic pressure gradient along s-surfaces 849 849 zhpi(ji,jj,jk) = zhpi(ji,jj,jk-1) & … … 911 911 IF( ln_wd_il ) THEN 912 912 ALLOCATE( zcpx(jpi,jpj) , zcpy(jpi,jpj) ) 913 DO_2D _00_00913 DO_2D( 0, 0, 0, 0 ) 914 914 ll_tmp1 = MIN( ssh(ji,jj,Kmm) , ssh(ji+1,jj,Kmm) ) > & 915 915 & MAX( -ht_0(ji,jj) , -ht_0(ji+1,jj) ) .AND. & … … 960 960 961 961 ! Preparing vertical density profile "zrhh(:,:,:)" for hybrid-sco coordinate 962 DO_2D _11_11963 jk = mbkt(ji,jj) +1964 IF( jk <= 0) THEN ; zrhh(ji,jj, : ) = 0._wp965 ELSEIF( jk == 1) THEN ; zrhh(ji,jj,jk+1:jpk) = rhd(ji,jj,jk)962 DO_2D( 1, 1, 1, 1 ) 963 jk = mbkt(ji,jj) 964 IF( jk <= 1 ) THEN ; zrhh(ji,jj, : ) = 0._wp 965 ELSEIF( jk == 2 ) THEN ; zrhh(ji,jj,jk+1:jpk) = rhd(ji,jj,jk) 966 966 ELSEIF( jk < jpkm1 ) THEN 967 967 DO jkk = jk+1, jpk 968 968 zrhh(ji,jj,jkk) = interp1(gde3w(ji,jj,jkk ), gde3w(ji,jj,jkk-1), & 969 & gde3w(ji,jj,jkk-2), rhd (ji,jj,jkk-1), rhd(ji,jj,jkk-2))969 & gde3w(ji,jj,jkk-2), zrhh (ji,jj,jkk-1), zrhh(ji,jj,jkk-2)) 970 970 END DO 971 971 ENDIF … … 973 973 974 974 ! Transfer the depth of "T(:,:,:)" to vertical coordinate "zdept(:,:,:)" 975 DO_2D _11_11975 DO_2D( 1, 1, 1, 1 ) 976 976 zdept(ji,jj,1) = 0.5_wp * e3w(ji,jj,1,Kmm) - ssh(ji,jj,Kmm) * znad 977 977 END_2D 978 978 979 DO_3D _11_11(2, jpk )979 DO_3D( 1, 1, 1, 1, 2, jpk ) 980 980 zdept(ji,jj,jk) = zdept(ji,jj,jk-1) + e3w(ji,jj,jk,Kmm) 981 981 END_3D … … 990 990 991 991 ! Integrate the hydrostatic pressure "zhpi(:,:,:)" at "T(ji,jj,1)" 992 DO_2D _01_01992 DO_2D( 0, 1, 0, 1 ) 993 993 zrhdt1 = zrhh(ji,jj,1) - interp3( zdept(ji,jj,1), asp(ji,jj,1), bsp(ji,jj,1), & 994 994 & csp(ji,jj,1), dsp(ji,jj,1) ) * 0.25_wp * e3w(ji,jj,1,Kmm) … … 999 999 1000 1000 ! Calculate the pressure "zhpi(:,:,:)" at "T(ji,jj,2:jpkm1)" 1001 DO_3D _01_01(2, jpkm1 )1001 DO_3D( 0, 1, 0, 1, 2, jpkm1 ) 1002 1002 zhpi(ji,jj,jk) = zhpi(ji,jj,jk-1) + & 1003 1003 & integ_spline( zdept(ji,jj,jk-1), zdept(ji,jj,jk), & … … 1009 1009 1010 1010 ! Prepare zsshu_n and zsshv_n 1011 DO_2D _00_001011 DO_2D( 0, 0, 0, 0 ) 1012 1012 !!gm BUG ? if it is ssh at u- & v-point then it should be: 1013 1013 ! zsshu_n(ji,jj) = (e1e2t(ji,jj) * ssh(ji,jj,Kmm) + e1e2t(ji+1,jj) * ssh(ji+1,jj,Kmm)) * & … … 1024 1024 CALL lbc_lnk_multi ('dynhpg', zsshu_n, 'U', 1.0_wp, zsshv_n, 'V', 1.0_wp ) 1025 1025 1026 DO_2D _00_001026 DO_2D( 0, 0, 0, 0 ) 1027 1027 zu(ji,jj,1) = - ( e3u(ji,jj,1,Kmm) - zsshu_n(ji,jj) * znad) 1028 1028 zv(ji,jj,1) = - ( e3v(ji,jj,1,Kmm) - zsshv_n(ji,jj) * znad) 1029 1029 END_2D 1030 1030 1031 DO_3D _00_00(2, jpkm1 )1031 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 1032 1032 zu(ji,jj,jk) = zu(ji,jj,jk-1) - e3u(ji,jj,jk,Kmm) 1033 1033 zv(ji,jj,jk) = zv(ji,jj,jk-1) - e3v(ji,jj,jk,Kmm) 1034 1034 END_3D 1035 1035 1036 DO_3D _00_00(1, jpkm1 )1036 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 1037 1037 zu(ji,jj,jk) = zu(ji,jj,jk) + 0.5_wp * e3u(ji,jj,jk,Kmm) 1038 1038 zv(ji,jj,jk) = zv(ji,jj,jk) + 0.5_wp * e3v(ji,jj,jk,Kmm) 1039 1039 END_3D 1040 1040 1041 DO_3D _00_00(1, jpkm1 )1041 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 1042 1042 zu(ji,jj,jk) = MIN( zu(ji,jj,jk) , MAX( -zdept(ji,jj,jk) , -zdept(ji+1,jj,jk) ) ) 1043 1043 zu(ji,jj,jk) = MAX( zu(ji,jj,jk) , MIN( -zdept(ji,jj,jk) , -zdept(ji+1,jj,jk) ) ) … … 1047 1047 1048 1048 1049 DO_3D _00_00(1, jpkm1 )1049 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 1050 1050 zpwes = 0._wp; zpwed = 0._wp 1051 1051 zpnss = 0._wp; zpnsd = 0._wp
Note: See TracChangeset
for help on using the changeset viewer.