#define ARFA 1.0
#define BETA 1.0
#define DELTAT 0.10
#define DELTAX 2.0
#define GAMA 1.0
#define K 2.0
#define L 1.0
#define column_length 100
#define column_width 100
#define column_high 100
#define parNum 115
//计算循环体
Datacaluation()
{
float y=0.0;
for(int m=1;m<column_length-1;m++)
for(int n=1;n<column_width-1;n++)
for(int b=1;b<column_high-1;b++)
{
for(int l=0;lparNum;l++)
{ float y1=0.0;
float y2=0.0;
for(int k=0;k<parNum;k++)
y1=p[m][n][b][k]*p[m][n][b][k]+y1;
y1=y1-p[m][n][b][l]*p[m][n][b][l];
yi=y1*2*GAMA*p[m][n][b][l];
y2=p[m+1][n][b][l]+p[m-1][n][b][l]+p[m][n+1][b][l]+p[m][n-1][b][l]+p[m][n][b-1][l]+p[m][n][b+1][l]-6*p[m][n][b][l];
y2=1.0/2*y2+1.0/4*(p[m+1][n][b-1][l]+p[m-1][n][b-1][l]+p[m+1][n][b+1][l]+p[m-1][n][b+1][l]+p[m+1][n-1][b][l]+p[m-1][n-1][b][l]+p[m+1][n+1][b][l]+p[m-1][n+1][b][l]+p[m][n-1][b-1][l]+p[m][n+1][b-1][l]+p[m][n-1][b+1][l]+p[m][n+1][b+1][l]+p[m][n-1][b+1][l]-12*p[m][n][b][l]);
y2=K/(DELTAX*DELTAX)*y2;
y1=y1-ARFA*p[m][n][b][l]+BETA*p[m][n][b][l]*p[m][n][b][l]*p[m][n][b][l];
y1=p[m][n][b][l]-y1*DELTAT;
x[m][n][l]=y1;
y=y1*y1+y;
}
w[m][n][b]=y;
y=0.0;
}
CString str;
CStatusBar*pStatus;
pStatus=(CStatusBar*)AfxGetApp()->m_pMainWnd->GetDescendantWindow(AFX_IDW_STATUS_BAR);
if(pStatus)
{str.Format("count=%2d nflag%2d area%2f",count,nflag-2,aveagearea);
pStatus->SetPaneText(1,str);
}
count=count+1;
//周期性边界条件
for(int i33=;i33<column_length;i33++)
for(int j33=0;j33<column_width;j33++)
for(int k33=0;k33<parNum;k33++)
{
x[i33][j33][0][k33]=x[i33][j33][column_high-3][k33];
x[i33][j33][column_high-2][k33]=x[i33][j33][l][k33];
x[i33][j33][column_high-1][k33]=x[i33][j33][2][k33];
}
for(int i34=0;i34<column_length;i34++)
for(int j34=0;j34<column_high;j34++)
for(nt k34=0;k34<parNum;k34++)
{
x[i34][0][j34][k34]=x[i34][column_width-3][j34][k34];
x[i34][column_width-2][j34][k34]=x[i34][l][j34][k34];
x[i34][column_width-1][j34][k34]=x[i34][2][j34][k34];
}
for(int i37=0;i37<column_width;i37++)
for(int j37=0;j37<column_width;j37++)
for(int k37=0;k37<parNum;k37++)
{
x[0][i37][j37][k37]=x[column_length-3][i37][j37][k37];
x[column_length-2][i37][j37][k37]=x[][i37][j37][k37];
x[column_length-1][i37][j37][k37]=x[2][i37][j37][k37];
}
for(int e=0;e<colum_length;e++)
for(int d=0;d<column_width;d++)
for(int r=0;r<colum_high;r++)
for(int f=0;f<parNum;f++)
p[e][d][r][f]=x[e][d][r][f];
CMy3DDoc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
for(int i35=0;i35<column_length;i35++)
for(int j35=0;j35<column_width;j35++)
for(int z35=0;z35<column_high;z35++)
for(int k35=0;k35<parNum;k35++)
{//m_str[i35][j35][z35][k35]=p[i35][j35][z35][k35];
//pDoc->m_doc[i35][j35][z35][k35]=m_str[i35][j35][z35][k35];
pDoc->m_doc[i35][j35][z35][k35]=p[i35][j35][z35][k35];
}
m_count=count;
pDoc->m_doccount=m_count;
pDoc->SetModifiedFlag(TRUE);
pDoc->UpdateAllViews(this;
}
void CMy3DView::OnGrainNum()
{
for(int i=1;i<column_length-1;i++)
for(int j=1;j<column_width-1;j++)
for(int k=1;k<column_high-1;k++)
{
if((w[i][j][k]<1 && w[i][j][k]>0.8)||w[i][j][k]=1)
{ if(i=1)
w[column_length-2][j][k]=w[i][j][k]=nflag;
if(j=1)
w[i][column_length2][k]=w[i][j][k]=nflag;
if(k=1)
w[i][j][column_length-2]=w[i][j][k]=nflag;
w[i][j][k]=nflag;
int np1=1;
int np0=0;
int t=1;
for(int i2=0;np1>np0;i2++)
{
for(int i1=1;i1<column_length-1;i1++)
for(int j1=1;j1<colum_width-1;j1++)
for(int k1=1;k1<colum_high-1;k1++)
{ if((w[i1][j1][k1]>0.8 && w[i1][j1][k1]<1}||w[i1][j1][k1]=1)
{
if(w[i1+1][j1][k1]=nflag)
w[i1][j1][k1]=nflag;
else if(w[i1-1][j1][k1]=nflag)
w[i1][j1][k1]=nflag;
else if(w[i1][j1-1][k1]=nflag)
w[i1][j1][k1]=nflag;
else if(w[i1][j1][k1]=nflag)
w[i1][j1][k1]=nflag;
else if(w[i1][j1][k1]=nflag)
w[i1][j1][k1]=nflag;
else if(w[i1][j1][k1-1]=nflag)
w[i1][j1][k1]=nflag;
if(w[i1][j1][k1]=nflag)
{ t=t+1;
if(i1=1)
w[column_length-2][j1][k1]=w[i1][j1][k1]=nflag;
if(j1=1)
w[column_length-2][k1]=w[i1][j1][k1]=nflag;
if(k1=1)
w[i1][j1][column_length-2]=w[i1][j1][k]=nflag;
}
}
}
if(t=1)
{
np0=0;
np1=0;
}
else
{ np0=np1;
np1=t;}
}
nflag=nfag+1;
}
}
评论1