📄 mainfrm.cpp
字号:
fscanf(fpp,"%d",&pain[i]);
}
fclose(fpp);
fpp=fopen("k2.txt","r");
fscanf(fpp,"%d",&k2);
fclose(fpp);
fpp=fopen("painxy.txt","r");
for(i=1;i<=k2;i++)
{
fscanf(fpp,"%d",&painxy[i]);
}
fclose(fpp);
fpp=fopen("k4.txt","r");
fscanf(fpp,"%d",&k4);
fclose(fpp);
fpp=fopen("painxy2.txt","r");
for(i=1;i<=k4;i++)
{
fscanf(fpp,"%d",&painxy2[i]);
}
fclose(fpp);
fpp=fopen("k5.txt","r");
fscanf(fpp,"%d",&k5);
fclose(fpp);
fpp=fopen("painxy3.txt","r");
for(i=1;i<=k5;i++)
{
fscanf(fpp,"%d",&painxy3[i]);
}
fclose(fpp);
fpp=fopen("k3.txt","r");
fscanf(fpp,"%d",&k3);
fclose(fpp);
fpp=fopen("plane.txt","r");
for(i=1;i<=k3;i++)
{
fscanf(fpp,"%d",&plane[i]);
}
fclose(fpp);
fpp=fopen("k6.txt","r");
fscanf(fpp,"%d",&k6);
fclose(fpp);
fpp=fopen("plane2.txt","r");
for(i=1;i<=k6;i++)
{
fscanf(fpp,"%d",&plane2[i]);
}
fclose(fpp);
fpp=fopen("k7.txt","r");
fscanf(fpp,"%d",&k7);
fclose(fpp);
fpp=fopen("plane3.txt","r");
for(i=1;i<=k7;i++)
{
fscanf(fpp,"%d",&plane3[i]);
}
fclose(fpp);
/* fpp=fopen("outputz.txt","r");
for(i=1;i<=k3;i++)
{
for(j=1;j<=3;j++)
{
fscanf(fpp,"%le",&r[plane[i]][j]);
}
fprintf(fpp,"\n");
}
fclose(fpp);
*/}
void CMainFrame::Oncontinsimu()
{
int i,j;
ic=1;
nloop=300000;
wlf=0.001;
list();
force1();
while(ic<=nloop)
{
intev1();
sintev();
ic=ic+1;
}
}
void CMainFrame::intev1()
{
double dt,temp[10000][4];
int i,j,k;
double dr[4],rr,rr1;
mass=1.0631e-25;
dt=1e-15;
for(i=0;i<10000;i++)
{
for(j=0;j<=3;j++)
{
temp[i][j]=0.0;
}
}
for(i=1;i<=node;i++)
{
for(j=1;j<=3;j++)
{
r[i][j]=r[i][j]+dt*v[i][j]+dt*dt*f[i][j]/(2.0*mass);
temp[i][j]=f[i][j];
}
}
fpp=fopen("outputz.txt","r");
for(i=1;i<=k3;i++)
{
for(j=1;j<=3;j++)
{
fscanf(fpp,"%le",&r[plane[i]][j]);
}
fprintf(fpp,"\n");
}
fclose(fpp);
fpp=fopen("outputz2.txt","r");
for(i=1;i<=k6;i++)
{
for(j=1;j<=3;j++)
{
fscanf(fpp,"%le",&r[plane[i]][j]);
}
fprintf(fpp,"\n");
}
fclose(fpp);
fpp=fopen("outputz3.txt","r");
for(i=1;i<=k7;i++)
{
for(j=1;j<=3;j++)
{
fscanf(fpp,"%le",&r[plane[i]][j]);
}
fprintf(fpp,"\n");
}
fclose(fpp);
fp3=fopen("位移.txt","w");
for(i=1;i<=node;i++)
{
for(j=1;j<=3;j++)
{
fprintf(fp3,"%le ",r[i][j]);
}
fprintf(fp3,"\n");
}
fclose(fp3);
if(ic%10==0)
{
list();
}
force1();
for(i=1;i<=node;i++)
{
for(j=1;j<=3;j++)
{
v[i][j]=v[i][j]+dt*(f[i][j]+temp[i][j])/(2.0*mass);
}
}
fp3=fopen("速度.txt","w");
for(i=1;i<=node;i++)
{
for(j=1;j<=3;j++)
{
fprintf(fp3,"%le ",v[i][j]);
}
fprintf(fp3,"\n");
}
fclose(fp3);
fp2=fopen("output.txt","w");
for(i=1;i<=k1;i++)
{
j=pain[i];
fprintf(fp2,"%le %le\n",r[j][2],r[j][3]);
}
fclose(fp2);
}
void CMainFrame::force1()
{
double rr,rr1,rrr1,p1,p2,p3,ff,df;
int i,j,k,m;
double dr[4],p[10000],A[3],C[3],rc[3],q[3];
double d,D;
d=sqrt(2)*sigma/2;
A[1]=8289.4599770489921; C[1]=10.7272912864108215;
A[2]=0.01832510350693439; C[2]=0.319759369823463370;
D=13.0792125162800630;
rc[1]=1.65;
rc[2]=1.95;
for(i=1;i<=3;i++)
{
dr[i]=0.0;
}
for(i=1;i<=node;i++)
{
p[i]=0;
for(j=1;j<=max[i];j++)
{
rr=0.0;
for(k=1;k<=3;k++)
{
dr[k]=r[i][k]-r[listjd[i][j]][k];
rr=rr+dr[k]*dr[k];
}
rr1=sqrt(rr);
rr1=rr1/d;
p[i]+=A[2]*(rc[2]-rr1)*(rc[2]-rr1)*exp(-C[2]*rr1);
}
}
for(i=0;i<10000;i++)
{
for(k=0;k<4;k++)
{
f[i][k]=0.0;
}
}
for(i=1;i<=node;i++)
{
for(j=1;j<=max[i];j++)
{
rr=0.0;
p1=0.0;
for(k=1;k<=3;k++)
{
dr[k]=r[i][k]-r[listjd[i][j]][k];
rr=rr+dr[k]*dr[k];
}
rrr1=sqrt(rr);
rr1=rrr1/d;
p1=D*(log(p[i])+log(p[listjd[i][j]])+2);
for(m=1;m<=2;m++)
{
q[m]=0;
if(rr1-rc[m]<0)
{
q[m]=A[m]*(2+C[m]*(rc[m]-rr1))*(rc[m]-rr1)*exp(-C[m]*rr1);
}
}
ff=p1*q[2]+q[1];
for(k=1;k<=3;k++)
{
f[i][k]+=ff*dr[k]/rrr1/d*0.16022;
}
}
}
for(i=1;i<=k2;i++)
{
f[painxy[i]][3]=f[painxy[i]][3]+sumwlf;
}
for(i=1;i<=k4;i++)
{
f[painxy2[i]][3]=f[painxy2[i]][3]+sumwlf;
}
for(i=1;i<=k5;i++)
{
f[painxy3[i]][3]=f[painxy3[i]][3]+sumwlf;
}
// if(ic%1500==0)
if((ic%10000==0)&&(sumwlf<0.18))
{
sumwlf=sumwlf+wlf;
}
/**/
fp2=fopen("sumwlf.txt","w");
fprintf(fp2,"%le",sumwlf);
fclose(fp2);
/* fp1=fopen("force.txt","w");
fprintf(fp1,"\n f");
for(i=1;i<=node;i++)
{
fprintf(fp1,"\n ");
for(j=1;j<=3;j++)
{
fprintf(fp1,"%f " ,f[i][j]);
}
}
fclose(fp1);
*/
}
void CMainFrame::force2()
{
double rr,rr1,rrr1,p1,p2,p3,ff,df;
int i,j,k,m;
double dr[4],p[10000],A[3],C[3],rc[3],q[3];
double d,D;
d=sqrt(2)*sigma/2;
A[1]=8289.4599770489921; C[1]=10.7272912864108215;
A[2]=0.01832510350693439; C[2]=0.319759369823463370;
D=13.0792125162800630;
rc[1]=1.65;
rc[2]=1.95;
for(i=1;i<=3;i++)
{
dr[i]=0.0;
}
for(i=1;i<=node;i++)
{
p[i]=0;
for(j=1;j<=max[i];j++)
{
rr=0.0;
for(k=1;k<=3;k++)
{
dr[k]=r[i][k]-r[listjd[i][j]][k];
rr=rr+dr[k]*dr[k];
}
rr1=sqrt(rr);
rr1=rr1/d;
p[i]+=A[2]*(rc[2]-rr1)*(rc[2]-rr1)*exp(-C[2]*rr1);
}
}
for(i=0;i<10000;i++)
{
for(k=0;k<4;k++)
{
f[i][k]=0.0;
}
}
for(i=1;i<=node;i++)
{
for(j=1;j<=max[i];j++)
{
rr=0.0;
p1=0.0;
for(k=1;k<=3;k++)
{
dr[k]=r[i][k]-r[listjd[i][j]][k];
rr=rr+dr[k]*dr[k];
}
rrr1=sqrt(rr);
rr1=rrr1/d;
p1=D*(log(p[i])+log(p[listjd[i][j]])+2);
for(m=1;m<=2;m++)
{
q[m]=0;
if(rr1-rc[m]<0)
{
q[m]=A[m]*(2+C[m]*(rc[m]-rr1))*(rc[m]-rr1)*exp(-C[m]*rr1);
}
}
ff=p1*q[2]+q[1];
for(k=1;k<=3;k++)
{
f[i][k]+=ff*dr[k]/rrr1/d*0.16022;
}
}
}
for(i=1;i<=k2;i++)
{
f[painxy[i]][3]=f[painxy[i]][3]+sumwlf;
}
for(i=1;i<=k3;i++)
{
f[plane[i]][3]=f[plane[i]][3]-sumwlf;
}
if((ic%1000==0)&&(sumwlf<=0.010))
{
sumwlf=sumwlf+wlf;
}
fp2=fopen("sumwlf.txt","w");
fprintf(fp2,"%le",sumwlf);
fclose(fp2);
/* fp1=fopen("force.txt","w");
fprintf(fp1,"\n f");
for(i=1;i<=node;i++)
{
fprintf(fp1,"\n ");
for(j=1;j<=3;j++)
{
fprintf(fp1,"%f " ,f[i][j]);
}
}
fclose(fp1);
*/
}
void CMainFrame::intev2()
{
double dt,temp[10000][4];
int i,j,k;
double dr[4],rr,rr1;
mass=1.0631e-25;
dt=5e-15;
for(i=0;i<10000;i++)
{
for(j=0;j<=3;j++)
{
temp[i][j]=0.0;
}
}
for(i=1;i<=node;i++)
{
for(j=1;j<=3;j++)
{
r[i][j]=r[i][j]+dt*v[i][j]+dt*dt*f[i][j]/(2.0*mass);
temp[i][j]=f[i][j];
}
}
fp3=fopen("位移.txt","w");
for(i=1;i<=node;i++)
{
for(j=1;j<=3;j++)
{
fprintf(fp3,"%le ",r[i][j]);
}
fprintf(fp3,"\n");
}
fclose(fp3);
if(ic%10==0)
{
list();
}
force2();
for(i=1;i<=node;i++)
{
for(j=1;j<=3;j++)
{
v[i][j]=v[i][j]+dt*(f[i][j]+temp[i][j])/(2.0*mass);
}
}
fp3=fopen("速度.txt","w");
for(i=1;i<=node;i++)
{
for(j=1;j<=3;j++)
{
fprintf(fp3,"%le ",v[i][j]);
}
fprintf(fp3,"\n");
}
fclose(fp3);
fp2=fopen("output.txt","w");
for(i=1;i<=k1;i++)
{
j=pain[i];
fprintf(fp2,"%le %le\n",r[j][2],r[j][3]);
}
fclose(fp2);
}
void CMainFrame::Ontwosidef()
{
int i,j;
ic=1;
nloop=5000;
wlf=0.001;
list();
force2();
while(ic<=nloop)
{
intev2();
sintev();
ic=ic+1;
}
}
void CMainFrame::force3()
{
double rr,rr1,rrr1,p1,p2,p3,ff,df;
int i,j,k,m;
double dr[4],p[10000],A[3],C[3],rc[3],q[3];
double d,D;
d=sqrt(2)*sigma/2;
A[1]=8289.4599770489921; C[1]=10.7272912864108215;
A[2]=0.01832510350693439; C[2]=0.319759369823463370;
D=13.0792125162800630;
rc[1]=1.65;
rc[2]=1.95;
for(i=1;i<=3;i++)
{
dr[i]=0.0;
}
for(i=1;i<=node;i++)
{
p[i]=0;
for(j=1;j<=max[i];j++)
{
rr=0.0;
for(k=1;k<=3;k++)
{
dr[k]=r[i][k]-r[listjd[i][j]][k];
rr=rr+dr[k]*dr[k];
}
rr1=sqrt(rr);
rr1=rr1/d;
p[i]+=A[2]*(rc[2]-rr1)*(rc[2]-rr1)*exp(-C[2]*rr1);
}
}
for(i=0;i<10000;i++)
{
for(k=0;k<4;k++)
{
f[i][k]=0.0;
}
}
for(i=1;i<=node;i++)
{
for(j=1;j<=max[i];j++)
{
rr=0.0;
p1=0.0;
for(k=1;k<=3;k++)
{
dr[k]=r[i][k]-r[listjd[i][j]][k];
rr=rr+dr[k]*dr[k];
}
rrr1=sqrt(rr);
rr1=rrr1/d;
p1=D*(log(p[i])+log(p[listjd[i][j]])+2);
for(m=1;m<=2;m++)
{
q[m]=0;
if(rr1-rc[m]<0)
{
q[m]=A[m]*(2+C[m]*(rc[m]-rr1))*(rc[m]-rr1)*exp(-C[m]*rr1);
}
}
ff=p1*q[2]+q[1];
for(k=1;k<=3;k++)
{
f[i][k]+=ff*dr[k]/rrr1/d*0.16022;
}
}
}
/* fp1=fopen("force.txt","w");
fprintf(fp1,"\n f");
for(i=1;i<=node;i++)
{
fprintf(fp1,"\n ");
for(j=1;j<=3;j++)
{
fprintf(fp1,"%f " ,f[i][j]);
}
}
fclose(fp1);
*/
}
void CMainFrame::intev3()
{
double dt,temp[10000][4];
int i,j,k;
double dr[4],rr,rr1;
mass=1.0631e-25;
dt=5e-15;
for(i=0;i<10000;i++)
{
for(j=0;j<=3;j++)
{
temp[i][j]=0.0;
}
}
for(i=1;i<=node;i++)
{
for(j=1;j<=3;j++)
{
r[i][j]=r[i][j]+dt*v[i][j]+dt*dt*f[i][j]/(2.0*mass);
temp[i][j]=f[i][j];
}
}
fpp=fopen("outputz.txt","r");
for(i=1;i<=k3;i++)
{
for(j=1;j<=3;j++)
{
fscanf(fpp,"%le",&r[plane[i]][j]);
}
fprintf(fpp,"\n");
}
fclose(fpp);
fpp=fopen("rpainxy.txt","r");
for(i=1;i<=k2;i++)
{
for(j=1;j<=3;j++)
{
fscanf(fpp,"%le",&r[painxy[i]][j]);
}
fprintf(fpp,"\n");
}
fclose(fpp);
if(ic%200==0)
{
for(i=1;i<=k2;i++)
{
r[painxy[i]][3]=r[painxy[i]][3]+wlr;
}
}
fp3=fopen("rpainxy.txt","w");
for(i=1;i<=k2;i++)
{
for(j=1;j<=3;j++)
{
fprintf(fp3,"%le ",r[painxy[i]][j]);
}
fprintf(fp3,"\n");
}
fclose(fp3);
fp3=fopen("位移.txt","w");
for(i=1;i<=node;i++)
{
for(j=1;j<=3;j++)
{
fprintf(fp3,"%le ",r[i][j]);
}
fprintf(fp3,"\n");
}
fclose(fp3);
if(ic%10==0)
{
list();
}
force3();
for(i=1;i<=node;i++)
{
for(j=1;j<=3;j++)
{
v[i][j]=v[i][j]+dt*(f[i][j]+temp[i][j])/(2.0*mass);
}
}
fp3=fopen("速度.txt","w");
for(i=1;i<=node;i++)
{
for(j=1;j<=3;j++)
{
fprintf(fp3,"%le ",v[i][j]);
}
fprintf(fp3,"\n");
}
fclose(fp3);
fp2=fopen("output.txt","w");
for(i=1;i<=k1;i++)
{
j=pain[i];
fprintf(fp2,"%le %le\n",r[j][2],r[j][3]);
}
fclose(fp2);
}
void CMainFrame::Onrsimulation()
{
int i,j;
ic=1;
nloop=5000;
list();
force3();
while(ic<=nloop)
{
intev3();
sintev();
ic=ic+1;
}
}
void CMainFrame::Onconrnext()
{
int i,j,k;
sigma=0.361;
for(i=0;i<10000;i++)
{
for(k=0;k<4;k++)
{
r[i][k]=0.0;
v[i][k]=0.0;
f[i][k]=0.0;
}
}
fpp=fopen("nodejd.txt","r");
fscanf(fpp,"%d",&node);
fclose(fpp);
fpp=fopen("wlr.txt","r");
fscanf(fpp,"%le",&wlr);
fclose(fpp);
fpp=fopen("位移.txt","r");
for(i=1;i<=node;i++)
{
for(j=1;j<=3;j++)
{
fscanf(fpp,"%le",&r[i][j]);
}
fprintf(fpp,"\n");
}
fclose(fpp);
fpp=fopen("速度.txt","r");
for(i=1;i<=node;i++)
{
for(j=1;j<=3;j++)
{
fscanf(fpp,"%le",&v[i][j]);
}
fprintf(fpp,"\n");
}
fclose(fpp);
fpp=fopen("k1.txt","r");
fscanf(fpp,"%d",&k1);
fclose(fpp);
fpp=fopen("pain.txt","r");
for(i=1;i<=k1;i++)
{
fscanf(fpp,"%d",&pain[i]);
}
fclose(fpp);
fpp=fopen("k2.txt","r");
fscanf(fpp,"%d",&k2);
fclose(fpp);
fpp=fopen("painxy.txt","r");
for(i=1;i<=k2;i++)
{
fscanf(fpp,"%d",&painxy[i]);
}
fclose(fpp);
fpp=fopen("k4.txt","r");
fscanf(fpp,"%d",&k4);
fclose(fpp);
fpp=fopen("painxy2.txt","r");
for(i=1;i<=k4;i++)
{
fscanf(fpp,"%d",&painxy2[i]);
}
fclose(fpp);
fpp=fopen("k5.txt","r");
fscanf(fpp,"%d",&k5);
fclose(fpp);
fpp=fopen("painxy3.txt","r");
for(i=1;i<=k5;i++)
{
fscanf(fpp,"%d",&painxy3[i]);
}
fclose(fpp);
fpp=fopen("k3.txt","r");
fscanf(fpp,"%d",&k3);
fclose(fpp);
fpp=fopen("plane.txt","r");
for(i=1;i<=k3;i++)
{
fscanf(fpp,"%d",&plane[i]);
}
fclose(fpp);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -