23 #ifndef COM_DAFER45_TBTK_UNIT_HANDLER 24 #define COM_DAFER45_TBTK_UNIT_HANDLER 29 #ifdef M_E //Avoid name clash with math.h macro M_E 91 enum class TimeUnit {s, ms, us, ns, ps, fs, as};
129 kC, C, mC, uC, nC, pC, fC, aC, Te, Ge, Me, ke, e
147 enum class MassUnit{kg, g, mg, ug, ng, pg, fg, ag, u};
163 MT, kT, T, mT, uT, nT, GG, MG, kG, G, mG, uG
179 static double getEB();
182 static double getEN();
185 static double getCB();
188 static double getCN();
445 static constexpr
double HBAR = 6.582119514e-16;
448 static constexpr
double K_B = 8.6173324e-5;
451 static constexpr
double E = 1.6021766208e-19;
454 static constexpr
double C = 2.99792458e8;
457 static constexpr
double N_A = 6.022140857e23;
460 static constexpr
double M_E = 5.109989461e5/(C*C);
463 static constexpr
double M_P = 9.38272046e8/(C*C);
466 static constexpr
double MU_B = E*HBAR/(2.*M_E);
469 static constexpr
double MU_N = E*HBAR/(2*M_P);
472 static constexpr
double MU_0 = 4*M_PI*1e-7/1.602176565e-19;
475 static constexpr
double EPSILON_0 = 8.854187817620e-12*1.602176565e-19;
508 static double epsilon_0;
511 static constexpr
double J_per_eV = 1.602176565e-19;
514 static constexpr
double eV_per_J = 1./J_per_eV;
517 static constexpr
double kg_per_baseMass = 1.602176565e-19;
520 static constexpr
double baseMass_per_kg = 1./kg_per_baseMass;
523 static constexpr
double u_per_baseMass = 9.31494095e8/(C*C);
526 static constexpr
double baseMass_per_u = 1./u_per_baseMass;
529 static constexpr
double T_per_baseMagneticField = 1.602176565e-19;
532 static constexpr
double baseMagneticField_per_T = 1./T_per_baseMagneticField;
538 static TimeUnit timeUnit;
553 static double temperatureScale;
556 static double timeScale;
559 static double lengthScale;
562 static double energyScale;
565 static double chargeScale;
568 static double countScale;
571 static void updateHbar();
574 static void updateK_b();
577 static void updateE();
580 static void updateC();
583 static void updateN_a();
586 static void updateM_e();
589 static void updateM_p();
592 static void updateMu_b();
595 static void updateMu_n();
598 static void updateMu_0();
601 static void updateEpsilon_0();
605 static double getTemperatureConversionFactor();
609 static double getTimeConversionFactor();
613 static double getLengthConversionFactor();
617 static double getEnergyConversionFactor();
621 static double getChargeConversionFactor();
625 static double getCountConversionFactor();
629 static double getMassConversionFactor(
MassUnit unit);
642 return hbar/(energyScale*timeScale);
650 return k_b*temperatureScale/energyScale;
658 return e/chargeScale;
666 return c*timeScale/lengthScale;
674 return n_a/countScale;
682 return m_e*lengthScale*lengthScale/(energyScale*timeScale*timeScale);
690 return m_p*lengthScale*lengthScale/(energyScale*timeScale*timeScale);
698 return mu_b*timeScale/(chargeScale*lengthScale*lengthScale);
706 return mu_n*timeScale/(chargeScale*lengthScale*lengthScale);
714 return mu_0*chargeScale*chargeScale*lengthScale/(energyScale*timeScale*timeScale);
722 return epsilon_0*energyScale*lengthScale/(chargeScale*chargeScale);
726 return temperature*temperatureScale;
730 return time*timeScale;
734 return length*lengthScale;
738 return energy*energyScale;
742 return charge*chargeScale;
746 return count*countScale;
750 return temperature/temperatureScale;
754 return time/timeScale;
758 return length/lengthScale;
762 return energy/energyScale;
766 return charge/chargeScale;
770 return count/countScale;
775 #ifdef M_E_temp //Avoid name clash with math.h macro M_E static std::string getEnergyUnitString()
Definition: UnitHandler.cpp:302
static std::string getEpsilon_0UnitString()
Definition: UnitHandler.cpp:445
static void setLengthUnit(LengthUnit unit)
Definition: UnitHandler.cpp:86
static double convertMassDtB(double mass, MassUnit unit)
Definition: UnitHandler.cpp:161
EnergyUnit
Definition: UnitHandler.h:112
static double convertCountNtB(double count)
Definition: UnitHandler.h:745
ChargeUnit
Definition: UnitHandler.h:128
LengthUnit
Definition: UnitHandler.h:102
CountUnit
Definition: UnitHandler.h:135
static double getMu_nN()
Definition: UnitHandler.h:705
static std::string getMu_nUnitString()
Definition: UnitHandler.cpp:431
static double getN_aB()
Definition: UnitHandler.h:669
static void setEnergyUnit(EnergyUnit unit)
Definition: UnitHandler.cpp:101
static void setCountUnit(CountUnit unit)
Definition: UnitHandler.cpp:128
static double convertEnergyNtB(double energy)
Definition: UnitHandler.h:737
static double getN_aN()
Definition: UnitHandler.h:673
static double convertLengthBtN(double length)
Definition: UnitHandler.h:757
static double convertChargeNtB(double charge)
Definition: UnitHandler.h:741
static void setTemperatureScale(double scale)
Definition: UnitHandler.cpp:137
static std::string getMu_bUnitString()
Definition: UnitHandler.cpp:424
static void setEnergyScale(double scale)
Definition: UnitHandler.cpp:149
static std::string getMassUnitString()
Definition: UnitHandler.cpp:367
static double convertCountBtN(double count)
Definition: UnitHandler.h:769
static void setTemperatureUnit(TemperatureUnit unit)
Definition: UnitHandler.cpp:62
static void setCountScale(double scale)
Definition: UnitHandler.cpp:157
static double getK_bB()
Definition: UnitHandler.h:645
static double convertTimeNtB(double time)
Definition: UnitHandler.h:729
static double convertChargeBtN(double charge)
Definition: UnitHandler.h:765
static double convertMagneticFieldNtD(double field, MagneticFieldUnit unit)
Definition: UnitHandler.cpp:229
static double convertMassNtD(double mass, MassUnit unit)
Definition: UnitHandler.cpp:185
MagneticFieldUnit
Definition: UnitHandler.h:162
static std::string getM_eUnitString()
Definition: UnitHandler.cpp:410
static std::string getK_BUnitString()
Definition: UnitHandler.cpp:388
static double getM_pN()
Definition: UnitHandler.h:689
static double getEB()
Definition: UnitHandler.h:653
static double convertTemperatureBtN(double temperature)
Definition: UnitHandler.h:749
static double convertTemperatureNtB(double temperature)
Definition: UnitHandler.h:725
static std::string getTimeUnitString()
Definition: UnitHandler.cpp:258
static void setChargeUnit(ChargeUnit unit)
Definition: UnitHandler.cpp:115
static std::string getCountUnitString()
Definition: UnitHandler.cpp:356
static void setTimeScale(double scale)
Definition: UnitHandler.cpp:141
static void setChargeScale(double scale)
Definition: UnitHandler.cpp:153
static double getMu_nB()
Definition: UnitHandler.h:701
static double getM_eN()
Definition: UnitHandler.h:681
static std::string getMu_0UnitString()
Definition: UnitHandler.cpp:438
static double getK_bN()
Definition: UnitHandler.h:649
static double getMu_0B()
Definition: UnitHandler.h:709
static double getHbarN()
Definition: UnitHandler.h:641
static double getM_pB()
Definition: UnitHandler.h:685
static std::string getN_aUnitString()
Definition: UnitHandler.cpp:406
static double convertMagneticFieldDtB(double field, MagneticFieldUnit unit)
Definition: UnitHandler.cpp:193
Definition: UnitHandler.h:73
TemperatureUnit
Definition: UnitHandler.h:81
Definition: AbstractOperator.h:26
static std::string getChargeUnitString()
Definition: UnitHandler.cpp:323
static double convertMassDtN(double mass, MassUnit unit)
Definition: UnitHandler.cpp:177
static double getM_eB()
Definition: UnitHandler.h:677
static std::string getM_pUnitString()
Definition: UnitHandler.cpp:417
static double convertMagneticFieldBtD(double field, MagneticFieldUnit unit)
Definition: UnitHandler.cpp:205
static double getCN()
Definition: UnitHandler.h:665
static double convertMagneticFieldDtN(double field, MagneticFieldUnit unit)
Definition: UnitHandler.cpp:217
static double getEpsilon_0B()
Definition: UnitHandler.h:717
static double getMu_bB()
Definition: UnitHandler.h:693
static std::string getCUnitString()
Definition: UnitHandler.cpp:399
static std::string getHBARUnitString()
Definition: UnitHandler.cpp:381
static double convertTimeBtN(double time)
Definition: UnitHandler.h:753
MassUnit
Definition: UnitHandler.h:147
static double getCB()
Definition: UnitHandler.h:661
static double convertEnergyBtN(double energy)
Definition: UnitHandler.h:761
static std::string getTemperatureUnitString()
Definition: UnitHandler.cpp:241
static std::string getMagneticFieldUnitString()
Definition: UnitHandler.cpp:374
static double convertMassBtD(double mass, MassUnit unit)
Definition: UnitHandler.cpp:169
static std::string getLengthUnitString()
Definition: UnitHandler.cpp:279
static double getMu_bN()
Definition: UnitHandler.h:697
static double convertLengthNtB(double length)
Definition: UnitHandler.h:733
static std::string getEUnitString()
Definition: UnitHandler.cpp:395
static void setTimeUnit(TimeUnit unit)
Definition: UnitHandler.cpp:71
static double getHbarB()
Definition: UnitHandler.h:637
static double getMu_0N()
Definition: UnitHandler.h:713
static void setLengthScale(double scale)
Definition: UnitHandler.cpp:145
static double getEpsilon_0N()
Definition: UnitHandler.h:721
static double getEN()
Definition: UnitHandler.h:657