<- previous index next ->
The goal of this lecture is to show the long development
cycle of a unique numerical solution of a partial differential
equation in the domain of an arbitrary 3D closed polyhedra with
Dirchilet boundary conditions at the vertices.
The development included using several file formats to define
the closed polyhedra and the developing code to be sure that
the polyhedra was really closed. There may be one or more
polyhedra "hole" completely inside the outer closed polyhedra.
Just determining the "refinement", the location of internal
points where the solution is to be computed was needed.
Previous solutions have used FEM, finite element method and
various forms of discretization. Basically building a system
of linear equations containing the internal points and then
solving the system of linear equations to get the solution
at each point. The unique method that came about during this
development is to solve for each internal point, DOF, degree
of freedom serially, independent of any other internal point.
This also makes the solution easily parallizable to any
number of processores.
The intuition came from studying one internal point that
seemed to be surrounded by a randomly scattered bunch of
vertices. Oh! If I could compute the derivatives in the
PDE at that point based on boundary vertices with known
Dirchilet values, the only unknown is the solution at
that internal point. Yes I can. My object of interest
was a Medieval Spiked Flail, the surface was a bunch
of points created out of tetrahedrons.
Now, to the formal development, specifically for three
dimensions, although it does generalize. Also limited
to fourth order derivatives, although that could be
increased.
The series of Makefile runs
sphere_div.c data generator
spike.dat polyhedra
format changer .dat to .inp UCD
spike.inp polyhedra UCD format
datread.h .dat format read 3D figure,
datread.c into working arrays
test_datread.c test read and closed polyhedra
test_datread_c.out spike.dat OK
pde_read_ucd.h .inp format read 3D figure,
pde_read_ucd.c etc., into working arrays
test_pde_read_ucd.c read and print data
test_pde_read_spike_c.out
test_pde_inside3_ucd.c point in polyhedra
test_pde_inside3_ucd_c.out point in polyhedra tested
nuderiv3dg.h derivative from random points
nuderiv3dg.c up to 4th order in 3 variables
test_nuderiv3dg.c test every call
test_nuderiv3dg_c.out all OK
lsfit.h multidimensional polynomial fit,
lsfit.c fit from random points
test_lsfit7.c sample test
test_lsfit7_c.out sample output
simeq.h solve simultameous equations
simeq.c solve simultameous equations
test_simeq.c simple test
test_simeq_c.out OK
point_in_poly.h determine if a point
point_in_poly.c is in polygon or polyhedra
test_point_in_poly.c test
test_point_in_poly_c.out results
pde_spike.c solve 4th order PDE on spike.inp
pde_spike_c.out test results
<- previous index next ->
-
CMSC 455 home page
-
Syllabus - class dates and subjects, homework dates, reading assignments
-
Homework assignments - the details
-
Projects -
-
Partial Lecture Notes, one per WEB page
-
Partial Lecture Notes, one big page for printing
-
Downloadable samples, source and executables
-
Some brief notes on Matlab
-
Some brief notes on Python
-
Some brief notes on Fortran 95
-
Some brief notes on Ada 95
-
An Ada math library (gnatmath95)
-
Finite difference approximations for derivatives
-
MATLAB examples, some ODE, some PDE
-
parallel threads examples
-
Reference pages on Taylor series, identities,
coordinate systems, differential operators
-
selected news related to numerical computation