Skip to content
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

Updated Numerical Solution for Wave Attenuation in sea ice #1294

Open
wants to merge 4 commits into
base: develop
Choose a base branch
from

Conversation

erinethomas
Copy link

@erinethomas erinethomas commented Aug 15, 2024

Pull Request Summary

This PR provides a new switch (called IC4_ACCURATE_NUMERICS). This switch allows for using an updated numerics scheme for wave attenuation in sea ice.

Description

The default behavior for wave attenuation in sea ice uses 'time splitting' for the wave action equation. This PR and the use of the new switch setting allows the user to place the 'sea ice' with the other source terms, thus reducing the errors introduced with the time splitting method for wave attenuation in sea ice resulting in more accurate wave action in sea ice.

Currently, this code is intended to be used in tandem with the newly proposed Meylan et al 2021 attenuation scheme : IC4M10 (see PR: #1293 ). This combination (IC4M10 plus IC4_ACCURATE_NUMERICS) has been tested in coupled CESM and E3SM runs, yet we note, at this time, this new numerics calculation for wave attenuation has not yet been tested with IC4 methods 1-9, although, we expect similar improvements for all IC4 methods.

This PR is the original work of @cmbitz and Vince Cooper (University of Washington). Collaborators include @erinethomas, @dabail10, @NickSzapiro-NOAA

Issue(s) addressed

This PR fixes the following Issue: #738

Commit Message

Introduction of a new switch (IC4_ACCURATE_NUMERICS) that allows for more accurate numerics scheme for wave attenuation in sea ice. Coauthors: Cecilia Bitz, Vince Cooper, Erin Thomas, David Bailey, Nick Szapiro.

Check list

Testing

  • How were these changes tested?
    This code has been tested by @cmbitz (details to be posted below), by @erinethomas in E3SM configurations with wave-sea ice coupling, and by @dabail10 in CESM configurations with wave-sea ice coupling.
  • Are the changes covered by regression tests? (If not, why? Do new tests need to be added?)
  • Have the matrix regression tests been run (if yes, please note HPC and compiler)?
  • Please indicate the expected changes in the regression test output, (Note the list of known non-identical tests.)
  • Please provide the summary output of matrix.comp (matrix.Diff.txt, matrixCompFull.txt and matrixCompSummary.txt):

@erinethomas erinethomas changed the title Updated Numerical Solution for Wave aAtenuation in sea ice Updated Numerical Solution for Wave Attenuation in sea ice Aug 15, 2024
@NickSzapiro-NOAA
Copy link
Contributor

Maybe it is possible to progress with some discussion/review during this pause, @MatthewMasarik-NOAA ? I don't know if any IC4 developers in particular have feedback

@MatthewMasarik-NOAA
Copy link
Collaborator

Hi @NickSzapiro-NOAA, others should feel free to discuss. If this is not needed for either gfsv17 or gefsv13 though, than Avichal has reiterated that the waves team needs to pause any reviewing since we don't have the manpower currently.

@MatthewMasarik-NOAA
Copy link
Collaborator

@erinethomas, we will also process this in ~November. Thank you for the very informative PR header.

@cmbitz
Copy link
Collaborator

cmbitz commented Oct 2, 2024

I've made a github repository about this issue at https://github.com/cmbitz/WW3Numerics where I've written up some more detailed notes about this issue and show some results in slides from a number of integrations to test it. I also provide a Python Notebook with some idealized examples that can be solved exactly where I compare the various solution options. In short, the modifications I'm suggesting can be implemented so they only matter in the sea ice. They can work for any IC/IS option combination, though I confess I've only tested with IC4Method10. I'm 100% sure it would improve wave amplitudes in the sea ice for any IC option. Happy to talk to anyone who wants to listen. I understand that this issue is on the back-burner, which is okay with me. I'll wait.

@erinethomas
Copy link
Author

thanks for the extra details @cmbitz!

@@ -2097,7 +2145,7 @@ SUBROUTINE W3SRCE ( srce_call, IT, ISEA, JSEA, IX, IY, IMOD, &
#ifdef W3_IC3
ATT=EXP(ICE*VDIC(IS)*DTG)
#endif
#ifdef W3_IC4
#ifndef W3_IC4_ACCURATE_NUMERICS
Copy link
Collaborator

@sbanihash sbanihash Dec 7, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In a case of IC0 for example, where there is no IC1-IC5 defined, then VDIC has not been defined (look at line 744 in this same script) and the build will give this error: This name does not have a type, and must have an explicit type. [VDIC]
ATT=EXP(ICE*VDIC(IS)*DTG)
suggested changes is:
#ifdef WW3_IC4
#ifndef WW3_IC4_ACCURATE_NUMERICS
ATT = EXP(ICE * VDIC(IS) * DTG)
#endif
#endif

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants