-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathlmpLoad.tcl
116 lines (106 loc) · 3.07 KB
/
lmpLoad.tcl
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
proc lmpLoad {args} {
if {$args == ""} {
puts "Usage: lmpLoad filename args "
puts " args:"
puts " vmdField (beta user, user1 ..) dumpField (0-N)"
puts ""
return
}
set fileName [lindex $args 0]
if {[file exists $fileName] != 1} {
puts ""
puts "File $fileName does not exist"
puts ""
return
}
set beta -1
set user -1
set user2 -1
set user3 -1
set user4 -1
foreach {field collN} [lrange $args 1 end] {
if {$field == "beta"} {
set beta $collN
}
if {$field == "user"} {
set user $collN
}
if {$field == "user2"} {
set user2 $collN
}
if {$field == "user3"} {
set user3 $collN
}
if {$field == "user4"} {
set user4 $collN
}
}
set nFrames [molinfo top get numframes]
set nAtoms [molinfo top get numatoms]
set fileIn [open $fileName r]
for {set j 0} {$j < $nFrames} {incr j} {
gets $fileIn line ;# ITEM: TIMESTEP
gets $fileIn line ;# --
puts $line
gets $fileIn line ;# ITEM: NUMBER OF ATOMS
gets $fileIn line ;# --
gets $fileIn line ;# ITEM: BOX BOUNDS ff ff ff
gets $fileIn line ;# --
gets $fileIn line ;# --
gets $fileIn line ;# --
gets $fileIn line ;# ITEM: ATOMS
set system [atomselect top "all" frame $j]
if {$beta >= 0} {
set betaList [list]
}
if {$user >= 0} {
set userList [list]
}
if {$user2 >= 0} {
set user2List [list]
}
if {$user3 >= 0} {
set user3List [list]
}
if {$user4 >= 0} {
set user4List [list]
}
for {set i 0} {$i < $nAtoms} {incr i} {
gets $fileIn line ;# 0 1 2...
if {$beta >= 0} {
lappend betaList [expr double([lindex $line $beta])]
}
if {$user >= 0} {
lappend userList [expr double([lindex $line $user])]
}
if {$user2 >= 0} {
lappend user2List [expr double([lindex $line $user2])]
}
if {$user3 >= 0} {
lappend user3List [expr double([lindex $line $user3])]
}
if {$user4 >= 0} {
lappend user4List [expr double([lindex $line $user4])]
}
}
if {$beta >= 0} {
$system set beta $betaList
}
if {$user >= 0} {
$system set user $userList
}
if {$user2 >= 0} {
$system set user2 $user2List
}
if {$user3 >= 0} {
$system set user3 $user3List
}
if {$user4 >= 0} {
$system set user4 $user4List
}
$system delete
}
close $fileIn
}
# run default for this script
lmpLoad pilotwaves.lammpstrj user2 4