new vmd shell to prepare vmd runs
This commit is contained in:
170
examples/SPIN/vmd_nano.vmd → examples/SPIN/prepare_vmd.sh
Normal file → Executable file
170
examples/SPIN/vmd_nano.vmd → examples/SPIN/prepare_vmd.sh
Normal file → Executable file
@ -1,79 +1,91 @@
|
||||
proc vmd_draw_arrow {mol start end} {
|
||||
set middle [vecadd $start [vecscale 0.9 [vecsub $end $start]]]
|
||||
graphics $mol cylinder $start $middle radius 0.05
|
||||
graphics $mol cone $middle $end radius 0.01 color 3
|
||||
}
|
||||
|
||||
proc vmd_draw_vector {args} {
|
||||
set usage {"draw vector {x1 y1 z1} {x2 y2 z2} [scale <s>] [resolution <res>] [radius <r>] [filled <yes/no>]"}
|
||||
# defaults
|
||||
set scale 3.0
|
||||
set res 5
|
||||
set radius 0.1
|
||||
set filled yes
|
||||
|
||||
if {[llength $args] < 3} {
|
||||
error "wrong # args: should be $usage"
|
||||
}
|
||||
set mol [lindex $args 0]
|
||||
set center [lindex $args 1]
|
||||
set vector [lindex $args 2]
|
||||
if {[llength $center] != 3 || [llength $vector] != 3} {
|
||||
error "wrong type of args: should be $usage"
|
||||
}
|
||||
|
||||
foreach {flag value} [lrange $args 3 end] {
|
||||
switch -glob $flag {
|
||||
scale {set scale $value}
|
||||
res* {set res $value}
|
||||
rad* {set radius $value}
|
||||
fill* {set filled $value}
|
||||
default {error "unknown option '$flag': should be $usage" }
|
||||
}
|
||||
}
|
||||
|
||||
set vechalf [vecscale [expr $scale * 0.5] $vector]
|
||||
return [list \
|
||||
[graphics $mol color yellow]\
|
||||
[graphics $mol cylinder [vecsub $center $vechalf]\
|
||||
[vecadd $center [vecscale 0.7 $vechalf]] \
|
||||
radius $radius resolution $res filled $filled] \
|
||||
[graphics $mol color orange]\
|
||||
[graphics $mol cone [vecadd $center [vecscale 0.6 $vechalf]] \
|
||||
[vecadd $center $vechalf] radius [expr $radius * 2.5] \
|
||||
resolution $res]]
|
||||
}
|
||||
|
||||
proc vmd_draw_spin {args} {
|
||||
global molid
|
||||
graphics $molid delete all
|
||||
set frame [molinfo $molid get frame]
|
||||
set natoms [molinfo $molid get numatoms]
|
||||
for {set i 0} {$i < $natoms} {incr i} {
|
||||
set sel [atomselect top "index $i"]
|
||||
# set sel [atomselect top "index 1200"]
|
||||
set coords [lindex [$sel get {x y z}] $molid]
|
||||
set velocities [lindex [$sel get {vx vy vz}] $molid]
|
||||
draw vector $coords $velocities
|
||||
set uvx [lindex [$sel get {vx}] $molid]
|
||||
set uvy [lindex [$sel get {vy}] $molid]
|
||||
set uvz [lindex [$sel get {vz}] $molid]
|
||||
$sel set user [vecadd [vecadd [vecscale $uvy $uvy] [vecscale $uvz $uvz] ] [vecscale $uvx $uvx]]
|
||||
$sel set user $uvy
|
||||
#draw vector $coords {0.0 uvy 0.0}
|
||||
}
|
||||
#pbc box -color 3
|
||||
}
|
||||
|
||||
proc enable_trace {} {
|
||||
global vmd_frame
|
||||
trace variable vmd_frame([molinfo top]) w vmd_draw_spin
|
||||
}
|
||||
|
||||
set molid [mol addfile {/home/jtranch/Documents/lammps/src/dump_spin_T100.lammpstrj} type {lammpstrj} autobonds off first 0 last -1 step 1 waitfor all]
|
||||
scale by 0.5
|
||||
animate style Loop
|
||||
enable_trace
|
||||
|
||||
|
||||
|
||||
#!/bin/bash
|
||||
# example prepare_vmd.sh /home/jtranch/Documents/lammps/src/dump_VSRSV.lammpstrj
|
||||
# you will get a return file
|
||||
|
||||
echo "vmd script for file $1 is preparing..."
|
||||
|
||||
timestamp(){
|
||||
date +%s
|
||||
}
|
||||
|
||||
TS=$(timestamp)
|
||||
FILE=view_${TS}.vmd
|
||||
|
||||
cat >${FILE} <<EOF
|
||||
proc vmd_draw_arrow {mol start end} {
|
||||
set middle [vecadd $start [vecscale 0.9 [vecsub $end $start]]]
|
||||
graphics $mol cylinder $start $middle radius 0.05
|
||||
graphics $mol cone $middle $end radius 0.01 color 3
|
||||
}
|
||||
|
||||
proc vmd_draw_vector {args} {
|
||||
set usage {"draw vector {x1 y1 z1} {x2 y2 z2} [scale <s>] [resolution <res>] [radius <r>] [filled <yes/no>]"}
|
||||
# defaults
|
||||
set scale 3.0
|
||||
set res 5
|
||||
set radius 0.1
|
||||
set filled yes
|
||||
|
||||
if {[llength $args] < 3} {
|
||||
error "wrong # args: should be $usage"
|
||||
}
|
||||
set mol [lindex $args 0]
|
||||
set center [lindex $args 1]
|
||||
set vector [lindex $args 2]
|
||||
if {[llength $center] != 3 || [llength $vector] != 3} {
|
||||
error "wrong type of args: should be $usage"
|
||||
}
|
||||
|
||||
foreach {flag value} [lrange $args 3 end] {
|
||||
switch -glob $flag {
|
||||
scale {set scale $value}
|
||||
res* {set res $value}
|
||||
rad* {set radius $value}
|
||||
fill* {set filled $value}
|
||||
default {error "unknown option '$flag': should be $usage" }
|
||||
}
|
||||
}
|
||||
|
||||
set vechalf [vecscale [expr $scale * 0.5] $vector]
|
||||
return [list \
|
||||
[graphics $mol color yellow]\
|
||||
[graphics $mol cylinder [vecsub $center $vechalf]\
|
||||
[vecadd $center [vecscale 0.7 $vechalf]] \
|
||||
radius $radius resolution $res filled $filled] \
|
||||
[graphics $mol color orange]\
|
||||
[graphics $mol cone [vecadd $center [vecscale 0.6 $vechalf]] \
|
||||
[vecadd $center $vechalf] radius [expr $radius * 2.5] \
|
||||
resolution $res]]
|
||||
}
|
||||
|
||||
proc vmd_draw_spin {args} {
|
||||
global molid
|
||||
graphics $molid delete all
|
||||
set frame [molinfo $molid get frame]
|
||||
set natoms [molinfo $molid get numatoms]
|
||||
for {set i 0} {$i < $natoms} {incr i} {
|
||||
set sel [atomselect top "index $i"]
|
||||
set coords [lindex [$sel get {x y z}] $molid]
|
||||
set velocities [lindex [$sel get {vx vy vz}] $molid]
|
||||
draw vector $coords $velocities
|
||||
set uvx [lindex [$sel get {vx}] $molid]
|
||||
set uvy [lindex [$sel get {vy}] $molid]
|
||||
set uvz [lindex [$sel get {vz}] $molid]
|
||||
$sel set user [vecadd [vecadd [vecscale $uvy $uvy] [vecscale $uvz $uvz] ] [vecscale $uvx $uvx]]
|
||||
$sel set user $uvy
|
||||
#draw vector $coords {0.0 uvy 0.0}
|
||||
}
|
||||
#pbc box -color 3
|
||||
}
|
||||
|
||||
proc enable_trace {} {
|
||||
global vmd_frame
|
||||
trace variable vmd_frame([molinfo top]) w vmd_draw_spin
|
||||
}
|
||||
|
||||
set molid [mol addfile {$1} type {lammpstrj} autobonds off first 0 last -1 step 1 waitfor all]
|
||||
scale by 0.5
|
||||
animate style Loop
|
||||
enable_trace
|
||||
EOF
|
||||
echo "$FILE is ready..."
|
||||
@ -1,79 +0,0 @@
|
||||
proc vmd_draw_arrow {mol start end} {
|
||||
set middle [vecadd $start [vecscale 0.9 [vecsub $end $start]]]
|
||||
graphics $mol cylinder $start $middle radius 0.05
|
||||
graphics $mol cone $middle $end radius 0.01 color 3
|
||||
}
|
||||
|
||||
proc vmd_draw_vector {args} {
|
||||
set usage {"draw vector {x1 y1 z1} {x2 y2 z2} [scale <s>] [resolution <res>] [radius <r>] [filled <yes/no>]"}
|
||||
# defaults
|
||||
set scale 3.0
|
||||
set res 5
|
||||
set radius 0.1
|
||||
set filled yes
|
||||
|
||||
if {[llength $args] < 3} {
|
||||
error "wrong # args: should be $usage"
|
||||
}
|
||||
set mol [lindex $args 0]
|
||||
set center [lindex $args 1]
|
||||
set vector [lindex $args 2]
|
||||
if {[llength $center] != 3 || [llength $vector] != 3} {
|
||||
error "wrong type of args: should be $usage"
|
||||
}
|
||||
|
||||
foreach {flag value} [lrange $args 3 end] {
|
||||
switch -glob $flag {
|
||||
scale {set scale $value}
|
||||
res* {set res $value}
|
||||
rad* {set radius $value}
|
||||
fill* {set filled $value}
|
||||
default {error "unknown option '$flag': should be $usage" }
|
||||
}
|
||||
}
|
||||
|
||||
set vechalf [vecscale [expr $scale * 0.5] $vector]
|
||||
return [list \
|
||||
[graphics $mol color yellow]\
|
||||
[graphics $mol cylinder [vecsub $center $vechalf]\
|
||||
[vecadd $center [vecscale 0.7 $vechalf]] \
|
||||
radius $radius resolution $res filled $filled] \
|
||||
[graphics $mol color orange]\
|
||||
[graphics $mol cone [vecadd $center [vecscale 0.6 $vechalf]] \
|
||||
[vecadd $center $vechalf] radius [expr $radius * 2.5] \
|
||||
resolution $res]]
|
||||
}
|
||||
|
||||
proc vmd_draw_spin {args} {
|
||||
global molid
|
||||
graphics $molid delete all
|
||||
set frame [molinfo $molid get frame]
|
||||
set natoms [molinfo $molid get numatoms]
|
||||
for {set i 0} {$i < $natoms} {incr i} {
|
||||
set sel [atomselect top "index $i"]
|
||||
# set sel [atomselect top "index 1200"]
|
||||
set coords [lindex [$sel get {x y z}] $molid]
|
||||
set velocities [lindex [$sel get {vx vy vz}] $molid]
|
||||
draw vector $coords $velocities
|
||||
set uvx [lindex [$sel get {vx}] $molid]
|
||||
set uvy [lindex [$sel get {vy}] $molid]
|
||||
set uvz [lindex [$sel get {vz}] $molid]
|
||||
$sel set user [vecadd [vecadd [vecscale $uvy $uvy] [vecscale $uvz $uvz] ] [vecscale $uvx $uvx]]
|
||||
$sel set user $uvy
|
||||
#draw vector $coords {0.0 uvy 0.0}
|
||||
}
|
||||
#pbc box -color 3
|
||||
}
|
||||
|
||||
proc enable_trace {} {
|
||||
global vmd_frame
|
||||
trace variable vmd_frame([molinfo top]) w vmd_draw_spin
|
||||
}
|
||||
|
||||
set molid [mol addfile {/home/jtranch/Documents/lammps/src/dump_VSRSV.lammpstrj} type {lammpstrj} autobonds off first 0 last -1 step 1 waitfor all]
|
||||
scale by 0.5
|
||||
animate style Loop
|
||||
enable_trace
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user