一个关于truncated octahedron的小编程问题
在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编程比较熟悉呢?帮帮忙看看,呵呵,谢谢了!
搜索更多相关主题的帖子:
truncated octahedron BOX SUBROUTINE