diff --git a/src/ThreeBody/ThreeBodyCalculations.jl b/src/ThreeBody/ThreeBodyCalculations.jl index 0be5b454..0cfe372b 100644 --- a/src/ThreeBody/ThreeBodyCalculations.jl +++ b/src/ThreeBody/ThreeBodyCalculations.jl @@ -12,12 +12,12 @@ time_scale_factor(a, μ₁, μ₂) = orbital_period(a, μ₁+μ₂) """ Returns nondimensional length unit, `DU`. """ -nondimensionalize_length(rᵢ, a) = upreferred(rᵢ .÷ a) +nondimensionalize_length(rᵢ, a) = @. upreferred(rᵢ / a) """ Returns nondimensional velocity unit, `DU/DT`. """ -nondimensionalize_velocity(vᵢ, a, Tₛ) = vᵢ ./ (a ÷ Tₛ) +nondimensionalize_velocity(vᵢ, a, Tₛ) = @. upreferred(vᵢ / (a / Tₛ)) """ Returns nondimensional time unit, `DT`. @@ -27,7 +27,7 @@ nondimensionalize_time(t, a, μ₁, μ₂) = t ÷ time_scale_factor(a, μ₁, μ """ Returns nondimensional mass parameter, `μ`. """ -nondimensionalize_mass_parameter(μ₁, μ₂) = min(μ₁,μ₂) ÷ (μ₁+μ₂) +nondimensionalize_mass_parameter(μ₁, μ₂) = min(μ₁,μ₂) / (μ₁+μ₂) """ Returns nondimensional form of (`Unitful`) scalar posiion. @@ -203,4 +203,4 @@ end """ Returns the position and velocity vectors in the synodic (rotating) reference frame. """ -synodic(rᵢ, vᵢ, a, Tₛ) = nondimensionalize(rᵢ, a), nondimensionalize(vᵢ, a, Tₛ) \ No newline at end of file +synodic(rᵢ, vᵢ, a, Tₛ) = nondimensionalize(rᵢ, a), nondimensionalize(vᵢ, a, Tₛ) diff --git a/src/ThreeBody/ThreeBodyStates.jl b/src/ThreeBody/ThreeBodyStates.jl index 9e1c2800..f1d93458 100644 --- a/src/ThreeBody/ThreeBodyStates.jl +++ b/src/ThreeBody/ThreeBodyStates.jl @@ -32,7 +32,12 @@ struct ThreeBodySystem{F<:AbstractFloat} <: OrbitalSystem TT <: Time{<:AbstractFloat} } - T = typeof(promote(a, μ₁, μ₂, r, v, t)[1]).val + T = promote_type(typeof(a.val), + typeof(μ₁.val), + typeof(μ₂.val), + map(x->typeof(x.val), r)..., + map(x->typeof(x.val), v)..., + typeof(t.val)) if length(r) ≢ length(v) ≢ 3 throw(ArgumentError(string("Both `r` and `v` provided to `ThreeBodySystem` ", diff --git a/src/TwoBody/twobody_calculations.jl b/src/TwoBody/twobody_calculations.jl index db32e6e8..7e1e269f 100644 --- a/src/TwoBody/twobody_calculations.jl +++ b/src/TwoBody/twobody_calculations.jl @@ -278,7 +278,7 @@ mass_parameter(body::CelestialBody) = body.μ """ Returns the orbital period. """ -orbital_period(a, μ) = upreferred(2π * √(a^3 / μ)) +orbital_period(a, μ) = 2π * √(upreferred(a^3 / μ)) orbital_period(orbit::Orbit) = orbital_period(orbit.a, orbit.body.μ) """ @@ -374,4 +374,4 @@ function Base.isequal(c1::Orbit, c2::Orbit) mod(c1.ν, 360u"°") == mod(c2.ν, 360u"°") && c1.body == c2.body -end \ No newline at end of file +end