text:
# 6.3. Package details

Here is a brief description of all the standard and user packages in LAMMPS. It lists authors (if applicable) and summarizes the package contents. It has specific instructions on how to install the package, including, if necessary, info on how to download or build any extra library it requires. It also gives links to documentation, example scripts, and pictures/movies (if available) that illustrate use of the package.

The majority of packages can be included in a LAMMPS build with a single setting (-D PGK_<NAME>=on for CMake) or command (make yes-<name> for make). See the Build package page for more info. A few packages may require additional steps; this is indicated in the descriptions below. The Build extras page gives those details.

Note

To see the complete list of commands a package adds to LAMMPS, you can examine the files in its src directory, e.g. “ls src/GRANULAR”. Files with names that start with fix, compute, atom, pair, bond, angle, etc correspond to commands with the same style name as contained in the file name.

## 6.3.1. ASPHERE package

Contents:

Computes, time-integration fixes, and pair styles for aspherical particle models including ellipsoids, 2d lines, and 3d triangles.

Supporting info:

## 6.3.2. BODY package

Contents:

Body-style particles with internal structure. Computes, time-integration fixes, pair styles, as well as the body styles themselves. See the Howto body page for an overview.

Supporting info:

## 6.3.3. CLASS2 package

Contents:

Bond, angle, dihedral, improper, and pair styles for the COMPASS CLASS2 molecular force field.

Supporting info:

## 6.3.4. COLLOID package

Contents:

Coarse-grained finite-size colloidal particles. Pair styles and fix wall styles for colloidal interactions. Includes the Fast Lubrication Dynamics (FLD) method for hydrodynamic interactions, which is a simplified approximation to Stokesian dynamics.

Authors: This package includes Fast Lubrication Dynamics pair styles which were created by Amit Kumar and Michael Bybee from Jonathan Higdon’s group at UIUC.

Supporting info:

## 6.3.5. COMPRESS package

Contents:

Compressed output of dump files via the zlib compression library, using dump styles with a “gz” in their style name.

To use this package you must have the zlib compression library available on your system.

Author: Axel Kohlmeyer (Temple U).

Install:

This package has specific installation instructions on the Build extras page.

Supporting info:

## 6.3.6. CORESHELL package

Contents:

Compute and pair styles that implement the adiabatic core/shell model for polarizability. The pair styles augment Born, Buckingham, and Lennard-Jones styles with core/shell capabilities. The compute temp/cs command calculates the temperature of a system with core/shell particles. See the Howto coreshell page for an overview of how to use this package.

Author: Hendrik Heenen (Technical U of Munich).

Supporting info:

## 6.3.7. DIPOLE package

Contents:

An atom style and several pair styles for point dipole models with short-range or long-range interactions.

Supporting info:

## 6.3.8. GPU package

Contents:

Dozens of pair styles and a version of the PPPM long-range Coulombic solver optimized for GPUs. All such styles have a “gpu” as a suffix in their style name. The GPU code can be compiled with either CUDA or OpenCL, however the OpenCL variants are no longer actively maintained and only the CUDA versions are regularly tested. The GPU package page gives details of what hardware and GPU software is required on your system, and details on how to build and use this package. Its styles can be invoked at run time via the “-sf gpu” or “-suffix gpu” command-line switches. See also the KOKKOS package, which has GPU-enabled styles.

Authors: Mike Brown (Intel) while at Sandia and ORNL and Trung Nguyen (Northwestern U) while at ORNL and later. AMD HIP support by Evgeny Kuznetsov, Vladimir Stegailov, and Vsevolod Nikolskiy (HSE University).

Install:

This package has specific installation instructions on the Build extras page.

Supporting info:

## 6.3.9. GRANULAR package

Contents:

Pair styles and fixes for finite-size granular particles, which interact with each other and boundaries via frictional and dissipative potentials.

Supporting info:

## 6.3.10. KIM package

Contents:

This package contains a set of commands that serve as a wrapper on the Open Knowledgebase of Interatomic Models (OpenKIM) repository of interatomic models (IMs) enabling compatible ones to be used in LAMMPS simulations.

This includes kim_init, and kim_interactions commands to select, initialize and instantiate the IM, a kim_query command to perform web queries for material property predictions of OpenKIM IMs, a kim_param command to access KIM Model Parameters from LAMMPS, and a kim_property command to write material properties computed in LAMMPS to standard KIM property instance format.

Support for KIM IMs that conform to the KIM Application Programming Interface (API) is provided by the pair_style kim command.

Note

The command pair_style kim is called by kim_interactions and is not recommended to be directly used in input scripts.

To use this package you must have the KIM API library available on your system. The KIM API is available for download on the OpenKIM website. When installing LAMMPS from binary, the kim-api package is a dependency that is automatically downloaded and installed.

Information about the KIM project can be found at its website: https://openkim.org. The KIM project is led by Ellad Tadmor and Ryan Elliott (U Minnesota) and is funded by the National Science Foundation.

Authors: Ryan Elliott (U Minnesota) is the main developer for the KIM API and the pair_style kim command. Yaser Afshar (U Minnesota), Axel Kohlmeyer (Temple U), Ellad Tadmor (U Minnesota), and Daniel Karls (U Minnesota) contributed to the kim_commands interface in close collaboration with Ryan Elliott.

Install:

This package has specific installation instructions on the Build extras page.

Supporting info:

## 6.3.11. KOKKOS package

Contents:

Dozens of atom, pair, bond, angle, dihedral, improper, fix, compute styles adapted to compile using the Kokkos library which can convert them to OpenMP or CUDA code so that they run efficiently on multicore CPUs, KNLs, or GPUs. All the styles have a “kk” as a suffix in their style name. The KOKKOS package page gives details of what hardware and software is required on your system, and how to build and use this package. Its styles can be invoked at run time via the “-sf kk” or “-suffix kk” command-line switches. Also see the GPU, OPT, USER-INTEL, and USER-OMP packages, which have styles optimized for CPUs, KNLs, and GPUs.

You must have a C++11 compatible compiler to use this package. KOKKOS makes extensive use of advanced C++ features, which can expose compiler bugs, especially when compiling for maximum performance at high optimization levels. Please see the file lib/kokkos/README for a list of compilers and their respective platforms, that are known to work.

Authors: The KOKKOS package was created primarily by Christian Trott and Stan Moore (Sandia), with contributions from other folks as well. It uses the open-source Kokkos library which was developed by Carter Edwards, Christian Trott, and others at Sandia, and which is included in the LAMMPS distribution in lib/kokkos.

Install:

This package has specific installation instructions on the Build extras page.

Supporting info:

## 6.3.12. KSPACE package

Contents:

A variety of long-range Coulombic solvers, as well as pair styles which compute the corresponding short-range pairwise Coulombic interactions. These include Ewald, particle-particle particle-mesh (PPPM), and multilevel summation method (MSM) solvers.

Install:

Building with this package requires a 1d FFT library be present on your system for use by the PPPM solvers. This can be the KISS FFT library provided with LAMMPS, third party libraries like FFTW, or a vendor-supplied FFT library. See the Build settings page for details on how to select different FFT options for your LAMPMS build.

Supporting info:

## 6.3.13. LATTE package

Contents:

A fix command which wraps the LATTE DFTB code, so that molecular dynamics can be run with LAMMPS using density-functional tight-binding quantum forces calculated by LATTE.

More information on LATTE can be found at this web site: https://github.com/lanl/LATTE. A brief technical description is given with the fix latte command.

Authors: Christian Negre (LANL) and Steve Plimpton (Sandia). LATTE itself is developed at Los Alamos National Laboratory by Marc Cawkwell, Anders Niklasson, and Christian Negre.

Install:

This package has specific installation instructions on the Build extras page.

Supporting info:

## 6.3.14. MANYBODY package

Contents:

A variety of many-body and bond-order potentials. These include (AI)REBO, BOP, EAM, EIM, Stillinger-Weber, and Tersoff potentials.

Supporting info:

• src/MANYBODY: filenames -> commands

• Pair style page

• examples/comb

• examples/eim

• examples/nb3d

• examples/shear

• examples/streitz

• examples/vashishta

• bench/in.eam

## 6.3.15. MC package

Contents:

