RatRod_rs/elements/
mod.rs1use sparse_matrix::matrix::coo_mat::CooMat;
2
3use self::{truss::Truss, beam::Beam};
4
5pub mod truss;
6pub mod beam;
7
8use serde::{Serialize, Deserialize};
9
10#[derive(Debug, PartialEq, Clone, Serialize, Deserialize)]
11pub enum Element {
12 Truss(Truss),
13 Beam(Beam),
14}
15
16pub enum ElementType {
17 Truss,
18 Beam
19}
20
21pub trait ElementTrait {
22 fn get_matrix(&self, dimension : u8, mat_size : usize, nodes : &Vec<usize>) -> CooMat;
23}
24
25impl ElementTrait for Element {
26 fn get_matrix(&self, dimension : u8, mat_size : usize, nodes : &Vec<usize>) -> CooMat {
27 match self {
28 Element::Truss(truss) => truss.get_matrix(dimension, mat_size, nodes[0], nodes[1]),
29 Element::Beam(beam) => beam.get_matrix(dimension, mat_size, nodes[0], nodes[1]),
30 }
31 }
32}