DYNAMICS C API
C-compatible interface to the DYNAMICS library
Loading...
Searching...
No Matches
Structural analysis and line elements

Functions

double c_beam_element_2d_length (const c_beam_element_2d *elem)
 Compute the length of a 2D beam element.
 
void c_beam_element_2d_stiffness_matrix (const c_beam_element_2d *elem, int rule, double *k, int ldk)
 Compute the 6-by-6 stiffness matrix of a 2D beam element.
 
void c_beam_element_2d_mass_matrix (const c_beam_element_2d *elem, int rule, double *m, int ldm)
 Compute the 6-by-6 mass matrix of a 2D beam element.
 
void c_beam_element_2d_rotation_matrix (const c_beam_element_2d *elem, double *r, int ldr)
 Compute the 6-by-6 rotation matrix of a 2D beam element.
 
void c_beam_element_2d_strain (const c_beam_element_2d *elem, const double displacement[6], double s, double strain[2])
 Compute the strain in a 2D beam element at a natural coordinate.
 
void c_beam_element_2d_stress (const c_beam_element_2d *elem, const double displacement[6], double s, double stress[2])
 Compute the stress in a 2D beam element at a natural coordinate.
 
double c_beam_element_2d_shear_force (const c_beam_element_2d *elem, const double displacement[6], double s)
 Compute the local shear force in a 2D beam element at a natural coordinate.
 
double c_beam_element_2d_bending_moment (const c_beam_element_2d *elem, const double displacement[6], double s)
 Compute the local bending moment in a 2D beam element at a natural coordinate.
 
void c_beam_element_2d_external_force_vector (const c_beam_element_2d *elem, const double q[2], int rule, double f[6])
 Compute the equivalent nodal force vector for a distributed load on a 2D beam element.
 
double c_beam_element_3d_length (const c_beam_element_3d *elem)
 Compute the length of a 3D beam element.
 
void c_beam_element_3d_stiffness_matrix (const c_beam_element_3d *elem, int rule, double *k, int ldk)
 Compute the 12-by-12 stiffness matrix of a 3D beam element.
 
void c_beam_element_3d_mass_matrix (const c_beam_element_3d *elem, int rule, double *m, int ldm)
 Compute the 12-by-12 mass matrix of a 3D beam element.
 
void c_beam_element_3d_rotation_matrix (const c_beam_element_3d *elem, double *r, int ldr)
 Compute the 12-by-12 rotation matrix of a 3D beam element.
 
void c_beam_element_3d_strain (const c_beam_element_3d *elem, const double displacement[12], double s, double strain[4])
 Compute the strain in a 3D beam element at a natural coordinate.
 
void c_beam_element_3d_stress (const c_beam_element_3d *elem, const double displacement[12], double s, double stress[4])
 Compute the stress in a 3D beam element at a natural coordinate.
 
void c_beam_element_3d_shear_force (const c_beam_element_3d *elem, const double displacement[12], double s, double force[2])
 Compute the local shear-force vector in a 3D beam element at a natural coordinate.
 
void c_beam_element_3d_bending_moment (const c_beam_element_3d *elem, const double displacement[12], double s, double moment[3])
 Compute the local moment vector in a 3D beam element at a natural coordinate.
 
void c_beam_element_3d_external_force_vector (const c_beam_element_3d *elem, const double q[4], int rule, double f[12])
 Compute the equivalent nodal force vector for a distributed load on a 3D beam element.
 
void c_assemble_static_system_beam_2d (int gdof, int n, const c_beam_element_2d *elements, int nn, const c_node *nodes, int rule, double *k, int ldk)
 Assemble a dense global stiffness matrix from 2D beam elements.
 
void c_assemble_dynamic_system_beam_2d (int gdof, int n, const c_beam_element_2d *elements, int nn, const c_node *nodes, int rule, double *m, int ldm, double *k, int ldk)
 Assemble dense global mass and stiffness matrices from 2D beam elements.
 
void c_assemble_static_system_beam_3d (int gdof, int n, const c_beam_element_3d *elements, int nn, const c_node *nodes, int rule, double *k, int ldk)
 Assemble a dense global stiffness matrix from 3D beam elements.
 
void c_assemble_dynamic_system_beam_3d (int gdof, int n, const c_beam_element_3d *elements, int nn, const c_node *nodes, int rule, double *m, int ldm, double *k, int ldk)
 Assemble dense global mass and stiffness matrices from 3D beam elements.
 