Several fixes and a pair style that have Monte Carlo (MC) or MC-like attributes. These include fixes for creating, breaking, and swapping bonds, for performing atomic swaps, and performing grand-canonical MC (GCMC) in conjunction with dynamics.

Supporting info:

## 6.3.16. MESSAGE package

Contents:

Commands to use LAMMPS as either a client or server and couple it to another application.

Install:

This package has specific installation instructions on the Build extras page.

Supporting info:

## 6.3.17. MISC package

Contents:

A variety of compute, fix, pair, dump styles with specialized capabilities that don’t align with other packages. Do a directory listing, “ls src/MISC”, to see the list of commands.

Note

the MISC package contains styles that require using the -restrict flag, when compiling with Intel compilers.

Supporting info:

## 6.3.18. MLIAP package

Contents:

A general interface for machine-learning interatomic potentials, including PyTorch.

Install:

To use this package, also the SNAP package package needs to be installed. To make the mliappy model available, also the PYTHON package package needs to be installed, the version of Python must be 3.6 or later, and the cython software must be installed.

Author: Aidan Thompson (Sandia), Nicholas Lubbers (LANL).

Supporting info:

When built with the mliappy model this package includes an extension for coupling with Python models, including PyTorch. In this case, the Python interpreter linked to LAMMPS will need the cython and numpy modules installed. The provided examples build models with PyTorch, which would therefore also needs to be installed to run those examples.

## 6.3.19. MOLECULE package

Contents:

A large number of atom, pair, bond, angle, dihedral, improper styles that are used to model molecular systems with fixed covalent bonds. The pair styles include the Dreiding (hydrogen-bonding) and CHARMM force fields, and a TIP4P water model.

Supporting info:

## 6.3.20. MPIIO package

Contents:

Support for parallel output/input of dump and restart files via the MPIIO library. It adds dump styles with a “mpiio” in their style name. Restart files with an “.mpiio” suffix are also written and read in parallel.

Supporting info:

## 6.3.21. MSCG package

Contents:

A fix mscg command which can parameterize a Multi-Scale Coarse-Graining (MSCG) model using the open-source MS-CG library.

To use this package you must have the MS-CG library available on your system.

Authors: The fix was written by Lauren Abbott (Sandia). The MS-CG library was developed by Jacob Wagner in Greg Voth’s group at the University of Chicago.

Install:

This package has specific installation instructions on the Build extras page.

Supporting info:

• src/MSCG: filenames -> commands

• examples/mscg

## 6.3.22. OPT package

Contents:

A handful of pair styles which are optimized for improved CPU performance on single or multiple cores. These include EAM, LJ, CHARMM, and Morse potentials. The styles have an “opt” suffix in their style name. The OPT package page gives details of how to build and use this package. Its styles can be invoked at run time via the “-sf opt” or “-suffix opt” command-line switches. See also the KOKKOS, USER-INTEL, and USER-OMP packages, which have styles optimized for CPU performance.

Authors: James Fischer (High Performance Technologies), David Richie, and Vincent Natoli (Stone Ridge Technology).

Install:

This package has specific installation instructions on the Build extras page.

Supporting info:

## 6.3.23. PERI package

Contents:

An atom style, several pair styles which implement different Peridynamics materials models, and several computes which calculate diagnostics. Peridynamics is a particle-based meshless continuum model.

Authors: The original package was created by Mike Parks (Sandia). Additional Peridynamics models were added by Rezwanur Rahman and John Foster (UTSA).

Supporting info:

## 6.3.24. POEMS package

Contents:

A fix that wraps the Parallelizable Open source Efficient Multibody Software (POEMS) library, which is able to simulate the dynamics of articulated body systems. These are systems with multiple rigid bodies (collections of particles) whose motion is coupled by connections at hinge points.

Author: Rudra Mukherjee (JPL) while at RPI.

Install:

This package has specific installation instructions on the Build extras page.

Supporting info:

• src/POEMS: filenames -> commands

• fix poems

• examples/rigid

## 6.3.25. PYTHON package

Contents:

A python command which allow you to execute Python code from a LAMMPS input script. The code can be in a separate file or embedded in the input script itself. See the Python call page for an overview of using Python from LAMMPS in this manner and all the Python manual pages for other ways to use LAMMPS and Python together.

Note

Building with the PYTHON package assumes you have a Python shared library available on your system, which needs to be a Python 2 version, 2.6 or later. Python 3 is not yet supported. See the lib/python/README for more details.

Install:

This package has specific installation instructions on the Build extras page.

Supporting info:

• src/PYTHON: filenames -> commands

• Python call

• examples/python

## 6.3.26. QEQ package

Contents:

Several fixes for performing charge equilibration (QEq) via different algorithms. These can be used with pair styles that perform QEq as part of their formulation.

Supporting info:

• src/QEQ: filenames -> commands

• fix qeq/*

• examples/qeq

• examples/streitz

## 6.3.27. REPLICA package

Contents:

A collection of multi-replica methods which can be used when running multiple LAMMPS simulations (replicas). See the Howto replica page for an overview of how to run multi-replica simulations in LAMMPS. Methods in the package include nudged elastic band (NEB), parallel replica dynamics (PRD), temperature accelerated dynamics (TAD), parallel tempering, and a verlet/split algorithm for performing long-range Coulombics on one set of processors, and the remainder of the force field calculation on another set.

Supporting info:

## 6.3.28. RIGID package

Contents:

Fixes which enforce rigid constraints on collections of atoms or particles. This includes SHAKE and RATTLE, as well as various rigid-body integrators for a few large bodies or many small bodies. Also several computes which calculate properties of rigid bodies.

Supporting info:

## 6.3.29. SHOCK package

Contents:

Fixes for running impact simulations where a shock-wave passes through a material.

Supporting info:

## 6.3.30. SNAP package

Contents:

A pair style for the spectral neighbor analysis potential (SNAP). SNAP is methodology for deriving a highly accurate classical potential fit to a large archive of quantum mechanical (DFT) data. Also several computes which analyze attributes of the potential.

Author: Aidan Thompson (Sandia).

Supporting info:

## 6.3.31. SPIN package

Contents:

Model atomic magnetic spins classically, coupled to atoms moving in the usual manner via MD. Various pair, fix, and compute styles.

Author: Julien Tranchida (Sandia).

Supporting info:

## 6.3.32. SRD package

Contents:

A pair of fixes which implement the Stochastic Rotation Dynamics (SRD) method for coarse-graining of a solvent, typically around large colloidal particles.

Supporting info:

## 6.3.33. VORONOI package

Contents:

A compute command which calculates the Voronoi tesselation of a collection of atoms by wrapping the Voro++ library. This can be used to calculate the local volume or each atoms or its near neighbors.

To use this package you must have the Voro++ library available on your system.

Author: Daniel Schwen (INL) while at LANL. The open-source Voro++ library was written by Chris Rycroft (Harvard U) while at UC Berkeley and LBNL.

Install:

This package has specific installation instructions on the Build extras page.

Supporting info:

• src/VORONOI: filenames -> commands

• compute voronoi/atom

• examples/voronoi

Contents:

Authors: Norbert Podhorszki (ORNL) from the ADIOS developer team.

Install:

This package has specific installation instructions on the Build extras page.

Supporting info:

## 6.3.35. USER-ATC package

Contents:

ATC stands for atoms-to-continuum. This package implements a fix atc command to either couple molecular dynamics with continuum finite element equations or perform on-the-fly conversion of atomic information to continuum fields.

Authors: Reese Jones, Jeremy Templeton, Jon Zimmerman (Sandia).

Install:

This package has specific installation instructions on the Build extras page.

Supporting info:

## 6.3.36. USER-AWPMD package

Contents:

AWPMD stands for Antisymmetrized Wave Packet Molecular Dynamics. This package implements an atom, pair, and fix style which allows electrons to be treated as explicit particles in a classical molecular dynamics model.

Author: Ilya Valuev (JIHT, Russia).

Install:

This package has specific installation instructions on the Build extras page.

Supporting info:

• src/USER-AWPMD: filenames -> commands

• pair_style awpmd/cut

• examples/USER/awpmd

## 6.3.37. USER-BOCS package

Contents:

This package provides fix bocs, a modified version of fix npt which includes the pressure correction to the barostat as outlined in:

N. J. H. Dunn and W. G. Noid, “Bottom-up coarse-grained models that accurately describe the structure, pressure, and compressibility of molecular liquids,” J. Chem. Phys. 143, 243148 (2015).

Authors: Nicholas J. H. Dunn and Michael R. DeLyser (The Pennsylvania State University)

Supporting info:

The USER-BOCS user package for LAMMPS is part of the BOCS software package: https://github.com/noid-group/BOCS

See the following reference for information about the entire package:

Dunn, NJH; Lebold, KM; DeLyser, MR; Rudzinski, JF; Noid, WG. “BOCS: Bottom-Up Open-Source Coarse-Graining Software.” J. Phys. Chem. B. 122, 13, 3363-3377 (2018).

Example inputs are in the examples/USER/bocs folder.

## 6.3.38. USER-CGDNA package

Contents:

Several pair styles, bond styles, and integration fixes for coarse-grained modelling of single- and double-stranded DNA and RNA based on the oxDNA and oxRNA model of Doye, Louis and Ouldridge. The package includes Langevin-type rigid-body integrators with improved stability.

Author: Oliver Henrich (University of Strathclyde, Glasgow).

Supporting info:

## 6.3.39. USER-CGSDK package

Contents:

Several pair styles and an angle style which implement the coarse-grained SDK model of Shinoda, DeVane, and Klein which enables simulation of ionic liquids, electrolytes, lipids and charged amino acids.

Author: Axel Kohlmeyer (Temple U).

Supporting info:

## 6.3.40. USER-COLVARS package

Contents:

COLVARS stands for collective variables, which can be used to implement various enhanced sampling methods, including Adaptive Biasing Force, Metadynamics, Steered MD, Umbrella Sampling and Restraints. A fix colvars command is implemented which wraps a COLVARS library, which implements these methods. simulations.

Authors: The COLVARS library is written and maintained by Giacomo Fiorin (ICMS, Temple University, Philadelphia, PA, USA) and Jerome Henin (LISM, CNRS, Marseille, France), originally for the NAMD MD code, but with portability in mind. Axel Kohlmeyer (Temple U) provided the interface to LAMMPS.

Install:

This package has specific installation instructions on the Build extras page.

Supporting info:

## 6.3.41. USER-PLUMED package

Contents:

The fix plumed command allows you to use the PLUMED free energy plugin for molecular dynamics to analyze and bias your LAMMPS trajectory on the fly. The PLUMED library is called from within the LAMMPS input script by using the fix plumed command.

Authors: The PLUMED library is written and maintained by Massimilliano Bonomi, Giovanni Bussi, Carlo Camiloni and Gareth Tribello.

Install:

This package has specific installation instructions on the Build extras page.

Supporting info:

• fix plumed

• examples/USER/plumed

## 6.3.42. USER-DIFFRACTION package

Contents:

Two computes and a fix for calculating x-ray and electron diffraction intensities based on kinematic diffraction theory.

Author: Shawn Coleman while at the U Arkansas.

Supporting info:

## 6.3.43. USER-DPD package

Contents:

DPD stands for dissipative particle dynamics. This package implements coarse-grained DPD-based models for energetic, reactive molecular crystalline materials. It includes many pair styles specific to these systems, including for reactive DPD, where each particle has internal state for multiple species and a coupled set of chemical reaction ODEs are integrated each timestep. Highly accurate time integrators for isothermal, isoenergetic, isobaric and isenthalpic conditions are included. These enable long timesteps via the Shardlow splitting algorithm.

Authors: Jim Larentzos (ARL), Tim Mattox (Engility Corp), and John Brennan (ARL).

Supporting info:

## 6.3.44. USER-DRUDE package

Contents:

Fixes, pair styles, and a compute to simulate thermalized Drude oscillators as a model of polarization. See the Howto drude and Howto drude2 pages for an overview of how to use the package. There are auxiliary tools for using this package in tools/drude.

Authors: Alain Dequidt (U Blaise Pascal Clermont-Ferrand), Julien Devemy (CNRS), and Agilio Padua (U Blaise Pascal).

Supporting info:

## 6.3.45. USER-EFF package

Contents:

EFF stands for electron force field which allows a classical MD code to model electrons as particles of variable radius. This package contains atom, pair, fix and compute styles which implement the eFF as described in A. Jaramillo-Botero, J. Su, Q. An, and W.A. Goddard III, JCC, 2010. The eFF potential was first introduced by Su and Goddard, in 2007. There are auxiliary tools for using this package in tools/eff; see its README file.

Author: Andres Jaramillo-Botero (CalTech).

Supporting info:

## 6.3.46. USER-FEP package

Contents:

FEP stands for free energy perturbation. This package provides methods for performing FEP simulations by using a fix adapt/fep command with soft-core pair potentials, which have a “soft” in their style name. There are auxiliary tools for using this package in tools/fep; see its README file.

Author: Agilio Padua (Universite Blaise Pascal Clermont-Ferrand)

Supporting info:

## 6.3.47. USER-H5MD package

Contents:

H5MD stands for HDF5 for MD. HDF5 is a portable, binary, self-describing file format, used by many scientific simulations. H5MD is a format for molecular simulations, built on top of HDF5. This package implements a dump h5md command to output LAMMPS snapshots in this format.

To use this package you must have the HDF5 library available on your system.

Author: Pierre de Buyl (KU Leuven) created both the package and the H5MD format.

Install:

This package has specific installation instructions on the Build extras page.

Supporting info:

• src/USER-H5MD: filenames -> commands

• dump h5md

## 6.3.48. USER-INTEL package

Contents:

Dozens of pair, fix, bond, angle, dihedral, improper, and kspace styles which are optimized for Intel CPUs and KNLs (Knights Landing). All of them have an “intel” in their style name. The USER-INTEL package page gives details of what hardware and compilers are required on your system, and how to build and use this package. Its styles can be invoked at run time via the “-sf intel” or “-suffix intel” command-line switches. Also see the KOKKOS, OPT, and USER-OMP packages, which have styles optimized for CPUs and KNLs.

You need to have an Intel compiler, version 14 or higher to take full advantage of this package. While compilation with GNU compilers is supported, performance will be sub-optimal.

Note

the USER-INTEL package contains styles that require using the -restrict flag, when compiling with Intel compilers.

Author: Mike Brown (Intel).

Install:

This package has specific installation instructions on the Build extras page.

Supporting info:

## 6.3.49. USER-LB package

Contents:

Fixes which implement a background Lattice-Boltzmann (LB) fluid, which can be used to model MD particles influenced by hydrodynamic forces.

Authors: Frances Mackay and Colin Denniston (University of Western Ontario).

Supporting info:

## 6.3.50. USER-MGPT package

Contents:

A pair style which provides a fast implementation of the quantum-based MGPT multi-ion potentials. The MGPT or model GPT method derives from first-principles DFT-based generalized pseudopotential theory (GPT) through a series of systematic approximations valid for mid-period transition metals with nearly half-filled d bands. The MGPT method was originally developed by John Moriarty at LLNL. The pair style in this package calculates forces and energies using an optimized matrix-MGPT algorithm due to Tomas Oppelstrup at LLNL.

Authors: Tomas Oppelstrup and John Moriarty (LLNL).

Supporting info:

• src/USER-MGPT: filenames -> commands

• pair_style mgpt

• examples/USER/mgpt

## 6.3.51. USER-MISC package

Contents:

A potpourri of (mostly) unrelated features contributed to LAMMPS by users. Each feature is a single fix, compute, pair, bond, angle, dihedral, improper, or command style.

Authors: The author for each style in the package is listed in the src/USER-MISC/README file.

Supporting info:

• src/USER-MISC: filenames -> commands

• one page per individual command listed in src/USER-MISC/README

• examples/USER/misc

## 6.3.52. USER-MANIFOLD package

Contents:

Several fixes and a “manifold” class which enable simulations of particles constrained to a manifold (a 2D surface within the 3D simulation box). This is done by applying the RATTLE constraint algorithm to formulate single-particle constraint functions g(xi,yi,zi) = 0 and their derivative (i.e. the normal of the manifold) n = grad(g).

Author: Stefan Paquay (until 2017: Eindhoven University of Technology (TU/e), The Netherlands; since 2017: Brandeis University, Waltham, MA, USA)

Supporting info:

## 6.3.53. USER-MEAMC package

Contents:

A pair style for the modified embedded atom (MEAM) potential translated from the Fortran version in the (obsolete) MEAM package to plain C++. The USER-MEAMC fully replaces the MEAM package, which has been removed from LAMMPS after the 12 December 2018 version.

Author: Sebastian Huetter, (Otto-von-Guericke University Magdeburg) based on the Fortran version of Greg Wagner (Northwestern U) while at Sandia.

Supporting info:

• src/USER-MEAMC: filenames -> commands

• pair_style meam/c

• examples/meamc

## 6.3.54. USER-MESODPD package

Contents:

Several extensions of the dissipative particle dynamics (DPD) method. Specifically, energy-conserving DPD (eDPD) that can model non-isothermal processes, many-body DPD (mDPD) for simulating vapor-liquid coexistence, and transport DPD (tDPD) for modeling advection-diffusion-reaction systems. The equations of motion of these DPD extensions are integrated through a modified velocity-Verlet (MVV) algorithm.

Author: Zhen Li (Division of Applied Mathematics, Brown University)

Supporting info:

## 6.3.55. USER-MESONT package

Contents:

USER-MESONT is a LAMMPS package for simulation of nanomechanics of nanotubes (NTs). The model is based on a coarse-grained representation of NTs as “flexible cylinders” consisting of a variable number of segments. Internal interactions within a NT and the van der Waals interaction between the tubes are described by a mesoscopic force field designed and parameterized based on the results of atomic-level molecular dynamics simulations. The description of the force field is provided in the papers listed below. This package contains two independent implementations of this model: pair_style mesocnt is a (minimal) C++ implementation, and pair_style mesont/tpm is a more general and feature rich implementation based on a Fortran library in the lib/mesont folder.

The potential files for these pair styles are very large and thus are not included in the regular downloaded packages of LAMMPS or the git repositories. Instead, they will be automatically downloaded from a web server when the package is installed for the first time.

Authors of the *mesont* styles:

Maxim V. Shugaev (University of Virginia), Alexey N. Volkov (University of Alabama), Leonid V. Zhigilei (University of Virginia)

Author of the *mesocnt* pair style: Philipp Kloza (U Cambridge)

Supporting info:

## 6.3.56. USER-MOFFF package

Contents:

Pair, angle and improper styles needed to employ the MOF-FF force field by Schmid and coworkers with LAMMPS. MOF-FF is a first principles derived force field with the primary aim to simulate MOFs and related porous framework materials, using spherical Gaussian charges. It is described in S. Bureekaew et al., Phys. Stat. Sol. B 2013, 250, 1128-1141. For the usage of MOF-FF see the example in the example directory as well as the MOF+ website.

Author: Hendrik Heenen (Technical U of Munich), Rochus Schmid (Ruhr-University Bochum).

Supporting info:

## 6.3.57. USER-MOLFILE package

Contents:

A dump molfile command which uses molfile plugins that are bundled with the VMD molecular visualization and analysis program, to enable LAMMPS to dump snapshots in formats compatible with various molecular simulation tools.

To use this package you must have the desired VMD plugins available on your system.

Note that this package only provides the interface code, not the plugins themselves, which will be accessed when requesting a specific plugin via the dump molfile command. Plugins can be obtained from a VMD installation which has to match the platform that you are using to compile LAMMPS for. By adding plugins to VMD, support for new file formats can be added to LAMMPS (or VMD or other programs that use them) without having to re-compile the application itself. More information about the VMD molfile plugins can be found at http://www.ks.uiuc.edu/Research/vmd/plugins/molfile.

Author: Axel Kohlmeyer (Temple U).

Install:

This package has specific installation instructions on the Build extras page.

Supporting info:

• src/USER-MOLFILE: filenames -> commands

• dump molfile

## 6.3.58. USER-NETCDF package

Contents:

Dump styles for writing NetCDF formatted dump files. NetCDF is a portable, binary, self-describing file format developed on top of HDF5. The file contents follow the AMBER NetCDF trajectory conventions (http://ambermd.org/netcdf/nctraj.xhtml), but include extensions.

To use this package you must have the NetCDF library available on your system.

Note that NetCDF files can be directly visualized with the following tools:

• Ovito (Ovito supports the AMBER convention and the extensions mentioned above)

• VMD

Author: Lars Pastewka (Karlsruhe Institute of Technology).

Install:

This package has specific installation instructions on the Build extras page.

Supporting info:

• src/USER-NETCDF: filenames -> commands

• dump netcdf

## 6.3.59. USER-OMP package

Contents:

Hundreds of pair, fix, compute, bond, angle, dihedral, improper, and kspace styles which are altered to enable threading on many-core CPUs via OpenMP directives. All of them have an “omp” in their style name. The USER-OMP package page gives details of what hardware and compilers are required on your system, and how to build and use this package. Its styles can be invoked at run time via the “-sf omp” or “-suffix omp” command-line switches. Also see the KOKKOS, OPT, and USER-INTEL packages, which have styles optimized for CPUs.

Author: Axel Kohlmeyer (Temple U).

Note

To enable multi-threading support the compile flag “-fopenmp” and the link flag “-fopenmp” (for GNU compilers, you have to look up the equivalent flags for other compilers) must be used to build LAMMPS. When using Intel compilers, also the “-restrict” flag is required. The USER-OMP package can be compiled without enabling OpenMP; then all code will be compiled as serial and the only improvement over the regular styles are some data access optimization. These flags should be added to the CCFLAGS and LINKFLAGS lines of your Makefile.machine. See src/MAKE/OPTIONS/Makefile.omp for an example.

Once you have an appropriate Makefile.machine, you can install/un-install the package and build LAMMPS in the usual manner:

Install:

This package has specific installation instructions on the Build extras page.

Supporting info:

## 6.3.60. USER-PHONON package

Contents:

A fix phonon command that calculates dynamical matrices, which can then be used to compute phonon dispersion relations, directly from molecular dynamics simulations. And a dynamical_matrix as well as a third_order command to compute the dynamical matrix and third order tensor from finite differences.

Authors: Ling-Ti Kong (Shanghai Jiao Tong University) for “fix phonon” and Charlie Sievers (UC Davis) for “dynamical_matrix” and “third_order”

Supporting info:

## 6.3.61. USER-PTM package

Contents:

A compute ptm/atom command that calculates local structure characterization using the Polyhedral Template Matching methodology.

Author: Peter Mahler Larsen (MIT).

Supporting info:

• src/USER-PTM: filenames not starting with ptm_ -> commands

• src/USER-PTM: filenames starting with ptm_ -> supporting code

• compute ptm/atom

## 6.3.62. USER-QMMM package

Contents:

A fix qmmm command which allows LAMMPS to be used as the MM code in a QM/MM simulation. This is currently only available in combination with the Quantum ESPRESSO package.

To use this package you must have Quantum ESPRESSO (QE) available on your system and include its coupling library in the compilation and then compile LAMMPS as a library. For QM/MM calculations you then build a custom binary with MPI support, that sets up 3 partitions with MPI sub-communicators (for inter- and intra-partition communication) and then calls the corresponding library interfaces on each partition (2x LAMMPS and 1x QE).

The current implementation supports an ONIOM style mechanical coupling and a multi-pole based electrostatic coupling to the Quantum ESPRESSO plane wave DFT package. The QM/MM interface has been written in a manner that coupling to other QM codes should be possible without changes to LAMMPS itself.

Authors: Axel Kohlmeyer (Temple U). Mariella Ippolito and Carlo Cavazzoni (CINECA, Italy)

Install:

This package has specific installation instructions on the Build extras page.

Supporting info:

• src/USER-QMMM: filenames -> commands

• fix phonon

## 6.3.63. USER-QTB package

Contents:

Two fixes which provide a self-consistent quantum treatment of vibrational modes in a classical molecular dynamics simulation. By coupling the MD simulation to a colored thermostat, it introduces zero point energy into the system, altering the energy power spectrum and the heat capacity to account for their quantum nature. This is useful when modeling systems at temperatures lower than their classical limits or when temperatures ramp across the classical limits in a simulation.

Author: Yuan Shen (Stanford U).

Supporting info:

• src/USER-QTB: filenames -> commands

• fix qtb

• fix qbmsst

• examples/USER/qtb

## 6.3.64. USER-QUIP package

Contents:

A pair_style quip command which wraps the QUIP libAtoms library, which includes a variety of interatomic potentials, including Gaussian Approximation Potential (GAP) models developed by the Cambridge University group.

To use this package you must have the QUIP libAtoms library available on your system.

Author: Albert Bartok (Cambridge University)

Install:

This package has specific installation instructions on the Build extras page.

Supporting info:

• src/USER-QUIP: filenames -> commands

• pair_style quip

• examples/USER/quip

## 6.3.65. USER-REACTION package

Contents:

This package allows for complex bond topology changes (reactions) during a running MD simulation, when using classical force fields. Topology changes are defined in pre- and post-reaction molecule templates and can include creation and deletion of bonds, angles, dihedrals, impropers, atom types, bond types, angle types, dihedral types, improper types, and/or atomic charges. Other options currently available include reaction constraints (e.g. angle and Arrhenius constraints), deletion of reaction byproducts or other small molecules, and chiral-sensitive reactions.

Author: Jacob R. Gissinger (CU Boulder) while at NASA Langley Research Center.

Supporting info:

## 6.3.66. USER-REAXC package

Contents:

A pair style which implements the ReaxFF potential in C/C++. ReaxFF is a universal reactive force field. See the src/USER-REAXC/README file for more info on differences between the two packages. Also two fixes for monitoring molecules as bonds are created and destroyed.

Author: Hasan Metin Aktulga (MSU) while at Purdue University.

Supporting info:

## 6.3.67. USER-SCAFACOS package

Contents:

A KSpace style which wraps the ScaFaCoS Coulomb solver library to compute long-range Coulombic interactions.

To use this package you must have the ScaFaCoS library available on your system.

Author: Rene Halver (JSC) wrote the scafacos LAMMPS command.

ScaFaCoS itself was developed by a consortium of German research facilities with a BMBF (German Ministry of Science and Education) funded project in 2009-2012. Participants of the consortium were the Universities of Bonn, Chemnitz, Stuttgart, and Wuppertal as well as the Forschungszentrum Juelich.

Install:

This package has specific installation instructions on the Build extras page.

Supporting info:

## 6.3.68. USER-SDPD package

Contents:

A pair style for smoothed dissipative particle dynamics (SDPD), which is an extension of smoothed particle hydrodynamics (SPH) to mesoscale where thermal fluctuations are important (see the USER-SPH package). Also two fixes for moving and rigid body integration of SPH/SDPD particles (particles of atom_style meso).

Author: Morteza Jalalvand (Institute for Advanced Studies in Basic Sciences, Iran).

Supporting info:

## 6.3.69. USER-SMD package

Contents:

An atom style, fixes, computes, and several pair styles which implements smoothed Mach dynamics (SMD) for solids, which is a model related to smoothed particle hydrodynamics (SPH) for liquids (see the USER-SPH package).

This package solves solids mechanics problems via a state of the art stabilized meshless method with hourglass control. It can specify hydrostatic interactions independently from material strength models, i.e. pressure and deviatoric stresses are separated. It provides many material models (Johnson-Cook, plasticity with hardening, Mie-Grueneisen, Polynomial EOS) and allows new material models to be added. It implements rigid boundary conditions (walls) which can be specified as surface geometries from *.STL files.

Author: Georg Ganzenmuller (Fraunhofer-Institute for High-Speed Dynamics, Ernst Mach Institute, Germany).

Install:

This package has specific installation instructions on the Build extras page.

Supporting info:

## 6.3.70. USER-SMTBQ package

Contents:

A pair style which implements a Second Moment Tight Binding model with QEq charge equilibration (SMTBQ) potential for the description of ionocovalent bonds in oxides.

Authors: Nicolas Salles, Emile Maras, Olivier Politano, and Robert Tetot (LAAS-CNRS, France).

Supporting info:

• src/USER-SMTBQ: filenames -> commands

• pair_style smtbq

• examples/USER/smtbq

## 6.3.71. USER-SPH package

Contents:

An atom style, fixes, computes, and several pair styles which implements smoothed particle hydrodynamics (SPH) for liquids. See the related USER-SMD package package for smooth Mach dynamics (SMD) for solids.

This package contains ideal gas, Lennard-Jones equation of states, Tait, and full support for complete (i.e. internal-energy dependent) equations of state. It allows for plain or Monaghans XSPH integration of the equations of motion. It has options for density continuity or density summation to propagate the density field. It has set command options to set the internal energy and density of particles from the input script and allows the same quantities to be output with thermodynamic output or to dump files via the compute property/atom command.

Author: Georg Ganzenmuller (Fraunhofer-Institute for High-Speed Dynamics, Ernst Mach Institute, Germany).

Supporting info:

## 6.3.72. USER-TALLY package

Contents:

Several compute styles that can be called when pairwise interactions are calculated to tally information (forces, heat flux, energy, stress, etc) about individual interactions.

Author: Axel Kohlmeyer (Temple U).

Supporting info:

• src/USER-TALLY: filenames -> commands

• compute */tally

• examples/USER/tally

## 6.3.73. USER-UEF package

Contents:

A fix style for the integration of the equations of motion under extensional flow with proper boundary conditions, as well as several supporting compute styles and an output option.

Author: David Nicholson (MIT).

Supporting info:

## 6.3.74. USER-VTK package

Contents:

A dump vtk command which outputs snapshot info in the VTK format, enabling visualization by Paraview or other visualization packages.

To use this package you must have VTK library available on your system.

Authors: Richard Berger (JKU) and Daniel Queteschiner (DCS Computing).

Install:

This package has specific installation instructions on the Build extras page.

Supporting info:

• src/USER-VTK: filenames -> commands

• dump vtk

## 6.3.75. USER-YAFF package

Contents:

Some potentials that are also implemented in the Yet Another Force Field (YAFF) code. The expressions and their use are discussed in the following papers

• Vanduyfhuys et al., J. Comput. Chem., 36 (13), 1015-1027 (2015) link

• Vanduyfhuys et al., J. Comput. Chem., 39 (16), 999-1011 (2018) link

which discuss the QuickFF methodology.

Author: Steven Vandenbrande.

Supporting info:


text:
## 留言板

### 在线投审稿平台

[摘要](12) [HTML全文](7)

[摘要](27) [HTML全文](20)

