-
Notifications
You must be signed in to change notification settings - Fork 23
2. Building a Model
The FEModel class is used to generate a finite element model. To create a new model simply use a statement like this:
Dim myFrame As New FEModel
That's all there is to it. You now have a new finite element model named "myFrame". The name is arbitrary. You can use any name you like.
The AddNode function is built into the FEModel class to add nodes to the model. Access it using the dot operator "." as follows:
myFrame.AddNode("N1", 0, 0)
myFrame.AddNode("N2", 5, 10)
This example added two nodes named "N1" and "N2" to the model "myFrame". Again, the names "N1" and "N2" are arbitrary. You can use any name you like. The coordinates of "N1" are X = 0 and Y = 0. The coordinates of "N2" are X = 5, and Y = 10.
Members can be added using the AddMember function of the FEModel class.
myFrame.AddMember("M1", "N1", "N2", 29000, 100, 15)
This example just created a member named "M1" spanning from node "N1" to node "N2", with a modulus of elasticity of 29000, a moment of inertia of 100, and an area of 15. Note that if "N1" and "N2" were not previously added to the model, this would produce an error.
xlFrame can use any unit system, as long as they are all consistent with each other (i.e. don't mix inches and feet in one model - use one or the other).
Supports can be added as follows:
myFrame.EditSupport("N1", True, True, False)
myFrame.EditSupport("N2", False, True, True)
This added a support to node "N1" in the X and Y directions, The rotation about the Z axis has been left free. For node "N2" a support has been added in the Y direction, and rotation about the Z axis has been restrained.
End releases can be used to model hinges at each end of a member:
myFrame.EditEndReleases("M1", True, False)
This code added an end release to the start of the member, and left the end of the member fixed.
Nodal loads can be added as follows:
myFrame.AddNodeLoad("N1", 5, 3 -30)
This added a nodal load to node "N1". The load is 5 in the X direction, 3 in the Y direction and a moment of -30 has been applied.
Concentrated moments, point loads and distributed loads can be added to members:
myFrame.AddMemberMoment("M1", -25, 4)
myFrame.AddMemberPointLoad("M1", 10, 3, Transverse)
myFrame.AddMemberDistLoad("M1", 50, 75, 2, 6, Axial)
Here a moment of -25 has been applied to member "M1" at a distance of 4 from the start of the member. Additionally a transverse point load of 10 has been added at a distance of 3 and a linear distributed axial load that varies from 50 to 75 has been applied over the member between a distance of 2 to 6 from the start of the member.
Alternatively, if we don't want to calculate the length of the member, we can substitute values of -1 for the start and ending points of the load, and the program will auto-calculate start and end points for the load based on the length of the member:
myFrame.AddMemberDistLoad("M1", 50, 75, -1, -1, Axial)
The important thing to remember here is that these loads are defined relative to the member's local axis, rather that the global structure axis. Typical beam sign convention has been used for each element, with positive loads acting downward on the element.