-
-
Notifications
You must be signed in to change notification settings - Fork 97
2. Nodes
Each node has 6 degrees of freedom (3 translations and 3 rotations). Each of these degrees of freedom needs to be restrained for the model to be stable. For example, applying full end releases to all the members framing into a node will allow the node to "spin". The node would either have to be attached to at least one of the members rotationally, or supported rotationally by a support.
Nodes can be added to an existing model using the FEModel3D.AddNode
method:
Syntax:
FEModel3D.AddNode(Name, X, Y, Z)
"""
Name : string = A unique node name
X : number = The node's global X-coordinate
Y : number = The node's global Y-coordinate
Z : number = The node's global Z-coordinate
"""
Example:
# Add nodes to the model
myModel.AddNode('N1',100,0,0)
myModel.AddNode('N2',0,0,0)
myModel.AddNode('N3',100,0,-100)
myModel.AddNode('N4',100,-100,0)
Use the DefineSupports
method to define supports.
Syntax:
DefineSupport(Node, SupportX=False, SupportY=False, SupportZ=False, SupportRX=False, SupportRY=False, SupportRZ=False)
"""
Node : string = Name of the node to apply supports to
SupportX : boolean = Indicates whether the node is supported against translation in the global X direction (default = False)
SupportY : boolean = Indicates whether the node is supported against translation in the global Y direction (default = False)
SupportZ : boolean = Indicates whether the node is supported against translation in the global Z direction (default = False)
SupportRX : boolean = Indicates whether the node is supported against rotation about the global X axis (default = False)
SupportRY : boolean = Indicates whether the node is supported against rotation about the global Y axis (default = False)
SupportRZ : boolean = Indicates whether the node is supported against rotation about the global Z axis (default = False)
"""
Example:
# Add supports to the model
myModel.DefineSupport('N2', True, True, True, True, True, True)
myModel.DefineSupport('N3', True, True, True, True, True, True)
myModel.DefineSupport('N4', True, True, True, True, True, True)
Use the AddNodeLoad
method to add nodal loads to a model.
Syntax:
AddNodeLoad(Node, Direction, Load)
"""
Node : string = The name of the node where the load is being applied
Direction : string = The direction the load is being applied in. Must be one of the following values:
'FX' = Force in the global X-direction
'FY' = Force in the global Y-direction
'FZ' = Force in the global Z-direction
'MX' = Moment about the global X-axis
'MY' = Moment about the global Y-axis
'MZ' = Moment about the global Z-axis
Load : number = The magnitude (value) of the load
"""
Example:
# Add nodal loads to the model
myModel.AddNodeLoad('N1','FY',-50)
myModel.AddNodeLoad('N1','MX',-1000)
Use the AddNodeDisplacement
method to model a known nodal displacement, such as a support settlement.
Syntax:
AddNodeDisplacement (self, Node, Direction, Magnitude):
"""
Node : string
The name of the node where the nodal displacement is being applied.
Direction : string
'DX' = Displacement in the global X-direction
'DY' = Displacement in the global Y-direction
'DZ' = Displacement in the global Z-direction
'RX' = Rotation about the global X-axis
'RY' = Rotation about the global Y-axis
'RZ' = Rotation about the global Z-axis
Magnitude : number
The magnitude of the displacement.
"""
Example:
# Add a nodal displacement of -1.5 at node N4 in the global Y-direction
myModel.AddNodeDisplacement('N4', 'DY', -1.5)
The FEModel3D
class stores nodes in a private list. The order of the nodes in this list is the order in which you added the nodes. It would be difficult to track and find the node you're interested in if you used this list, especially on larger models. Instead, the FEModel3D
class provides a GetNode
function to retrieve nodes from the model by the name you gave them when you created them.
Once you've retrieved a node you can access its reactions and displacements as node class attributes.
Examples:
# Printing the Y-reaction and the reaction moment about the Z-axis at nodes "N2" and "N3" respectively
print(myModel.GetNode("N2").RxnFY)
print(myModel.GetNode("N3").RxnMZ)