A new version of 3DFrame-py has been released and can be downloaded from:
See Installing 3DFrame-py for installation details, and details of other Python modules required. Also see Python and pyxll for details of the required pyxll package, including a coupon code for a 10% discount.
The main changes are:
- Beam bending moment results allowing for non-linear geometric effects have been corrected for axial load effects.
- The moment-curvature adjustment routine has been changed to improve convergence for highly non-linear conditions.
- The output sheet now includes a record of the number of non-linear iterations, and the maximum normalised displacement error for the last iteration.
The results have been compared with a Strand7 model of the portal frame used in previous checks, but rotated through 45 degrees in plan:

For linear-elastic analysis the spreadsheet results are near exactly equal to Strand7:


For non-linear analysis different approximations are used for both geometric and material non-linear effects, so there are very small differences in the results:


Doug which references, if any, have you been using to aid in developing your non-linear process? Particularly interested in anything that covers the inclusion of along the length member loading, final force recovery, and internal actions.
New year resolution for me to finally sit down and attempt to get in the weeds rather than just passing high level review.
Thank you
LikeLike
The basic code for linear analysis is based on “Programming the Finite Element Method” by Smith, Griffiths and Margetts.
The non-linear geometric analysis is based on modifications to the stiffness matrix described in Matrix Structural Analysis, 2nd Edition, by McGuire, Gallagher, and Ziemian. (see https://newtonexcelbach.com/2018/04/17/frame-analysis-resources/ and Beam geometric non-linear effects
For non-linear materials analysis the beam elastic modulus values are updated iteratively based on the calculated bending moments and the input moment-curvature tables.
In both cases the analysis is based on the actions at the ends of the beam, so they don’t take the differential effects of distributed loads into account in the global analysis. In calculating the beam actions and deflections along the length of the beams the effect of distributed loads and point loads at intermediate locations is included using standard procedures.
Please let me know if you have any more specific queries.
LikeLike
Thanks Doug have both those resources, need to find the time to sit down and get some reading in. Need to review more on my end to ask intelligent questions.
From a high level for loading along the member in a linear analysis you include the fixed end force vector via either addition/subtraction depending on sign convention.
KD = F +/- F,fixed
call the right side, Ftotal = F +/- F,fixed
Is it accurate that the Ftotal vector is also used in the non-linear iterations, where if you end up doing load steps you would get:
(Ke – Kg,i) Di = ni*Ftotal
where (Ke – Kg,i) = Kt,i , tangent stiffness matrix at the current load step and iteration. ni is the multiplier on the applied load to break it into steps to avoid divergence incase the full load/s exceed the critical point.
then does the nodal force recovery end up happening more or less the same as the linear analysis but using the tangent stiffness matrix for the element multiplied by the Displacement vector and then add or subtract the fixed end force vector depending on sign convention?
Kt,i Di -/+ F,fixed = Fi
I imagine once I actually sit down and try working some of the problems this may all become more clear but the inclusion of the fixed end force vector is a question mark I’ve always had.
LikeLike
The release of 3DFrame-py version 0.40 introduces significant enhancements, particularly in correcting beam bending moment results for axial load effects and improving convergence in the moment-curvature adjustment routine. These updates undoubtedly refine the tool’s accuracy and usability.
For users seeking to extend the functionality of their Excel-based structural analysis, integrating 3DFrame-py with other applications can be beneficial. One such tool is Sheetcast, which enables the transformation of Excel spreadsheets into interactive web applications. This integration allows for broader accessibility and collaboration on structural analysis projects, facilitating seamless sharing and real-time interaction with 3DFrame-py models.
Have you considered exploring or implementing web-based interfaces to complement 3DFrame-py’s capabilities? Such an approach could enhance user engagement and streamline collaborative workflows.
LikeLike
Thanks for the Sheetcast link. It is interesting, but it doesn’t look like it will work with VBA or Python code, so I don’t think it will be useful for my applications.
LikeLike