Hi Thomas
On 13/09/2021 18:11, Thomas Sharifi wrote:
Hello,
I am using SfePy for a project in aerothermal coupling. Congratulations for the amazing job done on SfePy and thank you for making it open source.
I have a question regarding high order. You have a parameter integral, integrals = { 'i' : 2, }
That we can set to the order we want. If I am correct, it represents the order of the polynomial shape functions and is used for the interpolation of the unknown variable in an element.
Actually, this is the order of the numerical quadrature of a term that uses the integral. The approximation order of a FE variable is given in the "fields" dict, see [1].
[1] https://sfepy.org/doc-devel/users_guide.html#fields
I can't find anything about the shape functions, nor in the code, nor in the documentation. Could you help me and point out where it is coded ?
The FE fields are in sfepy.discrete.fem.fields_* (the actual polynomial spaces in sfepy.discrete.fem.poly_spaces). The default basis are the usual Lagrange polynomials, other bases are under-documented (and some features may be missing).
Also, how high could SfePy support to go in order ?
There is a practical limit from historical reasons, I would say orders up to 3 or 4 in 3D are usable and do not run out of memory too fast. See [2] for extensive performance and memory requirements analysis and a new term implementation improving this limitation.
[2] https://doi.org/10.1016/j.advengsoft.2021.103033 (preprint: https://arxiv.org/abs/2107.04121)
I tried to put different values to this parameter but it didn't seem to affect my solution in temperature.
That means that your quadrature order is sufficient ;) Note that by default sfepy throws the higher order DOFs away when saving the solution to VTK. There is a rudimentary (working but slow) implementation of an adaptive linearization, see the example [3], which also demonstrates how to use various polynomial bases.
[3] https://sfepy.org/doc-devel/examples/diffusion-sinbc.html#diffusion-sinbc
r.