Just today, my Pull Request #23755 concerned with making changes and adding the solve
method in the Truss
class has been merged! This means I am officially done with one major part of my project. The entire Truss
class implementation that I had planned out as per my proposal has been carried out in SymPy and this is huge for me!
About the work going on currently, as I had mentioned I would be implementing torsion in the current Beam3D
class itself, what I did was make another property in the class by angular_deflection
which was basically a function depicting the angular deflection experienced in a Beam as a particular x from the origin (where the beam is mounted with a wall support). Note that the coordinate system here is defined such that the y and z axes are planar with respect to the beam cross-section and the x axis is parallel to the beam axis.
This was the property depicting what we want to achieve. The function responsible for actually solving for this property is the solve_for_torsion
method which has been added as well. How it calculates the results is that it iterates through all moments at different positions starting from the origin. It then uses Piecewise
functions for each and then adds all such Piecewise
functions for each moment and eventually makes a Torque Diagram as shown below,
where \(T_A\) is applied at \(z=a\) and \(T_B\) at \(z=a+b\).
Thus, the angular deflection at an x is easily calculated as,
\[\theta(x) = \int_{0}^{x}\frac{T}{G \ J} \text{d}x\]Currently, this solves only for circular cross-sections and constant moments.
A pull request, #23868, with both the above changes added has been created.