【发布时间】:2013-05-17 04:18:13
【问题描述】:
我正在对二氧化硅进行分子动力学模拟。前段时间我转向波动偶极子模型,经过努力我仍然无法实现它。
简而言之,系统中的所有氧原子都是可极化的,它们的偶极矩取决于它们相对于系统中所有其他原子的位置。更具体地说,我使用 TS 势 (http://digitallibrary.sissa.it/bitstream/handle/1963/2874/tangney.pdf?sequence=2),其中偶极子在每个时间步迭代地被发现。
这意味着在评估作用在原子上的力时,我必须考虑这种势能对坐标的依赖性。 以前,我使用简单的成对势模型,因此我将程序设置为使用通过对势能表达式求微分获得的解析公式来计算力。
现在我很茫然:如何发挥这个新的潜力?在我发现的所有文章中,它们只给你公式,而不是算法。正如我所看到的,当我计算作用在某个原子上的力时,我必须考虑这个原子的偶极子的变化,所有相邻原子的偶极子的变化,然后是更多原子的偶极子的变化,等等,因为它们相互依赖。毕竟,正是由于这种相互依赖性,在每个时间步都迭代地发现了偶极子。显然,我不能为每个原子迭代地计算力,因为算法的计算复杂度太高了。我应该使用一些简单的函数来解释偶极子的变化吗?这看起来也不是一个好主意,因为偶极子是迭代计算的,精度很高,然后,在真正重要的地方(计算力),我们会使用粗略的函数?
那么我该如何实现这个模型呢?此外,是否可以像我之前所做的那样分析计算力,或者是否有必要使用导数的有限差分公式来计算它们?
我还没有在文学作品中找到我的问题的答案,但是如果您知道某篇文章、网站或书籍,其中突出显示了该材料,请引导我访问该来源。
感谢您的宝贵时间!
================================================ ====================================
更新:
感谢您的回答。不幸的是,这不是我的问题。我没有问如何计算偶极子,而是如何计算力,因为这些偶极子随运动而变化很大。
我尝试以直接的方式计算力(不考虑偶极子通过它们的距离相互依赖,只计算每个步骤上的偶极子,然后像这些偶极子是静态的一样计算力),但我得到的结果不是物理的正确。
为了分析这种情况,我建立了一个仅由两个原子组成的系统的模拟:Si 和 O。它们具有相反的电荷,因此它们会振荡。能量时间依赖图是这样的:
顶部曲线表示动能,中间曲线表示未考虑偶极相互作用的势能,底部曲线表示系统的势能,其中考虑了偶极相互作用。
您可以从这张图中清楚地看到,系统正在做它不应该做的事情:爬上潜在的斜坡。所以我认为这是因为我没有考虑偶极矩坐标依赖性。例如,在给定的时间点,我们计算力,并且它们被引导以使两个原子相互移动。但是,当我们确实将它们彼此靠近(甚至是稍微移动)时,偶极矩发生了变化,我们发现我们实际上最终获得了比以前更高的势能!在下一个时间步,情况相同。
所以问题是,如何考虑这种影响,导致我能想到的几种方法要么计算量太大,要么太粗糙。
【问题讨论】:
-
* 大吃一惊。老实说,我不确定你是否会在这里得到答案(尽管我可能是错的)。在physics.stackexchange.com 上你可能会遇到更好的运气,因为你可能会在那里找到精通计算物理学的人。
-
感谢您的链接。我想,我也会尝试在那里提问,尽管我对我在主页上找到的那种问题印象不深)
-
我同意,它们可能有点笼统。无论如何,如果你没有得到答案,我不介意在这个问题上设置赏金。
-
这可能更适合您的问题:Computational Science SE。
-
你说“在我发现的所有文章中,他们只给你公式,而不是算法”,你能指出这些公式吗?然后我们可能有更好的机会弄清楚如何对它们进行算法化。
标签: algorithm simulation