四参数随机生长法生成多孔介质代码Word格式文档下载.docx
《四参数随机生长法生成多孔介质代码Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《四参数随机生长法生成多孔介质代码Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。
doublenumtotal_need=(1-n)*NX*NY*NZ;
intnumsoild=0;
intTnumsoild;
intsoild[M+1][3];
srand((unsigned)time(NULL));
//第一步,遍历所有网格,生成固相内核
for(i=0;
i<
=NX;
i++)
{
for(j=0;
j<
=NY;
j++)
{
for(k=0;
k<
=NZ;
k++)
{
arrgrid[i][j][k]=0;
soild[numsoild][0]=0;
soild[numsoild][1]=0;
soild[numsoild][2]=0;
if(((rand()%1000)/1000.0)<
cdd)
{
arrgrid[i][j][k]=1;
soild[numsoild][0]=i;
soild[numsoild][1]=j;
soild[numsoild][2]=k;
numsoild=numsoild+1;
}
}
}
}
Tnumsoild=numsoild;
//第二步,从固相核向周围26个方向生长
while(Tnumsoild<
numtotal_need)
for(intindex_soild=0;
index_soild<
Tnumsoild;
index_soild++)
intindex_i=soild[index_soild][0];
intindex_j=soild[index_soild][1];
intindex_k=soild[index_soild][2];
//1向右方向生长
if(index_j<
NY-1)
i=index_i;
j=index_j+1;
k=index_k;
if(arrgrid[i][j][k]==0&
&
((rand()%1000)/1000.0)<
d1_6)
//2向后方向生长
if(index_i>
0)
i=index_i-1;
j=index_j;
//3向左方向生长
if(index_j>
j=index_j-1;
//4向前方向生长
if(index_i<
NX-1)
i=index_i+1;
//5向上方向生长
if(index_k<
NZ-1)
k=index_k+1;
//6向下方向生长
if(index_k>
k=index_k-1;
//7向水平方向右前生长
NX-1&
index_j<
d7_18)
//8向水平方向左前生长
index_j>
//9向水平方向右后生长
0&
//10向水平方向左后生长
//11向右上方向生长
NY-1&
index_k<
//12向右下方向生长
NY-1&
index_k>