Truss - Linear truss 3D element with analytical integration (pyfe3d.truss)#

Note

The BeamC element is recommended because of the better physical representation.

Note

The Truss element does not support linear buckling analysis.

class pyfe3d.truss.Truss#

Truss 3D element for axial- and torsion-only behavior

Nodal connectivity for the truss element:

______   --> u  ->>- rx
1    2

Note

The BeamC is recommended because of the better physical representation.

Attributes:
eid,int

Element identification number.

pid,int

Property identification number.

length,double

Element length.

r11, r12, r13, r21, r22, r23, r31, r32, r33double

Rotation matrix from local to global coordinates.

c1, c2int

Position of each node in the global stiffness matrix.

n1, n2int

Node identification number.

init_k_KC0, init_k_Mint

Position in the arrays storing the sparse data for the structural matrices.

probe,TrussProbe object

Pointer to the probe.

Methods

update_KC0(self, long[, long[, double[, ...)

Update sparse vectors for linear constitutive stiffness matrix KC0

update_M(self, long[, long[, double[, ...)

Update sparse vectors for mass matrix M

update_length(self)

Update element length

update_probe_ue(self, double[)

Update the local displacement vector of the probe of the element

update_probe_xe(self, double[)

Update the 3D coordinates of the probe of the element

update_rotation_matrix(self, double[)

Update the rotation matrix of the element

c1#

c1: ‘int’

c2#

c2: ‘int’

eid#

eid: ‘int’

init_k_KC0#

init_k_KC0: ‘int’

init_k_M#

init_k_M: ‘int’

length#

length: ‘double’

n1#

n1: ‘int’

n2#

n2: ‘int’

pid#

pid: ‘int’

probe#

probe: pyfe3d.truss.TrussProbe

r11#

r11: ‘double’

r12#

r12: ‘double’

r13#

r13: ‘double’

r21#

r21: ‘double’

r22#

r22: ‘double’

r23#

r23: ‘double’

r31#

r31: ‘double’

r32#

r32: ‘double’

r33#

r33: ‘double’

update_KC0(self, long[::1] KC0r, long[::1] KC0c, double[::1] KC0v, BeamProp prop, int update_KC0v_only=0) void#

Update sparse vectors for linear constitutive stiffness matrix KC0

Parameters:
KC0rnp.array

Array to store row positions of sparse values

KC0cnp.array

Array to store column positions of sparse values

KC0vnp.array

Array to store sparse values

propBeamProp object

Beam property object from where the stiffness and mass attributes are read from.

update_KC0v_onlyint

The default 0 means that the row and column indices KC0r and KC0c should also be updated. Any other value will only update the stiffness matrix values KC0v.

update_M(self, long[::1] Mr, long[::1] Mc, double[::1] Mv, BeamProp prop, int mtype=0) void#

Update sparse vectors for mass matrix M

For the Truss element, the inertial terms intrho, intrhoy, intrhoz, intrhoy2 and intrhoz2 of the beam property are important.

Parameters:
Mrnp.array

Array to store row positions of sparse values

Mcnp.array

Array to store column positions of sparse values

Mvnp.array

Array to store sparse values

mtypeint, optional

0 for consistent mass matrix using method from Brockman 1987 1 for lumped mass matrix using method from Brockman 1987

update_length(self) void#

Update element length

update_probe_ue(self, double[::1] u) void#

Update the local displacement vector of the probe of the element

Note

The probe attribute object TrussProbe is updated, not the element object.

Parameters:
uarray-like

Array with global displacements, for a total of \(M\) nodes in the model, this array will be arranged as: \(u_1, v_1, w_1, {r_x}_1, {r_y}_1, {r_z}_1, u_2, v_2, w_2, {r_x}_2, {r_y}_2, {r_z}_2, ..., u_M, v_M, w_M, {r_x}_M, {r_y}_M, {r_z}_M\).

update_probe_xe(self, double[::1] x) void#

Update the 3D coordinates of the probe of the element

Note

The probe attribute object TrussProbe is updated, not the element object.

Parameters:
xarray-like

Array with global nodal coordinates, for a total of \(M\) nodes in the model, this array will be arranged as: \(x_1, y_1, z_1, x_2, y_2, z_2, ..., x_M, y_M, z_M\).

update_rotation_matrix(self, double[::1] x) void#

Update the rotation matrix of the element

Attributes r11,r12,r13,r21,r22,r23,r31,r32,r33 are updated, corresponding to the rotation matrix from local to global coordinates.

The element coordinate system is determined, identifying the \(ijk\) components of each axis: \({x_e}_i, {x_e}_j, {x_e}_k\); \({y_e}_i, {y_e}_j, {y_e}_k\); \({z_e}_i, {z_e}_j, {z_e}_k\).

Parameters:
xarray-like

Array with global nodal coordinates, for a total of \(M\) nodes in the model, this array will be arranged as: \(x_1, y_1, z_1, x_2, y_2, z_2, ..., x_M, y_M, z_M\).

class pyfe3d.truss.TrussData#

Used to allocate memory for the sparse matrices.

Attributes:
KC0_SPARSE_SIZEint

KC0_SPARSE_SIZE: ‘int’

M_SPARSE_SIZEint

M_SPARSE_SIZE: ‘int’

KC0_SPARSE_SIZE#

KC0_SPARSE_SIZE: ‘int’

M_SPARSE_SIZE#

M_SPARSE_SIZE: ‘int’

class pyfe3d.truss.TrussProbe#

Probe used for local coordinates, local displacements, local stresses etc

Attributes:
xearray-like

xe: ‘double[::1]’

uearray-like

ue: ‘double[::1]’

ue#

ue: ‘double[::1]’

xe#

xe: ‘double[::1]’