Regarding the waves on the water, all I have is an old simulation of a wave in 2 dimensions. It is not a proper hydrodynamics simulation, just the wave equation in 2D. I don't know if this is what you are looking for. Anyway, the code is attached.
You will find the following components:
One script for generating the initial data. At the moment it generates a Gaussian, with center and width that are user-specified. Since the grid is 128^2, I generated the initial data with:
./Initial_Data.py 64 0.07
surface_waves.cpp: The actual simulation. You can simply type "make" to compile it. The file Constant.cpp contains parameters like grid size, surface tension, lattice spacing, time step, damping, number of frames to generate and number of time steps between frames.
Running the resulting executable will produce a bunch of "frame###.txt" files following the evolution of the wave.
Finally, you can use POV-RAY to render each frame, with Plot_Frame.py, for example:
/Plot_Frame.py --in_file=frame010.txt --pov_file=frame010.pov --png_file=frame010.png
I also included the txt and png files for the initial data and one of the frames.