From: li (zlee_at_ustc.edu)
Date: Mon Sep 27 2004 - 21:57:12 CDT
Thank you,sir.below is my script:
BTW,when k is reduced to 14.4, simulation ran well.
# Atoms selected for force application
set id1 [atomid AGLU 1 O42]
set grp1 {}
lappend grp1 $id1
set a1 [addgroup $grp1]
set a2 [addgroup {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
141 142 143 144 145 146 }]
set id3 [atomid AGLU 1 O44]
set grp3 {}
lappend grp1 $id3
set a3 [addgroup $grp1]
set id4 [atomid AGLU 1 O46]
set grp4 {}
lappend grp4 $id4
set a4 [addgroup $grp4]
set Tclfreq 10000
set t 0
# contraint points
set c1x -0.402
set c1y -2.458
set c1z -4.444
set c2x 0.0
set c2y 0.0
set c2z 0.0
set c3x 0.285
set c3y -3.602
set c3z 3.589
set c4x 1.043
set c4y 3.758
set c4z 3.171
# force constant (kcal/mol/A^2)
set k 28.8
# pulling velocity (A/timestep)
set v 0.0000001
set outfilename bd1_tcl.out
open $outfilename w
proc calcforces {} {
global Tclfreq t k v a1 a2 a3 a4 c1x c1y c1z c2x c2y c2z c3x c3y c3z c4x c4y c4z outfilename
# get coordinates
loadcoords coordinate
set r1 $coordinate($a2)
set r1x [lindex $r1 0]
set r1y [lindex $r1 1]
set r1z [lindex $r1 2]
set r2 $coordinate($a2)
set r2x [lindex $r2 0]
set r2y [lindex $r2 1]
set r2z [lindex $r2 2]
set r3 $coordinate($a2)
set r3x [lindex $r3 0]
set r3y [lindex $r3 1]
set r3z [lindex $r3 2]
set r4 $coordinate($a2)
set r4x [lindex $r4 0]
set r4y [lindex $r4 1]
set r4z [lindex $r4 2]
# calculate forces
set f1x 0
set f1y [expr $k*($c1y-$r1y)]
set f1z [expr $k*($c1z-$r1z)]
set f2x [expr $k*($c2x+$v*$t-$r2x)]
set f2y [expr $k*($c2y-$r2y)]
set f2z [expr $k*($c2z-$r2z)]
set f3x 0
set f3y [expr $k*($c3y-$r3y)]
set f3z [expr $k*($c3z-$r3z)]
set f4x 0
set f4y [expr $k*($c4y-$r4y)]
set f4z [expr $k*($c4z-$r4z)]
lappend f1 $f1x $f1y $f1z
lappend f2 $f2x $f2y $f2z
lappend f3 $f3x $f3y $f3z
lappend f4 $f4x $f4y $f4z
# apply forces
addforce $a1 $f1
addforce $a2 $f2
addforce $a3 $f3
addforce $a4 $f4
# output
set foo [expr $t % $Tclfreq]
if { $foo == 0 } {
set outfile [open $outfilename a]
set time [expr $t/1000000.0]
puts $outfile "$time $r2x $f2x $r2y $f2y $r2z $f2z "
close $outfile
}
incr t
return
}
Replyed From: li <zlee_at_ustc.edu>
> What sort of tcl script are you running? Can you send it along for people
> to look at?
>
>
> I could be wrong, but isn't there a bug somewhere in the force analysis
> routines?
>
> Brian
>
> On Mon, 27 Sep 2004, li wrote:
>
> > Dear all:
> > NAMD (version 2.5,Linux-i686 cluster) simulation often ceases with end like this:
> >
> > TCL: can't use floating-point value as operand of "-"
> > FATAL ERROR: can't use floating-point value as operand of "-"
> > while executing
> > "expr $k*($c2y-$r2y)"
> > (procedure "calcforces" line 38)
> > invoked from within
> > "calcforces"
> > Stack Traceback:
> > [0] _ZN15GlobalMasterTcl9calculateEv+0x21b [0x81c8103]
> > [1] _ZN12GlobalMaster11processDataEPiS0_P6VectorS2_S2_S0_S0_S2_S0_S0_S2_+0x6f [0x81c16df]
> > [2] _ZN18GlobalMasterServer11callClientsEv+0x428 [0x81c3384]
> > [3] _ZN18GlobalMasterServer8recvDataEP20ComputeGlob
> >
> >
> > would you please show me the possbile reason?
> > Thanks in advance!
-- USTC Alumni Email System
This archive was generated by hypermail 2.1.6 : Wed Feb 29 2012 - 15:38:53 CST