字体:

一个关于truncated octahedron的小编程问题

angus 发表于: 2008-6-19 23:40 来源: 化学吧 - 化学论坛 - 学术论坛

在MD的periodic boundary condition计算中,如果用到truncated octahedron模型,可以用Allen书中带的源码解决边界问题(如下)
        SUBROUTINE TOBOUN ( I )
        COMMON / BLOCK1 / RX, RY, RZ
C    *******************************************************************
C    ** PERIODIC BOUNDARY CONDITIONS FOR A TRUNCATED OCTAHEDRON       **
C    **                                                               **
C    ** THE BOX IS CENTRED AT THE ORIGIN. THE AXES PASS THROUGH THE   **
C    ** CENTRES OF THE SIX SQUARE FACES OF THE TRUNCATED OCTAHEDRON   **
C    ** (SEE F1G. 1.10(A)). THE CONTAINING CUBE IS OF UNIT LENGTH     **
C    *******************************************************************
        INTEGER     N
        PARAMETER ( N = 108 )
        INTEGER     I
        REAL        RX(N), RY(N), RZ(N)
        REAL        CORR, R75
        PARAMETER ( R75 = 4.0 / 3.0 )
C    *******************************************************************
        RX(I) = RX(I) - ANINT ( RX(I) )
        RY(I) = RY(I) - ANINT ( RY(I) )
        RZ(I) = RZ(I) - ANINT ( RZ(I) )
        CORR = 0.5 * AINT ( R75 * ( ABS ( RX(I) ) +
     :                              ABS ( RY(I) ) +
     :                              ABS ( RZ(I) ) ) )
        RX(I) = RX(I) - SIGN ( CORR, RX(I) )
        RY(I) = RY(I) - SIGN ( CORR, RY(I) )
        RZ(I) = RZ(I) - SIGN ( CORR, RZ(I) )
        RETURN
        END

这个小代码是解决当有粒子跑离box以后,可以把它transfer回到到box来。
我现在的问题是,如果让这个过程逆转过来,程序要如何改呢?也就是说,我在一直一个粒子在box以内,我需要知道它可能从什么地方transfer过来的,在transfer以前的坐标(这个时候应该是在box以外)
呵呵,不知道我的表述清楚不?谁对fortran编程比较熟悉呢?帮帮忙看看,呵呵,谢谢了!

赞助商链接

赞助商链接