Python Course for Direct Stiffness Method


  • @Jesusbill and/or Structural Engineers - I'd be really grateful if anyone can advise on the suitability of this course/methodology:
    "Finite Element Analysis of 3D Structures using Python
    Build your own complete 3D structural analysis software in Python using the Direct Stiffness Method.
    After completing this course…
    You’ll understand how to expand the direct stiffness method to full 12 degree of freedom beam elements in 3D space.
    You’ll have developed a complete 3D finite element analysis solver to simulate structures consisting of beam and axially loaded bar elements.
    You’ll have the skills to efficiently build detailed structural models in Blender and export these for analysis in your own Python solver."
    My structural engineering knowledge is very basic, so i'm looking at a mid-term time investment (a year or two) to become less bad, (I'm not aiming to become an engineer, just more effective at managing projects).
    The course creator, Dr Sean Carroll, has produced a Blender > Jupyter Notebook/Python workflow that appears to align with my objectives of total BIM goodness within a Blender/Python/OS ecosystem - and it looks awesome....but my knowledge is too basic to understand whether running solvers in jupyter/python will produce an output that is viable for basic conceptual and costing purposes. If you think it is, i'll invest the time to learn it. If you think there's existing or forthcoming Blender/Freecad solutions with Code Aster/others that would serve me better, i'll follow your advice.
    Many thanks in advance.

  • Hi @John I think it would be a great course as a general knowledge, both from structural engineering's and software development's point of view.
    Don't expect however that it will be a complete FE solver, unless you want to use only beam and bar elements. You will be reinventing the wheel but I don't see that as a bad choice as I believe that going through the process of reinventing the wheel will make you capable eventually of inventing something new. Also, you mention that you want to use it for costing purposes. Well, running the analysis and getting results is the first part, the second being verifying the structural members from the results so that you can estimate the cost of the "verified" members. Running in python analyses like these is certainly not the best environment, as it is rather slow, but then again as long as we are talking about beam elements and not really huge models, the resources needed are not so great so you can actually get it done I think.
    Certainly, I would reckon that a nice simple FE library for Blender written in C (?) would be a great feature to have, but that would need developing support not only for beam (line) elements but also shell (plane) elements. It could be a "nice to have" but eventually integrating powerful FE solvers like Code_Aster can offer so much more possibilities, despite the "friction" to interface with, like going into nonlinear analyses, thermo-mechanical coupling, contact, and the list goes on ...

    But, as I said, if you feel like taking on this challenge, I think it will be a nice trip! I actually did develop something similar more than 5 years ago, when I was doing a solver for scaffolding structures. I never ended up to complete it as I wanted but I did code the 3D beam elements with internal releases, constant distributed and point loads, and a basic interface to visualize the structure (defined in dxf and taking analysis properties from an excel file) and to visualize the internal force diagrams, the deformed shape, etc. If you want to hack on this instead (?) i could publish it as a public repo in GitHub, right now it is leaving somewhere in my hard disk. But, it is in python 2 and it will not offer the learning experience that I imagine the course will. Here is a screenshot from that interface

  • @John is it this Sean Carroll:
    He might want to come here and have a chat with @Jesusbill Do you know him?

  • Hi @Jesusbill thank you so much for taking the time and the really helpful reply. It's thirty years since I did basic structural training, so relearning the fundamentals (and maths) on a guided course will be the best option, particularly as it's non-critical to what i do. Thank you too for the kind offer to share your earlier code for scaffolding structures. I'm just about conversant with python3 now, and getting there with api's, so will hold on python2 until some brain-space frees-up.

    I actually stumbled upon the course while googling for help on integrating Jupyter Notebooks with Blender (wip), as I believe that should be a reasonable way to organise and control a project workflow, (I share jchkoch's excitement that ifcopenshell, BlenderBIM and FreeCAD ++ has gotten to this stage). In further response to @duncan, I don't know Sean Carroll, but I'll contact him and share this backstory, hopefully it will be of interest to him. Thanks again.

  • @John I'd say totally go for the course. And keep us informed on any advancements!

  • Many thanks for the awesome encouragement, @Jesusbill . I will take the course and periodically update on findings.

  • edited April 21

    @Jesusbill said:
    ... i could publish it as a public repo in GitHub, right now it is leaving somewhere in my hard disk. But, it is in python 2 and it will not offer the learning experience that I imagine the course will. Here is a screenshot from that interface

    Hey, I thought this looks cool! How did you implement the interface with the viewport for the display of diagrams and 3D stuff? If you could publish it in a public repo, it would be really great.

  • edited April 30

    Hi @ArnoldEstruturas I used matplotlib with the 3D functionality to plot the structure and the diagrams. But it was not very scalable for bigger structures so I don't think it is the way to go in general. When I find some time I can publish it although I would like to avoid publishing sth that remains "abandoned" there without any further development. Just to know, would you be interested to run the software, or inspect the direct stiffness implementation or you would be interested just to see this specific part of the plotting implementation?

Sign In or Register to comment.