7 Mart 2018 Çarşamba

units derived_dimension Sınıfı

Giriş
Bu sınıf iki tane farklı tipten dimension ikişkisini belirtmek için kullanılır. Örneğin mass ve time dimension gibi.

1.Dimension sınıfından unit tanımlanır. kilogram/seconds gibi.
2. Unit'lerden quantity tanımlanır. Quantity nesneleri ile aritmetik işlemler yapılabilr.

Tanımlama


Örnek
Kütle ve zaman boyutunu tanımlamak için şöyle yaparız. Bu dimension kütle ve zaman ile ilgili örneğin kilogram_per_seconds gibi bir birim tanımlamak için kullanılabilir.
typedef boost::units::derived_dimension<
  boost::units::mass_base_dimension, 1,
  boost::units::time_base_dimension, -1
>::type mass_flow_rate_dimension;
Örnek
Elimizde şöyle bir kod olsun.
#include <boost/units/io.hpp>
#include <boost/units/systems/si.hpp>
#include <boost/units/systems/si/io.hpp>

namespace Units {
  using namespace boost::units;
  namespace SI = boost::units::si;

  template <class U> using Quantity = quantity<U>;

  typedef quantity<si::mass> Mass;
  typedef quantity<si::time> Time;

  typedef derived_dimension<mass_base_dimension, 1,
    time_base_dimension, -1>::type MassFlowDimension;
  typedef unit<MassFlowDimension, si::system> MassFlow;
  typedef Quantity<MassFlow> MassFlowRate;
  BOOST_UNITS_STATIC_CONSTANT(kilogram_per_seconds, MassFlow);
}
Şöyle yaparız
Units::MassFlowRate const mass_flow       = 7.0*Units::kilogram_per_seconds;
Units::MassFlowRate const other_mass_flow = 1.0*(Units::SI::kilogram / Units::SI::second);
Units::Mass         const total_flow      = mass_flow * (1.0*Units::SI::second);

std::cout << "mass_flow:       " << mass_flow       << "\n";
std::cout << "other_mass_flow: " << other_mass_flow << "\n";
std::cout << "total_flow:      " << total_flow      << "\n";
Çıktı olarak şunu alırız.
mass_flow:       7 kg s^-1
other_mass_flow: 1 kg s^-1
total_flow:      7 kg


Hiç yorum yok:

Yorum Gönder