void c_apply_boundary_conditions_mtx (int n, int nbc, int *gdof, const double *x, int ldx, double *rst, int ldr)
 Apply boundary conditions to a dense matrix by removing the constrained rows and columns.
 
void c_apply_boundary_conditions_vec (int n, int nbc, int *gdof, const double *x, double *rst)
 Apply boundary conditions to a dense vector by removing the constrained entries.
 
void c_restore_constrained_values_dense (int nred, int nbc, int *gdof, const double *x, double *rst)
 Restore the constrained degrees of freedom removed by c_apply_boundary_conditions_vec.
 
void c_apply_displacement_constraint_dense (int dof, double val, int n, double *k, int ldk, double *f)
 Apply a displacement constraint to a single degree of freedom.
 
void c_solve_static_system_dense (int n, const double *k, int ldk, const double *f, double *u)
 Solve the static system K*u = f for a dense stiffness matrix.
 
double c_truss_element_2d_length (const c_truss_element_2d *elem)
 Compute the length of a 2D truss element.
 
void c_truss_element_2d_stiffness_matrix (const c_truss_element_2d *elem, double *k, int ldk)
 Compute the 4-by-4 global stiffness matrix of a 2D truss element.
 
void c_truss_element_2d_mass_matrix (const c_truss_element_2d *elem, int rule, double *m, int ldm)
 Compute the 4-by-4 consistent mass matrix of a 2D truss element.
 
void c_truss_element_2d_rotation_matrix (const c_truss_element_2d *elem, double *r, int ldr)
 Compute the 4-by-4 rotation matrix of a 2D truss element.
 
double c_truss_element_2d_strain (const c_truss_element_2d *elem, const double displacement[4])
 Compute the axial strain in a 2D truss element.
 
double c_truss_element_2d_axial_force (const c_truss_element_2d *elem, const double displacement[4])
 Compute the axial force (positive in tension) in a 2D truss element.
 
void c_truss_element_2d_external_force_vector (const c_truss_element_2d *elem, const double q[2], int rule, double f[4])
 Compute the equivalent nodal force vector for a distributed load on a 2D truss element.
 
double c_truss_element_3d_length (const c_truss_element_3d *elem)
 Compute the length of a 3D truss element.
 
void c_truss_element_3d_stiffness_matrix (const c_truss_element_3d *elem, double *k, int ldk)
 Compute the 6-by-6 global stiffness matrix of a 3D truss element.
 
void c_truss_element_3d_mass_matrix (const c_truss_element_3d *elem, int rule, double *m, int ldm)
 Compute the 6-by-6 consistent mass matrix of a 3D truss element.
 
void c_truss_element_3d_rotation_matrix (const c_truss_element_3d *elem, double *r, int ldr)
 Compute the 6-by-6 rotation matrix of a 3D truss element.
 
double c_truss_element_3d_strain (const c_truss_element_3d *elem, const double displacement[6])
 Compute the axial strain in a 3D truss element.
 
double c_truss_element_3d_axial_force (const c_truss_element_3d *elem, const double displacement[6])
 Compute the axial force (positive in tension) in a 3D truss element.
 
void c_truss_element_3d_external_force_vector (const c_truss_element_3d *elem, const double q[3], int rule, double f[6])
 Compute the equivalent nodal force vector for a distributed load on a 3D truss element.
 
void c_assemble_static_system_truss_2d (int gdof, int n, const c_truss_element_2d *elements, int nn, const c_node *nodes, double *k, int ldk)
 Assemble a dense global stiffness matrix from 2D truss elements.
 
void c_assemble_dynamic_system_truss_2d (int gdof, int n, const c_truss_element_2d *elements, int nn, const c_node *nodes, int rule, double *m, int ldm, double *k, int ldk)
 Assemble dense global mass and stiffness matrices from 2D truss elements.
 
void c_assemble_static_system_truss_3d (int gdof, int n, const c_truss_element_3d *elements, int nn, const c_node *nodes, double *k, int ldk)
 Assemble a dense global stiffness matrix from 3D truss elements.
 
void c_assemble_dynamic_system_truss_3d (int gdof, int n, const c_truss_element_3d *elements, int nn, const c_node *nodes, int rule, double *m, int ldm, double *k, int ldk)
 Assemble dense global mass and stiffness matrices from 3D truss elements.
 
void c_spring_element_2d_stiffness_matrix (const c_spring_element_2d *elem, double *k, int ldk)
 Compute the 4-by-4 global stiffness matrix of a 2D spring element.
 
double c_spring_element_2d_force (const c_spring_element_2d *elem, const double displacement[4])
 Compute the spring force (positive in tension) in a 2D spring element.
 
