Meeting: 11:301pm TR 
3.0 Credits, Spring
2013 
Instructor: Dr. Orion
Lawlor 

Course
Website: Homeworks, Lecture Notes, Code Samples 
ADA Compliance: I will work with the Office of Disability Services (208 Whitaker Bldg., 4745655) to provide reasonable accommodation to students with disabilities. 
Software to simulate physical phenomena for use in interactive visualization, such as particle systems, NavierStokes fluid dynamics, and finite element solid mechanics. Includes Lagrangian and Eulerian meshes, stability, and discretization order. Our focus is high performance qualitatively correct simulations, rather than highprecision solutions. Prerequisites: CS 381 and PHYS 212.
By the end of the course, you will be able to build and understand simple simulators for a variety of physical phenomena, including moving fluids and solids. Along the way, you will learn how to use both moving Lagrangian and nonmoving Eulerian meshes, how to discretize partial differential equations in space and time, how to keep your simulations from "blowing up" (computational stability) and how to apply that knowledge in a variety of domains. Simple graphics programming including GLSL shaders (from CS 381), basic Newtonian physics (from Physics 212), and good familiarity with calculus are all required. Course meetings are mostly lecture, discussion, and some lab work; you'll do the course homeworks and projects on your own.
Students completing this course will be able to:
Choose relevant physical fields to simulate a given phenomenon.
Discretize a partial differential equation for simulation on a 2D grid.
Explain the difference between a structured 2D grid and an unstructured finite element mesh.
Academic Help: Google, Rasmuson Library, Academic Advising Center (509 Gruening, 4746396), Math Lab (Chapman Room 305), English Writing Center (801 Gruening Bldg, 4745314).
You'll get better grades by attending class, diligently doing the homework, and understanding the material than by cramming before the exam. Your overall grade comes from:
HW: Homeworks and machine problems, to be distributed through the semester.
PROJ: two substantial graphics projects, together with a short presentation of your results. Example projects: read a paper and implement a similar technique, implement a known physics simulation, apply an existing simulator or method to a new domain, or improve the performance of a slow simulator.
MT: Midterm Exam.
FINAL: Final Exam (comprehensive).
The final score is then calculated as:
TOTAL = 20% HW + 30% PROJ + 25% MT + 25% FINAL
This percentage score is transformed into a plusminus letter grade via these cutoffs: A >= 93%; A 90%; B+ 87%; B 83%; B 80%; C+ 77%; C 70%; D+ 67%; D 63%; D 60%; F. The grades “C”, “F+”, and “F” will not be given. “A+” is reserved for truly extraordinary work.
Individual assignments and tests may (rarely) be curved. Homeworks are normally due at midnight on the day they are due. Late homeworks will receive no credit. At my discretion, I may allow late assignments without penalty when due to circumstances beyond your control. Everything you turn in must be your own workviolations of the Student Code of Conduct will result in a minimum penalty equal to THAT ENTIRE SECTION OF YOUR GRADE (e.g., one plagiarized homework question will negate an otherwise perfect grade on all homeworks). However, even substantial reuse of other people's work is fine (and not plagiarism) iff it is clearly cited; you'll be graded on what you've added to others' work. Group projects (NOT homeworks) are acceptable if you clearly label who did what work; but I do expect a twoperson group project to represent twice as much work as a oneperson project. Department policy does not allow tests to be taken early; but in extraordinary circumstances by prior arrangement may be taken late.
Last day to drop: Friday, February 1. Project 1 presentations: Tuesday, March 5. Midterm exam: Thursday, March 7. Spring break: March 917. Last day to withdraw: March 22. Project 2 presentations and last day of class: Thursday, May 2. Final exam: 10:15am on Tuesday, May 7.
Before Spring Break:
Tools & Introduction (1 week)
OpenGL, WebGL, and shaders
Reinventing the wheel, JavaScript, and WebGL programming interfaces
Particles (2 weeks)
Basic OpenGL. Framebuffer and vertex buffer objects, programmable shading via GLSL, point sprites.
From Newton's Laws to computer code: discretizing partial differential equations, time integration, discretization error, stability
Forces: gravity, friction, user interface imposed forces
Boundary conditions: bounding particles with planes, spheres, cylinders.
Penalty forces & position constraint.
FEM & unstructured geometry (3 weeks)
OpenGL vertex & element buffer objects
Mesh and 3D model formats
Springs, chains, rope, and cloth
Volumetric tetrahedra
Stress/strain, elastic & plastic behavior
Failure & fracture simulations
Project 1 Presentations: Tuesday, March 5
Midterm exam: Thursday, March 7
After Spring Break:
2D Grids (4 weeks)
OpenGL 2D texturing review, image file formats
ShallowWater Wave Equation, Eulerian (static) versus Lagrangian (moving) meshes
Turk/Turing ReactionDiffusion Equations
Continuous to discrete transformation, Courant stability limit (the speed of sound)
Boundary condition images / geometry, warped grids
2D fluid simulation: NavierStokes, Stam's Stable Fluids
3D Grids (3 weeks)
OpenGL 3D texturing review
3D fluid simulation
3D light transport simulation
Speeding up slow codes: smaller storage types, optimizing GPU arithmetic, multigrid
Project 2 Presentations: Thursday, May 2
Final Exam: 10:15 a.m.  12:15 p.m., Friday, May 10