using DifferentialEquations using Plots function rotchain!(du, u, p, x) # Differential equation of the rotating chain in 3D w, g, μ = p # Unpack the parameters du = u du = -u/x + (μ * g) / (x * w^2) * sqrt(1 + u^2) end function rotation!(du, u, p, t) w = p x = u z = u du = -w * sin(w * t) du = w * cos(w * t) end function rotchain_solve(L, w, g, μ, num_points) xspan = (0.1, L) u0 = [1.0, 1.0] # Initial values for u and du/dx at x=0 # Solving the differential equation prob1 = ODEProblem(rotchain!, u0, xspan, [w, g, μ]) sol1 = solve(prob1, Tsit5(), saveat = L / (num_points - 1) * (0:num_points-1)) # saveat for equally scattered points to compute the numerical u(x) return sol1 end function rotation_solve(w, L, num_points) tspan = (0.1, L) u0 = [1.0, 0.0] prob2 = ODEProblem(rotation!, u0, tspan, [w]) sol2 = solve(prob2, Tsit5(), saveat = L / (num_points - 1) * (0:num_points-1)) return sol2 end #x_values = sol1.t .* sol2[1, :] #y_values = sol1[1, :] #z_values = sol1.t .* sol2[2, :] gr() function plot_Rot_Chain_3D(sol1, sol2) anim = @animate for i in 1:length(sol2.t) x_vals = sol1.t[i] .* sol2[1, i] y_vals = sol1[1, i] z_vals = sol1.t[i] .* sol2[2, i] plot([x_vals], [y_vals], [z_vals], mode="markers", name="Rotating Chain") end gif(anim, "rotating_chain.gif", fps = 5) end μ = 10 L = 1 w = π / 2 g = 9.81 num_points = 100 # Solution and plotting sol1 = rotchain_solve(L, w, g, μ, num_points) sol2 = rotation_solve(w, L, num_points) plot_Rot_Chain_3D(sol1, sol2)
I wrote this code to solve the problem, in which we hang down a chain and rotate it qroud this axis(y-axis). At the end I tried to make an animation, in which the chain rotates around the y-axis, while its shape is determined, but the actual animation part did not really worked. For so much time I gave me different kind of errors, like Assertion or Method errors. Now it generates an animation, but it does not look like as it should. Acctually there is nothing on the plot. I would really appriciate if anyone could help me.
Thank you, in advance!