<commit_before># sp.fem

In this repository you find the working draft of a flexible, fully-interpreted and yet well-performing finite element code written in SciPy/Python.

The code is initially (c) <NAME> but the license will change in the future. Triangle is (c) <NAME>.

## Acknowledgements

The author and the code of sp.fem has strongly been influenced by the finite element knowledge shared by the following fellow scientists

* [<NAME>](https://math.aalto.fi/en/current/publications/articles/?a%5b%5d=antti.hannukainen)
* [<NAME>](https://scholar.google.fi/citations?user=iKVJMwIAAAAJ)
* [<NAME>](http://arxiv.org/find/math/1/au:+Huhtala_A/0/1/0/all/0/1)

## Dependencies

* Python 2.7
* Numpy
* Scipy
* Matplotlib
* Triangle (recommended; for 2D meshing)
* Mayavi (optional; for 3D mesh plots)

## Intallation: Linux

1. Install all dependencies (package manager of choice)
2. Compile Triangle binary to ./fem/triangle/triangle (https://www.cs.cmu.edu/~quake/triangle.html)

## Installation: Windows 

1. Install Anaconda
3. triangle.exe is already found under ./fem/triangle/

## Documentation

Currently doxygen must be run by the user. Use Doxyfile that is included in the repository.

## TODO list

* Implement ElementHdiv in 3D (2D exists)
* Implement ElementHcurl
* Investigate: Orientation of global facets/edges for better flexibility. Currently based on mesh index orders.
* Composition of elements for multiple scalar equations: vectorial, sum of elements.
* Adding more test cases, documentation, guards and speed tests.
* Adaptive 2D triangle meshing.
* Interpolation support in facet assembly.
* Assembly on subsets of elements
* Normal vectors in 3D facet assembly (2D works)
* Adding optimization flags to AssemblyElement (e.g. precompute global du,dv to save time in elements with large local stiffness matrix, or caching in Mapping and ElementH1 etc.)
* Tetgen (3D tetrahedral meshing) support and adaptive meshing.
* Loading of various mesh formats (GMSH, Comsol) in platform independent way.
* Plotting cross sections in MeshTet.<commit_msg>Fixed readme typo.<commit_after># sp.fem

In this repository you find the working draft of a flexible, fully-interpreted and yet well-performing finite element code written in SciPy/Python.

The code is initially (c) <NAME> but the license will change in the future. Triangle is (c) <NAME>.

## Acknowledgements

The author and the code of sp.fem has strongly been influenced by the finite element knowledge shared by the following fellow scientists

* [<NAME>](https://math.aalto.fi/en/current/publications/articles/?a%5b%5d=antti.hannukainen)
* [<NAME>](https://scholar.google.fi/citations?user=iKVJMwIAAAAJ)
* [<NAME>](http://arxiv.org/find/math/1/au:+Huhtala_A/0/1/0/all/0/1)

## Dependencies

* Python 2.7
* Numpy
* Scipy
* Matplotlib
* Triangle (recommended; for 2D meshing)
* Mayavi (optional; for 3D mesh plots)

## Intallation: Linux

1. Install all dependencies (package manager of choice)
2. Compile Triangle binary to ./fem/triangle/triangle (https://www.cs.cmu.edu/~quake/triangle.html)

## Installation: Windows 

1. Install Anaconda
2. triangle.exe is already found under ./fem/triangle/

## Documentation

Currently doxygen must be run by the user. Use Doxyfile that is included in the repository.

## TODO list

* Implement ElementHdiv in 3D (2D exists)
* Implement ElementHcurl
* Investigate: Orientation of global facets/edges for better flexibility. Currently based on mesh index orders.
* Composition of elements for multiple scalar equations: vectorial, sum of elements.
* Adding more test cases, documentation, guards and speed tests.
* Adaptive 2D triangle meshing.
* Interpolation support in facet assembly.
* Assembly on subsets of elements
* Normal vectors in 3D facet assembly (2D works)
* Adding optimization flags to AssemblyElement (e.g. precompute global du,dv to save time in elements with large local stiffness matrix, or caching in Mapping and ElementH1 etc.)
* Tetgen (3D tetrahedral meshing) support and adaptive meshing.
* Loading of various mesh formats (GMSH, Comsol) in platform independent way.
* Plotting cross sections in MeshTet.
{'fraction_non_alphanumeric': 0.08761766835626358, 'fraction_numerical': 0.011103065411537534, 'mean_word_length': 4.6923076923076925, 'pattern_counts': {'":': 0, '<': 13, '<?xml version=': 0, '>': 13, 'https://': 6, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '434888', 'n_tokens_mistral': 1286, 'n_tokens_neox': 1207, 'n_words': 493}