%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
I've discovered that the piecewise coefficients method I'm using is wrong. To get correct results use constant coefficients. This will be corrected in the next version. This will make the release for the next version a bit more delayed than expected. I'm also writing a paper on how FEM works that will be included in the toolbox (as a tutorial).
Version 3.0 will contain:
* 3D FEM
* improved function documentations
* introduction to applied linear Galerkin (document)
* correction of the piecewise constant coefficients
* correction on how to enter Robin condition in the 1D case
* improved syntax
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
This is a toolbox for computing ODEs or PDEs in BVPs using FEM in 1D, 2D (and 3D, yet to come).
* FEM1
this is the main routine for solving ODE BVPs using any combination of Dirichlet, Neumann or Robin conditions.
* GENMAT1
called by FEM1 and is the core of the program. It generates the matrices used for solving the linear equation system for the ODE. Uses alytical results of the integration of basis functions (for sake of efficiency).
* REFINE1
with this routine you can refine the mesh over certain critical grid points. The the gridpoints will become nonuniformly linearly spaced.
* TEST1
this is a test for the 1D case of FEM. Look through this example carefully in order to fully understand how FEM1 works.
* PLOTGRID2
plot mesh/triangulation in 2D and put a number in each corresponding element (triangle).
* QUADSPACE
generates quadratically spaced vectors. That is, the spaces are linearly decreasing/increasing.
* FEM2
this is the main routine for solving PDE BVPs using any combination of Dirichlet, Neumann or Robin conditions.
* GENMAT2
called by FEM2 and is the core of the program. It generates the matrices used for solving the linear equation system for the PDE.
* TEST2
test for the 2D case of FEM. Test this for better learning how to use FEM2 and other utilities.
Both FEM1 and FEM2 uses the sparse class in order to become more efficient (since the matrices generated are in general tridiagonal).
These routines may be useful for solving electrostatic problems with strange geometries and with spatially changing dielectric constants (or similar).
Of course the elliptical problem is universal and can be used for a lot of other applications such as the classical heat equation, etc...
Unfortunately, the FEM solvers does not support parabolic nor hyperbolic problems "yet".
the FEM1 and FEM2 routines should be fairly user friendly, and not much knowledge about finite elements ought to be required to operate them.
Remark: in the FEM1 routine you have to enter the neumann/(robin)-condition as
U'(a)+gamma*U(a)=R
rather than
alpha*U'(a)+gamma*U(a)=R
and I will correct this minor inconsistency for future versions.
Have fun!
More toolboxes and assorted m-files can be found at:
http://www.etek.chalmers.se/~e8rasmus/eng/matlab_programs.html |