Possible Subprojects:
Everyone is required to participate in the large project somehow.
One way to do this is to pick up one or more subprojects and work on
them. This page lists a number of subprojects that may be
appropriate. (The word "may" here means that they also may not
be appropriate, so before starting work on one of these in a serious way,
talk to me about it.) I'll indicate the status of each project as
time goes on.
-
Port Olin Shiver's list library to Gambit-C and use the routines in it
rather than the ad-hoc routines in utilities.scm. See http://srfi.schemers.org/srfi-1/srfi-1.html
(Note: There is a link to a reference implementation at the bottom of this
page.)
-
Write routines to test the various routines in linear-element-code.scm
to integrate functions on triangles, edges, etc., and construct the linear
operator for the Neumann problem.
-
Status: Taken by Mr. Fan.
-
Reorder the vertices in a triangulation to approximately follow a space-filling
curve (change Triangulation-add-indices in geometry.scm); measure
the performance of the matrix multiplication code apply-nonzero-coefficients
in
linear-elements.scm to see if this change increases the speed
of matrix multiplication by maintaining better cache coherency. Test
it on several machines with different cache hierarchies and memory bandwidth
if you can.
-
Status: Taken by Mr. Gower.
-
Write code for the conjugate-gradient method for solving linear systems.
(I shall cover this method in class.)
-
Status: Taken by Mr. Sun.
-
Write the top-level code of a multigrid linear solver using the grid
refinement code already in geometry-code.scm. (I shall cover
this method in class.)
-
Status: Taken by Ms. Park.
-
Implement projectors based on local quasi-interpolants for the multigrid
code. (I shall cover this method in class.)
-
Status: Taken by Mr. Martynov.
-
Implement boundary triangles with one curved side.
-
Status: Taken by Ms. Joo.
-
Implement faster code for triangulating a polygon that does not give long,
skinny triangles.
-
Implement higher-order (quadratic, cubic, etc.) elements. This will
be a lot of work; two people can work together on this project if they
wish.
-
Write time-stepping code for parabolic PDE's. At least do backward
Euler and Crank-Nicholson (spelling?), separately and with C-N following
a fixed number of backward Euler steps, together with linear prediction.