| 14 |  | -x, --repeatX=...       make the system repeat in the x direction | 
| 15 |  | -y, --repeatY=...       make the system repeat in the y direction | 
| 16 |  | -z, --repeatZ=...       make the system repeat in the z direction | 
| 17 | + | -d, --depthFirst        write out the replicated system depth-first | 
| 18 |  |  | 
| 19 |  |  | 
| 20 |  | Example: | 
| 23 |  | """ | 
| 24 |  |  | 
| 25 |  | __author__ = "Dan Gezelter (gezelter@nd.edu)" | 
| 26 | < | __version__ = "$Revision: 1.2 $" | 
| 27 | < | __date__ = "$Date: 2008-05-14 20:49:17 $" | 
| 26 | > | __version__ = "$Revision: 1.3 $" | 
| 27 | > | __date__ = "$Date: 2008-09-14 01:32:23 $" | 
| 28 |  | __copyright__ = "Copyright (c) 2008 by the University of Notre Dame" | 
| 29 |  | __license__ = "OOPSE" | 
| 30 |  |  | 
| 156 |  |  | 
| 157 |  | mdFile.close() | 
| 158 |  |  | 
| 159 | < | def writeFile(outputFileName): | 
| 159 | > | def writeFile(outputFileName,depthFirst): | 
| 160 |  | outputFile = open(outputFileName, 'w') | 
| 161 |  |  | 
| 162 |  | outputFile.write("<OOPSE version=4>\n"); | 
| 191 |  |  | 
| 192 |  | print repeatX, repeatY, repeatZ | 
| 193 |  |  | 
| 194 | < | for i in range(len(indices)): | 
| 194 | > |  | 
| 195 | > | if (depthFirst) : | 
| 196 | > | whichSD = 0 | 
| 197 | > | for i in range(len(indices)): | 
| 198 | > | for ii in range(repeatX): | 
| 199 | > | for jj in range(repeatY): | 
| 200 | > | for kk in range(repeatZ): | 
| 201 | > |  | 
| 202 | > | myP = [] | 
| 203 | > | myP.append(p[i][0] + ii*Hmat[0][0] + jj*Hmat[1][0] + kk*Hmat[2][0]) | 
| 204 | > | myP.append(p[i][1] + ii*Hmat[0][1] + jj*Hmat[1][1] + kk*Hmat[2][1]) | 
| 205 | > | myP.append(p[i][2] + ii*Hmat[0][2] + jj*Hmat[1][2] + kk*Hmat[2][2]) | 
| 206 | > |  | 
| 207 | > | if (pvqj[i] == 'pv'): | 
| 208 | > | outputFile.write("%10d %7s %18.10g %18.10g %18.10g %14e %13e %13e\n" % (whichSD, pvqj[i], myP[0], myP[1], myP[2], v[i][0], v[i][1], v[i][2])) | 
| 209 | > | elif (pvqj[i] == 'pvqj'): | 
| 210 | > | outputFile.write("%10d %7s %18.10g %18.10g %18.10g %13e %13e %13e %13e %13e %13e %13e %13e %13e %13e\n" % (whichSD, pvqj[i], myP[0], myP[1], myP[2], v[i][0], v[i][1], v[i][2], q[i][0], q[i][1], q[i][2], q[i][3], j[i][0], j[i][1], j[i][2])) | 
| 211 | > |  | 
| 212 | > | whichSD = whichSD + 1 | 
| 213 | > |  | 
| 214 | > | else: | 
| 215 | > | whichSD = 0 | 
| 216 |  | for ii in range(repeatX): | 
| 217 |  | for jj in range(repeatY): | 
| 218 |  | for kk in range(repeatZ): | 
| 219 | < |  | 
| 198 | < | myP = [] | 
| 199 | < | myP.append(p[i][0] + ii*Hmat[0][0] + jj*Hmat[1][0] + kk*Hmat[2][0]) | 
| 200 | < | myP.append(p[i][1] + ii*Hmat[0][1] + jj*Hmat[1][1] + kk*Hmat[2][1]) | 
| 201 | < | myP.append(p[i][2] + ii*Hmat[0][2] + jj*Hmat[1][2] + kk*Hmat[2][2]) | 
| 202 | < |  | 
| 203 | < | if (pvqj[i] == 'pv'): | 
| 204 | < | outputFile.write("%10d %7s %18.10g %18.10g %18.10g %14e %13e %13e\n" % (whichSD, pvqj[i], myP[0], myP[1], myP[2], v[i][0], v[i][1], v[i][2])) | 
| 205 | < | elif (pvqj[i] == 'pvqj'): | 
| 206 | < | outputFile.write("%10d %7s %18.10g %18.10g %18.10g %13e %13e %13e %13e %13e %13e %13e %13e %13e %13e\n" % (whichSD, pvqj[i], myP[0], myP[1], myP[2], v[i][0], v[i][1], v[i][2], q[i][0], q[i][1], q[i][2], q[i][3], j[i][0], j[i][1], j[i][2])) | 
| 219 | > | for i in range(len(indices)): | 
| 220 |  |  | 
| 221 | < | whichSD = whichSD + 1 | 
| 221 | > | myP = [] | 
| 222 | > | myP.append(p[i][0] + ii*Hmat[0][0] + jj*Hmat[1][0] + kk*Hmat[2][0]) | 
| 223 | > | myP.append(p[i][1] + ii*Hmat[0][1] + jj*Hmat[1][1] + kk*Hmat[2][1]) | 
| 224 | > | myP.append(p[i][2] + ii*Hmat[0][2] + jj*Hmat[1][2] + kk*Hmat[2][2]) | 
| 225 | > |  | 
| 226 | > | if (pvqj[i] == 'pv'): | 
| 227 | > | outputFile.write("%10d %7s %18.10g %18.10g %18.10g %14e %13e %13e\n" % (whichSD, pvqj[i], myP[0], myP[1], myP[2], v[i][0], v[i][1], v[i][2])) | 
| 228 | > | elif (pvqj[i] == 'pvqj'): | 
| 229 | > | outputFile.write("%10d %7s %18.10g %18.10g %18.10g %13e %13e %13e %13e %13e %13e %13e %13e %13e %13e\n" % (whichSD, pvqj[i], myP[0], myP[1], myP[2], v[i][0], v[i][1], v[i][2], q[i][0], q[i][1], q[i][2], q[i][3], j[i][0], j[i][1], j[i][2])) | 
| 230 | > |  | 
| 231 | > | whichSD = whichSD + 1 | 
| 232 |  |  | 
| 233 | + |  | 
| 234 |  | outputFile.write("    </StuntDoubles>\n") | 
| 235 |  | outputFile.write("  </Snapshot>\n") | 
| 236 |  | outputFile.write("</OOPSE>\n") | 
| 279 |  |  | 
| 280 |  |  | 
| 281 |  | def main(argv): | 
| 282 | + | depthFirst = 0 | 
| 283 |  | try: | 
| 284 | < | opts, args = getopt.getopt(argv, "hm:o:x:y:z:", ["help", "meta-data=", "output-file=", "repeatX=", "repeatY=", "repeatZ="]) | 
| 284 | > | opts, args = getopt.getopt(argv, "hm:o:x:y:z:d", ["help", "meta-data=", "output-file=", "repeatX=", "repeatY=", "repeatZ=","depthFirst"]) | 
| 285 |  | except getopt.GetoptError: | 
| 286 |  | usage() | 
| 287 |  | sys.exit(2) | 
| 306 |  | elif opt in ("-z", "--repeatZ"): | 
| 307 |  | global repeatZ | 
| 308 |  | repeatZ = int(arg) | 
| 309 | + | elif opt in ("-d", "--depthFirst"): | 
| 310 | + | depthFirst = 1 | 
| 311 |  | if (_haveMDFileName != 1): | 
| 312 |  | usage() | 
| 313 |  | print "No meta-data file was specified" | 
| 316 |  | usage() | 
| 317 |  | print "No output file was specified" | 
| 318 |  | sys.exit() | 
| 319 | + |  | 
| 320 |  | readFile(mdFileName) | 
| 321 |  | mapToBox() | 
| 322 | < | writeFile(outputFileName) | 
| 322 | > | writeFile(outputFileName, depthFirst) | 
| 323 |  |  | 
| 324 |  | if __name__ == "__main__": | 
| 325 |  | if len(sys.argv) == 1: |