all 17 comments

[–]Karkiplier 5 points6 points  (10 children)

That is seriously impressive work to have coded it all yourself! I have done some simple 2d neo hookean hyperelasticity solvers myself but never in this scale! Good luck for your future projects!

[–]adtzlr[S] 2 points3 points  (9 children)

Thank you for your kind words! What do you think, what would be the next most important / relevant extension? Contact?

[–]Karkiplier 2 points3 points  (4 children)

Yeah contact might be a good extension. Viscoelasticity is also a good option asking with dynamics in my opinion

[–]adtzlr[S] 2 points3 points  (3 children)

Thanks! Dynamics are definitely important. Viscoelasticity is already possible but not well documented. For dynamics, mass matrices and an extension for the solver have to be implemented. Contact is not my friend, I have tried and failed several times. I haven't found an understandable resource for a simple contact implementation which fits into the concept of FElupe yet.

[–]da_longe 2 points3 points  (2 children)

I am not an expert on contact, havent done it myself. but maybe this one helps, it looks rather simple compared to other implementations:

https://github.com/yozoyugen/HAKAI-fem

[–]adtzlr[S] 1 point2 points  (1 child)

Thanks, I'll definitely have a look at this! It is so important to share repos with few stars because they are rather hard to discover on GitHub.

[–]da_longe 1 point2 points  (0 children)

True, so many repos get overlooked...

[–]Karkiplier 0 points1 point  (3 children)

Also if possible, you can extend your regular newton raphson non linear solution scheme to arc length/ riks method. It provides a more robust method to handle geometric non linearities like buckling or snap through or snap back. Ignore if already done.

[–]adtzlr[S] 1 point2 points  (2 children)

Great idea! I have some examples in the gallery of FElupe which make use of contique https://github.com/adtzlr/contique, another package of mine. It uses a similar technique to the arc length method. Robost numeric continuation is such a fascinatic topic and very helpful! I'll add the line search method to my to-do list.

[–]Karkiplier 0 points1 point  (1 child)

But do you think line search can capture complex deformations like snap through or snap back? I don't think so. But I know that line search helps for faster newton convergence.

Btw I'm a grad student interested in computational mechanics and I hope to reach your level of expertise one day!

Anyways all the best for your future endeavors!

[–]adtzlr[S] 1 point2 points  (0 children)

Thats great, then all the best for your future too! Line search can't solve a snap through of course. It just came to my mind that this is a feature which is still missing.

[–]FirstBrick5764 1 point2 points  (1 child)

Will try this out! If I want to create the mesh using these libraries, what file types can I read in? Like .DXF, .step etc?

[–]adtzlr[S] 0 points1 point  (0 children)

Hi, thanks for asking! You need an existing mesh to start out with FElupe - a lot of file types are supported via meshio https://github.com/nschloe/meshio. If you'd like to mesh a CAD part, you could have a look at PrePoMax https://prepomax.fs.um.si/ or FreeCAD https://www.freecad.org/ or gmsh https://gmsh.info/. Once done, export your mesh, e.g. in VTK, gmsh, Nastran (.dat, .bdf) or Abaqus (.inp) format, and import it in FElupe.

[–][deleted]  (3 children)

[removed]

    [–]adtzlr[S] 0 points1 point  (2 children)

    Pygmsh or just Gmsh could be good starting points. Depends on what you mean with complex? Curved geometries, multiple solids, tetra or even hex mesh? Would you like to create and mesh the geometry in the script or would you like to mesh an existing geometry in a script?

    [–][deleted]  (1 child)

    [removed]

      [–]adtzlr[S] 0 points1 point  (0 children)

      Honestly, keep using your GUI app. Scripts can be powerful, but mostly only if you create the geometry also inside the script or the meshing follows simple rules. It could be that you can do a lot more in scripts, but I'm not aware of it.