use qtruss::*;
#[test]
fn triangle_truss() {
let n0 = Node::new(
Vector::new([-1.0, 0.0]),
Constraint::Pin,
);
let n1 = Node::new(
Vector::new([1.0, 0.0]),
Constraint::HorizontalSlide (Vector::zero()),
);
let n2 = Node::new(
Vector::new([0.0, 2.0]),
Constraint::Free (Vector::new([1000.0, 0.0])),
);
let nodes = [n0, n1, n2];
let mut truss: Truss<3, 3, 3> = Truss::new(nodes);
let e = 1E+9;
let a = 1E-4;
truss.add(0, 2, e, a);
truss.add(1, 2, e, a);
truss.add(0, 1, e, a);
let u = truss.solve().unwrap();
println!("Global Displacements\n{}", u);
let f = truss.internal_force(2).unwrap();
println!("Element Internal Force: {} N", f);
let c = truss.compliance().unwrap();
println!("Truss Compliance: {} J", c);
}