This week I worked on adding support for beams connected via hinge in #14773. Support for axially fixed beams and its API was implemented last week.

`_solve_hinge_beams`

was added as a helper function to solve such Beams. This method resolves the composite Beam into its sub-beams and then equations of shear force, bending moment, slope and deflection are evaluated for both of them separately. These equations are then solved for unknown reactions and integration constants using the boundary conditions applied on the Beam. Equal deflection of both sub-beams at the hinge joint gives us another equation to solve the system.

So the final API looks like:

```
>>> from sympy.physics.continuum_mechanics.beam import Beam
>>> from sympy import symbols
>>> l = symbols('l', positive=True)
>>> R1, M1, R2, R3, P = symbols('R1 M1 R2 R3 P')
>>> b1 = Beam(2*l, E, I)
>>> b2 = Beam(2*l, E, I)
>>> b = b1.join(b2,"hinge")
>>> b.apply_load(M1, 0, -2)
>>> b.apply_load(R1, 0, -1)
>>> b.apply_load(R2, l, -1)
>>> b.apply_load(R3, 4*l, -1
>>> b.apply_load(P, 3*l, -1)
>>> b.bc_slope = [(0, 0)]
>>> b.bc_deflection = [(0, 0), (l, 0), (4*l, 0)]
>>> b.solve_for_reaction_loads(M1, R1, R2, R3)
>>> b.reaction_loads
{R3: -P/2, R2: -5*P/4, M1: -P*l/4, R1: 3*P/4}
>>> b.slope().subs(x, 3*l)
-7*P*l**2/(48*E*I)
>>> b.deflection().subs(x, 2*l)
7*P*l**3/(24*E*I)
```

**Next Week**

**Next Week**

- See for changes in #14786 to get it merged.
- Add support for non-horizontal beams.
- See for any remaining implementation from first two stages of my proposal.

Advertisements

Hi, very good work and useful tool. It could be very useful to have the possibility of using several joints in the same beam, especially the fixed join type. This option would allow to study not only beams but drive shafts too (a drive shaft changes its section area many times axially, so E and I axially change too). Actually it could be very useful to add the joint feature even in the Beam3D, for the same reason. I hope that my reply could help. Thank you for your work.

LikeLiked by 1 person

Thanks!

LikeLike