<- 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 ->