Original milamin.org banner: the 1e6/1 road-sign logo on a finite element mesh MILAMINFast Finite Element Solver in MATLAB

Downloads

Getting MILAMIN and its companions from the original milamin.org: the sources and paper, the MUTILS high-performance utilities, and the external packages the solver builds on.

Getting MILAMIN

You can download the original source and the paper from the G3 website. Updated sources are available from https://sourceforge.net/projects/milamin/files/.

MUTILS – MILAMIN utilities

MUTILS is a package that provides a set of utilities we find useful for high-resolution modeling. The tools are written in C and made available in MATLAB through the MEX interface, hence installation requires a working MEX compiler. The code is optimized for modern multi-core CPUs. Many functions are parallelized using OpenMP. Currently, the package includes the following functionality:

The package can be downloaded here.

External packages

To achieve best performance MILAMIN uses a number of external packages that need to be downloaded and compiled. Installation of these packages requires a working MEX compiler. Automatic download and installation scripts are distributed as part of the MUTILS package.

Triangle

A 2D triangular mesh generator by Jonathan Shewchuk. The initial version of MILAMIN used a modified triangle executable with added binary input-output, which speeds up processing of large models considerably. A Windows executable was hosted on the site (no longer available). For UNIX/Linux computers the sources need to be patched and compiled by the user. Detailed instructions are provided in the MILAMIN_1 package.

The new version of MILAMIN uses a MEX interface to triangle that bypasses disk IO altogether. It can be obtained with the MUTILS package.

SuiteSparse and Metis

MILAMIN uses some MEX files provided by Tim Davis in the SuiteSparse package: metis (a MATLAB interface to the METIS graph partitioning library), cs_l(t)solve (forward/backward substitution), sparse2 (sparse matrix assembly routine that supports integer indices, faster than MATLAB’s sparse, but using a larger workspace). On older MATLAB versions lchol is used. These were installed via suitesparse_install.zip, an install script hosted on the site (no longer available).

Documentation

You can download the original MILAMIN manuscript from the G3 website, where the optimized version of FEM implementation is documented. The paper also demonstrates a standard implementation of FEM to provide an educational insight into subjects such as implementation of the numerical method, efficient use of the computer architecture and computational libraries, code structuring, proper data layout, and solution techniques.