Boost logo

Boost Users :

Subject: Re: [Boost-users] [units] conversion_factor in the two directions
From: Steven Watanabe (watanabesj_at_[hidden])
Date: 2010-02-25 23:41:17


AMDG

alfC wrote:
> I managed to make CONVERSION_FACTOR definitions to work between to
> unit systems (atomic and SI). I definied atomic system by following
> the si example. I can manage to transform lengths (probably because
> they are base dimensions in both systems, but when I try to do the
> same for energies (that is a base_dimension only in the atomic system)
> I can't compile the line with the declaration "en3".
>
> The first question is why the first ...CONVERSION_FACTOR doesn't work
> in the two directions (as it did for lengths). second, why the
> second ...CONVERSION_FACTOR doesn't help to compile en3.
>
> BOOST_UNITS_DEFINE_CONVERSION_FACTOR(
> atomic::hartree_energy_base_unit,
> si::energy,
> double, 4.359744e-18
> );
>
> //compiles but doesn't help for en3
> BOOST_UNITS_DEFINE_CONVERSION_FACTOR(
> si::energy,
> atomic::hartree_energy_base_unit,
> double, 1./4.359744e-18
> );
>

This should not compile. I'll look into it. You probably need
to fragment it into SI base units. If you could provide either
the error message, or even better, the definition of the atomic
system, I could help more.

> int main(){
> quantity<si::length> l1(1.*si::meter); //works
> quantity<si::length> l2(1.*atomic::bohr); //works
> quantity<atomic::length> l3(1.*atomic::bohr); //works
> quantity<atomic::length> l4(1.*si::meter); //works
>
> quantity<si::energy> en1(1.*si::joules); //works
> quantity<si::energy> en2(1.*atomic::hartree); //works
> quantity<atomic::energy> en3(1.*atomic::hartree); //work
> quantity<atomic::energy> en4(1.*si::joules); //does not work,
> compilation error
> return 0;
> }
>

In Christ,
Steven Watanabe


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