From: Norman Geist (
Date: Tue Dec 20 2016 - 02:37:41 CST

You produced a common memory leak with many atomselects which you never

After you no more need an atomselect object, you should call "delete" on it
to free memory.




set a [atomselect top all]

set list [$a get index]

$a delete; #<-------


So whats happening is that vmd gets killed for eating up all the memory.


Best of luck


Norman Geist


Von: [] Im Auftrag von
Amit Gupta
Gesendet: Dienstag, 20. Dezember 2016 07:31
Betreff: vmd-l: Draw arrows in trajectory file


I want to draw come arrows in a lammps trajectory file, indicating movement
of certain vectors.

I have written script below, it works fine for single frame, but for more
than one frame, VMD crashes without any message (even in console). Can
anyone suggest a reason?


draw color yellow

##-----------Draw arrow subroutine from VMD website----------


proc vmd_draw_arrow {mol start end} {

    # an arrow is made of a cylinder and a cone

    set middle [vecadd $start [vecscale 0.75 [vecsub $end $start]]]

    graphics $mol cylinder $start $middle radius 0.1

    graphics $mol cone $middle $end radius 0.3





set n [molinfo top get numframes]

set sel [atomselect top "all"]

set n_list [atomselect top "type 6"] #get indexes of all nitrogens in

set all_n_atoms [$n_list get index]


for {set i 0} {$i < $n} {incr i} {

     $sel frame $i

    foreach n_atom $all_n_atoms {

        set current_c_atom_index [expr $n_atom - 1] # get index of C
attached to N

        set end [lindex [[atomselect top "index $n_atom"] get {x y z}] 0]

        set start [lindex [[atomselect top "index $current_c_atom_index"]
get {x y z}] 0]

        draw arrow $start $end




Sorry if certain logic seems slightly convoluted, still getting used to TCL!