CMP 161 -- Programming Assignment 2
Due date:
Midnight, THU, 2/12/2009
Objectives:
Find 1st order critical points of a 3D vector field.
To Do:
-
Write a program to find, classify, and visualize critical points
in 3D vector fields.
To simplify things a bit,
assume that the data is in a regularly gridded domain,
and we are just interested in 1st order critical points.
-
Two papers may be useful:
A tool for visualizing the topology of three-dimensional vector fields,
Strategy for Seeding 3D Streamlines, and
finding 2D critical points.
-
A critical point is where the velocity is zero.
That is, V(P) = 0 at location P = (x,y,z).
-
To classify a critical point, we look at the nearby velocities.
That is, we find the Jacobian of V at P: J(V(P)).
For 3D flows, J() is a 3x3 matrix.
If the determinant is not zero, then we have a 1st order critical point.
If it's zero, then it's a higher order critical point and outside the
scope of this assignment.
-
Now that we have found a 1st order critical point,
we need to determine its type
e.g. is it a sink, attracting spiral saddle, repelling spiral saddle, etc.
This is done by finding the eigenvalues of J.
-
Once each critical point is found and classified,
you can visualize them by drawing each type of critical point
with a uniquely shaped and colored glyph.
-
This program should be fairly straight-forward to implement.
The hardest part is probably understanding the math,
which I'll try to explain in class.
-
To help with your programming assignment, break it into 2 stages.
The first stage, worth 60% of the points is to identify and render
the candidate cells that can contain critical points.
The second stage is to actually find and classify the critical points
within each candidate cell.
-
Here are links and file reader to the
synthetic data with 1 critical point in each file,
and simulation data with multiple critical points per file.
The data is in ascii using the
vtk file format
-
For rendering, you can modify what you have from prog0, or you can
use off the shelf software like
paraview
Items To Submit:
-
Documentation (code and user guide)
and sample output/images in the form of a self-contained html page.
-
Code, make/project files, and related materials for successful
compile and run.
-
Do NOT include the data files in your submission.
Grading:
This program nominally accounts for 5% of your final grade. We must
be able to compile/test your code. Make sure that code and accompanying
make/project files, etc. must be tested for successful compilation at least on
the PCs in the lab (or your laptop).
Also be sure to
include a README in your submission as to which platform to use.
Programs turned in at least a full day early will earn 1% bonus credit. Late
programs will be charged 1% late points. In addition, late programs will not
be accepted 24 hours past due date. Late programs and reports will not be
accepted for the final project. The bonus credits may be accumulated up to a
total of 50% toward program and final project credits. Programs are graded 80%
for functionality and correctness and 20% for style, readability,
documentation/writeup, and efficiency. Additional points may also be earned
for extra features.
Submission:
Create and submit a subdirectory called "prog2". It should contain
all the files you have to make your program compile/run. Include the other
items to be submitted in this directory as well. Submission must be done using
the submit utility from CATS.
-
To submit use: submit cmps161-ap.w09 prog2 files
Last modified
Tuesday, 22-Jan-2019 09:42:16 PST.