void c_spring_element_3d_stiffness_matrix (const c_spring_element_3d *elem, double *k, int ldk)
 Compute the 6-by-6 global stiffness matrix of a 3D spring element.
 
double c_spring_element_3d_force (const c_spring_element_3d *elem, const double displacement[6])
 Compute the spring force (positive in tension) in a 3D spring element.
 
void c_damper_element_2d_damping_matrix (const c_damper_element_2d *elem, double *c, int ldc)
 Compute the 4-by-4 global damping matrix of a 2D damper element.
 
double c_damper_element_2d_force (const c_damper_element_2d *elem, const double velocity[4])
 Compute the damper force (positive in tension) in a 2D damper element.
 
void c_damper_element_3d_damping_matrix (const c_damper_element_3d *elem, double *c, int ldc)
 Compute the 6-by-6 global damping matrix of a 3D damper element.
 
double c_damper_element_3d_force (const c_damper_element_3d *elem, const double velocity[6])
 Compute the damper force (positive in tension) in a 3D damper element.
 
void c_mass_element_2d_mass_matrix (const c_mass_element_2d *elem, double *m, int ldm)
 Compute the 2-by-2 mass matrix of a 2D point mass element.
 
void c_mass_element_3d_mass_matrix (const c_mass_element_3d *elem, double *m, int ldm)
 Compute the 3-by-3 mass matrix of a 3D point mass element.
 
void c_assemble_discrete_system_2d (int gdof, int nm, const c_mass_element_2d *masses, int nd, const c_damper_element_2d *dampers, int ns, const c_spring_element_2d *springs, int nn, const c_node *nodes, double *m, int ldm, double *c, int ldc, double *k, int ldk)
 Assemble dense global mass, damping, and stiffness matrices for a 2D system composed of discrete elements.
 
void c_assemble_discrete_system_3d (int gdof, int nm, const c_mass_element_3d *masses, int nd, const c_damper_element_3d *dampers, int ns, const c_spring_element_3d *springs, int nn, const c_node *nodes, double *m, int ldm, double *c, int ldc, double *k, int ldk)
 Assemble dense global mass, damping, and stiffness matrices for a 3D system composed of discrete elements.
 

Detailed Description

Function Documentation

◆ c_beam_element_2d_length()

double c_beam_element_2d_length ( const c_beam_element_2d *  elem)

Compute the length of a 2D beam element.

Parameters
elemBeam element.
Returns
Element length.

◆ c_beam_element_2d_stiffness_matrix()

void c_beam_element_2d_stiffness_matrix ( const c_beam_element_2d *  elem,
int  rule,
double *  k,
int  ldk 
)

Compute the 6-by-6 stiffness matrix of a 2D beam element.

Parameters
elemBeam element.
ruleIntegration rule, or zero to use the default rule.
kOutput stiffness matrix.
ldkLeading dimension of k.

◆ c_beam_element_2d_mass_matrix()

void c_beam_element_2d_mass_matrix ( const c_beam_element_2d *  elem,
int  rule,
double *  m,
int  ldm 
)

Compute the 6-by-6 mass matrix of a 2D beam element.

Parameters
elemBeam element.
ruleIntegration rule, or zero to use the default rule.
mOutput mass matrix.
ldmLeading dimension of m.

◆ c_beam_element_2d_rotation_matrix()

void c_beam_element_2d_rotation_matrix ( const c_beam_element_2d *  elem,
double *  r,
int  ldr 
)

Compute the 6-by-6 rotation matrix of a 2D beam element.

Parameters
elemBeam element.
rOutput rotation matrix.
ldrLeading dimension of r.

◆ c_beam_element_2d_strain()

void c_beam_element_2d_strain ( const c_beam_element_2d *  elem,
const double  displacement[6],
double  s,
double  strain[2] 
)

Compute the strain in a 2D beam element at a natural coordinate.

Parameters
elemBeam element.
displacement6-element element displacement vector.
sNatural coordinate in [-1, 1].
strainOutput 2-element strain vector.

◆ c_beam_element_2d_stress()

void c_beam_element_2d_stress ( const c_beam_element_2d *  elem,
const double  displacement[6],
double  s,
double  stress[2] 
)

Compute the stress in a 2D beam element at a natural coordinate.

Parameters
elemBeam element.
displacement6-element element displacement vector.
sNatural coordinate in [-1, 1].
stressOutput 2-element stress vector.

◆ c_beam_element_2d_shear_force()

