include("../src/utils/constants.jl") #include("../src/fhn_solver.jl") include("../src/gray_scott_solver.jl") include("../src/visualization.jl") using Observables using GLMakie using .Constants using .Visualization # Rebuild when model or sliders change function setup_param_binding!(model_type, gray_params, fhn_params, params_obs) if model_type[] == :gray_scott return gray_params else return fhn_params end end model_type = Observable(:gray_scott) # or :fhn # GSParams N = 128 dx = 1.0 gray_params = ( Du = Observable(0.16), Dv = Observable(0.08), F = Observable(0.060), k = Observable(0.062) ) # FHNParams N = 128 dx = 1.0 fhn_params = ( Du = Observable(0.16), Dv = Observable(0.08), ϵ = Observable(0.05), a = Observable(0.7), b = Observable(0.8) ) params_obs = Observable(Constants.GSParams(N, dx, gray_params.Du[], gray_params.Dv[], gray_params.F[], gray_params.k[])) #params_obs = Observable(Constants.FHNParams(N=N, dx=dx, Du=Du[], Dv=Dv[], ϵ=ϵ[], a=a[], b=b[])) param_observables = setup_param_binding!(model_type, gray_params, fhn_params, params_obs) """ lift(Du, Dv, ϵ, a, b) do d_u, d_v, eps, aa, bb params_obs[] = FHNParams(N=N, dx=dx, Du=d_u, Dv=d_v, ϵ=eps, a=aa, b=bb) end """ U = ones(N, N) V = zeros(N, N) heat_obs = Observable(U) fig = build_ui(U, V, param_observables, params_obs, heat_obs) display(fig)