[摘要](26) [HTML全文](16)

[摘要](626) [HTML全文](569)

[摘要](30) [HTML全文](37)

[摘要](30) [HTML全文](25)
Turbocharger and gearbox were widely used in the precision machinery manufacturing industry. The dimensional accuracy of Turbo parts and stud standard parts was an important guarantee for the assembly accuracy of Turbo parts and gearbox, among which coaxiality was a key parameter for the dimensional accuracy of Turbo parts and stud standard parts. According to the demands of coaxiality measurement for turbine components and stud standard parts, a set of checking fixture was developed, and a software based on LabVIEW was built for the measurement. The coaxiality of stud standard M12 was measured by experiment and the uncertainty of measurement was evaluated. The experimental results show that the coaxiality error obtained from the four measurements is 6.3–6.5 μm, and the extended uncertainty reaches 2.6 μm. The results show that the developed coaxiality measurement system is suitable for the high precision measurement of the coaxiality of turbine parts and stud standard parts.

[摘要](49) [HTML全文](46)

[摘要](24) [HTML全文](30)

[摘要](2795) [HTML全文](727)

[摘要](27) [HTML全文](21)

[摘要](18) [HTML全文](23)

[摘要](16) [HTML全文](16)

[摘要](17) [HTML全文](17)

[摘要](20) [HTML全文](17)

[摘要](17) [HTML全文](21)

[摘要](7) [HTML全文](28)

[摘要](1157) [HTML全文](465)

[摘要](350) [HTML全文](263)

[摘要](33) [HTML全文](49)

[摘要](953) [HTML全文](412)

[摘要](443) [HTML全文](303)

[摘要](15) [HTML全文](19)

[摘要](969) [HTML全文](429)

[摘要](1107) [HTML全文](558)

[摘要](815) [HTML全文](707)

