Hi,
Here is another GSoC idea from my collaborator at UC Davis, prof.
Sukumar [1]. His student Eric Chin gave me his permission to post the
project here, see the attached project description and his poster with
more details.
The general idea is to implement a module in SymPy to help integrate
homogeneous functions over arbitrary 2D and 3D polytopes (triangles,
quads, polygons, hexahedra, and more complicated 3D elements). The
applications are in extended finite elements which requires an
efficient quadrature of a 3D function over the finite element (say a
hexahedron). Other applications are computer graphics (ridid body
simulations of solids) and to devise cubature rules on arbitrary
polytopes.
See the references in the attached document. They use the Stokes
theorem and Euler theorem to transform the 3D integral (which
otherwise would require a 3D quadrature --- very expensive) to
integral over faces and eventually edges, and so it becomes much
faster. Features needed from SymPy:
* exact handling of integers and rationals
* symbolic representation of homogeneous functions
* symbolic derivatives
* numerical evaluation
At first it sounds technical, but this would be extremely useful even
for my own work. The spirit is roughly in line of this module that I
started and others finished:
https://github.com/sympy/sympy/blob/8800fd2ab1553cd768ad743c44b3ed00c111c368/sympy/integrals/quadrature.py
The ultimate application of this sympy.integrals.quadrature module are
double precision floating point numbers in Fortran, C or C++ programs,
however the reason it's in SymPy is that one can use SymPy to get
guaranteed accuracy to arbitrary precision. In principle
sympy.integrals.quadrature could also be implemented using libraries
like Arb (
https://github.com/fredrik-johansson/arb), but Arb didn't
exist when I wrote quadrature.py, and the code of quadrature.py is
very simple, using regular SymPy, so there is still value in having
it.
The module proposed by this project would require symbolic features
from SymPy as well, such as the symbolic derivatives, as well as the
ability for the user to input the expression to integrate
symbolically.
The above project could also lead to a publication if there is interest.
If there are any interested students, please let me know. I can mentor
as well as help with the proposal.
Ondrej
[1]
http://dilbert.engr.ucdavis.edu/~suku/