LIGGGHTS可以read_data命令通过读取.txt文件中的颗粒信息。.txt的内容参考链接:liggghts通过.txt文件导入颗粒信息。
下面的MATLAB代码可以根据需要生成一系列的颗粒信息,包括颗粒的ID,type,diameter,density,coordinate等。颗粒数量为8000,并且能够填充一个范围在(x_min,y_min,z_min)到(x_max,y_max,z_max)的矩形空间,每个方向上有20个颗粒,颗粒直径为0.008,颗粒密度为1000。
clc; clear; close all; % Atoms的数量 particle_number = 8000; % 创建一个8000*1的矩阵,作为Atoms ID a=(1:particle_number)'; Atoms_ID = a; % 创建一个8000*1的矩阵,作为Atoms type b=ones(particle_number,1); Atoms_type=b; % 创建一个8000*1的矩阵,作为Atoms diameter c=ones(particle_number,1); particle_diameter=0.008; Atoms_diameter=c*0.008; % 创建一个8000*1的矩阵,作为Atoms diameter d=ones(particle_number,1); Atoms_density=d*1000; % 创建一个8000*3的矩阵,作为Atoms coordinate % 初始化一个8000*3的矩阵 % 定义每个方向上点的数量(三个方向上点的数量一致) n = 20; % 定义坐标范围(填充立方体的长度范围) x_min = 0.1; x_max = x_min+particle_diameter*(n-1); y_min = 0.1; y_max = y_min+particle_diameter*(n-1); z_min = 0.1; z_max = z_min+particle_diameter*(n-1); % 初始化坐标矩阵 Atoms_coordinates = zeros(n^3, 3); % 使用for循环填充坐标矩阵 index = 1; for i = 1:n for j = 1:n for k =1:n x = linspace(x_min, x_max, n); y = linspace(y_min, y_max, n); z = linspace(z_min, z_max, n) Atoms_coordinates(index,:) = [x(i), y(j), z(k)]; index = index + 1; end end end % 显示生成的坐标点 % disp(coordinates); %创建一个大的矩阵M,记录Atoms的全部信息 M = [Atoms_ID Atoms_type Atoms_diameter Atoms_density Atoms_coordinates]; % 将矩阵M写入.xlsx文件 xlswrite('G:\cfdem_case\settlingTestMPI-Cate-222\MATLAB_file\particles.xlsx',M,'sheet1','A');
代码的最后将颗粒的信息写入到名为“particles.xlsx”的表格中,然后在创建一个.txt文件,把liggghts通过.txt文件导入颗粒信息中的表头复制到文件中,再把表格中的内容复制到后面即可。
标签:diameter,particle,min,max,矩阵,Atoms,MATLAB,type,ID From: https://www.cnblogs.com/Xiwang-Sun/p/17965306