[摘要](577) [HTML全文](536)
Phase retrieval is to recover the original phase information by using the intensity information obtained from observation. Transport of intensity equation (TIE), as a traditional non-interference phase retrieval technique, can compute the losing phase information from only a minimum of two intensity measurements at closely spaced planes by solving the equation. This method usually requires the acquisition of intensity images by moving the object to be tested or CCD, which inevitably results in mechanical errors. A new phase retrieval method called chromatic dispersion-hybrid phase retrieval(CD-HPR) is proposed. The object is imaged at the same position by setting different wavelengths of light after passing through the single-lens system, in-focus and defocus intensity images are obtained without mechanical movement, and the initial phase information of an object is calculated from the phase retrieval technique based on TIE by combining the relationship between the defocus amount and the wavelength. Next angular spectrum iteration is used to improve the initial phase information. In this simulation, the RMSE between the phase recovered by this method and the original phase is 0.1076. At the same time, the phase of the lens array was restored by experiment. The error between the experimental result and the real parameter is 3.4%, which proves the correctness and effectiveness of the proposed method. This method extends the limitation of the traditional method that requires the light source to be monochromatic and improves the calculation accuracy.

[摘要](2795) [HTML全文](760)

[摘要](4688) [HTML全文](1458)

[摘要](608) [HTML全文](1760)

[摘要](15) [HTML全文](31)

[摘要](2784) [HTML全文](730)
Picosecond infrared multi-wavelength Raman generator which adopted multi-pulse pumped KGW scheme was reported. A mathematical model was developed to investigate the effect of multi-pulse burst pumping regime on the vibrational mode of the Raman active molecule. The simulated results show that the response oscillation of the Raman active molecule to the multi-pulse burst pumping regime is more active and durable compared with the traditional single pulse pumping regime, which promotes the weakened molecule oscillation to return the natural frequency multiple times. The enhancement effect is beneficial to improve the Raman gain, reduce the Raman threshold, and increase the Raman conversion efficiency. During the experiment of picosecond multi-pulse pump KGW Raman crystal, the three-pulse burst pumping regime improves the Raman gain more than two times, reduces the threshold of stimulated Raman scattering more than 50%, and increases the Raman conversion efficiency more than 16% for 768 cm–1 Raman mode and 22% for 901 cm–1 Raman mode. Based on the three-pulse burst pumping regime, a 1 kHz mJ-level picosecond infrared multi-wavelength Raman generator was designed, which achieved the pulse energy of 1.39 mJ, the maximum Raman conversion efficiency of 29.6% for the 768 cm–1 vibrational mode of KGW, and the pulse energy of 1.38 mJ, the maximum Raman conversion efficiency of 25.7% for the 901 cm–1 vibrational mode of KGW. In addition, the Raman laser can radiate up to eight infrared Raman lines simultaneously for both the two vibrational modes of the KGW crystal, which covers the range of 800–1 700 nm.

[摘要](3859) [HTML全文](2019)

[摘要](5014) [HTML全文](2175)

[摘要](13) [HTML全文](31)
In view of the thermal damage law and mechanism of monocrystalline silicon for millisecond pulsed laser, the temperature of monocrystalline silicon irradiated by millisecond pulsed laser is measured by high precision point temperature meter and spectral inversion system. Then the temperature evolution process is analyzed. Also, the temperature state during the whole process of thermal damage of monocrystalline silicon irradiated by millisecond pulsed laser and the corresponding damage structure are studied. The results of this study show that the peak temperature of laser-induced monocrystalline silicon increases with the increase of energy density when the pulse width is fixed, When the pulse width is between 1.5 ms-3.0 ms, The temperature decreases with the increase of pulse width. Temperature rise curve shows inflection point when it is close to the melting point (1687 K), the reflection coefficient is from 0.33 to 0.72. During the gasification and solidification stages, it also shows the gasification and the solidification plateau periods. Thermal cleavage damage of monocrystalline silicon precedes thermal erosion damage. Stress damage dominates under low energy density laser irradiation, while thermal damage dominates under high energy density laser irradiation. The damage depth is proportional to the energy density and increases rapidly with the increase of the number of pulses.

[摘要](6184) [HTML全文](1381)

[摘要](398) [HTML全文](339)

[摘要](497) [HTML全文](410)

[摘要](898) [HTML全文](848)

[摘要](1702) [HTML全文](933)

[摘要](410) [HTML全文](325)

[摘要](916) [HTML全文](980)

[摘要](910) [HTML全文](809)

[摘要](610) [HTML全文](488)

[摘要](864) [HTML全文](651)

[摘要](4304) [HTML全文](1155)

2020, 49(7): 20201018.   doi: 10.3788/IRLA20201018
[摘要](2599) [HTML全文](3025) [PDF 1109KB](16)

2020, 49(7): 20201019.   doi: 10.3788/IRLA20201019
[摘要](10) [HTML全文](7) [PDF 973KB](4)

2020, 49(7): 20201020.   doi: 10.3788/IRLA20201020
[摘要](13) [HTML全文](7) [PDF 1939KB](2)

2020, 49(7): 20201021.   doi: 10.3788/IRLA20201021
[摘要](745) [HTML全文](441) [PDF 1305KB](15)

2020, 49(7): 20201022.   doi: 10.3788/IRLA20201022
[摘要](13) [HTML全文](6) [PDF 1667KB](5)

2020, 49(7): 20201023.   doi: 10.3788/IRLA20201023
[摘要](632) [HTML全文](540) [PDF 2606KB](9)

2020, 49(7): 20201024.   doi: 10.3788/IRLA20201024
[摘要](9) [HTML全文](8) [PDF 2500KB](3)

2020, 49(7): 20190495.   doi: 10.3788/IRLA20190495
[摘要](13) [HTML全文](6) [PDF 1539KB](1)

2020, 49(7): 20190520.   doi: 10.3788/IRLA20190520
[摘要](531) [HTML全文](437) [PDF 1463KB](18)

2020, 49(7): 20190507.   doi: 10.3788/IRLA20190507
[摘要](911) [HTML全文](655) [PDF 1504KB](5)

2020, 49(7): 20190548.   doi: 10.3788/IRLA20190548
[摘要](64) [HTML全文](31) [PDF 1173KB](10)

2020, 49(7): 20190456.   doi: 10.3788/IRLA20190456
[摘要](14) [HTML全文](10) [PDF 1518KB](4)

2020, 49(7): 20190453.   doi: 10.3788/IRLA20190453
[摘要](10) [HTML全文](10) [PDF 1254KB](4)

2020, 49(7): 20200112.   doi: 10.3788/IRLA20200112
[摘要](331) [HTML全文](235) [PDF 1084KB](10)

2020, 49(7): 20190461.   doi: 10.3788/IRLA20190461
[摘要](39) [HTML全文](21) [PDF 1933KB](7)

2020, 49(7): 20190512.   doi: 10.3788/IRLA20190512
[摘要](11) [HTML全文](7) [PDF 1252KB](3)

2020, 49(7): 20190492.   doi: 10.3788/IRLA20190492
[摘要](1001) [HTML全文](1177) [PDF 1486KB](8)

2020, 49(7): 20190518.   doi: 10.3788/IRLA20190518
[摘要](2525) [HTML全文](1359) [PDF 1613KB](9)
Non-contact detection of internal micro-defects of the micro-electro-mechanical system and minimechanism required a high accuracy and strong penetration test. The current detection methods were difficult to achieve high precision while also having strong penetrating power. In response to the above problems, a composite system of ultrasonic detection and digital holography imaging was designed. Ultrasonic detection technology had strong penetrating power, and digital holographic imaging had higher resolution. The composite system designed included a near-field ultrasonic subsystem, an digital holographic subsystem and a synchronous control subsystem. In the near-field ultrasonic subsystem, the generated near-field ultrasonic wavefields passed through the internal defect of the sample and formed the surface ultrasonic wavefield on the surface of the sample. The digital holographic subsystem mainly measured and analyzed the transient morphology of the surface ultrasonic wavefields, and the internal defect information contained in the surface ultrasonic wavefield could be analyzed. The experimental results show that the system can measure the transient 3D topography of the ultrasonic wavefield by analyzing the ultrasonic wavefield, and can effectively detect internal defects of 50 μm.

2020, 49(7): 20190522.   doi: 10.3788/IRLA20190522
[摘要](603) [HTML全文](470) [PDF 16690KB](17)

