The previous version of 3DFrame allowed for spring releases at beam ends, but if the release stiffness was entered as zero it was treated as a rigid connection for that freedom. Effectively zero stiffness releases could be modelled by entering a very low stiffness value, but this sometimes caused arithmetic problems, resulting in enormous deflections being reported for the released freedoms. To avoid this problem the code has been modified so that any freedom entered as zero stiffness is treated as fully released. The new version (Rev. 2.08) may be downloaded from:
The solver links to two dll files that need to be installed as described here:
Installing C# dll files, reminder
The download zip file also includes a VBA only version, that should work without any further installation, other than extracting from the zip file.
Typical input showing both spring and zero stiffness releases is shown in the screen shot below:
Further details of the program 3Daxis system and the related stiffness matrices can be found at:
For some reason, all 3 Excel files crash Excel 2007 & Win7 at opening. The Excel files along with the DLLs of the new distribution were expanded in their own folder.
Thanks for letting me know.
Did the previous version work OK for you?
If you have not tried it you can download from:
Try the VBA version first, and if that works try the other version which calls the dll files.
Do you get any error messages, or does it just crash at start-up, or when you click the solve button?
I just found that the “VBA only” version was trying to call the dll files at startup. I have copied a corrected version to the download zip file.
For the version calling the dll files, you need to install the dlls as described here:
I will add that link to the article.
I quite confused when I was trying to go over the code.
Might be a bug?
” If Kt > 0 Then OneOBeta = 1 / Beta Else OneOBeta = 1 / Beta”
under Function AddSprings3()
I was thinking maybe, OneOBeta should be equal to zero for the Else condition?
It does look a little odd 🙂
I’ll have a look.
The code is a “correction” to a previous version, so that OneOBeta is calculated for all values of Kt, including 0, but of course the if statement is not required in that case.
I have replaced the line with:
OneOBeta = 1/Beta
No change to the results.
LikeLiked by 1 person
Makes sense now, thank you.
How about for the Ks value, will it remain as is?
Beta = Ks + km2(kk, kk)
If Beta 0 Then OneOBeta = 1 / Beta Else OneOBeta = 0
Sorry to bother you again. I have been studying your code for a while now,
I was comparing Function REAct3D (Frame analysis part) and Function LinBeam3D (Beam analysis part), it seems that the use of EI and GA stiffness combination differs for both methods,
in Function REAct3D, EI_1 with GA_2 (or EI_2 and GA_1) was used.
while in Function LinBeam3D, (EI_1 with GA_1) or (EI_2 with GA_2) was used.
I am also wondering if there’s an error on this code right here
SSRes(i, 5) = SSRes(i, 3) – (Q * DX1 ^ 2 / 2 + Qdash * DX1 ^ 3 / 6 + QNeg * DX2 ^ 2 / 2 – Qdash * DX2 ^ 3 / 6)
I think SSRes(i, 3) should be SSRes(i, 5)
this was taken from Function LinBeam3, calculating the SSRes for Distributed Loads.
I’ll have to check that out.
It gets confusing because different software uses different conventions for the local axes.
For the Linbeam3 question, the formula in the current version (2.09) in the LinBeam3 function is:
SSRes(i, 3) = SSRes(i, 3) + Q * DX1 ^ 2 / 2 + Qdash * DX1 ^ 3 / 6 + QNeg * DX2 ^ 2 / 2 – Qdash * DX2 ^ 3 / 6
and SSRes(i, 3) is the bending moment.
The formula you quoted is in the AxBeam3 function, where i, 3 is the Torque and i, 5 is the deflection due to axial force. I will check if that is right, I agree it doesn’t look right!
I have now checked these:
The REAct3D function is correct, and I will change LinBeam3D to work the same way. I didn’t pick it up because my check frames have rectangular sections, which have the same shear area in both directions. I will post a revised version today or tomorrow. Note that the Linbeam3D function is only used in calculating the intermediate sections between nodes, and the difference is quite small because only the deflections due to shear are affected.
In the AxBeam3 function SSRes(i, 3) should be SSRes(i, 5), as you suggested. This doesn’t make any difference in the current code because there is only one iteration for each load, so the SSRes(i, 3) and SSRes(i, 5) are always zero before the formula is applied.
Thanks for letting me know about these issues.
Thanks for the response dougaj4.