@@ -88,6 +88,7 @@ SUBROUTINE ADV_UV_EDGE_GCN
8888 REAL (SP) :: UALFA_TMP,VALFA_TMP
8989 INTEGER :: ERROR
9090 REAL (SP) :: EPS
91+ REAL (SP) :: XAB, YAB ! Lu Wang, LIMITATION@20240328
9192# endif
9293
9394# if defined (NH) || defined (LIMITER_VER_ADV)
@@ -171,6 +172,17 @@ SUBROUTINE ADV_UV_EDGE_GCN
171172 YIJA= DLTYNE(I,1 )
172173 XIJB= DLTXNE(I,2 )
173174 YIJB= DLTYNE(I,2 )
175+ !---- > Lu Wang, LIMITATION@20240328
176+ XTMP = XC(IA)* TPI - XC(IB)* TPI
177+ XTMP1 = XC(IA) - XC(IB)
178+ IF (XTMP1 > 180.0_SP )THEN
179+ XTMP = - 360.0_SP * TPI+ XTMP
180+ ELSE IF (XTMP1 < - 180.0_SP )THEN
181+ XTMP = 360.0_SP * TPI+ XTMP
182+ END IF
183+ XAB = XTMP * COS (DEG2RAD * (YC(IA)+ YC(IB))* 0.5_SP )
184+ YAB = (YC(IA) - YC(IB)) * TPI
185+ !<----
174186# if defined (THIN_DAM)
175187 IF (IB==0.AND .E_DAM_MATCH(IA)/= 0.AND .K<= KDAM1(IA))XIJB= DLTXNE_DAM_MATCH(I)
176188 IF (IB==0.AND .E_DAM_MATCH(IA)/= 0.AND .K<= KDAM1(IA))YIJB= DLTYNE_DAM_MATCH(I)
@@ -180,6 +192,10 @@ SUBROUTINE ADV_UV_EDGE_GCN
180192 YIJA= YIJC(I)- YC(IA)
181193 XIJB= XIJC(I)- XC(IB)
182194 YIJB= YIJC(I)- YC(IB)
195+ !---- > Lu Wang, LIMITATION@20240328
196+ XAB = XC(IA) - XC(IB)
197+ YAB = YC(IA) - YC(IB)
198+ !<----
183199# if defined (THIN_DAM)
184200 IF (IB==0.AND .E_DAM_MATCH(IA)/= 0.AND .K<= KDAM1(IA))XIJB= XIJC(I)- XC(E_DAM_MATCH(IA))
185201 IF (IB==0.AND .E_DAM_MATCH(IA)/= 0.AND .K<= KDAM1(IA))YIJB= YIJC(I)- YC(E_DAM_MATCH(IA))
@@ -278,8 +294,12 @@ SUBROUTINE ADV_UV_EDGE_GCN
278294
279295 UIJ1(I)= COFA1* XIJA+ COFA2* YIJA
280296 VIJ1(I)= COFA5* XIJA+ COFA6* YIJA
281- UALFA_TMP= ABS (U(IA,K)- U(IB_TMP,K))/ ABS (UIJ1(I)+ EPSILON (EPS))
282- VALFA_TMP= ABS (V(IA,K)- V(IB_TMP,K))/ ABS (VIJ1(I)+ EPSILON (EPS))
297+ !---- > Lu Wang, LIMITATION@20240328
298+ ! UALFA_TMP= ABS (U(IA,K)- U(IB_TMP,K))/ ABS (UIJ1(I)+ EPSILON (EPS))
299+ ! VALFA_TMP= ABS (V(IA,K)- V(IB_TMP,K))/ ABS (VIJ1(I)+ EPSILON (EPS))
300+ UALFA_TMP= ABS (U(IA,K)- U(IB_TMP,K))/ ABS (COFA1* XAB + COFA2* YAB + EPSILON (EPS))
301+ VALFA_TMP= ABS (V(IA,K)- V(IB_TMP,K))/ ABS (COFA5* XAB + COFA6* YAB + EPSILON (EPS))
302+ !<----
283303 IF (UALFA_TMP > 1 )UALFA_TMP = 1.0_SP
284304 IF (VALFA_TMP > 1 )VALFA_TMP = 1.0_SP
285305 UALFA(IA)= MIN (UALFA(IA),UALFA_TMP)
@@ -294,10 +314,15 @@ SUBROUTINE ADV_UV_EDGE_GCN
294314! COFA7= A1U(IB,1 )* V(IB,K)+ A1U(IB,2 )* V(K4,K)+ A1U(IB,3 )* V(K5,K)+ A1U(IB,4 )* V(K6,K)
295315! COFA8= A2U(IB,1 )* V(IB,K)+ A2U(IB,2 )* V(K4,K)+ A2U(IB,3 )* V(K5,K)+ A2U(IB,4 )* V(K6,K)
296316
317+
297318 UIJ2(I)= COFA3* XIJB+ COFA4* YIJB
298319 VIJ2(I)= COFA7* XIJB+ COFA8* YIJB
299- UALFA_TMP= ABS (U(IA,K)- U(IB_TMP,K))/ ABS (UIJ2(I)+ EPSILON (EPS))
300- VALFA_TMP= ABS (V(IA,K)- V(IB_TMP,K))/ ABS (VIJ2(I)+ EPSILON (EPS))
320+ !---- > Lu Wang, LIMITATION@20240328
321+ ! UALFA_TMP= ABS (U(IA,K)- U(IB_TMP,K))/ ABS (UIJ2(I)+ EPSILON (EPS))
322+ ! VALFA_TMP= ABS (V(IA,K)- V(IB_TMP,K))/ ABS (VIJ2(I)+ EPSILON (EPS))
323+ UALFA_TMP= ABS (U(IA,K)- U(IB_TMP,K))/ ABS (COFA3* XAB + COFA4* YAB + EPSILON (EPS))
324+ VALFA_TMP= ABS (V(IA,K)- V(IB_TMP,K))/ ABS (COFA7* XAB + COFA8* YAB + EPSILON (EPS))
325+ !<----
301326 IF (UALFA_TMP > 1 )UALFA_TMP = 1.0_SP
302327 IF (VALFA_TMP > 1 )VALFA_TMP = 1.0_SP
303328 UALFA(IB_TMP)= MIN (UALFA(IB_TMP),UALFA_TMP)
0 commit comments