double c_beam_element_2d_shear_force ( const c_beam_element_2d *  elem,
const double  displacement[6],
double  s 
)

Compute the local shear force in a 2D beam element at a natural coordinate.

Parameters
elemBeam element.
displacement6-element element displacement vector.
sNatural coordinate in [-1, 1].
Returns
Local shear force.

◆ c_beam_element_2d_bending_moment()

double c_beam_element_2d_bending_moment ( const c_beam_element_2d *  elem,
const double  displacement[6],
double  s 
)

Compute the local bending moment in a 2D beam element at a natural coordinate.

Parameters
elemBeam element.
displacement6-element element displacement vector.
sNatural coordinate in [-1, 1].
Returns
Local bending moment.

◆ c_beam_element_2d_external_force_vector()

void c_beam_element_2d_external_force_vector ( const c_beam_element_2d *  elem,
const double  q[2],
int  rule,
double  f[6] 
)

Compute the equivalent nodal force vector for a distributed load on a 2D beam element.

Parameters
elemBeam element.
q2-element distributed load vector, [qx, qy].
ruleIntegration rule, or zero to use the default rule.
fOutput 6-element nodal force vector.

◆ c_beam_element_3d_length()

double c_beam_element_3d_length ( const c_beam_element_3d *  elem)

Compute the length of a 3D beam element.

Parameters
elemBeam element.
Returns
Element length.

◆ c_beam_element_3d_stiffness_matrix()

void c_beam_element_3d_stiffness_matrix ( const c_beam_element_3d *  elem,
int  rule,
double *  k,
int  ldk 
)

Compute the 12-by-12 stiffness matrix of a 3D beam element.

Parameters
elemBeam element.
ruleIntegration rule, or zero to use the default rule.
kOutput stiffness matrix.
ldkLeading dimension of k.

◆ c_beam_element_3d_mass_matrix()

void c_beam_element_3d_mass_matrix ( const c_beam_element_3d *  elem,
int  rule,
double *  m,
int  ldm 
)

Compute the 12-by-12 mass matrix of a 3D beam element.

Parameters
elemBeam element.
ruleIntegration rule, or zero to use the default rule.
mOutput mass matrix.
ldmLeading dimension of m.

◆ c_beam_element_3d_rotation_matrix()

void c_beam_element_3d_rotation_matrix ( const c_beam_element_3d *  elem,
double *  r,
int  ldr 
)

Compute the 12-by-12 rotation matrix of a 3D beam element.

Parameters
elemBeam element.
rOutput rotation matrix.
ldrLeading dimension of r.

◆ c_beam_element_3d_strain()

void c_beam_element_3d_strain ( const c_beam_element_3d *  elem,
const double  displacement[12],
double  s,
double  strain[4] 
)

Compute the strain in a 3D beam element at a natural coordinate.

Parameters
elemBeam element.
displacement12-element element displacement vector.
sNatural coordinate in [-1, 1].
strainOutput 4-element strain vector.

◆ c_beam_element_3d_stress()

void c_beam_element_3d_stress ( const c_beam_element_3d *  elem,
const double  displacement[12],
double  s,
double  stress[4] 
)

Compute the stress in a 3D beam element at a natural coordinate.

Parameters
elemBeam element.
displacement12-element element displacement vector.
sNatural coordinate in [-1, 1].
stressOutput 4-element stress vector.

◆ c_beam_element_3d_shear_force()

void c_beam_element_3d_shear_force ( const c_beam_element_3d *  elem,
const double  displacement[12],
double  s,
double  force[2] 
)

Compute the local shear-force vector in a 3D beam element at a natural coordinate.

The output is ordered [y-axis, z-axis].

Parameters
elemBeam element.
displacement12-element element displacement vector.
sNatural coordinate in [-1, 1].
forceOutput 2-element local shear-force vector.

◆ c_beam_element_3d_bending_moment()

void c_beam_element_3d_bending_moment ( const c_beam_element_3d *  elem,
const double  displacement[12],
double  s,
double  moment[3] 
)

Compute the local moment vector in a 3D beam element at a natural coordinate.

The output is ordered [torsional, y-axis, z-axis].

Parameters
elemBeam element.
displacement12-element element displacement vector.
sNatural coordinate in [-1, 1].
momentOutput 3-element local moment vector.

◆ c_beam_element_3d_external_force_vector()

void c_beam_element_3d_external_force_vector ( const c_beam_element_3d *  elem,
const double  q[4],
int  rule,
double  f[12] 
)

Compute the equivalent nodal force vector for a distributed load on a 3D beam element.

