Falaise  4.0.1
SuperNEMO Software Toolkit
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Classes
System of Units

System of Units used internally by Falaise. More...

Classes

class  falaise::config::absorbed_dose_t
 quantity for values with dimension tag absorbed_dose ([L2][T-2]) More...
 
class  falaise::config::acceleration_t
 quantity for values with dimension tag acceleration ([L][T-2]) More...
 
class  falaise::config::activity_t
 quantity for values with dimension tag activity ([T-1]) More...
 
class  falaise::config::amount_t
 quantity for values with dimension tag amount ([N]) More...
 
class  falaise::config::angle_t
 quantity for values with dimension tag angle ([1]) More...
 
class  falaise::config::angular_frequency_t
 quantity for values with dimension tag angular_frequency ([T-1]) More...
 
class  falaise::config::capacitance_t
 quantity for values with dimension tag capacitance ([M-1][L-2][T4][I2]) More...
 
class  falaise::config::conductance_t
 quantity for values with dimension tag conductance ([M-1][L-2][T3][I2]) More...
 
class  falaise::config::conductivity_t
 quantity for values with dimension tag conductivity ([M-2][L-2][T3][I2]) More...
 
class  falaise::config::cross_section_t
 quantity for values with dimension tag cross_section ([L2]) More...
 
class  falaise::config::data_storage_t
 quantity for values with dimension tag data_storage ([1]) More...
 
class  falaise::config::data_transfer_rate_t
 quantity for values with dimension tag data_transfer_rate ([T-1]) More...
 
class  falaise::config::density_t
 quantity for values with dimension tag density ([M][L-3]) More...
 
class  falaise::config::electric_charge_t
 quantity for values with dimension tag electric_charge ([T][I]) More...
 
class  falaise::config::electric_current_t
 quantity for values with dimension tag electric_current ([I]) More...
 
class  falaise::config::electric_displacement_field_t
 quantity for values with dimension tag electric_displacement_field ([L-2][T][I]) More...
 
class  falaise::config::electric_field_t
 quantity for values with dimension tag electric_field ([M][L][T-3][I-1]) More...
 
class  falaise::config::electric_flux_t
 quantity for values with dimension tag electric_flux ([M][L3][T-3][I-1]) More...
 
class  falaise::config::electric_potential_t
 quantity for values with dimension tag electric_potential ([M][L2][T-3][I-1]) More...
 
class  falaise::config::electric_resistance_t
 quantity for values with dimension tag electric_resistance ([M][L2][T-3][I-2]) More...
 
class  falaise::config::electric_signal_integral_t
 quantity for values with dimension tag electric_signal_integral ([M][L2][T-2][I-1]) More...
 
class  falaise::config::energy_t
 quantity for values with dimension tag energy ([M][L2][T-2]) More...
 
class  falaise::config::equivalent_dose_t
 quantity for values with dimension tag equivalent_dose ([L2][T-2]) More...
 
class  falaise::config::force_t
 quantity for values with dimension tag force ([M][L][T-2]) More...
 
class  falaise::config::fraction_t
 quantity for values with dimension tag fraction ([1]) More...
 
class  falaise::config::frequency_t
 quantity for values with dimension tag frequency ([T-1]) More...
 
class  falaise::config::illuminance_t
 quantity for values with dimension tag illuminance () More...
 
class  falaise::config::inductance_t
 quantity for values with dimension tag inductance ([M][L2][T-2][I-2]) More...
 
class  falaise::config::length_t
 quantity for values with dimension tag length ([L]) More...
 
class  falaise::config::level_t
 quantity for values with dimension tag level ([1]) More...
 
class  falaise::config::luminance_t
 quantity for values with dimension tag luminance ([L-2][J]) More...
 
class  falaise::config::luminous_energy_t
 quantity for values with dimension tag luminous_energy () More...
 
class  falaise::config::luminous_energy_density_t
 quantity for values with dimension tag luminous_energy_density () More...
 
class  falaise::config::luminous_exposure_t
 quantity for values with dimension tag luminous_exposure () More...
 
class  falaise::config::luminous_flux_t
 quantity for values with dimension tag luminous_flux () More...
 
