All Downloads are FREE. Search and download functionalities are using the official Maven repository.

axle.quanta.Flow.scala Maven / Gradle / Ivy

The newest version!
package axle.quanta

import axle.graph.DirectedGraph
import axle.graph.Vertex
import axle.algebra.Bijection
import spire.algebra.Eq
import spire.algebra.Field
import spire.implicits.DoubleAlgebra
import spire.math.Rational
import spire.math.Real
import spire.implicits._

abstract class Flow extends Quantum {
  def wikipediaUrl = "http://en.wikipedia.org/wiki/Volumetric_flow_rate"
}

object Flow extends Flow {

  type Q = Flow

  import Time._

  def units[N: Field: Eq] = List[UnitOfMeasurement[Q, N]](
    unit("m3s", "m3s"), // derive
    unit("Niagara Falls Flow", "Niagara Falls Flow", Some("http://en.wikipedia.org/wiki/Niagara_Falls")))

  def links[N: Field: Eq] = {
    implicit val baseCG = cgnDisconnected[N]
    List[(UnitOfMeasurement[Q, N], UnitOfMeasurement[Q, N], Bijection[N, N])](
      (m3s, niagaraFalls, ScaleInt(1834)))
  }

  //  implicit val cgFlowRational: DirectedGraph[UnitOfMeasurement[Flow, Rational], Rational => Rational] = cgn[Rational]
  //  implicit val mtRational = modulize[Flow, Rational]

  def niagaraFalls[N](implicit fieldN: Field[N], eqN: Eq[N], cg: DirectedGraph[UnitOfMeasurement[Flow, N], N => N]) = byName(cg, "Niagara Falls Flow")
  def m3s[N](implicit fieldN: Field[N], eqN: Eq[N], cg: DirectedGraph[UnitOfMeasurement[Flow, N], N => N]) = byName(cg, "m3s")

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy