Interactive Computational Simulation
CIS 5930

 

Fall 2002

499 Dirac Science Library
Dr. David C. Banks

 

 

Prerequisites: COP 3330 (Object-Oriented Programming), CAP 4730 (Computer Graphics), or consent of instructor. Recommended: MAP 2302 (Differential Equations),

Textbook: Warnecke, The Inventor Mentor ($45).

Academic honesty
Disabilities
Homework
Grading
Related Courses

 

Computers can simulate natural phenomena in a variety of disciplines. This course introduces computing tools and techniques for students in disciplines such as physics, biology, chemistry, meteorology, geology, mathematics, or statistics.

Students will develop object-oriented software to simulate physical processes in an interactive 3D graphical environment. The homework includes weekly programming assignments, and a final programming project that students can customize to match their interests.


Discrete simulation of 3D point-like bodies (multipoles).

Parametric 3D surface with user-controlled input parameters.

Implicit 3D surface with user-controlled input parameters.

3D vector field with interactive probe.
 

Frequently Asked Questions (FAQs) about Interactive Computational Simulation

Q: What is a "Computational Simulation"?
A: It's software that models some process, typically from an area of science or engineering. Examples of continuous phenomena include simulation of electromagnetism, heat transfer, fluid dynamics, climate; examples of discrete phenomena include simulation of atoms, traffic, network systems.

Q: What's the "Interactive" part?
A: Two things: (1) seeing the simulation update quickly, e.g., every tenth of a second; (2) influencing the computation through an input device (such as a mouse or keyboard). The first issue is the concern of real-time systems. The second is sometimes called interactive steering. Currently many scientific computations are performed in "batch mode" -- you start one up on a supercomputer, let it run overnight, and then examine the data tomorrow. If there was a bug in the code or in the parameters, you make a change and repeat the process. Software designed according to this paradigm is difficult to retro-fit with a visual interface for browsing data or changing parameters. This course starts from a different premise: you run a lightweight simulation on your desktop computer and you can experiment with it as it runs. This combination of simulation and interaction is sometimes called a "problem solving environment".

Q: Why is the course being offered?
A: To equip students in the sciences to experiment with physical situations using software that they create themselves. A computer doesn't replace nature, but a computational simulation can give insight into physical processes.
Research in the sciences increasingly uses computational simulation for experimentation. The next generation of scientists and engineers will use simulation systems as their laboratories. Those who can create their own systems will have a competitive advantage over those who use systems created by others.

Q: Why hasn't the course been offered before?
A: The technology simply wasn't available. With a 2 gigahertz processor and an nVidia GeForce4 card, a desktop computer is now capable of supporting an interactive 3D physical simulation. A similar capability wasn't even available ten years ago (1992); five years ago (1997) it would have cost at least $500,000. Now is a great time to be a student learning how to create an interactive computational simulation.

Q: Is all science computer science?
A: So says the New York Times article by George Johnson (March 25, 2001). He really meant "all science is computational science."

Q: Why does the course require object-oriented programming?
A: The assignments use Open Inventor, an object-oriented graphics library in C++.

Q: What if I've never written C++ code before, but I've programmed using another language?
A: Then you will need to learn some C++ as we go. The programming assignments require you to modify working code, not create code from scratch. The course also requires you to create a Web page for each assignment. If you have never created a Web page, you will need to learn some HTML as we go. The course will include some instruction in C++ programming and in creation of Web content.

Q: Why not use the FORTRAN programming language?
A: C++ is an important language to know, with widespread use among professional programmers. Many computational libraries have been developed both in FORTRAN and in C++, but there is weak support for FORTRAN-based graphics libraries, which are essential for interaction.

Q: Why does the course require Computer Graphics?
A: Because of the interactive part. To see a three-dimensional simulation as it runs, you need to display it graphically on the computer screen.

Q: Why does the course use Linux?
A: Because of free software tools under Linux that support interaction. Such as Open Inventor (based on OpenGL).

Q: Why does the course use Open Inventor?
A: It's a free, open-source 3D graphics library, written in C++, that supports interaction.

Q: Why does the course recommend Differential Equations?
A: Because they describe so many continuous physical processes. One of the great successes in scientific computing has been the development of algorithms to solve complicated differential equations efficiently and accurately. The programming assignments will make use of discrete approximations to differential equations.

Q: Why not use Maple or Matlab or some other existing software package to do the simulations? Why write our own code?
A: When you write your own interactive computational simulation, you have total control over its workings. Plus, you have a competitive advantage over people who don't know how to create one.

Q: Is this a course about Fourier transforms and elliptic solvers and stability and pre-conditioning and convergence?
A: No. These topics are covered in courses on numerical algorithms such as MAP 4341, MAD 5420, MAD 5427, MAD 5738, MAD 5739, and ECH 5842.

Q: How much programming will I have to do?
A: The target is 6 hours per week for homework, including programming.