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
{
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;
}
}