forked from lijiext/lammps
63 lines
2.0 KiB
Matlab
63 lines
2.0 KiB
Matlab
function [varargout] = readdump_all(varargin)
|
|
% Reads all timesteps from a LAMMPS dump file.
|
|
% Input is dump file name with path
|
|
% Output is in the form of a structure with following variables
|
|
% .timestep --> Vector containing all time steps
|
|
% .Natoms --> Vector containing number of atoms at each time step
|
|
% .x_bound --> [t,2] array with xlo,xhi at each time step
|
|
% .y_bound --> [t,2] array with ylo,yhi at each time step
|
|
% .z_bound --> [t,2] array with zlo,zhi at each time step
|
|
% .atom_data --> 3 dimensional array with data at each time step stored
|
|
% as atomdata(:,:,t)
|
|
% Example
|
|
% data = readdump_all('dump.LAMMPS');
|
|
%
|
|
% See also readdump_one, scandump
|
|
%
|
|
% Author : Arun K. Subramaniyan
|
|
% sarunkarthi@gmail.com
|
|
% http://web.ics.purdue.edu/~asubrama/pages/Research_Main.htm
|
|
% School of Aeronautics and Astronautics
|
|
% Purdue University, West Lafayette, IN - 47907, USA.
|
|
|
|
try
|
|
dump = fopen(varargin{1},'r');
|
|
catch
|
|
error('Dumpfile not found!');
|
|
end
|
|
|
|
i=1;
|
|
while feof(dump) == 0
|
|
id = fgetl(dump);
|
|
if (strcmpi(id,'ITEM: TIMESTEP'))
|
|
timestep(i) = str2num(fgetl(dump));
|
|
else
|
|
if (strcmpi(id,'ITEM: NUMBER OF ATOMS'))
|
|
Natoms(i) = str2num(fgetl(dump));
|
|
else
|
|
if (strcmpi(id,'ITEM: BOX BOUNDS'))
|
|
x_bound(i,:) = str2num(fgetl(dump));
|
|
y_bound(i,:) = str2num(fgetl(dump));
|
|
z_bound(i,:) = str2num(fgetl(dump));
|
|
else
|
|
if (strcmpi(id(1:11),'ITEM: ATOMS'))
|
|
for j = 1 : 1: Natoms
|
|
atom_data(j,:,i) = str2num(fgetl(dump));
|
|
end
|
|
i=i+1;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
%----------Outputs-------------
|
|
%OUTPUTS IN SAME VARIABLE STRUCTURE
|
|
varargout{1}.timestep = timestep;
|
|
varargout{1}.Natoms = Natoms;
|
|
varargout{1}.x_bound = x_bound;
|
|
varargout{1}.y_bound = y_bound;
|
|
varargout{1}.z_bound = z_bound;
|
|
varargout{1}.atom_data = atom_data;
|
|
%------------------------------
|
|
fclose(dump);
|