Parameters
elemBeam element.
q4-element distributed load vector, [qx, qy, qz, qtheta].
ruleIntegration rule, or zero to use the default rule.
fOutput 12-element nodal force vector.

◆ c_assemble_static_system_beam_2d()

void c_assemble_static_system_beam_2d ( int  gdof,
int  n,
const c_beam_element_2d *  elements,
int  nn,
const c_node *  nodes,
int  rule,
double *  k,
int  ldk 
)

Assemble a dense global stiffness matrix from 2D beam elements.

Parameters
gdofTotal number of global degrees of freedom.
nElement count.
elementsBeam elements.
nnNode count.
nodesGlobal node list.
ruleIntegration rule, or zero to use the default rule.
kOutput gdof-by-gdof stiffness matrix.
ldkLeading dimension of k.

◆ c_assemble_dynamic_system_beam_2d()

void c_assemble_dynamic_system_beam_2d ( int  gdof,
int  n,
const c_beam_element_2d *  elements,
int  nn,
const c_node *  nodes,
int  rule,
double *  m,
int  ldm,
double *  k,
int  ldk 
)

Assemble dense global mass and stiffness matrices from 2D beam elements.

Parameters
gdofTotal number of global degrees of freedom.
nElement count.
elementsBeam elements.
nnNode count.
nodesGlobal node list.
ruleIntegration rule, or zero to use the default rule.
mOutput gdof-by-gdof mass matrix.
ldmLeading dimension of m.
kOutput gdof-by-gdof stiffness matrix.
ldkLeading dimension of k.

◆ c_assemble_static_system_beam_3d()

void c_assemble_static_system_beam_3d ( int  gdof,
int  n,
const c_beam_element_3d *  elements,
int  nn,
const c_node *  nodes,
int  rule,
double *  k,
int  ldk 
)

Assemble a dense global stiffness matrix from 3D beam elements.

Parameters
gdofTotal number of global degrees of freedom.
nElement count.
elementsBeam elements.
nnNode count.
nodesGlobal node list.
ruleIntegration rule, or zero to use the default rule.
kOutput gdof-by-gdof stiffness matrix.
ldkLeading dimension of k.

◆ c_assemble_dynamic_system_beam_3d()

void c_assemble_dynamic_system_beam_3d ( int  gdof,
int  n,
const c_beam_element_3d *  elements,
int  nn,
const c_node *  nodes,
int  rule,
double *  m,
int  ldm,
double *  k,
int  ldk 
)

Assemble dense global mass and stiffness matrices from 3D beam elements.

Parameters
gdofTotal number of global degrees of freedom.
nElement count.
elementsBeam elements.
nnNode count.
nodesGlobal node list.
ruleIntegration rule, or zero to use the default rule.
mOutput gdof-by-gdof mass matrix.
ldmLeading dimension of m.
kOutput gdof-by-gdof stiffness matrix.
ldkLeading dimension of k.

◆ c_apply_boundary_conditions_mtx()

void c_apply_boundary_conditions_mtx ( int  n,
int  nbc,
int *  gdof,
const double *  x,
int  ldx,
double *  rst,
int  ldr 
)

Apply boundary conditions to a dense matrix by removing the constrained rows and columns.

Parameters
nMatrix order.
nbcNumber of constrained degrees of freedom.
gdofConstrained degree-of-freedom indices; sorted in place.
xn-by-n matrix to constrain.
ldxLeading dimension of x.
rstOutput (n - nbc)-by-(n - nbc) constrained matrix.
ldrLeading dimension of rst.

◆ c_apply_boundary_conditions_vec()

void c_apply_boundary_conditions_vec ( int  n,
int  nbc,
int *  gdof,
const double *  x,
double *  rst 
)

Apply boundary conditions to a dense vector by removing the constrained entries.

Parameters
nVector length.
nbcNumber of constrained degrees of freedom.
gdofConstrained degree-of-freedom indices; sorted in place.
xn-element vector to constrain.
rstOutput (n - nbc)-element constrained vector.

◆ c_restore_constrained_values_dense()

void c_restore_constrained_values_dense ( int  nred,
int  nbc,
int *  gdof,
const double *  x,
double *  rst 
)

Restore the constrained degrees of freedom removed by c_apply_boundary_conditions_vec.

Parameters
nredLength of the reduced vector.
nbcNumber of constrained degrees of freedom.
gdofConstrained degree-of-freedom indices; sorted in place.
xnred-element reduced vector.
rstOutput (nred + nbc)-element restored vector.

◆ c_apply_displacement_constraint_dense()