2020, 49(7): 20190524.   doi: 10.3788/IRLA20190524
[摘要](2984) [HTML全文](1553) [PDF 1579KB](17)

2020, 49(7): 20200012.   doi: 10.3788/IRLA20200012
[摘要](23) [HTML全文](15) [PDF 1454KB](6)

2020, 49(7): 20190544.   doi: 10.3788/IRLA20190544
[摘要](8) [HTML全文](7) [PDF 4122KB](0)

2020, 49(7): 20190433.   doi: 10.3788/IRLA20190433
[摘要](41) [HTML全文](40) [PDF 1229KB](8)

2020, 49(7): 20200212.   doi: 10.3788/IRLA20200212
[摘要](23) [HTML全文](11) [PDF 1814KB](5)

2020, 49(7): 20190567.   doi: 10.3788/IRLA20190567
[摘要](10) [HTML全文](3) [PDF 1689KB](4)

2020, 49(7): 20190519.   doi: 10.3788/IRLA20190519
[摘要](2731) [HTML全文](1169) [PDF 1320KB](27)
The zoom fish-eye lens had the characteristics of much larger field-of-view angle, much larger relative aperture, and much larger anti-far ratio. In the work described in this paper, the initial structure of a fish-eye lens with fixed focal length was firstly designed using the theory of a plane symmetric optical system. And then the initial structure components of the fish-eye lens were divided into two groups, the former-group and the rear-group, and then the entire zoom fish-eye lens system was optimized using Gaussian optical theory. Finally, a zoom fish-eye lens system with good imaging quality was obtained. This fish-eye lens system had a field-of-view angle of 180° with an 8 mm short focal length and a field-of-view angle of 90° with a 16 mm long focal length. Its relative aperture was 1/3.5. The design results show that the modulation transfer function of this zoom lens system at different focal lengths is no less than 0.45 when the spatial frequency is 50 lp/mm. This zoom fish-eye photographic objective lens had higher imaging quality than other zoom fish-eye lenses.

2020, 49(7): 20200008.   doi: 10.3788/IRLA20200008
[摘要](7) [HTML全文](5) [PDF 1579KB](0)

2020, 49(7): 20190469.   doi: 10.3788/IRLA20190469
[摘要](49) [HTML全文](36) [PDF 2281KB](8)

2020, 49(7): 20190490.   doi: 10.3788/IRLA20190490
[摘要](33) [HTML全文](30) [PDF 1345KB](3)

2020, 49(7): 20190479.   doi: 10.3788/IRLA20190479
[摘要](9) [HTML全文](4) [PDF 1848KB](3)

2020, 49(7): 20190452.   doi: 10.3788/IRLA20190452
[摘要](7) [HTML全文](3) [PDF 1262KB](0)
Oceanic turbulence is an important factor to restrict the application of underwater optical communication. Phase screen method is a simple and effective way to simulate the propagation process of complex beams through turbulence. The constraints of parameter setting for phase screen simulated oceanic turbulence based on the sampling principle and turbulence effects were firstly discussed here. Furthermore, the theoretical expressions of propagation characteristics of Gaussian beam through oceanic turbulence from weak to strong fluctuation regime were derived. Our goal in this research was to testify the validity of phase screen method in oceanic turbulence by comparison of major statistical characteristics of Gaussian beam propagating in oceanic turbulence simulated by phase screen method and the theoretical expressions derived. Results show good match between simulation results and theory formulas for long exposure beam radius and centroid displacement under different turbulence conditions, as well as the scintillation index under weak fluctuation regime. However, results show significant mismatch between numerically estimated and theoretically predicted values for the on-axis scintillation index in strong fluctuation regime.

2020, 49(7): 20200154.   doi: 10.3788/IRLA20200154
[摘要](17) [HTML全文](9) [PDF 2583KB](2)

2020, 49(7): 20190505.   doi: 10.3788/IRLA20190505
[摘要](2723) [HTML全文](1591) [PDF 7038KB](19)

2020, 49(7): 20200170.   doi: 10.3788/IRLA20200170
[摘要](15) [HTML全文](8) [PDF 1678KB](2)

format: plain


text:
JAX PRNG Design#

We want a PRNG design that

1. is expressive in that it is convenient to use and it doesn’t constrain the user’s ability to write numerical programs with exactly the behavior that they want,

2. enables reproducible program execution in a backend-independent way,

3. has semantics that are invariant to @jit compilation boundaries and device backends,

4. enables vectorization for generating array values using SIMD hardware,

5. is parallelizable in that it doesn’t add sequencing constraints between random function calls that otherwise would have no data dependence,

6. scales to multi-replica, multi-core, and distributed computation,

7. fits with JAX and XLA semantics and design philosophies (which are ultimately motivated by other practical concerns).

As a corollary of these we believe the design should be functional. Another corollary is that, at least given current hardware constraints, we’re going to do the PRNG in software.

TLDR JAX PRNG = Threefry counter PRNG + a functional array-oriented splitting model

Three programming models and toy example programs#

Here’s a toy example of a stateful global PRNG like the one often used in Numpy programs:

def foo(): return bar() + baz()
def bar(): return rand(RNG, (3, 4))
def baz(): return rand(RNG, (3, 4))
def main():
global RNG
RNG = RandomState(0)
return foo()

