diff --git a/bench/FERMI/README b/bench/FERMI/README index b81356dee893706e3a7cb6b564c672928630a707..f8772483d138959b34b004698547ddf9e4418f4b 100644 --- a/bench/FERMI/README +++ b/bench/FERMI/README @@ -19,33 +19,33 @@ directories for instructions on how to build the packages with different precisions. The GPU and USER-CUDA sub-sections of the doc/Section_accelerate.html file also describes this process. -Make.py -d ~/lammps -j 16 -p #all orig -m linux -o cpu exe -Make.py -d ~/lammps -j 16 -p #all opt orig -m linux -o opt exe -Make.py -d ~/lammps -j 16 -p #all omp orig -m linux -o omp exe +Make.py -d ~/lammps -j 16 -p #all orig -m linux -o cpu -a exe +Make.py -d ~/lammps -j 16 -p #all opt orig -m linux -o opt -a exe +Make.py -d ~/lammps -j 16 -p #all omp orig -m linux -o omp -a exe Make.py -d ~/lammps -j 16 -p #all gpu orig -m linux \ - -gpu mode=double arch=20 -o gpu_double libs exe + -gpu mode=double arch=20 -o gpu_double -a libs exe Make.py -d ~/lammps -j 16 -p #all gpu orig -m linux \ - -gpu mode=mixed arch=20 -o gpu_mixed libs exe + -gpu mode=mixed arch=20 -o gpu_mixed -a libs exe Make.py -d ~/lammps -j 16 -p #all gpu orig -m linux \ - -gpu mode=single arch=20 -o gpu_single libs exe + -gpu mode=single arch=20 -o gpu_single -a libs exe Make.py -d ~/lammps -j 16 -p #all cuda orig -m linux \ - -cuda mode=double arch=20 -o cuda_double libs exe + -cuda mode=double arch=20 -o cuda_double -a libs exe Make.py -d ~/lammps -j 16 -p #all cuda orig -m linux \ - -cuda mode=mixed arch=20 -o cuda_mixed libs exe + -cuda mode=mixed arch=20 -o cuda_mixed -a libs exe Make.py -d ~/lammps -j 16 -p #all cuda orig -m linux \ - -cuda mode=single arch=20 -o cuda_single libs exe -Make.py -d ~/lammps -j 16 -p #all intel orig -m linux -o intel_cpu exe -Make.py -d ~/lammps -j 16 -p #all kokkos orig -m linux -o kokkos_omp exe + -cuda mode=single arch=20 -o cuda_single -a libs exe +Make.py -d ~/lammps -j 16 -p #all intel orig -m linux -o intel_cpu -a exe +Make.py -d ~/lammps -j 16 -p #all kokkos orig -m linux -o kokkos_omp -a exe Make.py -d ~/lammps -j 16 -p #all kokkos orig -kokkos cuda arch=20 \ - -m cuda -o kokkos_cuda exe + -m cuda -o kokkos_cuda -a exe Make.py -d ~/lammps -j 16 -p #all opt omp gpu cuda intel kokkos orig \ -gpu mode=double arch=20 -cuda mode=double arch=20 -m linux \ - -o all libs exe + -o all -a libs exe Make.py -d ~/lammps -j 16 -p #all opt omp gpu cuda intel kokkos orig \ -kokkos cuda arch=20 -gpu mode=double arch=20 \ - -cuda mode=double arch=20 -m cuda -o all_cuda libs exe + -cuda mode=double arch=20 -m cuda -o all_cuda -a libs exe ------------------------------------------------------------------------ diff --git a/bench/README b/bench/README index 5d1a3bc057ae2226deb04b8f1c3931fdb85c5ec0..85d71cbb5d9ca41a46fff4b4cb22fbdd5e7af233 100644 --- a/bench/README +++ b/bench/README @@ -82,7 +82,7 @@ also leave off the "-fft fftw3" switch if you do not have the FFTW library will be used. cd src -Make.py -j 16 -p none molecule manybody kspace granular orig \ +Make.py -j 16 -p none molecule manybody kspace granular rigid orig \ -cc mpi wrap=icc -fft fftw3 -a file mpi ---------------------------------------------------------------------- diff --git a/bench/in.chute b/bench/in.chute index cf43fd7ff86616bfdc37b009a78e96943403f672..9f7c28ada3edeb4bf2b96a30b13ec8fc5b97b605 100644 --- a/bench/in.chute +++ b/bench/in.chute @@ -5,7 +5,7 @@ units lj atom_style sphere boundary p p fs newton off -communicate single vel yes +comm_modify vel yes read_data data.chute diff --git a/bench/in.chute.scaled b/bench/in.chute.scaled index cda244562089c5354a1f6baa65edcb462b712750..7bac8fe12dbaf61e052a0546bb300e075a3c1f58 100644 --- a/bench/in.chute.scaled +++ b/bench/in.chute.scaled @@ -8,7 +8,7 @@ units lj atom_style sphere boundary p p fs newton off -communicate single vel yes +comm_modify vel yes read_data data.chute diff --git a/doc/Eqs/fix_rattle_constraints.jpg b/doc/Eqs/fix_rattle_constraints.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2ba86095cd3c3682160dedebb745413be563243b Binary files /dev/null and b/doc/Eqs/fix_rattle_constraints.jpg differ diff --git a/doc/Eqs/fix_rattle_constraints.tex b/doc/Eqs/fix_rattle_constraints.tex new file mode 100644 index 0000000000000000000000000000000000000000..daff0ce77587ed936989f060a89e08b487e9b4bd --- /dev/null +++ b/doc/Eqs/fix_rattle_constraints.tex @@ -0,0 +1,9 @@ +\documentclass[12pt]{article} +\usepackage{amsmath} + +\begin{document} +\begin{align*} +\mathbf r^{n+1}_{ij} \cdot \mathbf r^{n+1}_{ij} &= d^2_{ij} \quad \text{and} \\ +\mathbf v^{n+1}_{ij} \cdot \mathbf r^{n+1}_{ij} &= 0, \label{eq:velcon} +\end{align*} +\end{document} diff --git a/doc/Eqs/fix_rattle_rij.jpg b/doc/Eqs/fix_rattle_rij.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b08e2fe02e650dab39f5f9b09930e2baece5436e Binary files /dev/null and b/doc/Eqs/fix_rattle_rij.jpg differ diff --git a/doc/Eqs/fix_rattle_rij.tex b/doc/Eqs/fix_rattle_rij.tex new file mode 100644 index 0000000000000000000000000000000000000000..fae0457c60c826baebcad3de458a41a656c59689 --- /dev/null +++ b/doc/Eqs/fix_rattle_rij.tex @@ -0,0 +1,8 @@ +\documentclass[12pt]{article} +\usepackage{amsmath} +\begin{document} +$$ + \mathbf r^{n+1}_{ij} = \mathbf r^n_j - \mathbf r^n_i +$$ +\end{document} + diff --git a/doc/Eqs/fix_ttm_blast.jpg b/doc/Eqs/fix_ttm_blast.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d4ffe05f129715572923fcd32c547b64aee902f1 Binary files /dev/null and b/doc/Eqs/fix_ttm_blast.jpg differ diff --git a/doc/Eqs/fix_ttm_blast.tex b/doc/Eqs/fix_ttm_blast.tex new file mode 100644 index 0000000000000000000000000000000000000000..6871ed5cc68cce4012a9a382edc9bfec35a9d35b --- /dev/null +++ b/doc/Eqs/fix_ttm_blast.tex @@ -0,0 +1,13 @@ +\documentclass[12pt]{article} + +\begin{document} + +$$ + {\vec F}_i = - \partial U / \partial {\vec r}_i + {\vec F}_{langevin} - \nabla P_e/n_{ion} +$$ + +\end{document} + + + + diff --git a/doc/Eqs/fix_ttm_blast1.jpg b/doc/Eqs/fix_ttm_blast1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1106c627cbdc5c8d48cf9272513c799e4e65524a Binary files /dev/null and b/doc/Eqs/fix_ttm_blast1.jpg differ diff --git a/doc/Eqs/fix_ttm_blast1.tex b/doc/Eqs/fix_ttm_blast1.tex new file mode 100644 index 0000000000000000000000000000000000000000..642afe43003b8a426a74409a103a5af7297680cc --- /dev/null +++ b/doc/Eqs/fix_ttm_blast1.tex @@ -0,0 +1,13 @@ +\documentclass[12pt]{article} + +\begin{document} + +$$ + \nabla_x P_e = \left[\frac{C_e{}T_e(x)\lambda}{(x+\lambda)^2} + \frac{x}{x+\lambda}\frac{(C_e{}T_e)_{x+\Delta x}-(C_e{}T_e)_{x}}{\Delta x} \right] +$$ + +\end{document} + + + + diff --git a/doc/Eqs/fix_ttm_ce.jpg b/doc/Eqs/fix_ttm_ce.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4f439e31e6b22ed3268e19d3d06852801812f93a Binary files /dev/null and b/doc/Eqs/fix_ttm_ce.jpg differ diff --git a/doc/Eqs/fix_ttm_ce.tex b/doc/Eqs/fix_ttm_ce.tex new file mode 100644 index 0000000000000000000000000000000000000000..f787590b8f3d84c7f0bd660e667c64f5c4317883 --- /dev/null +++ b/doc/Eqs/fix_ttm_ce.tex @@ -0,0 +1,13 @@ +\documentclass[12pt]{article} + +\begin{document} + +$$ + C_e = C_0 + (a_0 + a_1 X + a_2 X^2 + a_3 X^3 + a_4 X^4) \exp (-(AX)^2) +$$ + +\end{document} + + + + diff --git a/doc/Eqs/fix_ttm_mod.jpg b/doc/Eqs/fix_ttm_mod.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7cc67200f96bae3be7633d8d0c52ed76eabd1474 Binary files /dev/null and b/doc/Eqs/fix_ttm_mod.jpg differ diff --git a/doc/Eqs/fix_ttm_mod.tex b/doc/Eqs/fix_ttm_mod.tex new file mode 100644 index 0000000000000000000000000000000000000000..d0a313e6761f094e363fd7c59b407be9ae073583 --- /dev/null +++ b/doc/Eqs/fix_ttm_mod.tex @@ -0,0 +1,15 @@ +\documentclass[12pt]{article} + +\begin{document} + +$$ + C_e \rho_e \frac{\partial T_e}{\partial t} = + \bigtriangledown (\kappa_e \bigtriangledown T_e) - + g_p (T_e - T_a) + g_s T_a' + \theta (x-x_{surface})I_0 \exp(-x/l_{skin}) +$$ + +\end{document} + + + + diff --git a/doc/Eqs/pair_cs.jpg b/doc/Eqs/pair_cs.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b870a3bdf4617f353a739d0d7148dd27ac02669e Binary files /dev/null and b/doc/Eqs/pair_cs.jpg differ diff --git a/doc/Eqs/pair_cs.tex b/doc/Eqs/pair_cs.tex new file mode 100644 index 0000000000000000000000000000000000000000..b7eacb8d5b2704a0f39314e586724376ab4b0dae --- /dev/null +++ b/doc/Eqs/pair_cs.tex @@ -0,0 +1,9 @@ +\documentstyle[12pt]{article} + +\begin{document} + +$$ + E = \frac{C q_i q_j}{\epsilon (r + r_{min})} \qquad r \rightarrow 0 +$$ + +\end{document} diff --git a/doc/Manual.html b/doc/Manual.html index d997dee571a8d163b71898dfa365905e2afa45a3..42dbfd34ce21191a58c861cad2820b93281833ee 100644 --- a/doc/Manual.html +++ b/doc/Manual.html @@ -1,7 +1,7 @@
Here is how each line in the input script is parsed by LAMMPS:
-(1) If the last printable character on the line is a "&" character -(with no surrounding quotes), the command is assumed to continue on -the next line. The next line is concatenated to the previous line by -removing the "&" character and newline. This allows long commands to -be continued across two or more lines. +
(1) If the last printable character on the line is a "&" character, +the command is assumed to continue on the next line. The next line is +concatenated to the previous line by removing the "&" character and +line break. This allows long commands to be continued across two or +more lines. See the discussion of triple quotes in (6) for how to +continue a command across multiple line without using "&" characters.
(2) All characters from the first "#" character onward are treated as comment and discarded. See an exception in (6). Note that a @@ -156,27 +157,38 @@ underscores, or punctuation characters. line are arguments.
(6) If you want text with spaces to be treated as a single argument, -it can be enclosed in either double or single quotes. A long single -argument enclosed in quotes can even span multiple lines if the "&" -character is used, as described above. E.g. +it can be enclosed in either single or double or triple quotes. A +long single argument enclosed in single or double quotes can span +multiple lines if the "&" character is used, as described above. When +the lines are concatenated together (and the "&" characters and line +breaks removed), the text will become a single line. If you want +multiple lines of an argument to retain their line breaks, the text +can be enclosed in triple quotes, in which case "&" characters are not +needed. For example:
print "Volume = $v"
print 'Volume = $v'
+if "$steps > 1000" then quit
variable a string "red green blue &
purple orange cyan"
-if "$steps > 1000" then quit
+print """
+System volume = $v
+System temperature = $t
+"""
-The quotes are removed when the single argument is stored internally. +
In each case, the single, double, or triple quotes are removed when +the single argument they enclose is stored internally.
-See the dump modify format or print or -if commands for examples. A "#" or "$" character that is -between quotes will not be treated as a comment indicator in (2) or -substituted for as a variable in (3). +
See the dump modify format, print, +if, and python commands for examples. +
+A "#" or "$" character that is between quotes will not be treated as a +comment indicator in (2) or substituted for as a variable in (3).
IMPORTANT NOTE: If the argument is itself a command that requires a quoted argument (e.g. using a print command as part of an -if or run every command), then the double and -single quotes can be nested in the usual manner. See the doc pages +if or run every command), then single, double, or +triple quotes can be nested in the usual manner. See the doc pages for those commands for examples. Only one of level of nesting is allowed, but that should be sufficient for most use cases.
@@ -363,20 +375,20 @@ in the command's documentation.These are additional commands in USER packages, which can be used if @@ -399,20 +411,20 @@ This is indicated by additional letters in parenthesis: c = USER-CUDA, g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT.
These are additional fix styles in USER packages, which can be used if @@ -425,7 +437,7 @@ package.
These are additional compute styles in USER packages, which can be @@ -479,29 +491,29 @@ KOKKOS, o = USER-OMP, t = OPT.
These are additional pair styles in USER packages, which can be used @@ -512,11 +524,11 @@ package.
| none | hybrid | class2 (o) | fene (o) |
| fene/expand (o) | harmonic (o) | morse (o) | nonlinear (o) |
| none | hybrid | class2 (o) | fene (ko) |
| fene/expand (o) | harmonic (ko) | morse (o) | nonlinear (o) |
| quartic (o) | table (o) |
| none | hybrid | charmm (o) | class2 (o) |
| none | hybrid | charmm (ko) | class2 (o) |
| cosine (o) | cosine/delta (o) | cosine/periodic (o) | cosine/squared (o) |
| harmonic (o) | table (o) + | ||
| harmonic (ko) | table (o) |
These are additional angle styles in USER packages, which can be used @@ -585,8 +597,8 @@ letters in parenthesis: c = USER-CUDA, g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT.
| none | hybrid | charmm (o) | class2 (o) |
| harmonic (o) | helix (o) | multi/harmonic (o) | opls (o) + |
| none | hybrid | charmm (ko) | class2 (o) |
| harmonic (o) | helix (o) | multi/harmonic (o) | opls (ko) |
These are additional dihedral styles in USER packages, which can be @@ -612,7 +624,7 @@ KOKKOS, o = USER-OMP, t = OPT.
These are additional improper styles in USER packages, which can be diff --git a/doc/Section_commands.txt b/doc/Section_commands.txt index 08db07a1ec71011b04ba1a217d609b00e7ca0c60..2f198dfc9deae90f0ec80b084aa3feed529461f3 100644 --- a/doc/Section_commands.txt +++ b/doc/Section_commands.txt @@ -82,11 +82,12 @@ file names or user-chosen ID strings. Here is how each line in the input script is parsed by LAMMPS: -(1) If the last printable character on the line is a "&" character -(with no surrounding quotes), the command is assumed to continue on -the next line. The next line is concatenated to the previous line by -removing the "&" character and newline. This allows long commands to -be continued across two or more lines. +(1) If the last printable character on the line is a "&" character, +the command is assumed to continue on the next line. The next line is +concatenated to the previous line by removing the "&" character and +line break. This allows long commands to be continued across two or +more lines. See the discussion of triple quotes in (6) for how to +continue a command across multiple line without using "&" characters. (2) All characters from the first "#" character onward are treated as comment and discarded. See an exception in (6). Note that a @@ -152,27 +153,38 @@ underscores, or punctuation characters. line are arguments. (6) If you want text with spaces to be treated as a single argument, -it can be enclosed in either double or single quotes. A long single -argument enclosed in quotes can even span multiple lines if the "&" -character is used, as described above. E.g. +it can be enclosed in either single or double or triple quotes. A +long single argument enclosed in single or double quotes can span +multiple lines if the "&" character is used, as described above. When +the lines are concatenated together (and the "&" characters and line +breaks removed), the text will become a single line. If you want +multiple lines of an argument to retain their line breaks, the text +can be enclosed in triple quotes, in which case "&" characters are not +needed. For example: print "Volume = $v" print 'Volume = $v' +if "${steps} > 1000" then quit variable a string "red green blue & purple orange cyan" -if "${steps} > 1000" then quit :pre +print """ +System volume = $v +System temperature = $t +""" :pre -The quotes are removed when the single argument is stored internally. +In each case, the single, double, or triple quotes are removed when +the single argument they enclose is stored internally. -See the "dump modify format"_dump_modify.html or "print"_print.html or -"if"_if.html commands for examples. A "#" or "$" character that is -between quotes will not be treated as a comment indicator in (2) or -substituted for as a variable in (3). +See the "dump modify format"_dump_modify.html, "print"_print.html, +"if"_if.html, and "python"_python.html commands for examples. + +A "#" or "$" character that is between quotes will not be treated as a +comment indicator in (2) or substituted for as a variable in (3). IMPORTANT NOTE: If the argument is itself a command that requires a quoted argument (e.g. using a "print"_print.html command as part of an -"if"_if.html or "run every"_run.html command), then the double and -single quotes can be nested in the usual manner. See the doc pages +"if"_if.html or "run every"_run.html command), then single, double, or +triple quotes can be nested in the usual manner. See the doc pages for those commands for examples. Only one of level of nesting is allowed, but that should be sufficient for most use cases. @@ -372,6 +384,7 @@ in the command's documentation. "compute"_compute.html, "compute_modify"_compute_modify.html, "create_atoms"_create_atoms.html, +"create_bonds"_create_bonds.html, "create_box"_create_box.html, "delete_atoms"_delete_atoms.html, "delete_bonds"_delete_bonds.html, @@ -417,6 +430,7 @@ in the command's documentation. "prd"_prd.html, "print"_print.html, "processors"_processors.html, +"python"_python.html, "quit"_quit.html, "read_data"_read_data.html, "read_dump"_read_dump.html, @@ -468,8 +482,10 @@ g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT. "adapt"_fix_adapt.html, "addforce (c)"_fix_addforce.html, "append/atoms"_fix_append_atoms.html, +"atom/swap"_fix_atom_swap.html, "aveforce (c)"_fix_aveforce.html, "ave/atom"_fix_ave_atom.html, +"ave/chunk"_fix_ave_chunk.html, "ave/correlate"_fix_ave_correlate.html, "ave/histo"_fix_ave_histo.html, "ave/spatial"_fix_ave_spatial.html, @@ -554,8 +570,10 @@ g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT. "store/force"_fix_store_force.html, "store/state"_fix_store_state.html, "temp/berendsen (c)"_fix_temp_berendsen.html, +"temp/csld"_fix_temp_csvr.html, "temp/csvr"_fix_temp_csvr.html, "temp/rescale (c)"_fix_temp_rescale.html, +"tfmc"_fix_tfmc.html, "thermal/conductivity"_fix_thermal_conductivity.html, "tmd"_fix_tmd.html, "ttm"_fix_ttm.html, @@ -608,7 +626,8 @@ package"_Section_start.html#start_3. "smd"_fix_smd.html, "temp/rescale/eff"_fix_temp_rescale_eff.html, "ti/rs"_fix_ti_rs.html, -"ti/spring"_fix_ti_spring.html :tb(c=6,ea=c) +"ti/spring"_fix_ti_spring.html, +"ttm/mod"_fix_ttm.html :tb(c=6,ea=c) :line @@ -623,14 +642,15 @@ letters in parenthesis: c = USER-CUDA, g = GPU, i = USER-INTEL, k = KOKKOS, o = USER-OMP, t = OPT. "angle/local"_compute_angle_local.html, -"atom/molecule"_compute_atom_molecule.html, +"angmom/chunk"_compute_angmom_chunk.html, "body/local"_compute_body_local.html, "bond/local"_compute_bond_local.html, "centro/atom"_compute_centro_atom.html, +"chunk/atom"_compute_chunk_atom.html, "cluster/atom"_compute_cluster_atom.html, "cna/atom"_compute_cna_atom.html, "com"_compute_com.html, -"com/molecule"_compute_com_molecule.html, +"com/chunk"_compute_com_chunk.html, "contact/atom"_compute_contact_atom.html, "coord/atom"_compute_coord_atom.html, "damage/atom"_compute_damage_atom.html, @@ -644,16 +664,17 @@ KOKKOS, o = USER-OMP, t = OPT. "event/displace"_compute_event_displace.html, "group/group"_compute_group_group.html, "gyration"_compute_gyration.html, -"gyration/molecule"_compute_gyration_molecule.html, +"gyration/chunk"_compute_gyration_chunk.html, "heat/flux"_compute_heat_flux.html, "improper/local"_compute_improper_local.html, -"inertia/molecule"_compute_inertia_molecule.html, +"inertia/chunk"_compute_inertia_chunk.html, "ke"_compute_ke.html, "ke/atom"_compute_ke_atom.html, "ke/rigid"_compute_ke_rigid.html, "msd"_compute_msd.html, -"msd/molecule"_compute_msd_molecule.html, +"msd/chunk"_compute_msd_chunk.html, "msd/nongauss"_compute_msd_nongauss.html, +"omega/chunk"_compute_omega_chunk.html, "pair"_compute_pair.html, "pair/local"_compute_pair_local.html, "pe (c)"_compute_pe.html, @@ -662,7 +683,7 @@ KOKKOS, o = USER-OMP, t = OPT. "pressure (c)"_compute_pressure.html, "property/atom"_compute_property_atom.html, "property/local"_compute_property_local.html, -"property/molecule"_compute_property_molecule.html, +"property/chunk"_compute_property_chunk.html, "rdf"_compute_rdf.html, "reduce"_compute_reduce.html, "reduce/region"_compute_reduce.html, @@ -674,6 +695,7 @@ KOKKOS, o = USER-OMP, t = OPT. "temp (c)"_compute_temp.html, "temp/asphere"_compute_temp_asphere.html, "temp/com"_compute_temp_com.html, +"temp/chunk"_compute_temp_chunk.html, "temp/deform"_compute_temp_deform.html, "temp/partial (c)"_compute_temp_partial.html, "temp/profile"_compute_temp_profile.html, @@ -681,8 +703,9 @@ KOKKOS, o = USER-OMP, t = OPT. "temp/region"_compute_temp_region.html, "temp/sphere"_compute_temp_sphere.html, "ti"_compute_ti.html, +"torque/chunk"_compute_torque_chunk.html, "vacf"_compute_vacf.html, -"vcm/molecule"_compute_vcm_molecule.html, +"vcm/chunk"_compute_vcm_chunk.html, "voronoi/atom"_compute_voronoi_atom.html :tb(c=6,ea=c) These are additional compute styles in USER packages, which can be @@ -728,24 +751,25 @@ KOKKOS, o = USER-OMP, t = OPT. "born/coul/wolf (go)"_pair_born.html, "brownian (o)"_pair_brownian.html, "brownian/poly (o)"_pair_brownian.html, -"buck (cgo)"_pair_buck.html, -"buck/coul/cut (cgo)"_pair_buck.html, -"buck/coul/long (cgo)"_pair_buck.html, +"buck (cgko)"_pair_buck.html, +"buck/coul/cut (cgko)"_pair_buck.html, +"buck/coul/long (cgko)"_pair_buck.html, "buck/coul/msm (o)"_pair_buck.html, "buck/long/coul/long (o)"_pair_buck_long.html, "colloid (go)"_pair_colloid.html, "comb (o)"_pair_comb.html, "comb3"_pair_comb.html, "coul/cut (gko)"_pair_coul.html, -"coul/debye (go)"_pair_coul.html, -"coul/dsf (go)"_pair_coul.html, -"coul/long (go)"_pair_coul.html, +"coul/debye (gko)"_pair_coul.html, +"coul/dsf (gko)"_pair_coul.html, +"coul/long (gko)"_pair_coul.html, "coul/msm"_pair_coul.html, -"coul/wolf (o)"_pair_coul.html, +"coul/streitz"_pair_coul.html, +"coul/wolf (ko)"_pair_coul.html, "dpd (o)"_pair_dpd.html, "dpd/tstat (o)"_pair_dpd.html, "dsmc"_pair_dsmc.html, -"eam (cgot)"_pair_eam.html, +"eam (cgkot)"_pair_eam.html, "eam/alloy (cgot)"_pair_eam.html, "eam/fs (cgot)"_pair_eam.html, "eim (o)"_pair_eim.html, @@ -759,26 +783,26 @@ KOKKOS, o = USER-OMP, t = OPT. "kim"_pair_kim.html, "lcbop"_pair_lcbop.html, "line/lj (o)"_pair_line_lj.html, -"lj/charmm/coul/charmm (co)"_pair_charmm.html, -"lj/charmm/coul/charmm/implicit (co)"_pair_charmm.html, -"lj/charmm/coul/long (cgio)"_pair_charmm.html, +"lj/charmm/coul/charmm (cko)"_pair_charmm.html, +"lj/charmm/coul/charmm/implicit (cko)"_pair_charmm.html, +"lj/charmm/coul/long (cgiko)"_pair_charmm.html, "lj/charmm/coul/msm"_pair_charmm.html, -"lj/class2 (cgo)"_pair_class2.html, -"lj/class2/coul/cut (co)"_pair_class2.html, -"lj/class2/coul/long (cgo)"_pair_class2.html, +"lj/class2 (cgko)"_pair_class2.html, +"lj/class2/coul/cut (cko)"_pair_class2.html, +"lj/class2/coul/long (cgko)"_pair_class2.html, "lj/cut (cgikot)"_pair_lj.html, "lj/cut/coul/cut (cgko)"_pair_lj.html, -"lj/cut/coul/debye (cgo)"_pair_lj.html, -"lj/cut/coul/dsf (go)"_pair_lj.html, +"lj/cut/coul/debye (cgko)"_pair_lj.html, +"lj/cut/coul/dsf (gko)"_pair_lj.html, "lj/cut/coul/long (cgikot)"_pair_lj.html, "lj/cut/coul/msm (go)"_pair_lj.html, "lj/cut/dipole/cut (go)"_pair_dipole.html, "lj/cut/dipole/long"_pair_dipole.html, "lj/cut/tip4p/cut (o)"_pair_lj.html, "lj/cut/tip4p/long (ot)"_pair_lj.html, -"lj/expand (cgo)"_pair_lj_expand.html, -"lj/gromacs (cgo)"_pair_gromacs.html, -"lj/gromacs/coul/gromacs (co)"_pair_gromacs.html, +"lj/expand (cgko)"_pair_lj_expand.html, +"lj/gromacs (cgko)"_pair_gromacs.html, +"lj/gromacs/coul/gromacs (cko)"_pair_gromacs.html, "lj/long/coul/long (o)"_pair_lj_long.html, "lj/long/dipole/long"_pair_dipole.html, "lj/long/tip4p/long"_pair_lj_long.html, @@ -836,12 +860,13 @@ package"_Section_start.html#start_3. "lj/cut/dipole/sf (go)"_pair_dipole.html, "lj/cut/soft (o)"_pair_lj_soft.html, "lj/cut/tip4p/long/soft (o)"_pair_lj_soft.html, -"lj/sdk (go)"_pair_sdk.html, +"lj/sdk (gko)"_pair_sdk.html, "lj/sdk/coul/long (go)"_pair_sdk.html, "lj/sdk/coul/msm (o)"_pair_sdk.html, "lj/sf (o)"_pair_lj_sf.html, "meam/spline"_pair_meam_spline.html, "meam/sw/spline"_pair_meam_sw_spline.html, +"quip"_pair_quip.html, "reax/c"_pair_reax_c.html, "sph/heatconduction"_pair_sph_heatconduction.html, "sph/idealgas"_pair_sph_idealgas.html, @@ -868,9 +893,9 @@ KOKKOS, o = USER-OMP, t = OPT. "none"_bond_none.html, "hybrid"_bond_hybrid.html, "class2 (o)"_bond_class2.html, -"fene (o)"_bond_fene.html, +"fene (ko)"_bond_fene.html, "fene/expand (o)"_bond_fene_expand.html, -"harmonic (o)"_bond_harmonic.html, +"harmonic (ko)"_bond_harmonic.html, "morse (o)"_bond_morse.html, "nonlinear (o)"_bond_nonlinear.html, "quartic (o)"_bond_quartic.html, @@ -897,13 +922,13 @@ KOKKOS, o = USER-OMP, t = OPT. "none"_angle_none.html, "hybrid"_angle_hybrid.html, -"charmm (o)"_angle_charmm.html, +"charmm (ko)"_angle_charmm.html, "class2 (o)"_angle_class2.html, "cosine (o)"_angle_cosine.html, "cosine/delta (o)"_angle_cosine_delta.html, "cosine/periodic (o)"_angle_cosine_periodic.html, "cosine/squared (o)"_angle_cosine_squared.html, -"harmonic (o)"_angle_harmonic.html, +"harmonic (ko)"_angle_harmonic.html, "table (o)"_angle_table.html :tb(c=4,ea=c) These are additional angle styles in USER packages, which can be used @@ -932,12 +957,12 @@ KOKKOS, o = USER-OMP, t = OPT. "none"_dihedral_none.html, "hybrid"_dihedral_hybrid.html, -"charmm (o)"_dihedral_charmm.html, +"charmm (ko)"_dihedral_charmm.html, "class2 (o)"_dihedral_class2.html, "harmonic (o)"_dihedral_harmonic.html, "helix (o)"_dihedral_helix.html, "multi/harmonic (o)"_dihedral_multi_harmonic.html, -"opls (o)"_dihedral_opls.html :tb(c=4,ea=c) +"opls (ko)"_dihedral_opls.html :tb(c=4,ea=c) These are additional dihedral styles in USER packages, which can be used if "LAMMPS is built with the appropriate @@ -965,7 +990,7 @@ KOKKOS, o = USER-OMP, t = OPT. "hybrid"_improper_hybrid.html, "class2 (o)"_improper_class2.html, "cvff (o)"_improper_cvff.html, -"harmonic (o)"_improper_harmonic.html, +"harmonic (ko)"_improper_harmonic.html, "umbrella (o)"_improper_umbrella.html :tb(c=4,ea=c) These are additional improper styles in USER packages, which can be diff --git a/doc/Section_errors.html b/doc/Section_errors.html index d30dfd35d24ed1a8d603d576610ea8fb09bcca0f..0e72c3dd0892c98fd6205edee87efc4881fdbfeb 100644 --- a/doc/Section_errors.html +++ b/doc/Section_errors.html @@ -204,6 +204,10 @@ setting.
The example input scripts included in the LAMMPS distribution and highlighted in Section_example also show how to @@ -1616,15 +1619,15 @@ pressure command calculates pressure.
All but the first 3 calculate velocity biases (i.e. advection +
All but the first 3 calculate velocity biases directly (e.g. advection velocities) that are removed when computing the thermal temperature. Compute temp/sphere and compute temp/asphere compute kinetic energy for finite-size particles that includes rotational degrees of freedom. -They both allow, as an extra argument, which is another temperature -compute that subtracts a velocity bias. This allows the translational -velocity of spherical or aspherical particles to be adjusted in -prescribed ways. +They both allow for velocity biases indirectly, via an optional extra +argument, another temperature compute that subtracts a velocity bias. +This allows the translational velocity of spherical or aspherical +particles to be adjusted in prescribed ways.
Thermostatting in LAMMPS is performed by fixes, or in one case by a pair style. Several thermostatting fixes are available: @@ -1657,15 +1660,21 @@ to the per-particle thermostatting of fix langevin.
Any of the thermostatting fixes can use temperature computes that -remove bias for two purposes: (a) computing the current temperature to -compare to the requested target temperature, and (b) adjusting only -the thermal temperature component of the particle's velocities. See -the doc pages for the individual fixes and for the +remove bias which has two effects. First, the current calculated +temperature, which is compared to the requested target temperature, is +caluclated with the velocity bias removed. Second, the thermostat +adjusts only the thermal temperature component of the particle's +velocities, which are the velocities with the bias removed. The +removed bias is then added back to the adjusted velocities. See the +doc pages for the individual fixes and for the fix_modify command for instructions on how to assign a temperature compute to a thermostatting fix. For example, you can apply a thermostat to only the x and z components of velocity by using it in conjunction with compute -temp/partial. +temp/partial. Of you could thermostat only +the thermal temperature of a streaming flow of particles without +affecting the streaming velocity, by using compute +temp/profile.
IMPORTANT NOTE: Only the nvt fixes perform time integration, meaning they update the velocities and positions of particles due to forces @@ -1905,15 +1914,18 @@ void *lammps_extract_atom(void *, char *) void *lammps_extract_compute(void *, char *, int, int) void *lammps_extract_fix(void *, char *, int, int, int, int) void *lammps_extract_variable(void *, char *, char *) +int lammps_set_variable(void *, char *, char *) int lammps_get_natoms(void *) void lammps_get_coords(void *, double *) void lammps_put_coords(void *, double *)
These can extract various global or per-atom quantities from LAMMPS as -well as values calculated by a compute, fix, or variable. The "get" -and "put" operations can retrieve and reset atom coordinates. -See the library.cpp file and its associated header file library.h for -details. +well as values calculated by a compute, fix, or variable. The +"set_variable" function can set an existing string-style variable to a +new value, so that subsequent LAMMPS commands can access the variable. +The "get" and "put" operations can retrieve and reset atom +coordinates. See the library.cpp file and its associated header file +library.h for details.
The key idea of the library interface is that you can write any functions you wish to define how your code talks to LAMMPS and add @@ -2146,6 +2158,455 @@ and thus extract D.
In LAMMS, "chunks" are collections of atoms, as defined by the +compute chunk/atom command, which assigns +each atom to a chunk ID (or to no chunk at all). The number of chunks +and the assignment of chunk IDs to atoms can be static or change over +time. Examples of "chunks" are molecules or spatial bins or atoms +with similar values (e.g. coordination number or potential energy). +
+The per-atom chunk IDs can be used as input to two other kinds of +commands, to calculate various properties of a system: +
+Here, each of the 3 kinds of chunk-related commands is briefly +overviewed. Then some examples are given of how to compute different +properties with chunk commands. +
+This compute can assign atoms to chunks of various styles. Only atoms +in the specified group and optional specified region are assigned to a +chunk. Here are some possible chunk definitions: +
+| atoms in same molecule | chunk ID = molecule ID |
| atoms of same atom type | chunk ID = atom type |
| all atoms with same atom property (charge, radius, etc) | chunk ID = output of compute property/atom |
| atoms in same cluster | chunk ID = output of compute cluster/atom command |
| atoms in same spatial bin | chunk ID = bin ID |
| atoms in same rigid body | chunk ID = molecule ID used to define rigid bodies |
| atoms with similar potential energy | chunk ID = output of compute pe/atom |
| atoms with same local defect structure | chunk ID = output of compute centro/atom or compute coord/atom command + |
Note that chunk IDs are integer values, so for atom properties or +computes that produce a floating point value, they will be truncated +to an integer. You could also use the compute in a variable that +scales the floating point value to spread it across multiple intergers. +
+Spatial bins can be of various kinds, e.g. 1d bins = slabs, 2d bins = +pencils, 3d bins = boxes, spherical bins, cylindrical bins. +
+This compute also calculates the number of chunks Nchunk, which is +used by other commands to tally per-chunk data. Nchunk can be a +static value or change over time (e.g. the number of clusters). The +chunk ID for an individual atom can also be static (e.g. a molecule +ID), or dynamic (e.g. what spatial bin an atom is in as it moves). +
+Note that this compute allows the per-atom output of other +computes, fixes, and +variables to be used to define chunk IDs for each +atom. This means you can write your own compute or fix to output a +per-atom quantity to use as chunk ID. See +Section_modify of the documentation for how to +do this. You can also define a per-atom variable in +the input script that uses a formula to generate a chunk ID for each +atom. +
+This fix takes the ID of a compute +chunk/atom command as input. For each chunk, +it then sums one or more specified per-atom values over the atoms in +each chunk. The per-atom values can be any atom property, such as +velocity, force, charge, potential energy, kinetic energy, stress, +etc. Additional keywords are defined for per-chunk properties like +density and temperature. More generally any per-atom value generated +by other computes, fixes, and per-atom +variables, can be summed over atoms in each chunk. +
+Similar to other averaging fixes, this fix allows the summed per-chunk +values to be time-averaged in various ways, and output to a file. The +fix produces a global array as output with one row of values per +chunk. +
+Currently the following computes operate on chunks of atoms to produce +per-chunk values. +
+They each take the ID of a compute +chunk/atom command as input. As their names +indicate, they calculate the center-of-mass, radius of gyration, +moments of inertia, mean-squared displacement, temperature, torque, +and velocity of center-of-mass for each chunk of atoms. The compute +property/chunk command can tally the +count of atoms in each chunk and extract other per-chunk properties. +
+The reason these various calculations are not part of the fix +ave/chunk command, is that each requires a more +complicated operation than simply summing and averaging over per-atom +values in each chunk. For example, many of them require calculation +of a center of mass, which requires summing mass*position over the +atoms and then dividing by summed mass. +
+All of these computes produce a global vector or global array as +output, wih one or more values per chunk. They can be used +in various ways: +
+Here are eaxmples using chunk commands to calculate various +properties: +
+(1) Average velocity in each of 1000 2d spatial bins: +
+compute cc1 all chunk/atom bin/2d x 0.0 0.1 y lower 0.01 units reduced +fix 1 all ave/chunk 100 10 1000 cc1 vx vy file tmp.out ++
(2) Temperature in each spatial bin, after subtracting a flow +velocity: +
+compute cc1 all chunk/atom bin/2d x 0.0 0.1 y lower 0.1 units reduced +compute vbias all temp/profile 1 0 0 y 10 +fix 1 all ave/chunk 100 10 1000 cc1 temp bias vbias file tmp.out ++
(3) Center of mass of each molecule: +
+compute cc1 all chunk/atom molecule +compute myChunk all com/chunk cc1 +fix 1 all ave/time 100 1 100 c_myChunk file tmp.out mode vector ++
(4) Total force on each molecule and ave/max across all molecules: +
+compute cc1 all chunk/atom molecule +fix 1 all ave/chunk 1000 1 1000 cc1 fx fy fz file tmp.out +variable xave equal ave(f_12) +variable xmax equal max(f_12) +thermo 1000 +thermo_style custom step temp v_xave v_xmax ++
(5) Histogram of cluster sizes: +
+compute cluster all cluster/atom 1.0 +compute cc1 all chunk/atom c_cluster compress yes +compute size all property/chunk cc1 count +fix 1 all ave/histo 100 1 100 0 20 20 c_size mode vector ave running beyond ignore file tmp.histo ++
The PPPM method computes interactions by splitting the pair potential +into two parts, one of which is computed in a normal pairwise fashion, +the so-called real-space part, and one of which is computed using the +Fourier transform, the so called reciprocal-space or kspace part. For +both parts, the potential is not computed exactly but is approximated. +Thus, there is an error in both parts of the computation, the +real-space and the kspace error. The just mentioned facts are true +both for the PPPM for Coulomb as well as dispersion interactions. The +deciding difference - and also the reason why the parameters for +pppm/disp have to be selected with more care - is the impact of the +errors on the results: The kspace error of the PPPM for Coulomb and +dispersion interaction and the real-space error of the PPPM for +Coulomb interaction have the character of noise. In contrast, the +real-space error of the PPPM for dispersion has a clear physical +interpretation: the underprediction of cohesion. As a consequence, the +real-space error has a much stronger effect than the kspace error on +simulation results for pppm/disp. Parameters must thus be chosen in a +way that this error is much smaller than the kspace error. +
+When using pppm/disp and not making any specifications on the PPPM +parameters via the kspace modify command, parameters will be tuned +such that the real-space error and the kspace error are equal. This +will result in simulations that are either inaccurate or slow, both of +which is not desirable. For selecting parameters for the pppm/disp +that provide fast and accurate simulations, there are two approaches, +which both have their up- and downsides. +
+The first approach is to set desired real-space an kspace accuracies +via the kspace_modify force/disp/real and kspace_modify +force/disp/kspace commands. Note that the accuracies have to be +specified in force units and are thus dependend on the chosen unit +settings. For real units, 0.0001 and 0.002 seem to provide reasonable +accurate and efficient computations for the real-space and kspace +accuracies. 0.002 and 0.05 work well for most systems using lj +units. PPPM parameters will be generated based on the desired +accuracies. The upside of this approach is that it usually provides a +good set of parameters and will work for both the kspace_modify diff +ad and kspace_modify diff ik options. The downside of the method +is that setting the PPPM parameters will take some time during the +initialization of the simulation. +
+The second approach is to set the parameters for the pppm/disp +explicitly using the kspace_modify mesh/disp, kspace_modify +order/disp, and kspace_modify gewald/disp commands. This approach +requires a more experienced user who understands well the impact of +the choice of parameters on the simulation accuracy and +performance. This approach provides a fast initialization of the +simulation. However, it is sensitive to errors: A combination of +parameters that will perform well for one system might result in +far-from-optimal conditions for other simulations. For example, +parametes that provide accurate and fast computations for +all-atomistic force fields can provide insufficient accuracy or +united-atomistic force fields (which is related to that the latter +typically have larger dispersion coefficients). +
+To avoid inaccurate or inefficient simulations, the pppm/disp stops +simulations with an error message if no action is taken to control the +PPPM parameters. If the automatic parameter generation is desired and +real-space and kspace accuracies are desired to be equal, this error +message can be suppressed using the kspace_modify disp/auto yes +command. +
+A reasonable approach that combines the upsides of both methods is to +make the first run using the kspace_modify force/disp/real and +kspace_modify force/disp/kspace commands, write down the PPPM +parameters from the outut, and specify these parameters using the +second approach in subsequent runs (which have the same composition, +force field, and approximately the same volume). +
+Concerning the performance of the pppm/disp there are two more things +to consider. The first is that when using the pppm/disp, the cutoff +parameter does no longer affect the accuracy of the simulation +(subject to that gewald/disp is adjusted when changing the cutoff). +The performance can thus be increased by examining different values +for the cutoff parameter. A lower bound for the cutoff is only set by +the truncation error of the repulsive term of pair potentials. +
+The second is that the mixing rule of the pair style has an impact on +the computation time when using the pppm/disp. Fastest computations +are achieved when using the geometric mixing rule. Using the +arithmetic mixing rule substantially increases the computational cost. +The computational overhead can be reduced using the kspace_modify +mix/disp geom and kspace_modify splittol commands. The first +command simply enforces geometric mixing of the dispersion +coeffiecients in kspace computations. This introduces some error in +the computations but will also significantly speed-up the +simulations. The second keyword sets the accuracy with which the +dispersion coefficients are approximated using a matrix factorization +approach. This may result in better accuracy then using the first +command, but will usually also not provide an equally good increase of +efficiency. +
+Finally, pppm/disp can also be used when no mixing rules apply. +This can be achieved using the kspace_modify mix/disp none command. +Note that the code does not check automatically whether any mixing +rule is fulfilled. If mixing rules do not apply, the user will have +to specify this command explicitly. +
+The adiabatic core-shell model by Mitchell and +Finchham is a simple method for adding +polarizability to a system. In order to mimic the electron shell of +an ion, a ghost atom is attached to it. This way the ions are split +into a core and a shell where the latter is meant to react to the +electrostatic environment inducing polarizability. +
+Technically, shells are attached to the cores by a spring force f = +k*r where k is a parametrized spring constant and r is the distance +between the core and the shell. The charges of the core and the shell +add up to the ion charge, thus q(ion) = q(core) + q(shell). In a +similar fashion the mass of the ion is distributed on the core and the +shell with the core having the larger mass. +
+To run this model in LAMMPS, atom_style full can +be used since atom charge and bonds are needed. Each kind of +core/shell pair requires two atom types and a bond type. The core and +shell of a core/shell pair should be bonded to each other with a +harmonic bond that provides the spring force. For example, a data file +for NaCl, as found in examples/coreshell, has this format: +
+432 atoms # core and shell atoms +216 bonds # number of core/shell springs ++
4 atom types # 2 cores and 2 shells for Na and Cl +2 bond types ++
0.0 24.09597 xlo xhi +0.0 24.09597 ylo yhi +0.0 24.09597 zlo zhi ++
Masses # core/shell mass ratio = 0.1 ++
1 20.690784 # Na core +2 31.90500 # Cl core +3 2.298976 # Na shell +4 3.54500 # Cl shell ++
Atoms ++
1 1 2 1.5005 0.00000000 0.00000000 0.00000000 # core of core/shell pair 1 +2 1 4 -2.5005 0.00000000 0.00000000 0.00000000 # shell of core/shell pair 1 +3 2 1 1.5056 4.01599500 4.01599500 4.01599500 # core of core/shell pair 2 +4 2 3 -0.5056 4.01599500 4.01599500 4.01599500 # shell of core/shell pair 2 +(...) ++
Bonds # Bond topology for spring forces ++
1 2 1 2 # spring for core/shell pair 1 +2 2 3 4 # spring for core/shell pair 2 +(...) ++
Non-Coulombic (e.g. Lennard-Jones) pairwise interactions are only +defined between the shells. Coulombic interactions are defined +between all cores and shells. If desired, additional bonds can be +specified between cores. +
+The special_bonds command should be used to +turn-off the Coulombic interaction within core/shell pairs, since that +interaction is set by the bond spring. This is done using the +special_bonds command with a 1-2 weight = 0.0, +which is the default value. +
+Since the core/shell model permits distances of r = 0.0 between the +core and shell, a pair style with a "cs" suffix needs to be used to +implement a valid long-range Coulombic correction. Several such pair +styles are provided in the CORESHELL package. See this doc +page for details. All of the core/shell enabled pair +styles require the use of a long-range Coulombic solver, as specified +by the kspace_style command. Either the PPPM or +Ewald solvers can be used. +
+For the NaCL example problem, these pair style and bond style settings +are used: +
+pair_style born/coul/long/cs 20.0 20.0 +pair_coeff * * 0.0 1.000 0.00 0.00 0.00 +pair_coeff 3 3 487.0 0.23768 0.00 1.05 0.50 #Na-Na +pair_coeff 3 4 145134.0 0.23768 0.00 6.99 8.70 #Na-Cl +pair_coeff 4 4 405774.0 0.23768 0.00 72.40 145.40 #Cl-Cl ++
bond_style harmonic +bond_coeff 1 63.014 0.0 +bond_coeff 2 25.724 0.0 ++
When running dynamics with the adiabatic core/shell model, the +following issues should be considered. Since the relative motion of +the core and shell particles corresponds to the polarization, typical +thermostats can alter the polarization behaviour, meaining the shell +will not react freely to its electrostatic environment. Therefore +it's typically desirable to decouple the relative motion of the +core/shell pair, which is an imaginary degree of freedom, from the +real physical system. To do that, the compute +temp/cs command can be used, in conjunction with +any of the thermostat fixes, such as fix nvt or fix +langevin. This compute uses the center-of-mass velocity +of the core/shell pairs to calculate a temperature, and insures that +velocity is what is rescaled for thermostatting purposes. The +compute temp/cs command requires input of two +groups, one for the core atoms, another for the shell atoms. These +can be defined using the group type command. Note that +to perform thermostatting using this definition of temperature, the +fix modify temp command should be used to assign the +comptue to the thermostat fix. Likewise the thermo_modify +temp command can be used to make this temperature +be output for the overall system. +
+For the NaCl example, this can be done as follows: +
+group cores type 1 2 +group shells type 3 4 +compute CSequ all temp/cs cores shells +fix thermoberendsen all temp/berendsen 1427 1427 0.4 # thermostat for the true physical system +fix thermostatequ all nve # integrator as needed for the berendsen thermostat +fix_modify thermoberendsen temp CSequ +thermo_modify temp CSequ # output of center-of-mass derived temperature ++
When intializing the velocities of a system with core/shell pairs, it +is also desirable to not introduce energy into the relative motion of +the core/shell particles, but only assign a center-of-mass velocity to +the pairs. This can be done by using the bias keyword of the +velocity create command and assigning the compute +temp/cs command to the temp keyword of the +velocity commmand, e.g. +
+velocity all create 1427 134 bias yes temp CSequ +velocity all scale 1427 temp CSequ ++
It is important to note that the polarizability of the core/shell +pairs is based on their relative motion. Therefore the choice of +spring force and mass ratio need to ensure much faster relative motion +of the 2 atoms within the core/shell pair than their center-of-mass +velocity. This allow the shells to effectively react instantaneously +to the electrostatic environment. This fast movement also limits the +timestep size that can be used. +
+Additionally, the mass mismatch of the core and shell particles means +that only a small amount of energy is transfered to the decoupled +imaginary degrees of freedom. However, this transfer will typically +lead to a a small drift in total energy over time. This internal +energy can be monitored using the compute +chunk/atom and compute +temp/chunk commands. The internal kinetic +energies of each core/shell pair can then be summed using the sum() +special functino of the variable command. Or they can +be time/averaged and output using the fix ave/time +command. To use these commands, each core/shell pair must be defined +as a "chunk". If each core/shell pair is defined as its own molecule, +the molecule ID can be used to define the chunks. If cores are bonded +to each other to form larger molecules, then another way to define the +chunks is to use the fix property/atom to +assign a core/shell ID to each atom via a special field in the data +file read by the read_data command. This field can +then be accessed by the compute +property/atom command, to use as input to +the compute chunk/atom command to define the +core/shell pairs as chunks. +
+For example, +
+fix csinfo all property/atom i_CSID # property/atom command +read_data NaCl_CS_x0.1_prop.data fix csinfo NULL CS-Info # atom property added in the data-file +compute prop all property/atom i_CSID +compute cs_chunk all chunk/atom c_prop +compute cstherm all temp/chunk cs_chunk temp internal com yes cdof 3.0 # note the chosen degrees of freedom for the core/shell pairs +fix ave_chunk all ave/time 10 1 10 c_cstherm file chunk.dump mode vector ++
The additional section in the date file would be formatted like this: +
+CS-Info # header of additional section ++
1 1 # column 1 = atom ID, column 2 = core/shell ID +2 1 +3 2 +4 2 +5 3 +6 3 +7 4 +8 4 +(...) ++
(Shinoda) Shinoda, Shiga, and Mikami, Phys Rev B, 69, 134103 (2004).
+ + +(Mitchell and Finchham) Mitchell, Finchham, J Phys Condensed Matter, +5, 1031-1038 (1993). +
diff --git a/doc/Section_howto.txt b/doc/Section_howto.txt index cbbf92334a0a39b8a1f6aece1e27726087d76d94..bccfea188296407451f06d3af348529fb962e3dd 100644 --- a/doc/Section_howto.txt +++ b/doc/Section_howto.txt @@ -31,7 +31,10 @@ This section describes how to perform common tasks using LAMMPS. 6.19 "Library interface to LAMMPS"_#howto_19 6.20 "Calculating thermal conductivity"_#howto_20 6.21 "Calculating viscosity"_#howto_21 -6.22 "Calculating a diffusion coefficient"_#howto_22 :all(b) +6.22 "Calculating a diffusion coefficient"_#howto_22 +6.23 "Using chunks to calculate system properties"_#howto_23 +6.24 "Setting parameters for the kspace_style pppm/disp command"_#howto_24 +6.25 "Adiabatic core/shell model"_#howto_25 :all(b) The example input scripts included in the LAMMPS distribution and highlighted in "Section_example"_Section_example.html also show how to @@ -1603,15 +1606,15 @@ pressure"_compute_pressure.html command calculates pressure. "compute temp/ramp"_compute_temp_ramp.html "compute temp/region"_compute_temp_region.html :ul -All but the first 3 calculate velocity biases (i.e. advection +All but the first 3 calculate velocity biases directly (e.g. advection velocities) that are removed when computing the thermal temperature. "Compute temp/sphere"_compute_temp_sphere.html and "compute temp/asphere"_compute_temp_asphere.html compute kinetic energy for finite-size particles that includes rotational degrees of freedom. -They both allow, as an extra argument, which is another temperature -compute that subtracts a velocity bias. This allows the translational -velocity of spherical or aspherical particles to be adjusted in -prescribed ways. +They both allow for velocity biases indirectly, via an optional extra +argument, another temperature compute that subtracts a velocity bias. +This allows the translational velocity of spherical or aspherical +particles to be adjusted in prescribed ways. Thermostatting in LAMMPS is performed by "fixes"_fix.html, or in one case by a pair style. Several thermostatting fixes are available: @@ -1644,15 +1647,21 @@ to the per-particle thermostatting of "fix langevin"_fix_langevin.html. Any of the thermostatting fixes can use temperature computes that -remove bias for two purposes: (a) computing the current temperature to -compare to the requested target temperature, and (b) adjusting only -the thermal temperature component of the particle's velocities. See -the doc pages for the individual fixes and for the +remove bias which has two effects. First, the current calculated +temperature, which is compared to the requested target temperature, is +caluclated with the velocity bias removed. Second, the thermostat +adjusts only the thermal temperature component of the particle's +velocities, which are the velocities with the bias removed. The +removed bias is then added back to the adjusted velocities. See the +doc pages for the individual fixes and for the "fix_modify"_fix_modify.html command for instructions on how to assign a temperature compute to a thermostatting fix. For example, you can apply a thermostat to only the x and z components of velocity by using it in conjunction with "compute -temp/partial"_compute_temp_partial.html. +temp/partial"_compute_temp_partial.html. Of you could thermostat only +the thermal temperature of a streaming flow of particles without +affecting the streaming velocity, by using "compute +temp/profile"_compute_temp_profile.html. IMPORTANT NOTE: Only the nvt fixes perform time integration, meaning they update the velocities and positions of particles due to forces @@ -1892,15 +1901,18 @@ void *lammps_extract_atom(void *, char *) void *lammps_extract_compute(void *, char *, int, int) void *lammps_extract_fix(void *, char *, int, int, int, int) void *lammps_extract_variable(void *, char *, char *) +int lammps_set_variable(void *, char *, char *) int lammps_get_natoms(void *) void lammps_get_coords(void *, double *) void lammps_put_coords(void *, double *) :pre These can extract various global or per-atom quantities from LAMMPS as -well as values calculated by a compute, fix, or variable. The "get" -and "put" operations can retrieve and reset atom coordinates. -See the library.cpp file and its associated header file library.h for -details. +well as values calculated by a compute, fix, or variable. The +"set_variable" function can set an existing string-style variable to a +new value, so that subsequent LAMMPS commands can access the variable. +The "get" and "put" operations can retrieve and reset atom +coordinates. See the library.cpp file and its associated header file +library.h for details. The key idea of the library interface is that you can write any functions you wish to define how your code talks to LAMMPS and add @@ -2131,6 +2143,453 @@ accumulated in a vector via the "fix vector"_fix_vector.html command, and time integrated via the "variable trap"_variable.html function, and thus extract D. +:line + +6.23 Using chunks to calculate system properties :link(howto_23),h4 + +In LAMMS, "chunks" are collections of atoms, as defined by the +"compute chunk/atom"_compute_chunk_atom.html command, which assigns +each atom to a chunk ID (or to no chunk at all). The number of chunks +and the assignment of chunk IDs to atoms can be static or change over +time. Examples of "chunks" are molecules or spatial bins or atoms +with similar values (e.g. coordination number or potential energy). + +The per-atom chunk IDs can be used as input to two other kinds of +commands, to calculate various properties of a system: + +"fix ave/chunk"_fix_ave_chunk.html +any of the "compute */chunk"_compute.html commands :ul + +Here, each of the 3 kinds of chunk-related commands is briefly +overviewed. Then some examples are given of how to compute different +properties with chunk commands. + +Compute chunk/atom command: :h5 + +This compute can assign atoms to chunks of various styles. Only atoms +in the specified group and optional specified region are assigned to a +chunk. Here are some possible chunk definitions: + +atoms in same molecule | chunk ID = molecule ID | +atoms of same atom type | chunk ID = atom type | +all atoms with same atom property (charge, radius, etc) | chunk ID = output of compute property/atom | +atoms in same cluster | chunk ID = output of "compute cluster/atom"_compute_cluster_atom.html command | +atoms in same spatial bin | chunk ID = bin ID | +atoms in same rigid body | chunk ID = molecule ID used to define rigid bodies | +atoms with similar potential energy | chunk ID = output of "compute pe/atom"_compute_pe_atom.html | +atoms with same local defect structure | chunk ID = output of "compute centro/atom"_compute_centro_atom.html or "compute coord/atom"_compute_coord_atom.html command :tb(s=|,c=2) + +Note that chunk IDs are integer values, so for atom properties or +computes that produce a floating point value, they will be truncated +to an integer. You could also use the compute in a variable that +scales the floating point value to spread it across multiple intergers. + +Spatial bins can be of various kinds, e.g. 1d bins = slabs, 2d bins = +pencils, 3d bins = boxes, spherical bins, cylindrical bins. + +This compute also calculates the number of chunks {Nchunk}, which is +used by other commands to tally per-chunk data. {Nchunk} can be a +static value or change over time (e.g. the number of clusters). The +chunk ID for an individual atom can also be static (e.g. a molecule +ID), or dynamic (e.g. what spatial bin an atom is in as it moves). + +Note that this compute allows the per-atom output of other +"computes"_compute.html, "fixes"_fix.html, and +"variables"_variable.html to be used to define chunk IDs for each +atom. This means you can write your own compute or fix to output a +per-atom quantity to use as chunk ID. See +"Section_modify"_Section_modify.html of the documentation for how to +do this. You can also define a "per-atom variable"_variable.html in +the input script that uses a formula to generate a chunk ID for each +atom. + +Fix ave/chunk command: :h5 + +This fix takes the ID of a "compute +chunk/atom"_compute_chunk_atom.html command as input. For each chunk, +it then sums one or more specified per-atom values over the atoms in +each chunk. The per-atom values can be any atom property, such as +velocity, force, charge, potential energy, kinetic energy, stress, +etc. Additional keywords are defined for per-chunk properties like +density and temperature. More generally any per-atom value generated +by other "computes"_compute.html, "fixes"_fix.html, and "per-atom +variables"_variable.html, can be summed over atoms in each chunk. + +Similar to other averaging fixes, this fix allows the summed per-chunk +values to be time-averaged in various ways, and output to a file. The +fix produces a global array as output with one row of values per +chunk. + +Compute */chunk commands: :h5 + +Currently the following computes operate on chunks of atoms to produce +per-chunk values. + +"compute com/chunk"_compute_com_chunk.html +"compute gyration/chunk"_compute_gyration_chunk.html +"compute inertia/chunk"_compute_inertia_chunk.html +"compute msd/chunk"_compute_msd_chunk.html +"compute property/chunk"_compute_property_chunk.html +"compute temp/chunk"_compute_temp_chunk.html +"compute torque/chunk"_compute_vcm_chunk.html +"compute vcm/chunk"_compute_vcm_chunk.html :ul + +They each take the ID of a "compute +chunk/atom"_compute_chunk_atom.html command as input. As their names +indicate, they calculate the center-of-mass, radius of gyration, +moments of inertia, mean-squared displacement, temperature, torque, +and velocity of center-of-mass for each chunk of atoms. The "compute +property/chunk"_compute_property_chunk.html command can tally the +count of atoms in each chunk and extract other per-chunk properties. + +The reason these various calculations are not part of the "fix +ave/chunk command"_fix_ave_chunk.html, is that each requires a more +complicated operation than simply summing and averaging over per-atom +values in each chunk. For example, many of them require calculation +of a center of mass, which requires summing mass*position over the +atoms and then dividing by summed mass. + +All of these computes produce a global vector or global array as +output, wih one or more values per chunk. They can be used +in various ways: + +As input to the "fix ave/time"_fix_ave_time.html command, which can +write the values to a file and optionally time average them. :ulb,l + +As input to the "fix ave/histo"_fix_ave_histo.html command to +histogram values across chunks. E.g. a histogram of cluster sizes or +molecule diffusion rates. :l + +As input to special functions of "equal-style +variables"_variable.html, like sum() and max(). E.g. to find the +largest cluster or fastest diffusing molecule. :l,ule + +Example calculations with chunks :h5 + +Here are eaxmples using chunk commands to calculate various +properties: + +(1) Average velocity in each of 1000 2d spatial bins: + +compute cc1 all chunk/atom bin/2d x 0.0 0.1 y lower 0.01 units reduced +fix 1 all ave/chunk 100 10 1000 cc1 vx vy file tmp.out :pre + +(2) Temperature in each spatial bin, after subtracting a flow +velocity: + +compute cc1 all chunk/atom bin/2d x 0.0 0.1 y lower 0.1 units reduced +compute vbias all temp/profile 1 0 0 y 10 +fix 1 all ave/chunk 100 10 1000 cc1 temp bias vbias file tmp.out :pre + +(3) Center of mass of each molecule: + +compute cc1 all chunk/atom molecule +compute myChunk all com/chunk cc1 +fix 1 all ave/time 100 1 100 c_myChunk file tmp.out mode vector :pre + +(4) Total force on each molecule and ave/max across all molecules: + +compute cc1 all chunk/atom molecule +fix 1 all ave/chunk 1000 1 1000 cc1 fx fy fz file tmp.out +variable xave equal ave(f_1[2]) +variable xmax equal max(f_1[2]) +thermo 1000 +thermo_style custom step temp v_xave v_xmax :pre + +(5) Histogram of cluster sizes: + +compute cluster all cluster/atom 1.0 +compute cc1 all chunk/atom c_cluster compress yes +compute size all property/chunk cc1 count +fix 1 all ave/histo 100 1 100 0 20 20 c_size mode vector ave running beyond ignore file tmp.histo :pre + +:line + +6.24 Setting parameters for the "kspace_style pppm/disp"_kspace_style.html command :link(howto_24),h4 + +The PPPM method computes interactions by splitting the pair potential +into two parts, one of which is computed in a normal pairwise fashion, +the so-called real-space part, and one of which is computed using the +Fourier transform, the so called reciprocal-space or kspace part. For +both parts, the potential is not computed exactly but is approximated. +Thus, there is an error in both parts of the computation, the +real-space and the kspace error. The just mentioned facts are true +both for the PPPM for Coulomb as well as dispersion interactions. The +deciding difference - and also the reason why the parameters for +pppm/disp have to be selected with more care - is the impact of the +errors on the results: The kspace error of the PPPM for Coulomb and +dispersion interaction and the real-space error of the PPPM for +Coulomb interaction have the character of noise. In contrast, the +real-space error of the PPPM for dispersion has a clear physical +interpretation: the underprediction of cohesion. As a consequence, the +real-space error has a much stronger effect than the kspace error on +simulation results for pppm/disp. Parameters must thus be chosen in a +way that this error is much smaller than the kspace error. + +When using pppm/disp and not making any specifications on the PPPM +parameters via the kspace modify command, parameters will be tuned +such that the real-space error and the kspace error are equal. This +will result in simulations that are either inaccurate or slow, both of +which is not desirable. For selecting parameters for the pppm/disp +that provide fast and accurate simulations, there are two approaches, +which both have their up- and downsides. + +The first approach is to set desired real-space an kspace accuracies +via the {kspace_modify force/disp/real} and {kspace_modify +force/disp/kspace} commands. Note that the accuracies have to be +specified in force units and are thus dependend on the chosen unit +settings. For real units, 0.0001 and 0.002 seem to provide reasonable +accurate and efficient computations for the real-space and kspace +accuracies. 0.002 and 0.05 work well for most systems using lj +units. PPPM parameters will be generated based on the desired +accuracies. The upside of this approach is that it usually provides a +good set of parameters and will work for both the {kspace_modify diff +ad} and {kspace_modify diff ik} options. The downside of the method +is that setting the PPPM parameters will take some time during the +initialization of the simulation. + +The second approach is to set the parameters for the pppm/disp +explicitly using the {kspace_modify mesh/disp}, {kspace_modify +order/disp}, and {kspace_modify gewald/disp} commands. This approach +requires a more experienced user who understands well the impact of +the choice of parameters on the simulation accuracy and +performance. This approach provides a fast initialization of the +simulation. However, it is sensitive to errors: A combination of +parameters that will perform well for one system might result in +far-from-optimal conditions for other simulations. For example, +parametes that provide accurate and fast computations for +all-atomistic force fields can provide insufficient accuracy or +united-atomistic force fields (which is related to that the latter +typically have larger dispersion coefficients). + +To avoid inaccurate or inefficient simulations, the pppm/disp stops +simulations with an error message if no action is taken to control the +PPPM parameters. If the automatic parameter generation is desired and +real-space and kspace accuracies are desired to be equal, this error +message can be suppressed using the {kspace_modify disp/auto yes} +command. + +A reasonable approach that combines the upsides of both methods is to +make the first run using the {kspace_modify force/disp/real} and +{kspace_modify force/disp/kspace} commands, write down the PPPM +parameters from the outut, and specify these parameters using the +second approach in subsequent runs (which have the same composition, +force field, and approximately the same volume). + +Concerning the performance of the pppm/disp there are two more things +to consider. The first is that when using the pppm/disp, the cutoff +parameter does no longer affect the accuracy of the simulation +(subject to that gewald/disp is adjusted when changing the cutoff). +The performance can thus be increased by examining different values +for the cutoff parameter. A lower bound for the cutoff is only set by +the truncation error of the repulsive term of pair potentials. + +The second is that the mixing rule of the pair style has an impact on +the computation time when using the pppm/disp. Fastest computations +are achieved when using the geometric mixing rule. Using the +arithmetic mixing rule substantially increases the computational cost. +The computational overhead can be reduced using the {kspace_modify +mix/disp geom} and {kspace_modify splittol} commands. The first +command simply enforces geometric mixing of the dispersion +coeffiecients in kspace computations. This introduces some error in +the computations but will also significantly speed-up the +simulations. The second keyword sets the accuracy with which the +dispersion coefficients are approximated using a matrix factorization +approach. This may result in better accuracy then using the first +command, but will usually also not provide an equally good increase of +efficiency. + +Finally, pppm/disp can also be used when no mixing rules apply. +This can be achieved using the {kspace_modify mix/disp none} command. +Note that the code does not check automatically whether any mixing +rule is fulfilled. If mixing rules do not apply, the user will have +to specify this command explicitly. + +:line + +6.25 Adiabatic core/shell model :link(howto_25),h4 + +The adiabatic core-shell model by "Mitchell and +Finchham"_#MitchellFinchham is a simple method for adding +polarizability to a system. In order to mimic the electron shell of +an ion, a ghost atom is attached to it. This way the ions are split +into a core and a shell where the latter is meant to react to the +electrostatic environment inducing polarizability. + +Technically, shells are attached to the cores by a spring force f = +k*r where k is a parametrized spring constant and r is the distance +between the core and the shell. The charges of the core and the shell +add up to the ion charge, thus q(ion) = q(core) + q(shell). In a +similar fashion the mass of the ion is distributed on the core and the +shell with the core having the larger mass. + +To run this model in LAMMPS, "atom_style"_atom_style.html {full} can +be used since atom charge and bonds are needed. Each kind of +core/shell pair requires two atom types and a bond type. The core and +shell of a core/shell pair should be bonded to each other with a +harmonic bond that provides the spring force. For example, a data file +for NaCl, as found in examples/coreshell, has this format: + +432 atoms # core and shell atoms +216 bonds # number of core/shell springs :pre + +4 atom types # 2 cores and 2 shells for Na and Cl +2 bond types :pre + +0.0 24.09597 xlo xhi +0.0 24.09597 ylo yhi +0.0 24.09597 zlo zhi :pre + +Masses # core/shell mass ratio = 0.1 :pre + +1 20.690784 # Na core +2 31.90500 # Cl core +3 2.298976 # Na shell +4 3.54500 # Cl shell :pre + +Atoms :pre + +1 1 2 1.5005 0.00000000 0.00000000 0.00000000 # core of core/shell pair 1 +2 1 4 -2.5005 0.00000000 0.00000000 0.00000000 # shell of core/shell pair 1 +3 2 1 1.5056 4.01599500 4.01599500 4.01599500 # core of core/shell pair 2 +4 2 3 -0.5056 4.01599500 4.01599500 4.01599500 # shell of core/shell pair 2 +(...) :pre + +Bonds # Bond topology for spring forces :pre + +1 2 1 2 # spring for core/shell pair 1 +2 2 3 4 # spring for core/shell pair 2 +(...) :pre + +Non-Coulombic (e.g. Lennard-Jones) pairwise interactions are only +defined between the shells. Coulombic interactions are defined +between all cores and shells. If desired, additional bonds can be +specified between cores. + +The "special_bonds"_special_bonds.html command should be used to +turn-off the Coulombic interaction within core/shell pairs, since that +interaction is set by the bond spring. This is done using the +"special_bonds"_special_bonds.html command with a 1-2 weight = 0.0, +which is the default value. + +Since the core/shell model permits distances of r = 0.0 between the +core and shell, a pair style with a "cs" suffix needs to be used to +implement a valid long-range Coulombic correction. Several such pair +styles are provided in the CORESHELL package. See "this doc +page"_pair_cs.html for details. All of the core/shell enabled pair +styles require the use of a long-range Coulombic solver, as specified +by the "kspace_style"_kspace_style.html command. Either the PPPM or +Ewald solvers can be used. + +For the NaCL example problem, these pair style and bond style settings +are used: + +pair_style born/coul/long/cs 20.0 20.0 +pair_coeff * * 0.0 1.000 0.00 0.00 0.00 +pair_coeff 3 3 487.0 0.23768 0.00 1.05 0.50 #Na-Na +pair_coeff 3 4 145134.0 0.23768 0.00 6.99 8.70 #Na-Cl +pair_coeff 4 4 405774.0 0.23768 0.00 72.40 145.40 #Cl-Cl :pre + +bond_style harmonic +bond_coeff 1 63.014 0.0 +bond_coeff 2 25.724 0.0 :pre + +When running dynamics with the adiabatic core/shell model, the +following issues should be considered. Since the relative motion of +the core and shell particles corresponds to the polarization, typical +thermostats can alter the polarization behaviour, meaining the shell +will not react freely to its electrostatic environment. Therefore +it's typically desirable to decouple the relative motion of the +core/shell pair, which is an imaginary degree of freedom, from the +real physical system. To do that, the "compute +temp/cs"_compute_temp_cs.html command can be used, in conjunction with +any of the thermostat fixes, such as "fix nvt"_fix_nh.html or "fix +langevin"_fix_langevin. This compute uses the center-of-mass velocity +of the core/shell pairs to calculate a temperature, and insures that +velocity is what is rescaled for thermostatting purposes. The +"compute temp/cs"_compute_temp_cs.html command requires input of two +groups, one for the core atoms, another for the shell atoms. These +can be defined using the "group {type}"_group.html command. Note that +to perform thermostatting using this definition of temperature, the +"fix modify temp"_fix_modify.html command should be used to assign the +comptue to the thermostat fix. Likewise the "thermo_modify +temp"_thermo_modify.html command can be used to make this temperature +be output for the overall system. + +For the NaCl example, this can be done as follows: + +group cores type 1 2 +group shells type 3 4 +compute CSequ all temp/cs cores shells +fix thermoberendsen all temp/berendsen 1427 1427 0.4 # thermostat for the true physical system +fix thermostatequ all nve # integrator as needed for the berendsen thermostat +fix_modify thermoberendsen temp CSequ +thermo_modify temp CSequ # output of center-of-mass derived temperature :pre + +When intializing the velocities of a system with core/shell pairs, it +is also desirable to not introduce energy into the relative motion of +the core/shell particles, but only assign a center-of-mass velocity to +the pairs. This can be done by using the {bias} keyword of the +"velocity create"_velocity.html command and assigning the "compute +temp/cs"_compute_temp_cs.html command to the {temp} keyword of the +"velocity"_velocity.html commmand, e.g. + +velocity all create 1427 134 bias yes temp CSequ +velocity all scale 1427 temp CSequ :pre + +It is important to note that the polarizability of the core/shell +pairs is based on their relative motion. Therefore the choice of +spring force and mass ratio need to ensure much faster relative motion +of the 2 atoms within the core/shell pair than their center-of-mass +velocity. This allow the shells to effectively react instantaneously +to the electrostatic environment. This fast movement also limits the +timestep size that can be used. + +Additionally, the mass mismatch of the core and shell particles means +that only a small amount of energy is transfered to the decoupled +imaginary degrees of freedom. However, this transfer will typically +lead to a a small drift in total energy over time. This internal +energy can be monitored using the "compute +chunk/atom"_compute_chunk_atom.html and "compute +temp/chunk"_compute_temp_chunk.html commands. The internal kinetic +energies of each core/shell pair can then be summed using the sum() +special functino of the "variable"_variable.html command. Or they can +be time/averaged and output using the "fix ave/time"_fix_ave_time.html +command. To use these commands, each core/shell pair must be defined +as a "chunk". If each core/shell pair is defined as its own molecule, +the molecule ID can be used to define the chunks. If cores are bonded +to each other to form larger molecules, then another way to define the +chunks is to use the "fix property/atom"_fix_property_atom.html to +assign a core/shell ID to each atom via a special field in the data +file read by the "read_data"_read_data.html command. This field can +then be accessed by the "compute +property/atom"_compute_property_atom.html command, to use as input to +the "compute chunk/atom"_compute_chunk_atom.html command to define the +core/shell pairs as chunks. + +For example, + +fix csinfo all property/atom i_CSID # property/atom command +read_data NaCl_CS_x0.1_prop.data fix csinfo NULL CS-Info # atom property added in the data-file +compute prop all property/atom i_CSID +compute cs_chunk all chunk/atom c_prop +compute cstherm all temp/chunk cs_chunk temp internal com yes cdof 3.0 # note the chosen degrees of freedom for the core/shell pairs +fix ave_chunk all ave/time 10 1 10 c_cstherm file chunk.dump mode vector :pre + +The additional section in the date file would be formatted like this: + +CS-Info # header of additional section :pre + +1 1 # column 1 = atom ID, column 2 = core/shell ID +2 1 +3 2 +4 2 +5 3 +6 3 +7 4 +8 4 +(...) :pre + :line :line @@ -2167,3 +2626,7 @@ Phys, 79, 926 (1983). :link(Shinoda) [(Shinoda)] Shinoda, Shiga, and Mikami, Phys Rev B, 69, 134103 (2004). + +:link(MitchellFinchham) +[(Mitchell and Finchham)] Mitchell, Finchham, J Phys Condensed Matter, +5, 1031-1038 (1993). diff --git a/doc/Section_intro.html b/doc/Section_intro.html index de104b5a2e14c936cf9243a36a334db842b44450..9b8d624556d6ff9020d0d05786a4e27b00810b14 100644 --- a/doc/Section_intro.html +++ b/doc/Section_intro.html @@ -144,7 +144,7 @@ commands)| Package | Description | Author(s) | Doc page | Example | Library | |||||||||||||||||||||||||
| ASPHERE | aspherical particles | - | Section_howto | ellipse | - | |||||||||||||||||||||||||
| ASPHERE | aspherical particles | - | Section_howto 6.14 | ellipse | - | |||||||||||||||||||||||||
| BODY | body-style particles | - | body | body | - | |||||||||||||||||||||||||
| CLASS2 | class 2 force fields | - | pair_style lj/class2 | - | - | |||||||||||||||||||||||||
| COLLOID | colloidal particles | - | atom_style colloid | colloid | - | |||||||||||||||||||||||||
| CORESHELL | adiabatic core/shell model | Hendrik Heenen (Technical U of Munich) | Section_howto 6.25 | coreshell | - | |||||||||||||||||||||||||
| DIPOLE | point dipole particles | - | pair_style dipole/cut | dipole | - | |||||||||||||||||||||||||
| FLD | Fast Lubrication Dynamics | Kumar & Bybee & Higdon (1) | pair_style lubricateU | - | - | |||||||||||||||||||||||||
| GPU | GPU-enabled styles | Mike Brown (ORNL) | Section accelerate | gpu | lib/gpu | |||||||||||||||||||||||||
| GRANULAR | granular systems | - | Section_howto | pour | - | |||||||||||||||||||||||||
| GPU | GPU-enabled styles | Mike Brown (ORNL) | Section accelerate | gpu | lib/gpu | |||||||||||||||||||||||||
| GRANULAR | granular systems | - | Section_howto 6.6 | pour | - | |||||||||||||||||||||||||
| KIM | openKIM potentials | Smirichinski & Elliot & Tadmor (3) | pair_style kim | kim | KIM | |||||||||||||||||||||||||
| KOKKOS | Kokkos-enabled styles | Trott & Edwards (4) | Section_accelerate | kokkos | lib/kokkos | |||||||||||||||||||||||||
| KOKKOS | Kokkos-enabled styles | Trott & Edwards (4) | Section_accelerate | kokkos | lib/kokkos | |||||||||||||||||||||||||
| KSPACE | long-range Coulombic solvers | - | kspace_style | peptide | - | |||||||||||||||||||||||||
| MANYBODY | many-body potentials | - | pair_style tersoff | shear | - | |||||||||||||||||||||||||
| MEAM | modified EAM potential | Greg Wagner (Sandia) | pair_style meam | meam | lib/meam | |||||||||||||||||||||||||
| MC | Monte Carlo options | - | fix gcmc | - | - | |||||||||||||||||||||||||
| MOLECULE | molecular system force fields | - | Section_howto | peptide | - | |||||||||||||||||||||||||
| OPT | optimized pair styles | Fischer & Richie & Natoli (2) | Section accelerate | - | - | |||||||||||||||||||||||||
| MOLECULE | molecular system force fields | - | Section_howto 6.3 | peptide | - | |||||||||||||||||||||||||
| OPT | optimized pair styles | Fischer & Richie & Natoli (2) | Section accelerate | - | - | |||||||||||||||||||||||||
| PERI | Peridynamics models | Mike Parks (Sandia) | pair_style peri | peri | - | |||||||||||||||||||||||||
| POEMS | coupled rigid body motion | Rudra Mukherjee (JPL) | fix poems | rigid | lib/poems | |||||||||||||||||||||||||
| PYTHON | embed Python code in an input script | - | python | python | lib/python | |||||||||||||||||||||||||
| REAX | ReaxFF potential | Aidan Thompson (Sandia) | pair_style reax | reax | lib/reax | |||||||||||||||||||||||||
| REPLICA | multi-replica methods | - | Section_howto | tad | - | |||||||||||||||||||||||||
| REPLICA | multi-replica methods | - | Section_howto 6.5 | tad | - | |||||||||||||||||||||||||
| RIGID | rigid bodies | - | fix rigid | rigid | - | |||||||||||||||||||||||||
| SHOCK | shock loading methods | - | fix msst | - | - | |||||||||||||||||||||||||
| SNAP | quantum-fit potential | Aidan Thompson (Sandia) | pair snap | snap | - | |||||||||||||||||||||||||
| USER-AWPMD | wave-packet MD | Ilya Valuev (JIHT) | pair_style awpmd/cut | USER/awpmd | - | lib/awpmd | ||||||||||||||||||||||||
| USER-CG-CMM | coarse-graining model | Axel Kohlmeyer (Temple U) | pair_style lj/sdk | USER/cg-cmm | cg | - | ||||||||||||||||||||||||
| USER-COLVARS | collective variables | Fiorin & Henin & Kohlmeyer (3) | fix colvars | USER/colvars | colvars | lib/colvars | ||||||||||||||||||||||||
| USER-CUDA | NVIDIA GPU styles | Christian Trott (U Tech Ilmenau) | Section accelerate | USER/cuda | - | lib/cuda | ||||||||||||||||||||||||
| USER-CUDA | NVIDIA GPU styles | Christian Trott (U Tech Ilmenau) | Section accelerate | USER/cuda | - | lib/cuda | ||||||||||||||||||||||||
| USER-EFF | electron force field | Andres Jaramillo-Botero (Caltech) | pair_style eff/cut | USER/eff | eff | - | ||||||||||||||||||||||||
| USER-FEP | free energy perturbation | Agilio Padua (U Blaise Pascal Clermont-Ferrand) | fix adapt/fep | USER/fep | - | - | ||||||||||||||||||||||||
| USER-INTEL | Vectorized CPU and Intel(R) coprocessor styles | W. Michael Brown (Intel) | Section accelerate | examples/intel | - | - | ||||||||||||||||||||||||
| USER-INTEL | Vectorized CPU and Intel(R) coprocessor styles | W. Michael Brown (Intel) | Section accelerate | examples/intel | - | - | ||||||||||||||||||||||||
| USER-LB | Lattice Boltzmann fluid | Colin Denniston (U Western Ontario) | fix lb/fluid | USER/lb | - | - | ||||||||||||||||||||||||
| USER-MISC | single-file contributions | USER-MISC/README | USER-MISC/README | - | - | - | ||||||||||||||||||||||||
| USER-MOLFILE | VMD molfile plug-ins | Axel Kohlmeyer (Temple U) | dump molfile | - | - | VMD-MOLFILE | ||||||||||||||||||||||||
| USER-OMP | OpenMP threaded styles | Axel Kohlmeyer (Temple U) | Section accelerate | - | - | - | ||||||||||||||||||||||||
| USER-OMP | OpenMP threaded styles | Axel Kohlmeyer (Temple U) | Section accelerate | - | - | - | ||||||||||||||||||||||||
| USER-PHONON | phonon dynamical matrix | Ling-Ti Kong (Shanghai Jiao Tong U) | fix phonon | USER/phonon | - | - | ||||||||||||||||||||||||
| USER-QMMM | QM/MM coupling | Axel Kohlmeyer (Temple U) | fix qmmm | lib/qmmm/example1 | - | lib/qmmm | ||||||||||||||||||||||||
| USER-QMMM | QM/MM coupling | Axel Kohlmeyer (Temple U) | fix qmmm | USER/qmmm | - | lib/qmmm | ||||||||||||||||||||||||
| USER-QUIP | QM/MM coupling | Albert Bartok-Partay (U Cambridge) | fix quip | USER/quip | - | lib/quip | ||||||||||||||||||||||||
| USER-REAXC | C version of ReaxFF | Metin Aktulga (LBNL) | pair_style reaxc | reax | - | - | ||||||||||||||||||||||||
| USER-SPH | smoothed particle hydrodynamics | Georg Ganzenmuller (EMI) | userguide.pdf | USER/sph | sph | - | ||||||||||||||||||||||||
diff --git a/doc/Section_packages.txt b/doc/Section_packages.txt
index db93b894855434987879dbefec851a71884d976f..38671c1a47c71a0d72861c7a556cff5484b34e80 100644
--- a/doc/Section_packages.txt
+++ b/doc/Section_packages.txt
@@ -39,26 +39,28 @@ packages, more details are provided.
The current list of standard packages is as follows:
Package, Description, Author(s), Doc page, Example, Library
-ASPHERE, aspherical particles, -, "Section_howto"_Section_howto.html#howto_14, ellipse, -
+ASPHERE, aspherical particles, -, "Section_howto 6.14"_Section_howto.html#howto_14, ellipse, -
BODY, body-style particles, -, "body"_body.html, body, -
CLASS2, class 2 force fields, -, "pair_style lj/class2"_pair_class2.html, -, -
COLLOID, colloidal particles, -, "atom_style colloid"_atom_style.html, colloid, -
+CORESHELL, adiabatic core/shell model, Hendrik Heenen (Technical U of Munich), "Section_howto 6.25"_Section_howto.html#howto_25, coreshell, -
DIPOLE, point dipole particles, -, "pair_style dipole/cut"_pair_dipole.html, dipole, -
FLD, Fast Lubrication Dynamics, Kumar & Bybee & Higdon (1), "pair_style lubricateU"_pair_lubricateU.html, -, -
-GPU, GPU-enabled styles, Mike Brown (ORNL), "Section accelerate"_Section_accelerate.html#acc_6, gpu, lib/gpu
-GRANULAR, granular systems, -, "Section_howto"_Section_howto.html#howto_6, pour, -
+GPU, GPU-enabled styles, Mike Brown (ORNL), "Section accelerate"_accelerate_gpu.html, gpu, lib/gpu
+GRANULAR, granular systems, -, "Section_howto 6.6"_Section_howto.html#howto_6, pour, -
KIM, openKIM potentials, Smirichinski & Elliot & Tadmor (3), "pair_style kim"_pair_kim.html, kim, KIM
-KOKKOS, Kokkos-enabled styles, Trott & Edwards (4), "Section_accelerate"_Section_accelerate.html#acc_8, kokkos, lib/kokkos
+KOKKOS, Kokkos-enabled styles, Trott & Edwards (4), "Section_accelerate"_accelerate_kokkos.html, kokkos, lib/kokkos
KSPACE, long-range Coulombic solvers, -, "kspace_style"_kspace_style.html, peptide, -
MANYBODY, many-body potentials, -, "pair_style tersoff"_pair_tersoff.html, shear, -
MEAM, modified EAM potential, Greg Wagner (Sandia), "pair_style meam"_pair_meam.html, meam, lib/meam
MC, Monte Carlo options, -, "fix gcmc"_fix_gcmc.html, -, -
-MOLECULE, molecular system force fields, -, "Section_howto"_Section_howto.html#howto_3, peptide, -
-OPT, optimized pair styles, Fischer & Richie & Natoli (2), "Section accelerate"_Section_accelerate.html#acc_4, -, -
+MOLECULE, molecular system force fields, -, "Section_howto 6.3"_Section_howto.html#howto_3, peptide, -
+OPT, optimized pair styles, Fischer & Richie & Natoli (2), "Section accelerate"_accelerate_opt.html, -, -
PERI, Peridynamics models, Mike Parks (Sandia), "pair_style peri"_pair_peri.html, peri, -
POEMS, coupled rigid body motion, Rudra Mukherjee (JPL), "fix poems"_fix_poems.html, rigid, lib/poems
+PYTHON, embed Python code in an input script, -, "python"_python.html, python, lib/python
REAX, ReaxFF potential, Aidan Thompson (Sandia), "pair_style reax"_pair_reax.html, reax, lib/reax
-REPLICA, multi-replica methods, -, "Section_howto"_Section_howto.html#howto_5, tad, -
+REPLICA, multi-replica methods, -, "Section_howto 6.5"_Section_howto.html#howto_5, tad, -
RIGID, rigid bodies, -, "fix rigid"_fix_rigid.html, rigid, -
SHOCK, shock loading methods, -, "fix msst"_fix_msst.html, -, -
SNAP, quantum-fit potential, Aidan Thompson (Sandia), "pair snap"_pair_snap.html, snap, -
@@ -115,16 +117,17 @@ USER-ATC, atom-to-continuum coupling, Jones & Templeton & Zimmerman (2), "fix at
USER-AWPMD, wave-packet MD, Ilya Valuev (JIHT), "pair_style awpmd/cut"_pair_awpmd.html, USER/awpmd, -, lib/awpmd
USER-CG-CMM, coarse-graining model, Axel Kohlmeyer (Temple U), "pair_style lj/sdk"_pair_sdk.html, USER/cg-cmm, "cg"_cg, -
USER-COLVARS, collective variables, Fiorin & Henin & Kohlmeyer (3), "fix colvars"_fix_colvars.html, USER/colvars, "colvars"_colvars, lib/colvars
-USER-CUDA, NVIDIA GPU styles, Christian Trott (U Tech Ilmenau), "Section accelerate"_Section_accelerate.html#acc_7, USER/cuda, -, lib/cuda
+USER-CUDA, NVIDIA GPU styles, Christian Trott (U Tech Ilmenau), "Section accelerate"_accelerate_cuda.html, USER/cuda, -, lib/cuda
USER-EFF, electron force field, Andres Jaramillo-Botero (Caltech), "pair_style eff/cut"_pair_eff.html, USER/eff, "eff"_eff, -
USER-FEP, free energy perturbation, Agilio Padua (U Blaise Pascal Clermont-Ferrand), "fix adapt/fep"_fix_adapt.html, USER/fep, -, -
-USER-INTEL, Vectorized CPU and Intel(R) coprocessor styles, W. Michael Brown (Intel), "Section accelerate"_Section_accelerate.html#acc_9, examples/intel, -, -
+USER-INTEL, Vectorized CPU and Intel(R) coprocessor styles, W. Michael Brown (Intel), "Section accelerate"_accelerate_intel.html, examples/intel, -, -
USER-LB, Lattice Boltzmann fluid, Colin Denniston (U Western Ontario), "fix lb/fluid"_fix_lb_fluid.html, USER/lb, -, -
USER-MISC, single-file contributions, USER-MISC/README, USER-MISC/README, -, -, -
USER-MOLFILE, "VMD"_VMD molfile plug-ins, Axel Kohlmeyer (Temple U), "dump molfile"_dump_molfile.html, -, -, VMD-MOLFILE
-USER-OMP, OpenMP threaded styles, Axel Kohlmeyer (Temple U), "Section accelerate"_Section_accelerate.html#acc_5, -, -, -
+USER-OMP, OpenMP threaded styles, Axel Kohlmeyer (Temple U), "Section accelerate"_accelerate_omp.html, -, -, -
USER-PHONON, phonon dynamical matrix, Ling-Ti Kong (Shanghai Jiao Tong U), "fix phonon"_fix_phonon.html, USER/phonon, -, -
-USER-QMMM, QM/MM coupling, Axel Kohlmeyer (Temple U), "fix qmmm"_fix_qmmm.html, lib/qmmm/example1, -, lib/qmmm
+USER-QMMM, QM/MM coupling, Axel Kohlmeyer (Temple U), "fix qmmm"_fix_qmmm.html, USER/qmmm, -, lib/qmmm
+USER-QUIP, QM/MM coupling, Albert Bartok-Partay (U Cambridge), "fix quip"_fix_quip.html, USER/quip, -, lib/quip
USER-REAXC, C version of ReaxFF, Metin Aktulga (LBNL), "pair_style reaxc"_pair_reax_c.html, reax, -, -
USER-SPH, smoothed particle hydrodynamics, Georg Ganzenmuller (EMI), "userguide.pdf"_USER/sph/SPH_LAMMPS_userguide.pdf, USER/sph, "sph"_sph, -
:tb(ea=c)
diff --git a/doc/Section_python.html b/doc/Section_python.html
index 82addb5052276fd74b08d7acd643ebab65a3e3f2..42898d7bbf2187d9d63799e62487cd5754d199c5 100644
--- a/doc/Section_python.html
+++ b/doc/Section_python.html
@@ -11,61 +11,98 @@
11. Python interface to LAMMPS-This section describes how to build and use LAMMPS via a Python -interface. - -
|