void c_apply_displacement_constraint_dense ( int  dof,
double  val,
int  n,
double *  k,
int  ldk,
double *  f 
)

Apply a displacement constraint to a single degree of freedom.

Parameters
dofGlobal degree-of-freedom index (one-based).
valPrescribed displacement value.
nMatrix order.
kn-by-n stiffness matrix, updated in place.
ldkLeading dimension of k.
fn-element external force vector, updated in place.

◆ c_solve_static_system_dense()

void c_solve_static_system_dense ( int  n,
const double *  k,
int  ldk,
const double *  f,
double *  u 
)

Solve the static system K*u = f for a dense stiffness matrix.

Parameters
nMatrix order.
kn-by-n stiffness matrix.
ldkLeading dimension of k.
fn-element external force vector.
uOutput n-element solution vector.

◆ c_truss_element_2d_length()

double c_truss_element_2d_length ( const c_truss_element_2d *  elem)

Compute the length of a 2D truss element.

Parameters
elemTruss element.
Returns
Element length.

◆ c_truss_element_2d_stiffness_matrix()

void c_truss_element_2d_stiffness_matrix ( const c_truss_element_2d *  elem,
double *  k,
int  ldk 
)

Compute the 4-by-4 global stiffness matrix of a 2D truss element.

Parameters
elemTruss element.
kOutput stiffness matrix.
ldkLeading dimension of k.

◆ c_truss_element_2d_mass_matrix()

void c_truss_element_2d_mass_matrix ( const c_truss_element_2d *  elem,
int  rule,
double *  m,
int  ldm 
)

Compute the 4-by-4 consistent mass matrix of a 2D truss element.

Parameters
elemTruss element.
ruleIntegration rule, or zero to use the default rule.
mOutput mass matrix.
ldmLeading dimension of m.

◆ c_truss_element_2d_rotation_matrix()

void c_truss_element_2d_rotation_matrix ( const c_truss_element_2d *  elem,
double *  r,
int  ldr 
)

Compute the 4-by-4 rotation matrix of a 2D truss element.

Parameters
elemTruss element.
rOutput rotation matrix.
ldrLeading dimension of r.

◆ c_truss_element_2d_strain()

double c_truss_element_2d_strain ( const c_truss_element_2d *  elem,
const double  displacement[4] 
)

Compute the axial strain in a 2D truss element.

Parameters
elemTruss element.
displacement4-element global element displacement vector.
Returns
Axial strain.

◆ c_truss_element_2d_axial_force()

double c_truss_element_2d_axial_force ( const c_truss_element_2d *  elem,
const double  displacement[4] 
)

Compute the axial force (positive in tension) in a 2D truss element.

Parameters
elemTruss element.
displacement4-element global element displacement vector.
Returns
Axial force.

◆ c_truss_element_2d_external_force_vector()

void c_truss_element_2d_external_force_vector ( const c_truss_element_2d *  elem,
const double  q[2],
int  rule,
double  f[4] 
)

Compute the equivalent nodal force vector for a distributed load on a 2D truss element.

Parameters
elemTruss element.
q2-element distributed load vector in the element coordinate system.
ruleIntegration rule, or zero to use the default rule.
fOutput 4-element nodal force vector.

◆ c_truss_element_3d_length()

double c_truss_element_3d_length ( const c_truss_element_3d *  elem)

Compute the length of a 3D truss element.

Parameters
elemTruss element.
Returns
Element length.

◆ c_truss_element_3d_stiffness_matrix()

void c_truss_element_3d_stiffness_matrix ( const c_truss_element_3d *  elem,
double *  k,
int  ldk 
)

Compute the 6-by-6 global stiffness matrix of a 3D truss element.

Parameters
elemTruss element.
kOutput stiffness matrix.
ldkLeading dimension of k.

◆ c_truss_element_3d_mass_matrix()

void c_truss_element_3d_mass_matrix ( const c_truss_element_3d *  elem,
int  rule,
double *  m,
int  ldm 
)

Compute the 6-by-6 consistent mass matrix of a 3D truss element.

Parameters
elemTruss element.
ruleIntegration rule, or zero to use the default rule.
mOutput mass matrix.
ldmLeading dimension of m.

◆ c_truss_element_3d_rotation_matrix()

void c_truss_element_3d_rotation_matrix ( const c_truss_element_3d *  elem,
double *  r,
int  ldr 
)

Compute the 6-by-6 rotation matrix of a 3D truss element.

Parameters
elemTruss element.
rOutput rotation matrix.
ldrLeading dimension of r.

