Fluid Simulation Real Ocean waves
You can generate a wave on a shore using a combination of a Blender fluid physics simulation and moving geometry. The moving geometry will displace water like in a wave pool. An inclined shore will cause the waves to rise and crest. The fluid particle system will simulate a foam on the surface.





Step by step instructions (Blender 2.76):


Add a cube and size it. This will be the domain for the fluid simulation. In the physics tab, set this up as a fluid domain. To get the floating foam on the water, in the particles panel, select 5000 particles and set generate to 1. Specify the location for the fluid domain cache. This location is needed later in step 4, remember it.


 




Add a cylinder, scale it, rotate it, and move the origin away from the center. This cylinder will be animated to rotate and cause the water displacement. In the physics tab, set this up as a fluid obstacle. 







Add a object which will be used to visualize the foam. A cube does this job nicely. Name this object 'fluid-particle-for-rendering'. Scale this object to the size desired for the foam particles. In general this will be very small. In this example a value of 0.01
Add a small cube to hold the physics for foam particle. Put this object off screen. In the physics tab, set this object as a fluid particle. Select floating. In the particles tab, select the 'FluidParticles'. Set the path for the cache to the same path used for the fluid domain in step 1. In the rendering panel, set the rendering to object and select 'fluid-particle-for-rendering' as the object.







Add a cube a scale to become a plane for the beach. Rotate the beach to have an incline like a shoreline. In the physics tab, select Fluid an in the Fluid panel, set the Type to Obstacle.







Add an object to the scene to initialize the water. This can be done by adding a large cube, then using Boolean operations to define a volume inside the fluid domain. In the phyics tab, select Fluid and set the Type to Fluid. Then select Volume for 'Volume Initialization'.







Select the cylinder and make sure the timeline is at 0. Set an animation keyframe. At a later time, use 100 frames for this demo, change the rotation  about the cylinder's axis to a new value like 360 degrees. Set an animation keyframe. Open the graph editor, and set the extrapolation type to linear (use the menu at the bottom of the panel: Channel -> Extrapolation Mode -> Linear Extrapolation). This will keep the cylinder rotating forever.





The fluid simulation requires baking to generate the meshes. Select the object used for the fluid domain. Hit 'Bake'. This may take several minutes to several hours depending on the Resolution of the fluid domain and the number of trace particles.





Now the mesh is ready, and renderings or animations can be generated. The animation may require some tweaking to get the desired effect. The fluid domain panel has several settings which can be experimented with. Also, the waves may take a few rotations of the cylinder to behave consistently.






Download the demo blend here: