NOAA-EMC / WW3

WAVEWATCH III
Other
258 stars 520 forks source link

Add optional high frequency tail to USSX, USSY #669

Open JessicaMeixner-NOAA opened 2 years ago

JessicaMeixner-NOAA commented 2 years ago

Is your feature request related to a problem? Please describe. Instead of adding additional surface strokes drift output variables, add an option to add the high-frequency tail to the surface stokes drift.

Describe the solution you'd like Add an option controlled from the &OUTS or other namelist variable to add the high frequency tail to the existing surface stokes drift calculation and remove the additional surface stokes drift variables.

Additional context This is part of merging https://github.com/NOAA-EMC/WW3/pull/641 back to the develop branch.

FYI @qingli411

JessicaMeixner-NOAA commented 2 years ago

@aliabdolali can help make sure there are no clashes with wave model, and can help @qingli411 make a regression test for this and run regression tests.

CarstenHansen commented 1 year ago

Hi @qingli411 . Your work will be very useful for our group as we run an operational oil tracking service and need a good estimate of the drift of thin oil slicks. With the recent new dissipation source terms in ST4 and ST6 we may be able to tune the high-frequency spectral tail to a realistic level in most situations, and adding a parametric tail will provide smooth transitions in situations with limited wind-fetch. So I have constructed a branch fb_xstp with an example of a namelist &XSTP that can be used to activate addition of a spectral tail. The namelist may contain parameter do activate or de-activate the added tail for any output field (this must be implemented in the code for each field). You can adopt parts of it or reject it as you like.

There should be a parameter for each field specifying the 2d shape of the spectral tail, possibly with additional parameters. A parameter 'none' (default) indicates not to add a tail beyond the spectral bin NK. To activate the code presently commented out in w3iogomd.F90 I suggest the following line in ww3_grid.inp (or in namelists.nml for ww3_grid.nml): &XSTP USXTT='Pf-5' / . This means a variance spectrum with a Phillips (1958) freq^{-5} tail with a constant directional spread. An additional parameter USXFM may specify that the tail is truncated at some higher frequency, e.g. 2 Hz: &XSTP USXTT='Pf-5', USXFM=2. /.

qingli411 commented 1 year ago

Hi @CarstenHansen, thanks for pointing me to your branch! This is very helpful.

I've only been using the $f^{-5}$ tail for Stokes drift when coupling WW3 with CESM. But I think your approach is better and it allows the implementation of different forms of the spectral tail, such as the one in Lenain and Pizzo (2020) which considers the transition between the equilibrium and saturation ranges. What is your plan for this branch?

CarstenHansen commented 1 year ago

Hi @qingli411, thank you for pointing to Lenain and Pizzo (2020). I wasn't aware of this, and their scanning lidar wave measurements and interpretations are indeed interesting. My aim is to bring a means of outputting a vertical profile of the mean Stokes Drift into the WW3 framework, i.e. to support a branch I am working on: fb_xsto. (I have had a brief email correspondence with @JessicaMeixner-NOAA about my intents). When I wrote the first versions of this many years ago there were poor empirical evidence of specific forms of the wave spectrum at very high frequencies, and we applied an extrapolation to high frequencies using a fit to the 1'st circular moment (directional spreading) measured in experiments of Ewans and Forristall in the late 1990's. I have been thinking to replace this with a simpler parametrization and extend the upper prognostic frequency to at least 1 Hz. The Lenain and Pizzo finding is appealing since at light winds (~5m/s) the transition frequency from f-4 to f-5 is near 1 Hz.

I think to proceed as follows:

  1. Add a namelist parameter to the code specifying a shape parameter (USXP1=0.01) representing the value of knu*2/g in Lenain and Pizzo for which the tail type namelist may be e.g. USXTT='LP20'. And write the appropriate code in w3iogomd.F90 for output of USS and TUS. (You may also output a depth scale or 'mean surface layer' Stokes drift).
  2. Apply a similar code in the calculation of the mean Stokes drift at the depth levels that I need for my feature.

One item confuses me after skimming Lenain and Pizzo (2020): It appears that it is the omni-directional Stokes drift that interacts with vorticity in the ocean surface layer. This is somewhat stronger than the mean Stokes drift vector which is pointing in the direction of the vector sum. If this is the case, the calculation for the prognostic range should be omni-directional rather than divided into X- and Y-components. Or maybe Lenain and Pizzo are just simplifying the formulas for clarification?

qingli411 commented 1 year ago

Thank you, @CarstenHansen !

One item confuses me after skimming Lenain and Pizzo (2020): It appears that it is the omni-directional Stokes drift that interacts with vorticity in the ocean surface layer. This is somewhat stronger than the mean Stokes drift vector which is pointing in the direction of the vector sum. If this is the case, the calculation for the prognostic range should be omni-directional rather than divided into X- and Y-components. Or maybe Lenain and Pizzo are just simplifying the formulas for clarification?

I think we need the mean Stokes drift vector rather than the omni-directional Stokes drift. I guess they are just simplifying the formulas here...