From: Ashar Malik (asharjm_at_gmail.com)
Date: Tue Dec 20 2016 - 06:19:33 CST

Hi,

I think this maybe because you are not updating your selections properly.
to see the arrow move - I guess your selections for arrows need to be
updated on a frame by frame basis.
Try either "$sel update" after "$sel frame $i"

or drop the use of $sel update and use make selections like ...

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

notice "frame $i" in the command you used. This will force a selection in
the frame controlled by the loop.
I think this should fix it. Otherwise - write back.

Best,
/A

On Tue, Dec 20, 2016 at 10:45 PM, Amit Gupta <amit__at_outlook.in> wrote:

>
> Sorry I sent the message below to the person who replied rather than to
> mailing list:
>
>
> Thank you for the reply. I modified the script as written at the bottom of
> mail and it worked fine (did not crash). However now i notice that arrows
> are drawn only once, in the first frame. After which I do not see any
> movement in the arrows. Is there any way to draw arrows per frame?
>
>
>
> Modified lines that worked:
>
> set end_temp [atomselect top "index $n_atom"]
> set end [lindex [ $end_temp get {x y z}] 0]
>
> set start_temp [atomselect top "index $current_c_atom_index"]
> set start [lindex [$start_temp get {x y z}] 0]
>
> $end_temp delete
> $start_temp delete
>
>
>
>
>
>
> From: Norman Geist <norman.geist_at_uni-greifswald.de>
> Sent: Tuesday, December 20, 2016 2:07:25 PM
> To: 'Amit Gupta'
> Subject: AW: vmd-l: Draw arrows in trajectory file
>
>
> You produced a common memory leak with many atomselects which you never
> clear.
> After you no more need an atomselect object, you should call “delete” on
> it to free memory.
>
> Eg.:
>
> 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: owner-vmd-l_at_ks.uiuc.edu [mailto:owner-vmd-l_at_ks.uiuc.edu] Im Auftrag
> von Amit Gupta
> Gesendet: Dienstag, 20. Dezember 2016 07:31
> An: vmd-l_at_ks.uiuc.edu
> 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
> molecules
>
> 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!
>
>
>

-- 
Best,
/A