MUSL : traadv scheme unexpected computation of slopes
Context
Please provide informations on how to reproduce the bug:
-
Branches impacted: current release and main -
Reference configuration/test case PISCES or engines involved OCE TOP -
Any other relevant information
Analysis
In traadv_mus.F90 the slope computation uses non-homogeneous variables that are compared withing MIN function.
ABS( zslpx(ji ,jj,jk) ) ~ 1/2 slope average
2.*ABS( zwx (ji-1,jj,jk) ) ~ 2 x slope
2.*ABS( zwx (ji ,jj,jk) ) ~ 2 x slope
zslpx(ji,jj,jk) = ( zwx(ji,jj,jk) + zwx(ji-1,jj ,jk) ) &
& * ( 0.25 + SIGN( 0.25_wp, zwx(ji,jj,jk) * zwx(ji-1,jj ,jk) ) )
zslpx(ji,jj,jk) = SIGN( 1.0_wp, zslpx(ji,jj,jk) ) * MIN( ABS( zslpx(ji ,jj,jk) ), &
& 2.*ABS( zwx (ji-1,jj,jk) ), &
& 2.*ABS( zwx (ji ,jj,jk) ) )
Fix
zslpx(ji,jj,jk) = SIGN( 1.0_wp, zslpx(ji,jj,jk) ) * MIN( 2.*ABS( zslpx(ji ,jj,jk) ), &
& ABS( zwx (ji-1,jj,jk) ), &
& ABS( zwx (ji ,jj,jk) ) )