-
Notifications
You must be signed in to change notification settings - Fork 19
Broken compatibility with FastMultipole.jl #43
Copy link
Copy link
Closed
Description
Doing a fresh Julia installation with latest main commits from FLOWVPM and FastMultipole does not pass the unit tests. Recommended fix is to update FLOWVPM accordingly, or add a more specific version compatibility to Project.toml.
Here is how to replicate:
] add https://github.com/byuflowlab/FastMultipole.jl
] add https://github.com/byuflowlab/FLOWVPM.jl
] test FLOWVPMUnit test output:
FMM UJ test: Single vortex ring...
test set: Error During Test at /Users/rachelmarie/Dropbox/MHDResearch/FLOWCodes/FLOWVPM.jl/test/runtests_singlevortexring.jl:36
Got exception outside of a @test
MethodError: no method matching fmm!(::Tuple{FLOWVPM.ParticleField{Float64, FLOWVPM.ReformulatedVPM{Float64}, FLOWVPM.Inviscid{Float64}, typeof(FLOWVPM.nofreestream), FLOWVPM.NoSFS{Float64, typeof(FLOWVPM.null_model)}, FLOWVPM.Kernel{typeof(FLOWVPM.zeta_wnklmns), typeof(FLOWVPM.g_wnklmns), typeof(FLOWVPM.dgdr_wnklmns), typeof(FLOWVPM.g_dgdr_wnklmns)}, typeof(FLOWVPM.UJ_fmm), typeof(FLOWVPM.euler), FLOWVPM.Relaxation{Float64, typeof(FLOWVPM.relax_pedrizzetti)}, 0}}, ::FastMultipole.Tree{Float64, 1}, ::Tuple{FLOWVPM.ParticleField{Float64, FLOWVPM.ReformulatedVPM{Float64}, FLOWVPM.Inviscid{Float64}, typeof(FLOWVPM.nofreestream), FLOWVPM.NoSFS{Float64, typeof(FLOWVPM.null_model)}, FLOWVPM.Kernel{typeof(FLOWVPM.zeta_wnklmns), typeof(FLOWVPM.g_wnklmns), typeof(FLOWVPM.dgdr_wnklmns), typeof(FLOWVPM.g_dgdr_wnklmns)}, typeof(FLOWVPM.UJ_fmm), typeof(FLOWVPM.euler), FLOWVPM.Relaxation{Float64, typeof(FLOWVPM.relax_pedrizzetti)}, 0}}, ::FastMultipole.Tree{Float64, 1}, ::StaticArraysCore.SVector{1, Int64}, ::Vector{StaticArraysCore.SVector{2, Int32}}, ::Vector{StaticArraysCore.SVector{2, Int32}}, ::Tuple{FastMultipole.DerivativesSwitch{false, true, true}}, ::FastMultipole.SelfTuningTargetStop; multipole_acceptance::Float64, t_source_tree::Float64, t_target_tree::Float64, t_lists::Float64, expansion_order::Int64, error_tolerance::FastMultipole.PowerRelativeGradient{1.0e-6, 1.0e-6, true}, tune::Bool, shrink_recenter::Bool, nearfield_device::Bool, silence_warnings::Bool)
This method does not support all of the given keyword arguments (and may not support any).
Closest candidates are:
fmm!(::Tuple, ::FastMultipole.Tree, ::Tuple, ::FastMultipole.Tree, ::Any, ::Any, ::Any, ::Tuple, ::FastMultipole.InteractionListMethod; expansion_order, error_tolerance, upward_pass, horizontal_pass, downward_pass, horizontal_pass_verbose, reset_target_tree, reset_source_tree, nearfield_device, nearfield, tune, update_target_systems, multipole_acceptance, t_source_tree, t_target_tree, t_lists, silence_warnings) got unsupported keyword argument "shrink_recenter"
@ FastMultipole ~/Dropbox/MHDResearch/FLOWCodes/FastMultipole.jl/src/fmm.jl:928
fmm!(::Tuple, ::FastMultipole.Tree, ::Tuple, ::FastMultipole.Tree; leaf_size_source, multipole_acceptance, derivatives_switches, farfield, nearfield, self_induced, interaction_list_method, t_source_tree, t_target_tree, optargs...)
@ FastMultipole ~/Dropbox/MHDResearch/FLOWCodes/FastMultipole.jl/src/fmm.jl:902
fmm!(::Any, ::Any; ...)
@ FastMultipole ~/Dropbox/MHDResearch/FLOWCodes/FastMultipole.jl/src/fmm.jl:810
...
Stacktrace:
[1] kwerr(::@NamedTuple{multipole_acceptance::Float64, t_source_tree::Float64, t_target_tree::Float64, t_lists::Float64, expansion_order::Int64, error_tolerance::FastMultipole.PowerRelativeGradient{1.0e-6, 1.0e-6, true}, tune::Bool, shrink_recenter::Bool, nearfield_device::Bool, silence_warnings::Bool}, ::Function, ::Tuple{FLOWVPM.ParticleField{Float64, FLOWVPM.ReformulatedVPM{Float64}, FLOWVPM.Inviscid{Float64}, typeof(FLOWVPM.nofreestream), FLOWVPM.NoSFS{Float64, typeof(FLOWVPM.null_model)}, FLOWVPM.Kernel{typeof(FLOWVPM.zeta_wnklmns), typeof(FLOWVPM.g_wnklmns), typeof(FLOWVPM.dgdr_wnklmns), typeof(FLOWVPM.g_dgdr_wnklmns)}, typeof(FLOWVPM.UJ_fmm), typeof(FLOWVPM.euler), FLOWVPM.Relaxation{Float64, typeof(FLOWVPM.relax_pedrizzetti)}, 0}}, ::FastMultipole.Tree{Float64, 1}, ::Tuple{FLOWVPM.ParticleField{Float64, FLOWVPM.ReformulatedVPM{Float64}, FLOWVPM.Inviscid{Float64}, typeof(FLOWVPM.nofreestream), FLOWVPM.NoSFS{Float64, typeof(FLOWVPM.null_model)}, FLOWVPM.Kernel{typeof(FLOWVPM.zeta_wnklmns), typeof(FLOWVPM.g_wnklmns), typeof(FLOWVPM.dgdr_wnklmns), typeof(FLOWVPM.g_dgdr_wnklmns)}, typeof(FLOWVPM.UJ_fmm), typeof(FLOWVPM.euler), FLOWVPM.Relaxation{Float64, typeof(FLOWVPM.relax_pedrizzetti)}, 0}}, ::FastMultipole.Tree{Float64, 1}, ::StaticArraysCore.SVector{1, Int64}, ::Vector{StaticArraysCore.SVector{2, Int32}}, ::Vector{StaticArraysCore.SVector{2, Int32}}, ::Tuple{FastMultipole.DerivativesSwitch{false, true, true}}, ::FastMultipole.SelfTuningTargetStop)
@ Base ./error.jl:175
[2] fmm!(target_systems::Tuple{FLOWVPM.ParticleField{Float64, FLOWVPM.ReformulatedVPM{Float64}, FLOWVPM.Inviscid{Float64}, typeof(FLOWVPM.nofreestream), FLOWVPM.NoSFS{Float64, typeof(FLOWVPM.null_model)}, FLOWVPM.Kernel{typeof(FLOWVPM.zeta_wnklmns), typeof(FLOWVPM.g_wnklmns), typeof(FLOWVPM.dgdr_wnklmns), typeof(FLOWVPM.g_dgdr_wnklmns)}, typeof(FLOWVPM.UJ_fmm), typeof(FLOWVPM.euler), FLOWVPM.Relaxation{Float64, typeof(FLOWVPM.relax_pedrizzetti)}, 0}}, target_tree::FastMultipole.Tree{Float64, 1}, source_systems::Tuple{FLOWVPM.ParticleField{Float64, FLOWVPM.ReformulatedVPM{Float64}, FLOWVPM.Inviscid{Float64}, typeof(FLOWVPM.nofreestream), FLOWVPM.NoSFS{Float64, typeof(FLOWVPM.null_model)}, FLOWVPM.Kernel{typeof(FLOWVPM.zeta_wnklmns), typeof(FLOWVPM.g_wnklmns), typeof(FLOWVPM.dgdr_wnklmns), typeof(FLOWVPM.g_dgdr_wnklmns)}, typeof(FLOWVPM.UJ_fmm), typeof(FLOWVPM.euler), FLOWVPM.Relaxation{Float64, typeof(FLOWVPM.relax_pedrizzetti)}, 0}}, source_tree::FastMultipole.Tree{Float64, 1}; leaf_size_source::StaticArraysCore.SVector{1, Int64}, multipole_acceptance::Float64, derivatives_switches::Tuple{FastMultipole.DerivativesSwitch{false, true, true}}, farfield::Bool, nearfield::Bool, self_induced::Bool, interaction_list_method::FastMultipole.SelfTuningTargetStop, t_source_tree::Float64, t_target_tree::Float64, optargs::@Kwargs{expansion_order::Int64, error_tolerance::FastMultipole.PowerRelativeGradient{1.0e-6, 1.0e-6, true}, tune::Bool, shrink_recenter::Bool, nearfield_device::Bool, silence_warnings::Bool})
@ FastMultipole ~/Dropbox/MHDResearch/FLOWCodes/FastMultipole.jl/src/fmm.jl:925
[3] fmm!(target_systems::Tuple{FLOWVPM.ParticleField{Float64, FLOWVPM.ReformulatedVPM{Float64}, FLOWVPM.Inviscid{Float64}, typeof(FLOWVPM.nofreestream), FLOWVPM.NoSFS{Float64, typeof(FLOWVPM.null_model)}, FLOWVPM.Kernel{typeof(FLOWVPM.zeta_wnklmns), typeof(FLOWVPM.g_wnklmns), typeof(FLOWVPM.dgdr_wnklmns), typeof(FLOWVPM.g_dgdr_wnklmns)}, typeof(FLOWVPM.UJ_fmm), typeof(FLOWVPM.euler), FLOWVPM.Relaxation{Float64, typeof(FLOWVPM.relax_pedrizzetti)}, 0}}, source_systems::Tuple{FLOWVPM.ParticleField{Float64, FLOWVPM.ReformulatedVPM{Float64}, FLOWVPM.Inviscid{Float64}, typeof(FLOWVPM.nofreestream), FLOWVPM.NoSFS{Float64, typeof(FLOWVPM.null_model)}, FLOWVPM.Kernel{typeof(FLOWVPM.zeta_wnklmns), typeof(FLOWVPM.g_wnklmns), typeof(FLOWVPM.dgdr_wnklmns), typeof(FLOWVPM.g_dgdr_wnklmns)}, typeof(FLOWVPM.UJ_fmm), typeof(FLOWVPM.euler), FLOWVPM.Relaxation{Float64, typeof(FLOWVPM.relax_pedrizzetti)}, 0}}, cache::FastMultipole.Cache{Float64, 1, 1}; leaf_size_target::Nothing, leaf_size_source::Int64, scalar_potential::Bool, gradient::Bool, hessian::Bool, expansion_order::Int64, error_tolerance::FastMultipole.PowerRelativeGradient{1.0e-6, 1.0e-6, true}, shrink::Bool, recenter::Bool, interaction_list_method::FastMultipole.SelfTuningTargetStop, optargs::@Kwargs{multipole_acceptance::Float64, tune::Bool, shrink_recenter::Bool, nearfield_device::Bool, silence_warnings::Bool})
@ FastMultipole ~/Dropbox/MHDResearch/FLOWCodes/FastMultipole.jl/src/fmm.jl:897
[4] fmm!
@ ~/Dropbox/MHDResearch/FLOWCodes/FastMultipole.jl/src/fmm.jl:864 [inlined]
[5] #fmm!#105
@ ~/Dropbox/MHDResearch/FLOWCodes/FastMultipole.jl/src/fmm.jl:815 [inlined]
[6] fmm!
@ ~/Dropbox/MHDResearch/FLOWCodes/FastMultipole.jl/src/fmm.jl:810 [inlined]
[7] fmm!
@ ~/Dropbox/MHDResearch/FLOWCodes/FastMultipole.jl/src/fmm.jl:808 [inlined]
[8] UJ_fmm(pfield::FLOWVPM.ParticleField{Float64, FLOWVPM.ReformulatedVPM{Float64}, FLOWVPM.Inviscid{Float64}, typeof(FLOWVPM.nofreestream), FLOWVPM.NoSFS{Float64, typeof(FLOWVPM.null_model)}, FLOWVPM.Kernel{typeof(FLOWVPM.zeta_wnklmns), typeof(FLOWVPM.g_wnklmns), typeof(FLOWVPM.dgdr_wnklmns), typeof(FLOWVPM.g_dgdr_wnklmns)}, typeof(FLOWVPM.UJ_fmm), typeof(FLOWVPM.euler), FLOWVPM.Relaxation{Float64, typeof(FLOWVPM.relax_pedrizzetti)}, 0}; verbose::Bool, rbf::Bool, sfs::Bool, sfs_type::Int64, transposed_sfs::Bool, reset::Bool, reset_sfs::Bool, autotune::Bool)
@ FLOWVPM ~/Dropbox/MHDResearch/FLOWCodes/FLOWVPM.jl/src/FLOWVPM_UJ.jl:90
[9] UJ_fmm
@ ~/Dropbox/MHDResearch/FLOWCodes/FLOWVPM.jl/src/FLOWVPM_UJ.jl:62 [inlined]
[10] #euler#106
@ ~/Dropbox/MHDResearch/FLOWCodes/FLOWVPM.jl/src/FLOWVPM_timeintegration.jl:29 [inlined]
[11] euler
@ ~/Dropbox/MHDResearch/FLOWCodes/FLOWVPM.jl/src/FLOWVPM_timeintegration.jl:23 [inlined]
[12] nextstep(pfield::FLOWVPM.ParticleField{Float64, FLOWVPM.ReformulatedVPM{Float64}, FLOWVPM.Inviscid{Float64}, typeof(FLOWVPM.nofreestream), FLOWVPM.NoSFS{Float64, typeof(FLOWVPM.null_model)}, FLOWVPM.Kernel{typeof(FLOWVPM.zeta_wnklmns), typeof(FLOWVPM.g_wnklmns), typeof(FLOWVPM.dgdr_wnklmns), typeof(FLOWVPM.g_dgdr_wnklmns)}, typeof(FLOWVPM.UJ_fmm), typeof(FLOWVPM.euler), FLOWVPM.Relaxation{Float64, typeof(FLOWVPM.relax_pedrizzetti)}, 0}, dt::Float64; update_U_prev::Bool, optargs::@Kwargs{relax::Bool, custom_UJ::Nothing})
@ FLOWVPM ~/Dropbox/MHDResearch/FLOWCodes/FLOWVPM.jl/src/FLOWVPM_particlefield.jl:439
[13] nextstep
@ ~/Dropbox/MHDResearch/FLOWCodes/FLOWVPM.jl/src/FLOWVPM_particlefield.jl:435 [inlined]
[14] run_vpm!(pfield::FLOWVPM.ParticleField{Float64, FLOWVPM.ReformulatedVPM{Float64}, FLOWVPM.Inviscid{Float64}, typeof(FLOWVPM.nofreestream), FLOWVPM.NoSFS{Float64, typeof(FLOWVPM.null_model)}, FLOWVPM.Kernel{typeof(FLOWVPM.zeta_wnklmns), typeof(FLOWVPM.g_wnklmns), typeof(FLOWVPM.dgdr_wnklmns), typeof(FLOWVPM.g_dgdr_wnklmns)}, typeof(FLOWVPM.UJ_fmm), typeof(FLOWVPM.euler), FLOWVPM.Relaxation{Float64, typeof(FLOWVPM.relax_pedrizzetti)}, 0}, dt::Float64, nsteps::Int64; runtime_function::var"#this_runtime_function#89"{var"#this_runtime_function#76#90"{var"#run_vortexring_simulation##8#run_vortexring_simulation##9"{var"#run_vortexring_simulation##10#run_vortexring_simulation##11"}}}, static_particles_function::typeof(FLOWVPM.static_particles_default), custom_UJ::Nothing, save_path::Nothing, save_pfield::Bool, create_savepath::Bool, run_name::String, save_code::String, nsteps_save::Int64, prompt::Bool, verbose::Bool, verbose_nsteps::Int64, v_lvl::Int64, save_time::Bool)
@ FLOWVPM ~/Dropbox/MHDResearch/FLOWCodes/FLOWVPM.jl/src/FLOWVPM_utils.jl:106
[15] run_vortexring_simulation(pfield::FLOWVPM.ParticleField{Float64, FLOWVPM.ReformulatedVPM{Float64}, FLOWVPM.Inviscid{Float64}, typeof(FLOWVPM.nofreestream), FLOWVPM.NoSFS{Float64, typeof(FLOWVPM.null_model)}, FLOWVPM.Kernel{typeof(FLOWVPM.zeta_wnklmns), typeof(FLOWVPM.g_wnklmns), typeof(FLOWVPM.dgdr_wnklmns), typeof(FLOWVPM.g_dgdr_wnklmns)}, typeof(FLOWVPM.UJ_fmm), typeof(FLOWVPM.euler), FLOWVPM.Relaxation{Float64, typeof(FLOWVPM.relax_pedrizzetti)}, 0}, nsteps::Int64, dt::Float64, nrings::Int64, Nphis::Vector{Int64}, ncs::Vector{Int64}, extra_ncs::Vector{Int64}; runtime_function::var"#run_vortexring_simulation##8#run_vortexring_simulation##9"{var"#run_vortexring_simulation##10#run_vortexring_simulation##11"}, save_path::Nothing, run_name::String, prompt::Bool, verbose::Bool, v_lvl::Int64, verbose_nsteps::Int64, calc_monitors::Bool, mon_enstrophy::typeof(FLOWVPM.monitor_enstrophy_Gammaomega), monitor_others::var"#this_monitor_others#108"{var"#this_monitor_others#95#109"{var"#run_vortexring_simulation##24#run_vortexring_simulation##25"{var"#run_vortexring_simulation##26#run_vortexring_simulation##27"}, var"#104#105"{var"#106#107"}}}, ringmon_optargs::Vector{Any}, optargs::@Kwargs{})
@ Main ~/Dropbox/MHDResearch/FLOWCodes/FLOWVPM.jl/examples/vortexrings/vortexrings_simulation.jl:66
[16] run_vortexring_simulation(pfield::FLOWVPM.ParticleField{Float64, FLOWVPM.ReformulatedVPM{Float64}, FLOWVPM.Inviscid{Float64}, typeof(FLOWVPM.nofreestream), FLOWVPM.NoSFS{Float64, typeof(FLOWVPM.null_model)}, FLOWVPM.Kernel{typeof(FLOWVPM.zeta_wnklmns), typeof(FLOWVPM.g_wnklmns), typeof(FLOWVPM.dgdr_wnklmns), typeof(FLOWVPM.g_dgdr_wnklmns)}, typeof(FLOWVPM.UJ_fmm), typeof(FLOWVPM.euler), FLOWVPM.Relaxation{Float64, typeof(FLOWVPM.relax_pedrizzetti)}, 0}, nrings::Int64, circulations::Vector{Float64}, Rs::Vector{Float64}, ARs::Vector{Float64}, Rcrosss::Vector{Float64}, Nphis::Vector{Int64}, ncs::Vector{Int64}, extra_ncs::Vector{Int64}, sigmas::Vector{Float64}, Os::Vector{Vector{Float64}}, Oaxiss::Vector{LinearAlgebra.UniformScaling{Bool}}; nref::Int64, nsteps::Int64, Rtot::Float64, beta::Float64, faux::Float64, rbf::Bool, rbf_optargs::Vector{Tuple{Symbol, Real}}, zeta::var"#run_vortexring_simulation##22#run_vortexring_simulation##23", minWfraction::Int64, restart_file::Nothing, restart_sigma::Nothing, verbose::Bool, v_lvl::Int64, use_monitor_ringvorticity::Bool, monvort_optargs::Vector{Tuple{Symbol, Int64}}, monitor_others::var"#run_vortexring_simulation##24#run_vortexring_simulation##25"{var"#run_vortexring_simulation##26#run_vortexring_simulation##27"}, optargs::@Kwargs{save_path::Nothing, calc_monitors::Bool, verbose_nsteps::Int64})
@ Main ~/Dropbox/MHDResearch/FLOWCodes/FLOWVPM.jl/examples/vortexrings/vortexrings_simulation.jl:211
[17] run_vortexring_simulation(::Int64, ::Vector{Float64}, ::Vector{Float64}, ::Vector{Float64}, ::Vector{Float64}, ::Vector{Int64}, ::Vector{Int64}, ::Vector{Int64}, ::Vector{Float64}, ::Vararg{Any}; maxparticles::String, pfieldargs::@NamedTuple{formulation::FLOWVPM.ReformulatedVPM{Float64}, SFS::FLOWVPM.NoSFS{Float64, typeof(FLOWVPM.null_model)}, relaxation::FLOWVPM.Relaxation{Float64, typeof(FLOWVPM.relax_pedrizzetti)}, kernel::FLOWVPM.Kernel{typeof(FLOWVPM.zeta_wnklmns), typeof(FLOWVPM.g_wnklmns), typeof(FLOWVPM.dgdr_wnklmns), typeof(FLOWVPM.g_dgdr_wnklmns)}, viscous::FLOWVPM.Inviscid{Float64}, transposed::Bool, integration::typeof(FLOWVPM.euler), UJ::typeof(FLOWVPM.UJ_fmm), fmm::FLOWVPM.FMM, useGPU::Int64}, nref::Int64, Re::Nothing, R::Type, optargs::@Kwargs{nsteps::Int64, Rtot::Float64, beta::Float64, faux::Float64, save_path::Nothing, calc_monitors::Bool, verbose::Bool, v_lvl::Int64, verbose_nsteps::Int64})
@ Main ~/Dropbox/MHDResearch/FLOWCodes/FLOWVPM.jl/examples/vortexrings/vortexrings_simulation.jl:243
[18] macro expansion
@ ~/Dropbox/MHDResearch/FLOWCodes/FLOWVPM.jl/test/runtests_singlevortexring.jl:79 [inlined]
[19] macro expansion
@ ~/.julia/juliaup/julia-1.12.3+0.aarch64.apple.darwin14/share/julia/stdlib/v1.12/Test/src/Test.jl:1776 [inlined]
[20] top-level scope
@ ~/Dropbox/MHDResearch/FLOWCodes/FLOWVPM.jl/test/runtests_singlevortexring.jl:38
[21] include(mapexpr::Function, mod::Module, _path::String)
@ Base ./Base.jl:307
[22] top-level scope
@ ~/Dropbox/MHDResearch/FLOWCodes/FLOWVPM.jl/test/runtests.jl:13
[23] include(mapexpr::Function, mod::Module, _path::String)
@ Base ./Base.jl:307
[24] top-level scope
@ none:6
[25] eval(m::Module, e::Any)
@ Core ./boot.jl:489
[26] exec_options(opts::Base.JLOptions)
@ Base ./client.jl:283
[27] _start()
@ Base ./client.jl:550
Test Summary: | Error Total Time
test set | 1 1 4.4s
RNG of the outermost testset: Random.Xoshiro(0x1803435b12bab19d, 0x54a14af12236d83c, 0xe08b4c59ae92e320, 0x4bbcace5c247278d, 0x8ac85c37322fbecc)
ERROR: LoadError: Some tests did not pass: 0 passed, 0 failed, 1 errored, 0 broken.
in expression starting at /Users/rachelmarie/Dropbox/MHDResearch/FLOWCodes/FLOWVPM.jl/test/runtests_singlevortexring.jl:21
in expression starting at /Users/rachelmarie/Dropbox/MHDResearch/FLOWCodes/FLOWVPM.jl/test/runtests.jl:13
ERROR: Package FLOWVPM errored during testingReactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels