Member releases allow you to control how forces and moments are transferred at member connections. By releasing specific internal forces (axial force, shear, or moment) at either end of a member, you can model various connection types from fully fixed to pinned or custom partial releases.Releases are essential for accurately representing real structural connections, which often don’t transfer all force components. For example, a simple bolted connection might transfer shear and axial forces but not significant moments (a pinned connection).
model.add_releases( member_id, pi=False, # Release axial force at start node vi=False, # Release shear at start node mi=False, # Release moment at start node pj=False, # Release axial force at end node vj=False, # Release shear at end node mj=False # Release moment at end node)
A simply supported beam with pinned connections at both ends:
from milcapy import SystemModel, BeamTheoriesTypemodel = SystemModel()# Define material and sectionmodel.add_material("concrete", modulus_elasticity=2.1e6, poisson_ratio=0.2)model.add_rectangular_section("beam", "concrete", base=0.3, height=0.5)# Create beammodel.add_node(1, 0, 0)model.add_node(2, 6, 0)model.add_member(1, 1, 2, "beam", BeamTheoriesType.EULER_BERNOULLI)# Release moments at both ends (pinned-pinned)model.add_releases( member_id=1, mi=True, # Pin at start mj=True # Pin at end)# Add supportsmodel.add_restraint(1, True, True, False) # Pin supportmodel.add_restraint(2, True, True, False) # Roller support# Add distributed loadmodel.add_load_pattern("Live Load")model.add_distributed_load(1, "Live Load", qa=0, qb=-10, typ="fy")# Solvemodel.solve()model.show()
Pinned connections (moment releases) are the most common type of release in practice. They’re used to model simple shear connections that don’t develop significant moment.
# Create truss membermodel.add_member(5, 3, 4, "truss_section", BeamTheoriesType.EULER_BERNOULLI)# Release shear and moment at both ends (axial only)model.add_releases( member_id=5, vi=True, # Release shear at start mi=True, # Release moment at start vj=True, # Release shear at end mj=True # Release moment at end)
For truss members, release both shear and moment at both ends. This ensures the member only develops axial forces, which is the fundamental assumption of truss analysis.
# Member with axial release (can slide axially)model.add_releases( member_id=7, pi=True, # Release axial force at start vi=False, # Transfer shear mi=False # Transfer moment)
Releasing both axial force and shear at the same end can create an unstable mechanism. Ensure your releases produce a stable structural system.
# Solve the modelmodel.solve("Load Pattern")# Get member forces at endsresults = model.get_results("Load Pattern")# Check that released forces are zeromember_forces = results.get_member_forces(member_id=1)print(f"Start moment: {member_forces.mi}") # Should be ~0 if mi=Trueprint(f"End moment: {member_forces.mj}") # Should be ~0 if mj=True
Use the visualization tools to inspect deformed shapes and internal force diagrams. Releases should show as discontinuities in moment or force diagrams.