From: Joshua D. Moore (jdmoore_at_unity.ncsu.edu)
Date: Mon Dec 10 2007 - 10:32:36 CST
Hi,
I also would like to do this, and it seems to me that you are right. They
haven't included a way to do this other than through the tcl interface since
version 1.6. I have been doing this for fairly small systems (< 10,000
atoms) recently using this tcl script (it seems that the forces you pull are
for the previous step.....). Maybe this can help you. I wrote a lot of
notes to myself, so you can ignore most of these. I also attempted to write
a dcd style file, but had some trouble for some reason as I recall.
It seems that this would slow things down, but when outputting every 500
steps (it still checks this script every step), it doesn't seem to be that
bad. Like I said, I was only using it for a fairly small system, however.
I don't see why the force dcd option can't be included. After all this is
MD!
Josh
# TCL FORCES SCRIPT TO OUTPUT FORCES DURING SIMULATION
# The IDS of the atoms
# DEFINE NUMATOMS AS THE NUMBER OF ATOMS IN SIMULATION
set numatoms 7485
set force_freq 500
for {set i 1} {$i <= $numatoms} {incr i 1} {
addatom $i
}
proc calcforces {} {
# if [file exists forces.dcd] {
# mv forces.dcd forces.dcd.BAK
# }
# set filename "forces.dcd"
# set fileID [open $filename "a"]
set filename_check "forces.txt"
set fileID_check [open $filename_check "a"]
global numatoms force_freq
set frame [getstep]
# Write coordinates every $force_frame steps (force written next step...see
note below)
# if {int(fmod($frame,$force_freq))==0 && ($frame!=0)} {
# puts $fileID_check $frame
# loadcoords q
# for {set i 1} {$i <=$numatoms} {incr i 1} {
# puts $fileID_check $q($i)
# }
# }
# On next frame load the forces (as they correspond to the previous frames
coordinates) (See NAMD 2.6 Manual for description)
# Note that the loadtotalforces loads the forces from the previous time
step, so I need to load when mod(frame-1,500)=0 so frame 501 will give the
forces at step 500
# expr $frame-1 checks to see that I don't add the 0 frame (i.e the frame 1
forces)
if {int(fmod([expr $frame-1],$force_freq))==0 && ([expr $frame-1]!=0)} {
puts $fileID_check [expr $frame-1]
loadtotalforces p
for {set i 1} {$i <= $numatoms} {incr i 1} {
if {[array exists p]} {
# set f $p($i)
# set fx [lindex $f 0]
# set fy [lindex $f 1]
# set fz [lindex $f 2]
# set outBinData [binary format fff $fx $fy $fz]
# fconfigure $fileID -translation binary
# puts -nonewline $fileID $outBinData
# ADDING TO WRITE ATOMIC COORDINATES ALSO 6-27-2007
puts $fileID_check $p($i)
}
}
On Dec 6, 2007 2:22 PM, Thomas C. Bishop <bishop_at_tulane.edu> wrote:
> I'm trying to analyze the forces on every atom during my simulation.
>
> In version 1.6 namd allowed for a force dcd file using same config
> options as for velocity or coordinate dcds.
>
> Any way to keep a record of the forces on each and every atom during a
> simulation other than the tcl interface?
>
> How much would using tcl to dump the forces on all atoms slow down a
> simulation?
>
> Any ideas/assistance greatly appreciated.
>
> Tom
>
>
> --
> ***********************
> * Thomas C. Bishop *
> *Office: 504-862-3370 *
> *CCS: 504-862-8391 *
> *Fax: 504-862-8392 *
> ***********************
>
>
-- ------------------------------------------------ Joshua D. Moore Graduate Student North Carolina State University Dept. of Chemical and Biomolecular Engineering Box 7905 Centennial Campus Engineering Building I 911 Partners Way Raleigh, NC 27695-7905 Phone: (919) 513-2051 Fax: (919) 513-2470 Email: jdmoore_at_unity.ncsu.edu ------------------------------------------------
This archive was generated by hypermail 2.1.6 : Wed Feb 29 2012 - 15:45:41 CST