◆ c_truss_element_3d_strain()

double c_truss_element_3d_strain ( const c_truss_element_3d *  elem,
const double  displacement[6] 
)

Compute the axial strain in a 3D truss element.

Parameters
elemTruss element.
displacement6-element global element displacement vector.
Returns
Axial strain.

◆ c_truss_element_3d_axial_force()

double c_truss_element_3d_axial_force ( const c_truss_element_3d *  elem,
const double  displacement[6] 
)

Compute the axial force (positive in tension) in a 3D truss element.

Parameters
elemTruss element.
displacement6-element global element displacement vector.
Returns
Axial force.

◆ c_truss_element_3d_external_force_vector()

void c_truss_element_3d_external_force_vector ( const c_truss_element_3d *  elem,
const double  q[3],
int  rule,
double  f[6] 
)

Compute the equivalent nodal force vector for a distributed load on a 3D truss element.

Parameters
elemTruss element.
q3-element distributed load vector in the element coordinate system.
ruleIntegration rule, or zero to use the default rule.
fOutput 6-element nodal force vector.

◆ c_assemble_static_system_truss_2d()

void c_assemble_static_system_truss_2d ( int  gdof,
int  n,
const c_truss_element_2d *  elements,
int  nn,
const c_node *  nodes,
double *  k,
int  ldk 
)

Assemble a dense global stiffness matrix from 2D truss elements.

Parameters
gdofTotal number of global degrees of freedom.
nElement count.
elementsTruss elements.
nnNode count.
nodesGlobal node list.
kOutput gdof-by-gdof stiffness matrix.
ldkLeading dimension of k.

◆ c_assemble_dynamic_system_truss_2d()

void c_assemble_dynamic_system_truss_2d ( int  gdof,
int  n,
const c_truss_element_2d *  elements,
int  nn,
const c_node *  nodes,
int  rule,
double *  m,
int  ldm,
double *  k,
int  ldk 
)

Assemble dense global mass and stiffness matrices from 2D truss elements.

Parameters
gdofTotal number of global degrees of freedom.
nElement count.
elementsTruss elements.
nnNode count.
nodesGlobal node list.
ruleIntegration rule, or zero to use the default rule.
mOutput gdof-by-gdof mass matrix.
ldmLeading dimension of m.
kOutput gdof-by-gdof stiffness matrix.
ldkLeading dimension of k.

◆ c_assemble_static_system_truss_3d()

void c_assemble_static_system_truss_3d ( int  gdof,
int  n,
const c_truss_element_3d *  elements,
int  nn,
const c_node *  nodes,
double *  k,
int  ldk 
)

Assemble a dense global stiffness matrix from 3D truss elements.

Parameters
gdofTotal number of global degrees of freedom.
nElement count.
elementsTruss elements.
nnNode count.
nodesGlobal node list.
kOutput gdof-by-gdof stiffness matrix.
ldkLeading dimension of k.

◆ c_assemble_dynamic_system_truss_3d()

void c_assemble_dynamic_system_truss_3d ( int  gdof,
int  n,
const c_truss_element_3d *  elements,
int  nn,
const c_node *  nodes,
int  rule,
double *  m,
int  ldm,
double *  k,
int  ldk 
)

Assemble dense global mass and stiffness matrices from 3D truss elements.

Parameters
gdofTotal number of global degrees of freedom.
nElement count.
elementsTruss elements.
nnNode count.
nodesGlobal node list.
ruleIntegration rule, or zero to use the default rule.
mOutput gdof-by-gdof mass matrix.
ldmLeading dimension of m.
kOutput gdof-by-gdof stiffness matrix.
ldkLeading dimension of k.

◆ c_spring_element_2d_stiffness_matrix()

void c_spring_element_2d_stiffness_matrix ( const c_spring_element_2d *  elem,
double *  k,
int  ldk 
)

Compute the 4-by-4 global stiffness matrix of a 2D spring element.

Parameters
elemSpring element.
kOutput stiffness matrix.
ldkLeading dimension of k.

◆ c_spring_element_2d_force()

double c_spring_element_2d_force ( const c_spring_element_2d *  elem,
const double  displacement[4] 
)

Compute the spring force (positive in tension) in a 2D spring element.

Parameters
elemSpring element.
displacement4-element global element displacement vector.
Returns
Spring force.

◆ c_spring_element_3d_stiffness_matrix()

void c_spring_element_3d_stiffness_matrix ( const c_spring_element_3d *  elem,
double *  k,
int  ldk 
)

Compute the 6-by-6 global stiffness matrix of a 3D spring element.

