Boost Users :
Subject: [Boost-users] Flow rate dimensional analysis
From: Michael Powell (mwpowellnm_at_[hidden])
Date: 2011-09-19 14:10:32
I am trying to perform a flow rate through an orifice calculation (Volume
per Time or L^3T^-1) using the following dimensional analysis:
Q = Cf * A * sqrt( 2 * abs(P1-P2) )
On paper the dimensional analysis works out correctly. I know we should be
receiving a L^3T^-1 consequent to the calculation.
If I just take this on one line, it seems to compile:
__C_flow * __a_orifice * boost::units::sqrt(__two * __p_diff / __d);
Where __a_orifice is the area of the orifice, __p_diff is the pressure
differential (absolute value), and __d is the mass density. __C_flow
(coefficient of flow through orifice) and __two (2.0) are both
In terms of units quantities, these are all defined as quantity<si::area>,
quantity<si::pressure>, quantity<si::mass_density>, and
quantity<si::dimensionless>, to start with.
I think my flow-rate dimension and/or unit must be incorrect, but I am
failing to see why in order to know what to do to correct the error.
When I take:
si::flow_rate __fr = __C_flow * __a_orifice * boost::units::sqrt(__two *
__p_diff / __d);
I am receiving the following compiler error as my clue...
Error 1 error C2440: 'initializing' : cannot convert from
'boost::units::quantity<Unit,Y>' to 'boost::units::quantity<Unit,Y>'
I'd like to set this up in as base a dimension as possible because later on
we'll be introducing unit views, converting from base units to a view unit,
or unit system, along these lines, but if we have to specify this in
specific unit terms, so be it. We'll worry about unit conversions later on.
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net