Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Question on Molecular dynamics programming

  1. Apr 23, 2009 #1
    Dear all,

    I am not sure if this is the right place to ask the following. (Moderators, please move this thread to the right sub-forum if necessary.)

    The question I am having is related to molecular dynamics. In the book "Molecular Dynamics Simulation: Elementary Methods" by J. M. Haile, a FORTRAN program is provided page 459. A subroutine called SSX2SC is listed and is described as

    "the routine to be called only once during a run. At the start of the initialization it is used to scale the initial forces to the program units for acceleration. The scale factor is STPSQH = [tex](\Delta t)^2 / 2[/tex]."

    In the FORTRAN program, it goes on to equate:

    Code (Text):
    X2(I)=FX(I)*STPSQH
    Y2(I)=FY(I)*STPSQH
    Z2(I)=FZ(I)*STPSQH
    where X2, Y2 and Z2 are accelerations in x, y and z directions respectively and FX, FY and FZ are forces in x, y and z directions respectively.

    The program is treating the problem using reduced units such that mass m = 1, time =[tex]\sigma\sqrt{m/\epsilon}[/tex], energy [tex]\epsilon[/tex] and length [tex]\sigma[/tex].


    What I do not understand is:

    1. What is the meaning of "to scale the initial forces to the program units for acceleration"?
    2. Why multiply force by STPSQH?

    Thank you very much and I hope someone can shed some light to this.

    Casey
     
    Last edited: Apr 23, 2009
  2. jcsd
  3. Apr 23, 2009 #2
    Can you fix the LaTeX?
     
  4. Apr 23, 2009 #3
    Hi nbo10,

    I am not sure if there is something wrong with LATEX or not. Anyway I have duplicate the earlier question over here but this time without using LATEX in it.

    The question I am having is related to molecular dynamics. In the book "Molecular Dynamics Simulation: Elementary Methods" by J. M. Haile, a FORTRAN program is provided page 459. A subroutine called SSX2SC is listed and is described as

    "the routine to be called only once during a run. At the start of the initialization it is used to scale the initial forces to the program units for acceleration. The scale factor is STPSQH = [(delta t)^2]/2."

    In the FORTRAN program, it goes on to equate:

    Code (Text):
    X2(I)=FX(I)*STPSQH
    Y2(I)=FY(I)*STPSQH
    Z2(I)=FZ(I)*STPSQH
    where X2, Y2 and Z2 are accelerations in x, y and z directions respectively and FX, FY and FZ are forces in x, y and z directions respectively.

    The program is treating the problem using reduced units such that mass m = 1, time =sigma*sqrt(m/episilon), energy is epsilon and length is sigma.

    What I do not understand is:

    1. What is the meaning of "to scale the initial forces to the program units for acceleration"?
    2. Why multiply force by STPSQH?

    Thank you very much and I hope someone can shed some light to this.

    Casey
     
  5. Apr 23, 2009 #4

    alxm

    User Avatar
    Science Advisor

    Seems to me you answered your own question;
    F = ma, so if m=1 then F = a in the program's internal units, where STPSQH is the scaling factor to convert to those units.
     
  6. Apr 23, 2009 #5
    Hi alxm,

    Thanks for your reply, but why multiply it with STPSQH [(delta t)^2]/2?

    What do you mean by "scaling factor" and to convert to "what" units?
     
  7. Apr 24, 2009 #6

    t!m

    User Avatar

    The factor, STPSQH (probably referring to something like "[time]Step SQuared Halved") comes about from the integrator you are using. Many are derived using some kind of short time Taylor expansion to update the position of the particles, i.e.
    x(dt)=x(0)+x'(0)dt+x''(0)(dt)^2/2+...
    Clearly x'(0) is the velocity and x''(0) is the acceleration (here equal to the force due to m=1) and the (dt)^2/2 term is the one you are asking about. The variables X2, Y2, Z2, would be more appropriately called "the coordinate contribution due to acceleration", because they clearly have units of position, after the "scaling factor" is applied. In this way, the coordinates can be updated by something like:
    X(I) = X1(I) + X2(I)
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook




Similar Discussions: Question on Molecular dynamics programming
  1. Molecular dynamics (Replies: 2)

Loading...