Spring - 3D spring element with constant stiffnesses (pyfe3d.spring)#

class pyfe3d.spring.Spring#

Spring 3D beam element with constant stiffnesses

Note

The default behaviour assumes that the local coordinate system is aligned with the global coordinate system

Attributes:
eid,int

Element identification number.

kxe, kye, kze: double

Translational stiffnesses in the element coordinate system.

krxe, krye, krzedouble

Rotational stiffnesses in the element coordinate system.

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

Rotation matrix from local to global coordinates. By default it assumes that the element is aligned with the global coordinate system.

vxyi, vxyj, vxykdouble

Components of a vector on the \(XY\) plane of the element coordinate system, defined using global coordinates.

c1, c2int

Position of each node in the global stiffness matrix.

n1, n2int

Node identification number.

init_k_KC0, init_k_KG, init_k_Mint

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

Methods

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

Update sparse vectors for linear constitutive stiffness matrix KC0

update_fint(self, double[)

Update the internal force vector

update_probe_finte(self)

Update the internal force vector of the probe

update_probe_ue(self, double[)

Update the local displacement vector of the probe of the element

update_rotation_matrix(self, double xi, ...)

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_KG#

init_k_KG: ‘int’

init_k_M#

init_k_M: ‘int’

krxe#

krxe: ‘double’

krye#

krye: ‘double’

krze#

krze: ‘double’

kxe#

kxe: ‘double’

kye#

kye: ‘double’

kze#

kze: ‘double’

n1#

n1: ‘int’

n2#

n2: ‘int’

probe#

probe: pyfe3d.spring.SpringProbe

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, 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

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_fint(self, double[::1] fint) void#

Update the internal force vector

Parameters:
fintnp.array

Array that is updated in place with the internal forces. The internal forces stored in fint are calculated in global coordinates. Method update_probe_finte() is called to update the parameter finte of the TrussProbe with the internal forces in local coordinates.

update_probe_finte(self) void#

Update the internal force vector of the probe

The attribute finte is updated with the SpringProbe the internal forces in local coordinates. While using this function, mind that the probe can be shared amongst more than one finite element, depending how you defined them, meaning that the probe will always safe the values from the last udpate.

Note

The finte attribute of object TrussProbe is updated, accessible using .probe.finte.

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

Update the local displacement vector of the probe of the element

Note

The ue attribute of object SpringProbe is updated, accessible using .probe.ue.

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_rotation_matrix(self, double xi, double xj, double xk, double vxyi, double vxyj, double vxyk) 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:
xi, xj, xkdouble

Components, in global coordinates, of the element x-axis.

vxyi, vxyj, vxykdouble

Components, in global coordinates, of a vector on the \(XY\) plane of the element coordinate system.

vxyi#

vxyi: ‘double’

vxyj#

vxyj: ‘double’

vxyk#

vxyk: ‘double’

class pyfe3d.spring.SpringData#

Used to allocate memory for the sparse matrices.

Attributes:
KC0_SPARSE_SIZE,int

KC0_SPARSE_SIZE = 72

KG_SPARSE_SIZE,int

KG_SPARSE_SIZE = 0

M_SPARSE_SIZE,int

M_SPARSE_SIZE = 0

KC0_SPARSE_SIZE#

KC0_SPARSE_SIZE: ‘int’

KG_SPARSE_SIZE#

KG_SPARSE_SIZE: ‘int’

M_SPARSE_SIZE#

M_SPARSE_SIZE: ‘int’

class pyfe3d.spring.SpringProbe#

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

The idea behind using a probe is to avoid allocating larger memory buffers per finite element. The memory buffers are allocated per probe, and one probe can be shared amongst many finite elements, with the information being updated and retrieved on demand.

Note

The probe can be shared amongst more than one finite element, depending on how you defined them. Mind that the probe will always safe the values from the last udpate.

Attributes:
xe,array-like

Array of size NUM_NODES*DOF//2=6 containing the nodal coordinates in the element coordinate system, in the following order \({x_e}_1, {y_e}_1, {z_e}_1, {x_e}_2, {y_e}_2, {z_e}_2\).

ue,array-like

Array of size NUM_NODES*DOF=12 containing the element displacements in the following order \({u_e}_1, {v_e}_1, {w_e}_1, {{r_x}_e}_1, {{r_y}_e}_1, {{r_z}_e}_1, {u_e}_2, {v_e}_2, {w_e}_2, {{r_x}_e}_2, {{r_y}_e}_2, {{r_z}_e}_2\).

finte,array-like

Array of size NUM_NODES*DOF=12 containing the element internal forces corresponding to the degrees-of-freedom described by ue.

finte#

finte: ‘double[::1]’

ue#

ue: ‘double[::1]’

xe#

xe: ‘double[::1]’