SCJ_Projekt/scripts/main.jl

61 lines
1.6 KiB
Julia

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
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[]))
# Rebuild when model or sliders change
function setup_param_binding!(model_type, gray_params, fhn_params, params_obs)
if model_type[] == :gray_scott
lift(gray_params.Du, gray_params.Dv, gray_params.F, gray_params.k) do Du, Dv, F, k
params_obs[] = GSParams(N, dx, Du, Dv, F, k)
end
else
lift(fhn_params.Du, fhn_params.Dv, fhn_params.ϵ, fhn_params.a, fhn_params.b) do Du, Dv, ϵ, a, b
params_obs[] = FHNParams(N, dx, Du, Dv, ϵ, a, b)
end
end
end
lift(Du, Dv, ϵ, a, b) do d_u, d_v, eps, aa, bb
params_obs[] = Constants.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 = Visualization.build_ui(U, V, param_observables, params_obs, heat_obs)
display(fig)