anaStruct icon indicating copy to clipboard operation
anaStruct copied to clipboard

Axial Load Applied at the Location of an Inclined Roller Support Gives Incorrect Results

Open smith120bh opened this issue 4 years ago • 2 comments

If an axial load is applied at the same node at which an inclined roller support is located, then the results are blatantly wrong, with sum of loads != sum of reactions.

Example script:

from anastruct.fem.system import SystemElements
sys = SystemElements(mesh=250)
sys.add_element(location=[(0.0, 0), (1.0, 0)], EA=356000.0, EI=1332.0000000000002)
sys.add_support_hinged(node_id=sys.find_node_id((0, 0)))
sys.add_support_roll(node_id=sys.find_node_id((1.0, 0)), angle=45)
sys.point_load(Fx=10.0, Fy=0, node_id=2)
sys.solve()
sys.validate()
sys.show_reaction_force()

Which results in the following: image

Note that sum of reactions = 30, though total applied load = 10.

smith120bh avatar Jul 20 '20 03:07 smith120bh

I really don't think axial forces on supports will be possible in current implementation as both modify the system matrix. When we place this force a bit behind/before the support we do have equilibrium.

Maybe I should add a warning when such a thing is tried by a user. :thinking:

from anastruct.fem.system import SystemElements
sys = SystemElements(mesh=250)
sys.add_element(location=[(0.0, 0), (.99, 0)], EA=1e9, EI=1e6)
sys.add_element(location=[(.99, 0), (1, 0)], EA=1e9, EI=1e6)
sys.add_support_hinged(node_id=1)
sys.add_support_roll(node_id=3, angle=45)
sys.point_load(Fx=10.0, Fy=0, node_id=2)

ritchie46 avatar Jul 24 '20 12:07 ritchie46

I can't imagine it's a remotely common scenario. We were just doing some testing, and found the issue. I agree with you - probably just adding a warning or error for the scenario is the right answer. My ticket is just that it gives plainly incorrect results right now.

smith120bh avatar Jul 25 '20 01:07 smith120bh