Update list-maintainers to output redmine syntax
[hoomd-blue.git] / doc / user / xml_file_format.doc
blob085f54f38d8340e452b954d9d5538ef6d7a4c5ec
1 /*
2 Highly Optimized Object-oriented Many-particle Dynamics -- Blue Edition
3 (HOOMD-blue) Open Source Software License Copyright 2008-2011 Ames Laboratory
4 Iowa State University and The Regents of the University of Michigan All rights
5 reserved.
7 HOOMD-blue may contain modifications ("Contributions") provided, and to which
8 copyright is held, by various Contributors who have granted The Regents of the
9 University of Michigan the right to modify and/or distribute such Contributions.
11 You may redistribute, use, and create derivate works of HOOMD-blue, in source
12 and binary forms, provided you abide by the following conditions:
14 * Redistributions of source code must retain the above copyright notice, this
15 list of conditions, and the following disclaimer both in the code and
16 prominently in any materials provided with the distribution.
18 * Redistributions in binary form must reproduce the above copyright notice, this
19 list of conditions, and the following disclaimer in the documentation and/or
20 other materials provided with the distribution.
22 * All publications and presentations based on HOOMD-blue, including any reports
23 or published results obtained, in whole or in part, with HOOMD-blue, will
24 acknowledge its use according to the terms posted at the time of submission on:
25 http://codeblue.umich.edu/hoomd-blue/citations.html
27 * Any electronic documents citing HOOMD-Blue will link to the HOOMD-Blue website:
28 http://codeblue.umich.edu/hoomd-blue/
30 * Apart from the above required attributions, neither the name of the copyright
31 holder nor the names of HOOMD-blue's contributors may be used to endorse or
32 promote products derived from this software without specific prior written
33 permission.
35 Disclaimer
37 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS ``AS IS'' AND
38 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
39 WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND/OR ANY
40 WARRANTIES THAT THIS SOFTWARE IS FREE OF INFRINGEMENT ARE DISCLAIMED.
42 IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
43 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
44 BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
45 DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
46 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
47 OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
48 ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
51 /*! \page page_xml_file_format XML File Format
52 <center><b>Version 1.4</b></center>
54 \section sec_xml_overview Overview
56 Both \link hoomd_script.init.read_xml init.read_xml\endlink and \link hoomd_script.dump.xml dump.xml\endlink
57 work with the same XML file format for specifying the system of particles. The format requires a minimal 
58 amount of meta-information in an easy to understand human-readable format. One of the key advantages of using 
59 XML is that it is also easily machine readable and commonly used, so many parsers exist for it.
61 The basic outline of a HOOMD-blue xml file looks like this
62 \code
63 <?xml version="1.0" encoding="UTF-8"?>
64 <hoomd_xml version="1.4">
65 <!-- this is a comment, you can put as many of these in the file 
66         wherever you wish to. -->
67 <configuration time_step="0">
68         <!-- data nodes go here -->
69 </configuration>
70 </hoomd_xml>
71 \endcode
73 The first line of the file
74 \code
75 <?xml version="1.0" encoding="UTF-8"?>
76 \endcode
77 is just something that \b must be there to identify that this is an XML file.
79 \code
80 <hoomd_xml version="1.4">
81         <!-- contents of root node -->
82 </hoomd_xml>
83 \endcode
85 The second and last lines signify the start and end of the root node \c hoomd_xml. 
86 The contents of the root node are between these begin and end markers. The version="1.0"
87 attribute specifies the version of the xml file format used when writing this file.
88 Files with the same major version are fully backward and partially forward compatible 
89 with each other, i.e. a version 1.3 reader should be able to read a version 1.1 
90 file without a problem and use it for as long as the simulation requires no node 
91 that was introduced in a later version and is thus not available. A version 1.0
92 reader will skip nodes that were not available at that time.
94 Inside the root node is the configuration node.
95 \code
96 <configuration time_step="0" dimensions="3" vizsigma="1.5">
97         <!-- data nodes go here -->
98 </configuration>
99 \endcode
100 \c time_step="0" is an attribute assigned to the configuration node. You can leave if off if you want
101 and the time step will default to 0. It is used as the initial time step in the simulation when read
102 by \link hoomd_script.init.read_xml init.read_xml\endlink. In files written by hoomd, \c time_step 
103 will be set to the value of the time step when the system snapshot was taken.
105 (Version 1.2 and newer)<br>
106 \c dimensions="#" specifies the dimensionality of the system. Valid values are 2 and 3, the
107 default is 3 when \c dimensions is not specified. Setting dimensions="2" does \b NOT change anything else in the file.
108 For example, you still must specify 3 components for position, velocity, et cetera, just set the 3rd component to 0
109 for 2D simulations. Specify a small, but non-zero z-dimension for the box when specifying \c dimensions="2".
111 (Version 1.4 and newer)<br>
112 \c vizsigma="#" specifies a scaling factor for the radius of particles. It is used by VMD when no \c diameter node
113 is present. It is ignored when read by \link hoomd_script.init.read_xml init.read_xml\endlink .
115 <b>A note on case-sensitivity:</b> 
116  - All node names and attributes are in all lower case. As XML is a case
117         sensitive file format, all readers and writers must adhere to this. However, \link hoomd_script.init.read_xml init.read_xml\endlink
118         will try to be generous and handle any possible typos that a user makes on entering data and will accept
119         files with varying cases.
120  - The \b content of any node is of course case sensitive.
122 A number of data nodes can be included inside the configuration node <b>in any order</b>.
124  - \b box (\ref sec_xml_box)
125  - \b position (\ref sec_xml_position)
126  - \b image (\ref sec_xml_image)
127  - \b velocity (\ref sec_xml_velocity)
128  - \b acceleration (\ref sec_xml_acceleration)
129  - \b mass (\ref sec_xml_mass)
130  - \b diameter (\ref sec_xml_diameter)
131  - \b charge (\ref sec_xml_charge)
132  - \b type (\ref sec_xml_type)
133  - \b body (\ref sec_xml_body)
134  - \b orientation (\ref sec_xml_orientation)
135  - \b moment_inertia (\ref sec_xml_moment_inertia)
136  - \b bond (\ref sec_xml_bond)
137  - \b angle (\ref sec_xml_angle)
138  - \b dihedral (\ref sec_xml_dihedral)
139  - \b improper (\ref sec_xml_improper)
140  - \b wall (\ref sec_xml_wall)
142 Detailed documentation for each node is below.
143 <hr>
145 \section sec_xml_box Simulation box specification
146 The \<box\> node defines the dimensions of the simulation box which particles are placed in.<br>
147 \link hoomd_script.dump.xml dump.xml\endlink \b always writes this node.<br>
148 \link hoomd_script.init.read_xml init.read_xml\endlink \b requires this node be specified.<br>
149 Version: 1.0 and newer
151 \b Example:
152 \code
153 <box lx="5.1" ly="9.6" lz="15.8"/>
154 \endcode
155 \b Attributes:
156  - \a lx Box length in the \b x direction
157  - \a ly Box length in the \b y direction
158  - \a lz Box length in the \b z direction
160 <hr>
162 \section sec_xml_position Particle positions
163 The \<position\> node sets the position of each particle in the simulation.<br>
164 \link hoomd_script.dump.xml dump.xml\endlink \em optionally writes this node.<br>
165 \link hoomd_script.init.read_xml init.read_xml\endlink \b requires this node be specified.<br>
166 Version: 1.0 and newer
168 \b Example:
169 \code
170 <position>
171 -1.45 2.21 1.56
172 8.76 1.02 5.60
173 5.67 8.30 4.67
174 </position>
175 \endcode
176 \b Attributes:
177  - \a num (\b optional) number of particles coming in the node content. This attribute is written by
178         \link hoomd_script.dump.xml dump.xml\endlink to potentially aid in making parsers easier to write.
180 In between the begin and end markers \<position\> and \</position\> is a series of floating point
181 numbers in plain-text separated by whitespace. These are read in order <i>x0 y0 z0 x1 y1 z1 x2 
182 y2 z2 ... x(N-1) y(N-1) z(N-1)</i>. Note that you do not need to specify the number of particles
183 anywhere, just add as many as you want and \link hoomd_script.init.read_xml init.read_xml\endlink
184 will count them. The particular form of the whitespace used does not matter (space, tab, newline,
185 etc...), the example above uses spaces between \em x, \em y, and \em z and newlines between 
186 particles merely to make it more easily human-readable.
188 <b>A note on counting</b>
189  - All particles in the simulation can be referenced by a \a tag. \<position\> (and all other XML nodes that list
190  per-particle properties) list particles in <b>tag order</b>. That is, the first particle listed has tag 0, the
191  second has tag 1, ..., and the last has tag <i>N</i>-1 where \a N is the number of particles in the simulation.
193 All particles must be in the box: \a x \> -Lx/2.0 and \a x \< Lx/2.0 and similarly for \a y and \a z.
195 <hr>
197 \section sec_xml_image Particle images
198 The \<image\> node sets the box image for each particle in the simulation.<br>
199 \link hoomd_script.dump.xml dump.xml\endlink \em optionally writes this node.<br>
200 \link hoomd_script.init.read_xml init.read_xml\endlink does not require this node.<br>
201 Version: 1.0 and newer<br>
202 When used in an input file, the images specified are used as the initial condition for the simulation.
204 \b Example:
205 \code
206 <image>
207 -1 -5 12
208 18 2 -10
209 13 -5 0
210 </image>
211 \endcode
212 \b Attributes:
213  - \a num (\b optional) number of particles coming in the node content. This attribute is written by
214         \link hoomd_script.dump.xml dump.xml\endlink to potentially aid in making parsers easier to write.
216 The format of the node data is the same as for \<position\> (see \ref sec_xml_position), except that the 
217 values must be integers. If specifying both position and image in an input file, be certain to include the 
218 same number of particles in each, or \link hoomd_script.init.read_xml init.read_xml\endlink will generate an 
219 error.
221 Image flags are used to track the movement of particles across the periodic boundary conditions. To unwrap
222 the position of a single particle and see its trajectory as if it did not wrap around the boundary, 
223 compute \code x + ix * Lx\endcode where \c x is the particle coordinate, \c ix is the image and \c Lx is the
224 box dimension.
226 <hr>
228 \section sec_xml_velocity Particle velocities
229 The \<velocity\> node sets the velocity of each particle in the simulation.<br>
230 \link hoomd_script.dump.xml dump.xml\endlink \em optionally writes this node.<br>
231 \link hoomd_script.init.read_xml init.read_xml\endlink does not require this node.<br>
232 Version: 1.0 and newer<br>
233 When used in an input file, the velocities specified are used as the initial condition for the simulation.
235 \b Example:
236 \code
237 <velocity>
238 -0.5 -1.2 0.4
239 0.6 2.0 0.01
240 -0.4 3.0 0.0
241 </velocity>
242 \endcode
243 \b Attributes:
244  - \a num (\b optional) number of particles coming in the node content. This attribute is written by
245         \link hoomd_script.dump.xml dump.xml\endlink to potentially aid in making parsers easier to write.
247 The format of the node data is the same as for \<position\> (see \ref sec_xml_position). If specifying
248 both position and velocity in an input file, be certain to include the same number of particles in each,
249 or \link hoomd_script.init.read_xml init.read_xml\endlink will generate an error.
251 <hr>
253 \section sec_xml_acceleration Particle accelerations
254 The \<accelleration\> node indicates the instantaneous acceleration of each particle in the simulation.<br>
255 \link hoomd_script.dump.xml dump.xml\endlink \em optionally writes this node.<br>
256 \link hoomd_script.init.read_xml init.read_xml\endlink \b ignores this node - acceleration is a computed quantity.<br>
257 Version: 1.2 and newer<br>
259 The format of the node data is the same as for \<position\> (see \ref sec_xml_position).
261 <hr>
263 \section sec_xml_mass Particle masses
264 The \<mass\> node sets the mass of each particle in the simulation.<br>
265 \link hoomd_script.dump.xml dump.xml\endlink \em optionally writes this node.<br>
266 \link hoomd_script.init.read_xml init.read_xml\endlink does not require this node (all masses default to 1.0 if it is not specified).<br>
267 Version: 1.0 and newer
269 \b Example:
270 \code
271 <mass>
275 </mass>
276 \endcode
277 \b Attributes:
278  - \a num (\b optional) number of particles coming in the node content. This attribute is written by
279         \link hoomd_script.dump.xml dump.xml\endlink to potentially aid in making parsers easier to write.
281 The format of the node data is the same as for \<position\> (see \ref sec_xml_position), except that only one value
282 per particle is specified.
284 <hr>
286 \section sec_xml_diameter Particle diameters
287 The \<diameter\> node sets the diameter of each particle in the simulation.<br>
288 \link hoomd_script.dump.xml dump.xml\endlink \em optionally writes this node.<br>
289 \link hoomd_script.init.read_xml init.read_xml\endlink does not require this node (all diameters default to 1.0 if it is not specified).<br>
290 Version: 1.0 and newer
292 \b Example:
293 \code
294 <diameter>
298 </diameter>
299 \endcode
300 \b Attributes:
301  - \a num (\b optional) number of particles coming in the node content. This attribute is written by
302         \link hoomd_script.dump.xml dump.xml\endlink to potentially aid in making parsers easier to write.
304 The format of the node data is the same as for \<position\> (see \ref sec_xml_position), except that only one value
305 per particle is specified.
307 <hr>
309 \section sec_xml_charge Particle charges
310 The \<charge\> node sets the charge of each particle in the simulation.<br>
311 \link hoomd_script.dump.xml dump.xml\endlink \em optionally writes this node.<br>
312 \link hoomd_script.init.read_xml init.read_xml\endlink does not require this node (all charges default to 0.0 if it is not specified).<br>
313 Version: 1.3 and newer
315 \b Example:
316 \code
317 <charge>
320 -3.0
321 </charge>
322 \endcode
323 \b Attributes:
324  - \a num (\b optional) number of particles coming in the node content. This attribute is written by
325     \link hoomd_script.dump.xml dump.xml\endlink to potentially aid in making parsers easier to write.
327 The format of the node data is the same as for \<position\> (see \ref sec_xml_position), except that only one value
328 per particle is specified.
330 <hr>
332 \section sec_xml_type Particle types
333 The \<type\> node sets the type name of each particle in the simulation.<br>
334 \link hoomd_script.dump.xml dump.xml\endlink \em optionally writes this node.<br>
335 \link hoomd_script.init.read_xml init.read_xml\endlink \b requires this node be specified.<br>
336 Version: 1.0 and newer
338 \b Example:
339 \code
340 <type>
342 long_type_name
344 </type>
345 \endcode
346 \b Attributes:
347  - \a num (\b optional) number of particles coming in the node content. This attribute is written by
348         \link hoomd_script.dump.xml dump.xml\endlink to potentially aid in making parsers easier to write.
350 The format of the node data is similar to that of \<position\> (see \ref sec_xml_position),
351 except that only one type is specified for each particle. A particle type can be \b any
352 string you want that does not include whitespace (as whitespace is used to signify
353 the next particle in the list). Internally, hoomd assigns no meaning whatsoever to the 
354 value of the string you specify so name your particles in ways that are meaningful to you.
355 When performing tasks such as setting the coefficients of a \link hoomd_script.pair pair\endlink 
356 force, the type strings given are simply matched up to those specified in the xml file.
358 If specifying both position and type in an input file, be certain to include the same number of
359 particles in each, or \link hoomd_script.init.read_xml init.read_xml\endlink will generate an error.
361 <hr>
363 \section sec_xml_body Rigid body assignments
364 The \<body\> node specifies the rigid body (if any) in which each particles belongs.<br>
365 \link hoomd_script.dump.xml dump.xml\endlink \em optionally writes this node.<br>
366 \link hoomd_script.init.read_xml init.read_xml\endlink does not require this node<br>
367 Version: 1.4 and newer
369 \b Example:
370 \code
371 <body>
375 </body>
376 \endcode
377 \b Attributes:
378  - \a num (\b optional) number of particles coming in the node content. This attribute is written by
379         \link hoomd_script.dump.xml dump.xml\endlink to potentially aid in making parsers easier to write.
381 The format of the node data is similar to that of \<position\> (see \ref sec_xml_position),
382 except that only one integer is specified for each particle. Set a value of -1 for those particles that are not part
383 of any rigid body. For all of the particles contained within each rigid body, set the same integer value for each
384 of them. The value assigned also serves as the index of the rigid body in an array, so all rigid bodies must be numberd
385 from 0 up to the number of rigid bodies minus one.
387 When specifying both position and body in an input file, be certain to include the same number of
388 particles in each, or \link hoomd_script.init.read_xml init.read_xml\endlink will generate an error.
390 <hr>
392 \section sec_xml_orientation Particle orientation
393 The \<orientation\> node specifies the orientation of each particle as a quaternion.<br>
394 \link hoomd_script.dump.xml dump.xml\endlink \em optionally writes this node.<br>
395 \link hoomd_script.init.read_xml init.read_xml\endlink does not require this node<br>
396 Version: 1.4 and newer
398 \b Example:
399 \code
400 <orientation>
401 1 0 0 0
402 0.0333   -0.0667    0.1000    0.1333
403 </orientation>
404 \endcode
405 \b Attributes:
406  - \a num (\b optional) number of particles coming in the node content. This attribute is written by
407         \link hoomd_script.dump.xml dump.xml\endlink to potentially aid in making parsers easier to write.
409 The format of the node data is similar to that of \<position\> (see \ref sec_xml_position),
410 except that four scalar values are specified for each particle. Each group of four values represents a quaternion,
411 where (1 0 0 0) is the unit quaternion.
413 When specifying both position and orientation in an input file, be certain to include the same number of
414 particles in each, or \link hoomd_script.init.read_xml init.read_xml\endlink will generate an error.
416 \section sec_xml_moment_inertia Particle moment of inertia
417 The \<moment_inertia\> node specifies the moment of inertia of each particle as a tensor.<br>
418 \link hoomd_script.dump.xml dump.xml\endlink \em optionally writes this node.<br>
419 \link hoomd_script.init.read_xml init.read_xml\endlink does not require this node<br>
420 Version: 1.4 and newer
422 \b Example:
423 \code
424 <moment_inertia>
425 1 0 0 2 0 3
426 1 2 3 4 5 6
427 </moment_inertia>
428 \endcode
429 \b Attributes:
430  - \a num (\b optional) number of particles coming in the node content. This attribute is written by
431         \link hoomd_script.dump.xml dump.xml\endlink to potentially aid in making parsers easier to write.
433 The format of the node data is similar to that of \<position\> (see \ref sec_xml_position),
434 except that only six scalar values are specified for each particle. Each group of six values represents a moment
435 of inertia tensor elements (in order) \f$I_{xx}\f$ \f$I_{xy}\f$ \f$I_{xz}\f$ \f$I_{yy}\f$ \f$I_{yz}\f$ \f$I_{zz}\f$.
437 When specifying both position and moment_inertia in an input file, be certain to include the same number of
438 particles in each, or \link hoomd_script.init.read_xml init.read_xml\endlink will generate an error.
441 <hr>
443 \section sec_xml_bond Bonds between particles
445 The \<bond\> node specifies any number of bonds between particles in the simulation.<br>
446 \link hoomd_script.dump.xml dump.xml\endlink \em optionally writes this node.<br>
447 \link hoomd_script.init.read_xml init.read_xml\endlink does not require this node<br>
448 Version: 1.0 and newer
450 Example:
451 \code
452 <bond>
453 polymer 0 1
454 backbone 1 2
455 </bond>
456 \endcode
457 \b Attributes:
458  - \a num (\b optional) number of particles coming in the node content. This attribute is written by
459         \link hoomd_script.dump.xml dump.xml\endlink to potentially aid in making parsers easier to write.
461 The above example creates a bond of type \em polymer between particle 0 and 1 and one of type
462 \em backbone between 1 and 2. The general format is <i>type0 idx_a0 idx_b0 type1 idx_a1 idx_b1 ....</i>
463 where type is any string without whitespace, idx_a is the index of the first particle in the bond and
464 idx_b is the index of the second particle in the bond. Each field is separated from the next by
465 whitespace (any number of spaces, tabs, or newlines). 
467 Specifying the bonds themselves doesn't result in any additional forces on particles. For
468 that, you must specify a bond force (see \link hoomd_script.bond bond\endlink).
470 A typical usage would list many bonds of the same type. Coefficients for the associated bond
471 force can be set separately for each bond type by name (for example, see \link hoomd_script.bond.harmonic
472 bond.harmonic\endlink).
474 <hr>
475 \section sec_xml_angle Angles between three particles
477 The \<angle\> node specifies any number of angles between particles in the simulation.<br>
478 \link hoomd_script.dump.xml dump.xml\endlink \em optionally writes this node.<br>
479 \link hoomd_script.init.read_xml init.read_xml\endlink does not require this node<br>
480 Version: 1.1 and newer
482 Example:
483 \code
484 <angle>
485 A-B-A 0 1 2
486 B-A-A 1 2 3
487 </angle>
488 \endcode
489 \b Attributes:
490  - \a num (\b optional) number of particles coming in the node content. This attribute is written by
491         \link hoomd_script.dump.xml dump.xml\endlink to potentially aid in making parsers easier to write.
493 The above example creates a angle of type \em A-B-A between particles 0, 1, and 2 and one of type
494 \em B-A-A between particles 1, 2, and 3. The general format is <i>type0 idx_a0 idx_b0 idx_c0 type1 idx_a1 idx_b1 idx_c1....</i>
495 where type is any string without whitespace, idx_a is the index of the first particle in the angle,
496 idx_b is the index of the middle particle in the angle, and idx_c the index of the third particle of the angle. 
497 Each field is separated from the next by whitespace (any number of spaces, tabs, or newlines). 
499 Specifying the angles themselves doesn't result in any additional forces on particles. For
500 that, you must specify a angle force (see \link hoomd_script.angle angle\endlink).
502 A typical usage would list many angles of the same type. Coefficients for the associated angle
503 force can be set separately for each angle type by name (for example, see \link hoomd_script.angle.harmonic
504 angle.harmonic\endlink).
506 <hr>
507 \section sec_xml_dihedral Dihedral Angles between four particles
509 The \<dihedral\> node specifies any number of dihedrals between particles in the simulation.<br>
510 \link hoomd_script.dump.xml dump.xml\endlink \em optionally writes this node.<br>
511 \link hoomd_script.init.read_xml init.read_xml\endlink does not require this node<br>
512 Version: 1.1 and newer
514 Example:
515 \code
516 <dihedral>
517 A-B-A-A 0 1 2 3
518 B-A-A-C 1 2 3 4
519 </dihedral>
520 \endcode
521 \b Attributes:
522  - \a num (\b optional) number of particles coming in the node content. This attribute is written by
523         \link hoomd_script.dump.xml dump.xml\endlink to potentially aid in making parsers easier to write.
525 The above example creates a dihedral of type \em A-B-A-A between particles 0, 1, 2, and 3 and one of type
526 \em B-A-A-C between particles 1, 2, 3, and 4. The general format is <i>type0 idx_a0 idx_b0 idx_c0 idx_d0 type1 idx_a1 idx_b1 idx_c1 idx_d1....</i>
527 where type is any string without whitespace, idx_a is the index of the first particle in the dihedral,
528 idx_b and idx_c are the indices of the bond around which the dihedral is considered, and idx_d the index of the last particle of the dihedral. 
529 Each field is separated from the next by whitespace (any number of spaces, tabs, or newlines). 
531 Specifying the dihedrals themselves doesn't result in any additional forces on particles. For
532 that, you must specify a dihedral force (see \link hoomd_script.dihedral dihedral\endlink).
534 A typical usage would list many dihedrals of the same type. Coefficients for the associated dihedral
535 force can be set separately for each dihedral type by name (for example, see \link hoomd_script.dihedral.harmonic
536 dihedral.harmonic\endlink).
538 <hr>
539 \section sec_xml_improper Improper Dihedral Angles between four particles
541 The \<improper\> node specifies any number of improper dihedrals between particles in the simulation.<br>
542 \link hoomd_script.dump.xml dump.xml\endlink \em optionally writes this node.<br>
543 \link hoomd_script.init.read_xml init.read_xml\endlink does not require this node<br>
544 Version: 1.1 and newer
546 Example:
547 \code
548 <improper>
549 A-B-A-A 0 1 2 3
550 B-A-A-C 1 2 3 4
551 </improper>
552 \endcode
553 \b Attributes:
554  - \a num (\b optional) number of particles coming in the node content. This attribute is written by
555         \link hoomd_script.dump.xml dump.xml\endlink to potentially aid in making parsers easier to write.
557 The above example creates an improper dihedral of type \em A-B-A-A between particles 0, 1, 2, and 3 and one of type
558 \em B-A-A-C between particles 1, 2, 3, and 4. The general format is <i>type0 idx_a0 idx_b0 idx_c0 idx_d0 type1 idx_a1 idx_b1 idx_c1 idx_d1....</i>
559 where type is any string without whitespace, idx_a is the index of the first particle in the improper dihedral,
560 idx_b and idx_c are the indices of the bond around which the improper dihedral is considered, and idx_d the index 
561 of the last particle of the dihedral. Each field is separated from the next by whitespace (any number of spaces, 
562 tabs, or newlines).
564 Specifying the improper dihedrals themselves doesn't result in any additional forces on particles. For
565 that, you must specify an improper force (see \link hoomd_script.improper improper\endlink).
567 A typical usage would list many improper dihedrals of the same type. Coefficients for the associated improper
568 force can be set separately for each improper type by name (for example, see \link hoomd_script.improper.harmonic
569 improper.harmonic\endlink).
571 <hr>
573 \section sec_xml_wall Walls in the simulation box
575 The \<wall\> node specifies any number of walls in the simulation box. Walls have no
576 meaning unless a wall force such as \link hoomd_script.wall.lj wall.lj\endlink is specified 
577 in the simulation. <br>
578 \link hoomd_script.dump.xml dump.xml\endlink \em optionally writes this node.<br>
579 \link hoomd_script.init.read_xml init.read_xml\endlink does not require this node<br>
580 Version: 1.0 and newer
582 Example:
583 \code
584 <wall>
585 <coord ox="1.0" oy="2.0" oz="3.0" nx="4.0" ny="5.0" nz="6.0"/>
586 <coord ox="7.0" oy="8.0" oz="9.0" nx="10.0" ny="11.0" nz="-12.0"/>
587 </wall>
588 \endcode
590 Every wall is specified by a plane. The vector (\em ox, \em oy, \em oz) is the origin, a point
591 in the plane and (\em nx, \em ny, \em nz) is the normal.