markdown
1. Project Motivation
Offshore wind turbines and wave energy devices interact with ocean waves in complex ways, altering how wave energy is reflected or diffracted. However, most existing spectral wave models oversimplify these cylindrical structures by treating them as landpoints or adopting transmission coefficient, removing wave energy without accounting for wave-structure interactions, including wave diffraction, reflection. This can lead to inaccurate representations of the wave field near energy installations. In this project, I present a new method that better captures these interactions by representing the physical scattering effects of cylindrical structures (as shown in figure below), such as turbine foundations and wave energy devices. The proposed method is based on classical wave diffraction theory and implemented in WAVEWATCH III. It conserves total wave energy while redistributing it across directions.
Surface elevation and energy distributions for the case λ/D = 1.
(a) Total surface elevation (m),
(b) normalized scattering directional distribution function,
(c) potential energy of the scattered wave (J m-2), and
(d) kinetic energy of the scattered wave (J m-2).
The structure is located at the center; the incident wave propagates from left to right.
2. Compilation
To compile WW3 with the scattering parameterization, the only required modification is to define WFP1 in the switch file. This will include the w3swfp1md.ftn module in the build process. No other configuration changes or compiler options are needed.
3. Preparing the Forcing File
The scattering parameterization requires certain variables to be provided in NetCDF format. Below are two screenshots of NetCDF file headers showing the required variables and dimensions. From File 1 (e.g., wavefarm_WF1_MO_N1D10_DEP20.nc)
| Variables | Description |
|---|---|
| TurH | Submerged depth of the turbine foundation (in meters). Positive downward from the sea surface. Used for floating structures or wave energy converter devices. |
| TurD | Foundation diameter (in meters). Used to compute the λ/D ratio in the parameterization. |
| TurN | Number of turbines within a single grid cell. Integer count (e.g., 0, 1, 2…). |
| x, y | Model grid axes (in meters for Cartesian coordinates). |
| Time | Time dimension. |
From File 2 (e.g., wavefarm_WF2_MO_N1D10_DEP20.nc)
| Variables | Description |
|---|---|
| Type | 1 = monopile, 2 = floating. This variable is used to decide which parameterization regime to apply. |
To provide a visual overview of the spatial distribution, the figure below shows the layout of wind turbines as represented by the Type variable in the input file wavefarm_WF2.nc.
4. Running the Test Case
Step1: Generate the model grid Run the ww3_grid, this will generate the model grid and related files
./ww3_gridStep2: Convert the forcing files Firstly, prepare the wind files using ww3_prnc executable:
cp ww3_prnc_wind.inp ww3_prnc.inp
./ww3_prncThis will generate wind.ww3, the binary wind forcing file required by WW3.
Then, the turbine structure input files (wavefarm_WF1_MO_N1D10_DEP20.nc and wavefarm_WF2_MO_N1D10_DEP20.nc) must be converted into binary format readable by WW3. this can be done by running
cp ww3_prnc_WF1.inp ww3_prnc.inp
./ww3_prnc
cp ww3_prnc_WF2.inp ww3_prnc.inp
./ww3_prncIf the above commands execute successfully, two files, wfp1.ww3 and wfp2.ww3, will be generated.
Step3: Prepare the initial condition
./ww3_strtStep4: Run the model
./ww3_shelIn the screenshot below, the key parameters in ww3_shel.inp related to the scattering scheme are highlighted in yellow. These parameters should be set to 'T' to activate reading of the associated input data (e.g., wfp1.ww3, wfp2.ww3).
Step5: Post-process the output to NetCDF
./ww3_ounf
./ww3_ounpAfter running the model and completing the post-processing step with ww3_outf and ww3_outp, the output is written in NetCDF format. The figure below shows a sample visualization using ncview (a simple graphical tool commonly used to view NetCDF files interactively), confirming that the model executed successfully and produced significant wave height.
5. Notes and Tips
The current scattering parameterization has only been tested in WW3 under a Cartesian grid setup. If you intend to apply it to spherical (longitude-latitude) coordinates or unstructured grids, the code will need to be adapted to support these scenarios. This includes handling integration radius when calculating scattered and incident wave energies. Future improvements could focus on making the implementation more flexible and portable across different grid configurations.
6. Contact
For more detailed information about the implementation and usage, please refer to following manuscript and software:
Zhao, B., Sahlée, E., Du, J., Wu, L., A Wave Diffraction Theory-Based Wave Scattering Parameterization for Spectral Wave Models and Idealized Simulations. Submitted to Journal of Advances in Modeling Earth Systems. https://doi.org/10.22541/essoar.175008916.65969995/v1
Zhao, B. (2026). A Subgrid-Scale Parameterization of wave-structure interactions for Spectral Wave Models (V1.0). Zenodo. https://doi.org/10.5281/zenodo.18174026
If you have questions, feel free to reach out at bzhao.metocean@gmail.com or bz5265@princeton.edu



