Falaise  4.0.1
SuperNEMO Software Toolkit
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