Boost logo

Boost Users :

Subject: [Boost-users] Flow rate dimensional analysis
From: Michael Powell (mwpowellnm_at_[hidden])
Date: 2011-09-19 14:10:32

Boost::units users,

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.


,boost::units::time_base_dimension,-1>::type flow_rate_dimension;


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>'
461 CS.Calculations.Managed

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.

Best regards,

Michael Powell

Boost-users list run by williamkempf at, kalb at, bjorn.karlsson at, gregod at, wekempf at