-
Notifications
You must be signed in to change notification settings - Fork 570
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
unstructured W3XYPFSNIMP() clears boundary input #967
Comments
Dear @dpzimmer, great catch but let me explain you something with this scheme. The implicit scheme within the fractional step approach is not a good idea if the time step is toi big and the schemes decouple. Please consult my thesis, Roland, 2008 e.g. Researchgate. Therefore, this should only be carefully used. The best alternative would be to use the fully implicit model. A pull request with this matter would be happily accepted from my side. |
Thanks for the tip Aron. By fully implicit, would you mean the IMPTOTAL parameter in place of IMPFSN? I have tried to find documentation on this as well as (IMPREFRACTION, IMPFREQSHIFT, IMPSOURCE) which seem related, but without success. The manual mentions a document entitled "Improving downscaling efficiency of WAVEWATCH III on unstructured Any help would be appreciated, thanks. Don. |
look at https://github.com/NOAA-EMC/WW3/blob/develop/model/inp/ww3_grid.inp#L306-L346 and the manual. |
patched |
When running an unstructured mesh using the implicit-n solver and providing with boundary input, the routine W3XYPFSNIMP clears the boundary input.
To Reproduce, run with IMPFSN=T, EXPFSN=F and a valid nest.ww3 and note the boundary nodes are all flat and not sending energy into the domain.
This is due to an inverted logic, multiplying by (1-IOBPD(ITH,IP)) rather than IOBPD(ITH,IP). In subroutine W3XYPFSNIMP of the file w3profsmd.F90.
Existing code:
!
! Time interpolation as done in rect grids
!
DO IBI=1, NBI
IP = MAPSF(ISBPI(IBI),1)
AC(IP) = ( RD1BBPI0(ISP,IBI) + RD2BBPIN(ISP,IBI) ) &
IOBPA(IP)(1-IOBPD(ITH,IP)) / CG(IK,ISBPI(IBI)) * CLATS(ISBPI(IBI))
END DO
Suggested patch:
!
! Time interpolation as done in rect grids
!
DO IBI=1, NBI
IP = MAPSF(ISBPI(IBI),1)
AC(IP) = ( RD1BBPI0(ISP,IBI) + RD2BBPIN(ISP,IBI) ) &
*IOBPA(IP)*IOBPD(ITH,IP) / CG(IK,ISBPI(IBI)) * CLATS(ISBPI(IBI))
END DO
The text was updated successfully, but these errors were encountered: