24小时热门版块排行榜    

查看: 2261  |  回复: 4
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

牛排小黑娇

新虫 (初入文坛)

[求助] 势函数解析问题

我想做Mo-Ag的合金扩散模拟,但是并没有现成的势函数文件,我查阅文献查到了有人拟合过这个合金的势函数。

势函数形式是FS势格式和EAM势差不多的,我看lammps手册这个势函数可以通过一个DYNAMO的程序解析出来,不知道您是不是也做过这个势函数的解析文件,我想让您帮我看一下我的程序是不 是有问题,我之前弄出来的模拟结果只能运行一行。希望尚老师您能抽时间帮我看下,万分感谢!

#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <unistd.h>
#include <string>
#include <stdarg.h>
#include <string.h>
#include "vector"
using namespace std;
#define EOK 0
#define ERROR -1
double phi(double r,double cc,double c0,double c1,double c2,double c3,double c4)
{
    double V_r;
    if(r<=cc)
    {
       V_r= (r-cc)*(r-cc)*(c0+c1*r+c2*r*r+c3*pow(r,3)+c4*pow(r,4));
    }
    else V_r=0.0;
    return (V_r);  
}
double rho(double r,double d,double beta)
{
    double rho_r;
    if(r<=d)    rho_r= (r-d)*(r-d) + beta*beta*pow((r-d),4);
    else rho_r=0.0;
    return (rho_r);
}
double Frho(double rho,double AA)
{   
    double F_rho;
    F_rho = -1.0*AA*pow(rho,0.5);
    return (F_rho);
}
int main (void)
{
   int Nr = 10000;
   double rmax =9.8;                               这边取值的标准是?
   double dr = rmax/(double)Nr;                              
   int Nrho = 10000;
   double rhomax = 45.5;
   double drho = rhomax/(double)Nrho;
   int i;
    string  LAMMPSFilename="AgMo.eam.fs";   
   FILE *LAMMPSFile = fopen ((char*)LAMMPSFilename.data(), "w";
   if (!LAMMPSFile) exit (ERROR);
   // Header for setfl format
   fprintf (LAMMPSFile, \
   "#-> LAMMPS Potential File in DYNAMO 86 setfl Format <-#\n"\
   "# Title :Embedded-Atom Method by Arthur F. Woter 1994\n"\
   "# Implemented by Nize(2015) nize19890627@gmail.com\n"\
   "2  Ag Mo\n"\
   "%d %20.20f %d %20.20f %20.20f\n",Nrho,drho,Nr,dr,rmax);
  fprintf (LAMMPSFile,"47 107.8682 4.0853 FCC\n";
// Embedding function and density function for Ag
     for(i=0;i<Nrho;i++)
      fprintf (LAMMPSFile,"%20.20e\n",Frho((double)i*drho,0.325514));
// Density function for Ag
  for (i = 0; i < Nr; i++)
fprintf (LAMMPSFile, "%20.20e\n",rho((double)i*dr,4.41,-1.293394));
fprintf (LAMMPSFile,"42 95.94 3.1472 BCC\n";
// Embedding function and density function for Mo
     for(i=0;i<Nrho;i++)
      fprintf (LAMMPSFile,"%20.20e\n",Frho((double)i*drho,1.848648));
// Density function for Mo
  for (i = 0; i < Nr; i++)
fprintf (LAMMPSFile, "%20.20e\n",rho((double)i*dr,4.14,0.0));
// Pair potential for Ag-Ag
  for (i = 0; i < Nr; i++)   
          fprintf (LAMMPSFile, "%20.20e\n", (double)i*dr*phi((double)i*dr,4.76,10.681200,-12.045170,5.203072,-1.013304,0.0742308));
// Pair potential for Ag-Mo
  for (i = 0; i < Nr; i++)   
          fprintf (LAMMPSFile, "%20.20e\n", (double)i*dr*phi((double)i*dr,4.50,44.406810,-45.490260,15.605110,-1.793704,0.0));
// Pair potential for Mo-Mo
  for (i = 0; i < Nr; i++)   
          fprintf (LAMMPSFile, "%20.20e\n", (double)i*dr*phi((double)i*dr,3.2572,47.980660,-34.099240,5.832293,0.101749,0.0203934));
     fclose (LAMMPSFile);
   // system("pause";
   return (EOK);

知道的朋友帮我看看。急求 谢谢啦

势函数解析问题
QQ图片20150626105650.png


势函数解析问题-1
QQ图片20150626105951.png


势函数解析问题-2
QQ图片20150702114556.jpg
回复此楼

» 收录本帖的淘帖专辑推荐

分子动力学模拟

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

没走过的,是路;走过的,才是人生。
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

weihui333

铜虫 (初入文坛)

4楼2015-09-26 08:01:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 5 个回答

wbing58

禁虫 (小有名气)

本帖内容被屏蔽

2楼2015-09-14 18:51:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

哇哈哈哈998

新虫 (初入文坛)

请问解决了吗?我也想知道这个方法,我想做Cu-Fe的eam/fs势文件。
3楼2015-09-24 17:08:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

凉yeah

铜虫 (小有名气)

引用回帖:
3楼: Originally posted by 哇哈哈哈998 at 2015-09-24 17:08:17
请问解决了吗?我也想知道这个方法,我想做Cu-Fe的eam/fs势文件。

请问您解决拟合势函数的问题了吗? 我也想拟合fecrni-c的势函数。请赐教!
5楼2016-09-11 14:02:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见