Function File: t,pos,vel = mdsim (func,tspan,p0,v0)
Integrates a system of particles using velocity Verlet algorithm.
The following code
N = 6; P0 = linspace (-0.5+1/(N-1), 0.5-1/(N-1), N).'; V0 = zeros (N, 1); nT = 80; tspan = linspace(0, 2, nT); [t P V] = mdsim ('demofunc1', tspan, P0, V0,'timestep',1e-3); figure (1) plot (P.',t,'.'); xlabel ("Position") ylabel ("Time") axis tight disp("Initial values") disp ( sum ([V(:,1) P(:,1)], 1) ) disp("Final values") disp ( sum ([V(:,end) P(:,end)], 1) ) %------------------------------------------------------------------- % 1D particles with Lennard-Jones potential and periodic boundaries. % Velocity and position of the center of mass are conserved.
Produces the following output
Initial values 0.0000e+00 -5.5511e-17 Final values 3.8858e-15 3.4417e-15
and the following figure
Figure 1 |
---|
The following code
N = 10; P0 = linspace (0,1,N).'; V0 = zeros (N, 1); nT = 80; tspan = linspace(0, 1, nT); [t P] = mdsim ('demofunc2', tspan, P0, V0,'nonperiodic', true); figure (1) plot (P.',t,'.'); xlabel ("Position") ylabel ("Time") %------------------------------------------------------------------- % 1D array of springs with damping proportional to relative velocity and % nonzero rest length.
Produces the following figure
Initial values 0.0000e+00 -5.5511e-17 Final values 3.8858e-15 3.4417e-15
and the following figure
Figure 1 |
---|
The following code
input("NOTE: It may take a while.\nPress Ctrl-C to cancel orto continue: ","s"); N = 4; [Px Py] = meshgrid (linspace (-0.5+0.5/(N-1), 0.5-0.5/(N-1), N)); P0 = [Px(:) Py(:)]; N = size(P0,1); P0 = P0 + 0.1* 0.5/N *(2*rand (size (P0)) - 1); V0 = zeros (N, 2); nT = 80; tspan = linspace(0, 1, nT); [t P] = mdsim ('demofunc3', tspan, P0, V0); x = squeeze(P(:,1,:)); y = squeeze(P(:,2,:)); figure (1) plot (x.',y.','.',x(:,end),y(:,end),'.k'); xlabel ("X") ylabel ("Y") axis tight %------------------------------------------------------------------- % 2D particles with Lennard-Jones potential and periodic boundaries
Produces the following output
NOTE: It may take a while. Press Ctrl-C to cancel orto continue:
and the following figure
Figure 1 |
---|