// Copyright (c) 2009-2016 The Regents of the University of Michigan
// This file is part of the HOOMD-blue project, released under the BSD 3-Clause License.


/*! \mainpage

Welcome to the user documentation for HOOMD-blue!

1. \subpage page_compile_guide
2. \subpage page_quick_start
3. \subpage page_command_line_options
4. \subpage page_example_scripts
5. \subpage page_concepts
    1. \ref page_units
    2. \ref page_box
    3. \ref page_xml_file_format
    4. \ref page_aniso
    5. \ref page_mpi
    6. \ref page_autotuner
    7. \ref page_restartable_jobs
6. \subpage page_command_list
7. \subpage page_conversion_scripts
9. \subpage page_license
10. \subpage page_citing
11. \subpage page_credits
*/

/*! \page page_command_list Index of Script Commands

Click on an individual command in the list to go to its documentation. Click on the package link at the
beginning of each list to get a general overview of all commands in that package.

Table of contents:
 - \ref sec_index_run
 - \ref sec_index_option
 - \ref sec_index_init
 - \ref sec_index_data
 - \ref sec_index_integration
 - \ref sec_index_update
 - \ref sec_index_compute
 - \ref sec_index_analyze
 - \ref sec_index_dump
 - \ref sec_index_nlist
 - \ref sec_index_meta
 - Potentials
   - \ref sec_index_pair
   - \ref sec_index_aniso
   - \ref sec_index_manybody
   - \ref sec_index_bond
   - \ref sec_index_angle
   - \ref sec_index_dihedral
   - \ref sec_index_improper
   - \ref sec_index_charge
   - \ref sec_index_wall
   - \ref sec_index_constraint
   - \ref sec_index_external
   - \ref sec_index_other

 - Helpers
   - \ref sec_index_group
   - \ref sec_index_variant
   - \ref sec_index_wall_helpers

 - Miscellaneous
  - \ref sec_index_tuning
  - \ref sec_index_benchmark
  - \ref sec_index_communicate
  - \ref sec_index_citation
  - \ref sec_index_util

\section sec_index_run Run
 - \link hoomd_script.get_step() get_step\endlink - <i>Gets the current time step</i>
 - \link hoomd_script.run() run\endlink - <i>Runs the simulation for a given number of time steps</i>
 - \link hoomd_script.run_upto() run_upto\endlink - <i>Runs the simulation up to a given time step number</i>

\section sec_index_option Option
 - Command line
    - \ref page_command_line_options
 - In script
    - \link hoomd_script.option.set_notice_level() option.set_notice_level\endlink - <i>Set the notice level</i>
    - \link hoomd_script.option.set_msg_file() option.set_msg_file\endlink - <i>Set the message output file</i>
    - \link hoomd_script.option.get_user() option.get_user\endlink - <i>Get user options</i>
    - \link hoomd_script.option.set_autotuner_params() option.set_autotuner_params\endlink - <i>Set autotuner params</i>

\section sec_index_init Initialize
 - \link hoomd_script.context.initialize() context.initialize\endlink - <i>Parse command line arguments and initialize the execution context</i>
 - \link hoomd_script.init.create_empty() init.create_empty\endlink - <i>Create an empty system</i>
 - \link hoomd_script.init.create_random() init.create_random\endlink - <i>Generates N randomly positioned particles of the same type </i>
 - \link hoomd_script.init.create_random_polymers() init.create_random_polymers\endlink - <i>Generates any number of randomly positioned polymers of configurable types </i>
 - \link hoomd_script.init.read_bin() init.read_bin\endlink - <i>Reads initial system state from a binary file </i>
 - \link hoomd_script.init.read_snapshot() init.read_snapshot\endlink - <i>Initializes the system from a snapshot</i>
 - \link hoomd_script.init.read_xml() init.read_xml\endlink - <i>Reads initial system state from an XML file</i>
 - \link hoomd_script.init.reset() init.reset\endlink - <i>Resets all hoomd_script variables </i>
 - \link hoomd_script.init.is_initialized() init.is_initialized\endlink - <i>Tests if the system has been initialized </i>

\section sec_index_data Data access
 - \link hoomd_script.data data access\endlink - <i>Access particles, bonds, and other state information inside scripts </i>
 - \link hoomd_script.data.make_snapshot data.make_snapshot\endlink - <i>Make an empty snapshot</i>
 - \link hoomd_script.data.system_data.take_snapshot system_data.take_snapshot\endlink - <i>Take a snapshot of the current configuration </i>
 - \link hoomd_script.data.system_data.restore_snapshot system_data.restore_snapshot\endlink - <i>Load the current system with a previously taken snapshot</i>
 - \link hoomd_script.data.system_data.replicate system_data.replicate\endlink - <i>Replicate the system periodically along specified dimensions</i>

\section sec_index_integration Integrate
 - \link hoomd_script.integrate.mode_minimize_fire integrate.mode_minimize_fire\endlink - <i>Energy Minimizer (FIRE) </i>
 - \link hoomd_script.integrate.mode_minimize_rigid_fire integrate.mode_minimize_rigid_fire\endlink - <i>Energy Minimizer (rigid bodies) (FIRE)</i>
 - \link hoomd_script.integrate.mode_standard integrate.mode_standard\endlink - <i>Enables a variety of standard integration methods </i>
   - \link hoomd_script.integrate.berendsen integrate.berendsen\endlink - <i>NVT integration via the Berendsen thermostat</i>
   - \link hoomd_script.integrate.bdnvt_rigid integrate.bdnvt_rigid\endlink - <i>NVT integration of rigid bodies via Brownian Dynamics</i>
   - \link hoomd_script.integrate.brownian integrate.brownian\endlink - <i>Brownian dynamics </i>
   - \link hoomd_script.integrate.langevin integrate.langevin\endlink - <i>Langevin dynamics </i>
   - \link hoomd_script.integrate.nph integrate.nph\endlink - <i>NPH integration via the Andersen / modified Parrinello-Rahman barostat </i>
   - \link hoomd_script.integrate.nph_rigid integrate.nph_rigid\endlink - <i>NPH Integration of rigid bodies</i>
   - \link hoomd_script.integrate.npt integrate.npt\endlink - <i>NPT Integration with various box-shape symmetries</i>
   - \link hoomd_script.integrate.npt_rigid integrate.npt_rigid\endlink - <i>NPT Integration of rigid bodies</i>
   - \link hoomd_script.integrate.nve integrate.nve\endlink - <i>NVE Integration via Velocity-Verlet </i>
   - \link hoomd_script.integrate.nve_rigid integrate.nve_rigid\endlink - <i>NVE integration of rigid bodies</i>
   - \link hoomd_script.integrate.nvt integrate.nvt\endlink - <i>NVT Integration via the Nos&eacute;-Hoover thermostat </i>
   - \link hoomd_script.integrate.nvt_rigid integrate.nvt_rigid\endlink - <i>NVT integration of rigid bodies</i>

\section sec_index_update Update
 - \link hoomd_script.update.box_resize update.box_resize\endlink - <i>Rescales the system box size </i>
 - \link hoomd_script.update.enforce2d update.enforce2d\endlink - <i>Enforces 2D simulation </i>
 - \link hoomd_script.update.rescale_temp update.rescale_temp\endlink - <i>Rescales particle velocities </i>
 - \link hoomd_script.update.sort update.sort\endlink - <i>Sorts particles in memory to improve cache coherency</i>
 - \link hoomd_script.update.zero_momentum update.zero_momentum\endlink - <i>Zeroes system momentum </i>
 - \link hoomd_script.update.balance update.balance\endlink - <i>Adjusts domain decomposition boundaries to balance load</i>

\section sec_index_compute Compute
 - \link hoomd_script.compute.thermo compute.thermo\endlink - <i>Compute thermodynamic properties of a group of particles </i>

\section sec_index_analyze Analyze
 - \link hoomd_script.analyze.imd analyze.imd\endlink - <i>Sends simulation snapshots to VMD in real-time </i>
 - \link hoomd_script.analyze.log analyze.log\endlink - <i>Logs a number of calculated quantities to a file </i>
 - \link hoomd_script.analyze.msd analyze.msd\endlink - <i>Calculates the mean-squared displacement of groups of particles and logs the values to a file </i>
 - \link hoomd_script.analyze.callback analyze.callback\endlink - <i>Call a callback with each analyzer period </i>

\section sec_index_dump Dump
 - \link hoomd_script.dump.dcd dump.dcd\endlink - <i>Writes simulation snapshots in the DCD format </i>
 - \link hoomd_script.dump.mol2 dump.mol2\endlink - <i>Writes a simulation snapshot in the MOL2 format </i>
 - \link hoomd_script.dump.pdb dump.pdb\endlink - <i>Writes simulation snapshots in the PBD format </i>
 - \link hoomd_script.dump.bin dump.bin\endlink - <i>Writes simulation snapshots in a binary format </i>
 - \link hoomd_script.dump.xml dump.xml\endlink - <i>Writes simulation snapshots in the HOOMD XML format </i>
 - \link hoomd_script.dump.pos dump.pos\endlink - <i>Writes simulation snapshots in the POS format </i>

\section sec_index_meta Meta
 - \link hoomd_script.meta\endlink - <i>Dumps metadata about the execution status and context </i>

<h2>Potentials</h2>

\section sec_index_nlist Neighbor lists
 - \link hoomd_script.nlist.cell nlist.cell\endlink - <i>Cell-list constructed neighbor list </i>
 - \link hoomd_script.nlist.tree nlist.tree\endlink - <i>Fast neighbor list for size asymmetric particles </i>
 - \link hoomd_script.nlist nlist\endlink - <i>Legacy wrappers for the global neighbor list</i>

\section sec_index_pair Pair potentials
 - \link hoomd_script.pair.cgcmm pair.cgcmm\endlink - <i>CMM coarse-grain model %pair %force </i>
 - \link hoomd_script.pair.dpd pair.dpd\endlink - <i>NVT Integration via Dissipative Particle Dynamics %pair %force </i>
 - \link hoomd_script.pair.dpdlj pair.dpdlj\endlink - <i>NVT Integration via Dissipative Particle Dynamics and LJ Force %pair %force </i>
 - \link hoomd_script.pair.dpd_conservative pair.dpd_conservative\endlink - <i>DPD Conservative %pair %force </i>
 - \link hoomd_script.pair.ewald pair.ewald\endlink - <i>Short range ewald %pair %force </i>
 - \link hoomd_script.pair.gauss pair.gauss\endlink - <i>Gaussian %pair %force </i>
 - \link hoomd_script.pair.lj pair.lj\endlink - <i>Lennard-Jones %pair %force </i>
 - \link hoomd_script.pair.mie pair.mie\endlink - <i>Mie potential %pair %force </i>
 - \link hoomd_script.pair.moliere pair.moliere\endlink - <i>Moliere %pair %force</i>
 - \link hoomd_script.pair.morse pair.morse\endlink - <i>Morse %pair %force </i>
 - \link hoomd_script.pair.table pair.table\endlink - <i>Tabulated %pair %force </i>
 - \link hoomd_script.pair.reaction_field pair.reaction_field\endlink - <i>Reaction field %pair %force </i>
 - \link hoomd_script.pair.slj pair.slj\endlink - <i>Shifted Lennard-Jones %pair %force </i>
 - \link hoomd_script.pair.yukawa pair.yukawa\endlink - <i>Yukawa %pair %force </i>
 - \link hoomd_script.pair.zbl pair.zbl\endlink - <i>Ziegler-Biersack-Littmark %pair %force</i>
 - \link hoomd_script.pair.force_shifted_lj pair.force_shifted_lj\endlink - <i>Force shifted Lennard-Jones %pair %force </i>
 - \link hoomd_script.pair.zbl pair.zbl\endlink - <i>Ziegler-Biersack-Littmark %pair %force </i>

\section sec_index_aniso Anisotropic pair potentials
 - \link hoomd_script.pair.dipole pair.dipole\endlink - <i>Screened dipole %pair %force </i>
 - \link hoomd_script.pair.gb pair.gb\endlink - <i>Gay-Berne %pair %force </i>

\section sec_index_manybody Many-body potentials
 - \link hoomd_script.pair.eam pair.eam\endlink - <i>EAM many-body %pair %force </i>
 - \link hoomd_script.pair.tersoff pair.tersoff\endlink - <i>Tersoff three-body %pair %force</i>

\section sec_index_bond Bond potentials
 - \link hoomd_script.bond.harmonic bond.harmonic\endlink - <i>Harmonic %bond force </i>
 - \link hoomd_script.bond.fene bond.fene\endlink - <i>FENE %bond force </i>
 - \link hoomd_script.bond.table bond.table\endlink - <i>Tabulated %bond force </i>

\section sec_index_angle Angle potentials
 - \link hoomd_script.angle.harmonic angle.harmonic\endlink - <i>Harmonic %angle force </i>
 - \link hoomd_script.angle.cgcmm angle.cgcmm\endlink - <i>CGCMM %angle force </i>
 - \link hoomd_script.angle.table angle.table\endlink - <i>Tabulated %angle force </i>

\section sec_index_dihedral Dihedral potentials
 - \link hoomd_script.dihedral.harmonic dihedral.harmonic\endlink - <i>Harmonic %dihedral force </i>
 - \link hoomd_script.dihedral.opls dihedral.opls\endlink - <i>OPLS %dihedral force </i>
 - \link hoomd_script.dihedral.table dihedral.table\endlink - <i>Tabulated %dihedral force </i>

\section sec_index_improper Improper potentials
 - \link hoomd_script.improper.harmonic improper.harmonic\endlink - <i>Harmonic %improper force </i>

\section sec_index_charge Electrostatic potentials
 - \link hoomd_script.charge.pppm charge.pppm\endlink - <i>Long-range electrostatics computed with the PPPM method</i>

\section sec_index_wall Wall potentials
 - \link hoomd_script.wall.lj wall.lj\endlink - <i>Lennard-Jones %wall %force </i>
 - \link hoomd_script.wall.gauss wall.gauss\endlink - <i>Gaussian %wall %force </i>
 - \link hoomd_script.wall.slj wall.slj\endlink - <i>Shifted Lennard-Jones %wall %force </i>
 - \link hoomd_script.wall.yukawa wall.yukawa\endlink - <i>Yukawa %wall %force </i>
 - \link hoomd_script.wall.morse wall.morse\endlink - <i>Morse %wall %force </i>
 - \link hoomd_script.wall.force_shifted_lj wall.force_shifted_lj\endlink - <i>Force shifted Lennard-Jones %wall %force </i>
 - \link hoomd_script.wall.mie wall.mie\endlink - <i>Mie potential %wall %force </i>

\section sec_index_constraint Constraint forces
 - \link hoomd_script.constrain.sphere constrain.sphere\endlink - <i>Constrain particles to the surface of a sphere </i>

 \section sec_index_external External forces
 - \link hoomd_script.external.periodic external.periodic\endlink - <i>One-dimension periodic potential</i>
 - \link hoomd_script.external.e_field external.e_field\endlink - <i>Apply a force derived from an electric field to all particles</i>

 \section sec_index_other Other forces
 - \link hoomd_script.force.constant force.constant\endlink - <i>Constant %force </i>
 - \link hoomd_script.force.active force.active\endlink - <i>Active %force </i>

<h2>Helpers</h2>

\section sec_index_group Group
 - Create groups
  - \link hoomd_script.group.all() group.all\endlink - <i>Groups all particles </i>
  - \link hoomd_script.group.charged() group.charged\endlink - <i>Groups particles that are charged</i>
  - \link hoomd_script.group.cuboid() group.cuboid\endlink - <i>Groups particles in a cuboid</i>
  - \link hoomd_script.group.nonrigid() group.nonrigid\endlink - <i>Groups particles that do not belong to rigid bodies</i>
  - \link hoomd_script.group.rigid() group.rigid\endlink - <i>Groups particles that belong to rigid bodies</i>
  - \link hoomd_script.group.tag_list() group.tag_list\endlink - <i>Groups particles by tag list </i>
  - \link hoomd_script.group.tags() group.tags\endlink - <i>Groups particles by tag </i>
  - \link hoomd_script.group.type() group.type\endlink - <i>Groups particles by type </i>
 - Combine groups
  - \link hoomd_script.group.difference() group.difference\endlink - <i>Create a new group from the set difference or complement of two existing groups </i>
  - \link hoomd_script.group.intersection() group.intersection\endlink - <i>Create a new group from the set intersection of two existing groups </i>
  - \link hoomd_script.group.union() group.union\endlink - <i>Create a new group from the set union of two existing groups </i>

\section sec_index_variant Variants
 - \link hoomd_script.variant.linear_interp variant.linear_interp\endlink - <i>Linearly interpolated variant</i>

\section sec_index_wall_helpers Wall geometry helpers
 - \link hoomd_script.wall.group() wall.group\endlink - <i>Creates wall structure for input to wall potentials</i>
 - \link hoomd_script.wall.sphere() wall.sphere\endlink - <i>Creates a sphere definition</i>
 - \link hoomd_script.wall.cylinder() wall.cylinder\endlink - <i>Creates a cylinder definition</i>
 - \link hoomd_script.wall.plane() wall.plane\endlink - <i>Creates a plane definition</i>

<h2>Miscellaneous commands</h2>
\section sec_index_tuning Tune
 - \link hoomd_script.tune.r_buff() tune.r_buff()\endlink - <i>Make a series of short runs to determine the fastest performing r_buff setting </i>

\section sec_index_benchmark Benchmark
 - \link hoomd_script.benchmark.series() benchmark.series\endlink - <i>Perform a series of short runs to benchmark overall simulation performance</i>
 - \link hoomd_script.cuda_profile_start() cuda_profile_start\endlink - <i>Start nvvp profiling</i>
 - \link hoomd_script.cuda_profile_stop() cuda_profile_stop\endlink - <i>Stop nvvp profiling</i>

\section sec_index_communicate Communication helpers
 - \link hoomd_script.comm.get_num_ranks() comm.get_num_ranks\endlink - <i>Get the total number of ranks in a a parallel execution</i>
 - \link hoomd_script.comm.get_rank() comm.get_rank\endlink - <i>Return the rank of the current process</i>
 - \link hoomd_script.comm.get_partition() comm.get_partition\endlink - <i>Return the partition of the current process</i>

\section sec_index_citation Citations
 - \link hoomd_script.cite.save() cite.save\endlink - <i>Save citations to a bibtex file.</i>

\section sec_index_util Utilities
 - \link hoomd_script.util.quiet_status() util.quiet_status\endlink - <i>Quiet status line messages.</i>
 - \link hoomd_script.util.unquiet_status() util.unquiet_status\endlink - <i>Resume status line messages.</i>

*/
