Help with a code writing

I want to create a code that simulates multiple particles coliding with the walls of a box but I dont want the particles to colide with each other.
I alredy made a script for one particle, but Im having trouble making one for multiple ones.
Can someone help me please?

6 commentaires

Jayant
Jayant le 27 Mar 2020
you can post a snapof ur code or your script, it will be helpfull to tell u the changes. Where to add what...
PS
PS le 27 Mar 2020
Modifié(e) : PS le 27 Mar 2020
OK sorry I forgot about it thank you.
Here's the main script:
a=20;
b=10;
R=0.5;
dt=0.1;
np=3; %Number of particles
rx=a*rand(1,np);
ry=b*rand(1,np);
r=[rx;ry];
v=5*(2*rand(2,np)-1);
tmax=100;
t=0;
while (t<tmax)
for i=1:1:np
deltat(1,i)=(R-r(1,i))/v(1,i); deltat(2,i)=(a-R-r(1,i))/v(1,i);
deltat(3,i)=(R-r(2,i))/v(2,i); deltat(4,i)=(b-R-r(2,i))/v(2,i);
if deltat(1,i)<=4*eps
deltat(1,i)=1e6;
end
if deltat(2,i)<=4*eps
deltat(2,i)=1e6;
end
if deltat(3,i)<=4*eps
deltat(3,i)=1e6;
end
if deltat(4,i)<=4*eps
deltat(4,i)=1e6;
end
deltat_wall=[deltat(1,i),deltat(2,i),deltat(3,i),deltat(4,i)];
[deltat, column]=min(deltat_wall,[],2);
[deltat,particle]=min(deltat);
wall=column(particle);
animacion(r,v,a,b,R,dt,deltat) % the function is just to plot the box and the posicion of the particles
r=r+v*deltat;
ep=[[1;0],[-1;0],[0;1],[0;-1]];
v=v-2*dot(v,ep(:,wall))*ep(:,wall);
t=t+deltat;
end
end
Here´s the function:
function []= animacion(r,v,a,b,R,dt,deltat)
x1=0;
x2=a;
y1=0;
y2=b;
side_a=[x1,x2,x2,x1,x1];
side_b=[y1,y1,y2,y2,y1];
for t=0:dt:deltat
plot(side_a,side_b,'b-','Linewidth',2)
hold on
plot(r(1,:),r(2,:),'ko','MarkerFaceColor','k', 'MarkerSize',28*R)
xlim([-10,30])
ylim([-10,20])
drawnow
hold off
r=r+v*dt;
end
end
Hope its better now
darova
darova le 27 Mar 2020
See this question
PS
PS le 27 Mar 2020
Thank you for your answer but I still cannot understand how to do it for more particles using my script
darova
darova le 27 Mar 2020
I can't run your script. I have some errors. Do you have errors?
PS
PS le 27 Mar 2020
yes I have.If you take the cicle for and the i's on deltat you should see the animation with one particle.

Connectez-vous pour commenter.

Réponses (0)

Catégories

En savoir plus sur Programming dans Centre d'aide et File Exchange

Question posée :

PS
le 27 Mar 2020

Commenté :

PS
le 27 Mar 2020

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by