COSIMA / access-om2

ACCESS-OM2 global ocean - sea ice coupled model configurations.
21 stars 23 forks source link

Including wave data from wavewatch3 #119

Closed jkousal32 closed 3 years ago

jkousal32 commented 5 years ago

Hi all,

I want to know the best way to include wave data from ww3 into a 025deg version of this model.

For atmosphere and wave inputs I will be using some data from the FOI in china:

Would it be best to use the ww3 submodule supported by payu to do this (the same way as done with the yatm to include atmospheric forcings), and if so, what executable would I use for this? Is there a dummy exectuable similar to yatm for ww3?

Or would it be better to incorporate the wave data as part of yatm?

Any help would be much appreciated. Josh

russfiedler commented 5 years ago

Hi Josh,

I can't see those files so I can't say exactly what the best way to do this would be. Could you supply a dump of the header info and any further info?

There's a few potential ways of getting wave info from WW3 into MOM though things aren't properly implemented at the moment.

1) If you have the Stokes drift and the wavelength then you can pass this info through the diag_table without going through yatm. This will require a small change to the code in src/accessom_coupler/ocean_solo.F90 to allocate the arrays and make the requisite call to data_override You need to specify do_langmuir in ocean_sbc_nml

2) There's some placeholder code in ocean_sbc.F90 (about line 3330) for the case where you have the Stokes drift and a decay scale. In this case you would treat the fields like other surface fields that don't get passed through the couple by first initialising them with a call to time_interp_external in ocean_sbc_init and then make calls to time_interp_external

!--------stokes drift from surface wave model------------------------------- ! smg: place holder until get code updates to Ice_ocean_boundary. ! Also to be determined: will stokes drift velocity be on A,B, or C grid? ! Perhaps it should be same grid as smf. Or perhaps A grid is best...? ! i and j stokes drift (m/s) and stokes decay depth if(read_stokes_drift) then call time_interp_external(.... ) !!! add calls here for stokes info.

Again, no need for yatm.

3) Go the whole hog and pass everything through the coupler. This will take a bit more work.

jkousal32 commented 5 years ago

Hi Russ,

Is this what you mean by header info (just the files in the rcp45_merged directory)? fp.rcp45.merge.nc lwsurf.rcp45.merge.nc slp.rcp45.merge.nc t2.rcp45.merge.nc hs.rcp45.merge.nc prec.rcp45.merge.nc snow.rcp45.merge.nc u10.rcp45.merge.nc humidity.rcp45.merge.nc runoff.rcp45.merge.nc swsurf.rcp45.merge.nc v10.rcp45.merge.nc

The two variables I have from ww3 is the significant wave height (hs.rcp45.merge.nc) and the peak frequency (fp.rcp45.merge.nc). I am actually planning on using the k-epsilon mixing scheme instead of the KPP mixing so will not have Stokes drift within the model, correct?

Thanks, Josh

ofa001 commented 5 years ago

I don’t know where this guy is from Russ but I think he is going to need to do his own coupling set up for WW3 data.

From: russfiedler [mailto:notifications@github.com] Sent: Wednesday, 7 November 2018 4:18 PM To: OceansAus/access-om2 access-om2@noreply.github.com Cc: Subscribed subscribed@noreply.github.com Subject: Re: [OceansAus/access-om2] Including wave data from wavewatch3 (#119)

Hi Josh,

I can't see those files so I can't say exactly what the best way to do this would be. Could you supply a dump of the header info and any further info?

There's a few potential ways of getting wave info from WW3 into MOM though things aren't properly implemented at the moment.

  1. If you have the Stokes drift and the wavelength then you can pass this info through the diag_table without going through yatm. This will require a small change to the code in src/accessom_coupler/ocean_solo.F90 to allocate the arrays and make the requisite call to data_override You need to specify do_langmuir in ocean_sbc_nml

  2. There's some placeholder code in ocean_sbc.F90 (about line 3330) for the case where you have the Stokes drift and a decay scale. In this case you would treat the fields like other surface fields that don't get passed through the couple by first initialising them with a call to time_interp_external in ocean_sbc_init and then make calls to time_interp_external

!--------stokes drift from surface wave model------------------------------- ! smg: place holder until get code updates to Ice_ocean_boundary. ! Also to be determined: will stokes drift velocity be on A,B, or C grid? ! Perhaps it should be same grid as smf. Or perhaps A grid is best...? ! i and j stokes drift (m/s) and stokes decay depth if(read_stokes_drift) then call time_interp_external(.... ) !!! add calls here for stokes info.

Again, no need for yatm.

  1. Go the whole hog and pass everything through the coupler. This will take a bit more work.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHubhttps://github.com/OceansAus/access-om2/issues/119#issuecomment-436507846, or mute the threadhttps://github.com/notifications/unsubscribe-auth/ANrRgsDI42bUMiDSKl14aA1dw2i8YDCsks5usm0hgaJpZM4YRnc-.

russfiedler commented 5 years ago

I meant the variables that you wanted. ncdump -h i.e. hs and fp by the looks. Anyway, I would suggest doing something similar to 2) anyway. The Velocity derived type can easily be modified to have those 2 fields as well and we can send them to the k-epsilon scheme in the GOTM module. Do you have access to the code used in Stoney et al 2018? Shouldn't be too difficult to merge the changes and make things consistent with the current code.

jkousal32 commented 5 years ago

Okay thanks very much for that Russ. Yes I do, I am working with the same two supervisors as Lachlan Stoney did so have that already. Thanks for the help.

aekiss commented 3 years ago

is there anything remaining to discuss here or can this issue be closed?