To achieve reproducibility here we would need to control the order of evaluation for bar() and baz() even though there is no explicit data dependence from one to the other. This kind of sequencing requirement stemming from reproducibility (#2) violates parallelizability (#5) and doesn’t fit with JAX or XLA’s functional semantics (#6) in which subexpressions can be evaluated in any order. Even if we didn’t require reproducibility and thus allowed any evaluation order, parallelization across calls (#5) would still be made difficult by the need to update shared state. Moreover, because the same PRNG state would need to be accessed and maintained in both Python and any compiled code, this model would likely lead to engineering challenges to achieve compilation invariance (#3) and scaling to multiple replicas (#6). Finally, the expressiveness is limited (#1) because there is no way for foo() to call bar() or baz() without affecting its own (implicit) PRNG state.

Whether the model supports vectorization (#4) depends on some additional details. In Numpy, PRNG vectorization is limited by a sequential-equivalent guarantee:

In [1]: rng = np.random.RandomState(0)

In [2]: rng.randn(2)
Out[2]: array([1.76405235, 0.40015721])

In [3]: rng = np.random.RandomState(0)

In [4]: np.stack([rng.randn() for _ in range(2)])
Out[4]: array([1.76405235, 0.40015721])

To allow for vectorization (#4) within primitive PRNG function calls that generate arrays (e.g. to rand() with a shape argument), we drop this sequential-equivalent guarantee. This vectorization can be supported by any of the three programming models discussed in this section, though it motivates the implementation in terms of a counter-based PRNG as described in the next section.

The stateful PRNG user programming model is not promising. Here’s an example of a functional model but lacking a key ingredient that we call splitting:

def foo(rng_1):
y, rng_2 = baz(rng_1)
z, rng_3 = bar(rng_2)
return y + z, rng_3

def bar(x, rng):
val, new_rng = rand(rng, (3, 4))
return val, new_rng

def baz(x, rng):
val, new_rng = rand(rng, (3, 4))
return val, new_rng

def main():
foo(RandomState(0))

This model explicitly threads the PRNG state through all functions (primitive or non-primitive) that generate random values: that is, every random function must both accept and return the state. Now there is an explicit data dependence between the call to baz() and the call to bar() in foo(), so the data flow (and hence sequencing) is made explicit and fits with JAX’s existing semantics (#7), unlike in the previous model. This explicit threading can also make the semantics invariant to compilation boundaries (#3).

Explicit threading is inconvenient for the programmer. But worse, it hasn’t actually improved the expressiveness (#1): there is still no way for foo() to call into bar() or baz() while maintaining its own PRNG state. Without knowledge of their callers or the subroutines they call, functions must defensively pass in and return the rng state everywhere. Moreover, it also doesn’t improve the prospects for parallelization (#5) or scaling to multiple replicas (#6) because everything is still sequential, even if the sequencing is made explicit in the functional programming sense.

In short, making the code functional by explicitly threading state isn’t enough to achieve our expressiveness (#1) and performance (#5, #6) goals.

The key problem in both the previous models is that there’s too much sequencing. To reduce the amount of sequential dependence we use functional splittable PRNGs. Splitting is a mechanism to ‘fork’ a new PRNG state into two PRNG states while maintaining the usual desirable PRNG properties (the two new streams are computationally parallelizable and produce independent random values, i.e. they behave like multistreams).

def foo(rng_1):
rng_2, rng_3 = split(rng_1, 2)
return bar(rng_2) + baz(rng_3)

def bar(x, rng):
return rand(rng, (3, 4))

def baz(x, rng):
return rand(rng, (3, 4))

def main():
foo(RandomState(0))

Some points to notice:

1. there is no sequential dependence between the calls to bar() and baz() and they can be evaluated in either order without affecting the value of the result, which solves the remaining performance goals (#5, #6),

2. functions do not need to return updated versions of PRNGs and it is straightforward to call a random subroutine without affecting existing PRNG states, improving the expressiveness (#1) from the other functional model.

The example doesn’t show it, but as a consequence of the choice (2) the only way to advance the PRNG state is to call split(). That is, we have two ways to achieve (1), and they differ in whether they burden the user program with explicit calls to split(), as in the above example, or instead burden the user program with explicit threading. We prefer the former, i.e. the version with explicit splitting, because we can easily implement the explicit-threading version in terms of it.

Design#

We can use the counter-based PRNG design, and in particular the Threefry hash function, as described in Parallel random numbers: as easy as 1, 2, 3. We use the counter to achieve efficient vectorization: for a given key we can generate an array of values in a vectorized fashion by mapping the hash function over a range of integers [k + 1, …, k + sample_size]. We use the key together with the hash function to implement splittable PRNGs: that is, splitting is a way to generate two new keys from an existing one.

type Sample = Int256
type Key = Sample  -- important identification for splitting
type Count = Int32

hash :: Key -> Count -> Int256  -- output type equal to Key and Sample

split :: Key -> (Key, Key)
split key = (hash key 0, hash key 1)

draw_samples :: Key -> Int -> [Sample]
draw_samples key n = map (hash key) [1..n]

Surprisingly, drawing a sample is very similar to splitting! The key is the difference in the type of the output (even though the types are identified): in one case the value is to be used in forming random samples of interest (e.g. turning random bits into a Float representing a random normal) while in the other case the value is to be used as a key for further hashing.

The asymmetry in the hash function arguments, of type Key and Count, is that the latter is trivial and computationally cheap to advance by an arbitrary amount, since we just need to increase the integer value, while the former is only advanced by hashing. That’s why we use the count argument for vectorization.

More realistic example user programs#

Here’s what a training loop on the host might look like when the step requires a PRNG (maybe for dropout or for VAE training):

rng = lax.rng.new_rng()
for i in xrange(num_steps):
rng, rng_input = lax.rng.split(rng)
params = compiled_update(rng_input, params, next(batches))

Notice that we’re burdening the user with explicit splitting of the rng, but the rng does not need to be returned from the code at all.

Here’s how we can use this PRNG model with the stax neural net builder library to implement dropout:

def Dropout(rate, mode='train'):
def init_fun(input_shape):
return input_shape, ()
def apply_fun(rng, params, inputs):
if mode == 'train':
keep = lax.random.bernoulli(rng, rate, inputs.shape)
return np.where(keep, inputs / rate, 0)
else:
return inputs
return init_fun, apply_fun

The rng value here is just the key used for the hash, not a special object. The rng argument is passed to every apply_fun, and so it needs to be handled in the serial and parallel combinators with splitting:

def serial(*layers):
init_funs, apply_funs = zip(*layers)
def init_fun(input_shape):
...
def apply_fun(rng, params, inputs):
rngs = split(rng, len(layers))
for rng, param, apply_fun in zip(rngs, params, apply_funs):
inputs = apply_fun(rng, param, inputs)
return inputs
return init_fun, apply_fun

def parallel(*layers):
init_funs, apply_funs = zip(*layers)
def init_fun(input_shape):
...
def apply_fun(rng, params, inputs):
rngs = split(rng, len(layers))
return [f(r, p, x) for f, r, p, x in zip(apply_funs, rngs, params, inputs)]
return init_fun, apply_fun

Here we’re using a simple extended version of split that can produce multiple copies.

1. We’re not exploiting any device hardware PRNG

• We don’t currently have enough control over the hardware PRNG’s state for all backends.

• Even if we did, it would be backend-dependent and we might have to introduce sequential dependencies between random calls to ensure deterministic ordering and hence reproducibility.

• We don’t know of any workloads for which the software PRNG should become a bottleneck.

• We could consider providing an additional API that allows access to a hardware PRNG for users who want to give up other desiderata (like strict reproducibility).

2. We give up the sequential equivalent guarantee, in which creating a random array in one call produces the same values as creating the flattened array one random element at a time.

• This property is likely incompatible with vectorization (a high priority).

• We don’t know of any users or examples for which this property is important.

• Users could write a layer on top of this API to provide this guarantee.

3. We can’t follow the numpy.random API exactly.


text:
# Technical Reports

## A list with abstracts sorted by year - 1996

### How to Parallelize Sequential Processes

by Antonín Kuèera, Accepted to the 8th International Conference on Concurrency Theory (CONCUR97). December 1996, 24 pages.

FIMU-RS-96-05. Available as Postscript, PDF.

#### Abstract:

A process is prime if it cannot be decomposed into a parallel product of nontrivial processes. We characterize all non-prime normed BPA processes together with their decompositions in terms of normal forms which are designed in this paper. Then we show that it is decidable whether a given normed BPA process is prime and if not, its decomposition can be effectively constructed. This brings other positive decidability results. Finally, we prove that bisimilarity is decidable in a large subclass of normed PA processes.

### Word Hy-phen-a-tion by Neural Networks

by Pavel Smr¾, Petr Sojka, August 1996, 10 pages.

FIMU-RS-96-04. Available as Postscript, PDF.

#### Abstract:

We are discussing our experiments we made when learning feedforward neural network to find possible hyphenation points in all words of given language. Neural networks show to be a good device for solving this difficult problem. The structure of the multilayer neural network used is given, together with a discussion about training sets, influence of input coding and results of experiments done for the Czech language. We end up with pros and cons of our approach tested - hybrid architecture suitable for a multilingual system.

### Comparing Expressibility of Normed BPA and Normed BPP Processes

by Ivana Èerná, Mojmír Køetínský, Antonín Kuèera, This is a full version of the paper which is to be presented at CSL96. June 1996, 28 pages.

FIMU-RS-96-02. Available as Postscript, PDF.

#### Abstract:

We compare the classes of behaviours (transition systems) which can be generated by normed BPA_{\tau} and normed BPP_{\tau} processes. We exactly classify the intersection of these two classes, i.e., the class of transition systems which can be equivalently (up to bisimilarity) described by the syntax of normed BPA_{\tau} and normed BPP_{\tau} processes. We provide such a characterisation for classes of normed BPA and normed BPP processes as well.

Next we show that it is decidable in polynomial time whether for a given normed BPA_{\tau} (or BPP_{\tau} respectively) process X there is some (unspecified) normed BPP_{\tau} (or BPA_{\tau} respectively) process X such that X is bisimilar to X. Moreover, if the answer is positive then our algorithms also construct the process X. Simplified versions of the algorithms mentioned above for normed BPA and normed BPP are given too.

As an immediate (but important) consequence we also obtain the decidability of bisimilarity in the union of normed BPA_{\tau} and normed BPP_{\tau} processes.

### Regularity is Decidable for Normed PA Processes in Polynomial Time

by Antonín Kuèera, This paper is going to be presented at FST&TCS96 conference, LNCS 1180, Springer-Verlag. February 1996, 17 pages.

FIMU-RS-96-01. Available as Postscript, PDF.

#### Abstract:

A process X is regular if it is bisimilar to a process X with finitely many states. We prove that regularity of normed PA processes is decidable and we present a practically usable polynomial-time algorithm. Moreover, if the tested normed PA process X is regular then the process X can be effectively constructed. It implies decidability of bisimulation equivalence for any pair of processes such that one process is a normed PA process and the other process has finitely many states.

Responsible contact: veda@fi.muni.cz