- Contemporary messages sorted: [ by date ] [ by thread ] [ by subject ] [ by author ] [ by messages with attachments ]

From: Steven Winfield <saw44.cam.ac.uk>

Date: Wed, 08 Aug 2007 16:59:45 +0100

Dear Fu Lin,

I haven't looked at the AMBER code, but having coded up SHAKE for a

different program it will almost certainly be (2) and (a) (or some

variant of (a)).

Firstly,the SHAKE algorithm first expands the constraint functions as a

Taylor series about the unconstrained positions and uses the first

derivatives of the constraint functions to approximate where the

constraints are satisfied. This gives a matrix equation, which is what I

assume you mean by 'linear equation method', but since this comes from

truncating the Taylor series at the first derivative even this will need

iterating.

To speed things up, all off-diagonal elements of this matrix are assumed

to be zero and the resulting equations are iterated (there will probably

be more iterations than if the matrix elements weren't zeroed, but each

iteration will be a lot quicker because we don't need to invert a matrix

each time).

Secondly, as soon as you have any atom which is involved in two or more

constraints then (a) is required. Say atom 1 is bonded to atom 2, which

is bonded to atom 3 and you use method (b). If you used SHAKE on bond

1-2 until it was the correct length you would almost certainly undo all

that effort when you SHAKE bond 2-3.

For more information see

J. P. Ryckaert et al., JCompPhys 23 327-341 (1977)

H. C. Andersen, JCompPhys 52 24-34 (1983)

Frenkel, Smit 'Understanding Molecular Simulation' Chapter 10

Regards,

Steve.

linfu wrote:

*> Dear Amber Community!
*

*>
*

*> I am not fully understand the SHAKE algorithm in Amber.
*

*> I am wondering how the AMBER implement the SHAKE algorithm,(1) or (2).
*

*> (1) Solve the linear equation method.
*

*> (2) Using Iteration method to convergence.
*

*>
*

*> If AMBER uses (2),which Iteration strategy does AMBER do, (a) or (b).
*

*> (a)
*

*> while(not convergent)
*

*>
*

*> for i = 1 to number_of_shake_bonds
*

*> shake_correction() //one interation.
*

*> endfor
*

*>
*

*> endwhile
*

*>
*

*> (b)
*

*> for i = 1 to number_of_shake_bonds
*

*>
*

*> while(not convergent)
*

*> shake_correction() //serveral interation until convergence.
*

*> endwhile
*

*>
*

*> endfor
*

*> which iteration is better?
*

*>
*

*> Could anyone help me! Thank you very much:)
*

*>
*

*> BEST REGARDS
*

*> Fu Lin
*

*>
*

*>
*

*> -----------------------------------------------------------------------
*

*> The AMBER Mail Reflector
*

*> To post, send mail to amber.scripps.edu
*

*> To unsubscribe, send "unsubscribe amber" to majordomo.scripps.edu
*

-----------------------------------------------------------------------

The AMBER Mail Reflector

To post, send mail to amber.scripps.edu

To unsubscribe, send "unsubscribe amber" to majordomo.scripps.edu

Received on Sun Aug 12 2007 - 06:07:15 PDT

Date: Wed, 08 Aug 2007 16:59:45 +0100

Dear Fu Lin,

I haven't looked at the AMBER code, but having coded up SHAKE for a

different program it will almost certainly be (2) and (a) (or some

variant of (a)).

Firstly,the SHAKE algorithm first expands the constraint functions as a

Taylor series about the unconstrained positions and uses the first

derivatives of the constraint functions to approximate where the

constraints are satisfied. This gives a matrix equation, which is what I

assume you mean by 'linear equation method', but since this comes from

truncating the Taylor series at the first derivative even this will need

iterating.

To speed things up, all off-diagonal elements of this matrix are assumed

to be zero and the resulting equations are iterated (there will probably

be more iterations than if the matrix elements weren't zeroed, but each

iteration will be a lot quicker because we don't need to invert a matrix

each time).

Secondly, as soon as you have any atom which is involved in two or more

constraints then (a) is required. Say atom 1 is bonded to atom 2, which

is bonded to atom 3 and you use method (b). If you used SHAKE on bond

1-2 until it was the correct length you would almost certainly undo all

that effort when you SHAKE bond 2-3.

For more information see

J. P. Ryckaert et al., JCompPhys 23 327-341 (1977)

H. C. Andersen, JCompPhys 52 24-34 (1983)

Frenkel, Smit 'Understanding Molecular Simulation' Chapter 10

Regards,

Steve.

linfu wrote:

-----------------------------------------------------------------------

The AMBER Mail Reflector

To post, send mail to amber.scripps.edu

To unsubscribe, send "unsubscribe amber" to majordomo.scripps.edu

Received on Sun Aug 12 2007 - 06:07:15 PDT

Custom Search