USGS-CMG / wetlands-synthesis

Wetlands synthesis project
MIT License
0 stars 0 forks source link

Derive tidal current power from EC2015 constituents #6

Open rsignell-usgs opened 6 years ago

rsignell-usgs commented 6 years ago

We want to calculate tidal current power potential from the EC2015 tidal harmonic database and output to UGRID-compliant dataset. This should be easy since we can start with the python code that reads the constituents and just modify it. How should this be done?

rsignell-usgs commented 6 years ago

@aaretxabaleta-usgs sent me email offline:

I have put the netcdf with the maximum average tidal stream power in sand: http://geoport.whoi.edu/thredds/dodsC/sand/usgs/users/aretxabaleta/ADCIRC_tides/catalog.html?dataset=sand/usgs/users/aretxabaleta/ADCIRC_tides/Maximum_average_tidal_stream_power.nc I have matched the other tidal files, but did not include the adcirc_mesh variable.

Instead of adding adcirc_mesh to that dataset, I just added that variable to the netcdf file containing the big 5 tidal amplitudes using this code.

I then created a new tidal current power json config: https://github.com/USGS-CMG/terriajs-dive/blob/master/examples/ec2015_power.json for TerriaJS, so dropping that onto the end of the terriamap URL that @zdefne-usgs set up, you can use this URL to explore:

https://gamone.whoi.edu/terriamap/#clean&proxy/_60s/https://raw.githubusercontent.com/USGS-CMG/terriajs-dive/master/examples/ec2015_power.json

If you want different default colorscales, holler...

2018-04-07_8-17-57

rsignell-usgs commented 6 years ago

@aaretxabaleta-usgs, just for my interest, how did you calculate tidal current power?

I have seen Tidal Current Power (TCP) with formulas like:

TCP  = mean((u**2 + v**2)**3/2)  

where u and v are obtained from 15 min data and the mean is taken over a spring neap cycle.

Did you do something similar?

aaretxabaleta-usgs commented 6 years ago

Directly from the Haas et al. (2011) Technical Report (Assessment of Energy Production Potential from Tidal Streams in the United States Final Project Report) https://www1.eere.energy.gov/water/pdfs/1023527.pdf Page 26

Maximum average tidal stream power, Pmax, is given as Pmax=gammarhogaQmax where gamma is a parameter representing the 20-24% of the peak tidal pressure head, rho is the density of seawater, a is the amplitude of the tidal water level constituent and Qmax is the maximum corresponding tidal flow rate.

Supposedly it comes from (Garrett and Cummins, 2005). This might be preferable to kinetic power density from the tidal current speeds P=1/2rhoV^3, because it also includes the tidal head. This is the method that @zdefne-usgs used for calculating tidal power on the east coast "Defne, Z., Haas, K.A., Fritz, H.M., Jiang, L., French, S.P., Shi, X., Smith, B.T., Neary, V.S. and Stewart, K.M., 2012. National geodatabase of tidal stream power resource in USA. Renewable and Sustainable Energy Reviews, 16(5), pp.3326-3338 (https://doi.org/10.1016/j.rser.2012.02.061).

Form the Haas et al. report: "Maximum average tidal stream power, Pmax, is given as Pmax=gamma ρgaQmax (18) where gamma is a parameter, ρ is the density of seawater, a is the amplitude of the tidal water level constituent and Qmax is the maximum corresponding tidal flow rate. For a background friction dominated, nonsinusoidal (i.e. considering more than one tidal constituent) case, if data for the head and flux in the natural state are available, the maximum average power may be estimated with an accuracy of 10% using gamma = 0.22, without any need to understand the basic dynamical balance (Garrett and Cummins, 2005). A multiplying factor is used to account for additional constituents (a1, a2, ...) given as 1+(9/16)(r1^2+r2^2+...) where r1=a1/a, r2=a2/a, ... This upper bound on the available power ignores losses associated with turbine operation and assumes that turbines are deployed in uniform fences, with all the water passing through the turbines at each fence."

aaretxabaleta-usgs commented 6 years ago

I think you might want to change the title as it is not just tidal current power, but tidal stream power that takes into account the head supposedly.

aaretxabaleta-usgs commented 6 years ago

