The node
table is processed and a Node object is created for each row. Initially, each object
contains only the node ID and the x- and y- coordinate values. Eventually, each node object will also
contain information about constraints and DOF #s - at this stage they are initialized to null values.
If two nodes with the same ID are noted, and exception is raised.
Then the supports
table is processed; each row contains a node id and up to 3 constraint specifications
(a constraint specification is one of the indicators FX
, FY
, or MZ
). The set of constraints
maintained with each node is updated.
The member
table specifies the connectivity of structural members; each row contains the
ID of a member and the two ID's of the nodes at either end. For each row, a Member
object is created. Each object contains the member ID and the node objects for each end (the j- and the
k- end). When the member object is created, the constructor computes the length and the direction
cosines (using the node coordinates of course).
Each member object will eventually contain member properties ($I_x$ and $A$), a set of force releases, a member stiffness matrix in local and global coordinates, and a transformation matrix from global to local coordinates. When the object is first created, the constructor initialzes these to null values.
Note: it may be a mistake to carry the matrices along with the member object; a full second order analysis will write the equilibrium equations on the deformed structure, and these will have to be recomputed from updated node coordinates on each iteration. It may be better to maintain them in a separate data structure - perhaps a dictionary indexed by member. But for now, do as described above.
The member_releases
table specifies force releases internal to members. Currently only moment releases
at either end are supported (this constrain the internal moment to zero, and thus correspond to 'pins').
This table is processed, and the releases indicated are added to the force release set in the
appropriate member objects. Eventually, the release information will be used to modify the
local member stiffness matrices.
The properties table
specifies the moment of intertia, $I_x$, and cross-sectional area, $A$, of
each member. Some convenience facilities are provide: the size may be given using a structural
shape designation, such as 'W310x34', and values may be left blank in the CSV data to indicate
replication of values from above. There should be one row for each member; this file is processed
and the propertie values of each member object are updated.