Conversion
Conversion from Arrays
pconvert is smart enough to handle 2D and 3D vectors at same time:
julia> using PhysicalParticlesjulia> pconvert([1.0, 2.0])PVector2D{Float64}(1.0, 2.0)julia> pconvert([1.0, 2.0, 3.0])PVector{Float64}(1.0, 2.0, 3.0)julia> pconvert([1.0, 2.0, 3.0, 4.0])ERROR: [1.0, 2.0, 3.0, 4.0] Not supported dimension! Use 2D and 3D vectorsjulia> a = pconvert([1.0 3.0; 2.0 4.0])2-element StructArray(::Vector{Float64}, ::Vector{Float64}) with eltype PVector2D: PVector2D{Float64}(1.0, 2.0) PVector2D{Float64}(3.0, 4.0)julia> pconvert([1.0 4.0; 2.0 5.0; 3.0 6.0])2-element StructArray(::Vector{Float64}, ::Vector{Float64}, ::Vector{Float64}) with eltype PVector: PVector{Float64}(1.0, 2.0, 3.0) PVector{Float64}(4.0, 5.0, 6.0)
Assign from Arrays
assign_particles takes in three paremeters: particles, symbol and points. Assignment of :Pos, :Vel and :Acc is enough for simulation tasks:
julia> ppoints = rand(PVector{Float64}, 3) * u"m"3-element Vector{PVector{Unitful.Quantity{Float64, ๐, Unitful.FreeUnits{(m,), ๐, nothing}}}}: PVector(0.19748015215563697 m, 0.8624213962269038 m, 0.20347609789064325 m) PVector(0.09331677404649219 m, 0.3799158504570348 m, 0.8123938024441695 m) PVector(0.7896411847567459 m, 0.21166309868894384 m, 0.1552104324443836 m)julia> p_Ball = [Ball(uSI) for i=1:3]3-element Vector{Ball{Unitful.Quantity{Float64, ๐, Unitful.FreeUnits{(m,), ๐, nothing}}, Unitful.Quantity{Float64, ๐ ๐^-1, Unitful.FreeUnits{(m, s^-1), ๐ ๐^-1, nothing}}, Unitful.Quantity{Float64, ๐ ๐^-2, Unitful.FreeUnits{(m, s^-2), ๐ ๐^-2, nothing}}, Unitful.Quantity{Float64, ๐, Unitful.FreeUnits{(kg,), ๐, nothing}}, Int64}}: Ball 0: Pos = PVector(0.0 m, 0.0 m, 0.0 m), Vel = PVector(0.0 m s^-1, 0.0 m s^-1, 0.0 m s^-1), Acc = PVector(0.0 m s^-2, 0.0 m s^-2, 0.0 m s^-2), Mass = 0.0 kg Ball 0: Pos = PVector(0.0 m, 0.0 m, 0.0 m), Vel = PVector(0.0 m s^-1, 0.0 m s^-1, 0.0 m s^-1), Acc = PVector(0.0 m s^-2, 0.0 m s^-2, 0.0 m s^-2), Mass = 0.0 kg Ball 0: Pos = PVector(0.0 m, 0.0 m, 0.0 m), Vel = PVector(0.0 m s^-1, 0.0 m s^-1, 0.0 m s^-1), Acc = PVector(0.0 m s^-2, 0.0 m s^-2, 0.0 m s^-2), Mass = 0.0 kgjulia> assign_particles(p_Ball, :Pos, pu)ERROR: UndefVarError: `pu` not defined in `Main` Suggestion: check for spelling errors or missing imports.julia> p_Ball3-element Vector{Ball{Unitful.Quantity{Float64, ๐, Unitful.FreeUnits{(m,), ๐, nothing}}, Unitful.Quantity{Float64, ๐ ๐^-1, Unitful.FreeUnits{(m, s^-1), ๐ ๐^-1, nothing}}, Unitful.Quantity{Float64, ๐ ๐^-2, Unitful.FreeUnits{(m, s^-2), ๐ ๐^-2, nothing}}, Unitful.Quantity{Float64, ๐, Unitful.FreeUnits{(kg,), ๐, nothing}}, Int64}}: Ball 0: Pos = PVector(0.0 m, 0.0 m, 0.0 m), Vel = PVector(0.0 m s^-1, 0.0 m s^-1, 0.0 m s^-1), Acc = PVector(0.0 m s^-2, 0.0 m s^-2, 0.0 m s^-2), Mass = 0.0 kg Ball 0: Pos = PVector(0.0 m, 0.0 m, 0.0 m), Vel = PVector(0.0 m s^-1, 0.0 m s^-1, 0.0 m s^-1), Acc = PVector(0.0 m s^-2, 0.0 m s^-2, 0.0 m s^-2), Mass = 0.0 kg Ball 0: Pos = PVector(0.0 m, 0.0 m, 0.0 m), Vel = PVector(0.0 m s^-1, 0.0 m s^-1, 0.0 m s^-1), Acc = PVector(0.0 m s^-2, 0.0 m s^-2, 0.0 m s^-2), Mass = 0.0 kg