- Timestamp:
- 2020-09-29T12:41:06+02:00 (4 years ago)
- Location:
- NEMO/branches/2020/r12377_ticket2386
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/r12377_ticket2386
- Property svn:externals
-
old new 3 3 ^/utils/build/mk@HEAD mk 4 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev @HEADext/AGRIF5 ^/vendors/AGRIF/dev_r12970_AGRIF_CMEMS ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL 8 8 9 9 # SETTE 10 ^/utils/CI/sette@ HEADsette10 ^/utils/CI/sette@13507 sette
-
- Property svn:externals
-
NEMO/branches/2020/r12377_ticket2386/src/OCE/DYN/dynhpg.F90
r12377 r13540 76 76 !! * Substitutions 77 77 # include "do_loop_substitute.h90" 78 # include "domzgr_substitute.h90" 79 78 80 !!---------------------------------------------------------------------- 79 81 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 255 257 256 258 ! Surface value 257 DO_2D _00_00259 DO_2D( 0, 0, 0, 0 ) 258 260 zcoef1 = zcoef0 * e3w(ji,jj,1,Kmm) 259 261 ! hydrostatic pressure gradient … … 267 269 ! 268 270 ! interior value (2=<jk=<jpkm1) 269 DO_3D _00_00(2, jpkm1 )271 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 270 272 zcoef1 = zcoef0 * e3w(ji,jj,jk,Kmm) 271 273 ! hydrostatic pressure gradient … … 317 319 318 320 ! Surface value (also valid in partial step case) 319 DO_2D _00_00321 DO_2D( 0, 0, 0, 0 ) 320 322 zcoef1 = zcoef0 * e3w(ji,jj,1,Kmm) 321 323 ! hydrostatic pressure gradient … … 328 330 329 331 ! interior value (2=<jk=<jpkm1) 330 DO_3D _00_00(2, jpkm1 )332 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 331 333 zcoef1 = zcoef0 * e3w(ji,jj,jk,Kmm) 332 334 ! hydrostatic pressure gradient … … 344 346 345 347 ! partial steps correction at the last level (use zgru & zgrv computed in zpshde.F90) 346 DO_2D _00_00348 DO_2D( 0, 0, 0, 0 ) 347 349 iku = mbku(ji,jj) 348 350 ikv = mbkv(ji,jj) … … 409 411 ! 410 412 IF( ln_wd_il ) THEN 411 DO_2D _00_00413 DO_2D( 0, 0, 0, 0 ) 412 414 ll_tmp1 = MIN( ssh(ji,jj,Kmm) , ssh(ji+1,jj,Kmm) ) > & 413 415 & MAX( -ht_0(ji,jj) , -ht_0(ji+1,jj) ) .AND. & … … 446 448 END IF 447 449 END_2D 448 CALL lbc_lnk_multi( 'dynhpg', zcpx, 'U', 1. , zcpy, 'V', 1.)450 CALL lbc_lnk_multi( 'dynhpg', zcpx, 'U', 1.0_wp, zcpy, 'V', 1.0_wp ) 449 451 END IF 450 452 451 453 ! Surface value 452 DO_2D _00_00454 DO_2D( 0, 0, 0, 0 ) 453 455 ! hydrostatic pressure gradient along s-surfaces 454 zhpi(ji,jj,1) = zcoef0 * ( e3w(ji+1,jj ,1,Kmm) * ( znad + rhd(ji+1,jj ,1) ) & 455 & - e3w(ji ,jj ,1,Kmm) * ( znad + rhd(ji ,jj ,1) ) ) * r1_e1u(ji,jj) 456 zhpj(ji,jj,1) = zcoef0 * ( e3w(ji ,jj+1,1,Kmm) * ( znad + rhd(ji ,jj+1,1) ) & 457 & - e3w(ji ,jj ,1,Kmm) * ( znad + rhd(ji ,jj ,1) ) ) * r1_e2v(ji,jj) 456 zhpi(ji,jj,1) = & 457 & zcoef0 * ( e3w(ji+1,jj ,1,Kmm) * ( znad + rhd(ji+1,jj ,1) ) & 458 & - e3w(ji ,jj ,1,Kmm) * ( znad + rhd(ji ,jj ,1) ) ) & 459 & * r1_e1u(ji,jj) 460 zhpj(ji,jj,1) = & 461 & zcoef0 * ( e3w(ji ,jj+1,1,Kmm) * ( znad + rhd(ji ,jj+1,1) ) & 462 & - e3w(ji ,jj ,1,Kmm) * ( znad + rhd(ji ,jj ,1) ) ) & 463 & * r1_e2v(ji,jj) 458 464 ! s-coordinate pressure gradient correction 459 465 zuap = -zcoef0 * ( rhd (ji+1,jj,1) + rhd (ji,jj,1) + 2._wp * znad ) & … … 475 481 476 482 ! interior value (2=<jk=<jpkm1) 477 DO_3D _00_00(2, jpkm1 )483 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 478 484 ! hydrostatic pressure gradient along s-surfaces 479 485 zhpi(ji,jj,jk) = zhpi(ji,jj,jk-1) + zcoef0 * r1_e1u(ji,jj) & … … 557 563 !===== Compute surface value ===================================================== 558 564 !================================================================================== 559 DO_2D _00_00565 DO_2D( 0, 0, 0, 0 ) 560 566 ikt = mikt(ji,jj) 561 567 iktp1i = mikt(ji+1,jj) … … 586 592 !================================================================================== 587 593 ! interior value (2=<jk=<jpkm1) 588 DO_3D _00_00(2, jpkm1 )594 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 589 595 ! hydrostatic pressure gradient along s-surfaces 590 596 zhpi(ji,jj,jk) = zhpi(ji,jj,jk-1) + zcoef0 / e1u(ji,jj) & 591 & * ( e3w(ji+1,jj,jk,Kmm) * ( rhd(ji+1,jj,jk) + rhd(ji+1,jj,jk-1) + 2*znad ) * wmask(ji+1,jj,jk) & 592 & - e3w(ji ,jj,jk,Kmm) * ( rhd(ji ,jj,jk) + rhd(ji ,jj,jk-1) + 2*znad ) * wmask(ji ,jj,jk) ) 597 & * ( e3w(ji+1,jj,jk,Kmm) & 598 & * ( rhd(ji+1,jj,jk) + rhd(ji+1,jj,jk-1) + 2*znad ) * wmask(ji+1,jj,jk) & 599 & - e3w(ji ,jj,jk,Kmm) & 600 & * ( rhd(ji ,jj,jk) + rhd(ji ,jj,jk-1) + 2*znad ) * wmask(ji ,jj,jk) ) 593 601 zhpj(ji,jj,jk) = zhpj(ji,jj,jk-1) + zcoef0 / e2v(ji,jj) & 594 & * ( e3w(ji,jj+1,jk,Kmm) * ( rhd(ji,jj+1,jk) + rhd(ji,jj+1,jk-1) + 2*znad ) * wmask(ji,jj+1,jk) & 595 & - e3w(ji,jj ,jk,Kmm) * ( rhd(ji,jj, jk) + rhd(ji,jj ,jk-1) + 2*znad ) * wmask(ji,jj ,jk) ) 602 & * ( e3w(ji,jj+1,jk,Kmm) & 603 & * ( rhd(ji,jj+1,jk) + rhd(ji,jj+1,jk-1) + 2*znad ) * wmask(ji,jj+1,jk) & 604 & - e3w(ji,jj ,jk,Kmm) & 605 & * ( rhd(ji,jj, jk) + rhd(ji,jj ,jk-1) + 2*znad ) * wmask(ji,jj ,jk) ) 596 606 ! s-coordinate pressure gradient correction 597 607 zuap = -zcoef0 * ( rhd (ji+1,jj ,jk) + rhd (ji,jj,jk) + 2._wp * znad ) & … … 633 643 IF( ln_wd_il ) THEN 634 644 ALLOCATE( zcpx(jpi,jpj) , zcpy(jpi,jpj) ) 635 DO_2D _00_00645 DO_2D( 0, 0, 0, 0 ) 636 646 ll_tmp1 = MIN( ssh(ji,jj,Kmm) , ssh(ji+1,jj,Kmm) ) > & 637 647 & MAX( -ht_0(ji,jj) , -ht_0(ji+1,jj) ) .AND. & … … 669 679 END IF 670 680 END_2D 671 CALL lbc_lnk_multi( 'dynhpg', zcpx, 'U', 1. , zcpy, 'V', 1.)681 CALL lbc_lnk_multi( 'dynhpg', zcpx, 'U', 1.0_wp, zcpy, 'V', 1.0_wp ) 672 682 END IF 673 683 … … 689 699 !!bug gm Not a true bug, but... dzz=e3w for dzx, dzy verify what it is really 690 700 691 DO_3D _00_00(2, jpkm1 )701 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 692 702 drhoz(ji,jj,jk) = rhd (ji ,jj ,jk) - rhd (ji,jj,jk-1) 693 703 dzz (ji,jj,jk) = gde3w(ji ,jj ,jk) - gde3w(ji,jj,jk-1) … … 706 716 !!bug gm idem for drhox, drhoy et ji=jpi and jj=jpj 707 717 708 DO_3D _00_00(2, jpkm1 )718 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 709 719 cffw = 2._wp * drhoz(ji ,jj ,jk) * drhoz(ji,jj,jk-1) 710 720 … … 771 781 !------------------------------------------------------------- 772 782 773 !!bug gm : e3w-gde3w = 0.5*e3w .... and gde3w(2)-gde3w(1)=e3w(2) .... to be verified774 ! true if gde3w is really defined as the sum of the e3w scale factors as, it seems to me, it should be775 776 DO_2D _00_00783 !!bug gm : e3w-gde3w(:,:,:) = 0.5*e3w .... and gde3w(:,:,2)-gde3w(:,:,1)=e3w(:,:,2,Kmm) .... to be verified 784 ! true if gde3w(:,:,:) is really defined as the sum of the e3w scale factors as, it seems to me, it should be 785 786 DO_2D( 0, 0, 0, 0 ) 777 787 rho_k(ji,jj,1) = -grav * ( e3w(ji,jj,1,Kmm) - gde3w(ji,jj,1) ) & 778 788 & * ( rhd(ji,jj,1) & … … 785 795 !!bug gm : optimisation: 1/10 and 1/12 the division should be done before the loop 786 796 787 DO_3D _00_00(2, jpkm1 )797 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 788 798 789 799 rho_k(ji,jj,jk) = zcoef0 * ( rhd (ji,jj,jk) + rhd (ji,jj,jk-1) ) & … … 815 825 816 826 END_3D 817 CALL lbc_lnk_multi( 'dynhpg', rho_k, 'W', 1. , rho_i, 'U', 1., rho_j, 'V', 1.)827 CALL lbc_lnk_multi( 'dynhpg', rho_k, 'W', 1.0_wp, rho_i, 'U', 1.0_wp, rho_j, 'V', 1.0_wp ) 818 828 819 829 ! --------------- 820 830 ! Surface value 821 831 ! --------------- 822 DO_2D _00_00832 DO_2D( 0, 0, 0, 0 ) 823 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) 824 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) … … 835 845 ! interior value (2=<jk=<jpkm1) 836 846 ! ---------------- 837 DO_3D _00_00(2, jpkm1 )847 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 838 848 ! hydrostatic pressure gradient along s-surfaces 839 849 zhpi(ji,jj,jk) = zhpi(ji,jj,jk-1) & … … 901 911 IF( ln_wd_il ) THEN 902 912 ALLOCATE( zcpx(jpi,jpj) , zcpy(jpi,jpj) ) 903 DO_2D _00_00913 DO_2D( 0, 0, 0, 0 ) 904 914 ll_tmp1 = MIN( ssh(ji,jj,Kmm) , ssh(ji+1,jj,Kmm) ) > & 905 915 & MAX( -ht_0(ji,jj) , -ht_0(ji+1,jj) ) .AND. & … … 942 952 ENDIF 943 953 END_2D 944 CALL lbc_lnk_multi( 'dynhpg', zcpx, 'U', 1. , zcpy, 'V', 1.)954 CALL lbc_lnk_multi( 'dynhpg', zcpx, 'U', 1.0_wp, zcpy, 'V', 1.0_wp ) 945 955 ENDIF 946 956 … … 950 960 951 961 ! Preparing vertical density profile "zrhh(:,:,:)" for hybrid-sco coordinate 952 DO_2D _11_11953 jk = mbkt(ji,jj) +1954 IF( jk <= 0) THEN ; zrhh(ji,jj, : ) = 0._wp955 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) 956 966 ELSEIF( jk < jpkm1 ) THEN 957 967 DO jkk = jk+1, jpk 958 968 zrhh(ji,jj,jkk) = interp1(gde3w(ji,jj,jkk ), gde3w(ji,jj,jkk-1), & 959 & 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)) 960 970 END DO 961 971 ENDIF … … 963 973 964 974 ! Transfer the depth of "T(:,:,:)" to vertical coordinate "zdept(:,:,:)" 965 DO_2D _11_11975 DO_2D( 1, 1, 1, 1 ) 966 976 zdept(ji,jj,1) = 0.5_wp * e3w(ji,jj,1,Kmm) - ssh(ji,jj,Kmm) * znad 967 977 END_2D 968 978 969 DO_3D _11_11(2, jpk )979 DO_3D( 1, 1, 1, 1, 2, jpk ) 970 980 zdept(ji,jj,jk) = zdept(ji,jj,jk-1) + e3w(ji,jj,jk,Kmm) 971 981 END_3D … … 980 990 981 991 ! Integrate the hydrostatic pressure "zhpi(:,:,:)" at "T(ji,jj,1)" 982 DO_2D _01_01992 DO_2D( 0, 1, 0, 1 ) 983 993 zrhdt1 = zrhh(ji,jj,1) - interp3( zdept(ji,jj,1), asp(ji,jj,1), bsp(ji,jj,1), & 984 994 & csp(ji,jj,1), dsp(ji,jj,1) ) * 0.25_wp * e3w(ji,jj,1,Kmm) … … 989 999 990 1000 ! Calculate the pressure "zhpi(:,:,:)" at "T(ji,jj,2:jpkm1)" 991 DO_3D _01_01(2, jpkm1 )1001 DO_3D( 0, 1, 0, 1, 2, jpkm1 ) 992 1002 zhpi(ji,jj,jk) = zhpi(ji,jj,jk-1) + & 993 1003 & integ_spline( zdept(ji,jj,jk-1), zdept(ji,jj,jk), & … … 999 1009 1000 1010 ! Prepare zsshu_n and zsshv_n 1001 DO_2D _00_001011 DO_2D( 0, 0, 0, 0 ) 1002 1012 !!gm BUG ? if it is ssh at u- & v-point then it should be: 1003 1013 ! zsshu_n(ji,jj) = (e1e2t(ji,jj) * ssh(ji,jj,Kmm) + e1e2t(ji+1,jj) * ssh(ji+1,jj,Kmm)) * & … … 1012 1022 END_2D 1013 1023 1014 CALL lbc_lnk_multi ('dynhpg', zsshu_n, 'U', 1. , zsshv_n, 'V', 1.)1015 1016 DO_2D _00_001024 CALL lbc_lnk_multi ('dynhpg', zsshu_n, 'U', 1.0_wp, zsshv_n, 'V', 1.0_wp ) 1025 1026 DO_2D( 0, 0, 0, 0 ) 1017 1027 zu(ji,jj,1) = - ( e3u(ji,jj,1,Kmm) - zsshu_n(ji,jj) * znad) 1018 1028 zv(ji,jj,1) = - ( e3v(ji,jj,1,Kmm) - zsshv_n(ji,jj) * znad) 1019 1029 END_2D 1020 1030 1021 DO_3D _00_00(2, jpkm1 )1031 DO_3D( 0, 0, 0, 0, 2, jpkm1 ) 1022 1032 zu(ji,jj,jk) = zu(ji,jj,jk-1) - e3u(ji,jj,jk,Kmm) 1023 1033 zv(ji,jj,jk) = zv(ji,jj,jk-1) - e3v(ji,jj,jk,Kmm) 1024 1034 END_3D 1025 1035 1026 DO_3D _00_00(1, jpkm1 )1036 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 1027 1037 zu(ji,jj,jk) = zu(ji,jj,jk) + 0.5_wp * e3u(ji,jj,jk,Kmm) 1028 1038 zv(ji,jj,jk) = zv(ji,jj,jk) + 0.5_wp * e3v(ji,jj,jk,Kmm) 1029 1039 END_3D 1030 1040 1031 DO_3D _00_00(1, jpkm1 )1041 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 1032 1042 zu(ji,jj,jk) = MIN( zu(ji,jj,jk) , MAX( -zdept(ji,jj,jk) , -zdept(ji+1,jj,jk) ) ) 1033 1043 zu(ji,jj,jk) = MAX( zu(ji,jj,jk) , MIN( -zdept(ji,jj,jk) , -zdept(ji+1,jj,jk) ) ) … … 1037 1047 1038 1048 1039 DO_3D _00_00(1, jpkm1 )1049 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 1040 1050 zpwes = 0._wp; zpwed = 0._wp 1041 1051 zpnss = 0._wp; zpnsd = 0._wp … … 1359 1369 !!====================================================================== 1360 1370 END MODULE dynhpg 1361
Note: See TracChangeset
for help on using the changeset viewer.