vmd教程 forces-tutorial
1TCLFORCES
if{($typeeq"ATOM"||$typeeq"HETATM")\
&&$beta==$targetMark}{
lappendtargets"$segname$resid$name"
lappendmasses$occupancy
}
}
close$inStream15
10Thenextstepistousetheatomtriplesto nditsindex,andformalist
ofthese,usingtheatomindexcommand.addatomisthencalledforeachoftheseatoms:
setatoms{}
foreachtarget$targets{
lassign$targetsegnameresidatom
setatomindex[atomid$segname$resid$atom]
lappendatoms$atomindex
addatom$atomindex
}
11Nextwe ndthenumberoftargetatoms:
setnumatoms[llength$atoms]
setlinaccel[vecscale[expr1.0/418.68]$linaccel]
setangaccel[expr$angaccel/418.68]
print"Linearacceleration:($linaccel)Ang*ps^-2"
print"Angularacceleration:(00$angaccel)Rad*ps^-2"
12Nowwegettothemainpartofthescript,thecalcforcesde nition.It
isessentiallyidenticaltothelastexample:
proccalcforces{}{
globalatomsnumatomsmasseslinaccelangaccelnamd
loadcoordscoords
setcomsum"000"
settotalmass0
foreachatom$atomsmass$masses{
settmp[vecscale$mass$coords($atom)]
setcomsum[vecadd$comsum$tmp]
settotalmass[expr$totalmass+$mass]
}
setcom[vecscale[expr1.0/$totalmass]$coordsum]
print"Center=$com"