Changeset 11480 for NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/NST/agrif_oce_update.F90
- Timestamp:
- 2019-08-29T11:23:25+02:00 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/NST/agrif_oce_update.F90
r11428 r11480 234 234 ! uu(:,:,:,Krhs_a) = e3u(:,:,:,Kbb_a) 235 235 ! vv(:,:,:,Krhs_a) = e3v(:,:,:,Kbb_a) 236 hu _a(:,:) = hu_n(:,:)237 hv _a(:,:) = hv_n(:,:)236 hu(:,:,Krhs_a) = hu(:,:,Kmm_a) 237 hv(:,:,Krhs_a) = hv(:,:,Kmm_a) 238 238 239 239 ! 1) NOW fields … … 251 251 ! Update total depths: 252 252 ! -------------------- 253 hu _n(:,:) = 0._wp ! Ocean depth at U-points254 hv _n(:,:) = 0._wp ! Ocean depth at V-points253 hu(:,:,Kmm_a) = 0._wp ! Ocean depth at U-points 254 hv(:,:,Kmm_a) = 0._wp ! Ocean depth at V-points 255 255 DO jk = 1, jpkm1 256 hu _n(:,:) = hu_n(:,:) + e3u(:,:,jk,Kmm_a) * umask(:,:,jk)257 hv _n(:,:) = hv_n(:,:) + e3v(:,:,jk,Kmm_a) * vmask(:,:,jk)256 hu(:,:,Kmm_a) = hu(:,:,Kmm_a) + e3u(:,:,jk,Kmm_a) * umask(:,:,jk) 257 hv(:,:,Kmm_a) = hv(:,:,Kmm_a) + e3v(:,:,jk,Kmm_a) * vmask(:,:,jk) 258 258 END DO 259 259 ! ! Inverse of the local depth 260 r1_hu _n(:,:) = ssumask(:,:) / ( hu_n(:,:) + 1._wp - ssumask(:,:) )261 r1_hv _n(:,:) = ssvmask(:,:) / ( hv_n(:,:) + 1._wp - ssvmask(:,:) )260 r1_hu(:,:,Kmm_a) = ssumask(:,:) / ( hu(:,:,Kmm_a) + 1._wp - ssumask(:,:) ) 261 r1_hv(:,:,Kmm_a) = ssvmask(:,:) / ( hv(:,:,Kmm_a) + 1._wp - ssvmask(:,:) ) 262 262 263 263 … … 276 276 ! Update total depths: 277 277 ! -------------------- 278 hu _b(:,:) = 0._wp ! Ocean depth at U-points279 hv _b(:,:) = 0._wp ! Ocean depth at V-points278 hu(:,:,Kbb_a) = 0._wp ! Ocean depth at U-points 279 hv(:,:,Kbb_a) = 0._wp ! Ocean depth at V-points 280 280 DO jk = 1, jpkm1 281 hu _b(:,:) = hu_b(:,:) + e3u(:,:,jk,Kbb_a) * umask(:,:,jk)282 hv _b(:,:) = hv_b(:,:) + e3v(:,:,jk,Kbb_a) * vmask(:,:,jk)281 hu(:,:,Kbb_a) = hu(:,:,Kbb_a) + e3u(:,:,jk,Kbb_a) * umask(:,:,jk) 282 hv(:,:,Kbb_a) = hv(:,:,Kbb_a) + e3v(:,:,jk,Kbb_a) * vmask(:,:,jk) 283 283 END DO 284 284 ! ! Inverse of the local depth 285 r1_hu _b(:,:) = ssumask(:,:) / ( hu_b(:,:) + 1._wp - ssumask(:,:) )286 r1_hv _b(:,:) = ssvmask(:,:) / ( hv_b(:,:) + 1._wp - ssvmask(:,:) )285 r1_hu(:,:,Kbb_a) = ssumask(:,:) / ( hu(:,:,Kbb_a) + 1._wp - ssumask(:,:) ) 286 r1_hv(:,:,Kbb_a) = ssvmask(:,:) / ( hv(:,:,Kbb_a) + 1._wp - ssvmask(:,:) ) 287 287 ENDIF 288 288 ! … … 636 636 IF (western_side) THEN 637 637 DO jj=j1,j2 638 zcor = uu_b(i1-1,jj,Kmm_a) * hu _a(i1-1,jj) * r1_hu_n(i1-1,jj) - uu_b(i1-1,jj,Kmm_a)638 zcor = uu_b(i1-1,jj,Kmm_a) * hu(i1-1,jj,Krhs_a) * r1_hu(i1-1,jj,Kmm_a) - uu_b(i1-1,jj,Kmm_a) 639 639 uu_b(i1-1,jj,Kmm_a) = uu_b(i1-1,jj,Kmm_a) + zcor 640 640 DO jk=1,jpkm1 … … 646 646 IF (eastern_side) THEN 647 647 DO jj=j1,j2 648 zcor = uu_b(i2+1,jj,Kmm_a) * hu _a(i2+1,jj) * r1_hu_n(i2+1,jj) - uu_b(i2+1,jj,Kmm_a)648 zcor = uu_b(i2+1,jj,Kmm_a) * hu(i2+1,jj,Krhs_a) * r1_hu(i2+1,jj,Kmm_a) - uu_b(i2+1,jj,Kmm_a) 649 649 uu_b(i2+1,jj,Kmm_a) = uu_b(i2+1,jj,Kmm_a) + zcor 650 650 DO jk=1,jpkm1 … … 829 829 IF (southern_side) THEN 830 830 DO ji=i1,i2 831 zcor = vv_b(ji,j1-1,Kmm_a) * hv _a(ji,j1-1) * r1_hv_n(ji,j1-1) - vv_b(ji,j1-1,Kmm_a)831 zcor = vv_b(ji,j1-1,Kmm_a) * hv(ji,j1-1,Krhs_a) * r1_hv(ji,j1-1,Kmm_a) - vv_b(ji,j1-1,Kmm_a) 832 832 vv_b(ji,j1-1,Kmm_a) = vv_b(ji,j1-1,Kmm_a) + zcor 833 833 DO jk=1,jpkm1 … … 839 839 IF (northern_side) THEN 840 840 DO ji=i1,i2 841 zcor = vv_b(ji,j2+1,Kmm_a) * hv _a(ji,j2+1) * r1_hv_n(ji,j2+1) - vv_b(ji,j2+1,Kmm_a)841 zcor = vv_b(ji,j2+1,Kmm_a) * hv(ji,j2+1,Krhs_a) * r1_hv(ji,j2+1,Kmm_a) - vv_b(ji,j2+1,Kmm_a) 842 842 vv_b(ji,j2+1,Kmm_a) = vv_b(ji,j2+1,Kmm_a) + zcor 843 843 DO jk=1,jpkm1 … … 869 869 DO jj=j1,j2 870 870 DO ji=i1,i2 871 tabres(ji,jj) = zrhoy * uu_b(ji,jj,Kmm_a) * hu _n(ji,jj) * e2u(ji,jj)871 tabres(ji,jj) = zrhoy * uu_b(ji,jj,Kmm_a) * hu(ji,jj,Kmm_a) * e2u(ji,jj) 872 872 END DO 873 873 END DO … … 883 883 END DO 884 884 ! 885 zcorr = (tabres(ji,jj) - spgu(ji,jj)) * r1_hu _n(ji,jj)885 zcorr = (tabres(ji,jj) - spgu(ji,jj)) * r1_hu(ji,jj,Kmm_a) 886 886 DO jk=1,jpkm1 887 887 uu(ji,jj,jk,Kmm_a) = uu(ji,jj,jk,Kmm_a) + zcorr * umask(ji,jj,jk) … … 891 891 IF ( .NOT.ln_dynspg_ts .OR. (ln_dynspg_ts.AND.(.NOT.ln_bt_fw)) ) THEN 892 892 IF ( .NOT.( lk_agrif_fstep .AND. (neuler==0) ) ) THEN ! Add asselin part 893 zcorr = ( tabres(ji,jj) - uu_b(ji,jj,Kmm_a) * hu_a(ji,jj) ) * r1_hu_b(ji,jj)893 zcorr = (tabres(ji,jj) - uu_b(ji,jj,Kmm_a) * hu(ji,jj,Krhs_a)) * r1_hu(ji,jj,Kbb_a) 894 894 uu_b(ji,jj,Kbb_a) = uu_b(ji,jj,Kbb_a) + atfp * zcorr * umask(ji,jj,1) 895 895 END IF 896 896 ENDIF 897 uu_b(ji,jj,Kmm_a) = tabres(ji,jj) * r1_hu _n(ji,jj) * umask(ji,jj,1)897 uu_b(ji,jj,Kmm_a) = tabres(ji,jj) * r1_hu(ji,jj,Kmm_a) * umask(ji,jj,1) 898 898 ! 899 899 ! Correct "before" velocities to hold correct bt component: … … 903 903 END DO 904 904 ! 905 zcorr = uu_b(ji,jj,Kbb_a) - spgu(ji,jj) * r1_hu _b(ji,jj)905 zcorr = uu_b(ji,jj,Kbb_a) - spgu(ji,jj) * r1_hu(ji,jj,Kbb_a) 906 906 DO jk=1,jpkm1 907 907 uu(ji,jj,jk,Kbb_a) = uu(ji,jj,jk,Kbb_a) + zcorr * umask(ji,jj,jk) … … 935 935 DO jj=j1,j2 936 936 DO ji=i1,i2 937 tabres(ji,jj) = zrhox * vv_b(ji,jj,Kmm_a) * hv _n(ji,jj) * e1v(ji,jj)937 tabres(ji,jj) = zrhox * vv_b(ji,jj,Kmm_a) * hv(ji,jj,Kmm_a) * e1v(ji,jj) 938 938 END DO 939 939 END DO … … 949 949 END DO 950 950 ! 951 zcorr = (tabres(ji,jj) - spgv(ji,jj)) * r1_hv _n(ji,jj)951 zcorr = (tabres(ji,jj) - spgv(ji,jj)) * r1_hv(ji,jj,Kmm_a) 952 952 DO jk=1,jpkm1 953 953 vv(ji,jj,jk,Kmm_a) = vv(ji,jj,jk,Kmm_a) + zcorr * vmask(ji,jj,jk) … … 957 957 IF ( .NOT.ln_dynspg_ts .OR. ( ln_dynspg_ts .AND. ( .NOT.ln_bt_fw ) ) ) THEN 958 958 IF ( .NOT. ( lk_agrif_fstep .AND. ( neuler==0 ) ) ) THEN ! Add asselin part 959 zcorr = ( tabres(ji,jj) - vv_b(ji,jj,Kmm_a) * hv_a(ji,jj) ) * r1_hv_b(ji,jj)959 zcorr = (tabres(ji,jj) - vv_b(ji,jj,Kmm_a) * hv(ji,jj,Krhs_a)) * r1_hv(ji,jj,Kbb_a) 960 960 vv_b(ji,jj,Kbb_a) = vv_b(ji,jj,Kbb_a) + atfp * zcorr * vmask(ji,jj,1) 961 961 END IF 962 962 ENDIF 963 vv_b(ji,jj,Kmm_a) = tabres(ji,jj) * r1_hv _n(ji,jj) * vmask(ji,jj,1)963 vv_b(ji,jj,Kmm_a) = tabres(ji,jj) * r1_hv(ji,jj,Kmm_a) * vmask(ji,jj,1) 964 964 ! 965 965 ! Correct "before" velocities to hold correct bt component: … … 969 969 END DO 970 970 ! 971 zcorr = vv_b(ji,jj,Kbb_a) - spgv(ji,jj) * r1_hv _b(ji,jj)971 zcorr = vv_b(ji,jj,Kbb_a) - spgv(ji,jj) * r1_hv(ji,jj,Kbb_a) 972 972 DO jk=1,jpkm1 973 973 vv(ji,jj,jk,Kbb_a) = vv(ji,jj,jk,Kbb_a) + zcorr * vmask(ji,jj,jk) … … 1387 1387 ! 1388 1388 ! Update total depth: 1389 ht _n(i1:i2,j1:j2) = 0._wp1389 ht(i1:i2,j1:j2) = 0._wp 1390 1390 DO jk = 1, jpkm1 1391 ht _n(i1:i2,j1:j2) = ht_n(i1:i2,j1:j2) + e3t(i1:i2,j1:j2,jk,Kmm_a) * tmask(i1:i2,j1:j2,jk)1391 ht(i1:i2,j1:j2) = ht(i1:i2,j1:j2) + e3t(i1:i2,j1:j2,jk,Kmm_a) * tmask(i1:i2,j1:j2,jk) 1392 1392 END DO 1393 1393 ! … … 1396 1396 gdept(i1:i2,j1:j2,1,Kmm_a) = 0.5_wp * e3w(i1:i2,j1:j2,1,Kmm_a) 1397 1397 gdepw(i1:i2,j1:j2,1,Kmm_a) = 0.0_wp 1398 gde3w(i1:i2,j1:j2,1 ) = gdept(i1:i2,j1:j2,1,Kmm_a) - ( ht _n(i1:i2,j1:j2) - ht_0(i1:i2,j1:j2) ) ! Last term in the rhs is ssh1398 gde3w(i1:i2,j1:j2,1 ) = gdept(i1:i2,j1:j2,1,Kmm_a) - ( ht(i1:i2,j1:j2) - ht_0(i1:i2,j1:j2) ) ! Last term in the rhs is ssh 1399 1399 ! 1400 1400 DO jk = 2, jpk … … 1409 1409 gdept(ji,jj,jk,Kmm_a) = zcoef * ( gdepw(ji,jj,jk ,Kmm_a) + 0.5 * e3w(ji,jj,jk ,Kmm_a) ) & 1410 1410 & + ( 1._wp - zcoef ) * ( gdept(ji,jj,jk-1,Kmm_a) + e3w(ji,jj,jk ,Kmm_a) ) 1411 gde3w(ji,jj,jk ) = gdept(ji,jj,jk ,Kmm_a) - ( ht _n(ji,jj)-ht_0(ji,jj) ) ! Last term in the rhs is ssh1411 gde3w(ji,jj,jk ) = gdept(ji,jj,jk ,Kmm_a) - ( ht(ji,jj)-ht_0(ji,jj) ) ! Last term in the rhs is ssh 1412 1412 END DO 1413 1413 END DO
Note: See TracChangeset
for help on using the changeset viewer.