@@ -1915,8 +1915,7 @@ subroutine horizontal_viscosity(u, v, h, uh, vh, diffu, diffv, MEKE, VarMix, G,
1915
1915
! Diagnose str_xx*d_x u - str_yy*d_y v + str_xy*(d_y u + d_x v)
1916
1916
! This is the old formulation that includes energy diffusion
1917
1917
if (visc_limit_h_flag(i,j,k) > 0 ) then
1918
- FrictWork(i,j,k) = 0 .
1919
- FrictWork_bh(i,j,k) = 0 .
1918
+ FrictWork(i,j,k) = 0
1920
1919
else
1921
1920
FrictWork(i,j,k) = GV% H_to_RZ * ( &
1922
1921
(str_xx(i,j)* (u(I,j,k)- u(I-1 ,j,k))* G% IdxT(i,j) &
@@ -1933,29 +1932,11 @@ subroutine horizontal_viscosity(u, v, h, uh, vh, diffu, diffv, MEKE, VarMix, G,
1933
1932
+ str_xy(I,J-1 )* ( &
1934
1933
(u(I,j,k)- u(I,j-1 ,k))* G% IdyBu(I,J-1 ) &
1935
1934
+ (v(i+1 ,J-1 ,k)- v(i,J-1 ,k))* G% IdxBu(I,J-1 ) )) ) )
1936
- ! Diagnose bhstr_xx*d_x u - bhstr_yy*d_y v + bhstr_xy*(d_y u + d_x v)
1937
- ! This is the old formulation that includes energy diffusion
1938
- FrictWork_bh(i,j,k) = GV% H_to_RZ * ( &
1939
- (bhstr_xx(i,j) * (u(I,j,k)- u(I-1 ,j,k))* G% IdxT(i,j) &
1940
- - bhstr_xx(i,j) * (v(i,J,k)- v(i,J-1 ,k))* G% IdyT(i,j)) &
1941
- + 0.25 * ((bhstr_xy(I,J) * &
1942
- ((u(I,j+1 ,k)- u(I,j,k))* G% IdyBu(I,J) &
1943
- + (v(i+1 ,J,k)- v(i,J,k))* G% IdxBu(I,J)) &
1944
- + bhstr_xy(I-1 ,J-1 ) * &
1945
- ((u(I-1 ,j,k)- u(I-1 ,j-1 ,k))* G% IdyBu(I-1 ,J-1 ) &
1946
- + (v(i,J-1 ,k)- v(i-1 ,J-1 ,k))* G% IdxBu(I-1 ,J-1 )) ) &
1947
- + (bhstr_xy(I-1 ,J) * &
1948
- ((u(I-1 ,j+1 ,k)- u(I-1 ,j,k))* G% IdyBu(I-1 ,J) &
1949
- + (v(i,J,k)- v(i-1 ,J,k))* G% IdxBu(I-1 ,J)) &
1950
- + bhstr_xy(I,J-1 ) * &
1951
- ((u(I,j,k)- u(I,j-1 ,k))* G% IdyBu(I,J-1 ) &
1952
- + (v(i+1 ,J-1 ,k)- v(i,J-1 ,k))* G% IdxBu(I,J-1 )) ) ) )
1953
1935
endif
1954
1936
enddo ; enddo
1955
1937
else ; do j= js,je ; do i= is,ie
1956
1938
if (visc_limit_h_flag(i,j,k) > 0 ) then
1957
1939
FrictWork(i,j,k) = 0
1958
- FrictWork_bh(i,j,k) = 0
1959
1940
else
1960
1941
FrictWork(i,j,k) = GV% H_to_RZ * G% IareaT(i,j) * ( &
1961
1942
((str_xx(i,j)* CS% dy2h(i,j) * ( &
@@ -1985,6 +1966,40 @@ subroutine horizontal_viscosity(u, v, h, uh, vh, diffu, diffv, MEKE, VarMix, G,
1985
1966
+ (CS% dy2q(I,J-1 )* ((vh(i+1 ,J-1 ,k)* G% IareaCv(i+1 ,J-1 )/ (h_v(i+1 ,J-1 )+ h_neglect)) &
1986
1967
- (vh(i,J-1 ,k)* G% IareaCv(i,J-1 )/ (h_v(i,J-1 )+ h_neglect)))) )) ) )) )
1987
1968
1969
+ endif
1970
+ enddo ; enddo ; endif
1971
+ endif
1972
+
1973
+ if (CS% id_FrictWork_bh> 0 .or. CS% id_FrictWorkIntz_bh > 0 .or. allocated (MEKE% mom_src_bh)) then
1974
+ if (CS% FrictWork_bug) then ; do j= js,je ; do i= is,ie
1975
+ ! Diagnose str_xx*d_x u - str_yy*d_y v + str_xy*(d_y u + d_x v)
1976
+ ! This is the old formulation that includes energy diffusion
1977
+ if (visc_limit_h_flag(i,j,k) > 0 ) then
1978
+ FrictWork_bh(i,j,k) = 0
1979
+ else
1980
+ ! Diagnose bhstr_xx*d_x u - bhstr_yy*d_y v + bhstr_xy*(d_y u + d_x v)
1981
+ ! This is the old formulation that includes energy diffusion !cyc
1982
+ FrictWork_bh(i,j,k) = GV% H_to_RZ * ( &
1983
+ (bhstr_xx(i,j) * (u(I,j,k)- u(I-1 ,j,k))* G% IdxT(i,j) &
1984
+ - bhstr_xx(i,j) * (v(i,J,k)- v(i,J-1 ,k))* G% IdyT(i,j)) &
1985
+ + 0.25 * ((bhstr_xy(I,J) * &
1986
+ ((u(I,j+1 ,k)- u(I,j,k))* G% IdyBu(I,J) &
1987
+ + (v(i+1 ,J,k)- v(i,J,k))* G% IdxBu(I,J)) &
1988
+ + bhstr_xy(I-1 ,J-1 ) * &
1989
+ ((u(I-1 ,j,k)- u(I-1 ,j-1 ,k))* G% IdyBu(I-1 ,J-1 ) &
1990
+ + (v(i,J-1 ,k)- v(i-1 ,J-1 ,k))* G% IdxBu(I-1 ,J-1 )) ) &
1991
+ + (bhstr_xy(I-1 ,J) * &
1992
+ ((u(I-1 ,j+1 ,k)- u(I-1 ,j,k))* G% IdyBu(I-1 ,J) &
1993
+ + (v(i,J,k)- v(i-1 ,J,k))* G% IdxBu(I-1 ,J)) &
1994
+ + bhstr_xy(I,J-1 ) * &
1995
+ ((u(I,j,k)- u(I,j-1 ,k))* G% IdyBu(I,J-1 ) &
1996
+ + (v(i+1 ,J-1 ,k)- v(i,J-1 ,k))* G% IdxBu(I,J-1 )) ) ) )
1997
+ endif
1998
+ enddo ; enddo
1999
+ else ; do j= js,je ; do i= is,ie
2000
+ if (visc_limit_h_flag(i,j,k) > 0 ) then
2001
+ FrictWork_bh(i,j,k) = 0
2002
+ else
1988
2003
! Diagnose bhstr_xx*d_x u - bhstr_yy*d_y v + bhstr_xy*(d_y u + d_x v)
1989
2004
FrictWork_bh(i,j,k) = GV% H_to_RZ * G% IareaT(i,j) * ( &
1990
2005
((bhstr_xx(i,j)* CS% dy2h(i,j) * ( &
@@ -2019,7 +2034,6 @@ subroutine horizontal_viscosity(u, v, h, uh, vh, diffu, diffv, MEKE, VarMix, G,
2019
2034
2020
2035
2021
2036
2022
-
2023
2037
if (CS% use_GME) then
2024
2038
if (CS% FrictWork_bug) then ; do j= js,je ; do i= is,ie
2025
2039
! Diagnose str_xx_GME*d_x u - str_yy_GME*d_y v + str_xy_GME*(d_y u + d_x v)
@@ -2112,36 +2126,10 @@ subroutine horizontal_viscosity(u, v, h, uh, vh, diffu, diffv, MEKE, VarMix, G,
2112
2126
endif
2113
2127
endif
2114
2128
2115
- MEKE% mom_src(i,j) = MEKE% mom_src(i,j) + GV% H_to_RZ * ( &
2116
- ((str_xx(i,j)- RoScl* bhstr_xx(i,j))* (u(I,j,k)- u(I-1 ,j,k))* G% IdxT(i,j) &
2117
- - (str_xx(i,j)- RoScl* bhstr_xx(i,j))* (v(i,J,k)- v(i,J-1 ,k))* G% IdyT(i,j)) &
2118
- + 0.25 * (((str_xy(I,J)- RoScl* bhstr_xy(I,J)) * &
2119
- ((u(I,j+1 ,k)- u(I,j,k))* G% IdyBu(I,J) &
2120
- + (v(i+1 ,J,k)- v(i,J,k))* G% IdxBu(I,J) ) &
2121
- + (str_xy(I-1 ,J-1 )- RoScl* bhstr_xy(I-1 ,J-1 )) * &
2122
- ((u(I-1 ,j,k)- u(I-1 ,j-1 ,k))* G% IdyBu(I-1 ,J-1 ) &
2123
- + (v(i,J-1 ,k)- v(i-1 ,J-1 ,k))* G% IdxBu(I-1 ,J-1 )) ) &
2124
- + ((str_xy(I-1 ,J)- RoScl* bhstr_xy(I-1 ,J)) * &
2125
- ((u(I-1 ,j+1 ,k)- u(I-1 ,j,k))* G% IdyBu(I-1 ,J) &
2126
- + (v(i,J,k)- v(i-1 ,J,k))* G% IdxBu(I-1 ,J)) &
2127
- + (str_xy(I,J-1 )- RoScl* bhstr_xy(I,J-1 )) * &
2128
- ((u(I,j,k)- u(I,j-1 ,k))* G% IdyBu(I,J-1 ) &
2129
- + (v(i+1 ,J-1 ,k)- v(i,J-1 ,k))* G% IdxBu(I,J-1 )) ) ) )
2130
- MEKE% mom_src_bh(i,j) = MEKE% mom_src_bh(i,j) + GV% H_to_RZ * ( &
2131
- ((bhstr_xx(i,j)- RoScl* bhstr_xx(i,j))* (u(I,j,k)- u(I-1 ,j,k))* G% IdxT(i,j) &
2132
- - (bhstr_xx(i,j)- RoScl* bhstr_xx(i,j))* (v(i,J,k)- v(i,J-1 ,k))* G% IdyT(i,j)) &
2133
- + 0.25 * (((bhstr_xy(I,J)- RoScl* bhstr_xy(I,J)) * &
2134
- ((u(I,j+1 ,k)- u(I,j,k))* G% IdyBu(I,J) &
2135
- + (v(i+1 ,J,k)- v(i,J,k))* G% IdxBu(I,J) ) &
2136
- + (bhstr_xy(I-1 ,J-1 )- RoScl* bhstr_xy(I-1 ,J-1 )) * &
2137
- ((u(I-1 ,j,k)- u(I-1 ,j-1 ,k))* G% IdyBu(I-1 ,J-1 ) &
2138
- + (v(i,J-1 ,k)- v(i-1 ,J-1 ,k))* G% IdxBu(I-1 ,J-1 )) ) &
2139
- + ((bhstr_xy(I-1 ,J)- RoScl* bhstr_xy(I-1 ,J)) * &
2140
- ((u(I-1 ,j+1 ,k)- u(I-1 ,j,k))* G% IdyBu(I-1 ,J) &
2141
- + (v(i,J,k)- v(i-1 ,J,k))* G% IdxBu(I-1 ,J)) &
2142
- + (bhstr_xy(I,J-1 )- RoScl* bhstr_xy(I,J-1 )) * &
2143
- ((u(I,j,k)- u(I,j-1 ,k))* G% IdyBu(I,J-1 ) &
2144
- + (v(i+1 ,J-1 ,k)- v(i,J-1 ,k))* G% IdxBu(I,J-1 )) ) ) )
2129
+ MEKE% mom_src(i,j) = MEKE% mom_src(i,j) + (FrictWork(i,j,k) - RoScl* FrictWork_bh(i,j,k))
2130
+ MEKE% mom_src_bh(i,j) = MEKE% mom_src_bh(i,j) + &
2131
+ (FrictWork_bh(i,j,k) - RoScl* FrictWork_bh(i,j,k))
2132
+
2145
2133
enddo ; enddo
2146
2134
else
2147
2135
0 commit comments