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

Abnormal Output Behavior in COAWST (ROMS-SWAN Coupled Mode) #359

Open
hgengqi opened this issue Feb 2, 2025 · 7 comments
Open

Abnormal Output Behavior in COAWST (ROMS-SWAN Coupled Mode) #359

hgengqi opened this issue Feb 2, 2025 · 7 comments

Comments

@hgengqi
Copy link

hgengqi commented Feb 2, 2025

In my implementation of the coupled ROMS-SWAN system within COAWST, the following issues have been observed in the output files:

1:Surface Dissipation Term (dissurf): The dissurf variable persistently remains zero in all output records, while disbot and diswcap exhibit non-zero values as expected.

Image

2:Turbulent Kinetic Energy (TKE) Anomaly: During the first time step, the TKE field displays unphysical spatial distribution patterns (e.g., abrupt grid-scale oscillations). However, these anomalies gradually diminish as the simulation progresses.

Image

Image

3:Stokes Drift Behavior: The computed Stokes drift velocity field initially shows non-physical spatial distribution characteristics, with values decaying to near-zero magnitudes over successive time steps.

Image

Image

4:Thermal/Salinity Instability: While the temperature and salinity initial fields appear to be correctly configured, both parameters develop extreme negative values (exceeding physical plausibility) during numerical integration

Image

Image

my cpp.h file ,roms and swan control file are as follows

couple_spec_h.txt
roms_spec_in.txt
swan_spec_in.txt

i would be grateful if you could give me some advice.

@hgengqi hgengqi closed this as not planned Won't fix, can't repro, duplicate, stale Feb 6, 2025
@jcwarner-usgs
Copy link
Collaborator

  1. The Diss surf will only be activated if you have
    TKE_WAVEDISS for use in the gls tke surface mixing.

  2. init tke being large could be due to mismatch in the density fields if they were interpolated from a coarser model.

  3. stokes drift - what did the Hwave look like?

  4. :Thermal/Salinity Instability - this goes along with 2. do the fields settle down after some time?

@hgengqi hgengqi reopened this Feb 17, 2025
@hgengqi
Copy link
Author

hgengqi commented Feb 17, 2025

  1. The Diss surf will only be activated if you have
    TKE_WAVEDISS for use in the gls tke surface mixing.
  2. init tke being large could be due to mismatch in the density fields if they were interpolated from a coarser model.
  3. stokes drift - what did the Hwave look like?
  4. :Thermal/Salinity Instability - this goes along with 2. do the fields settle down after some time?

thank you for your reply

  1. I have defined tke_wavediss, but dissurf still does not appear.
    Image

Image

2.No, what I mean is that TKE was initially present, but it gradually disappeared as the computation progressed.

3.This is the corresponding plot of TKE and Hwave at the same time. Hwave has values, but TKE shows both the maximum and minimum values as 0.

Image

Image

4.Yes, it stabilized later, and no abnormal values appeared.

@jcwarner-usgs
Copy link
Collaborator

"3.This is the corresponding plot of TKE and Hwave at the same time. Hwave has values, but TKE shows both the maximum and minimum values as 0."
Are you sure this is not an issue with your viewer? how can the color range go from dark blue to bright red, yet all the values are 0? that seems odd.
perhaps the viewer has some pre-set caxis limits. can you actually look at the values in the netcdf file?
ncks -v tke ocean_his.nc
or similar

@hgengqi
Copy link
Author

hgengqi commented Feb 20, 2025

"3.This is the corresponding plot of TKE and Hwave at the same time. Hwave has values, but TKE shows both the maximum and minimum values as 0." Are you sure this is not an issue with your viewer? how can the color range go from dark blue to bright red, yet all the values are 0? that seems odd. perhaps the viewer has some pre-set caxis limits. can you actually look at the values in the netcdf file? ncks -v tke ocean_his.nc or similar

Sorry for the late reply. I can confirm that the value here is indeed 0. I have repeatedly checked the values in the file. In my subsequent tests, I reduced the grid resolution to identify the issue, but I am still encountering the following problems:
1:Even though I have defined tke_wavediss, the maximum and minimum values of dissurf still show as 0 during data exchange.
Image

2:Even on land, tke is shown as 0 instead of NaN. Does this indicate that masking is not effective in the calculation of tke?
And at the second time step, a very strange anomaly appears in a specific region.
Image

Image

@jcwarner-usgs
Copy link
Collaborator

I am getting confused between your questions on tke and DISSURF.

tke - is the turbulent kinetic energy of the ocean, it is not 0, i can see that i varies in the varies in the figure from a few days ago.

DISSURF - is the wave energy dissipation from SWAN due to depth limited breaking. It becomes the variable Dissip_break in ROMS.
At the scale of your grid, you probably are not resolving any depth limited breaking.
You can add an output from swan directly, something like
BLOCK 'COMPGRID' NOHEADER 'dissip.nc' LAY 4 DISSIP 1. OUTPUT 20000101.000000 1 HR
and that will give you output directly from SWAN for comparison.

The DISBOT becomes Dissip_fric in ROMS.
The DISWCAP becomes Dissip_wcap in ROMS.

@hgengqi
Copy link
Author

hgengqi commented Feb 26, 2025

I am getting confused between your questions on tke and DISSURF.

tke - is the turbulent kinetic energy of the ocean, it is not 0, i can see that i varies in the varies in the figure from a few days ago.

DISSURF - is the wave energy dissipation from SWAN due to depth limited breaking. It becomes the variable Dissip_break in ROMS. At the scale of your grid, you probably are not resolving any depth limited breaking. You can add an output from swan directly, something like BLOCK 'COMPGRID' NOHEADER 'dissip.nc' LAY 4 DISSIP 1. OUTPUT 20000101.000000 1 HR and that will give you output directly from SWAN for comparison.

The DISBOT becomes Dissip_fric in ROMS. The DISWCAP becomes Dissip_wcap in ROMS.

Sorry if my description caused any confusion. I am facing two issues:

The TKE value is always showing as 0. The values that appeared earlier were actually due to a calculation error. (I might not fully understand TKE, so please forgive me if I’m mistaken—I initially thought TKE should have a value at all times.) However, I later found that TKE only occasionally appears in some high-wind-speed regions.

No matter how I define wavediss, when SWAN transmits data to ROMS, DISSURF always shows both its maximum and minimum values as 0. This issue still remains unresolved.

@jcwarner-usgs
Copy link
Collaborator

tke is turbulent kinetic energy. In ROMS it is "tke" in the ocean_his.nc. It has a background value that is set in ocean.in, but is typically higher than that in energetic flows. you will need to figure this out for your particular application.

for the SWAN DISSURF, as i suggested previously, you can have SWAN write out that parameter and compare it to roms. If it is 0 from SWAN, then you need to look at the waves, and understand why there is no depth limited breaking - most likely due to grid resolution or depths.

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

No branches or pull requests

2 participants