CMSC 491/691: Computer Animation

Assignment 6
Smoothed Particle Hydrodynamics
Due May 18, 2016 at 1:00 PM

Before you start

You will be doing your work this semester in a class git repository. Before you get started on any of the assignments, you should fetch yourself a copy of your personal repository following these directions. Your personal class respoitory on the UMBC GL/Linux systems is /afs/umbc.edu/users/a/d/adamb/pub/491/your-user-name.git

The Assignment

For this assignment, you will debug the input and code for an SPH simulator. SPH is particularly sensitive to the choice of input parameters. I have pushed (what I believe) is a working implementation of Mueller and colleagues. There are a few variations on the forces in the literature (see Adams and colleagues and this survey). Spend a few (about 4) hours trying to get the simulator to produce reasonable output, describe what you have tried in your readme file (you could even include the command lines you run). If you successfully generate a reasonable output, you will get 50 points of extra credit.

Feel free to use the internet, just be sure to mention everything in your readme.

The programs

setup produces an input file. Currently it is just a column of fluid produced by sampling a regular grid. Jittering the particles may help, or perhaps using a different sampling strategy (e.g. the body centered cubic lattice). The only parameter is the name of the input file that should be generated (e.g. input.part).

viewer is a simple opengl viewer program. Pushing left/right single steps through the frames. If a frame is not yet loaded the program will attempt to load the particle file (particle files are never re-loaded however). I run it like so:
./viewer output.%05d.part
sph is the actual sph program it takes a number of parameters.
./sph [input file] [target density] [particle mass] [pressure stiffness (k)] [viscosity coefficient (mu)] [smoothing kernel radius (h)] [time step (dt)] [total length of the simulation] [output file format]
e.g.
./sph input.part 1000.0 .004 1.0 0.1 .05 0.03333 1.0 output.%05d.part

Extra Credit

50 points of extra credit if you can get a good set of parameters, input file, or find a bug.

What to turn in

Turn in this assignment electronically by pushing your source code to your class git repository by 1:00 AM on the day of the deadline. Do your development in the proj1 directory so we can find it. Be sure the Makefile will build your project when we run 'make' (or edit it so it will). Also include a README.txt file telling us about your assignment. Do not forget to tell us what (if any) help did you receive from books, web sites or people other than the instructor and TA.

Check in along the way with useful checkin messages. We will be looking at your development process, so a complete and perfectly working ray tracer submitted in a single checkin one minute before the deadline will NOT get full credit. Do be sure to check in all of your source code, Makefile, README, and updated .gitignore file, but no build files, log files, generated images, zip files, libraries, or other non-code content.

To make sure you have the submission process working, you must do at least one commit and push by the friday before the deadline.