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 };

#[test]
fn default() {
    let mut node = Node::default();
    assert_eq!( *node.elevation(), 0.0 );
    assert_eq!( *node.pressure(), vec![ 101325.0 ] );
    assert_eq!( *node.consumption(), vec![ 0.0 ] );
    let z = node.elevation();
    *z = 3.14; 
    assert_eq!( *node.elevation(), 3.14 );
    assert_eq!( node.id(), 0 );
}

#[test]
fn head() {
    let mut node = Node::default();
    let g = 9.81;
    let density = 1000.0;
    let head = node.head(g, density)[0];
    assert_eq!( head, 101325.0 / (g * density) );
    let z = node.elevation();
    *z = 3.14; 
    let head = node.head(g, density)[0];
    assert_eq!( head, 3.14 + 101325.0 / (g * density) );
}

#[test]
fn flow() {
    let mut node = Node::Flow( Flow::new( 1 ) );
    assert_eq!( *node.consumption(), vec![ -0.1 ] );
    assert_eq!( node.id(), 1 );
    assert_eq!( node.is_known_flow(), true );
}

#[test]
fn pressure() {
    let mut node = Node::Pressure( Pressure::new( 2 ) );
    assert_eq!( *node.pressure(), vec![ 101325.0 ] );
    assert_eq!( node.id(), 2 );
    assert_eq!( node.is_known_pressure(), true );
}

#[test]
fn connection() {
    let mut node = Node::Connection( Connection::new( 3 ) );
    assert_eq!( *node.elevation(), 0.0 );
    assert_eq!( *node.pressure(), vec![ 101325.0 ] );
    assert_eq!( *node.consumption(), vec![ 0.0 ] );
    assert_eq!( node.id(), 3 );
    assert_eq!( node.is_connection(), true );
}