Changing member to Timoshenko beam
Changes:
- Stiffness matrix of Member3D was modified to account for shear deformation. A derivation is included.
- Fixed-end reactions were also modified. Derivations were also included.
- Section was modified to accept optional arguments for shear correction factors
Everything still defaults to Euler-Bernoulli beam unless shear_deformable=True is set (see example). The stiffness matrix and fixed-end reactions reduce to Euler-Bernoulli beam if shear_deformable=False.
If you do not like the idea of directly changing the formulas in Member3D, I have created another version which has a new class that inherits to Member3D and just overrides the stiffness and fixed-end reaction calculation.
Thanks.
Thanks for this contribution! I am currently reviewing another pull request that includes dynamic analysis. When I'm done with that review I'll review this one. It's great to see contributions like this coming from the community. Pynite's capabilities are growing very quickly with help from individuals like you.
Looks good. I look forward to checking the modal analysis again after this has been merged to see if it improves the match with the OpenSees sample modal analysis.
UPDATE: I have checked the OpenSees elementBeamColumn and I think it doesn't account for shear (so that isn't the reason for discrepancies with higher modes. They have a different Timoshenko beam element for that.
@boustrephon from what I’ve reviewed, it seemed that you had Iz and Iy mixed up. Iz is the strong axis. That might be the source of your discrepancy.
@boustrephon also in Pynite the default vertical axis is Y rather than Z.
@boustrephon also in Pynite the default vertical axis is Y rather than Z.
Oh dear. I think I knew about Y being the default, but I wanted to match the way that Opensees had done it. I did note in one of my checks that I needed to change major and minor. Did I make mistakes that affect the code, or only the example? Do I need to fix anything?
Incidentally, even if the default is Y, which I think I knew, does that mean there are problems with assigning Z as vertical.
I’ve altered it in the code already and I’ll get it corrected in the example too before the next release. I’m working through all the modal analysis code one more time and reformatting it to be consistent with the rest of Pynite’s conventions. I should note that I removed the M trace output from the logs. From what I can tell, that output is meaningless when a consistent mass matrix is used.
I’ve altered it in the code already and I’ll get it corrected in the example too before the next release. I’m working through all the modal analysis code one more time and reformatting it to be consistent with the rest of Pynite’s conventions. I should note that I removed the M trace output from the logs. From what I can tell, that output is meaningless when a consistent mass matrix is used.
Yes, sorry about leaving that trace in. I thought I had removed it.
No apologies necessary. I appreciate your contribution. It’s very helpful. Something I’ve wanted to add for a long time but just didn’t have time to prioritize. I’m glad you found time to do it.