qtruss 0.3.0

A simple finite-element solver for trusses.
Documentation
//! Truss Analysis Code

use qtruss::*;

#[test]
fn triangle_truss() {
    // Construct nodes
    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];

    // Construct truss
    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);
}