FELICITY

Finite ELement Implementation and Computational Interface Tool for You
4.5K Downloads
Updated 6 Nov 2022

View License

See the GitHub Wiki:
http://github.com/walkersw/felicity-finite-element-toolbox/wiki
for tutorials and more.
Also see the new Discussion Forum:
https://groups.google.com/forum/#!forum/felicity-finite-element-toolbox-discuss
for more information.
The following utilities are included:
- 3-D mesh generator for volumes bounded by iso-surfaces.
- Closest point searching on meshes, including surface triangulations in 3-D.
NOTE: fixed error with MATLAB's triangulation class.
- Now includes H(curl) elements! Nedelec's 1st kind finite element is implemented.

Cite As

Shawn Walker (2024). FELICITY (https://www.mathworks.com/matlabcentral/fileexchange/31141-felicity), MATLAB Central File Exchange. Retrieved .

Walker, Shawn W. “FELICITY: A Matlab/C\Mathplus\Mathplus Toolbox for Developing Finite Element Methods and Simulation Modeling.” SIAM Journal on Scientific Computing, vol. 40, no. 2, Society for Industrial & Applied Mathematics (SIAM), Jan. 2018, pp. C234–C257, doi:10.1137/17m1128745.

View more styles
MATLAB Release Compatibility
Created with R2018a
Compatible with R2018a to R2021b
Platform Compatibility
Windows macOS Linux
Acknowledgements

Inspired by: Example MATLAB class wrapper for a C++ class

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
Version Published Release Notes
1.33.0.0

fixed minor bug with some unit tests.

1.32.0.0

fixed minor bug with some unit tests.

1.31.0.0

fixed minor bug with some unit tests.

1.30.0.0

fixed required products.

1.29.0.0

Fixed minor bugs. Implemented the second derivative, hessian operator for functions defined on 1-D, 2-D, and 3-D domains (includes curves and surfaces embedded in 3-D). Added the shape operator. Updated FEL_SaveLoad and FEL_Visualize class.

1.28.0.0

fixed some minor bugs. Added a point searcher for 1-D, 2-D, and 3-D meshes (this includes curves and surfaces embedded in 3-D). Added a quick reference PDF, updated the manual, and Google-Code page.

1.27.0.0

Can mix geometric information from different sub-domains when defining bilinear and linear forms. Added helper classes for saving and loading simulation data, and for running a FE simulation.

1.26.0.0

Implemented a point-region (PR) binary tree, quadtree, and octree for fast point searching and nearest neighbors.

1.25.0.0

Implemented a point-region (PR) binary tree, quadtree, and octree for fast point searching and nearest neighbors.

1.20.0.0

Made the generated MEX file for DoF allocation easier to use. Various bug fixes.

1.19.0.0

Fixed a stupid bug when using Append_Subdomain in the mesh classes. Added tutorials to Google-Code page and made other changes. Updated PDF manual. Made some improvements to the error checking and error messages in the FiniteElementSpace class.

1.18.0.0

Fixed a bug with matrix re-assembly. Added a mesh smoother (optimizer). Added tutorials to the Google-Code page.

1.17.0.0

Added **a lot** of help comments. Now you use MATLAB's help command to get useful information for the user relevant classes. Cleaned up some internal code.

1.16.0.0

Added automatic code generation for interpolating finite element coefficient functions. Added unit tests, demos, and docs for this. Added tutorial on the Google-Code page. Also added a discussion forum for FELICITY (link is on Google-Code page).

1.15.0.0

Fixed a bug related to MATLAB not successfully copying files. Also updated TIGER meshing interface, as well as the meshing tutorials on the Google-Code page.

1.13.0.0

FELICITY now includes a stand-alone 3-D tetrahedral mesh generator for iso-surfaces. See the Google-Code page for more details.

1.12.0.0

Fixed a few minor bugs. Added some methods to the FiniteElementSpace class (useful for sorting through DoF indices on sub-domains, etc.). Added a chapter in the manual discussing the FiniteElementSpace class and some other convenience routines.

1.11.0.0

Major rewrite of code generation for matrix assembly. Can now define bilinear, linear, and ``real'' forms that involve integrating over multiple sub-domains of different topological dimensions within the same script file. Updated documentation.

1.10.0.0

Fixed some minor bugs. Added some helper classes. Updated the documentation.

1.9.0.0

Fixed some minor bugs related to the matrix assembly code generation.

1.8.0.0

I cleaned up the internal code considerably; should make future additions easier. This new version now has a framework for H(div) elements, with lowest order Raviart-Thomas (RT0) implemented.

1.7.0.0

Fixed a few minor issues. Fixed a missing file problem that caused the unit tests to crash on other people's MATLAB installation.

1.6.0.0

Fully integrated Rivara bisection of triangular meshes with the MeshTriangle class. Also included an Eikonal solver. Various other bug fixes.

1.4.0.0

Updated web-site to include a brief online tutorial.

1.3.3.0

Fixed a bug related to computing the local mesh size.

1.3.2.0

minor changes to unit tests.

1.3.1.0

Added ability to not use symbolic computing toolbox in "ReferenceFiniteElement"; this is useful when running *pre-generated* code on a machine with the toolbox, then copying stuff to a machine without the toolbox. Other stuff.

1.3.0.0

I replaced the .fml input file (for matrix assembly) by an easier to use MATLAB script.
Added H(div) functionality on 2-D surfaces embedded in 3-D. Enabled matrix-valued basis and coefficient functions. Small interface improvements. Add initial functionality for assembling matrices over subsets of elements. Restructured unit tests.
Added H(div) functionality on 2-D surfaces embedded in 3-D. Enabled matrix-valued basis and coefficient functions. Small interface improvements. Add initial functionality for assembling matrices over subsets of elements. Restructured unit tests.

1.2.7.0

Fixed minor bug in unit test with symbolic functions. Fixed another bug in unit test with newer version of Matlab.

1.2.6.0

Updated http links.
update links.
updated google-group discussion page.
Added functionality for symbolic constants matrix assembly code and interpolation, i.e. these constants are specified at runtime by being provided by the user when calling the MEX file. Cleaned up the interface to the TIGER mesh generator.

1.2.5.0

Added functionality to make DoF allocation code more automatic. Cleaned up comments and two demos (for the FELICITY paper).

1.2.4.0

Added demo for local finite element matrices. Fixed bug with text replacement in code generation (bug happened when geometry is represented by an element with 10 or more basis functions).

1.2.3.0

Fixed a minor bug with one of the unit tests.

1.2.2.0

Added GeoElementSpace for higher order meshes; added three more demos (two are on the wiki). Updated the manual, quick-ref guide, and wiki.

1.2.1.0

Updated FEL_SaveLoad class. Changed ReferenceFiniteElement and FiniteElementSpace, i.e. now you specify the number of components in FiniteElementSpace. Changed the syntax of code generation (it is better now!). Updated the manual and wiki.

1.2.0.0

Modified mesh class to use MATLAB's triangulation class. Automated point searches on meshes. Changed m-file format for storing/defining a finite element. Implemented H(curl) in 2-D and 3-D! Updated the manual. See readme for more info.

1.1.5.0

Modified the C++ matrix assembly to be more efficient when lots of sub-matrices are present; this only modifies the internals of FELICITY. This is an initial step to implementing OpenMP for matrix assembly.

1.1.3.0

Updated compile script for generating MEX files to assemble forms/matrices. Completed the move to GitHub's wiki for the tutorials. Fixed a minor bug with the symbolic toolbox for MATLAB r2016a.

1.1.2.0

Added routine for making equilateral triangle meshes in the plane. Moved Google-Code page to GitHub. Added error detection code when given cell indices are out of range (for matrix assembly and interpolation MEX files). Other minor changes.

1.1.1.0

Fixed some minor bugs that stopped the unit tests.

1.1.0.0

Moved software version number format to "standard" format; we've made it to version 1.1.0! Added test routine for quadrature rules. Fixed tolerance issue with point searching in meshes. See VERSION_HISTORY.txt.
just changed how my web-site is referenced.

1.0.953.0

Added unit test for solving the heat equation on a surface. Updated image segmentation demo. Fixed bug when matching variable text names (this was in the code generation part of FELICITY). Made some other minor functionality changes.

1.0.0.0