Parameters
elemSpring element.
kOutput stiffness matrix.
ldkLeading dimension of k.

◆ c_spring_element_3d_force()

double c_spring_element_3d_force ( const c_spring_element_3d *  elem,
const double  displacement[6] 
)

Compute the spring force (positive in tension) in a 3D spring element.

Parameters
elemSpring element.
displacement6-element global element displacement vector.
Returns
Spring force.

◆ c_damper_element_2d_damping_matrix()

void c_damper_element_2d_damping_matrix ( const c_damper_element_2d *  elem,
double *  c,
int  ldc 
)

Compute the 4-by-4 global damping matrix of a 2D damper element.

Parameters
elemDamper element.
cOutput damping matrix.
ldcLeading dimension of c.

◆ c_damper_element_2d_force()

double c_damper_element_2d_force ( const c_damper_element_2d *  elem,
const double  velocity[4] 
)

Compute the damper force (positive in tension) in a 2D damper element.

Parameters
elemDamper element.
velocity4-element global element velocity vector.
Returns
Damper force.

◆ c_damper_element_3d_damping_matrix()

void c_damper_element_3d_damping_matrix ( const c_damper_element_3d *  elem,
double *  c,
int  ldc 
)

Compute the 6-by-6 global damping matrix of a 3D damper element.

Parameters
elemDamper element.
cOutput damping matrix.
ldcLeading dimension of c.

◆ c_damper_element_3d_force()

double c_damper_element_3d_force ( const c_damper_element_3d *  elem,
const double  velocity[6] 
)

Compute the damper force (positive in tension) in a 3D damper element.

Parameters
elemDamper element.
velocity6-element global element velocity vector.
Returns
Damper force.

◆ c_mass_element_2d_mass_matrix()

void c_mass_element_2d_mass_matrix ( const c_mass_element_2d *  elem,
double *  m,
int  ldm 
)

Compute the 2-by-2 mass matrix of a 2D point mass element.

Parameters
elemMass element.
mOutput mass matrix.
ldmLeading dimension of m.

◆ c_mass_element_3d_mass_matrix()

void c_mass_element_3d_mass_matrix ( const c_mass_element_3d *  elem,
double *  m,
int  ldm 
)

Compute the 3-by-3 mass matrix of a 3D point mass element.

Parameters
elemMass element.
mOutput mass matrix.
ldmLeading dimension of m.

◆ c_assemble_discrete_system_2d()

void c_assemble_discrete_system_2d ( int  gdof,
int  nm,
const c_mass_element_2d *  masses,
int  nd,
const c_damper_element_2d *  dampers,
int  ns,
const c_spring_element_2d *  springs,
int  nn,
const c_node *  nodes,
double *  m,
int  ldm,
double *  c,
int  ldc,
double *  k,
int  ldk 
)

Assemble dense global mass, damping, and stiffness matrices for a 2D system composed of discrete elements.

Any element count may be zero, in which case the corresponding array pointer may be NULL.

Parameters
gdofTotal number of global degrees of freedom.
nmMass element count.
massesMass elements.
ndDamper element count.
dampersDamper elements.
nsSpring element count.
springsSpring elements.
nnNode count.
nodesGlobal node list.
mOutput gdof-by-gdof mass matrix.
ldmLeading dimension of m.
cOutput gdof-by-gdof damping matrix.
ldcLeading dimension of c.
kOutput gdof-by-gdof stiffness matrix.
ldkLeading dimension of k.

◆ c_assemble_discrete_system_3d()

void c_assemble_discrete_system_3d ( int  gdof,
int  nm,
const c_mass_element_3d *  masses,
int  nd,
const c_damper_element_3d *  dampers,
int  ns,
const c_spring_element_3d *  springs,
int  nn,
const c_node *  nodes,
double *  m,
int  ldm,
double *  c,
int  ldc,
double *  k,
int  ldk 
)

Assemble dense global mass, damping, and stiffness matrices for a 3D system composed of discrete elements.

Any element count may be zero, in which case the corresponding array pointer may be NULL.

Parameters
gdofTotal number of global degrees of freedom.
nmMass element count.
massesMass elements.
ndDamper element count.
dampersDamper elements.
nsSpring element count.
springsSpring elements.
nnNode count.
nodesGlobal node list.
mOutput gdof-by-gdof mass matrix.
ldmLeading dimension of m.
cOutput gdof-by-gdof damping matrix.
ldcLeading dimension of c.
kOutput gdof-by-gdof stiffness matrix.
ldkLeading dimension of k.