文档库 最新最全的文档下载
当前位置:文档库 › 四参数随机生长法重构二维多孔介质代码

四参数随机生长法重构二维多孔介质代码

void QuartetStructureGenerationSet()
{
double d14 = 0.04;
double d58 = d14 / 4.0;
double n = 0.65;
double cdd = 0.01;
double numtotal_need = (1 - n)*NX*NY;
int numsoild = 0;
int Tnumsoild;
int soild[M][2];
srand((unsigned)time(NULL));

//initializing the grid, generating solid phase core
for (i = 0; i <= NX; i++)
{
for (j = 0; j <= NY; j++)
{
arrgrid[i][j] = 0;
soild[numsoild][0] = 0;
soild[numsoild][1] = 0;

if (((rand() % 1000) / 1000.0) < cdd)
{
arrgrid[i][j] = 1;
soild[numsoild][0] = i;
soild[numsoild][1] = j;
numsoild = numsoild + 1;
}
}
}
Tnumsoild = numsoild;

//从固相核向周围8个方向生长
while (Tnumsoild< numtotal_need)
{
for (int index_soild = 0; index_soild < Tnumsoild; index_soild++)
{
int index_i = soild[index_soild][0];
int index_j = soild[index_soild][1];

//1 方向
if (index_j < NY - 1)
{
i = index_i;
j = index_j + 1;
if (arrgrid[i][j] == 0 && ((rand() % 1000) / 1000.0) < d14)
{
numsoild = numsoild + 1;
arrgrid[i][j] = 1;
soild[numsoild][0] = i;
soild[numsoild][1] = j;
}
}

//2方向
if (index_i>0)
{
i = index_i - 1;
j = index_j;
if (arrgrid[i][j] == 0 && ((rand() % 1000) / 1000.0) < d14)
{
numsoild = numsoild + 1;
arrgrid[i][j] = 1;
soild[numsoild][0] = i;
soild[numsoild][1] = j;
}
}

//3方向
if (index_j>0)
{
i = index_i;
j = index_j - 1;
if (arrgrid[i][j] == 0 && ((rand() % 1000) / 1000.0) < d14)
{
numsoild = numsoild + 1;
arrgrid[i][j] = 1;
soild[numsoild][0] = i;
soild[numsoild][1] = j;
}
}

//4方向
if (index_i < NX - 1)
{
i = index_i + 1;
j = index_j;
if (arrgrid[i][j] == 0 && ((rand() % 1000) / 1000.0) < d14)
{
numsoild = numsoild + 1;
arrgrid[i][j] = 1;
soild[numsoild][0] = i;
soild[numsoild][1] = j;
}
}

//5方向
if (index_j 0)
{
i = index_i - 1;
j = index_j + 1;
if (arrgrid[i][j] == 0 && ((rand() % 1000) / 1000.0) < d58)
{
numsoild = numsoild + 1;
arrgrid[i][j] = 1;
soild[numsoild][0] = i;
soild[numsoild][1] = j;
}
}

//6方向
if (index_j>0 && index_i > 0)
{
i = index_i - 1;
j = index_j - 1;
if (arrgrid[i][j] == 0 && ((rand() % 1000) / 1000.0) < d58)
{
numsoild = numsoild + 1;
arrgrid[i][j] = 1;
soild[numsoild][0] = i;
soild[numsoild][1] = j;
}
}

//7方向
if (index_j>0 && index_i < NX - 1)
{
i = index_i + 1;
j = index_j - 1;
if (arrgrid[i][j] == 0 && ((rand() % 1000) / 1000.0) < d58)
{
numsoild = numsoild + 1;
arrgrid[i][j] = 1;
soild[numsoild][0] = i;
soild[numsoild][1] = j;
}
}

//8方向
if (index_j < NY - 1 && inde

x_i < NX - 1)
{
i = index_i + 1;
j = index_j + 1;
if (arrgrid[i][j] == 0 && ((rand() % 1000) / 1000.0)< d58)
{
numsoild = numsoild + 1;
arrgrid[i][j] = 1;
soild[numsoild][0] = i;
soild[numsoild][1] = j;
}
}
}
Tnumsoild = numsoild;
}
}

相关文档