RatRod_rs/elements/
mod.rs

1use 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}