diff --git a/src/AtomicAndPhysicalConstants.jl b/src/AtomicAndPhysicalConstants.jl index e846f47..83d50a3 100644 --- a/src/AtomicAndPhysicalConstants.jl +++ b/src/AtomicAndPhysicalConstants.jl @@ -7,6 +7,7 @@ using JSON using Reexport @reexport using Unitful +include("units_definition.jl") include("physical_constants.jl") include("atomic_isotopes.jl") include("subatomic_species.jl") @@ -17,13 +18,10 @@ include("update_iso_masses.jl") include("particle_functions.jl") include("set_units.jl") -export setunits, printunits -export PARTICLE_PHYSICS, MKS, CGS -export mass, charge -export c_light, m_electron, m_proton, m_neutron, m_muon, m_helion, m_deuteron, m_pion_0, m_pion_charged -export r_e, e_charge, h_planck, mu_0_vac, eps_0_vac -export kg_per_amu, eV_per_amu, N_avogadro, fine_structure, classical_radius_factor, r_p, h_bar_planck, kg_per_eV, eps_0_vac -export mu_deuteron, mu_electron, mu_helion, mu_muon, mu_neutron, mu_proton, mu_triton +export setunits +export ACCELERATOR, MKS, CGS +export massof, chargeof +export C_LIGHT, H_PLANCK, H_BAR_PLANCK, R_E, R_P, E_CHARGE, MU_0_VAC, EPS_0_VAC, CLASSICAL_RADIUS_FACTOR, FINE_STRUCTURE, N_AVOGADRO export SubatomicSpecies export AtomicSpecies export SUBATOMIC_SPECIES diff --git a/src/set_units.jl b/src/set_units.jl index 8cb0459..4245424 100644 --- a/src/set_units.jl +++ b/src/set_units.jl @@ -1,4 +1,3 @@ - # Declare specific systems of units # for particle physics """ @@ -56,41 +55,6 @@ const CGS = [ "J", "C"] - -""" - current_units - -## Description: -This vector that stores the units in current use. - -## Note: -It is initialized when setunits() is called. -""" -current_units::Vector{String} = [] - - -""" - printunits() - -## Description: -This function returns nothing. It simply prints the set of units -in current use. -""" -printunits - -function printunits() - if isempty(current_units) - throw(ErrorException("units are not set, call setunits() to initalize units and constants")) - end - # prints the units for each dimensions - println("mass unit:\t", current_units[0]) - println("length unit:\t", current_units[1]) - println("time unit:\t", current_units[2]) - println("energy unit:\t", current_units[3]) - println("charge unit:\t", current_units[4]) - return -end - """ setunits(unitsystem::UnitSystem=ACCELERATOR; mass_unit::Union{Unitful.FreeUnits,AbstractString}=unitsystem.mass, @@ -136,11 +100,11 @@ Prints current units at the end (optional). setunits function setunits(unitsystem::Vector{String}=ACCELERATOR; - mass_unit::Union{Unitful.FreeUnits,AbstractString}=unitsystem[0], - length_unit::Union{Unitful.FreeUnits,AbstractString}=unitsystem[1], - time_unit::Union{Unitful.FreeUnits,AbstractString}=unitsystem[2], - energy_unit::Union{Unitful.FreeUnits,AbstractString}=unitsystem[3], - charge_unit::Union{Unitful.FreeUnits,AbstractString}=unitsystem[4], + mass_unit::Union{Unitful.FreeUnits,AbstractString}=unitsystem[1], + length_unit::Union{Unitful.FreeUnits,AbstractString}=unitsystem[2], + time_unit::Union{Unitful.FreeUnits,AbstractString}=unitsystem[3], + energy_unit::Union{Unitful.FreeUnits,AbstractString}=unitsystem[4], + charge_unit::Union{Unitful.FreeUnits,AbstractString}=unitsystem[5], ) # convert types to Unitful.FreeUnits if mass_unit isa AbstractString @@ -174,8 +138,6 @@ function setunits(unitsystem::Vector{String}=ACCELERATOR; if dimension(charge_unit) != dimension(u"C") throw(ErrorException("unit for charge does not have proper dimension")) end - # record what units is currently being used - global current_units = [mass_unit, length_unit, time_unit, energy_unit, charge_unit] eval(:(C_LIGHT() = uconvert($length_unit / $time_unit, __b_c_light))) eval(:(H_PLANCK() = uconvert($energy_unit * $time_unit, __b_h_planck))) @@ -185,7 +147,8 @@ function setunits(unitsystem::Vector{String}=ACCELERATOR; eval(:(E_CHARGE() = uconvert($charge_unit, __b_e_charge))) eval(:(massof(species::Species) = uconvert($mass_unit, species.mass_in_eV))) eval(:(chargeof(species::Species) = uconvert($charge_unit, species.charge))) - return current_units + return [mass_unit, length_unit, time_unit, energy_unit, charge_unit] + end """ @@ -244,29 +207,29 @@ end -function C_LIGHT(unit::typeof(u"m/s")) +function C_LIGHT(unit::Unitful.FreeUnits) return __b_c_light |> unit end -function H_PLANCK(unit::typeof(u"eV*s")) +function H_PLANCK(unit::Unitful.FreeUnits) return __b_h_planck |> unit end -function H_BAR_PLANCK(unit::typeof(u"eV*s")) +function H_BAR_PLANCK(unit::Unitful.FreeUnits) return __b_h_bar_planck |> unit end -function R_E(unit::typeof(u"m")) +function R_E(unit::Unitful.FreeUnits) return __b_r_e |> unit end -function R_P(unit::typeof(u"m")) +function R_P(unit::Unitful.FreeUnits) return __b_r_p |> unit end -function E_CHARGE(unit::typeof(u"e")) +function E_CHARGE(unit::Unitful.FreeUnits) return __b_e_charge |> unit end @@ -275,7 +238,7 @@ function MU_0_VAC() return __b_mu_0_vac end -function MU_0_VAC(unit::typeof(u"N/A^2")) +function MU_0_VAC(unit::Unitful.FreeUnits) return __b_mu_0_vac |> unit end @@ -284,9 +247,7 @@ function EPS_0_VAC() return __b_eps_0_vac end - - -function EPS_0_VAC(unit::typeof(u"F/m")) +function EPS_0_VAC(unit::Unitful.FreeUnits) return __b_eps_0_vac |> unit end