Thoughts on structural elements (shells, beams, etc.)
Dear all,
Thank you so much for a very interesting library!
I was walking through the code and wonder whether you think it would be reasonably easy to implement a structural element (e.g. this one), such as a beam or a shell, with existing code?
I guess what would be needed is:
- The support of shell mesh, with dim=2 but spacedim=3;
- Customizable construction of stiffness matrices where the strain-displacement matrix can be modified;
If you could share with me whether this is either planned, or considered during the framework design, or whether you think the goals of this library covers that line of work, I'd appreciate it. Please do not take this as a feature request, but rather, a curious developer wondering whether this is potentially doable. Thanks!
Best, Shawn
Dear Shawn,
Shells are something I always wanted to have but never time to add. In my mind there are 3 problems:
- I am not an expert so it would require time to fully understand them
- There are many different bases for shells and I woudnt know which one to pick
- (related to 1) I am not sure if they fit the design of Polyfem as is.
The library is designed to separate completely the geometry/bases/PDE. My basic understanding of shells makes me believe that we would need to couple at least PDE with bases (and possibly geometry).
Short answer: It wasnt considered during design, it is planned in the long term, I think it is doable
@teseoch Thank you so much for your prompt response! That is very helpful.
I'd like to put down a few lines of my thoughts here, in case either I myself or someone else may run into this thread in the future:
- There are many different bases for shell element formulation.
- Among the most common ones are the MITC family. I have been using the MITC4 element (I did it in libmesh, not polyfem yet) and like it a lot. Many commercial packages use it: ADINA uses this and ABAQUS use a modified version of MITC4 as their primary shell element as well. For their 3-noded counterparts, ADINA used MITC4 and degenerate MITC4; ABAQUS used degenerate MITC4.
- The standard displacement-based shell element can be found in many textbooks, which has shear locking issues for lower order elements but works for quadratic or higher order formulations. I have been referring to the Bathe textbook, Finite Element Procedures. I think that is a great reference.
- Of course there are many others, which I do not personally have much experience on.
- I took a quick look at polyfem/src/assembler/LinearElasticity.cpp and felt that this is a good example to start working on shell elements. I do not know how to modify the strain-displacement matrix to perform MITC in polyfem/src/autogen/auto_elasticity_rhs.cpp yet... Would need more thought. Looking at the fenics-shell project's formulation of MITC (https://fenics-shells.readthedocs.io/en/latest/documented-demos.html) should help, but I'm not sure.
Sorry about the random rambling. :)
Thanks again!
Best, Shawn
Thank you for the pointers.
Everything in src/assembler is local assemblers. I dont know how the local assembler for shells looks like.
The other part in polyfem is src/basis where the actual bases are created. It supports 2D/3D tet/hex up to order 5/3, serendipity for hex, splines, and P-ref. All of this is separated from the assembler part and it is interchangeable.
Shell-wise I believe it would require a new basis, and a different local assembler.
The part in auto_elasticity_rhs are for testing/benchmarking only. Polyfem supports generated solution to compute $L^p$ errors and the rhs is generated trough some python scripts and autodiff. Some formulation like stokes do not support it and it is not necessary.
Dear all,
I was walking through the code too, if the shell formulations was integrated in the project now? If possible, I think I could try some shell formulations to enrich the fem library.
Thx, Leung
Hi Leung,
Currently, there is still no support for shell elements nor is there a current plan to add them. It would be an awesome addition and any help in this direction is more than welcome.
If you have any further questions feel free to reach out.
-Zach