I have also updated the original nc file to include two variables: The original matsp that is integrated in depth and matspKWm2 that is done as power in terms of cross-sectional area. We can always choose one after we come to terms to what makes sense.

zdefne-usgs commented 6 years ago

@aaretxabaleta-usgs Actually for the tidal stream power density map we used the standard 1/2*rho*V**3 formulation. Garrett and Cummin formulation could be used to calculate total available power (kinetic+potential) only at certain channelized (or constricted) locations because of the assumptions in the derivation of that equation. Otherwise "tidal current power" and "tidal stream power" are used interchangeably. For example, the power can have units of kW, and power density can be in kW/m2.

zdefne-usgs commented 6 years ago

If we choose to use the 1/2*rho*V**3 formulation we need to read in fort.54 for tidal current constituents and generate the time series for a month or so to calculate the mean power density.

aaretxabaleta-usgs commented 6 years ago

That is the reason we went with the Garrett & Cummins formulation. The idea was not to have to rerun the solution, but use directly the available products.

rsignell-usgs commented 6 years ago

Okay, this is now updated with the non-vertically-integrated power: https://gamone.whoi.edu/terriamap/#clean&proxy/_60s/https://raw.githubusercontent.com/USGS-CMG/terriajs-dive/master/examples/ec2015_power.json

2018-04-09_21-51-12 2018-04-09_22-03-25

rsignell-usgs commented 6 years ago

ping @BrianOBlanton

zdefne-usgs commented 6 years ago

@rsignell-usgs This looks great!

Also how about a horizontal legend? It helps to see other layers, especially when more than one layer is turned on. In the long run we can also consider re-arranging min-max and update range buttons into one line to save even more space. Just a thought...

image

aaretxabaleta-usgs commented 6 years ago

This is looking great. I like the idea of the range, but those are details. How about the "Style"? I think we can live with filled contours.

rsignell-usgs commented 6 years ago

The horizontal legend is great! I didn't know we could do that! Can you issue a pull request on the json config?

rsignell-usgs commented 6 years ago

@aaretxabaleta-usgs , I think we should derive the tidal energy potential by using the predicted values over the spring/neap cycle -- I think that is more defensible than a formula based on coefficients that is only valid in channels. Plus it makes another nice use case for scalable analysis capabilities! 😺

zdefne-usgs commented 6 years ago

@rsignell-usgs Can you simply set HORIZONTAL=true for the legend in the sci-wms interface?

rsignell-usgs commented 6 years ago

Would be nice to add tidal current umajor, uminor, inclination and phase. Python code to calculate these from uamp, upha, vamp, vpha is here: https://github.com/pwcazenave/PyFVCOM/blob/master/PyFVCOM/tidal_ellipse.py#L43-L197

EC2015 tidal velocity uamp, upha, vamp, vpha constituent info is here: http://tds.renci.org:8080/thredds/dodsC/DataLayers/Tides/ec2015_tidaldb/f54.nc.html

aaretxabaleta-usgs commented 6 years ago

The file with the tidal power calculated from the velocity (variable name is tidpow) is in: http://geoport.whoi.edu/thredds/dodsC/sand/usgs/users/aretxabaleta/ADCIRC_tides/tidal_current_power.nc

The file with the umajor, uminor, phase and ellipse orientation is in: http://geoport.whoi.edu/thredds/dodsC/sand/usgs/users/aretxabaleta/ADCIRC_tides/tidal_velocity_tellipseparams.nc

Finally, the final with the tidal datums (data?) such as MLLW, MHHW and highest astronomical tide is in: http://geoport.whoi.edu/thredds/dodsC/sand/usgs/users/aretxabaleta/ADCIRC_tides/tideDatums.nc

aaretxabaleta-usgs commented 6 years ago

Are we going to be able to click on a point and get a value? Is that possible with ugrid?

rsignell-usgs commented 6 years ago

With the ncWMS service, you can click and get a value. With the sci-wms service, you currently can't click and get a value.

So for the smaller grids (like the Naimie grids) we can use ncWMS and get a value. For the larger grids (like the EC2015 grids) ncWMS is too slow, and we need sci-wms, and we can't click and get a value.