
Boost Users : 
Subject: Re: [Boostusers] boost::units primer explained / conversion factors required
From: Michael Powell (mwpowellnm_at_[hidden])
Date: 20110721 22:10:41
Hmm, let's see. I think it's more like this, (ML^1T^2 * L^1) * ML^3 *
(ML^1T^2 * L^1)^1 = L^1T^2, Pressure Gradient divided by Fluid (or
Mass) Density.
I think I follow; doing my home work, one bar being a kilopascal (kPa), or
(10e3 * NL^2), or (10e3 * MLT^2), so we have (10e3 * MLT^2 * L^1).
Okay, then yes we divide by mass density of ML^3, or multiply by (ML^3)^1
if you prefer.
So we have (10e3 * MLT^2 * L^1) * (ML^3)^1.
Hope my rusty dimensional analysis skills are showing... :)
Okay, so we can do some reductions I think, (10e3 * L^3 * T^2). Am I
reading this correctly? Is this the rate at which a volume transfers?
Something along these lines. Really not up on my dimensional analysis like I
should be; but I WILL be.
However it reduced, please verify I am reducing correctly, I don't think the
units are supposed to make sense; we're arriving at an intermediate
conversion factor I believe. At least that's how it is explained to me.
On Thu, Jul 21, 2011 at 5:23 PM, Noah Roberts <roberts.noah_at_[hidden]>wrote:
> On 7/21/2011 3:16 PM, Michael Powell wrote:
>
>> Okay, here's what we need to get at, for starters. And maybe an
>> illustration or three and a little exchange will go a long way towards
>> helping my better comprehend units.
>>
>> I'm starting with a set of SI calculations for oil and gas constants
>> calculations. Eventually we will need to accommodate US units as well.
>> But not quite yet.
>>
>> We need to get at a calculation involving Pressure Gradient, which ends
>> up being metric::bar/si::meter (bars over meters) in specific units, or
>> I suppose si::pressure/si::length might also work.
>>
>> Then we need to get after Fluid Density, which ends up being
>> si::kilogram/si:meter^3 (kilograms over cubic meters) in specific units,
>> or I suppose si::mass/si::meter^3 (I don't know what this looks like in
>> terms of boost::units, maybe one of the volumes?), or perhaps make use
>> of mass_density?
>>
>
> Yes, it's mass_density.
>
>
>
>> We take all that and divide Pressure Gradient by Fluid Density to arrive
>> at what we hope will be the the conversion factor: 0.0000981. Which we
>> could specify that as a constant, but I like proving it through the
>> software first (plausibly once) when we ask for it.
>>
>
> So, by your description:
>
> ML^3 * (ML^1T^2 * L^1)^1 = L^1T^2.
>
> This latter part is the dimension your factor is in.
>
> using namespace boost::units;
>
> typedef derived_dimension<length_base_**dimension, 1,
> time_base_dimension, 2>::type funky_factor_dimension
>
> typedef unit<funky_factor_dimension, si::system> funky_factor;
>
> quantity<funky_factor> factor(quantity<si::pressure> p,
> quantity<si::length> l, quantity<si::mass_density> d)
> {
> return (p / l) / d;
> }
>
> Alternatively:
>
> template < typename System >
> quantity<unit<funky_factor_**dimension, System>>
> factor( quantity<unit<pressure_**dimension,System>> p
> , quantity<unit<length_**dimension,System>> l
> , quantity<unit<mass_density_**dimension,System>> d )
> {
> return (p / l) / d;
>
> }
>
>
>> Similar type calculations would follow for US units involving gallons,
>> cubic inches, inches, and inches per foot, along these lines.
>>
>
> As long as you use a coherent system, the template version above should
> work (assuming I got all the types correct).
>
> ______________________________**_________________
> Boostusers mailing list
> Boostusers_at_[hidden]
> http://lists.boost.org/**mailman/listinfo.cgi/boost**users
>
Boostusers 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