⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainfrm.cpp

📁 分子动力学的VC源码,可以方面的用语化学与材料计算方面的开发,希望有用.
💻 CPP
📖 第 1 页 / 共 2 页
字号:

			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 + -