eki 0.2.0

Eki is a solver for steady and transient flow in fluid networks.
Documentation
use eki::node::Node;
use eki::nodes::{ pressure::Pressure, flow::Flow, connection::Connection };
use eki::edge::Edge;
use eki::edges::{ pipe::Pipe, valve::Valve };

#[test]
fn pipe() {
    let node_from = Node::Pressure( Pressure::new( 0 ) );
    let node_to = Node::Flow( Flow::new( 1 ) );
    let mut edge = Edge::Pipe( Pipe::new( node_from, node_to ) );
    *edge.steady_mass_flow() = 1.0;
    assert_eq!( *edge.mass_flow(), vec![ 1.0 ] );
    assert_eq!( edge.id(), (0,1) );
    assert_eq!( *edge.length().unwrap(), 10.0 );
    assert_eq!( *edge.diameter(), 52.5e-3 );
    assert_eq!( *edge.roughness().unwrap(), 0.05e-3 );
    assert_eq!( *edge.thickness(), 0.005 );
    assert_eq!( *edge.youngs_modulus(), 2.0e11 );
}

#[test]
fn valve() {
    let node_from = Node::Pressure( Pressure::new( 1 ) );
    let node_to = Node::Connection( Connection::new( 2 ) );
    let mut edge = Edge::Valve( Valve::new( node_from, node_to ) );
    assert_eq!( edge.id(), (1,2) );
    assert_eq!( *edge.diameter(), 52.5e-3 );
    assert_eq!( *edge.thickness(), 0.005 );
    assert_eq!( *edge.youngs_modulus(), 2.0e11 );
    assert_eq!( *edge.open_percent().unwrap(), vec![ 1.0 ] );
    assert_eq!( edge.pressure_loss_coefficient( 0 ).unwrap(), 0.25 );
}

#[test]
fn resistance() {
    let node_from = Node::Pressure( Pressure::new( 1 ) );
    let node_to = Node::Connection( Connection::new( 2 ) );
    let edge = Edge::Pipe( Pipe::new( node_from, node_to ) );
    let q = 0.01;
    let r = edge.resistance( q, 1.1375e-6, 9.81, 0 );
    assert_eq!( r, -4.299969928559725 );
}