max_j=200;
max_i=200;
d14=0.1;
d58=d14/4;
n=0.35;
cdd =0.01 ;
numtotal_need=(1-n)*max_i*max_j;
numsoild =0;
arrgrid =0; for i =1:max_i %第 1 步, 遍历所有网格, 生成固相内核
for j =1:max_j
if rand( ) <cdd
numsoild =numsoild+1;
arrgrid (i,j) =1;
soild(numsoild,1) =i ;
soild(numsoild,2) =j ;
end % end if
end % end j
end % end i
Tnumsoild =numsoild ;
% 第 2 步, 从固相内核向周围 8 个方向生长
while Tnumsoild <numtotal_need
for index_soild =1:Tnumsoild
index_i =soild(index_soild,1);
index_j =soild(index_soild,2);
% 固相内核向右边生长, 图 1 中右 1 方向
if index_j<max_j
i =index_i;
j =index_j+1;
% right 1
if arrgrid(i,j)==0 & rand( )<d14
numsoild =numsoild+1;
arrgrid(i,j) =1;
soild(numsoild,1) =i;
soild(numsoild,2) =j;
end
end %index j
...;%循环八个方向
% 固相内核向周围其他 7 个方向生长
end % index_soil, 循环结束
Tnumsoild =numsoild;
end
%end while, 第 2 步结束
x=grid(:,1);
%网格的横坐标
y =grid(:,2);
%网格的纵坐标
z =grid(:,3);
%网格属性, 0-液相, 1-固相
scatter(x,y,5,z)
%绘制散点图
[c,h]=contour(x,y,arrgrid,[1 1] ) ;
%绘制固相轮廓线, c 为轮廓线数据
save' d: matlab .txt′c' -ascii ;
%保存数据到文件