Changeset 6603 for branches/2016/dev_r6393_NOC_WAD
- Timestamp:
- 2016-05-23T15:54:28+02:00 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_r6393_NOC_WAD/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90
r6152 r6603 157 157 REAL(wp), POINTER, DIMENSION(:,:) :: zcpx, zcpy ! Wetting/Dying gravity filter coef. 158 158 REAL(wp), POINTER, DIMENSION(:,:) :: wduflt1, wdvflt1 ! Wetting/Dying velocity filter coef. 159 REAL(wp), POINTER, DIMENSION(:,:) :: sshai ! Wetting/Dying velocity filter coef. 159 160 !!---------------------------------------------------------------------- 160 161 ! … … 168 169 CALL wrk_alloc( jpi,jpj, zsshu_a, zsshv_a ) 169 170 CALL wrk_alloc( jpi,jpj, zhf ) 170 IF( ln_wd ) CALL wrk_alloc( jpi, jpj, zcpx, zcpy, wduflt1, wdvflt1 )171 IF( ln_wd ) CALL wrk_alloc( jpi, jpj, zcpx, zcpy, wduflt1, wdvflt1,sshai ) 171 172 ! 172 173 zmdi=1.e+20 ! missing data indicator for masking … … 596 597 ! 597 598 ! Initialize sums: 599 IF(ln_wd) sshai(:,:) = ssha(:,:) 598 600 ua_b (:,:) = 0._wp ! After barotropic velocities (or transport if flux form) 599 601 va_b (:,:) = 0._wp … … 687 689 ENDIF 688 690 #endif 689 IF( ln_wd ) CALL wad_lmt_bt(zwx, zwy, sshn_e, zssh_frc, rdtbt)691 !IF( ln_wd ) CALL wad_lmt_bt(zwx, zwy, sshn_e, zssh_frc, rdtbt) 690 692 ! 691 693 ! Sum over sub-time-steps to compute advective velocities … … 701 703 END DO 702 704 END DO 703 ssha_e(:,:) = ( sshn_e(:,:) - rdtbt * ( zssh_frc(:,:) + zhdiv(:,:) ) ) * ssmask(:,:) 704 IF( ln_wd ) ssha_e(:,:) = MAX(ssha_e(:,:), rn_wdmin1 - bathy(:,:)) 705 706 IF(ln_wd) THEN 707 ssha_e(:,:) = ( sshn_e(:,:) - rdtbt * ( zssh_frc(:,:) + zhdiv(:,:) ) * wdmask(:,:) 708 & + (1._wd - wdmask(:,:)) * (sshai(:,:) - sshn_e(:,:))) * ssmask(:,:) 709 ELSE 710 ssha_e(:,:) = ( sshn_e(:,:) - rdtbt * ( zssh_frc(:,:) + zhdiv(:,:) ) ) * ssmask(:,:) 711 END IF 712 705 713 CALL lbc_lnk( ssha_e, 'T', 1._wp ) 706 714 … … 888 896 zu_spg = - grav * ( zsshp2_e(ji+1,jj) - zsshp2_e(ji,jj) ) * r1_e1u(ji,jj) 889 897 zv_spg = - grav * ( zsshp2_e(ji,jj+1) - zsshp2_e(ji,jj) ) * r1_e2v(ji,jj) 890 zwx(ji,jj) = zu_spg * zcpx(ji,jj) 891 zwy(ji,jj) = zv_spg * zcpy(ji,jj) 898 zwx(ji,jj) = zu_spg * zcpx(ji,jj) * wdmask(ji,jj) * wdmask(ji+1, jj) 899 zwy(ji,jj) = zv_spg * zcpy(ji,jj) * wdmask(ji,jj) * wdmask(ji, jj+1) 892 900 END DO 893 901 END DO … … 1000 1008 ! ! Sum sea level 1001 1009 ssha(:,:) = ssha(:,:) + za1 * ssha_e(:,:) 1010 IF(ln_wd) ssha(:,:) = sshai(:,:) 1002 1011 ! ! ==================== ! 1003 1012 END DO ! end loop ! … … 1024 1033 ! 1025 1034 ! Update barotropic trend: 1026 IF( ln_dynadv_vec .OR. ln_linssh ) THEN 1027 DO jk=1,jpkm1 1028 ua(:,:,jk) = ua(:,:,jk) + ( ua_b(:,:) - ub_b(:,:) ) * z1_2dt_b 1029 va(:,:,jk) = va(:,:,jk) + ( va_b(:,:) - vb_b(:,:) ) * z1_2dt_b 1030 END DO 1035 IF(ln_wd) THEN 1036 IF( ln_dynadv_vec .OR. ln_linssh ) THEN 1037 DO jk=1,jpkm1 1038 ua(:,:,jk) = ua(:,:,jk) + ( ua_b(:,:) - ub_b(:,:) ) * z1_2dt_b * wdmask(:,:) 1039 va(:,:,jk) = va(:,:,jk) + ( va_b(:,:) - vb_b(:,:) ) * z1_2dt_b * wdmask(:,:) 1040 END DO 1041 ELSE 1042 ! At this stage, ssha has been corrected: compute new depths at velocity points 1043 DO jj = 1, jpjm1 1044 DO ji = 1, jpim1 ! NO Vector Opt. 1045 zsshu_a(ji,jj) = z1_2 * umask(ji,jj,1) * r1_e1e2u(ji,jj) & 1046 & * ( e1e2t(ji ,jj) * ssha(ji ,jj) & 1047 & + e1e2t(ji+1,jj) * ssha(ji+1,jj) ) 1048 zsshv_a(ji,jj) = z1_2 * vmask(ji,jj,1) * r1_e1e2v(ji,jj) & 1049 & * ( e1e2t(ji,jj ) * ssha(ji,jj ) & 1050 & + e1e2t(ji,jj+1) * ssha(ji,jj+1) ) 1051 END DO 1052 END DO 1053 CALL lbc_lnk_multi( zsshu_a, 'U', 1._wp, zsshv_a, 'V', 1._wp ) ! Boundary conditions 1054 ! 1055 DO jk=1,jpkm1 1056 ua(:,:,jk) = ua(:,:,jk) + r1_hu_n(:,:) * ( ua_b(:,:) - ub_b(:,:) * hu_b(:,:) ) * z1_2dt_b * wdmask(:,:) 1057 va(:,:,jk) = va(:,:,jk) + r1_hv_n(:,:) * ( va_b(:,:) - vb_b(:,:) * hv_b(:,:) ) * z1_2dt_b * wdmask(:,:) 1058 END DO 1059 ! Save barotropic velocities not transport: 1060 ua_b(:,:) = ua_b(:,:) / ( hu_0(:,:) + zsshu_a(:,:) + 1._wp - ssumask(:,:) ) 1061 va_b(:,:) = va_b(:,:) / ( hv_0(:,:) + zsshv_a(:,:) + 1._wp - ssvmask(:,:) ) 1062 ENDIF 1031 1063 ELSE 1032 ! At this stage, ssha has been corrected: compute new depths at velocity points 1033 DO jj = 1, jpjm1 1034 DO ji = 1, jpim1 ! NO Vector Opt. 1035 zsshu_a(ji,jj) = z1_2 * umask(ji,jj,1) * r1_e1e2u(ji,jj) & 1036 & * ( e1e2t(ji ,jj) * ssha(ji ,jj) & 1037 & + e1e2t(ji+1,jj) * ssha(ji+1,jj) ) 1038 zsshv_a(ji,jj) = z1_2 * vmask(ji,jj,1) * r1_e1e2v(ji,jj) & 1039 & * ( e1e2t(ji,jj ) * ssha(ji,jj ) & 1040 & + e1e2t(ji,jj+1) * ssha(ji,jj+1) ) 1041 END DO 1042 END DO 1043 CALL lbc_lnk_multi( zsshu_a, 'U', 1._wp, zsshv_a, 'V', 1._wp ) ! Boundary conditions 1044 ! 1045 DO jk=1,jpkm1 1046 ua(:,:,jk) = ua(:,:,jk) + r1_hu_n(:,:) * ( ua_b(:,:) - ub_b(:,:) * hu_b(:,:) ) * z1_2dt_b 1047 va(:,:,jk) = va(:,:,jk) + r1_hv_n(:,:) * ( va_b(:,:) - vb_b(:,:) * hv_b(:,:) ) * z1_2dt_b 1048 END DO 1049 ! Save barotropic velocities not transport: 1050 ua_b(:,:) = ua_b(:,:) / ( hu_0(:,:) + zsshu_a(:,:) + 1._wp - ssumask(:,:) ) 1051 va_b(:,:) = va_b(:,:) / ( hv_0(:,:) + zsshv_a(:,:) + 1._wp - ssvmask(:,:) ) 1052 ENDIF 1064 IF( ln_dynadv_vec .OR. ln_linssh ) THEN 1065 DO jk=1,jpkm1 1066 ua(:,:,jk) = ua(:,:,jk) + ( ua_b(:,:) - ub_b(:,:) ) * z1_2dt_b 1067 va(:,:,jk) = va(:,:,jk) + ( va_b(:,:) - vb_b(:,:) ) * z1_2dt_b 1068 END DO 1069 ELSE 1070 ! At this stage, ssha has been corrected: compute new depths at velocity points 1071 DO jj = 1, jpjm1 1072 DO ji = 1, jpim1 ! NO Vector Opt. 1073 zsshu_a(ji,jj) = z1_2 * umask(ji,jj,1) * r1_e1e2u(ji,jj) & 1074 & * ( e1e2t(ji ,jj) * ssha(ji ,jj) & 1075 & + e1e2t(ji+1,jj) * ssha(ji+1,jj) ) 1076 zsshv_a(ji,jj) = z1_2 * vmask(ji,jj,1) * r1_e1e2v(ji,jj) & 1077 & * ( e1e2t(ji,jj ) * ssha(ji,jj ) & 1078 & + e1e2t(ji,jj+1) * ssha(ji,jj+1) ) 1079 END DO 1080 END DO 1081 CALL lbc_lnk_multi( zsshu_a, 'U', 1._wp, zsshv_a, 'V', 1._wp ) ! Boundary conditions 1082 ! 1083 DO jk=1,jpkm1 1084 ua(:,:,jk) = ua(:,:,jk) + r1_hu_n(:,:) * ( ua_b(:,:) - ub_b(:,:) * hu_b(:,:) ) * z1_2dt_b 1085 va(:,:,jk) = va(:,:,jk) + r1_hv_n(:,:) * ( va_b(:,:) - vb_b(:,:) * hv_b(:,:) ) * z1_2dt_b 1086 END DO 1087 ! Save barotropic velocities not transport: 1088 ua_b(:,:) = ua_b(:,:) / ( hu_0(:,:) + zsshu_a(:,:) + 1._wp - ssumask(:,:) ) 1089 va_b(:,:) = va_b(:,:) / ( hv_0(:,:) + zsshv_a(:,:) + 1._wp - ssvmask(:,:) ) 1090 ENDIF 1091 1092 END IF 1053 1093 ! 1054 1094 DO jk = 1, jpkm1
Note: See TracChangeset
for help on using the changeset viewer.