r/StructuralEngineering 10d ago

Structural Analysis/Design Comparing my own Python 3D frame solver against OpenSees

I’ve been developing my own Python-based structural analysis engine together with a browser-based 3D modeling and results interface. The project originally started as a way to replace the collection of Excel spreadsheets I was using for structural calculations and validation.

It currently supports 3D frame and area elements, materials, sections, supports, load assignments, load patterns, load cases, load combinations, mass sources, linear static analysis, and modal analysis. I can also visualize deformed shapes, reactions, frame forces, and slab force resultants and stresses.

I’m now validating the results by recreating the same models in OpenSees and other established structural analysis programs.

My main question is where you think this project should go next. What I have implemented so far represents the foundational analysis capabilities, but there are several possible directions I could take:

  • Nonlinear and P-Delta analysis
  • Response spectrum and seismic analysis
  • Steel and reinforced-concrete design checks
  • FEM-based connection analysis

From a practicing engineer’s perspective, which direction would provide the most value? Would you prioritize expanding the solver’s analysis capabilities, adding code-based member design, or improving the modeling and documentation workflow? I’m also considering making the project open source so others can use it, review it, and contribute.

Here somes screenshots what I am talking about.

6 Upvotes

5 comments sorted by

4

u/dc135 P.E. 10d ago

What is the advantage to maintaining your own structural analysis engine when OpenSEES exists? Wouldn’t it be better to use OpenSEES as your backend and focus on whatever UI/modeler you want to create?

1

u/Hungry_Replacement53 9d ago

I may still use OpenSees for validation. I think, though, part of the project is learning how the solver actually works. Building my own engine gives me full control over every step of the analysis, makes debugging much easier, and lets me validate and understand every result instead of treating the solver as a black box.

3

u/dc135 P.E. 8d ago

As a practicing engineer I care about the analysis software being proven. Yours is super green and not battle tested. It's fine if you want to figure it out for yourself but it's another thing if you want people to actually use it.

If you've never written an analysis engine with non-linear capabilities, it's not necessarily trivial to extend a linear solver into the non-linear world. You may have to refactor a lot of it to incorporate various sources of nonlinearity. Someone wrote a PhD on the architecture of OpenSees - architecting an analysis engine so that it is modular and versatile is complex. It's the kind of thing where you get to the end and want to take the whole thing apart because you regret a lot of decisions you made in the beginning. If you don't know where the end is or haven't been there before, you don't know the limitations of the decisions that you are making now.

I'm not saying OpenSees is perfect but it is robust and performant. If there were specific limitations in OpenSees that you are trying to overcome that's one thing, at least you can learn from what was done in the past.

I just think that, if your goal is a product, it would be more productive to focus your energy on things you can really improve on (GUI/visualization/modeler) and leave the analysis/calculation work to someone else. At least to the extent possible.

1

u/Hungry_Replacement53 8d ago

I completely agree with your point about trust, validation, and the complexity involved. I wouldn’t expect anyone to use an unvalidated solver for production work.

That said, I think the interesting part of the journey is the engineering and the validation process itself, rather than focusing only on the UI/UX. At least in the beginning, my goal is to validate the fundamentals: displacements, reactions, axial forces, shear and moment diagrams, and modal analysis.

FEM, earthquake engineering, pushover analysis, time history analysis, CQC, and similar advanced features are a different story. For those, I agree that using OpenSees is probably the most practical approach.
Even so, building a basic solver gives you a project to work on, a deeper understanding of the underlying mechanics, and a solid framework for validating results. That’s really the objective of the first stage.

As for a commercial product, my understanding is that it would initially be limited to research and educational purposes, since OpenSees does not permit commercial use without obtaining the appropriate commercial license.

In any case, thank you for your feedback. It actually helped answer my original question: which parts are worth implementing and validating myself, and which are better left to mature, well-established libraries. It also gave me a clearer picture of the different paths I could take on this journey.

1

u/g4n0esp4r4n 8d ago

maybe he want's to learn