class  falaise::config::luminous_intensity_t
 quantity for values with dimension tag luminous_intensity ([J]) More...
 
class  falaise::config::magnetic_field_strength_t
 quantity for values with dimension tag magnetic_field_strength ([L-1][I]) More...
 
class  falaise::config::magnetic_flux_t
 quantity for values with dimension tag magnetic_flux ([M][L2][T-2][I-1]) More...
 
class  falaise::config::magnetic_flux_density_t
 quantity for values with dimension tag magnetic_flux_density ([M][T-2][I-1]) More...
 
class  falaise::config::mass_t
 quantity for values with dimension tag mass ([M]) More...
 
class  falaise::config::mass_activity_t
 quantity for values with dimension tag mass_activity ([M-1][T-1]) More...
 
class  falaise::config::permeability_t
 quantity for values with dimension tag permeability ([M][L][T-2][I-2]) More...
 
class  falaise::config::permittivity_t
 quantity for values with dimension tag permittivity ([M-1][L-3][T4][I2]) More...
 
class  falaise::config::power_t
 quantity for values with dimension tag power ([M][L2][T-3]) More...
 
class  falaise::config::pressure_t
 quantity for values with dimension tag pressure ([M][L-1][T-2]) More...
 
class  falaise::config::procedure_defined_t
 quantity for values with dimension tag procedure_defined ([?]) More...
 
class  falaise::config::resistivity_t
 quantity for values with dimension tag resistivity ([M][L3][T-3][I-2]) More...
 
class  falaise::config::solid_angle_t
 quantity for values with dimension tag solid_angle ([1]) More...
 
class  falaise::config::surface_t
 quantity for values with dimension tag surface ([L2]) More...
 
class  falaise::config::surface_activity_t
 quantity for values with dimension tag surface_activity ([L-2][T-1]) More...
 
class  falaise::config::surface_density_t
 quantity for values with dimension tag surface_density ([M][L-2]) More...
 
class  falaise::config::surface_tension_t
 quantity for values with dimension tag surface_tension ([M][T-2]) More...
 
class  falaise::config::temperature_t
 quantity for values with dimension tag temperature ([theta]) More...
 
class  falaise::config::time_t
 quantity for values with dimension tag time ([T]) More...
 
class  falaise::config::velocity_t
 quantity for values with dimension tag velocity ([L][T-1]) More...
 
class  falaise::config::volume_t
 quantity for values with dimension tag volume ([L3]) More...
 
class  falaise::config::volume_activity_t
 quantity for values with dimension tag volume_activity ([L-3][T-1]) More...
 
class  falaise::config::wave_number_t
 quantity for values with dimension tag wave_number ([L-1]) More...
 

Detailed Description

System of Units used internally by Falaise.

Physical units in Falaise are handled by a two level system. Parameters passed as configuration via datatools::properties are handled by concrete classes of falaise::config::quantity_t to enforce dimensional correctness. For example:

// Throws unless the "x" property was written as "x : real as length = VALUE LENGTHUNIT"
auto x = ps.get<falaise::config::length_t>("x");

Internal C++ code in Falaise or plugins treats physical units as raw doubles, using CLHEP::Units library to provide scaling factors for numerical correctness. It is up to the developer to maintain the dimensional correctness of all calculations.

The concrete classes of falaise::config::quantity_t listed can be converted to double values in the CLHEP::Units numeric system via the overloaded function call operator:

double x{l()}; // or double x = l();
std::cout << x << std::endl; // Prints "3140.0"

It is recommended that you only use the falaise::config::quantity_t for parameter validation, storing extracted values in doubles for actual calculation. The concrete types do not provide any dimensional analysis functionality, so the following will not compile:

falaise::config::force_t fa = m*a; // compile error;
falaise::config::force_t fb = m()*a(); //compile error;
double fc = m()*a(); //o.k., dimensionless, but in CLHEP::Units scale

This is intentional so as to closely map the functionality of the underlying datatools::units interface as a pure numeric/scaling system. The developer must exercise care in using the extracted double parameters to maintain dimensional correctness, but their values are guaranteed to be valid in CLHEP::Units system.

See also
falaise::config::quantity_t
falaise::config::property_set