Merge branch 'master' into pair_drip
This commit is contained in:
@ -1220,8 +1220,7 @@ if(PKG_USER-INTEL)
|
|||||||
${USER-INTEL_SOURCES_DIR}/fix_nh_intel.cpp
|
${USER-INTEL_SOURCES_DIR}/fix_nh_intel.cpp
|
||||||
${USER-INTEL_SOURCES_DIR}/intel_buffers.cpp
|
${USER-INTEL_SOURCES_DIR}/intel_buffers.cpp
|
||||||
${USER-INTEL_SOURCES_DIR}/nbin_intel.cpp
|
${USER-INTEL_SOURCES_DIR}/nbin_intel.cpp
|
||||||
${USER-INTEL_SOURCES_DIR}/npair_intel.cpp
|
${USER-INTEL_SOURCES_DIR}/npair_intel.cpp)
|
||||||
${USER-INTEL_SOURCES_DIR}/verlet_lrt_intel.cpp)
|
|
||||||
|
|
||||||
set_property(GLOBAL PROPERTY "USER-INTEL_SOURCES" "${USER-INTEL_SOURCES}")
|
set_property(GLOBAL PROPERTY "USER-INTEL_SOURCES" "${USER-INTEL_SOURCES}")
|
||||||
|
|
||||||
@ -1230,9 +1229,12 @@ if(PKG_USER-INTEL)
|
|||||||
RegisterNBinStyle(${USER-INTEL_SOURCES_DIR}/nbin_intel.h)
|
RegisterNBinStyle(${USER-INTEL_SOURCES_DIR}/nbin_intel.h)
|
||||||
RegisterNPairStyle(${USER-INTEL_SOURCES_DIR}/npair_intel.h)
|
RegisterNPairStyle(${USER-INTEL_SOURCES_DIR}/npair_intel.h)
|
||||||
RegisterFixStyle(${USER-INTEL_SOURCES_DIR}/fix_intel.h)
|
RegisterFixStyle(${USER-INTEL_SOURCES_DIR}/fix_intel.h)
|
||||||
RegisterIntegrateStyle(${USER-INTEL_SOURCES_DIR}/verlet_lrt_intel.h)
|
|
||||||
|
|
||||||
get_property(USER-INTEL_SOURCES GLOBAL PROPERTY USER-INTEL_SOURCES)
|
get_property(USER-INTEL_SOURCES GLOBAL PROPERTY USER-INTEL_SOURCES)
|
||||||
|
if(PKG_KSPACE)
|
||||||
|
list(APPEND USER-INTEL_SOURCES ${USER-INTEL_SOURCES_DIR}/verlet_lrt_intel.cpp)
|
||||||
|
RegisterIntegrateStyle(${USER-INTEL_SOURCES_DIR}/verlet_lrt_intel.h)
|
||||||
|
endif()
|
||||||
|
|
||||||
list(APPEND LIB_SOURCES ${USER-INTEL_SOURCES})
|
list(APPEND LIB_SOURCES ${USER-INTEL_SOURCES})
|
||||||
include_directories(${USER-INTEL_SOURCES_DIR})
|
include_directories(${USER-INTEL_SOURCES_DIR})
|
||||||
@ -1370,7 +1372,15 @@ if(PKG_GPU)
|
|||||||
set(OCL_COMMON_HEADERS ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_preprocessor.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_aux_fun1.h)
|
set(OCL_COMMON_HEADERS ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_preprocessor.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_aux_fun1.h)
|
||||||
|
|
||||||
file(GLOB GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu)
|
file(GLOB GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cu)
|
||||||
list(REMOVE_ITEM GPU_LIB_CU ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne.cu ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne_lj.cu)
|
list(REMOVE_ITEM GPU_LIB_CU
|
||||||
|
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne.cu
|
||||||
|
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne_lj.cu
|
||||||
|
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared.cu
|
||||||
|
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared_lj.cu
|
||||||
|
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff.cu
|
||||||
|
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_zbl.cu
|
||||||
|
${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_mod.cu
|
||||||
|
)
|
||||||
|
|
||||||
foreach(GPU_KERNEL ${GPU_LIB_CU})
|
foreach(GPU_KERNEL ${GPU_LIB_CU})
|
||||||
get_filename_component(basename ${GPU_KERNEL} NAME_WE)
|
get_filename_component(basename ${GPU_KERNEL} NAME_WE)
|
||||||
@ -1381,7 +1391,21 @@ if(PKG_GPU)
|
|||||||
|
|
||||||
GenerateOpenCLHeader(gayberne ${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne.cu)
|
GenerateOpenCLHeader(gayberne ${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne.cu)
|
||||||
GenerateOpenCLHeader(gayberne_lj ${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_lj_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne_lj.cu)
|
GenerateOpenCLHeader(gayberne_lj ${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_lj_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_gayberne_lj.cu)
|
||||||
list(APPEND GPU_LIB_SOURCES ${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_cl.h ${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_lj_cl.h)
|
GenerateOpenCLHeader(re_squared ${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared.cu)
|
||||||
|
GenerateOpenCLHeader(re_squared_lj ${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_lj_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_ellipsoid_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_re_squared_lj.cu)
|
||||||
|
GenerateOpenCLHeader(tersoff ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff.cu)
|
||||||
|
GenerateOpenCLHeader(tersoff_zbl ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_zbl_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_zbl_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_zbl.cu)
|
||||||
|
GenerateOpenCLHeader(tersoff_mod ${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_mod_cl.h ${OCL_COMMON_HEADERS} ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_mod_extra.h ${LAMMPS_LIB_SOURCE_DIR}/gpu/lal_tersoff_mod.cu)
|
||||||
|
|
||||||
|
list(APPEND GPU_LIB_SOURCES
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_cl.h
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/gpu/gayberne_lj_cl.h
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_cl.h
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/gpu/re_squared_lj_cl.h
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_cl.h
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_zbl_cl.h
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/gpu/tersoff_mod_cl.h
|
||||||
|
)
|
||||||
|
|
||||||
add_library(gpu STATIC ${GPU_LIB_SOURCES})
|
add_library(gpu STATIC ${GPU_LIB_SOURCES})
|
||||||
target_link_libraries(gpu ${OpenCL_LIBRARIES})
|
target_link_libraries(gpu ${OpenCL_LIBRARIES})
|
||||||
|
|||||||
@ -6,7 +6,7 @@ function(GenerateOpenCLHeader varname outfile files)
|
|||||||
foreach(IDX RANGE 2 ${ARG_END})
|
foreach(IDX RANGE 2 ${ARG_END})
|
||||||
list(GET ARGV ${IDX} filename)
|
list(GET ARGV ${IDX} filename)
|
||||||
file(READ ${filename} content)
|
file(READ ${filename} content)
|
||||||
string(REGEX REPLACE "\\s*//[^\n]*\n" "" content "${content}")
|
string(REGEX REPLACE "\\s*//[^\n]*\n" "\n" content "${content}")
|
||||||
string(REGEX REPLACE "\\\\" "\\\\\\\\" content "${content}")
|
string(REGEX REPLACE "\\\\" "\\\\\\\\" content "${content}")
|
||||||
string(REGEX REPLACE "\"" "\\\\\"" content "${content}")
|
string(REGEX REPLACE "\"" "\\\\\"" content "${content}")
|
||||||
string(REGEX REPLACE "([^\n]+)\n" "\"\\1\\\\n\"\n" content "${content}")
|
string(REGEX REPLACE "([^\n]+)\n" "\"\\1\\\\n\"\n" content "${content}")
|
||||||
|
|||||||
@ -211,7 +211,7 @@ cmake -C ../cmake/presets/all_on.cmake -C ../cmake/presets/nolib.cmake -D PKG_GP
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><code><CMAKE_VERBOSE_MAKEFILE/code></td>
|
<td><code>CMAKE_VERBOSE_MAKEFILE</code></td>
|
||||||
<td>Enable verbose output from Makefile builds (useful for debugging), the same can be achived by adding `VERBOSE=1` to the `make` call.</td>
|
<td>Enable verbose output from Makefile builds (useful for debugging), the same can be achived by adding `VERBOSE=1` to the `make` call.</td>
|
||||||
<td>
|
<td>
|
||||||
<dl>
|
<dl>
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
.TH LAMMPS "11 April 2019" "2019-04-11"
|
.TH LAMMPS "30 April 2019" "2019-04-30"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
.B LAMMPS
|
.B LAMMPS
|
||||||
\- Molecular Dynamics Simulator.
|
\- Molecular Dynamics Simulator.
|
||||||
|
|||||||
@ -247,7 +247,10 @@ Maxwell50 = NVIDIA Maxwell generation CC 5.0
|
|||||||
Maxwell52 = NVIDIA Maxwell generation CC 5.2
|
Maxwell52 = NVIDIA Maxwell generation CC 5.2
|
||||||
Maxwell53 = NVIDIA Maxwell generation CC 5.3
|
Maxwell53 = NVIDIA Maxwell generation CC 5.3
|
||||||
Pascal60 = NVIDIA Pascal generation CC 6.0
|
Pascal60 = NVIDIA Pascal generation CC 6.0
|
||||||
Pascal61 = NVIDIA Pascal generation CC 6.1 :ul
|
Pascal61 = NVIDIA Pascal generation CC 6.1
|
||||||
|
Volta70 = NVIDIA Volta generation CC 7.0
|
||||||
|
Volta72 = NVIDIA Volta generation CC 7.2
|
||||||
|
Turing75 = NVIDIA Turing generation CC 7.5 :ul
|
||||||
|
|
||||||
[CMake build]:
|
[CMake build]:
|
||||||
|
|
||||||
|
|||||||
@ -83,6 +83,7 @@ An alphabetic list of all general LAMMPS commands.
|
|||||||
"molecule"_molecule.html,
|
"molecule"_molecule.html,
|
||||||
"ndx2group"_group2ndx.html,
|
"ndx2group"_group2ndx.html,
|
||||||
"neb"_neb.html,
|
"neb"_neb.html,
|
||||||
|
"neb_spin"_neb_spin.html,
|
||||||
"neigh_modify"_neigh_modify.html,
|
"neigh_modify"_neigh_modify.html,
|
||||||
"neighbor"_neighbor.html,
|
"neighbor"_neighbor.html,
|
||||||
"newton"_newton.html,
|
"newton"_newton.html,
|
||||||
|
|||||||
@ -116,6 +116,7 @@ Actions:
|
|||||||
|
|
||||||
"minimize"_minimize.html,
|
"minimize"_minimize.html,
|
||||||
"neb"_neb.html,
|
"neb"_neb.html,
|
||||||
|
"neb_spin"_neb_spin.html,
|
||||||
"prd"_prd.html,
|
"prd"_prd.html,
|
||||||
"rerun"_rerun.html,
|
"rerun"_rerun.html,
|
||||||
"run"_run.html,
|
"run"_run.html,
|
||||||
|
|||||||
@ -107,6 +107,7 @@ OPT.
|
|||||||
"mvv/edpd"_fix_mvv_dpd.html,
|
"mvv/edpd"_fix_mvv_dpd.html,
|
||||||
"mvv/tdpd"_fix_mvv_dpd.html,
|
"mvv/tdpd"_fix_mvv_dpd.html,
|
||||||
"neb"_fix_neb.html,
|
"neb"_fix_neb.html,
|
||||||
|
"neb_spin"_fix_neb_spin.html,
|
||||||
"nph (ko)"_fix_nh.html,
|
"nph (ko)"_fix_nh.html,
|
||||||
"nph/asphere (o)"_fix_nph_asphere.html,
|
"nph/asphere (o)"_fix_nph_asphere.html,
|
||||||
"nph/body"_fix_nph_body.html,
|
"nph/body"_fix_nph_body.html,
|
||||||
|
|||||||
BIN
doc/src/Eqs/neb_spin_angle.jpg
Normal file
BIN
doc/src/Eqs/neb_spin_angle.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.4 KiB |
15
doc/src/Eqs/neb_spin_angle.tex
Normal file
15
doc/src/Eqs/neb_spin_angle.tex
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
\documentclass[preview]{standalone}
|
||||||
|
\usepackage{varwidth}
|
||||||
|
\usepackage[utf8x]{inputenc}
|
||||||
|
\usepackage{amsmath, amssymb, graphics, setspace}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
\begin{varwidth}{50in}
|
||||||
|
\begin{equation}
|
||||||
|
\omega_i^{\nu} =
|
||||||
|
(\nu - 1) \Delta \omega_i
|
||||||
|
{\rm ~~and~~} \Delta \omega_i = \frac{\omega_i}{Q-1}
|
||||||
|
, \nonumber
|
||||||
|
\end{equation}
|
||||||
|
\end{varwidth}
|
||||||
|
\end{document}
|
||||||
BIN
doc/src/Eqs/neb_spin_k.jpg
Normal file
BIN
doc/src/Eqs/neb_spin_k.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 8.2 KiB |
16
doc/src/Eqs/neb_spin_k.tex
Normal file
16
doc/src/Eqs/neb_spin_k.tex
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
\documentclass[preview]{standalone}
|
||||||
|
\usepackage{varwidth}
|
||||||
|
\usepackage[utf8x]{inputenc}
|
||||||
|
\usepackage{amsmath, amssymb, graphics, setspace}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
\begin{varwidth}{50in}
|
||||||
|
\begin{equation}
|
||||||
|
\vec{k}_i =
|
||||||
|
\frac{\vec{m}_i^I \times \vec{m}_i^F}{\left|\vec{m}_i^I
|
||||||
|
\times \vec{m}_i^F\right|}
|
||||||
|
%&{\rm ~if~}& \vec{m}_i^I \times \vec{m}_i^F
|
||||||
|
, \nonumber
|
||||||
|
\end{equation}
|
||||||
|
\end{varwidth}
|
||||||
|
\end{document}
|
||||||
BIN
doc/src/Eqs/neb_spin_rodrigues_formula.jpg
Normal file
BIN
doc/src/Eqs/neb_spin_rodrigues_formula.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 20 KiB |
16
doc/src/Eqs/neb_spin_rodrigues_formula.tex
Normal file
16
doc/src/Eqs/neb_spin_rodrigues_formula.tex
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
\documentclass[preview]{standalone}
|
||||||
|
\usepackage{varwidth}
|
||||||
|
\usepackage[utf8x]{inputenc}
|
||||||
|
\usepackage{amsmath, amssymb, graphics, setspace}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
\begin{varwidth}{50in}
|
||||||
|
\begin{equation}
|
||||||
|
\vec{m}_i^{\nu} = \vec{m}_i^{I} \cos(\omega_i^{\nu})
|
||||||
|
+ (\vec{k}_i \times \vec{m}_i^{I}) \sin(\omega_i^{\nu})
|
||||||
|
+ (1.0-\cos(\omega_i^{\nu})) \vec{k}_i (\vec{k}_i\cdot
|
||||||
|
\vec{m}_i^{I})
|
||||||
|
, \nonumber
|
||||||
|
\end{equation}
|
||||||
|
\end{varwidth}
|
||||||
|
\end{document}
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.5 KiB |
@ -1,9 +1,9 @@
|
|||||||
\documentclass[12pt]{article}
|
\documentclass[12pt]{article}
|
||||||
|
\pagestyle{empty}
|
||||||
\begin{document}
|
\begin{document}
|
||||||
|
|
||||||
$$
|
$$
|
||||||
E(r) = \frac{A}{r^{12}} - \frac{A}{r^{6}}
|
E(r) = \frac{A}{r^{12}} - \frac{B}{r^{6}}
|
||||||
$$
|
$$
|
||||||
|
|
||||||
\end{document}
|
\end{document}
|
||||||
|
|||||||
@ -17,6 +17,7 @@ periodically.
|
|||||||
These are the relevant commands:
|
These are the relevant commands:
|
||||||
|
|
||||||
"neb"_neb.html for nudged elastic band calculations
|
"neb"_neb.html for nudged elastic band calculations
|
||||||
|
"neb_spin"_neb_spin.html for magnetic nudged elastic band calculations
|
||||||
"prd"_prd.html for parallel replica dynamics
|
"prd"_prd.html for parallel replica dynamics
|
||||||
"tad"_tad.html for temperature accelerated dynamics
|
"tad"_tad.html for temperature accelerated dynamics
|
||||||
"temper"_temper.html for parallel tempering
|
"temper"_temper.html for parallel tempering
|
||||||
|
|||||||
@ -10,7 +10,7 @@ Documentation"_ld - "LAMMPS Commands"_lc :c
|
|||||||
Magnetic spins :h3
|
Magnetic spins :h3
|
||||||
|
|
||||||
The magnetic spin simulations are enabled by the SPIN package, whose
|
The magnetic spin simulations are enabled by the SPIN package, whose
|
||||||
implementation is detailed in "Tranchida"_#Tranchida7.
|
implementation is detailed in "Tranchida"_#Tranchida.
|
||||||
|
|
||||||
The model represents the simulation of atomic magnetic spins coupled
|
The model represents the simulation of atomic magnetic spins coupled
|
||||||
to lattice vibrations. The dynamics of those magnetic spins can be used
|
to lattice vibrations. The dynamics of those magnetic spins can be used
|
||||||
@ -36,13 +36,28 @@ A Langevin thermostat can be applied to those magnetic spins using
|
|||||||
"fix langevin/spin"_fix_langevin_spin.html. Typically, this thermostat
|
"fix langevin/spin"_fix_langevin_spin.html. Typically, this thermostat
|
||||||
can be coupled to another Langevin thermostat applied to the atoms
|
can be coupled to another Langevin thermostat applied to the atoms
|
||||||
using "fix langevin"_fix_langevin.html in order to simulate
|
using "fix langevin"_fix_langevin.html in order to simulate
|
||||||
thermostatted spin-lattice system.
|
thermostatted spin-lattice systems.
|
||||||
|
|
||||||
The magnetic Gilbert damping can also be applied using "fix
|
The magnetic Gilbert damping can also be applied using "fix
|
||||||
langevin/spin"_fix_langevin_spin.html. It allows to either dissipate
|
langevin/spin"_fix_langevin_spin.html. It allows to either dissipate
|
||||||
the thermal energy of the Langevin thermostat, or to perform a
|
the thermal energy of the Langevin thermostat, or to perform a
|
||||||
relaxation of the magnetic configuration toward an equilibrium state.
|
relaxation of the magnetic configuration toward an equilibrium state.
|
||||||
|
|
||||||
|
The command "fix setforce/spin"_fix_setforce.html allows to set the
|
||||||
|
components of the magnetic precession vectors (while erasing and
|
||||||
|
replacing the previously computed magnetic precession vectors on
|
||||||
|
the atom).
|
||||||
|
This command can be used to freeze the magnetic moment of certain
|
||||||
|
atoms in the simulation by zeroing their precession vector.
|
||||||
|
|
||||||
|
The command "fix nve/spin"_fix_nve_spin.html can be used to
|
||||||
|
perform a symplectic integration of the combined dynamics of spins
|
||||||
|
and atomic motions.
|
||||||
|
|
||||||
|
The minimization style "min/spin"_min_spin.html can be applied
|
||||||
|
to the spins to perform a minimization of the spin configuration.
|
||||||
|
|
||||||
|
|
||||||
All the computed magnetic properties can be output by two main
|
All the computed magnetic properties can be output by two main
|
||||||
commands. The first one is "compute spin"_compute_spin.html, that
|
commands. The first one is "compute spin"_compute_spin.html, that
|
||||||
enables to evaluate magnetic averaged quantities, such as the total
|
enables to evaluate magnetic averaged quantities, such as the total
|
||||||
@ -54,6 +69,6 @@ magnetic spin, or the magnetic force acting on this spin.
|
|||||||
|
|
||||||
:line
|
:line
|
||||||
|
|
||||||
:link(Tranchida7)
|
:link(Tranchida)
|
||||||
[(Tranchida)] Tranchida, Plimpton, Thibaudeau and Thompson,
|
[(Tranchida)] Tranchida, Plimpton, Thibaudeau and Thompson,
|
||||||
arXiv preprint arXiv:1801.10233, (2018).
|
Journal of Computational Physics, 372, 406-425, (2018).
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<!-- HTML_ONLY -->
|
<!-- HTML_ONLY -->
|
||||||
<HEAD>
|
<HEAD>
|
||||||
<TITLE>LAMMPS Users Manual</TITLE>
|
<TITLE>LAMMPS Users Manual</TITLE>
|
||||||
<META NAME="docnumber" CONTENT="29 Mar 2019 version">
|
<META NAME="docnumber" CONTENT="30 Apr 2019 version">
|
||||||
<META NAME="author" CONTENT="http://lammps.sandia.gov - Sandia National Laboratories">
|
<META NAME="author" CONTENT="http://lammps.sandia.gov - Sandia National Laboratories">
|
||||||
<META NAME="copyright" CONTENT="Copyright (2003) Sandia Corporation. This software and manual is distributed under the GNU General Public License.">
|
<META NAME="copyright" CONTENT="Copyright (2003) Sandia Corporation. This software and manual is distributed under the GNU General Public License.">
|
||||||
</HEAD>
|
</HEAD>
|
||||||
@ -21,7 +21,7 @@
|
|||||||
:line
|
:line
|
||||||
|
|
||||||
LAMMPS Documentation :c,h1
|
LAMMPS Documentation :c,h1
|
||||||
29 Mar 2019 version :c,h2
|
30 Apr 2019 version :c,h2
|
||||||
|
|
||||||
"What is a LAMMPS version?"_Manual_version.html
|
"What is a LAMMPS version?"_Manual_version.html
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@ -918,6 +918,7 @@ src/SPIN: filenames -> commands
|
|||||||
"fix nve/spin"_fix_nve_spin.html
|
"fix nve/spin"_fix_nve_spin.html
|
||||||
"fix precession/spin"_fix_precession_spin.html
|
"fix precession/spin"_fix_precession_spin.html
|
||||||
"compute spin"_compute_spin.html
|
"compute spin"_compute_spin.html
|
||||||
|
"neb/spin"_neb_spin.html
|
||||||
examples/SPIN :ul
|
examples/SPIN :ul
|
||||||
|
|
||||||
:line
|
:line
|
||||||
|
|||||||
@ -111,16 +111,10 @@ Makefile.kokkos_mpi_only) will give better performance than the OpenMP
|
|||||||
back end (i.e. Makefile.kokkos_omp) because some of the overhead to make
|
back end (i.e. Makefile.kokkos_omp) because some of the overhead to make
|
||||||
the code thread-safe is removed.
|
the code thread-safe is removed.
|
||||||
|
|
||||||
NOTE: The default for the "package kokkos"_package.html command is to
|
NOTE: Use the "-pk kokkos" "command-line switch"_Run_options.html to
|
||||||
use "full" neighbor lists and set the Newton flag to "off" for both
|
change the default "package kokkos"_package.html options. See its doc
|
||||||
pairwise and bonded interactions. However, when running on CPUs, it
|
page for details and default settings. Experimenting with its options
|
||||||
will typically be faster to use "half" neighbor lists and set the
|
can provide a speed-up for specific calculations. For example:
|
||||||
Newton flag to "on", just as is the case for non-accelerated pair
|
|
||||||
styles. It can also be faster to use non-threaded communication. Use
|
|
||||||
the "-pk kokkos" "command-line switch"_Run_options.html to change the
|
|
||||||
default "package kokkos"_package.html options. See its doc page for
|
|
||||||
details and default settings. Experimenting with its options can
|
|
||||||
provide a speed-up for specific calculations. For example:
|
|
||||||
|
|
||||||
mpirun -np 16 lmp_kokkos_mpi_only -k on -sf kk -pk kokkos newton on neigh half comm no -in in.lj # Newton on, Half neighbor list, non-threaded comm :pre
|
mpirun -np 16 lmp_kokkos_mpi_only -k on -sf kk -pk kokkos newton on neigh half comm no -in in.lj # Newton on, Half neighbor list, non-threaded comm :pre
|
||||||
|
|
||||||
@ -190,19 +184,18 @@ tasks/node. The "-k on t Nt" command-line switch sets the number of
|
|||||||
threads/task as Nt. The product of these two values should be N, i.e.
|
threads/task as Nt. The product of these two values should be N, i.e.
|
||||||
256 or 264.
|
256 or 264.
|
||||||
|
|
||||||
NOTE: The default for the "package kokkos"_package.html command is to
|
NOTE: The default for the "package kokkos"_package.html command when
|
||||||
use "full" neighbor lists and set the Newton flag to "off" for both
|
running on KNL is to use "half" neighbor lists and set the Newton flag
|
||||||
pairwise and bonded interactions. When running on KNL, this will
|
to "on" for both pairwise and bonded interactions. This will typically
|
||||||
typically be best for pair-wise potentials. For many-body potentials,
|
be best for many-body potentials. For simpler pair-wise potentials, it
|
||||||
using "half" neighbor lists and setting the Newton flag to "on" may be
|
may be faster to use a "full" neighbor list with Newton flag to "off".
|
||||||
faster. It can also be faster to use non-threaded communication. Use
|
Use the "-pk kokkos" "command-line switch"_Run_options.html to change
|
||||||
the "-pk kokkos" "command-line switch"_Run_options.html to change the
|
the default "package kokkos"_package.html options. See its doc page for
|
||||||
default "package kokkos"_package.html options. See its doc page for
|
details and default settings. Experimenting with its options can provide
|
||||||
details and default settings. Experimenting with its options can
|
a speed-up for specific calculations. For example:
|
||||||
provide a speed-up for specific calculations. For example:
|
|
||||||
|
|
||||||
mpirun -np 64 lmp_kokkos_phi -k on t 4 -sf kk -pk kokkos comm no -in in.lj # Newton off, full neighbor list, non-threaded comm
|
mpirun -np 64 lmp_kokkos_phi -k on t 4 -sf kk -pk kokkos comm host -in in.reax # Newton on, half neighbor list, threaded comm
|
||||||
mpirun -np 64 lmp_kokkos_phi -k on t 4 -sf kk -pk kokkos newton on neigh half comm no -in in.reax # Newton on, half neighbor list, non-threaded comm :pre
|
mpirun -np 64 lmp_kokkos_phi -k on t 4 -sf kk -pk kokkos newton off neigh full comm no -in in.lj # Newton off, full neighbor list, non-threaded comm :pre
|
||||||
|
|
||||||
NOTE: MPI tasks and threads should be bound to cores as described
|
NOTE: MPI tasks and threads should be bound to cores as described
|
||||||
above for CPUs.
|
above for CPUs.
|
||||||
@ -236,19 +229,19 @@ one or more nodes, each with two GPUs:
|
|||||||
mpirun -np 2 lmp_kokkos_cuda_openmpi -k on g 2 -sf kk -in in.lj # 1 node, 2 MPI tasks/node, 2 GPUs/node
|
mpirun -np 2 lmp_kokkos_cuda_openmpi -k on g 2 -sf kk -in in.lj # 1 node, 2 MPI tasks/node, 2 GPUs/node
|
||||||
mpirun -np 32 -ppn 2 lmp_kokkos_cuda_openmpi -k on g 2 -sf kk -in in.lj # 16 nodes, 2 MPI tasks/node, 2 GPUs/node (32 GPUs total) :pre
|
mpirun -np 32 -ppn 2 lmp_kokkos_cuda_openmpi -k on g 2 -sf kk -in in.lj # 16 nodes, 2 MPI tasks/node, 2 GPUs/node (32 GPUs total) :pre
|
||||||
|
|
||||||
NOTE: The default for the "package kokkos"_package.html command is to
|
NOTE: The default for the "package kokkos"_package.html command when
|
||||||
use "full" neighbor lists and set the Newton flag to "off" for both
|
running on GPUs is to use "full" neighbor lists and set the Newton flag
|
||||||
pairwise and bonded interactions, along with threaded communication.
|
to "off" for both pairwise and bonded interactions, along with threaded
|
||||||
When running on Maxwell or Kepler GPUs, this will typically be
|
communication. When running on Maxwell or Kepler GPUs, this will
|
||||||
best. For Pascal GPUs, using "half" neighbor lists and setting the
|
typically be best. For Pascal GPUs, using "half" neighbor lists and
|
||||||
Newton flag to "on" may be faster. For many pair styles, setting the
|
setting the Newton flag to "on" may be faster. For many pair styles,
|
||||||
neighbor binsize equal to the ghost atom cutoff will give speedup.
|
setting the neighbor binsize equal to twice the CPU default value will
|
||||||
Use the "-pk kokkos" "command-line switch"_Run_options.html to change
|
give speedup, which is the default when running on GPUs. Use the "-pk
|
||||||
the default "package kokkos"_package.html options. See its doc page
|
kokkos" "command-line switch"_Run_options.html to change the default
|
||||||
for details and default settings. Experimenting with its options can
|
"package kokkos"_package.html options. See its doc page for details and
|
||||||
provide a speed-up for specific calculations. For example:
|
default settings. Experimenting with its options can provide a speed-up
|
||||||
|
for specific calculations. For example:
|
||||||
|
|
||||||
mpirun -np 2 lmp_kokkos_cuda_openmpi -k on g 2 -sf kk -pk kokkos binsize 2.8 -in in.lj # Set binsize = neighbor ghost cutoff
|
|
||||||
mpirun -np 2 lmp_kokkos_cuda_openmpi -k on g 2 -sf kk -pk kokkos newton on neigh half binsize 2.8 -in in.lj # Newton on, half neighbor list, set binsize = neighbor ghost cutoff :pre
|
mpirun -np 2 lmp_kokkos_cuda_openmpi -k on g 2 -sf kk -pk kokkos newton on neigh half binsize 2.8 -in in.lj # Newton on, half neighbor list, set binsize = neighbor ghost cutoff :pre
|
||||||
|
|
||||||
NOTE: For good performance of the KOKKOS package on GPUs, you must
|
NOTE: For good performance of the KOKKOS package on GPUs, you must
|
||||||
|
|||||||
@ -67,6 +67,7 @@ Commands :h1
|
|||||||
minimize
|
minimize
|
||||||
molecule
|
molecule
|
||||||
neb
|
neb
|
||||||
|
neb_spin
|
||||||
neigh_modify
|
neigh_modify
|
||||||
neighbor
|
neighbor
|
||||||
newton
|
newton
|
||||||
|
|||||||
@ -98,6 +98,16 @@ fix to add the energy change from the biasing force added by the fix
|
|||||||
to the system's potential energy as part of "thermodynamic
|
to the system's potential energy as part of "thermodynamic
|
||||||
output"_thermo_style.html.
|
output"_thermo_style.html.
|
||||||
|
|
||||||
|
The {fix_modify configfile <config file>} option allows to add settings
|
||||||
|
from an additional config file to the colvars module. This option can
|
||||||
|
only be used, after the system has been initialized with a "run"_run.html
|
||||||
|
command.
|
||||||
|
|
||||||
|
The {fix_modify config <quoted string>} option allows to add settings
|
||||||
|
from inline strings. Those have to fit on a single line when enclosed
|
||||||
|
in a pair of double quotes ("), or can span multiple lines when bracketed
|
||||||
|
by a pair of triple double quotes (""", like python embedded documentation).
|
||||||
|
|
||||||
This fix computes a global scalar which can be accessed by various
|
This fix computes a global scalar which can be accessed by various
|
||||||
"output commands"_Howto_output.html. The scalar is the cumulative
|
"output commands"_Howto_output.html. The scalar is the cumulative
|
||||||
energy change due to this fix. The scalar value calculated by this
|
energy change due to this fix. The scalar value calculated by this
|
||||||
|
|||||||
@ -99,4 +99,4 @@ integration fix (e.g. {fix nve/spin}).
|
|||||||
|
|
||||||
:link(Tranchida2)
|
:link(Tranchida2)
|
||||||
[(Tranchida)] Tranchida, Plimpton, Thibaudeau and Thompson,
|
[(Tranchida)] Tranchida, Plimpton, Thibaudeau and Thompson,
|
||||||
Journal of Computational Physics, (2018).
|
Journal of Computational Physics, 372, 406-425, (2018).
|
||||||
|
|||||||
@ -97,7 +97,7 @@ Note that in this case the specified {Kspring} is in force/distance
|
|||||||
units.
|
units.
|
||||||
|
|
||||||
With a value of {ideal}, the spring force is computed as suggested in
|
With a value of {ideal}, the spring force is computed as suggested in
|
||||||
"(WeinenE)"_#WeinenE :
|
"(WeinanE)"_#WeinanE :
|
||||||
|
|
||||||
Fnudge_parallel = -{Kspring} * (RD-RDideal) / (2 * meanDist) :pre
|
Fnudge_parallel = -{Kspring} * (RD-RDideal) / (2 * meanDist) :pre
|
||||||
|
|
||||||
@ -224,8 +224,8 @@ specified (no inter-replica force on the end replicas).
|
|||||||
[(Henkelman2)] Henkelman, Uberuaga, Jonsson, J Chem Phys, 113,
|
[(Henkelman2)] Henkelman, Uberuaga, Jonsson, J Chem Phys, 113,
|
||||||
9901-9904 (2000).
|
9901-9904 (2000).
|
||||||
|
|
||||||
:link(WeinenE)
|
:link(WeinanE)
|
||||||
[(WeinenE)] E, Ren, Vanden-Eijnden, Phys Rev B, 66, 052301 (2002).
|
[(WeinanE)] E, Ren, Vanden-Eijnden, Phys Rev B, 66, 052301 (2002).
|
||||||
|
|
||||||
:link(Jonsson)
|
:link(Jonsson)
|
||||||
[(Jonsson)] Jonsson, Mills and Jacobsen, in Classical and Quantum
|
[(Jonsson)] Jonsson, Mills and Jacobsen, in Classical and Quantum
|
||||||
|
|||||||
76
doc/src/fix_neb_spin.txt
Normal file
76
doc/src/fix_neb_spin.txt
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
|
||||||
|
|
||||||
|
:link(lws,http://lammps.sandia.gov)
|
||||||
|
:link(ld,Manual.html)
|
||||||
|
:link(lc,Commands_all.html)
|
||||||
|
|
||||||
|
:line
|
||||||
|
|
||||||
|
fix neb/spin command :h3
|
||||||
|
|
||||||
|
[Syntax:]
|
||||||
|
|
||||||
|
fix ID group-ID neb/spin Kspring :pre
|
||||||
|
|
||||||
|
ID, group-ID are documented in "fix"_fix.html command :ulb,l
|
||||||
|
neb/spin = style name of this fix command :l
|
||||||
|
Kspring = spring constant for parallel nudging force
|
||||||
|
(force/distance units or force units, see parallel keyword) :pre,ule
|
||||||
|
|
||||||
|
[Examples:]
|
||||||
|
|
||||||
|
fix 1 active neb/spin 1.0
|
||||||
|
|
||||||
|
[Description:]
|
||||||
|
|
||||||
|
Add nudging forces to spins in the group for a multi-replica
|
||||||
|
simulation run via the "neb/spin"_neb_spin.html command to perform a
|
||||||
|
geodesic nudged elastic band (GNEB) calculation for finding the
|
||||||
|
transition state.
|
||||||
|
Hi-level explanations of GNEB are given with the
|
||||||
|
"neb/spin"_neb_spin.html command and on the
|
||||||
|
"Howto replica"_Howto_replica.html doc page.
|
||||||
|
The fix neb/spin command must be used with the "neb/spin" command and
|
||||||
|
defines how inter-replica nudging forces are computed. A GNEB
|
||||||
|
calculation is divided in two stages. In the first stage n replicas
|
||||||
|
are relaxed toward a MEP until convergence. In the second stage, the
|
||||||
|
climbing image scheme is enabled, so that the replica having the highest
|
||||||
|
energy relaxes toward the saddle point (i.e. the point of highest energy
|
||||||
|
along the MEP), and a second relaxation is performed.
|
||||||
|
|
||||||
|
The nudging forces are calculated as explained in
|
||||||
|
"(BessarabB)"_#BessarabB).
|
||||||
|
See this reference for more explanation about their expression.
|
||||||
|
|
||||||
|
[Restart, fix_modify, output, run start/stop, minimize info:]
|
||||||
|
|
||||||
|
No information about this fix is written to "binary restart
|
||||||
|
files"_restart.html. None of the "fix_modify"_fix_modify.html options
|
||||||
|
are relevant to this fix. No global or per-atom quantities are stored
|
||||||
|
by this fix for access by various "output commands"_Howto_output.html.
|
||||||
|
No parameter of this fix can be used with the {start/stop} keywords of
|
||||||
|
the "run"_run.html command.
|
||||||
|
|
||||||
|
The forces due to this fix are imposed during an energy minimization,
|
||||||
|
as invoked by the "minimize"_minimize.html command via the
|
||||||
|
"neb/spin"_neb_spin.html command.
|
||||||
|
|
||||||
|
[Restrictions:]
|
||||||
|
|
||||||
|
This command can only be used if LAMMPS was built with the SPIN
|
||||||
|
package. See the "Build package"_Build_package.html doc
|
||||||
|
page for more info.
|
||||||
|
|
||||||
|
[Related commands:]
|
||||||
|
|
||||||
|
"neb_spin"_neb_spin.html
|
||||||
|
|
||||||
|
[Default:]
|
||||||
|
|
||||||
|
none
|
||||||
|
|
||||||
|
:line
|
||||||
|
|
||||||
|
:link(BessarabB)
|
||||||
|
[(BessarabB)] Bessarab, Uzdin, Jonsson, Comp Phys Comm, 196,
|
||||||
|
335-347 (2015).
|
||||||
@ -73,4 +73,4 @@ instead of "array" is also valid.
|
|||||||
|
|
||||||
:link(Tranchida1)
|
:link(Tranchida1)
|
||||||
[(Tranchida)] Tranchida, Plimpton, Thibaudeau and Thompson,
|
[(Tranchida)] Tranchida, Plimpton, Thibaudeau and Thompson,
|
||||||
Journal of Computational Physics, (2018).
|
Journal of Computational Physics, 372, 406-425, (2018).
|
||||||
|
|||||||
@ -31,7 +31,7 @@ fix 1 all precession/spin zeeman 0.1 0.0 0.0 1.0 anisotropy 0.001 0.0 0.0 1.0 :p
|
|||||||
|
|
||||||
[Description:]
|
[Description:]
|
||||||
|
|
||||||
Impose a force torque to each magnetic spin in the group.
|
This fix applies a precession torque to each magnetic spin in the group.
|
||||||
|
|
||||||
Style {zeeman} is used for the simulation of the interaction
|
Style {zeeman} is used for the simulation of the interaction
|
||||||
between the magnetic spins in the defined group and an external
|
between the magnetic spins in the defined group and an external
|
||||||
|
|||||||
@ -14,7 +14,7 @@ fix ID group-ID print N string keyword value ... :pre
|
|||||||
|
|
||||||
ID, group-ID are documented in "fix"_fix.html command :ulb,l
|
ID, group-ID are documented in "fix"_fix.html command :ulb,l
|
||||||
print = style name of this fix command :l
|
print = style name of this fix command :l
|
||||||
N = print every N steps :l
|
N = print every N steps; N can be a variable (see below) :l
|
||||||
string = text string to print with optional variable names :l
|
string = text string to print with optional variable names :l
|
||||||
zero or more keyword/value pairs may be appended :l
|
zero or more keyword/value pairs may be appended :l
|
||||||
keyword = {file} or {append} or {screen} or {title} :l
|
keyword = {file} or {append} or {screen} or {title} :l
|
||||||
@ -40,6 +40,21 @@ If it contains variables it must be enclosed in double quotes to
|
|||||||
insure they are not evaluated when the input script line is read, but
|
insure they are not evaluated when the input script line is read, but
|
||||||
will instead be evaluated each time the string is printed.
|
will instead be evaluated each time the string is printed.
|
||||||
|
|
||||||
|
Instead of a numeric value, N can be specified as an "equal-style
|
||||||
|
variable"_variable.html, which should be specified as v_name, where
|
||||||
|
name is the variable name. In this case, the variable is evaluated at
|
||||||
|
the beginning of a run to determine the [next] timestep at which the
|
||||||
|
string will be written out. On that timestep, the variable will be
|
||||||
|
evaluated again to determine the next timestep, etc.
|
||||||
|
Thus the variable should return timestep values. See the stagger()
|
||||||
|
and logfreq() and stride() math functions for "equal-style
|
||||||
|
variables"_variable.html, as examples of useful functions to use in
|
||||||
|
this context. For example, the following commands will print output at
|
||||||
|
timesteps 10,20,30,100,200,300,1000,2000,etc:
|
||||||
|
|
||||||
|
variable s equal logfreq(10,3,10)
|
||||||
|
fix extra all print v_s "Coords of marker atom = $x $y $z" :pre
|
||||||
|
|
||||||
The specified group-ID is ignored by this fix.
|
The specified group-ID is ignored by this fix.
|
||||||
|
|
||||||
See the "variable"_variable.html command for a description of {equal}
|
See the "variable"_variable.html command for a description of {equal}
|
||||||
|
|||||||
@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
fix setforce command :h3
|
fix setforce command :h3
|
||||||
fix setforce/kk command :h3
|
fix setforce/kk command :h3
|
||||||
|
fix setforce/spin command :h3
|
||||||
|
|
||||||
[Syntax:]
|
[Syntax:]
|
||||||
|
|
||||||
@ -27,6 +28,7 @@ keyword = {region} :l
|
|||||||
|
|
||||||
fix freeze indenter setforce 0.0 0.0 0.0
|
fix freeze indenter setforce 0.0 0.0 0.0
|
||||||
fix 2 edge setforce NULL 0.0 0.0
|
fix 2 edge setforce NULL 0.0 0.0
|
||||||
|
fix 1 edge setforce/spin 0.0 0.0 0.0
|
||||||
fix 2 edge setforce NULL 0.0 v_oscillate :pre
|
fix 2 edge setforce NULL 0.0 v_oscillate :pre
|
||||||
|
|
||||||
[Description:]
|
[Description:]
|
||||||
@ -65,6 +67,19 @@ to it.
|
|||||||
|
|
||||||
:line
|
:line
|
||||||
|
|
||||||
|
Style {spin} suffix sets the components of the magnetic precession
|
||||||
|
vectors instead of the mechanical forces. This also erases all
|
||||||
|
previously computed magnetic precession vectors on the atom, though
|
||||||
|
additional magnetic fixes could add new forces.
|
||||||
|
|
||||||
|
This command can be used to freeze the magnetic moment of certain
|
||||||
|
atoms in the simulation by zeroing their precession vector.
|
||||||
|
|
||||||
|
All options defined above remain valid, they just apply to the magnetic
|
||||||
|
precession vectors instead of the forces.
|
||||||
|
|
||||||
|
:line
|
||||||
|
|
||||||
Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
|
Styles with a {gpu}, {intel}, {kk}, {omp}, or {opt} suffix are
|
||||||
functionally the same as the corresponding style without the suffix.
|
functionally the same as the corresponding style without the suffix.
|
||||||
They have been optimized to run faster, depending on your available
|
They have been optimized to run faster, depending on your available
|
||||||
@ -117,7 +132,10 @@ forces to any value besides zero when performing a minimization. Use
|
|||||||
the "fix addforce"_fix_addforce.html command if you want to apply a
|
the "fix addforce"_fix_addforce.html command if you want to apply a
|
||||||
non-zero force to atoms during a minimization.
|
non-zero force to atoms during a minimization.
|
||||||
|
|
||||||
[Restrictions:] none
|
[Restrictions:]
|
||||||
|
|
||||||
|
The fix {setforce/spin} only makes sense when LAMMPS was built with the
|
||||||
|
SPIN package.
|
||||||
|
|
||||||
[Related commands:]
|
[Related commands:]
|
||||||
|
|
||||||
|
|||||||
@ -17,13 +17,13 @@ wall/gran = style name of this fix command :l
|
|||||||
fstyle = style of force interactions between particles and wall :l
|
fstyle = style of force interactions between particles and wall :l
|
||||||
possible choices: hooke, hooke/history, hertz/history, granular :pre
|
possible choices: hooke, hooke/history, hertz/history, granular :pre
|
||||||
fstyle_params = parameters associated with force interaction style :l
|
fstyle_params = parameters associated with force interaction style :l
|
||||||
For {hooke}, {hooke/history}, and {hertz/history}, {fstyle_params} are:
|
For {hooke}, {hooke/history}, and {hertz/history}, {fstyle_params} are:
|
||||||
Kn = elastic constant for normal particle repulsion (force/distance units or pressure units - see discussion below)
|
Kn = elastic constant for normal particle repulsion (force/distance units or pressure units - see discussion below)
|
||||||
Kt = elastic constant for tangential contact (force/distance units or pressure units - see discussion below)
|
Kt = elastic constant for tangential contact (force/distance units or pressure units - see discussion below)
|
||||||
gamma_n = damping coefficient for collisions in normal direction (1/time units or 1/time-distance units - see discussion below)
|
gamma_n = damping coefficient for collisions in normal direction (1/time units or 1/time-distance units - see discussion below)
|
||||||
gamma_t = damping coefficient for collisions in tangential direction (1/time units or 1/time-distance units - see discussion below)
|
gamma_t = damping coefficient for collisions in tangential direction (1/time units or 1/time-distance units - see discussion below)
|
||||||
xmu = static yield criterion (unitless value between 0.0 and 1.0e4)
|
xmu = static yield criterion (unitless value between 0.0 and 1.0e4)
|
||||||
dampflag = 0 or 1 if tangential damping force is excluded or included :pre
|
dampflag = 0 or 1 if tangential damping force is excluded or included :pre
|
||||||
For {granular}, {fstyle_params} are set using the same syntax as for the {pair_coeff} command of "pair_style granular"_pair_granular.html :pre
|
For {granular}, {fstyle_params} are set using the same syntax as for the {pair_coeff} command of "pair_style granular"_pair_granular.html :pre
|
||||||
wallstyle = {xplane} or {yplane} or {zplane} or {zcylinder} :l
|
wallstyle = {xplane} or {yplane} or {zplane} or {zcylinder} :l
|
||||||
args = list of arguments for a particular style :l
|
args = list of arguments for a particular style :l
|
||||||
@ -46,10 +46,10 @@ keyword = {wiggle} or {shear} :l
|
|||||||
|
|
||||||
fix 1 all wall/gran hooke 200000.0 NULL 50.0 NULL 0.5 0 xplane -10.0 10.0
|
fix 1 all wall/gran hooke 200000.0 NULL 50.0 NULL 0.5 0 xplane -10.0 10.0
|
||||||
fix 1 all wall/gran hooke/history 200000.0 NULL 50.0 NULL 0.5 0 zplane 0.0 NULL
|
fix 1 all wall/gran hooke/history 200000.0 NULL 50.0 NULL 0.5 0 zplane 0.0 NULL
|
||||||
fix 2 all wall/gran hooke 100000.0 20000.0 50.0 30.0 0.5 1 zcylinder 15.0 wiggle z 3.0 2.0
|
fix 2 all wall/gran hooke 100000.0 20000.0 50.0 30.0 0.5 1 zcylinder 15.0 wiggle z 3.0 2.0
|
||||||
fix 3 all wall/gran granular hooke 1000.0 50.0 tangential linear_nohistory 1.0 0.4 zplane 0.0 NULL
|
fix 3 all wall/gran/region granular hooke 1000.0 50.0 tangential linear_nohistory 1.0 0.4 damping velocity region myBox
|
||||||
fix 4 all wall/gran granular jkr 1000.0 50.0 0.3 5.0 tangential mindlin 800.0 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall zcylinder 15.0 wiggle z 3.0 2.0
|
fix 4 all wall/gran/region granular jkr 1e5 1500.0 0.3 10.0 tangential mindlin NULL 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall region myCone
|
||||||
fix 5 all wall/gran granular dmt 1000.0 50.0 0.3 10.0 tangential mindlin 800.0 0.5 0.1 roll sds 500.0 200.0 0.1 twisting marshall zplane 0.0 NULL :pre
|
fix 5 all wall/gran/region granular dmt 1e5 0.2 0.3 10.0 tangential mindlin NULL 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall damping tsuji region myCone :pre
|
||||||
|
|
||||||
[Description:]
|
[Description:]
|
||||||
|
|
||||||
|
|||||||
@ -17,23 +17,23 @@ wall/region = style name of this fix command :l
|
|||||||
fstyle = style of force interactions between particles and wall :l
|
fstyle = style of force interactions between particles and wall :l
|
||||||
possible choices: hooke, hooke/history, hertz/history, granular :pre
|
possible choices: hooke, hooke/history, hertz/history, granular :pre
|
||||||
fstyle_params = parameters associated with force interaction style :l
|
fstyle_params = parameters associated with force interaction style :l
|
||||||
For {hooke}, {hooke/history}, and {hertz/history}, {fstyle_params} are:
|
For {hooke}, {hooke/history}, and {hertz/history}, {fstyle_params} are:
|
||||||
Kn = elastic constant for normal particle repulsion (force/distance units or pressure units - see discussion below)
|
Kn = elastic constant for normal particle repulsion (force/distance units or pressure units - see discussion below)
|
||||||
Kt = elastic constant for tangential contact (force/distance units or pressure units - see discussion below)
|
Kt = elastic constant for tangential contact (force/distance units or pressure units - see discussion below)
|
||||||
gamma_n = damping coefficient for collisions in normal direction (1/time units or 1/time-distance units - see discussion below)
|
gamma_n = damping coefficient for collisions in normal direction (1/time units or 1/time-distance units - see discussion below)
|
||||||
gamma_t = damping coefficient for collisions in tangential direction (1/time units or 1/time-distance units - see discussion below)
|
gamma_t = damping coefficient for collisions in tangential direction (1/time units or 1/time-distance units - see discussion below)
|
||||||
xmu = static yield criterion (unitless value between 0.0 and 1.0e4)
|
xmu = static yield criterion (unitless value between 0.0 and 1.0e4)
|
||||||
dampflag = 0 or 1 if tangential damping force is excluded or included :pre
|
dampflag = 0 or 1 if tangential damping force is excluded or included :pre
|
||||||
For {granular}, {fstyle_params} are set using the same syntax as for the {pair_coeff} command of "pair_style granular"_pair_granular.html :pre
|
For {granular}, {fstyle_params} are set using the same syntax as for the {pair_coeff} command of "pair_style granular"_pair_granular.html :pre
|
||||||
wallstyle = region (see "fix wall/gran"_fix_wall_gran.html for options for other kinds of walls) :l
|
wallstyle = region (see "fix wall/gran"_fix_wall_gran.html for options for other kinds of walls) :l
|
||||||
region-ID = region whose boundary will act as wall :l,ule
|
region-ID = region whose boundary will act as wall :l,ule
|
||||||
|
|
||||||
[Examples:]
|
[Examples:]
|
||||||
|
|
||||||
fix wall all wall/gran/region hooke/history 1000.0 200.0 200.0 100.0 0.5 1 region myCone
|
fix wall all wall/gran/region hooke/history 1000.0 200.0 200.0 100.0 0.5 1 region myCone
|
||||||
fix 3 all wall/gran/region granular hooke 1000.0 50.0 tangential linear_nohistory 1.0 0.4 region myBox
|
fix 3 all wall/gran/region granular hooke 1000.0 50.0 tangential linear_nohistory 1.0 0.4 damping velocity region myBox
|
||||||
fix 4 all wall/gran/region granular jkr 1000.0 50.0 tangential linear_history 800.0 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall region myCone
|
fix 4 all wall/gran/region granular jkr 1e5 1500.0 0.3 10.0 tangential mindlin NULL 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall region myCone
|
||||||
fix 5 all wall/gran/region granular dmt 1000.0 50.0 0.3 10.0 tangential linear_history 800.0 0.5 0.1 roll sds 500.0 200.0 0.1 twisting marshall region myCone :pre
|
fix 5 all wall/gran/region granular dmt 1e5 0.2 0.3 10.0 tangential mindlin NULL 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall damping tsuji region myCone :pre
|
||||||
|
|
||||||
[Description:]
|
[Description:]
|
||||||
|
|
||||||
|
|||||||
@ -84,6 +84,7 @@ Fixes :h1
|
|||||||
fix_msst
|
fix_msst
|
||||||
fix_mvv_dpd
|
fix_mvv_dpd
|
||||||
fix_neb
|
fix_neb
|
||||||
|
fix_neb_spin
|
||||||
fix_nh
|
fix_nh
|
||||||
fix_nh_eff
|
fix_nh_eff
|
||||||
fix_nh_uef
|
fix_nh_uef
|
||||||
|
|||||||
@ -179,6 +179,7 @@ min_spin.html
|
|||||||
minimize.html
|
minimize.html
|
||||||
molecule.html
|
molecule.html
|
||||||
neb.html
|
neb.html
|
||||||
|
neb_spin.html
|
||||||
neigh_modify.html
|
neigh_modify.html
|
||||||
neighbor.html
|
neighbor.html
|
||||||
newton.html
|
newton.html
|
||||||
@ -309,6 +310,7 @@ fix_mscg.html
|
|||||||
fix_msst.html
|
fix_msst.html
|
||||||
fix_mvv_dpd.html
|
fix_mvv_dpd.html
|
||||||
fix_neb.html
|
fix_neb.html
|
||||||
|
fix_neb_spin.html
|
||||||
fix_nh.html
|
fix_nh.html
|
||||||
fix_nh_eff.html
|
fix_nh_eff.html
|
||||||
fix_nph_asphere.html
|
fix_nph_asphere.html
|
||||||
|
|||||||
375
doc/src/neb_spin.txt
Normal file
375
doc/src/neb_spin.txt
Normal file
@ -0,0 +1,375 @@
|
|||||||
|
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
|
||||||
|
|
||||||
|
:link(lws,http://lammps.sandia.gov)
|
||||||
|
:link(ld,Manual.html)
|
||||||
|
:link(lc,Commands_all.html)
|
||||||
|
|
||||||
|
:line
|
||||||
|
|
||||||
|
neb command :h3
|
||||||
|
|
||||||
|
[Syntax:]
|
||||||
|
|
||||||
|
neb/spin etol ttol N1 N2 Nevery file-style arg keyword :pre
|
||||||
|
|
||||||
|
etol = stopping tolerance for energy (energy units) :ulb,l
|
||||||
|
ttol = stopping tolerance for torque ( units) :l
|
||||||
|
N1 = max # of iterations (timesteps) to run initial NEB :l
|
||||||
|
N2 = max # of iterations (timesteps) to run barrier-climbing NEB :l
|
||||||
|
Nevery = print replica energies and reaction coordinates every this many timesteps :l
|
||||||
|
file-style = {final} or {each} or {none} :l
|
||||||
|
{final} arg = filename
|
||||||
|
filename = file with initial coords for final replica
|
||||||
|
coords for intermediate replicas are linearly interpolated
|
||||||
|
between first and last replica
|
||||||
|
{each} arg = filename
|
||||||
|
filename = unique filename for each replica (except first)
|
||||||
|
with its initial coords
|
||||||
|
{none} arg = no argument all replicas assumed to already have
|
||||||
|
their initial coords :pre
|
||||||
|
keyword = {verbose}
|
||||||
|
:ule
|
||||||
|
|
||||||
|
[Examples:]
|
||||||
|
|
||||||
|
neb/spin 0.1 0.0 1000 500 50 final coords.final
|
||||||
|
neb/spin 0.0 0.001 1000 500 50 each coords.initial.$i
|
||||||
|
neb/spin 0.0 0.001 1000 500 50 none verbose :pre
|
||||||
|
|
||||||
|
[Description:]
|
||||||
|
|
||||||
|
Perform a geodesic nudged elastic band (GNEB) calculation using multiple
|
||||||
|
replicas of a system. Two or more replicas must be used; the first
|
||||||
|
and last are the end points of the transition path.
|
||||||
|
|
||||||
|
GNEB is a method for finding both the spin configurations and height
|
||||||
|
of the energy barrier associated with a transition state, e.g.
|
||||||
|
spins to perform a collective rotation from one energy basin to
|
||||||
|
another.
|
||||||
|
The implementation in LAMMPS follows the discussion in the
|
||||||
|
following paper: "(BessarabA)"_#BessarabA.
|
||||||
|
|
||||||
|
Each replica runs on a partition of one or more processors. Processor
|
||||||
|
partitions are defined at run-time using the "-partition command-line
|
||||||
|
switch"_Run_options.html. Note that if you have MPI installed, you
|
||||||
|
can run a multi-replica simulation with more replicas (partitions)
|
||||||
|
than you have physical processors, e.g you can run a 10-replica
|
||||||
|
simulation on just one or two processors. You will simply not get the
|
||||||
|
performance speed-up you would see with one or more physical
|
||||||
|
processors per replica. See the "Howto replica"_Howto_replica.html
|
||||||
|
doc page for further discussion.
|
||||||
|
|
||||||
|
NOTE: As explained below, a GNEB calculation performs a damped dynamics
|
||||||
|
minimization across all the replicas. The "spin"_min_spin.html
|
||||||
|
style minimizer has to be defined in your input script.
|
||||||
|
|
||||||
|
When a GNEB calculation is performed, it is assumed that each replica
|
||||||
|
is running the same system, though LAMMPS does not check for this.
|
||||||
|
I.e. the simulation domain, the number of magnetic atoms, the
|
||||||
|
interaction potentials, and the starting configuration when the neb
|
||||||
|
command is issued should be the same for every replica.
|
||||||
|
|
||||||
|
In a GNEB calculation each replica is connected to other replicas by
|
||||||
|
inter-replica nudging forces. These forces are imposed by the "fix
|
||||||
|
neb/spin"_fix_neb_spin.html command, which must be used in conjunction
|
||||||
|
with the neb command.
|
||||||
|
The group used to define the fix neb/spin command defines the
|
||||||
|
GNEB magnetic atoms which are the only ones that inter-replica springs
|
||||||
|
are applied to.
|
||||||
|
If the group does not include all magnetic atoms, then non-GNEB
|
||||||
|
magnetic atoms have no inter-replica springs and the torques they feel
|
||||||
|
and their precession motion is computed in the usual way due only
|
||||||
|
to other magnetic atoms within their replica.
|
||||||
|
Conceptually, the non-GNEB atoms provide a background force field for
|
||||||
|
the GNEB atoms.
|
||||||
|
Their magnetic spins can be allowed to evolve during the GNEB
|
||||||
|
minimization procedure.
|
||||||
|
|
||||||
|
The initial spin configuration for each of the replicas can be
|
||||||
|
specified in different manners via the {file-style} setting, as
|
||||||
|
discussed below. Only atomic spins whose initial coordinates should
|
||||||
|
differ from the current configuration need to be specified.
|
||||||
|
|
||||||
|
Conceptually, the initial and final configurations for the first
|
||||||
|
replica should be states on either side of an energy barrier.
|
||||||
|
|
||||||
|
As explained below, the initial configurations of intermediate
|
||||||
|
replicas can be spin coordinates interpolated in a linear fashion
|
||||||
|
between the first and last replicas. This is often adequate for
|
||||||
|
simple transitions. For more complex transitions, it may lead to slow
|
||||||
|
convergence or even bad results if the minimum energy path (MEP, see
|
||||||
|
below) of states over the barrier cannot be correctly converged to
|
||||||
|
from such an initial path. In this case, you will want to generate
|
||||||
|
initial states for the intermediate replicas that are geometrically
|
||||||
|
closer to the MEP and read them in.
|
||||||
|
|
||||||
|
:line
|
||||||
|
|
||||||
|
For a {file-style} setting of {final}, a filename is specified which
|
||||||
|
contains atomic and spin coordinates for zero or more atoms, in the
|
||||||
|
format described below.
|
||||||
|
For each atom that appears in the file, the new coordinates are
|
||||||
|
assigned to that atom in the final replica. Each intermediate replica
|
||||||
|
also assigns a new spin to that atom in an interpolated manner.
|
||||||
|
This is done by using the current direction of the spin at the starting
|
||||||
|
point and the read-in direction as the final point.
|
||||||
|
The "angular distance" between them is calculated, and the new direction
|
||||||
|
is assigned to be a fraction of the angular distance.
|
||||||
|
|
||||||
|
NOTE: The "angular distance" between the starting and final point is
|
||||||
|
evaluated in the geodesic sense, as described in
|
||||||
|
"(BessarabA)"_#BessarabA.
|
||||||
|
|
||||||
|
NOTE: The angular interpolation between the starting and final point
|
||||||
|
is achieved using Rodrigues formula:
|
||||||
|
|
||||||
|
:c,image(Eqs/neb_spin_rodrigues_formula.jpg)
|
||||||
|
|
||||||
|
where m_i^I is the initial spin configuration for the spin i,
|
||||||
|
omega_i^nu is a rotation angle defined as:
|
||||||
|
|
||||||
|
:c,image(Eqs/neb_spin_angle.jpg)
|
||||||
|
|
||||||
|
with nu the image number, Q the total number of images, and
|
||||||
|
omega_i the total rotation between the initial and final spins.
|
||||||
|
k_i defines a rotation axis such as:
|
||||||
|
|
||||||
|
:c,image(Eqs/neb_spin_k.jpg)
|
||||||
|
|
||||||
|
if the initial and final spins are not aligned.
|
||||||
|
If the initial and final spins are aligned, then their cross
|
||||||
|
product is null, and the expression above does not apply.
|
||||||
|
If they point toward the same direction, the intermediate images
|
||||||
|
conserve the same orientation.
|
||||||
|
If the initial and final spins are aligned, but point toward
|
||||||
|
opposite directions, an arbitrary rotation vector belonging to
|
||||||
|
the plane perpendicular to initial and final spins is chosen.
|
||||||
|
In this case, a warning message is displayed.
|
||||||
|
|
||||||
|
For a {file-style} setting of {each}, a filename is specified which is
|
||||||
|
assumed to be unique to each replica.
|
||||||
|
See the "neb"_neb.html documentation page for more information about this
|
||||||
|
option.
|
||||||
|
|
||||||
|
For a {file-style} setting of {none}, no filename is specified. Each
|
||||||
|
replica is assumed to already be in its initial configuration at the
|
||||||
|
time the neb command is issued. This allows each replica to define
|
||||||
|
its own configuration by reading a replica-specific data or restart or
|
||||||
|
dump file, via the "read_data"_read_data.html,
|
||||||
|
"read_restart"_read_restart.html, or "read_dump"_read_dump.html
|
||||||
|
commands. The replica-specific names of these files can be specified
|
||||||
|
as in the discussion above for the {each} file-style. Also see the
|
||||||
|
section below for how a NEB calculation can produce restart files, so
|
||||||
|
that a long calculation can be restarted if needed.
|
||||||
|
|
||||||
|
NOTE: None of the {file-style} settings change the initial
|
||||||
|
configuration of any atom in the first replica. The first replica
|
||||||
|
must thus be in the correct initial configuration at the time the neb
|
||||||
|
command is issued.
|
||||||
|
|
||||||
|
:line
|
||||||
|
|
||||||
|
A NEB calculation proceeds in two stages, each of which is a
|
||||||
|
minimization procedure, performed via damped dynamics. To enable
|
||||||
|
this, you must first define a damped spin dynamics
|
||||||
|
"min_style"_min_style.html, using the {spin} style (see
|
||||||
|
"min_spin"_min_spin.html for more information).
|
||||||
|
The other styles cannot be used, since they relax the lattice
|
||||||
|
degrees of freedom instead of the spins.
|
||||||
|
|
||||||
|
The minimizer tolerances for energy and force are set by {etol} and
|
||||||
|
{ttol}, the same as for the "minimize"_minimize.html command.
|
||||||
|
|
||||||
|
A non-zero {etol} means that the GNEB calculation will terminate if the
|
||||||
|
energy criterion is met by every replica. The energies being compared
|
||||||
|
to {etol} do not include any contribution from the inter-replica
|
||||||
|
nudging forces, since these are non-conservative. A non-zero {ttol}
|
||||||
|
means that the GNEB calculation will terminate if the torque criterion
|
||||||
|
is met by every replica. The torques being compared to {ttol} include
|
||||||
|
the inter-replica nudging forces.
|
||||||
|
|
||||||
|
The maximum number of iterations in each stage is set by {N1} and
|
||||||
|
{N2}. These are effectively timestep counts since each iteration of
|
||||||
|
damped dynamics is like a single timestep in a dynamics
|
||||||
|
"run"_run.html. During both stages, the potential energy of each
|
||||||
|
replica and its normalized distance along the reaction path (reaction
|
||||||
|
coordinate RD) will be printed to the screen and log file every
|
||||||
|
{Nevery} timesteps. The RD is 0 and 1 for the first and last replica.
|
||||||
|
For intermediate replicas, it is the cumulative angular distance
|
||||||
|
(normalized by the total cumulative angular distance) between adjacent
|
||||||
|
replicas, where "distance" is defined as the length of the 3N-vector of
|
||||||
|
the geodesic distances in spin coordinates, with N the number of
|
||||||
|
GNEB spins involved (see equation (13) in "(BessarabA)"_#BessarabA).
|
||||||
|
These outputs allow you to monitor NEB's progress in
|
||||||
|
finding a good energy barrier. {N1} and {N2} must both be multiples
|
||||||
|
of {Nevery}.
|
||||||
|
|
||||||
|
In the first stage of GNEB, the set of replicas should converge toward
|
||||||
|
a minimum energy path (MEP) of conformational states that transition
|
||||||
|
over a barrier. The MEP for a transition is defined as a sequence of
|
||||||
|
3N-dimensional spin states, each of which has a potential energy
|
||||||
|
gradient parallel to the MEP itself.
|
||||||
|
The configuration of highest energy along a MEP corresponds to a saddle
|
||||||
|
point. The replica states will also be roughly equally spaced along
|
||||||
|
the MEP due to the inter-replica nudging force added by the
|
||||||
|
"fix neb"_fix_neb.html command.
|
||||||
|
|
||||||
|
In the second stage of GNEB, the replica with the highest energy is
|
||||||
|
selected and the inter-replica forces on it are converted to a force
|
||||||
|
that drives its spin coordinates to the top or saddle point of the
|
||||||
|
barrier, via the barrier-climbing calculation described in
|
||||||
|
"(BessarabA)"_#BessarabA. As before, the other replicas rearrange
|
||||||
|
themselves along the MEP so as to be roughly equally spaced.
|
||||||
|
|
||||||
|
When both stages are complete, if the GNEB calculation was successful,
|
||||||
|
the configurations of the replicas should be along (close to) the MEP
|
||||||
|
and the replica with the highest energy should be a spin
|
||||||
|
configuration at (close to) the saddle point of the transition. The
|
||||||
|
potential energies for the set of replicas represents the energy
|
||||||
|
profile of the transition along the MEP.
|
||||||
|
|
||||||
|
:line
|
||||||
|
|
||||||
|
An atom map must be defined which it is not by default for "atom_style
|
||||||
|
atomic"_atom_style.html problems. The "atom_modify
|
||||||
|
map"_atom_modify.html command can be used to do this.
|
||||||
|
|
||||||
|
An initial value can be defined for the timestep. Although, the {spin}
|
||||||
|
minimization algorithm is an adaptive timestep methodology, so that
|
||||||
|
this timestep is likely to evolve during the calculation.
|
||||||
|
|
||||||
|
The minimizers in LAMMPS operate on all spins in your system, even
|
||||||
|
non-GNEB atoms, as defined above.
|
||||||
|
|
||||||
|
:line
|
||||||
|
|
||||||
|
Each file read by the neb/spin command containing spin coordinates used
|
||||||
|
to initialize one or more replicas must be formatted as follows.
|
||||||
|
|
||||||
|
The file can be ASCII text or a gzipped text file (detected by a .gz
|
||||||
|
suffix). The file can contain initial blank lines or comment lines
|
||||||
|
starting with "#" which are ignored. The first non-blank, non-comment
|
||||||
|
line should list N = the number of lines to follow. The N successive
|
||||||
|
lines contain the following information:
|
||||||
|
|
||||||
|
ID1 g1 x1 y1 z1 sx1 sy1 sz1
|
||||||
|
ID2 g2 x2 y2 z2 sx2 sy2 sz2
|
||||||
|
...
|
||||||
|
IDN gN yN zN sxN syN szN :pre
|
||||||
|
|
||||||
|
The fields are the atom ID, the norm of the associated magnetic spin,
|
||||||
|
followed by the {x,y,z} coordinates and the {sx,sy,sz} spin coordinates.
|
||||||
|
The lines can be listed in any order. Additional trailing information on
|
||||||
|
the line is OK, such as a comment.
|
||||||
|
|
||||||
|
Note that for a typical GNEB calculation you do not need to specify
|
||||||
|
initial spin coordinates for very many atoms to produce differing starting
|
||||||
|
and final replicas whose intermediate replicas will converge to the
|
||||||
|
energy barrier. Typically only new spin coordinates for atoms
|
||||||
|
geometrically near the barrier need be specified.
|
||||||
|
|
||||||
|
Also note there is no requirement that the atoms in the file
|
||||||
|
correspond to the GNEB atoms in the group defined by the "fix
|
||||||
|
neb"_fix_neb.html command. Not every GNEB atom need be in the file,
|
||||||
|
and non-GNEB atoms can be listed in the file.
|
||||||
|
|
||||||
|
:line
|
||||||
|
|
||||||
|
Four kinds of output can be generated during a GNEB calculation: energy
|
||||||
|
barrier statistics, thermodynamic output by each replica, dump files,
|
||||||
|
and restart files.
|
||||||
|
|
||||||
|
When running with multiple partitions (each of which is a replica in
|
||||||
|
this case), the print-out to the screen and master log.lammps file
|
||||||
|
contains a line of output, printed once every {Nevery} timesteps. It
|
||||||
|
contains the timestep, the maximum torque per replica, the maximum
|
||||||
|
torque per atom (in any replica), potential gradients in the initial,
|
||||||
|
final, and climbing replicas, the forward and backward energy
|
||||||
|
barriers, the total reaction coordinate (RDT), and the normalized
|
||||||
|
reaction coordinate and potential energy of each replica.
|
||||||
|
|
||||||
|
The "maximum torque per replica" is the two-norm of the
|
||||||
|
3N-length vector given by the cross product of a spin by its
|
||||||
|
precession vector omega, in each replica, maximized across replicas,
|
||||||
|
which is what the {ttol} setting is checking against. In this case, N is
|
||||||
|
all the atoms in each replica. The "maximum torque per atom" is the
|
||||||
|
maximum torque component of any atom in any replica. The potential
|
||||||
|
gradients are the two-norm of the 3N-length magnetic precession vector
|
||||||
|
solely due to the interaction potential i.e. without adding in
|
||||||
|
inter-replica forces, and projected along the path tangent (as detailed
|
||||||
|
in Appendix D of "(BessarabA)"_#BessarabA).
|
||||||
|
|
||||||
|
The "reaction coordinate" (RD) for each replica is the two-norm of the
|
||||||
|
3N-length vector of geodesic distances between its spins and the preceding
|
||||||
|
replica's spins (see equation (13) of "(BessarabA)"_#BessarabA), added to
|
||||||
|
the RD of the preceding replica. The RD of the first replica RD1 = 0.0;
|
||||||
|
the RD of the final replica RDN = RDT, the total reaction coordinate.
|
||||||
|
The normalized RDs are divided by RDT, so that they form a monotonically
|
||||||
|
increasing sequence from zero to one. When computing RD, N only includes
|
||||||
|
the spins being operated on by the fix neb/spin command.
|
||||||
|
|
||||||
|
The forward (reverse) energy barrier is the potential energy of the
|
||||||
|
highest replica minus the energy of the first (last) replica.
|
||||||
|
|
||||||
|
Supplementary information for all replicas can be printed out to the
|
||||||
|
screen and master log.lammps file by adding the verbose keyword. This
|
||||||
|
information include the following.
|
||||||
|
The "GradVidottan" are the projections of the potential gradient for
|
||||||
|
the replica i on its tangent vector (as detailed in Appendix D of
|
||||||
|
"(BessarabA)"_#BessarabA).
|
||||||
|
The "DNi" are the non normalized geodesic distances (see equation (13)
|
||||||
|
of "(BessarabA)"_#BessarabA), between a replica i and the next replica
|
||||||
|
i+1. For the last replica, this distance is not defined and a "NAN"
|
||||||
|
value is the corresponding output.
|
||||||
|
|
||||||
|
When a NEB calculation does not converge properly, the supplementary
|
||||||
|
information can help understanding what is going wrong.
|
||||||
|
|
||||||
|
When running on multiple partitions, LAMMPS produces additional log
|
||||||
|
files for each partition, e.g. log.lammps.0, log.lammps.1, etc. For a
|
||||||
|
GNEB calculation, these contain the thermodynamic output for each
|
||||||
|
replica.
|
||||||
|
|
||||||
|
If "dump"_dump.html commands in the input script define a filename
|
||||||
|
that includes a {universe} or {uloop} style "variable"_variable.html,
|
||||||
|
then one dump file (per dump command) will be created for each
|
||||||
|
replica. At the end of the GNEB calculation, the final snapshot in
|
||||||
|
each file will contain the sequence of snapshots that transition the
|
||||||
|
system over the energy barrier. Earlier snapshots will show the
|
||||||
|
convergence of the replicas to the MEP.
|
||||||
|
|
||||||
|
Likewise, "restart"_restart.html filenames can be specified with a
|
||||||
|
{universe} or {uloop} style "variable"_variable.html, to generate
|
||||||
|
restart files for each replica. These may be useful if the GNEB
|
||||||
|
calculation fails to converge properly to the MEP, and you wish to
|
||||||
|
restart the calculation from an intermediate point with altered
|
||||||
|
parameters.
|
||||||
|
|
||||||
|
A c file script in provided in the tool/spin/interpolate_gneb
|
||||||
|
directory, that interpolates the MEP given the information provided
|
||||||
|
by the verbose output option (as detailed in Appendix D of
|
||||||
|
"(BessarabA)"_#BessarabA).
|
||||||
|
|
||||||
|
:line
|
||||||
|
|
||||||
|
[Restrictions:]
|
||||||
|
|
||||||
|
This command can only be used if LAMMPS was built with the SPIN
|
||||||
|
package. See the "Build package"_Build_package.html doc
|
||||||
|
page for more info.
|
||||||
|
|
||||||
|
:line
|
||||||
|
|
||||||
|
[Related commands:]
|
||||||
|
|
||||||
|
"min/spin"_min_spin.html, "fix neb/spin"_fix_neb_spin.html
|
||||||
|
|
||||||
|
[Default:]
|
||||||
|
|
||||||
|
none
|
||||||
|
|
||||||
|
:line
|
||||||
|
|
||||||
|
:link(BessarabA)
|
||||||
|
[(BessarabA)] Bessarab, Uzdin, Jonsson, Comp Phys Comm, 196,
|
||||||
|
335-347 (2015).
|
||||||
@ -64,7 +64,7 @@ args = arguments specific to the style :l
|
|||||||
{no_affinity} values = none
|
{no_affinity} values = none
|
||||||
{kokkos} args = keyword value ...
|
{kokkos} args = keyword value ...
|
||||||
zero or more keyword/value pairs may be appended
|
zero or more keyword/value pairs may be appended
|
||||||
keywords = {neigh} or {neigh/qeq} or {newton} or {binsize} or {comm} or {comm/exchange} or {comm/forward} or {comm/reverse}
|
keywords = {neigh} or {neigh/qeq} or {newton} or {binsize} or {comm} or {comm/exchange} or {comm/forward} or {comm/reverse} or {gpu/direct}
|
||||||
{neigh} value = {full} or {half}
|
{neigh} value = {full} or {half}
|
||||||
full = full neighbor list
|
full = full neighbor list
|
||||||
half = half neighbor list built in thread-safe manner
|
half = half neighbor list built in thread-safe manner
|
||||||
@ -72,7 +72,7 @@ args = arguments specific to the style :l
|
|||||||
full = full neighbor list
|
full = full neighbor list
|
||||||
half = half neighbor list built in thread-safe manner
|
half = half neighbor list built in thread-safe manner
|
||||||
{newton} = {off} or {on}
|
{newton} = {off} or {on}
|
||||||
off = set Newton pairwise and bonded flags off (default)
|
off = set Newton pairwise and bonded flags off
|
||||||
on = set Newton pairwise and bonded flags on
|
on = set Newton pairwise and bonded flags on
|
||||||
{binsize} value = size
|
{binsize} value = size
|
||||||
size = bin size for neighbor list construction (distance units)
|
size = bin size for neighbor list construction (distance units)
|
||||||
@ -422,101 +422,103 @@ processes/threads used for LAMMPS.
|
|||||||
|
|
||||||
:line
|
:line
|
||||||
|
|
||||||
The {kokkos} style invokes settings associated with the use of the
|
The {kokkos} style invokes settings associated with the use of the
|
||||||
KOKKOS package.
|
KOKKOS package.
|
||||||
|
|
||||||
All of the settings are optional keyword/value pairs. Each has a
|
All of the settings are optional keyword/value pairs. Each has a default
|
||||||
default value as listed below.
|
value as listed below.
|
||||||
|
|
||||||
The {neigh} keyword determines how neighbor lists are built. A value
|
The {neigh} keyword determines how neighbor lists are built. A value of
|
||||||
of {half} uses a thread-safe variant of half-neighbor lists,
|
{half} uses a thread-safe variant of half-neighbor lists, the same as
|
||||||
the same as used by most pair styles in LAMMPS.
|
used by most pair styles in LAMMPS, which is the default when running on
|
||||||
|
CPUs (i.e. the Kokkos CUDA back end is not enabled).
|
||||||
|
|
||||||
A value of {full} uses a full neighbor lists and is the default. This
|
A value of {full} uses a full neighbor lists and is the default when
|
||||||
performs twice as much computation as the {half} option, however that
|
running on GPUs. This performs twice as much computation as the {half}
|
||||||
is often a win because it is thread-safe and doesn't require atomic
|
option, however that is often a win because it is thread-safe and
|
||||||
operations in the calculation of pair forces. For that reason, {full}
|
doesn't require atomic operations in the calculation of pair forces. For
|
||||||
is the default setting. However, when running in MPI-only mode with 1
|
that reason, {full} is the default setting for GPUs. However, when
|
||||||
thread per MPI task, {half} neighbor lists will typically be faster,
|
running on CPUs, a {half} neighbor list is the default because it are
|
||||||
just as it is for non-accelerated pair styles. Similarly, the {neigh/qeq}
|
often faster, just as it is for non-accelerated pair styles. Similarly,
|
||||||
keyword determines how neighbor lists are built for "fix qeq/reax/kk"_fix_qeq_reax.html.
|
the {neigh/qeq} keyword determines how neighbor lists are built for "fix
|
||||||
If not explicitly set, the value of {neigh/qeq} will match {neigh}.
|
qeq/reax/kk"_fix_qeq_reax.html. If not explicitly set, the value of
|
||||||
|
{neigh/qeq} will match {neigh}.
|
||||||
|
|
||||||
The {newton} keyword sets the Newton flags for pairwise and bonded
|
The {newton} keyword sets the Newton flags for pairwise and bonded
|
||||||
interactions to {off} or {on}, the same as the "newton"_newton.html
|
interactions to {off} or {on}, the same as the "newton"_newton.html
|
||||||
command allows. The default is {off} because this will almost always
|
command allows. The default for GPUs is {off} because this will almost
|
||||||
give better performance for the KOKKOS package. This means more
|
always give better performance for the KOKKOS package. This means more
|
||||||
computation is done, but less communication. However, when running in
|
computation is done, but less communication. However, when running on
|
||||||
MPI-only mode with 1 thread per MPI task, a value of {on} will
|
CPUs a value of {on} is the default since it can often be faster, just
|
||||||
typically be faster, just as it is for non-accelerated pair styles.
|
as it is for non-accelerated pair styles
|
||||||
|
|
||||||
The {binsize} keyword sets the size of bins used to bin atoms in
|
The {binsize} keyword sets the size of bins used to bin atoms in
|
||||||
neighbor list builds. The same value can be set by the "neigh_modify
|
neighbor list builds. The same value can be set by the "neigh_modify
|
||||||
binsize"_neigh_modify.html command. Making it an option in the
|
binsize"_neigh_modify.html command. Making it an option in the package
|
||||||
package kokkos command allows it to be set from the command line. The
|
kokkos command allows it to be set from the command line. The default
|
||||||
default value is 0.0, which means the LAMMPS default will be used,
|
value for CPUs is 0.0, which means the LAMMPS default will be used,
|
||||||
which is bins = 1/2 the size of the pairwise cutoff + neighbor skin
|
which is bins = 1/2 the size of the pairwise cutoff + neighbor skin
|
||||||
distance. This is fine when neighbor lists are built on the CPU. For
|
distance. This is fine when neighbor lists are built on the CPU. For GPU
|
||||||
GPU builds, a 2x larger binsize equal to the pairwise cutoff +
|
builds, a 2x larger binsize equal to the pairwise cutoff + neighbor skin
|
||||||
neighbor skin, is often faster, which can be set by this keyword.
|
is often faster, which is the default. Note that if you use a
|
||||||
Note that if you use a longer-than-usual pairwise cutoff, e.g. to
|
longer-than-usual pairwise cutoff, e.g. to allow for a smaller fraction
|
||||||
allow for a smaller fraction of KSpace work with a "long-range
|
of KSpace work with a "long-range Coulombic solver"_kspace_style.html
|
||||||
Coulombic solver"_kspace_style.html because the GPU is faster at
|
because the GPU is faster at performing pairwise interactions, then this
|
||||||
performing pairwise interactions, then this rule of thumb may give too
|
rule of thumb may give too large a binsize and the default should be
|
||||||
large a binsize.
|
overridden with a smaller value.
|
||||||
|
|
||||||
The {comm} and {comm/exchange} and {comm/forward} and {comm/reverse} keywords determine
|
The {comm} and {comm/exchange} and {comm/forward} and {comm/reverse}
|
||||||
whether the host or device performs the packing and unpacking of data
|
keywords determine whether the host or device performs the packing and
|
||||||
when communicating per-atom data between processors. "Exchange"
|
unpacking of data when communicating per-atom data between processors.
|
||||||
communication happens only on timesteps that neighbor lists are
|
"Exchange" communication happens only on timesteps that neighbor lists
|
||||||
rebuilt. The data is only for atoms that migrate to new processors.
|
are rebuilt. The data is only for atoms that migrate to new processors.
|
||||||
"Forward" communication happens every timestep. "Reverse" communication
|
"Forward" communication happens every timestep. "Reverse" communication
|
||||||
happens every timestep if the {newton} option is on. The data is for atom
|
happens every timestep if the {newton} option is on. The data is for
|
||||||
coordinates and any other atom properties that needs to be updated for
|
atom coordinates and any other atom properties that needs to be updated
|
||||||
ghost atoms owned by each processor.
|
for ghost atoms owned by each processor.
|
||||||
|
|
||||||
The {comm} keyword is simply a short-cut to set the same value
|
The {comm} keyword is simply a short-cut to set the same value for both
|
||||||
for both the {comm/exchange} and {comm/forward} and {comm/reverse} keywords.
|
the {comm/exchange} and {comm/forward} and {comm/reverse} keywords.
|
||||||
|
|
||||||
The value options for all 3 keywords are {no} or {host} or {device}.
|
The value options for all 3 keywords are {no} or {host} or {device}. A
|
||||||
A value of {no} means to use the standard non-KOKKOS method of
|
value of {no} means to use the standard non-KOKKOS method of
|
||||||
packing/unpacking data for the communication. A value of {host} means
|
packing/unpacking data for the communication. A value of {host} means to
|
||||||
to use the host, typically a multi-core CPU, and perform the
|
use the host, typically a multi-core CPU, and perform the
|
||||||
packing/unpacking in parallel with threads. A value of {device}
|
packing/unpacking in parallel with threads. A value of {device} means to
|
||||||
means to use the device, typically a GPU, to perform the
|
use the device, typically a GPU, to perform the packing/unpacking
|
||||||
packing/unpacking operation.
|
operation.
|
||||||
|
|
||||||
The optimal choice for these keywords depends on the input script and
|
The optimal choice for these keywords depends on the input script and
|
||||||
the hardware used. The {no} value is useful for verifying that the
|
the hardware used. The {no} value is useful for verifying that the
|
||||||
Kokkos-based {host} and {device} values are working correctly.
|
Kokkos-based {host} and {device} values are working correctly. It is the
|
||||||
It may also be the fastest choice when using Kokkos styles in
|
default when running on CPUs since it is usually the fastest.
|
||||||
MPI-only mode (i.e. with a thread count of 1).
|
|
||||||
|
|
||||||
When running on CPUs or Xeon Phi, the {host} and {device} values work
|
When running on CPUs or Xeon Phi, the {host} and {device} values work
|
||||||
identically. When using GPUs, the {device} value will typically be
|
identically. When using GPUs, the {device} value is the default since it
|
||||||
optimal if all of your styles used in your input script are supported
|
will typically be optimal if all of your styles used in your input
|
||||||
by the KOKKOS package. In this case data can stay on the GPU for many
|
script are supported by the KOKKOS package. In this case data can stay
|
||||||
timesteps without being moved between the host and GPU, if you use the
|
on the GPU for many timesteps without being moved between the host and
|
||||||
{device} value. This requires that your MPI is able to access GPU
|
GPU, if you use the {device} value. This requires that your MPI is able
|
||||||
memory directly. Currently that is true for OpenMPI 1.8 (or later
|
to access GPU memory directly. Currently that is true for OpenMPI 1.8
|
||||||
versions), Mvapich2 1.9 (or later), and CrayMPI. If your script uses
|
(or later versions), Mvapich2 1.9 (or later), and CrayMPI. If your
|
||||||
styles (e.g. fixes) which are not yet supported by the KOKKOS package,
|
script uses styles (e.g. fixes) which are not yet supported by the
|
||||||
then data has to be move between the host and device anyway, so it is
|
KOKKOS package, then data has to be move between the host and device
|
||||||
typically faster to let the host handle communication, by using the
|
anyway, so it is typically faster to let the host handle communication,
|
||||||
{host} value. Using {host} instead of {no} will enable use of
|
by using the {host} value. Using {host} instead of {no} will enable use
|
||||||
multiple threads to pack/unpack communicated data.
|
of multiple threads to pack/unpack communicated data.
|
||||||
|
|
||||||
The {gpu/direct} keyword chooses whether GPU-direct will be used. When
|
The {gpu/direct} keyword chooses whether GPU-direct will be used. When
|
||||||
this keyword is set to {on}, buffers in GPU memory are passed directly
|
this keyword is set to {on}, buffers in GPU memory are passed directly
|
||||||
through MPI send/receive calls. This reduces overhead of first copying
|
through MPI send/receive calls. This reduces overhead of first copying
|
||||||
the data to the host CPU. However GPU-direct is not supported on all
|
the data to the host CPU. However GPU-direct is not supported on all
|
||||||
systems, which can lead to segmentation faults and would require
|
systems, which can lead to segmentation faults and would require using a
|
||||||
using a value of {off}. If LAMMPS can safely detect that GPU-direct is
|
value of {off}. If LAMMPS can safely detect that GPU-direct is not
|
||||||
not available (currently only possible with OpenMPI v2.0.0 or later),
|
available (currently only possible with OpenMPI v2.0.0 or later), then
|
||||||
then the {gpu/direct} keyword is automatically set to {off} by default.
|
the {gpu/direct} keyword is automatically set to {off} by default. When
|
||||||
When the {gpu/direct} keyword is set to {off} while any of the {comm}
|
the {gpu/direct} keyword is set to {off} while any of the {comm}
|
||||||
keywords are set to {device}, the value for these {comm} keywords will
|
keywords are set to {device}, the value for these {comm} keywords will
|
||||||
be automatically changed to {host}.
|
be automatically changed to {host}. This setting has no effect if not
|
||||||
|
running on GPUs.
|
||||||
|
|
||||||
:line
|
:line
|
||||||
|
|
||||||
@ -623,14 +625,16 @@ not used, you must invoke the package intel command in your input
|
|||||||
script or or via the "-pk intel" "command-line
|
script or or via the "-pk intel" "command-line
|
||||||
switch"_Run_options.html.
|
switch"_Run_options.html.
|
||||||
|
|
||||||
For the KOKKOS package, the option defaults neigh = full, neigh/qeq =
|
For the KOKKOS package, the option defaults for GPUs are neigh = full,
|
||||||
full, newton = off, binsize = 0.0, and comm = device, gpu/direct = on.
|
neigh/qeq = full, newton = off, binsize for GPUs = 2x LAMMPS default
|
||||||
When LAMMPS can safely detect, that GPU-direct is not available, the
|
value, comm = device, gpu/direct = on. When LAMMPS can safely detect
|
||||||
default value of gpu/direct becomes "off".
|
that GPU-direct is not available, the default value of gpu/direct
|
||||||
These settings are made automatically by the required "-k on"
|
becomes "off". For CPUs or Xeon Phis, the option defaults are neigh =
|
||||||
"command-line switch"_Run_options.html. You can change them by
|
half, neigh/qeq = half, newton = on, binsize = 0.0, and comm = no. These
|
||||||
using the package kokkos command in your input script or via the
|
settings are made automatically by the required "-k on" "command-line
|
||||||
"-pk kokkos command-line switch"_Run_options.html.
|
switch"_Run_options.html. You can change them by using the package
|
||||||
|
kokkos command in your input script or via the "-pk kokkos command-line
|
||||||
|
switch"_Run_options.html.
|
||||||
|
|
||||||
For the OMP package, the default is Nthreads = 0 and the option
|
For the OMP package, the default is Nthreads = 0 and the option
|
||||||
defaults are neigh = yes. These settings are made automatically if
|
defaults are neigh = yes. These settings are made automatically if
|
||||||
|
|||||||
@ -36,7 +36,7 @@ pair_style airebo/morse 3.0
|
|||||||
pair_coeff * * ../potentials/CH.airebo-m H C :pre
|
pair_coeff * * ../potentials/CH.airebo-m H C :pre
|
||||||
|
|
||||||
pair_style rebo
|
pair_style rebo
|
||||||
pair_coeff * * ../potentials/CH.airebo H C :pre
|
pair_coeff * * ../potentials/CH.rebo H C :pre
|
||||||
|
|
||||||
[Description:]
|
[Description:]
|
||||||
|
|
||||||
@ -57,7 +57,8 @@ The {rebo} pair style computes the Reactive Empirical Bond Order (REBO)
|
|||||||
Potential of "(Brenner)"_#Brenner. Note that this is the so-called
|
Potential of "(Brenner)"_#Brenner. Note that this is the so-called
|
||||||
2nd generation REBO from 2002, not the original REBO from 1990.
|
2nd generation REBO from 2002, not the original REBO from 1990.
|
||||||
As discussed below, 2nd generation REBO is closely related to the
|
As discussed below, 2nd generation REBO is closely related to the
|
||||||
initial AIREBO; it is just a subset of the potential energy terms.
|
initial AIREBO; it is just a subset of the potential energy terms
|
||||||
|
with a few slightly different parameters
|
||||||
|
|
||||||
The AIREBO potential consists of three terms:
|
The AIREBO potential consists of three terms:
|
||||||
|
|
||||||
@ -113,12 +114,12 @@ various dihedral angle preferences in hydrocarbon configurations.
|
|||||||
:line
|
:line
|
||||||
|
|
||||||
Only a single pair_coeff command is used with the {airebo}, {airebo}
|
Only a single pair_coeff command is used with the {airebo}, {airebo}
|
||||||
or {rebo} style which specifies an AIREBO or AIREBO-M potential file
|
or {rebo} style which specifies an AIREBO, REBO, or AIREBO-M potential
|
||||||
with parameters for C and H. Note that the {rebo} style in LAMMPS
|
file with parameters for C and H. Note that as of LAMMPS version
|
||||||
uses the same AIREBO-formatted potential file. These are mapped to
|
15 May 2019 the {rebo} style in LAMMPS uses its own potential
|
||||||
LAMMPS atom types by specifying N additional arguments after the
|
file (CH.rebo). These are mapped to LAMMPS atom types by specifying
|
||||||
filename in the pair_coeff command, where N is the number of LAMMPS
|
N additional arguments after the filename in the pair_coeff command,
|
||||||
atom types:
|
where N is the number of LAMMPS atom types:
|
||||||
|
|
||||||
filename
|
filename
|
||||||
N element names = mapping of AIREBO elements to atom types :ul
|
N element names = mapping of AIREBO elements to atom types :ul
|
||||||
|
|||||||
@ -24,22 +24,24 @@ cutoff = global cutoff (optional). See discussion below. :ul
|
|||||||
[Examples:]
|
[Examples:]
|
||||||
|
|
||||||
pair_style granular
|
pair_style granular
|
||||||
pair_coeff * * hooke 1000.0 50.0 tangential linear_nohistory 1.0 0.4 :pre
|
pair_coeff * * hooke 1000.0 50.0 tangential linear_nohistory 1.0 0.4 damping mass_velocity :pre
|
||||||
|
|
||||||
pair_style granular
|
pair_style granular
|
||||||
pair_coeff * * hertz 1000.0 50.0 tangential mindlin NULL 1.0 0.4 :pre
|
pair_coeff * * hooke 1000.0 50.0 tangential linear_history 500.0 1.0 0.4 damping mass_velocity :pre
|
||||||
|
|
||||||
pair_style granular
|
pair_style granular
|
||||||
pair_coeff * * hertz/material 1e8 0.3 tangential mindlin_rescale NULL 1.0 0.4 damping tsuji :pre
|
pair_coeff * * hertz 1000.0 50.0 tangential mindlin 1000.0 1.0 0.4 :pre
|
||||||
|
|
||||||
pair_style granular
|
pair_style granular
|
||||||
pair_coeff 1 1 jkr 1000.0 50.0 tangential mindlin 800.0 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall
|
pair_coeff * * hertz/material 1e8 0.3 0.3 tangential mindlin_rescale NULL 1.0 0.4 damping tsuji :pre
|
||||||
pair_coeff 2 2 hertz 200.0 20.0 tangential linear_history 300.0 1.0 0.1 rolling sds 200.0 100.0 0.1 twisting marshall :pre
|
|
||||||
|
|
||||||
pair_style granular
|
pair_style granular
|
||||||
pair_coeff 1 1 hertz 1000.0 50.0 tangential mindlin 800.0 0.5 0.5 rolling sds 500.0 200.0 0.5 twisting marshall
|
pair_coeff 1 * jkr 1000.0 500.0 0.3 10 tangential mindlin 800.0 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall
|
||||||
pair_coeff 2 2 dmt 1000.0 50.0 0.3 10.0 tangential mindlin 800.0 0.5 0.1 roll sds 500.0 200.0 0.1 twisting marshall
|
pair_coeff 2 2 hertz 200.0 100.0 tangential linear_history 300.0 1.0 0.1 rolling sds 200.0 100.0 0.1 twisting marshall :pre
|
||||||
pair_coeff 1 2 dmt 1000.0 50.0 0.3 10.0 tangential mindlin 800.0 0.5 0.1 roll sds 500.0 200.0 0.1 twisting marshall :pre
|
|
||||||
|
pair_style granular
|
||||||
|
pair_coeff 1 1 dmt 1000.0 50.0 0.3 0.0 tangential mindlin NULL 0.5 0.5 rolling sds 500.0 200.0 0.5 twisting marshall
|
||||||
|
pair_coeff 2 2 dmt 1000.0 50.0 0.3 10.0 tangential mindlin NULL 0.5 0.1 rolling sds 500.0 200.0 0.1 twisting marshall :pre
|
||||||
|
|
||||||
[Description:]
|
[Description:]
|
||||||
|
|
||||||
@ -57,18 +59,18 @@ global, but can be set to different values for different combinations
|
|||||||
of particle types, as determined by the "pair_coeff"_pair_coeff.html
|
of particle types, as determined by the "pair_coeff"_pair_coeff.html
|
||||||
command. If the contact model choice is the same for two particle
|
command. If the contact model choice is the same for two particle
|
||||||
types, the mixing for the cross-coefficients can be carried out
|
types, the mixing for the cross-coefficients can be carried out
|
||||||
automatically. This is shown in the second example, where model
|
automatically. This is shown in the last example, where model
|
||||||
choices are the same for type 1 - type 1 as for type 2 - type2
|
choices are the same for type 1 - type 1 as for type 2 - type2
|
||||||
interactions, but coefficients are different. In this case, the
|
interactions, but coefficients are different. In this case, the
|
||||||
coefficients for type 2 - type interactions can be determined from
|
mixed coefficients for type 1 - type 2 interactions can be determined from
|
||||||
mixing rules discussed below. For additional flexibility,
|
mixing rules discussed below. For additional flexibility,
|
||||||
coefficients as well as model forms can vary between particle types,
|
coefficients as well as model forms can vary between particle types,
|
||||||
as shown in the third example: type 1- type 1 interactions are based
|
as shown in the fourth example: type 1 - type 1 interactions are based
|
||||||
on a Hertzian normal contact model and 2-2 interactions are based on a
|
on a Johnson-Kendall-Roberts normal contact model and 2-2 interactions
|
||||||
DMT cohesive model (see below). In that example, 1-1 and 2-2
|
are based on a DMT cohesive model (see below). In that example, 1-1
|
||||||
interactions have different model forms, in which case mixing of
|
and 2-2 interactions have different model forms, in which case mixing of
|
||||||
coefficients cannot be determined, so 1-2 interactions must be
|
coefficients cannot be determined, so 1-2 interactions must be
|
||||||
explicitly defined via the {pair_coeff 1 2} command, otherwise an
|
explicitly defined via the {pair_coeff 1 *} command, otherwise an
|
||||||
error would result.
|
error would result.
|
||||||
|
|
||||||
:line
|
:line
|
||||||
@ -189,6 +191,7 @@ other settings, potentially also the twisting damping). The options
|
|||||||
for the damping model currently supported are:
|
for the damping model currently supported are:
|
||||||
|
|
||||||
{velocity}
|
{velocity}
|
||||||
|
{mass_velocity}
|
||||||
{viscoelastic}
|
{viscoelastic}
|
||||||
{tsuji} :ol
|
{tsuji} :ol
|
||||||
|
|
||||||
@ -199,11 +202,23 @@ For {damping velocity}, the normal damping is simply equal to the
|
|||||||
user-specified damping coefficient in the {normal} model:
|
user-specified damping coefficient in the {normal} model:
|
||||||
|
|
||||||
\begin\{equation\}
|
\begin\{equation\}
|
||||||
\eta_n = \eta_\{n0\}\
|
\eta_n = \eta_\{n0\}
|
||||||
\end\{equation\}
|
\end\{equation\}
|
||||||
|
|
||||||
Here, \(\gamma_n\) is the damping coefficient specified for the normal
|
Here, \(\eta_\{n0\}\) is the damping coefficient specified for the normal
|
||||||
contact model, in units of {mass}/{time},
|
contact model, in units of {mass}/{time}.
|
||||||
|
|
||||||
|
For {damping mass_velocity}, the normal damping is given by:
|
||||||
|
|
||||||
|
\begin\{equation\}
|
||||||
|
\eta_n = \eta_\{n0\} m_\{eff\}
|
||||||
|
\end\{equation\}
|
||||||
|
|
||||||
|
Here, \(\eta_\{n0\}\) is the damping coefficient specified for the normal
|
||||||
|
contact model, in units of {mass}/{time} and
|
||||||
|
\(m_\{eff\} = m_i m_j/(m_i + m_j)\) is the effective mass.
|
||||||
|
Use {damping mass_velocity} to reproduce the damping behavior of
|
||||||
|
{pair gran/hooke/*}.
|
||||||
|
|
||||||
The {damping viscoelastic} model is based on the viscoelastic
|
The {damping viscoelastic} model is based on the viscoelastic
|
||||||
treatment of "(Brilliantov et al)"_#Brill1996, where the normal
|
treatment of "(Brilliantov et al)"_#Brill1996, where the normal
|
||||||
@ -213,11 +228,10 @@ damping is given by:
|
|||||||
\eta_n = \eta_\{n0\}\ a m_\{eff\}
|
\eta_n = \eta_\{n0\}\ a m_\{eff\}
|
||||||
\end\{equation\}
|
\end\{equation\}
|
||||||
|
|
||||||
Here, \(m_\{eff\} = m_i m_j/(m_i + m_j)\) is the effective mass, {a}
|
Here, {a} is the contact radius, given by \(a =\sqrt\{R\delta\}\)
|
||||||
is the contact radius, given by \(a =\sqrt\{R\delta\}\) for all models
|
for all models except {jkr}, for which it is given implicitly according
|
||||||
except {jkr}, for which it is given implicitly according to \(delta =
|
to \(\delta = a^2/R - 2\sqrt\{\pi \gamma a/E\}\). For {damping viscoelastic},
|
||||||
a^2/R - 2\sqrt\{\pi \gamma a/E\}\). In this case, \eta_\{n0\}\ is in
|
\(\eta_\{n0\}\) is in units of 1/({time}*{distance}).
|
||||||
units of 1/({time}*{distance}).
|
|
||||||
|
|
||||||
The {tsuji} model is based on the work of "(Tsuji et
|
The {tsuji} model is based on the work of "(Tsuji et
|
||||||
al)"_#Tsuji1992. Here, the damping coefficient specified as part of
|
al)"_#Tsuji1992. Here, the damping coefficient specified as part of
|
||||||
@ -564,6 +578,20 @@ Finally, the twisting torque on each particle is given by:
|
|||||||
|
|
||||||
:line
|
:line
|
||||||
|
|
||||||
|
The {granular} pair style can reproduce the behavior of the
|
||||||
|
{pair gran/*} styles with the appropriate settings (some very
|
||||||
|
minor differences can be expected due to corrections in
|
||||||
|
displacement history frame-of-reference, and the application
|
||||||
|
of the torque at the center of the contact rather than
|
||||||
|
at each particle). The first example above
|
||||||
|
is equivalent to {pair gran/hooke 1000.0 NULL 50.0 50.0 0.4 1}.
|
||||||
|
The second example is equivalent to
|
||||||
|
{pair gran/hooke/history 1000.0 500.0 50.0 50.0 0.4 1}.
|
||||||
|
The third example is equivalent to
|
||||||
|
{pair gran/hertz/history 1000.0 500.0 50.0 50.0 0.4 1}.
|
||||||
|
|
||||||
|
:line
|
||||||
|
|
||||||
LAMMPS automatically sets pairwise cutoff values for {pair_style
|
LAMMPS automatically sets pairwise cutoff values for {pair_style
|
||||||
granular} based on particle radii (and in the case of {jkr} pull-off
|
granular} based on particle radii (and in the case of {jkr} pull-off
|
||||||
distances). In the vast majority of situations, this is adequate.
|
distances). In the vast majority of situations, this is adequate.
|
||||||
@ -619,7 +647,7 @@ interactions is set to \(\mu_1\), and friction coefficient for type
|
|||||||
2-type 2 interactions is set to \(\mu_2\), the friction coefficient
|
2-type 2 interactions is set to \(\mu_2\), the friction coefficient
|
||||||
for type1-type2 interactions is computed as \(\sqrt\{\mu_1\mu_2\}\)
|
for type1-type2 interactions is computed as \(\sqrt\{\mu_1\mu_2\}\)
|
||||||
(unless explicitly specified to a different value by a {pair_coeff 1 2
|
(unless explicitly specified to a different value by a {pair_coeff 1 2
|
||||||
...} command. The exception to this is elastic modulus, only
|
...} command). The exception to this is elastic modulus, only
|
||||||
applicable to {hertz/material}, {dmt} and {jkr} normal contact
|
applicable to {hertz/material}, {dmt} and {jkr} normal contact
|
||||||
models. In that case, the effective elastic modulus is computed as:
|
models. In that case, the effective elastic modulus is computed as:
|
||||||
|
|
||||||
@ -706,7 +734,7 @@ For the {pair_coeff} settings: {damping viscoelastic}, {rolling none},
|
|||||||
J. M., & Poschel, T. (1996). Model for collisions in granular
|
J. M., & Poschel, T. (1996). Model for collisions in granular
|
||||||
gases. Physical review E, 53(5), 5382.
|
gases. Physical review E, 53(5), 5382.
|
||||||
|
|
||||||
:link(Tsuji1992)
|
:link(Tsuji1992)
|
||||||
[(Tsuji et al, 1992)] Tsuji, Y., Tanaka, T., & Ishida,
|
[(Tsuji et al, 1992)] Tsuji, Y., Tanaka, T., & Ishida,
|
||||||
T. (1992). Lagrangian numerical simulation of plug flow of
|
T. (1992). Lagrangian numerical simulation of plug flow of
|
||||||
cohesionless particles in a horizontal pipe. Powder technology, 71(3),
|
cohesionless particles in a horizontal pipe. Powder technology, 71(3),
|
||||||
|
|||||||
@ -30,16 +30,16 @@ args = list of arguments for a particular style :l
|
|||||||
[Examples:]
|
[Examples:]
|
||||||
|
|
||||||
pair_style lj/mdf 2.5 3.0
|
pair_style lj/mdf 2.5 3.0
|
||||||
pair_coeff * * 1 1
|
pair_coeff * * 1.0 1.0
|
||||||
pair_coeff 1 1 1 1.1 2.8 3.0 3.2 :pre
|
pair_coeff 1 1 1.1 2.8 3.0 3.2 :pre
|
||||||
|
|
||||||
pair_style buck 2.5 3.0
|
pair_style buck 2.5 3.0
|
||||||
pair_coeff * * 100.0 1.5 200.0
|
pair_coeff * * 100.0 1.5 200.0
|
||||||
pair_coeff * * 100.0 1.5 200.0 3.0 3.5 :pre
|
pair_coeff * * 100.0 1.5 200.0 3.0 3.5 :pre
|
||||||
|
|
||||||
pair_style lennard/mdf 2.5 3.0
|
pair_style lennard/mdf 2.5 3.0
|
||||||
pair_coeff * * 1 1
|
pair_coeff * * 1.0 1.0
|
||||||
pair_coeff 1 1 1 1.1 2.8 3.0 3.2 :pre
|
pair_coeff 1 1 1021760.3664 2120.317338 3.0 3.2 :pre
|
||||||
|
|
||||||
[Description:]
|
[Description:]
|
||||||
|
|
||||||
@ -69,11 +69,12 @@ standard 12-6 Lennard-Jones written in the epsilon/sigma form:
|
|||||||
|
|
||||||
:c,image(Eqs/pair_mdf-4.jpg)
|
:c,image(Eqs/pair_mdf-4.jpg)
|
||||||
|
|
||||||
The following coefficients must be defined for each pair of atoms
|
Either the first two or all of the following coefficients must be
|
||||||
types via the pair_coeff command as in the examples above, or in the
|
defined for each pair of atoms types via the pair_coeff command as
|
||||||
data file or restart files read by the "read_data"_read_data.html or
|
in the examples above, or in the data file read by the
|
||||||
"read_restart commands"_read_restart.html, or by mixing as described
|
"read_data"_read_data.html. The two cutoffs default to the global
|
||||||
below:
|
values and epsilon and sigma can also be determined by mixing as
|
||||||
|
described below:
|
||||||
|
|
||||||
epsilon (energy units)
|
epsilon (energy units)
|
||||||
sigma (distance units)
|
sigma (distance units)
|
||||||
@ -83,7 +84,9 @@ r_{cut} (distance units) :ul
|
|||||||
:line
|
:line
|
||||||
|
|
||||||
For the {buck/mdf} pair_style, the potential energy, {E(r)}, is the
|
For the {buck/mdf} pair_style, the potential energy, {E(r)}, is the
|
||||||
standard Buckingham potential:
|
standard Buckingham potential with three required coefficients.
|
||||||
|
The two cutoffs can be omitted and default to the corresponding
|
||||||
|
global values:
|
||||||
|
|
||||||
:c,image(Eqs/pair_mdf-5.jpg)
|
:c,image(Eqs/pair_mdf-5.jpg)
|
||||||
|
|
||||||
@ -91,19 +94,20 @@ A (energy units)
|
|||||||
\rho (distance units)
|
\rho (distance units)
|
||||||
C (energy-distance^6 units)
|
C (energy-distance^6 units)
|
||||||
r_m (distance units)
|
r_m (distance units)
|
||||||
r_{cut}$ (distance units) :ul
|
r_{cut} (distance units) :ul
|
||||||
|
|
||||||
:line
|
:line
|
||||||
|
|
||||||
For the {lennard/mdf} pair_style, the potential energy, {E(r)}, is the
|
For the {lennard/mdf} pair_style, the potential energy, {E(r)}, is the
|
||||||
standard 12-6 Lennard-Jones written in the $A/B$ form:
|
standard 12-6 Lennard-Jones written in the A/B form:
|
||||||
|
|
||||||
:c,image(Eqs/pair_mdf-6.jpg)
|
:c,image(Eqs/pair_mdf-6.jpg)
|
||||||
|
|
||||||
The following coefficients must be defined for each pair of atoms
|
The following coefficients must be defined for each pair of atoms
|
||||||
types via the pair_coeff command as in the examples above, or in the
|
types via the pair_coeff command as in the examples above, or in the
|
||||||
data file or restart files read by the read_data or read_restart
|
data file read by the read_data commands, or by mixing as described below.
|
||||||
commands, or by mixing as described below:
|
The two cutoffs default to their global values and must be either both
|
||||||
|
given or both left out:
|
||||||
|
|
||||||
A (energy-distance^12 units)
|
A (energy-distance^12 units)
|
||||||
B (energy-distance^6 units)
|
B (energy-distance^6 units)
|
||||||
@ -115,33 +119,23 @@ r_{cut} (distance units) :ul
|
|||||||
[Mixing, shift, table, tail correction, restart, rRESPA info]:
|
[Mixing, shift, table, tail correction, restart, rRESPA info]:
|
||||||
|
|
||||||
For atom type pairs I,J and I != J, the epsilon and sigma coefficients
|
For atom type pairs I,J and I != J, the epsilon and sigma coefficients
|
||||||
and cutoff distance for all of the lj/cut pair styles can be mixed.
|
and cutoff distances for the lj/mdf pair style can be mixed.
|
||||||
The default mix value is {geometric}. See the "pair_modify" command
|
The default mix value is {geometric}. See the "pair_modify" command
|
||||||
for details.
|
for details. The other two pair styles buck/mdf and lennard/mdf do not
|
||||||
|
support mixing, so all I,J pairs of coefficients must be specified
|
||||||
|
explicitly.
|
||||||
|
|
||||||
All of the {lj/cut} pair styles support the
|
None of the lj/mdf, buck/mdf, or lennard/mdf pair styles supports
|
||||||
"pair_modify"_pair_modify.html shift option for the energy of the
|
the "pair_modify"_pair_modify.html shift option or long-range
|
||||||
Lennard-Jones portion of the pair interaction.
|
tail corrections to pressure and energy.
|
||||||
|
|
||||||
The {lj/cut/coul/long} and {lj/cut/tip4p/long} pair styles support the
|
These styles write their information to "binary restart
|
||||||
"pair_modify"_pair_modify.html table option since they can tabulate
|
files"_restart.html, so pair_style and pair_coeff commands do not need
|
||||||
the short-range portion of the long-range Coulombic interaction.
|
to be specified in an input script that reads a restart file.
|
||||||
|
|
||||||
All of the {lj/cut} pair styles support the
|
These styles can only be used via the {pair} keyword of the "run_style
|
||||||
"pair_modify"_pair_modify.html tail option for adding a long-range
|
respa"_run_style.html command. They do not support the {inner},
|
||||||
tail correction to the energy and pressure for the Lennard-Jones
|
{middle}, {outer} keywords.
|
||||||
portion of the pair interaction.
|
|
||||||
|
|
||||||
All of the {lj/cut} pair styles write their information to "binary
|
|
||||||
restart files"_restart.html, so pair_style and pair_coeff commands do
|
|
||||||
not need to be specified in an input script that reads a restart file.
|
|
||||||
|
|
||||||
The {lj/cut} and {lj/cut/coul/long} pair styles support the use of the
|
|
||||||
{inner}, {middle}, and {outer} keywords of the "run_style
|
|
||||||
respa"_run_style.html command, meaning the pairwise forces can be
|
|
||||||
partitioned by distance at different levels of the rRESPA hierarchy.
|
|
||||||
The other styles only support the {pair} keyword of run_style respa.
|
|
||||||
See the "run_style"_run_style.html command for details.
|
|
||||||
|
|
||||||
:line
|
:line
|
||||||
|
|
||||||
|
|||||||
@ -88,4 +88,4 @@ package"_Build_package.html doc page for more info.
|
|||||||
Physical Review B, 88(18), 184422. (2013).
|
Physical Review B, 88(18), 184422. (2013).
|
||||||
:link(Tranchida5)
|
:link(Tranchida5)
|
||||||
[(Tranchida)] Tranchida, Plimpton, Thibaudeau and Thompson,
|
[(Tranchida)] Tranchida, Plimpton, Thibaudeau and Thompson,
|
||||||
Journal of Computational Physics, (2018).
|
Journal of Computational Physics, 372, 406-425, (2018).
|
||||||
|
|||||||
@ -95,4 +95,4 @@ package"_Build_package.html doc page for more info.
|
|||||||
|
|
||||||
:link(Tranchida3)
|
:link(Tranchida3)
|
||||||
[(Tranchida)] Tranchida, Plimpton, Thibaudeau and Thompson,
|
[(Tranchida)] Tranchida, Plimpton, Thibaudeau and Thompson,
|
||||||
Journal of Computational Physics, (2018).
|
Journal of Computational Physics, 372, 406-425, (2018).
|
||||||
|
|||||||
@ -70,4 +70,4 @@ package"_Build_package.html doc page for more info.
|
|||||||
|
|
||||||
:link(Tranchida4)
|
:link(Tranchida4)
|
||||||
[(Tranchida)] Tranchida, Plimpton, Thibaudeau, and Thompson,
|
[(Tranchida)] Tranchida, Plimpton, Thibaudeau, and Thompson,
|
||||||
Journal of Computational Physics, (2018).
|
Journal of Computational Physics, 372, 406-425, (2018).
|
||||||
|
|||||||
@ -80,4 +80,4 @@ package"_Build_package.html doc page for more info.
|
|||||||
|
|
||||||
:link(Tranchida6)
|
:link(Tranchida6)
|
||||||
[(Tranchida)] Tranchida, Plimpton, Thibaudeau and Thompson,
|
[(Tranchida)] Tranchida, Plimpton, Thibaudeau and Thompson,
|
||||||
Journal of Computational Physics, (2018).
|
Journal of Computational Physics, 372, 406-425, (2018).
|
||||||
|
|||||||
@ -26,11 +26,9 @@ coefficients in a way, that it can be read by LAMMPS with the
|
|||||||
option of "write_data"_write_data.html this can be used to move
|
option of "write_data"_write_data.html this can be used to move
|
||||||
the Coeffs sections from a data file into a separate file.
|
the Coeffs sections from a data file into a separate file.
|
||||||
|
|
||||||
NOTE: The write_coeff command is not yet fully implemented in two
|
NOTE: The write_coeff command is not yet fully implemented as
|
||||||
respects. First, some pair styles do not yet write their coefficient
|
some pair styles do not output their coefficient information.
|
||||||
information into the coeff file. This means you will need to specify
|
This means you will need to add/copy this information manually.
|
||||||
that information in your input script that reads the data file, via
|
|
||||||
the "pair_coeff"_pair_coeff.html command.
|
|
||||||
|
|
||||||
:line
|
:line
|
||||||
|
|
||||||
|
|||||||
@ -200,6 +200,7 @@ Berkowitz
|
|||||||
berlin
|
berlin
|
||||||
Berne
|
Berne
|
||||||
Bertotti
|
Bertotti
|
||||||
|
Bessarab
|
||||||
Beutler
|
Beutler
|
||||||
bgq
|
bgq
|
||||||
Bh
|
Bh
|
||||||
@ -592,6 +593,7 @@ Dmax
|
|||||||
dmg
|
dmg
|
||||||
dmi
|
dmi
|
||||||
dnf
|
dnf
|
||||||
|
DNi
|
||||||
Dobson
|
Dobson
|
||||||
Dodds
|
Dodds
|
||||||
dodgerblue
|
dodgerblue
|
||||||
@ -963,6 +965,8 @@ gmail
|
|||||||
gmake
|
gmake
|
||||||
gmask
|
gmask
|
||||||
Gmask
|
Gmask
|
||||||
|
gneb
|
||||||
|
GNEB
|
||||||
googlemail
|
googlemail
|
||||||
Gordan
|
Gordan
|
||||||
GPa
|
GPa
|
||||||
@ -2370,6 +2374,7 @@ rNEMD
|
|||||||
ro
|
ro
|
||||||
Rochus
|
Rochus
|
||||||
Rockett
|
Rockett
|
||||||
|
Rodrigues
|
||||||
Rohart
|
Rohart
|
||||||
Ronchetti
|
Ronchetti
|
||||||
Rosati
|
Rosati
|
||||||
@ -2774,6 +2779,7 @@ tt
|
|||||||
Tt
|
Tt
|
||||||
TThis
|
TThis
|
||||||
ttm
|
ttm
|
||||||
|
ttol
|
||||||
tu
|
tu
|
||||||
Tuckerman
|
Tuckerman
|
||||||
tue
|
tue
|
||||||
@ -2846,6 +2852,7 @@ utsa
|
|||||||
Uttormark
|
Uttormark
|
||||||
uvm
|
uvm
|
||||||
uwo
|
uwo
|
||||||
|
Uzdin
|
||||||
vacf
|
vacf
|
||||||
valent
|
valent
|
||||||
Valeriu
|
Valeriu
|
||||||
@ -2945,7 +2952,7 @@ wB
|
|||||||
Wbody
|
Wbody
|
||||||
webpage
|
webpage
|
||||||
Weckner
|
Weckner
|
||||||
WeinenE
|
WeinanE
|
||||||
Wennberg
|
Wennberg
|
||||||
Westview
|
Westview
|
||||||
wget
|
wget
|
||||||
|
|||||||
13
examples/SPIN/gneb/README
Normal file
13
examples/SPIN/gneb/README
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
Perform geodesic NEB calculations for spin configurations.
|
||||||
|
The two examples are:
|
||||||
|
- the magnetic switching of an iron nanoisland
|
||||||
|
- the collapse of a magnetic skyrmion
|
||||||
|
|
||||||
|
Run those examples as:
|
||||||
|
|
||||||
|
mpirun -np 3 lmp_mpi -in in.gneb.iron -partition 3x1
|
||||||
|
|
||||||
|
You should be able to use any number of replicas >= 3.
|
||||||
|
|
||||||
|
In the interpolate/ directory, a c routine is provided to
|
||||||
|
interpolate the MEP.
|
||||||
68
examples/SPIN/gneb/iron/final.iron_spin
Normal file
68
examples/SPIN/gneb/iron/final.iron_spin
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
32
|
||||||
|
1 2.2000000000000002e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
2 2.2000000000000002e+00 1.4332499999999999e+00 1.4332499999999999e+00 1.4332499999999999e+00 -1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
3 2.2000000000000002e+00 2.8664999999999998e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
4 2.2000000000000002e+00 4.2997499999999995e+00 1.4332499999999999e+00 1.4332499999999999e+00 -1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
5 2.2000000000000002e+00 5.7329999999999997e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
6 2.2000000000000002e+00 7.1662499999999998e+00 1.4332499999999999e+00 1.4332499999999999e+00 -1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
7 2.2000000000000002e+00 8.5994999999999990e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
8 2.2000000000000002e+00 1.0032750000000000e+01 1.4332499999999999e+00 1.4332499999999999e+00 -1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
9 2.2000000000000002e+00 0.0000000000000000e+00 2.8664999999999998e+00 0.0000000000000000e+00 -1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
10 2.2000000000000002e+00 2.8664999999999998e+00 2.8664999999999998e+00 0.0000000000000000e+00 -1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
11 2.2000000000000002e+00 5.7329999999999997e+00 2.8664999999999998e+00 0.0000000000000000e+00 -1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
12 2.2000000000000002e+00 8.5994999999999990e+00 2.8664999999999998e+00 0.0000000000000000e+00 -1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
13 2.2000000000000002e+00 1.4332499999999999e+00 4.2997499999999995e+00 1.4332499999999999e+00 -1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
14 2.2000000000000002e+00 4.2997499999999995e+00 4.2997499999999995e+00 1.4332499999999999e+00 -1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
15 2.2000000000000002e+00 7.1662499999999998e+00 4.2997499999999995e+00 1.4332499999999999e+00 -1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
16 2.2000000000000002e+00 1.0032750000000000e+01 4.2997499999999995e+00 1.4332499999999999e+00 -1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
17 2.2000000000000002e+00 0.0000000000000000e+00 5.7329999999999997e+00 0.0000000000000000e+00 -1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
18 2.2000000000000002e+00 1.4332499999999999e+00 7.1662499999999998e+00 1.4332499999999999e+00 -1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
19 2.2000000000000002e+00 2.8664999999999998e+00 5.7329999999999997e+00 0.0000000000000000e+00 -1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
20 2.2000000000000002e+00 4.2997499999999995e+00 7.1662499999999998e+00 1.4332499999999999e+00 -1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
21 2.2000000000000002e+00 5.7329999999999997e+00 5.7329999999999997e+00 0.0000000000000000e+00 -1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
22 2.2000000000000002e+00 7.1662499999999998e+00 7.1662499999999998e+00 1.4332499999999999e+00 -1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
23 2.2000000000000002e+00 8.5994999999999990e+00 5.7329999999999997e+00 0.0000000000000000e+00 -1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
24 2.2000000000000002e+00 1.0032750000000000e+01 7.1662499999999998e+00 1.4332499999999999e+00 -1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
25 2.2000000000000002e+00 0.0000000000000000e+00 8.5994999999999990e+00 0.0000000000000000e+00 -1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
26 2.2000000000000002e+00 2.8664999999999998e+00 8.5994999999999990e+00 0.0000000000000000e+00 -1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
27 2.2000000000000002e+00 5.7329999999999997e+00 8.5994999999999990e+00 0.0000000000000000e+00 -1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
28 2.2000000000000002e+00 8.5994999999999990e+00 8.5994999999999990e+00 0.0000000000000000e+00 -1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
29 2.2000000000000002e+00 1.4332499999999999e+00 1.0032750000000000e+01 1.4332499999999999e+00 -1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
30 2.2000000000000002e+00 4.2997499999999995e+00 1.0032750000000000e+01 1.4332499999999999e+00 -1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
31 2.2000000000000002e+00 7.1662499999999998e+00 1.0032750000000000e+01 1.4332499999999999e+00 -1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
32 2.2000000000000002e+00 1.0032750000000000e+01 1.0032750000000000e+01 1.4332499999999999e+00 -1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
50
examples/SPIN/gneb/iron/in.gneb.iron
Normal file
50
examples/SPIN/gneb/iron/in.gneb.iron
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
|
||||||
|
units metal
|
||||||
|
dimension 3
|
||||||
|
boundary p p f
|
||||||
|
atom_style spin
|
||||||
|
|
||||||
|
# necessary for the serial algorithm (sametag)
|
||||||
|
atom_modify map array
|
||||||
|
|
||||||
|
# setting mass, mag. moments, and interactions for bcc iron
|
||||||
|
# (mass not necessary for fixed lattice calculation)
|
||||||
|
|
||||||
|
read_data initial.iron_spin
|
||||||
|
mass 1 55.845
|
||||||
|
|
||||||
|
pair_style spin/exchange 3.5
|
||||||
|
pair_coeff * * exchange 3.4 0.02726 0.2171 1.841
|
||||||
|
|
||||||
|
neighbor 0.1 bin
|
||||||
|
neigh_modify every 10 check yes delay 20
|
||||||
|
|
||||||
|
fix 1 all precession/spin zeeman 0.1 0.0 0.0 1.0 anisotropy 0.0001 1.0 0.0 0.0
|
||||||
|
fix_modify 1 energy yes
|
||||||
|
fix 3 all neb/spin 1.0
|
||||||
|
|
||||||
|
timestep 0.0001
|
||||||
|
thermo 100
|
||||||
|
|
||||||
|
compute out_mag all spin
|
||||||
|
compute out_pe all pe
|
||||||
|
compute out_ke all ke
|
||||||
|
compute out_temp all temp
|
||||||
|
|
||||||
|
variable magx equal c_out_mag[1]
|
||||||
|
variable magy equal c_out_mag[2]
|
||||||
|
variable magz equal c_out_mag[3]
|
||||||
|
variable magnorm equal c_out_mag[4]
|
||||||
|
variable emag equal c_out_mag[5]
|
||||||
|
|
||||||
|
thermo 100
|
||||||
|
thermo_style custom step time v_magx v_magz v_magnorm etotal
|
||||||
|
thermo_modify format float %20.15g
|
||||||
|
|
||||||
|
compute outsp all property/atom spx spy spz sp fmx fmy fmz
|
||||||
|
variable u universe 1 2 3 4
|
||||||
|
dump 1 all custom 200 dump.$u type x y z c_outsp[1] c_outsp[2] c_outsp[3]
|
||||||
|
|
||||||
|
min_style spin
|
||||||
|
min_modify alpha_damp 1.0 discrete_factor 10.0
|
||||||
|
neb/spin 1.0e-12 1.0e-12 200000 100000 1000 final final.iron_spin verbose
|
||||||
82
examples/SPIN/gneb/iron/initial.iron_spin
Normal file
82
examples/SPIN/gneb/iron/initial.iron_spin
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
LAMMPS data file via write_data, version 4 Jan 2019, timestep = 0
|
||||||
|
|
||||||
|
32 atoms
|
||||||
|
1 atom types
|
||||||
|
|
||||||
|
0.0000000000000000e+00 1.1465999999999999e+01 xlo xhi
|
||||||
|
0.0000000000000000e+00 1.1465999999999999e+01 ylo yhi
|
||||||
|
0.0000000000000000e+00 2.8664999999999998e+00 zlo zhi
|
||||||
|
|
||||||
|
Masses
|
||||||
|
|
||||||
|
1 55.845
|
||||||
|
|
||||||
|
Atoms # spin
|
||||||
|
|
||||||
|
1 1 2.2000000000000002e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0
|
||||||
|
2 1 2.2000000000000002e+00 1.4332499999999999e+00 1.4332499999999999e+00 1.4332499999999999e+00 1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0
|
||||||
|
3 1 2.2000000000000002e+00 2.8664999999999998e+00 0.0000000000000000e+00 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0
|
||||||
|
4 1 2.2000000000000002e+00 4.2997499999999995e+00 1.4332499999999999e+00 1.4332499999999999e+00 1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0
|
||||||
|
5 1 2.2000000000000002e+00 5.7329999999999997e+00 0.0000000000000000e+00 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0
|
||||||
|
6 1 2.2000000000000002e+00 7.1662499999999998e+00 1.4332499999999999e+00 1.4332499999999999e+00 1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0
|
||||||
|
7 1 2.2000000000000002e+00 8.5994999999999990e+00 0.0000000000000000e+00 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0
|
||||||
|
8 1 2.2000000000000002e+00 1.0032750000000000e+01 1.4332499999999999e+00 1.4332499999999999e+00 1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0
|
||||||
|
9 1 2.2000000000000002e+00 0.0000000000000000e+00 2.8664999999999998e+00 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0
|
||||||
|
11 1 2.2000000000000002e+00 2.8664999999999998e+00 2.8664999999999998e+00 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0
|
||||||
|
13 1 2.2000000000000002e+00 5.7329999999999997e+00 2.8664999999999998e+00 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0
|
||||||
|
15 1 2.2000000000000002e+00 8.5994999999999990e+00 2.8664999999999998e+00 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0
|
||||||
|
10 1 2.2000000000000002e+00 1.4332499999999999e+00 4.2997499999999995e+00 1.4332499999999999e+00 1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0
|
||||||
|
12 1 2.2000000000000002e+00 4.2997499999999995e+00 4.2997499999999995e+00 1.4332499999999999e+00 1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0
|
||||||
|
14 1 2.2000000000000002e+00 7.1662499999999998e+00 4.2997499999999995e+00 1.4332499999999999e+00 1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0
|
||||||
|
16 1 2.2000000000000002e+00 1.0032750000000000e+01 4.2997499999999995e+00 1.4332499999999999e+00 1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0
|
||||||
|
17 1 2.2000000000000002e+00 0.0000000000000000e+00 5.7329999999999997e+00 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0
|
||||||
|
18 1 2.2000000000000002e+00 1.4332499999999999e+00 7.1662499999999998e+00 1.4332499999999999e+00 1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0
|
||||||
|
19 1 2.2000000000000002e+00 2.8664999999999998e+00 5.7329999999999997e+00 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0
|
||||||
|
20 1 2.2000000000000002e+00 4.2997499999999995e+00 7.1662499999999998e+00 1.4332499999999999e+00 1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0
|
||||||
|
21 1 2.2000000000000002e+00 5.7329999999999997e+00 5.7329999999999997e+00 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0
|
||||||
|
22 1 2.2000000000000002e+00 7.1662499999999998e+00 7.1662499999999998e+00 1.4332499999999999e+00 1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0
|
||||||
|
23 1 2.2000000000000002e+00 8.5994999999999990e+00 5.7329999999999997e+00 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0
|
||||||
|
24 1 2.2000000000000002e+00 1.0032750000000000e+01 7.1662499999999998e+00 1.4332499999999999e+00 1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0
|
||||||
|
25 1 2.2000000000000002e+00 0.0000000000000000e+00 8.5994999999999990e+00 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0
|
||||||
|
27 1 2.2000000000000002e+00 2.8664999999999998e+00 8.5994999999999990e+00 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0
|
||||||
|
29 1 2.2000000000000002e+00 5.7329999999999997e+00 8.5994999999999990e+00 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0
|
||||||
|
31 1 2.2000000000000002e+00 8.5994999999999990e+00 8.5994999999999990e+00 0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0
|
||||||
|
26 1 2.2000000000000002e+00 1.4332499999999999e+00 1.0032750000000000e+01 1.4332499999999999e+00 1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0
|
||||||
|
28 1 2.2000000000000002e+00 4.2997499999999995e+00 1.0032750000000000e+01 1.4332499999999999e+00 1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0
|
||||||
|
30 1 2.2000000000000002e+00 7.1662499999999998e+00 1.0032750000000000e+01 1.4332499999999999e+00 1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0
|
||||||
|
32 1 2.2000000000000002e+00 1.0032750000000000e+01 1.0032750000000000e+01 1.4332499999999999e+00 1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0 0 0
|
||||||
|
|
||||||
|
Velocities
|
||||||
|
|
||||||
|
1 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
2 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
3 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
4 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
5 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
6 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
7 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
8 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
9 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
11 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
13 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
15 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
10 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
12 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
14 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
16 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
17 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
18 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
19 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
21 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
22 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
23 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
24 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
25 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
27 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
29 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
31 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
26 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
28 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
30 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
32 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
401
examples/SPIN/gneb/skyrmion/final.skyrmion
Normal file
401
examples/SPIN/gneb/skyrmion/final.skyrmion
Normal file
@ -0,0 +1,401 @@
|
|||||||
|
400
|
||||||
|
1 2.5 0.0 0.0 0.0 0.0 0.0 1.0
|
||||||
|
2 2.5 0.0 3.0 0.0 0.0 0.0 1.0
|
||||||
|
3 2.5 0.0 6.0 0.0 0.0 0.0 1.0
|
||||||
|
4 2.5 0.0 9.0 0.0 0.0 0.0 1.0
|
||||||
|
5 2.5 0.0 12.0 0.0 0.0 0.0 1.0
|
||||||
|
6 2.5 0.0 15.0 0.0 0.0 0.0 1.0
|
||||||
|
7 2.5 0.0 18.0 0.0 0.0 0.0 1.0
|
||||||
|
8 2.5 0.0 21.0 0.0 0.0 0.0 1.0
|
||||||
|
9 2.5 0.0 24.0 0.0 0.0 0.0 1.0
|
||||||
|
10 2.5 0.0 27.0 0.0 0.0 0.0 1.0
|
||||||
|
11 2.5 0.0 30.0 0.0 0.0 0.0 1.0
|
||||||
|
12 2.5 0.0 33.0 0.0 0.0 0.0 1.0
|
||||||
|
13 2.5 0.0 36.0 0.0 0.0 0.0 1.0
|
||||||
|
14 2.5 0.0 39.0 0.0 0.0 0.0 1.0
|
||||||
|
15 2.5 0.0 42.0 0.0 0.0 0.0 1.0
|
||||||
|
16 2.5 0.0 45.0 0.0 0.0 0.0 1.0
|
||||||
|
17 2.5 0.0 48.0 0.0 0.0 0.0 1.0
|
||||||
|
18 2.5 0.0 51.0 0.0 0.0 0.0 1.0
|
||||||
|
19 2.5 0.0 54.0 0.0 0.0 0.0 1.0
|
||||||
|
20 2.5 0.0 57.0 0.0 0.0 0.0 1.0
|
||||||
|
21 2.5 3.0 0.0 0.0 0.0 0.0 1.0
|
||||||
|
22 2.5 3.0 3.0 0.0 0.0 0.0 1.0
|
||||||
|
23 2.5 3.0 6.0 0.0 0.0 0.0 1.0
|
||||||
|
24 2.5 3.0 9.0 0.0 0.0 0.0 1.0
|
||||||
|
25 2.5 3.0 12.0 0.0 0.0 0.0 1.0
|
||||||
|
26 2.5 3.0 15.0 0.0 0.0 0.0 1.0
|
||||||
|
27 2.5 3.0 18.0 0.0 0.0 0.0 1.0
|
||||||
|
28 2.5 3.0 21.0 0.0 0.0 0.0 1.0
|
||||||
|
29 2.5 3.0 24.0 0.0 0.0 0.0 1.0
|
||||||
|
30 2.5 3.0 27.0 0.0 0.0 0.0 1.0
|
||||||
|
31 2.5 3.0 30.0 0.0 0.0 0.0 1.0
|
||||||
|
32 2.5 3.0 33.0 0.0 0.0 0.0 1.0
|
||||||
|
33 2.5 3.0 36.0 0.0 0.0 0.0 1.0
|
||||||
|
34 2.5 3.0 39.0 0.0 0.0 0.0 1.0
|
||||||
|
35 2.5 3.0 42.0 0.0 0.0 0.0 1.0
|
||||||
|
36 2.5 3.0 45.0 0.0 0.0 0.0 1.0
|
||||||
|
37 2.5 3.0 48.0 0.0 0.0 0.0 1.0
|
||||||
|
38 2.5 3.0 51.0 0.0 0.0 0.0 1.0
|
||||||
|
39 2.5 3.0 54.0 0.0 0.0 0.0 1.0
|
||||||
|
40 2.5 3.0 57.0 0.0 0.0 0.0 1.0
|
||||||
|
41 2.5 6.0 0.0 0.0 0.0 0.0 1.0
|
||||||
|
42 2.5 6.0 3.0 0.0 0.0 0.0 1.0
|
||||||
|
43 2.5 6.0 6.0 0.0 0.0 0.0 1.0
|
||||||
|
44 2.5 6.0 9.0 0.0 0.0 0.0 1.0
|
||||||
|
45 2.5 6.0 12.0 0.0 0.0 0.0 1.0
|
||||||
|
46 2.5 6.0 15.0 0.0 0.0 0.0 1.0
|
||||||
|
47 2.5 6.0 18.0 0.0 0.0 0.0 1.0
|
||||||
|
48 2.5 6.0 21.0 0.0 0.0 0.0 1.0
|
||||||
|
49 2.5 6.0 24.0 0.0 0.0 0.0 1.0
|
||||||
|
50 2.5 6.0 27.0 0.0 0.0 0.0 1.0
|
||||||
|
51 2.5 6.0 30.0 0.0 0.0 0.0 1.0
|
||||||
|
52 2.5 6.0 33.0 0.0 0.0 0.0 1.0
|
||||||
|
53 2.5 6.0 36.0 0.0 0.0 0.0 1.0
|
||||||
|
54 2.5 6.0 39.0 0.0 0.0 0.0 1.0
|
||||||
|
55 2.5 6.0 42.0 0.0 0.0 0.0 1.0
|
||||||
|
56 2.5 6.0 45.0 0.0 0.0 0.0 1.0
|
||||||
|
57 2.5 6.0 48.0 0.0 0.0 0.0 1.0
|
||||||
|
58 2.5 6.0 51.0 0.0 0.0 0.0 1.0
|
||||||
|
59 2.5 6.0 54.0 0.0 0.0 0.0 1.0
|
||||||
|
60 2.5 6.0 57.0 0.0 0.0 0.0 1.0
|
||||||
|
61 2.5 9.0 0.0 0.0 0.0 0.0 1.0
|
||||||
|
62 2.5 9.0 3.0 0.0 0.0 0.0 1.0
|
||||||
|
63 2.5 9.0 6.0 0.0 0.0 0.0 1.0
|
||||||
|
64 2.5 9.0 9.0 0.0 0.0 0.0 1.0
|
||||||
|
65 2.5 9.0 12.0 0.0 0.0 0.0 1.0
|
||||||
|
66 2.5 9.0 15.0 0.0 0.0 0.0 1.0
|
||||||
|
67 2.5 9.0 18.0 0.0 0.0 0.0 1.0
|
||||||
|
68 2.5 9.0 21.0 0.0 0.0 0.0 1.0
|
||||||
|
69 2.5 9.0 24.0 0.0 0.0 0.0 1.0
|
||||||
|
70 2.5 9.0 27.0 0.0 0.0 0.0 1.0
|
||||||
|
71 2.5 9.0 30.0 0.0 0.0 0.0 1.0
|
||||||
|
72 2.5 9.0 33.0 0.0 0.0 0.0 1.0
|
||||||
|
73 2.5 9.0 36.0 0.0 0.0 0.0 1.0
|
||||||
|
74 2.5 9.0 39.0 0.0 0.0 0.0 1.0
|
||||||
|
75 2.5 9.0 42.0 0.0 0.0 0.0 1.0
|
||||||
|
76 2.5 9.0 45.0 0.0 0.0 0.0 1.0
|
||||||
|
77 2.5 9.0 48.0 0.0 0.0 0.0 1.0
|
||||||
|
78 2.5 9.0 51.0 0.0 0.0 0.0 1.0
|
||||||
|
79 2.5 9.0 54.0 0.0 0.0 0.0 1.0
|
||||||
|
80 2.5 9.0 57.0 0.0 0.0 0.0 1.0
|
||||||
|
81 2.5 12.0 0.0 0.0 0.0 0.0 1.0
|
||||||
|
82 2.5 12.0 3.0 0.0 0.0 0.0 1.0
|
||||||
|
83 2.5 12.0 6.0 0.0 0.0 0.0 1.0
|
||||||
|
84 2.5 12.0 9.0 0.0 0.0 0.0 1.0
|
||||||
|
85 2.5 12.0 12.0 0.0 0.0 0.0 1.0
|
||||||
|
86 2.5 12.0 15.0 0.0 0.0 0.0 1.0
|
||||||
|
87 2.5 12.0 18.0 0.0 0.0 0.0 1.0
|
||||||
|
88 2.5 12.0 21.0 0.0 0.0 0.0 1.0
|
||||||
|
89 2.5 12.0 24.0 0.0 0.0 0.0 1.0
|
||||||
|
90 2.5 12.0 27.0 0.0 0.0 0.0 1.0
|
||||||
|
91 2.5 12.0 30.0 0.0 0.0 0.0 1.0
|
||||||
|
92 2.5 12.0 33.0 0.0 0.0 0.0 1.0
|
||||||
|
93 2.5 12.0 36.0 0.0 0.0 0.0 1.0
|
||||||
|
94 2.5 12.0 39.0 0.0 0.0 0.0 1.0
|
||||||
|
95 2.5 12.0 42.0 0.0 0.0 0.0 1.0
|
||||||
|
96 2.5 12.0 45.0 0.0 0.0 0.0 1.0
|
||||||
|
97 2.5 12.0 48.0 0.0 0.0 0.0 1.0
|
||||||
|
98 2.5 12.0 51.0 0.0 0.0 0.0 1.0
|
||||||
|
99 2.5 12.0 54.0 0.0 0.0 0.0 1.0
|
||||||
|
100 2.5 12.0 57.0 0.0 0.0 0.0 1.0
|
||||||
|
101 2.5 15.0 0.0 0.0 0.0 0.0 1.0
|
||||||
|
102 2.5 15.0 3.0 0.0 0.0 0.0 1.0
|
||||||
|
103 2.5 15.0 6.0 0.0 0.0 0.0 1.0
|
||||||
|
104 2.5 15.0 9.0 0.0 0.0 0.0 1.0
|
||||||
|
105 2.5 15.0 12.0 0.0 0.0 0.0 1.0
|
||||||
|
106 2.5 15.0 15.0 0.0 0.0 0.0 1.0
|
||||||
|
107 2.5 15.0 18.0 0.0 0.0 0.0 1.0
|
||||||
|
108 2.5 15.0 21.0 0.0 0.0 0.0 1.0
|
||||||
|
109 2.5 15.0 24.0 0.0 0.0 0.0 1.0
|
||||||
|
110 2.5 15.0 27.0 0.0 0.0 0.0 1.0
|
||||||
|
111 2.5 15.0 30.0 0.0 0.0 0.0 1.0
|
||||||
|
112 2.5 15.0 33.0 0.0 0.0 0.0 1.0
|
||||||
|
113 2.5 15.0 36.0 0.0 0.0 0.0 1.0
|
||||||
|
114 2.5 15.0 39.0 0.0 0.0 0.0 1.0
|
||||||
|
115 2.5 15.0 42.0 0.0 0.0 0.0 1.0
|
||||||
|
116 2.5 15.0 45.0 0.0 0.0 0.0 1.0
|
||||||
|
117 2.5 15.0 48.0 0.0 0.0 0.0 1.0
|
||||||
|
118 2.5 15.0 51.0 0.0 0.0 0.0 1.0
|
||||||
|
119 2.5 15.0 54.0 0.0 0.0 0.0 1.0
|
||||||
|
120 2.5 15.0 57.0 0.0 0.0 0.0 1.0
|
||||||
|
121 2.5 18.0 0.0 0.0 0.0 0.0 1.0
|
||||||
|
122 2.5 18.0 3.0 0.0 0.0 0.0 1.0
|
||||||
|
123 2.5 18.0 6.0 0.0 0.0 0.0 1.0
|
||||||
|
124 2.5 18.0 9.0 0.0 0.0 0.0 1.0
|
||||||
|
125 2.5 18.0 12.0 0.0 0.0 0.0 1.0
|
||||||
|
126 2.5 18.0 15.0 0.0 0.0 0.0 1.0
|
||||||
|
127 2.5 18.0 18.0 0.0 0.0 0.0 1.0
|
||||||
|
128 2.5 18.0 21.0 0.0 0.0 0.0 1.0
|
||||||
|
129 2.5 18.0 24.0 0.0 0.0 0.0 1.0
|
||||||
|
130 2.5 18.0 27.0 0.0 0.0 0.0 1.0
|
||||||
|
131 2.5 18.0 30.0 0.0 0.0 0.0 1.0
|
||||||
|
132 2.5 18.0 33.0 0.0 0.0 0.0 1.0
|
||||||
|
133 2.5 18.0 36.0 0.0 0.0 0.0 1.0
|
||||||
|
134 2.5 18.0 39.0 0.0 0.0 0.0 1.0
|
||||||
|
135 2.5 18.0 42.0 0.0 0.0 0.0 1.0
|
||||||
|
136 2.5 18.0 45.0 0.0 0.0 0.0 1.0
|
||||||
|
137 2.5 18.0 48.0 0.0 0.0 0.0 1.0
|
||||||
|
138 2.5 18.0 51.0 0.0 0.0 0.0 1.0
|
||||||
|
139 2.5 18.0 54.0 0.0 0.0 0.0 1.0
|
||||||
|
140 2.5 18.0 57.0 0.0 0.0 0.0 1.0
|
||||||
|
141 2.5 21.0 0.0 0.0 0.0 0.0 1.0
|
||||||
|
142 2.5 21.0 3.0 0.0 0.0 0.0 1.0
|
||||||
|
143 2.5 21.0 6.0 0.0 0.0 0.0 1.0
|
||||||
|
144 2.5 21.0 9.0 0.0 0.0 0.0 1.0
|
||||||
|
145 2.5 21.0 12.0 0.0 0.0 0.0 1.0
|
||||||
|
146 2.5 21.0 15.0 0.0 0.0 0.0 1.0
|
||||||
|
147 2.5 21.0 18.0 0.0 0.0 0.0 1.0
|
||||||
|
148 2.5 21.0 21.0 0.0 0.0 0.0 1.0
|
||||||
|
149 2.5 21.0 24.0 0.0 0.0 0.0 1.0
|
||||||
|
150 2.5 21.0 27.0 0.0 0.0 0.0 1.0
|
||||||
|
151 2.5 21.0 30.0 0.0 0.0 0.0 1.0
|
||||||
|
152 2.5 21.0 33.0 0.0 0.0 0.0 1.0
|
||||||
|
153 2.5 21.0 36.0 0.0 0.0 0.0 1.0
|
||||||
|
154 2.5 21.0 39.0 0.0 0.0 0.0 1.0
|
||||||
|
155 2.5 21.0 42.0 0.0 0.0 0.0 1.0
|
||||||
|
156 2.5 21.0 45.0 0.0 0.0 0.0 1.0
|
||||||
|
157 2.5 21.0 48.0 0.0 0.0 0.0 1.0
|
||||||
|
158 2.5 21.0 51.0 0.0 0.0 0.0 1.0
|
||||||
|
159 2.5 21.0 54.0 0.0 0.0 0.0 1.0
|
||||||
|
160 2.5 21.0 57.0 0.0 0.0 0.0 1.0
|
||||||
|
161 2.5 24.0 0.0 0.0 0.0 0.0 1.0
|
||||||
|
162 2.5 24.0 3.0 0.0 0.0 0.0 1.0
|
||||||
|
163 2.5 24.0 6.0 0.0 0.0 0.0 1.0
|
||||||
|
164 2.5 24.0 9.0 0.0 0.0 0.0 1.0
|
||||||
|
165 2.5 24.0 12.0 0.0 0.0 0.0 1.0
|
||||||
|
166 2.5 24.0 15.0 0.0 0.0 0.0 1.0
|
||||||
|
167 2.5 24.0 18.0 0.0 0.0 0.0 1.0
|
||||||
|
168 2.5 24.0 21.0 0.0 0.0 0.0 1.0
|
||||||
|
169 2.5 24.0 24.0 0.0 0.0 0.0 1.0
|
||||||
|
170 2.5 24.0 27.0 0.0 0.0 0.0 1.0
|
||||||
|
171 2.5 24.0 30.0 0.0 0.0 0.0 1.0
|
||||||
|
172 2.5 24.0 33.0 0.0 0.0 0.0 1.0
|
||||||
|
173 2.5 24.0 36.0 0.0 0.0 0.0 1.0
|
||||||
|
174 2.5 24.0 39.0 0.0 0.0 0.0 1.0
|
||||||
|
175 2.5 24.0 42.0 0.0 0.0 0.0 1.0
|
||||||
|
176 2.5 24.0 45.0 0.0 0.0 0.0 1.0
|
||||||
|
177 2.5 24.0 48.0 0.0 0.0 0.0 1.0
|
||||||
|
178 2.5 24.0 51.0 0.0 0.0 0.0 1.0
|
||||||
|
179 2.5 24.0 54.0 0.0 0.0 0.0 1.0
|
||||||
|
180 2.5 24.0 57.0 0.0 0.0 0.0 1.0
|
||||||
|
181 2.5 27.0 0.0 0.0 0.0 0.0 1.0
|
||||||
|
182 2.5 27.0 3.0 0.0 0.0 0.0 1.0
|
||||||
|
183 2.5 27.0 6.0 0.0 0.0 0.0 1.0
|
||||||
|
184 2.5 27.0 9.0 0.0 0.0 0.0 1.0
|
||||||
|
185 2.5 27.0 12.0 0.0 0.0 0.0 1.0
|
||||||
|
186 2.5 27.0 15.0 0.0 0.0 0.0 1.0
|
||||||
|
187 2.5 27.0 18.0 0.0 0.0 0.0 1.0
|
||||||
|
188 2.5 27.0 21.0 0.0 0.0 0.0 1.0
|
||||||
|
189 2.5 27.0 24.0 0.0 0.0 0.0 1.0
|
||||||
|
190 2.5 27.0 27.0 0.0 0.0 0.0 1.0
|
||||||
|
191 2.5 27.0 30.0 0.0 0.0 0.0 1.0
|
||||||
|
192 2.5 27.0 33.0 0.0 0.0 0.0 1.0
|
||||||
|
193 2.5 27.0 36.0 0.0 0.0 0.0 1.0
|
||||||
|
194 2.5 27.0 39.0 0.0 0.0 0.0 1.0
|
||||||
|
195 2.5 27.0 42.0 0.0 0.0 0.0 1.0
|
||||||
|
196 2.5 27.0 45.0 0.0 0.0 0.0 1.0
|
||||||
|
197 2.5 27.0 48.0 0.0 0.0 0.0 1.0
|
||||||
|
198 2.5 27.0 51.0 0.0 0.0 0.0 1.0
|
||||||
|
199 2.5 27.0 54.0 0.0 0.0 0.0 1.0
|
||||||
|
200 2.5 27.0 57.0 0.0 0.0 0.0 1.0
|
||||||
|
201 2.5 30.0 0.0 0.0 0.0 0.0 1.0
|
||||||
|
202 2.5 30.0 3.0 0.0 0.0 0.0 1.0
|
||||||
|
203 2.5 30.0 6.0 0.0 0.0 0.0 1.0
|
||||||
|
204 2.5 30.0 9.0 0.0 0.0 0.0 1.0
|
||||||
|
205 2.5 30.0 12.0 0.0 0.0 0.0 1.0
|
||||||
|
206 2.5 30.0 15.0 0.0 0.0 0.0 1.0
|
||||||
|
207 2.5 30.0 18.0 0.0 0.0 0.0 1.0
|
||||||
|
208 2.5 30.0 21.0 0.0 0.0 0.0 1.0
|
||||||
|
209 2.5 30.0 24.0 0.0 0.0 0.0 1.0
|
||||||
|
210 2.5 30.0 27.0 0.0 0.0 0.0 1.0
|
||||||
|
211 2.5 30.0 30.0 0.0 0.0 0.0 1.0
|
||||||
|
212 2.5 30.0 33.0 0.0 0.0 0.0 1.0
|
||||||
|
213 2.5 30.0 36.0 0.0 0.0 0.0 1.0
|
||||||
|
214 2.5 30.0 39.0 0.0 0.0 0.0 1.0
|
||||||
|
215 2.5 30.0 42.0 0.0 0.0 0.0 1.0
|
||||||
|
216 2.5 30.0 45.0 0.0 0.0 0.0 1.0
|
||||||
|
217 2.5 30.0 48.0 0.0 0.0 0.0 1.0
|
||||||
|
218 2.5 30.0 51.0 0.0 0.0 0.0 1.0
|
||||||
|
219 2.5 30.0 54.0 0.0 0.0 0.0 1.0
|
||||||
|
220 2.5 30.0 57.0 0.0 0.0 0.0 1.0
|
||||||
|
221 2.5 33.0 0.0 0.0 0.0 0.0 1.0
|
||||||
|
222 2.5 33.0 3.0 0.0 0.0 0.0 1.0
|
||||||
|
223 2.5 33.0 6.0 0.0 0.0 0.0 1.0
|
||||||
|
224 2.5 33.0 9.0 0.0 0.0 0.0 1.0
|
||||||
|
225 2.5 33.0 12.0 0.0 0.0 0.0 1.0
|
||||||
|
226 2.5 33.0 15.0 0.0 0.0 0.0 1.0
|
||||||
|
227 2.5 33.0 18.0 0.0 0.0 0.0 1.0
|
||||||
|
228 2.5 33.0 21.0 0.0 0.0 0.0 1.0
|
||||||
|
229 2.5 33.0 24.0 0.0 0.0 0.0 1.0
|
||||||
|
230 2.5 33.0 27.0 0.0 0.0 0.0 1.0
|
||||||
|
231 2.5 33.0 30.0 0.0 0.0 0.0 1.0
|
||||||
|
232 2.5 33.0 33.0 0.0 0.0 0.0 1.0
|
||||||
|
233 2.5 33.0 36.0 0.0 0.0 0.0 1.0
|
||||||
|
234 2.5 33.0 39.0 0.0 0.0 0.0 1.0
|
||||||
|
235 2.5 33.0 42.0 0.0 0.0 0.0 1.0
|
||||||
|
236 2.5 33.0 45.0 0.0 0.0 0.0 1.0
|
||||||
|
237 2.5 33.0 48.0 0.0 0.0 0.0 1.0
|
||||||
|
238 2.5 33.0 51.0 0.0 0.0 0.0 1.0
|
||||||
|
239 2.5 33.0 54.0 0.0 0.0 0.0 1.0
|
||||||
|
240 2.5 33.0 57.0 0.0 0.0 0.0 1.0
|
||||||
|
241 2.5 36.0 0.0 0.0 0.0 0.0 1.0
|
||||||
|
242 2.5 36.0 3.0 0.0 0.0 0.0 1.0
|
||||||
|
243 2.5 36.0 6.0 0.0 0.0 0.0 1.0
|
||||||
|
244 2.5 36.0 9.0 0.0 0.0 0.0 1.0
|
||||||
|
245 2.5 36.0 12.0 0.0 0.0 0.0 1.0
|
||||||
|
246 2.5 36.0 15.0 0.0 0.0 0.0 1.0
|
||||||
|
247 2.5 36.0 18.0 0.0 0.0 0.0 1.0
|
||||||
|
248 2.5 36.0 21.0 0.0 0.0 0.0 1.0
|
||||||
|
249 2.5 36.0 24.0 0.0 0.0 0.0 1.0
|
||||||
|
250 2.5 36.0 27.0 0.0 0.0 0.0 1.0
|
||||||
|
251 2.5 36.0 30.0 0.0 0.0 0.0 1.0
|
||||||
|
252 2.5 36.0 33.0 0.0 0.0 0.0 1.0
|
||||||
|
253 2.5 36.0 36.0 0.0 0.0 0.0 1.0
|
||||||
|
254 2.5 36.0 39.0 0.0 0.0 0.0 1.0
|
||||||
|
255 2.5 36.0 42.0 0.0 0.0 0.0 1.0
|
||||||
|
256 2.5 36.0 45.0 0.0 0.0 0.0 1.0
|
||||||
|
257 2.5 36.0 48.0 0.0 0.0 0.0 1.0
|
||||||
|
258 2.5 36.0 51.0 0.0 0.0 0.0 1.0
|
||||||
|
259 2.5 36.0 54.0 0.0 0.0 0.0 1.0
|
||||||
|
260 2.5 36.0 57.0 0.0 0.0 0.0 1.0
|
||||||
|
261 2.5 39.0 0.0 0.0 0.0 0.0 1.0
|
||||||
|
262 2.5 39.0 3.0 0.0 0.0 0.0 1.0
|
||||||
|
263 2.5 39.0 6.0 0.0 0.0 0.0 1.0
|
||||||
|
264 2.5 39.0 9.0 0.0 0.0 0.0 1.0
|
||||||
|
265 2.5 39.0 12.0 0.0 0.0 0.0 1.0
|
||||||
|
266 2.5 39.0 15.0 0.0 0.0 0.0 1.0
|
||||||
|
267 2.5 39.0 18.0 0.0 0.0 0.0 1.0
|
||||||
|
268 2.5 39.0 21.0 0.0 0.0 0.0 1.0
|
||||||
|
269 2.5 39.0 24.0 0.0 0.0 0.0 1.0
|
||||||
|
270 2.5 39.0 27.0 0.0 0.0 0.0 1.0
|
||||||
|
271 2.5 39.0 30.0 0.0 0.0 0.0 1.0
|
||||||
|
272 2.5 39.0 33.0 0.0 0.0 0.0 1.0
|
||||||
|
273 2.5 39.0 36.0 0.0 0.0 0.0 1.0
|
||||||
|
274 2.5 39.0 39.0 0.0 0.0 0.0 1.0
|
||||||
|
275 2.5 39.0 42.0 0.0 0.0 0.0 1.0
|
||||||
|
276 2.5 39.0 45.0 0.0 0.0 0.0 1.0
|
||||||
|
277 2.5 39.0 48.0 0.0 0.0 0.0 1.0
|
||||||
|
278 2.5 39.0 51.0 0.0 0.0 0.0 1.0
|
||||||
|
279 2.5 39.0 54.0 0.0 0.0 0.0 1.0
|
||||||
|
280 2.5 39.0 57.0 0.0 0.0 0.0 1.0
|
||||||
|
281 2.5 42.0 0.0 0.0 0.0 0.0 1.0
|
||||||
|
282 2.5 42.0 3.0 0.0 0.0 0.0 1.0
|
||||||
|
283 2.5 42.0 6.0 0.0 0.0 0.0 1.0
|
||||||
|
284 2.5 42.0 9.0 0.0 0.0 0.0 1.0
|
||||||
|
285 2.5 42.0 12.0 0.0 0.0 0.0 1.0
|
||||||
|
286 2.5 42.0 15.0 0.0 0.0 0.0 1.0
|
||||||
|
287 2.5 42.0 18.0 0.0 0.0 0.0 1.0
|
||||||
|
288 2.5 42.0 21.0 0.0 0.0 0.0 1.0
|
||||||
|
289 2.5 42.0 24.0 0.0 0.0 0.0 1.0
|
||||||
|
290 2.5 42.0 27.0 0.0 0.0 0.0 1.0
|
||||||
|
291 2.5 42.0 30.0 0.0 0.0 0.0 1.0
|
||||||
|
292 2.5 42.0 33.0 0.0 0.0 0.0 1.0
|
||||||
|
293 2.5 42.0 36.0 0.0 0.0 0.0 1.0
|
||||||
|
294 2.5 42.0 39.0 0.0 0.0 0.0 1.0
|
||||||
|
295 2.5 42.0 42.0 0.0 0.0 0.0 1.0
|
||||||
|
296 2.5 42.0 45.0 0.0 0.0 0.0 1.0
|
||||||
|
297 2.5 42.0 48.0 0.0 0.0 0.0 1.0
|
||||||
|
298 2.5 42.0 51.0 0.0 0.0 0.0 1.0
|
||||||
|
299 2.5 42.0 54.0 0.0 0.0 0.0 1.0
|
||||||
|
300 2.5 42.0 57.0 0.0 0.0 0.0 1.0
|
||||||
|
301 2.5 45.0 0.0 0.0 0.0 0.0 1.0
|
||||||
|
302 2.5 45.0 3.0 0.0 0.0 0.0 1.0
|
||||||
|
303 2.5 45.0 6.0 0.0 0.0 0.0 1.0
|
||||||
|
304 2.5 45.0 9.0 0.0 0.0 0.0 1.0
|
||||||
|
305 2.5 45.0 12.0 0.0 0.0 0.0 1.0
|
||||||
|
306 2.5 45.0 15.0 0.0 0.0 0.0 1.0
|
||||||
|
307 2.5 45.0 18.0 0.0 0.0 0.0 1.0
|
||||||
|
308 2.5 45.0 21.0 0.0 0.0 0.0 1.0
|
||||||
|
309 2.5 45.0 24.0 0.0 0.0 0.0 1.0
|
||||||
|
310 2.5 45.0 27.0 0.0 0.0 0.0 1.0
|
||||||
|
311 2.5 45.0 30.0 0.0 0.0 0.0 1.0
|
||||||
|
312 2.5 45.0 33.0 0.0 0.0 0.0 1.0
|
||||||
|
313 2.5 45.0 36.0 0.0 0.0 0.0 1.0
|
||||||
|
314 2.5 45.0 39.0 0.0 0.0 0.0 1.0
|
||||||
|
315 2.5 45.0 42.0 0.0 0.0 0.0 1.0
|
||||||
|
316 2.5 45.0 45.0 0.0 0.0 0.0 1.0
|
||||||
|
317 2.5 45.0 48.0 0.0 0.0 0.0 1.0
|
||||||
|
318 2.5 45.0 51.0 0.0 0.0 0.0 1.0
|
||||||
|
319 2.5 45.0 54.0 0.0 0.0 0.0 1.0
|
||||||
|
320 2.5 45.0 57.0 0.0 0.0 0.0 1.0
|
||||||
|
321 2.5 48.0 0.0 0.0 0.0 0.0 1.0
|
||||||
|
322 2.5 48.0 3.0 0.0 0.0 0.0 1.0
|
||||||
|
323 2.5 48.0 6.0 0.0 0.0 0.0 1.0
|
||||||
|
324 2.5 48.0 9.0 0.0 0.0 0.0 1.0
|
||||||
|
325 2.5 48.0 12.0 0.0 0.0 0.0 1.0
|
||||||
|
326 2.5 48.0 15.0 0.0 0.0 0.0 1.0
|
||||||
|
327 2.5 48.0 18.0 0.0 0.0 0.0 1.0
|
||||||
|
328 2.5 48.0 21.0 0.0 0.0 0.0 1.0
|
||||||
|
329 2.5 48.0 24.0 0.0 0.0 0.0 1.0
|
||||||
|
330 2.5 48.0 27.0 0.0 0.0 0.0 1.0
|
||||||
|
331 2.5 48.0 30.0 0.0 0.0 0.0 1.0
|
||||||
|
332 2.5 48.0 33.0 0.0 0.0 0.0 1.0
|
||||||
|
333 2.5 48.0 36.0 0.0 0.0 0.0 1.0
|
||||||
|
334 2.5 48.0 39.0 0.0 0.0 0.0 1.0
|
||||||
|
335 2.5 48.0 42.0 0.0 0.0 0.0 1.0
|
||||||
|
336 2.5 48.0 45.0 0.0 0.0 0.0 1.0
|
||||||
|
337 2.5 48.0 48.0 0.0 0.0 0.0 1.0
|
||||||
|
338 2.5 48.0 51.0 0.0 0.0 0.0 1.0
|
||||||
|
339 2.5 48.0 54.0 0.0 0.0 0.0 1.0
|
||||||
|
340 2.5 48.0 57.0 0.0 0.0 0.0 1.0
|
||||||
|
341 2.5 51.0 0.0 0.0 0.0 0.0 1.0
|
||||||
|
342 2.5 51.0 3.0 0.0 0.0 0.0 1.0
|
||||||
|
343 2.5 51.0 6.0 0.0 0.0 0.0 1.0
|
||||||
|
344 2.5 51.0 9.0 0.0 0.0 0.0 1.0
|
||||||
|
345 2.5 51.0 12.0 0.0 0.0 0.0 1.0
|
||||||
|
346 2.5 51.0 15.0 0.0 0.0 0.0 1.0
|
||||||
|
347 2.5 51.0 18.0 0.0 0.0 0.0 1.0
|
||||||
|
348 2.5 51.0 21.0 0.0 0.0 0.0 1.0
|
||||||
|
349 2.5 51.0 24.0 0.0 0.0 0.0 1.0
|
||||||
|
350 2.5 51.0 27.0 0.0 0.0 0.0 1.0
|
||||||
|
351 2.5 51.0 30.0 0.0 0.0 0.0 1.0
|
||||||
|
352 2.5 51.0 33.0 0.0 0.0 0.0 1.0
|
||||||
|
353 2.5 51.0 36.0 0.0 0.0 0.0 1.0
|
||||||
|
354 2.5 51.0 39.0 0.0 0.0 0.0 1.0
|
||||||
|
355 2.5 51.0 42.0 0.0 0.0 0.0 1.0
|
||||||
|
356 2.5 51.0 45.0 0.0 0.0 0.0 1.0
|
||||||
|
357 2.5 51.0 48.0 0.0 0.0 0.0 1.0
|
||||||
|
358 2.5 51.0 51.0 0.0 0.0 0.0 1.0
|
||||||
|
359 2.5 51.0 54.0 0.0 0.0 0.0 1.0
|
||||||
|
360 2.5 51.0 57.0 0.0 0.0 0.0 1.0
|
||||||
|
361 2.5 54.0 0.0 0.0 0.0 0.0 1.0
|
||||||
|
362 2.5 54.0 3.0 0.0 0.0 0.0 1.0
|
||||||
|
363 2.5 54.0 6.0 0.0 0.0 0.0 1.0
|
||||||
|
364 2.5 54.0 9.0 0.0 0.0 0.0 1.0
|
||||||
|
365 2.5 54.0 12.0 0.0 0.0 0.0 1.0
|
||||||
|
366 2.5 54.0 15.0 0.0 0.0 0.0 1.0
|
||||||
|
367 2.5 54.0 18.0 0.0 0.0 0.0 1.0
|
||||||
|
368 2.5 54.0 21.0 0.0 0.0 0.0 1.0
|
||||||
|
369 2.5 54.0 24.0 0.0 0.0 0.0 1.0
|
||||||
|
370 2.5 54.0 27.0 0.0 0.0 0.0 1.0
|
||||||
|
371 2.5 54.0 30.0 0.0 0.0 0.0 1.0
|
||||||
|
372 2.5 54.0 33.0 0.0 0.0 0.0 1.0
|
||||||
|
373 2.5 54.0 36.0 0.0 0.0 0.0 1.0
|
||||||
|
374 2.5 54.0 39.0 0.0 0.0 0.0 1.0
|
||||||
|
375 2.5 54.0 42.0 0.0 0.0 0.0 1.0
|
||||||
|
376 2.5 54.0 45.0 0.0 0.0 0.0 1.0
|
||||||
|
377 2.5 54.0 48.0 0.0 0.0 0.0 1.0
|
||||||
|
378 2.5 54.0 51.0 0.0 0.0 0.0 1.0
|
||||||
|
379 2.5 54.0 54.0 0.0 0.0 0.0 1.0
|
||||||
|
380 2.5 54.0 57.0 0.0 0.0 0.0 1.0
|
||||||
|
381 2.5 57.0 0.0 0.0 0.0 0.0 1.0
|
||||||
|
382 2.5 57.0 3.0 0.0 0.0 0.0 1.0
|
||||||
|
383 2.5 57.0 6.0 0.0 0.0 0.0 1.0
|
||||||
|
384 2.5 57.0 9.0 0.0 0.0 0.0 1.0
|
||||||
|
385 2.5 57.0 12.0 0.0 0.0 0.0 1.0
|
||||||
|
386 2.5 57.0 15.0 0.0 0.0 0.0 1.0
|
||||||
|
387 2.5 57.0 18.0 0.0 0.0 0.0 1.0
|
||||||
|
388 2.5 57.0 21.0 0.0 0.0 0.0 1.0
|
||||||
|
389 2.5 57.0 24.0 0.0 0.0 0.0 1.0
|
||||||
|
390 2.5 57.0 27.0 0.0 0.0 0.0 1.0
|
||||||
|
391 2.5 57.0 30.0 0.0 0.0 0.0 1.0
|
||||||
|
392 2.5 57.0 33.0 0.0 0.0 0.0 1.0
|
||||||
|
393 2.5 57.0 36.0 0.0 0.0 0.0 1.0
|
||||||
|
394 2.5 57.0 39.0 0.0 0.0 0.0 1.0
|
||||||
|
395 2.5 57.0 42.0 0.0 0.0 0.0 1.0
|
||||||
|
396 2.5 57.0 45.0 0.0 0.0 0.0 1.0
|
||||||
|
397 2.5 57.0 48.0 0.0 0.0 0.0 1.0
|
||||||
|
398 2.5 57.0 51.0 0.0 0.0 0.0 1.0
|
||||||
|
399 2.5 57.0 54.0 0.0 0.0 0.0 1.0
|
||||||
|
400 2.5 57.0 57.0 0.0 0.0 0.0 1.0
|
||||||
47
examples/SPIN/gneb/skyrmion/in.gneb.skyrmion
Normal file
47
examples/SPIN/gneb/skyrmion/in.gneb.skyrmion
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
|
||||||
|
units metal
|
||||||
|
dimension 3
|
||||||
|
boundary p p f
|
||||||
|
atom_style spin
|
||||||
|
|
||||||
|
# necessary for the serial algorithm (sametag)
|
||||||
|
atom_modify map array
|
||||||
|
|
||||||
|
# setting mass, mag. moments, and interactions for bcc iron
|
||||||
|
# (mass not necessary for fixed lattice calculation)
|
||||||
|
|
||||||
|
read_data initial.skyrmion
|
||||||
|
mass 1 55.845
|
||||||
|
|
||||||
|
pair_style hybrid/overlay spin/exchange 3.1 spin/dmi 3.1
|
||||||
|
pair_coeff * * spin/exchange exchange 3.1 0.01593 0.06626915552 1.211
|
||||||
|
pair_coeff * * spin/dmi dmi 3.1 0.12e-03 0.0 0.0 1.0
|
||||||
|
|
||||||
|
neighbor 0.1 bin
|
||||||
|
neigh_modify every 10 check yes delay 20
|
||||||
|
|
||||||
|
fix 1 all precession/spin zeeman 0.0 0.0 0.0 1.0 anisotropy 5e-05 0.0 0.0 1.0
|
||||||
|
fix_modify 1 energy yes
|
||||||
|
fix 2 all langevin/spin 0.0 0.0 21
|
||||||
|
fix 3 all neb/spin 1.0
|
||||||
|
|
||||||
|
timestep 0.0001
|
||||||
|
|
||||||
|
compute out_mag all spin
|
||||||
|
variable magx equal c_out_mag[1]
|
||||||
|
variable magy equal c_out_mag[2]
|
||||||
|
variable magz equal c_out_mag[3]
|
||||||
|
variable magnorm equal c_out_mag[4]
|
||||||
|
variable emag equal c_out_mag[5]
|
||||||
|
|
||||||
|
thermo 100
|
||||||
|
thermo_style custom step time v_magx v_magz v_magnorm etotal
|
||||||
|
thermo_modify format float %20.15g
|
||||||
|
|
||||||
|
compute outsp all property/atom spx spy spz sp fmx fmy fmz
|
||||||
|
variable u universe 1 2 3 4
|
||||||
|
dump 1 all custom 1 dump.$u type x y z c_outsp[1] c_outsp[2] c_outsp[3]
|
||||||
|
|
||||||
|
min_style spin
|
||||||
|
min_modify alpha_damp 1.0 discrete_factor 10.0
|
||||||
|
neb/spin 1.0e-9 1.0e-9 10000 10000 10 final final.skyrmion
|
||||||
818
examples/SPIN/gneb/skyrmion/initial.skyrmion
Normal file
818
examples/SPIN/gneb/skyrmion/initial.skyrmion
Normal file
@ -0,0 +1,818 @@
|
|||||||
|
LAMMPS data file via write_data, version 28 Feb 2019, timestep = 6
|
||||||
|
|
||||||
|
400 atoms
|
||||||
|
1 atom types
|
||||||
|
|
||||||
|
0.0000000000000000e+00 6.0000000000000000e+01 xlo xhi
|
||||||
|
0.0000000000000000e+00 6.0000000000000000e+01 ylo yhi
|
||||||
|
0.0000000000000000e+00 3.0000000000000000e+00 zlo zhi
|
||||||
|
|
||||||
|
Masses
|
||||||
|
|
||||||
|
1 55.845
|
||||||
|
|
||||||
|
Atoms # spin
|
||||||
|
|
||||||
|
1 1 2.5000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -3.9693242391277868e-03 -3.9693242391277929e-03 9.9998424434096433e-01 0 0 0
|
||||||
|
21 1 2.5000000000000000e+00 3.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1.1868011343002482e-02 -4.8145058779812530e-03 9.9991798205648519e-01 0 0 0
|
||||||
|
41 1 2.5000000000000000e+00 6.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -1.9561861499557517e-02 -6.5828744882500201e-03 9.9978697697966845e-01 0 0 0
|
||||||
|
61 1 2.5000000000000000e+00 9.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 -2.6644762521588476e-02 -9.3989438861432541e-03 9.9960077855311480e-01 0 0 0
|
||||||
|
81 1 2.5000000000000000e+00 1.2000000000000000e+01 0.0000000000000000e+00 0.0000000000000000e+00 -3.2364838887478299e-02 -1.3362272507461704e-02 9.9938679542868891e-01 0 0 0
|
||||||
|
101 1 2.5000000000000000e+00 1.5000000000000000e+01 0.0000000000000000e+00 0.0000000000000000e+00 -3.5634992015801843e-02 -1.8429703183501425e-02 9.9919492261750509e-01 0 0 0
|
||||||
|
121 1 2.5000000000000000e+00 1.8000000000000000e+01 0.0000000000000000e+00 0.0000000000000000e+00 -3.5235119566844247e-02 -2.4270277420221115e-02 9.9908430073895971e-01 0 0 0
|
||||||
|
141 1 2.5000000000000000e+00 2.1000000000000000e+01 0.0000000000000000e+00 0.0000000000000000e+00 -3.0237916900163156e-02 -3.0163850736159143e-02 9.9908748890690546e-01 0 0 0
|
||||||
|
161 1 2.5000000000000000e+00 2.4000000000000000e+01 0.0000000000000000e+00 0.0000000000000000e+00 -2.0551704657275890e-02 -3.5058787503171429e-02 9.9917391321755789e-01 0 0 0
|
||||||
|
181 1 2.5000000000000000e+00 2.7000000000000000e+01 0.0000000000000000e+00 0.0000000000000000e+00 -7.2971667669136115e-03 -3.7860607272964066e-02 9.9925638640646097e-01 0 0 0
|
||||||
|
201 1 2.5000000000000000e+00 3.0000000000000000e+01 0.0000000000000000e+00 0.0000000000000000e+00 7.2971667669136028e-03 -3.7860607272964066e-02 9.9925638640646086e-01 0 0 0
|
||||||
|
221 1 2.5000000000000000e+00 3.3000000000000000e+01 0.0000000000000000e+00 0.0000000000000000e+00 2.0551704657275901e-02 -3.5058787503171443e-02 9.9917391321755789e-01 0 0 0
|
||||||
|
241 1 2.5000000000000000e+00 3.6000000000000000e+01 0.0000000000000000e+00 0.0000000000000000e+00 3.0237916900163156e-02 -3.0163850736159153e-02 9.9908748890690535e-01 0 0 0
|
||||||
|
261 1 2.5000000000000000e+00 3.9000000000000000e+01 0.0000000000000000e+00 0.0000000000000000e+00 3.5235119566844234e-02 -2.4270277420221108e-02 9.9908430073895960e-01 0 0 0
|
||||||
|
281 1 2.5000000000000000e+00 4.2000000000000000e+01 0.0000000000000000e+00 0.0000000000000000e+00 3.5634992015801829e-02 -1.8429703183501414e-02 9.9919492261750498e-01 0 0 0
|
||||||
|
301 1 2.5000000000000000e+00 4.5000000000000000e+01 0.0000000000000000e+00 0.0000000000000000e+00 3.2364838887478306e-02 -1.3362272507461704e-02 9.9938679542868891e-01 0 0 0
|
||||||
|
321 1 2.5000000000000000e+00 4.8000000000000000e+01 0.0000000000000000e+00 0.0000000000000000e+00 2.6644762521588494e-02 -9.3989438861432611e-03 9.9960077855311491e-01 0 0 0
|
||||||
|
341 1 2.5000000000000000e+00 5.1000000000000000e+01 0.0000000000000000e+00 0.0000000000000000e+00 1.9561861499557517e-02 -6.5828744882500201e-03 9.9978697697966856e-01 0 0 0
|
||||||
|
361 1 2.5000000000000000e+00 5.4000000000000000e+01 0.0000000000000000e+00 0.0000000000000000e+00 1.1868011343002482e-02 -4.8145058779812547e-03 9.9991798205648508e-01 0 0 0
|
||||||
|
381 1 2.5000000000000000e+00 5.7000000000000000e+01 0.0000000000000000e+00 0.0000000000000000e+00 3.9693242391277929e-03 -3.9693242391277937e-03 9.9998424434096445e-01 0 0 0
|
||||||
|
2 1 2.5000000000000000e+00 0.0000000000000000e+00 3.0000000000000000e+00 0.0000000000000000e+00 -4.8145058779812512e-03 -1.1868011343002475e-02 9.9991798205648519e-01 0 0 0
|
||||||
|
22 1 2.5000000000000000e+00 3.0000000000000000e+00 3.0000000000000000e+00 0.0000000000000000e+00 -1.4489047587394138e-02 -1.4489047587394138e-02 9.9979004545955574e-01 0 0 0
|
||||||
|
42 1 2.5000000000000000e+00 6.0000000000000000e+00 3.0000000000000000e+00 0.0000000000000000e+00 -2.4184841732588187e-02 -2.0009637034407928e-02 9.9950723251816487e-01 0 0 0
|
||||||
|
62 1 2.5000000000000000e+00 9.0000000000000000e+00 3.0000000000000000e+00 0.0000000000000000e+00 -3.3534698701154796e-02 -2.8894018478272422e-02 9.9901979944303421e-01 0 0 0
|
||||||
|
82 1 2.5000000000000000e+00 1.2000000000000000e+01 3.0000000000000000e+00 0.0000000000000000e+00 -4.1631298256624205e-02 -4.1569375222726884e-02 9.9826791095830603e-01 0 0 0
|
||||||
|
102 1 2.5000000000000000e+00 1.5000000000000000e+01 3.0000000000000000e+00 0.0000000000000000e+00 -4.6947676140268457e-02 -5.8031121465001792e-02 9.9721026100143129e-01 0 0 0
|
||||||
|
122 1 2.5000000000000000e+00 1.8000000000000000e+01 3.0000000000000000e+00 0.0000000000000000e+00 -4.7535409319668050e-02 -7.7312985281705895e-02 9.9587302763336383e-01 0 0 0
|
||||||
|
142 1 2.5000000000000000e+00 2.1000000000000000e+01 3.0000000000000000e+00 0.0000000000000000e+00 -4.1653952417990837e-02 -9.7059251840902777e-02 9.9440658177630958e-01 0 0 0
|
||||||
|
162 1 2.5000000000000000e+00 2.4000000000000000e+01 3.0000000000000000e+00 0.0000000000000000e+00 -2.8752729368399305e-02 -1.1365104497068100e-01 9.9310458690459180e-01 0 0 0
|
||||||
|
182 1 2.5000000000000000e+00 2.7000000000000000e+01 3.0000000000000000e+00 0.0000000000000000e+00 -1.0293413501576094e-02 -1.2321728304286263e-01 9.9232633079951105e-01 0 0 0
|
||||||
|
202 1 2.5000000000000000e+00 3.0000000000000000e+01 3.0000000000000000e+00 0.0000000000000000e+00 1.0293413501576086e-02 -1.2321728304286261e-01 9.9232633079951116e-01 0 0 0
|
||||||
|
222 1 2.5000000000000000e+00 3.3000000000000000e+01 3.0000000000000000e+00 0.0000000000000000e+00 2.8752729368399291e-02 -1.1365104497068100e-01 9.9310458690459180e-01 0 0 0
|
||||||
|
242 1 2.5000000000000000e+00 3.6000000000000000e+01 3.0000000000000000e+00 0.0000000000000000e+00 4.1653952417990824e-02 -9.7059251840902777e-02 9.9440658177630958e-01 0 0 0
|
||||||
|
262 1 2.5000000000000000e+00 3.9000000000000000e+01 3.0000000000000000e+00 0.0000000000000000e+00 4.7535409319668057e-02 -7.7312985281705895e-02 9.9587302763336383e-01 0 0 0
|
||||||
|
282 1 2.5000000000000000e+00 4.2000000000000000e+01 3.0000000000000000e+00 0.0000000000000000e+00 4.6947676140268443e-02 -5.8031121465001792e-02 9.9721026100143140e-01 0 0 0
|
||||||
|
302 1 2.5000000000000000e+00 4.5000000000000000e+01 3.0000000000000000e+00 0.0000000000000000e+00 4.1631298256624191e-02 -4.1569375222726877e-02 9.9826791095830592e-01 0 0 0
|
||||||
|
322 1 2.5000000000000000e+00 4.8000000000000000e+01 3.0000000000000000e+00 0.0000000000000000e+00 3.3534698701154809e-02 -2.8894018478272433e-02 9.9901979944303410e-01 0 0 0
|
||||||
|
342 1 2.5000000000000000e+00 5.1000000000000000e+01 3.0000000000000000e+00 0.0000000000000000e+00 2.4184841732588204e-02 -2.0009637034407945e-02 9.9950723251816487e-01 0 0 0
|
||||||
|
362 1 2.5000000000000000e+00 5.4000000000000000e+01 3.0000000000000000e+00 0.0000000000000000e+00 1.4489047587394149e-02 -1.4489047587394138e-02 9.9979004545955585e-01 0 0 0
|
||||||
|
382 1 2.5000000000000000e+00 5.7000000000000000e+01 3.0000000000000000e+00 0.0000000000000000e+00 4.8145058779812547e-03 -1.1868011343002482e-02 9.9991798205648519e-01 0 0 0
|
||||||
|
3 1 2.5000000000000000e+00 0.0000000000000000e+00 6.0000000000000000e+00 0.0000000000000000e+00 -6.5828744882500158e-03 -1.9561861499557527e-02 9.9978697697966856e-01 0 0 0
|
||||||
|
23 1 2.5000000000000000e+00 3.0000000000000000e+00 6.0000000000000000e+00 0.0000000000000000e+00 -2.0009637034407932e-02 -2.4184841732588200e-02 9.9950723251816498e-01 0 0 0
|
||||||
|
43 1 2.5000000000000000e+00 6.0000000000000000e+00 6.0000000000000000e+00 0.0000000000000000e+00 -3.4047077037887570e-02 -3.4047077037887577e-02 9.9884012388887977e-01 0 0 0
|
||||||
|
63 1 2.5000000000000000e+00 9.0000000000000000e+00 6.0000000000000000e+00 0.0000000000000000e+00 -4.8498220596720307e-02 -5.0241530269051260e-02 9.9755887607457838e-01 0 0 0
|
||||||
|
83 1 2.5000000000000000e+00 1.2000000000000000e+01 6.0000000000000000e+00 0.0000000000000000e+00 -6.2196104012276265e-02 -7.3954811425103587e-02 9.9532021506285684e-01 0 0 0
|
||||||
|
103 1 2.5000000000000000e+00 1.5000000000000000e+01 6.0000000000000000e+00 0.0000000000000000e+00 -7.2649992877525826e-02 -1.0567933713226435e-01 9.9174283775491956e-01 0 0 0
|
||||||
|
123 1 2.5000000000000000e+00 1.8000000000000000e+01 6.0000000000000000e+00 0.0000000000000000e+00 -7.6126593015943808e-02 -1.4398087111736477e-01 9.8664798717073865e-01 0 0 0
|
||||||
|
143 1 2.5000000000000000e+00 2.1000000000000000e+01 6.0000000000000000e+00 0.0000000000000000e+00 -6.8709104650143085e-02 -1.8428174194944069e-01 9.8046891767268973e-01 0 0 0
|
||||||
|
163 1 2.5000000000000000e+00 2.4000000000000000e+01 6.0000000000000000e+00 0.0000000000000000e+00 -4.8457456104349643e-02 -2.1884669159068457e-01 9.7455528346405618e-01 0 0 0
|
||||||
|
183 1 2.5000000000000000e+00 2.7000000000000000e+01 6.0000000000000000e+00 0.0000000000000000e+00 -1.7543173966404597e-02 -2.3902270727461428e-01 9.7085548999544657e-01 0 0 0
|
||||||
|
203 1 2.5000000000000000e+00 3.0000000000000000e+01 6.0000000000000000e+00 0.0000000000000000e+00 1.7543173966404587e-02 -2.3902270727461422e-01 9.7085548999544646e-01 0 0 0
|
||||||
|
223 1 2.5000000000000000e+00 3.3000000000000000e+01 6.0000000000000000e+00 0.0000000000000000e+00 4.8457456104349608e-02 -2.1884669159068454e-01 9.7455528346405618e-01 0 0 0
|
||||||
|
243 1 2.5000000000000000e+00 3.6000000000000000e+01 6.0000000000000000e+00 0.0000000000000000e+00 6.8709104650143044e-02 -1.8428174194944069e-01 9.8046891767268962e-01 0 0 0
|
||||||
|
263 1 2.5000000000000000e+00 3.9000000000000000e+01 6.0000000000000000e+00 0.0000000000000000e+00 7.6126593015943766e-02 -1.4398087111736474e-01 9.8664798717073865e-01 0 0 0
|
||||||
|
283 1 2.5000000000000000e+00 4.2000000000000000e+01 6.0000000000000000e+00 0.0000000000000000e+00 7.2649992877525826e-02 -1.0567933713226434e-01 9.9174283775491956e-01 0 0 0
|
||||||
|
303 1 2.5000000000000000e+00 4.5000000000000000e+01 6.0000000000000000e+00 0.0000000000000000e+00 6.2196104012276258e-02 -7.3954811425103573e-02 9.9532021506285673e-01 0 0 0
|
||||||
|
323 1 2.5000000000000000e+00 4.8000000000000000e+01 6.0000000000000000e+00 0.0000000000000000e+00 4.8498220596720307e-02 -5.0241530269051260e-02 9.9755887607457838e-01 0 0 0
|
||||||
|
343 1 2.5000000000000000e+00 5.1000000000000000e+01 6.0000000000000000e+00 0.0000000000000000e+00 3.4047077037887577e-02 -3.4047077037887577e-02 9.9884012388887966e-01 0 0 0
|
||||||
|
363 1 2.5000000000000000e+00 5.4000000000000000e+01 6.0000000000000000e+00 0.0000000000000000e+00 2.0009637034407942e-02 -2.4184841732588211e-02 9.9950723251816498e-01 0 0 0
|
||||||
|
383 1 2.5000000000000000e+00 5.7000000000000000e+01 6.0000000000000000e+00 0.0000000000000000e+00 6.5828744882500201e-03 -1.9561861499557531e-02 9.9978697697966856e-01 0 0 0
|
||||||
|
4 1 2.5000000000000000e+00 0.0000000000000000e+00 9.0000000000000000e+00 0.0000000000000000e+00 -9.3989438861432524e-03 -2.6644762521588497e-02 9.9960077855311480e-01 0 0 0
|
||||||
|
24 1 2.5000000000000000e+00 3.0000000000000000e+00 9.0000000000000000e+00 0.0000000000000000e+00 -2.8894018478272426e-02 -3.3534698701154803e-02 9.9901979944303410e-01 0 0 0
|
||||||
|
44 1 2.5000000000000000e+00 6.0000000000000000e+00 9.0000000000000000e+00 0.0000000000000000e+00 -5.0241530269051232e-02 -4.8498220596720286e-02 9.9755887607457827e-01 0 0 0
|
||||||
|
64 1 2.5000000000000000e+00 9.0000000000000000e+00 9.0000000000000000e+00 0.0000000000000000e+00 -7.3771080474423129e-02 -7.3771080474423115e-02 9.9454293792237669e-01 0 0 0
|
||||||
|
84 1 2.5000000000000000e+00 1.2000000000000000e+01 9.0000000000000000e+00 0.0000000000000000e+00 -9.8127311868331568e-02 -1.1214098437153223e-01 9.8883539089662387e-01 0 0 0
|
||||||
|
104 1 2.5000000000000000e+00 1.5000000000000000e+01 9.0000000000000000e+00 0.0000000000000000e+00 -1.1922421797550638e-01 -1.6561310406555055e-01 9.7895755046370747e-01 0 0 0
|
||||||
|
124 1 2.5000000000000000e+00 1.8000000000000000e+01 9.0000000000000000e+00 0.0000000000000000e+00 -1.2975986317850730e-01 -2.3284022614534144e-01 9.6381938504912923e-01 0 0 0
|
||||||
|
144 1 2.5000000000000000e+00 2.1000000000000000e+01 9.0000000000000000e+00 0.0000000000000000e+00 -1.2090775615411226e-01 -3.0602867088565672e-01 9.4431338394504205e-01 0 0 0
|
||||||
|
164 1 2.5000000000000000e+00 2.4000000000000000e+01 9.0000000000000000e+00 0.0000000000000000e+00 -8.7191355151399766e-02 -3.7026717261459724e-01 9.2482424734154478e-01 0 0 0
|
||||||
|
184 1 2.5000000000000000e+00 2.7000000000000000e+01 9.0000000000000000e+00 0.0000000000000000e+00 -3.1922103301157183e-02 -4.0821375936870385e-01 9.1232806927272614e-01 0 0 0
|
||||||
|
204 1 2.5000000000000000e+00 3.0000000000000000e+01 9.0000000000000000e+00 0.0000000000000000e+00 3.1922103301157155e-02 -4.0821375936870385e-01 9.1232806927272625e-01 0 0 0
|
||||||
|
224 1 2.5000000000000000e+00 3.3000000000000000e+01 9.0000000000000000e+00 0.0000000000000000e+00 8.7191355151399724e-02 -3.7026717261459718e-01 9.2482424734154478e-01 0 0 0
|
||||||
|
244 1 2.5000000000000000e+00 3.6000000000000000e+01 9.0000000000000000e+00 0.0000000000000000e+00 1.2090775615411219e-01 -3.0602867088565661e-01 9.4431338394504194e-01 0 0 0
|
||||||
|
264 1 2.5000000000000000e+00 3.9000000000000000e+01 9.0000000000000000e+00 0.0000000000000000e+00 1.2975986317850724e-01 -2.3284022614534142e-01 9.6381938504912912e-01 0 0 0
|
||||||
|
284 1 2.5000000000000000e+00 4.2000000000000000e+01 9.0000000000000000e+00 0.0000000000000000e+00 1.1922421797550635e-01 -1.6561310406555052e-01 9.7895755046370747e-01 0 0 0
|
||||||
|
304 1 2.5000000000000000e+00 4.5000000000000000e+01 9.0000000000000000e+00 0.0000000000000000e+00 9.8127311868331568e-02 -1.1214098437153228e-01 9.8883539089662398e-01 0 0 0
|
||||||
|
324 1 2.5000000000000000e+00 4.8000000000000000e+01 9.0000000000000000e+00 0.0000000000000000e+00 7.3771080474423129e-02 -7.3771080474423142e-02 9.9454293792237669e-01 0 0 0
|
||||||
|
344 1 2.5000000000000000e+00 5.1000000000000000e+01 9.0000000000000000e+00 0.0000000000000000e+00 5.0241530269051253e-02 -4.8498220596720314e-02 9.9755887607457827e-01 0 0 0
|
||||||
|
364 1 2.5000000000000000e+00 5.4000000000000000e+01 9.0000000000000000e+00 0.0000000000000000e+00 2.8894018478272443e-02 -3.3534698701154816e-02 9.9901979944303410e-01 0 0 0
|
||||||
|
384 1 2.5000000000000000e+00 5.7000000000000000e+01 9.0000000000000000e+00 0.0000000000000000e+00 9.3989438861432611e-03 -2.6644762521588494e-02 9.9960077855311480e-01 0 0 0
|
||||||
|
5 1 2.5000000000000000e+00 0.0000000000000000e+00 1.2000000000000000e+01 0.0000000000000000e+00 -1.3362272507461699e-02 -3.2364838887478299e-02 9.9938679542868880e-01 0 0 0
|
||||||
|
25 1 2.5000000000000000e+00 3.0000000000000000e+00 1.2000000000000000e+01 0.0000000000000000e+00 -4.1569375222726863e-02 -4.1631298256624198e-02 9.9826791095830603e-01 0 0 0
|
||||||
|
45 1 2.5000000000000000e+00 6.0000000000000000e+00 1.2000000000000000e+01 0.0000000000000000e+00 -7.3954811425103559e-02 -6.2196104012276245e-02 9.9532021506285673e-01 0 0 0
|
||||||
|
65 1 2.5000000000000000e+00 9.0000000000000000e+00 1.2000000000000000e+01 0.0000000000000000e+00 -1.1214098437153225e-01 -9.8127311868331554e-02 9.8883539089662398e-01 0 0 0
|
||||||
|
85 1 2.5000000000000000e+00 1.2000000000000000e+01 1.2000000000000000e+01 0.0000000000000000e+00 -1.5508313718777630e-01 -1.5508313718777628e-01 9.7565282817198595e-01 0 0 0
|
||||||
|
105 1 2.5000000000000000e+00 1.5000000000000000e+01 1.2000000000000000e+01 0.0000000000000000e+00 -1.9646003525323200e-01 -2.3830565311068275e-01 9.5111191257590177e-01 0 0 0
|
||||||
|
125 1 2.5000000000000000e+00 1.8000000000000000e+01 1.2000000000000000e+01 0.0000000000000000e+00 -2.2234110900479689e-01 -3.4758786972735528e-01 9.1090455266450188e-01 0 0 0
|
||||||
|
145 1 2.5000000000000000e+00 2.1000000000000000e+01 1.2000000000000000e+01 0.0000000000000000e+00 -2.1357380845070773e-01 -4.7013886220911955e-01 8.5636188529416402e-01 0 0 0
|
||||||
|
165 1 2.5000000000000000e+00 2.4000000000000000e+01 1.2000000000000000e+01 0.0000000000000000e+00 -1.5692234237038313e-01 -5.7886257432716870e-01 8.0018341554190886e-01 0 0 0
|
||||||
|
185 1 2.5000000000000000e+00 2.7000000000000000e+01 1.2000000000000000e+01 0.0000000000000000e+00 -5.7920936211537863e-02 -6.4295931380698856e-01 7.6370706814669809e-01 0 0 0
|
||||||
|
205 1 2.5000000000000000e+00 3.0000000000000000e+01 1.2000000000000000e+01 0.0000000000000000e+00 5.7920936211537793e-02 -6.4295931380698856e-01 7.6370706814669809e-01 0 0 0
|
||||||
|
225 1 2.5000000000000000e+00 3.3000000000000000e+01 1.2000000000000000e+01 0.0000000000000000e+00 1.5692234237038311e-01 -5.7886257432716881e-01 8.0018341554190908e-01 0 0 0
|
||||||
|
245 1 2.5000000000000000e+00 3.6000000000000000e+01 1.2000000000000000e+01 0.0000000000000000e+00 2.1357380845070767e-01 -4.7013886220911949e-01 8.5636188529416413e-01 0 0 0
|
||||||
|
265 1 2.5000000000000000e+00 3.9000000000000000e+01 1.2000000000000000e+01 0.0000000000000000e+00 2.2234110900479689e-01 -3.4758786972735528e-01 9.1090455266450188e-01 0 0 0
|
||||||
|
285 1 2.5000000000000000e+00 4.2000000000000000e+01 1.2000000000000000e+01 0.0000000000000000e+00 1.9646003525323205e-01 -2.3830565311068283e-01 9.5111191257590177e-01 0 0 0
|
||||||
|
305 1 2.5000000000000000e+00 4.5000000000000000e+01 1.2000000000000000e+01 0.0000000000000000e+00 1.5508313718777633e-01 -1.5508313718777636e-01 9.7565282817198595e-01 0 0 0
|
||||||
|
325 1 2.5000000000000000e+00 4.8000000000000000e+01 1.2000000000000000e+01 0.0000000000000000e+00 1.1214098437153229e-01 -9.8127311868331610e-02 9.8883539089662398e-01 0 0 0
|
||||||
|
345 1 2.5000000000000000e+00 5.1000000000000000e+01 1.2000000000000000e+01 0.0000000000000000e+00 7.3954811425103614e-02 -6.2196104012276265e-02 9.9532021506285684e-01 0 0 0
|
||||||
|
365 1 2.5000000000000000e+00 5.4000000000000000e+01 1.2000000000000000e+01 0.0000000000000000e+00 4.1569375222726898e-02 -4.1631298256624198e-02 9.9826791095830603e-01 0 0 0
|
||||||
|
385 1 2.5000000000000000e+00 5.7000000000000000e+01 1.2000000000000000e+01 0.0000000000000000e+00 1.3362272507461706e-02 -3.2364838887478299e-02 9.9938679542868891e-01 0 0 0
|
||||||
|
6 1 2.5000000000000000e+00 0.0000000000000000e+00 1.5000000000000000e+01 0.0000000000000000e+00 -1.8429703183501404e-02 -3.5634992015801836e-02 9.9919492261750509e-01 0 0 0
|
||||||
|
26 1 2.5000000000000000e+00 3.0000000000000000e+00 1.5000000000000000e+01 0.0000000000000000e+00 -5.8031121465001771e-02 -4.6947676140268457e-02 9.9721026100143140e-01 0 0 0
|
||||||
|
46 1 2.5000000000000000e+00 6.0000000000000000e+00 1.5000000000000000e+01 0.0000000000000000e+00 -1.0567933713226434e-01 -7.2649992877525812e-02 9.9174283775491956e-01 0 0 0
|
||||||
|
66 1 2.5000000000000000e+00 9.0000000000000000e+00 1.5000000000000000e+01 0.0000000000000000e+00 -1.6561310406555055e-01 -1.1922421797550634e-01 9.7895755046370747e-01 0 0 0
|
||||||
|
86 1 2.5000000000000000e+00 1.2000000000000000e+01 1.5000000000000000e+01 0.0000000000000000e+00 -2.3830565311068275e-01 -1.9646003525323197e-01 9.5111191257590177e-01 0 0 0
|
||||||
|
106 1 2.5000000000000000e+00 1.5000000000000000e+01 1.5000000000000000e+01 0.0000000000000000e+00 -3.1460569929723275e-01 -3.1460569929723275e-01 8.9557049300398384e-01 0 0 0
|
||||||
|
126 1 2.5000000000000000e+00 1.8000000000000000e+01 1.5000000000000000e+01 0.0000000000000000e+00 -3.6852592591640337e-01 -4.7476254409897906e-01 7.9924287212844281e-01 0 0 0
|
||||||
|
146 1 2.5000000000000000e+00 2.1000000000000000e+01 1.5000000000000000e+01 0.0000000000000000e+00 -3.6081689881382256e-01 -6.5421949001862334e-01 6.6468641058031896e-01 0 0 0
|
||||||
|
166 1 2.5000000000000000e+00 2.4000000000000000e+01 1.5000000000000000e+01 0.0000000000000000e+00 -2.6598547494087149e-01 -8.0744368404029232e-01 5.2657993146712301e-01 0 0 0
|
||||||
|
186 1 2.5000000000000000e+00 2.7000000000000000e+01 1.5000000000000000e+01 0.0000000000000000e+00 -9.7873033584060118e-02 -8.9330169771966939e-01 4.3867179775797049e-01 0 0 0
|
||||||
|
206 1 2.5000000000000000e+00 3.0000000000000000e+01 1.5000000000000000e+01 0.0000000000000000e+00 9.7873033584060007e-02 -8.9330169771966939e-01 4.3867179775797044e-01 0 0 0
|
||||||
|
226 1 2.5000000000000000e+00 3.3000000000000000e+01 1.5000000000000000e+01 0.0000000000000000e+00 2.6598547494087138e-01 -8.0744368404029232e-01 5.2657993146712301e-01 0 0 0
|
||||||
|
246 1 2.5000000000000000e+00 3.6000000000000000e+01 1.5000000000000000e+01 0.0000000000000000e+00 3.6081689881382251e-01 -6.5421949001862334e-01 6.6468641058031896e-01 0 0 0
|
||||||
|
266 1 2.5000000000000000e+00 3.9000000000000000e+01 1.5000000000000000e+01 0.0000000000000000e+00 3.6852592591640337e-01 -4.7476254409897911e-01 7.9924287212844303e-01 0 0 0
|
||||||
|
286 1 2.5000000000000000e+00 4.2000000000000000e+01 1.5000000000000000e+01 0.0000000000000000e+00 3.1460569929723281e-01 -3.1460569929723281e-01 8.9557049300398361e-01 0 0 0
|
||||||
|
306 1 2.5000000000000000e+00 4.5000000000000000e+01 1.5000000000000000e+01 0.0000000000000000e+00 2.3830565311068277e-01 -1.9646003525323205e-01 9.5111191257590177e-01 0 0 0
|
||||||
|
326 1 2.5000000000000000e+00 4.8000000000000000e+01 1.5000000000000000e+01 0.0000000000000000e+00 1.6561310406555055e-01 -1.1922421797550636e-01 9.7895755046370736e-01 0 0 0
|
||||||
|
346 1 2.5000000000000000e+00 5.1000000000000000e+01 1.5000000000000000e+01 0.0000000000000000e+00 1.0567933713226439e-01 -7.2649992877525854e-02 9.9174283775491956e-01 0 0 0
|
||||||
|
366 1 2.5000000000000000e+00 5.4000000000000000e+01 1.5000000000000000e+01 0.0000000000000000e+00 5.8031121465001820e-02 -4.6947676140268485e-02 9.9721026100143140e-01 0 0 0
|
||||||
|
386 1 2.5000000000000000e+00 5.7000000000000000e+01 1.5000000000000000e+01 0.0000000000000000e+00 1.8429703183501425e-02 -3.5634992015801836e-02 9.9919492261750498e-01 0 0 0
|
||||||
|
7 1 2.5000000000000000e+00 0.0000000000000000e+00 1.8000000000000000e+01 0.0000000000000000e+00 -2.4270277420221083e-02 -3.5235119566844234e-02 9.9908430073895960e-01 0 0 0
|
||||||
|
27 1 2.5000000000000000e+00 3.0000000000000000e+00 1.8000000000000000e+01 0.0000000000000000e+00 -7.7312985281705854e-02 -4.7535409319668043e-02 9.9587302763336372e-01 0 0 0
|
||||||
|
47 1 2.5000000000000000e+00 6.0000000000000000e+00 1.8000000000000000e+01 0.0000000000000000e+00 -1.4398087111736474e-01 -7.6126593015943766e-02 9.8664798717073854e-01 0 0 0
|
||||||
|
67 1 2.5000000000000000e+00 9.0000000000000000e+00 1.8000000000000000e+01 0.0000000000000000e+00 -2.3284022614534147e-01 -1.2975986317850727e-01 9.6381938504912923e-01 0 0 0
|
||||||
|
87 1 2.5000000000000000e+00 1.2000000000000000e+01 1.8000000000000000e+01 0.0000000000000000e+00 -3.4758786972735523e-01 -2.2234110900479681e-01 9.1090455266450177e-01 0 0 0
|
||||||
|
107 1 2.5000000000000000e+00 1.5000000000000000e+01 1.8000000000000000e+01 0.0000000000000000e+00 -4.7476254409897900e-01 -3.6852592591640326e-01 7.9924287212844292e-01 0 0 0
|
||||||
|
127 1 2.5000000000000000e+00 1.8000000000000000e+01 1.8000000000000000e+01 0.0000000000000000e+00 -5.6571145299922609e-01 -5.6571145299922598e-01 5.9995091790163058e-01 0 0 0
|
||||||
|
147 1 2.5000000000000000e+00 2.1000000000000000e+01 1.8000000000000000e+01 0.0000000000000000e+00 -5.4725458628470525e-01 -7.6968694425946660e-01 3.2877716713129740e-01 0 0 0
|
||||||
|
167 1 2.5000000000000000e+00 2.4000000000000000e+01 1.8000000000000000e+01 0.0000000000000000e+00 -3.9048923819288139e-01 -9.1777534868081290e-01 7.2156525757244322e-02 0 0 0
|
||||||
|
187 1 2.5000000000000000e+00 2.7000000000000000e+01 1.8000000000000000e+01 0.0000000000000000e+00 -1.3991724696158017e-01 -9.8714633419212083e-01 -7.7235217962726241e-02 0 0 0
|
||||||
|
207 1 2.5000000000000000e+00 3.0000000000000000e+01 1.8000000000000000e+01 0.0000000000000000e+00 1.3991724696158006e-01 -9.8714633419212106e-01 -7.7235217962726241e-02 0 0 0
|
||||||
|
227 1 2.5000000000000000e+00 3.3000000000000000e+01 1.8000000000000000e+01 0.0000000000000000e+00 3.9048923819288128e-01 -9.1777534868081279e-01 7.2156525757244322e-02 0 0 0
|
||||||
|
247 1 2.5000000000000000e+00 3.6000000000000000e+01 1.8000000000000000e+01 0.0000000000000000e+00 5.4725458628470514e-01 -7.6968694425946649e-01 3.2877716713129734e-01 0 0 0
|
||||||
|
267 1 2.5000000000000000e+00 3.9000000000000000e+01 1.8000000000000000e+01 0.0000000000000000e+00 5.6571145299922621e-01 -5.6571145299922609e-01 5.9995091790163035e-01 0 0 0
|
||||||
|
287 1 2.5000000000000000e+00 4.2000000000000000e+01 1.8000000000000000e+01 0.0000000000000000e+00 4.7476254409897917e-01 -3.6852592591640337e-01 7.9924287212844281e-01 0 0 0
|
||||||
|
307 1 2.5000000000000000e+00 4.5000000000000000e+01 1.8000000000000000e+01 0.0000000000000000e+00 3.4758786972735534e-01 -2.2234110900479692e-01 9.1090455266450188e-01 0 0 0
|
||||||
|
327 1 2.5000000000000000e+00 4.8000000000000000e+01 1.8000000000000000e+01 0.0000000000000000e+00 2.3284022614534147e-01 -1.2975986317850732e-01 9.6381938504912912e-01 0 0 0
|
||||||
|
347 1 2.5000000000000000e+00 5.1000000000000000e+01 1.8000000000000000e+01 0.0000000000000000e+00 1.4398087111736477e-01 -7.6126593015943808e-02 9.8664798717073854e-01 0 0 0
|
||||||
|
367 1 2.5000000000000000e+00 5.4000000000000000e+01 1.8000000000000000e+01 0.0000000000000000e+00 7.7312985281705909e-02 -4.7535409319668064e-02 9.9587302763336372e-01 0 0 0
|
||||||
|
387 1 2.5000000000000000e+00 5.7000000000000000e+01 1.8000000000000000e+01 0.0000000000000000e+00 2.4270277420221129e-02 -3.5235119566844247e-02 9.9908430073895971e-01 0 0 0
|
||||||
|
8 1 2.5000000000000000e+00 0.0000000000000000e+00 2.1000000000000000e+01 0.0000000000000000e+00 -3.0163850736159105e-02 -3.0237916900163149e-02 9.9908748890690535e-01 0 0 0
|
||||||
|
28 1 2.5000000000000000e+00 3.0000000000000000e+00 2.1000000000000000e+01 0.0000000000000000e+00 -9.7059251840902722e-02 -4.1653952417990810e-02 9.9440658177630958e-01 0 0 0
|
||||||
|
48 1 2.5000000000000000e+00 6.0000000000000000e+00 2.1000000000000000e+01 0.0000000000000000e+00 -1.8428174194944064e-01 -6.8709104650143071e-02 9.8046891767268973e-01 0 0 0
|
||||||
|
68 1 2.5000000000000000e+00 9.0000000000000000e+00 2.1000000000000000e+01 0.0000000000000000e+00 -3.0602867088565666e-01 -1.2090775615411221e-01 9.4431338394504205e-01 0 0 0
|
||||||
|
88 1 2.5000000000000000e+00 1.2000000000000000e+01 2.1000000000000000e+01 0.0000000000000000e+00 -4.7013886220911943e-01 -2.1357380845070767e-01 8.5636188529416413e-01 0 0 0
|
||||||
|
108 1 2.5000000000000000e+00 1.5000000000000000e+01 2.1000000000000000e+01 0.0000000000000000e+00 -6.5421949001862312e-01 -3.6081689881382245e-01 6.6468641058031908e-01 0 0 0
|
||||||
|
128 1 2.5000000000000000e+00 1.8000000000000000e+01 2.1000000000000000e+01 0.0000000000000000e+00 -7.6968694425946649e-01 -5.4725458628470514e-01 3.2877716713129745e-01 0 0 0
|
||||||
|
148 1 2.5000000000000000e+00 2.1000000000000000e+01 2.1000000000000000e+01 0.0000000000000000e+00 -7.0472416296125850e-01 -7.0472416296125850e-01 -8.2022608329090224e-02 0 0 0
|
||||||
|
168 1 2.5000000000000000e+00 2.4000000000000000e+01 2.1000000000000000e+01 0.0000000000000000e+00 -4.6907708232882805e-01 -7.8303583820847300e-01 -4.0843795968914098e-01 0 0 0
|
||||||
|
188 1 2.5000000000000000e+00 2.7000000000000000e+01 2.1000000000000000e+01 0.0000000000000000e+00 -1.6077801357100108e-01 -8.0506391360620255e-01 -5.7098382232881861e-01 0 0 0
|
||||||
|
208 1 2.5000000000000000e+00 3.0000000000000000e+01 2.1000000000000000e+01 0.0000000000000000e+00 1.6077801357100094e-01 -8.0506391360620255e-01 -5.7098382232881872e-01 0 0 0
|
||||||
|
228 1 2.5000000000000000e+00 3.3000000000000000e+01 2.1000000000000000e+01 0.0000000000000000e+00 4.6907708232882789e-01 -7.8303583820847278e-01 -4.0843795968914093e-01 0 0 0
|
||||||
|
248 1 2.5000000000000000e+00 3.6000000000000000e+01 2.1000000000000000e+01 0.0000000000000000e+00 7.0472416296125839e-01 -7.0472416296125850e-01 -8.2022608329090321e-02 0 0 0
|
||||||
|
268 1 2.5000000000000000e+00 3.9000000000000000e+01 2.1000000000000000e+01 0.0000000000000000e+00 7.6968694425946660e-01 -5.4725458628470514e-01 3.2877716713129729e-01 0 0 0
|
||||||
|
288 1 2.5000000000000000e+00 4.2000000000000000e+01 2.1000000000000000e+01 0.0000000000000000e+00 6.5421949001862334e-01 -3.6081689881382256e-01 6.6468641058031885e-01 0 0 0
|
||||||
|
308 1 2.5000000000000000e+00 4.5000000000000000e+01 2.1000000000000000e+01 0.0000000000000000e+00 4.7013886220911955e-01 -2.1357380845070770e-01 8.5636188529416402e-01 0 0 0
|
||||||
|
328 1 2.5000000000000000e+00 4.8000000000000000e+01 2.1000000000000000e+01 0.0000000000000000e+00 3.0602867088565666e-01 -1.2090775615411227e-01 9.4431338394504194e-01 0 0 0
|
||||||
|
348 1 2.5000000000000000e+00 5.1000000000000000e+01 2.1000000000000000e+01 0.0000000000000000e+00 1.8428174194944072e-01 -6.8709104650143099e-02 9.8046891767268962e-01 0 0 0
|
||||||
|
368 1 2.5000000000000000e+00 5.4000000000000000e+01 2.1000000000000000e+01 0.0000000000000000e+00 9.7059251840902791e-02 -4.1653952417990824e-02 9.9440658177630958e-01 0 0 0
|
||||||
|
388 1 2.5000000000000000e+00 5.7000000000000000e+01 2.1000000000000000e+01 0.0000000000000000e+00 3.0163850736159153e-02 -3.0237916900163146e-02 9.9908748890690535e-01 0 0 0
|
||||||
|
9 1 2.5000000000000000e+00 0.0000000000000000e+00 2.4000000000000000e+01 0.0000000000000000e+00 -3.5058787503171387e-02 -2.0551704657275887e-02 9.9917391321755789e-01 0 0 0
|
||||||
|
29 1 2.5000000000000000e+00 3.0000000000000000e+00 2.4000000000000000e+01 0.0000000000000000e+00 -1.1365104497068090e-01 -2.8752729368399281e-02 9.9310458690459180e-01 0 0 0
|
||||||
|
49 1 2.5000000000000000e+00 6.0000000000000000e+00 2.4000000000000000e+01 0.0000000000000000e+00 -2.1884669159068454e-01 -4.8457456104349608e-02 9.7455528346405629e-01 0 0 0
|
||||||
|
69 1 2.5000000000000000e+00 9.0000000000000000e+00 2.4000000000000000e+01 0.0000000000000000e+00 -3.7026717261459713e-01 -8.7191355151399724e-02 9.2482424734154478e-01 0 0 0
|
||||||
|
89 1 2.5000000000000000e+00 1.2000000000000000e+01 2.4000000000000000e+01 0.0000000000000000e+00 -5.7886257432716870e-01 -1.5692234237038305e-01 8.0018341554190908e-01 0 0 0
|
||||||
|
109 1 2.5000000000000000e+00 1.5000000000000000e+01 2.4000000000000000e+01 0.0000000000000000e+00 -8.0744368404029221e-01 -2.6598547494087144e-01 5.2657993146712301e-01 0 0 0
|
||||||
|
129 1 2.5000000000000000e+00 1.8000000000000000e+01 2.4000000000000000e+01 0.0000000000000000e+00 -9.1777534868081279e-01 -3.9048923819288128e-01 7.2156525757244433e-02 0 0 0
|
||||||
|
149 1 2.5000000000000000e+00 2.1000000000000000e+01 2.4000000000000000e+01 0.0000000000000000e+00 -7.8303583820847289e-01 -4.6907708232882789e-01 -4.0843795968914071e-01 0 0 0
|
||||||
|
169 1 2.5000000000000000e+00 2.4000000000000000e+01 2.4000000000000000e+01 0.0000000000000000e+00 -4.8741359543182999e-01 -4.8741359543182988e-01 -7.2446944309365668e-01 0 0 0
|
||||||
|
189 1 2.5000000000000000e+00 2.7000000000000000e+01 2.4000000000000000e+01 0.0000000000000000e+00 -1.6115060626850930e-01 -4.8338466373268979e-01 -8.6044741208706443e-01 0 0 0
|
||||||
|
209 1 2.5000000000000000e+00 3.0000000000000000e+01 2.4000000000000000e+01 0.0000000000000000e+00 1.6115060626850913e-01 -4.8338466373268968e-01 -8.6044741208706432e-01 0 0 0
|
||||||
|
229 1 2.5000000000000000e+00 3.3000000000000000e+01 2.4000000000000000e+01 0.0000000000000000e+00 4.8741359543182988e-01 -4.8741359543182988e-01 -7.2446944309365668e-01 0 0 0
|
||||||
|
249 1 2.5000000000000000e+00 3.6000000000000000e+01 2.4000000000000000e+01 0.0000000000000000e+00 7.8303583820847289e-01 -4.6907708232882789e-01 -4.0843795968914098e-01 0 0 0
|
||||||
|
269 1 2.5000000000000000e+00 3.9000000000000000e+01 2.4000000000000000e+01 0.0000000000000000e+00 9.1777534868081290e-01 -3.9048923819288139e-01 7.2156525757244280e-02 0 0 0
|
||||||
|
289 1 2.5000000000000000e+00 4.2000000000000000e+01 2.4000000000000000e+01 0.0000000000000000e+00 8.0744368404029232e-01 -2.6598547494087149e-01 5.2657993146712290e-01 0 0 0
|
||||||
|
309 1 2.5000000000000000e+00 4.5000000000000000e+01 2.4000000000000000e+01 0.0000000000000000e+00 5.7886257432716870e-01 -1.5692234237038313e-01 8.0018341554190908e-01 0 0 0
|
||||||
|
329 1 2.5000000000000000e+00 4.8000000000000000e+01 2.4000000000000000e+01 0.0000000000000000e+00 3.7026717261459713e-01 -8.7191355151399724e-02 9.2482424734154478e-01 0 0 0
|
||||||
|
349 1 2.5000000000000000e+00 5.1000000000000000e+01 2.4000000000000000e+01 0.0000000000000000e+00 2.1884669159068457e-01 -4.8457456104349622e-02 9.7455528346405618e-01 0 0 0
|
||||||
|
369 1 2.5000000000000000e+00 5.4000000000000000e+01 2.4000000000000000e+01 0.0000000000000000e+00 1.1365104497068097e-01 -2.8752729368399291e-02 9.9310458690459180e-01 0 0 0
|
||||||
|
389 1 2.5000000000000000e+00 5.7000000000000000e+01 2.4000000000000000e+01 0.0000000000000000e+00 3.5058787503171436e-02 -2.0551704657275904e-02 9.9917391321755789e-01 0 0 0
|
||||||
|
10 1 2.5000000000000000e+00 0.0000000000000000e+00 2.7000000000000000e+01 0.0000000000000000e+00 -3.7860607272964017e-02 -7.2971667669136089e-03 9.9925638640646097e-01 0 0 0
|
||||||
|
30 1 2.5000000000000000e+00 3.0000000000000000e+00 2.7000000000000000e+01 0.0000000000000000e+00 -1.2321728304286257e-01 -1.0293413501576077e-02 9.9232633079951116e-01 0 0 0
|
||||||
|
50 1 2.5000000000000000e+00 6.0000000000000000e+00 2.7000000000000000e+01 0.0000000000000000e+00 -2.3902270727461422e-01 -1.7543173966404584e-02 9.7085548999544669e-01 0 0 0
|
||||||
|
70 1 2.5000000000000000e+00 9.0000000000000000e+00 2.7000000000000000e+01 0.0000000000000000e+00 -4.0821375936870385e-01 -3.1922103301157141e-02 9.1232806927272625e-01 0 0 0
|
||||||
|
90 1 2.5000000000000000e+00 1.2000000000000000e+01 2.7000000000000000e+01 0.0000000000000000e+00 -6.4295931380698856e-01 -5.7920936211537787e-02 7.6370706814669798e-01 0 0 0
|
||||||
|
110 1 2.5000000000000000e+00 1.5000000000000000e+01 2.7000000000000000e+01 0.0000000000000000e+00 -8.9330169771966939e-01 -9.7873033584060035e-02 4.3867179775797044e-01 0 0 0
|
||||||
|
130 1 2.5000000000000000e+00 1.8000000000000000e+01 2.7000000000000000e+01 0.0000000000000000e+00 -9.8714633419212094e-01 -1.3991724696158003e-01 -7.7235217962726088e-02 0 0 0
|
||||||
|
150 1 2.5000000000000000e+00 2.1000000000000000e+01 2.7000000000000000e+01 0.0000000000000000e+00 -8.0506391360620255e-01 -1.6077801357100097e-01 -5.7098382232881850e-01 0 0 0
|
||||||
|
170 1 2.5000000000000000e+00 2.4000000000000000e+01 2.7000000000000000e+01 0.0000000000000000e+00 -4.8338466373268996e-01 -1.6115060626850919e-01 -8.6044741208706443e-01 0 0 0
|
||||||
|
190 1 2.5000000000000000e+00 2.7000000000000000e+01 2.7000000000000000e+01 0.0000000000000000e+00 -1.5704482464087621e-01 -1.5704482464087605e-01 -9.7502504896388853e-01 0 0 0
|
||||||
|
210 1 2.5000000000000000e+00 3.0000000000000000e+01 2.7000000000000000e+01 0.0000000000000000e+00 1.5704482464087599e-01 -1.5704482464087605e-01 -9.7502504896388842e-01 0 0 0
|
||||||
|
230 1 2.5000000000000000e+00 3.3000000000000000e+01 2.7000000000000000e+01 0.0000000000000000e+00 4.8338466373268973e-01 -1.6115060626850916e-01 -8.6044741208706443e-01 0 0 0
|
||||||
|
250 1 2.5000000000000000e+00 3.6000000000000000e+01 2.7000000000000000e+01 0.0000000000000000e+00 8.0506391360620255e-01 -1.6077801357100097e-01 -5.7098382232881861e-01 0 0 0
|
||||||
|
270 1 2.5000000000000000e+00 3.9000000000000000e+01 2.7000000000000000e+01 0.0000000000000000e+00 9.8714633419212106e-01 -1.3991724696158012e-01 -7.7235217962726269e-02 0 0 0
|
||||||
|
290 1 2.5000000000000000e+00 4.2000000000000000e+01 2.7000000000000000e+01 0.0000000000000000e+00 8.9330169771966950e-01 -9.7873033584060062e-02 4.3867179775797038e-01 0 0 0
|
||||||
|
310 1 2.5000000000000000e+00 4.5000000000000000e+01 2.7000000000000000e+01 0.0000000000000000e+00 6.4295931380698856e-01 -5.7920936211537821e-02 7.6370706814669798e-01 0 0 0
|
||||||
|
330 1 2.5000000000000000e+00 4.8000000000000000e+01 2.7000000000000000e+01 0.0000000000000000e+00 4.0821375936870391e-01 -3.1922103301157183e-02 9.1232806927272614e-01 0 0 0
|
||||||
|
350 1 2.5000000000000000e+00 5.1000000000000000e+01 2.7000000000000000e+01 0.0000000000000000e+00 2.3902270727461428e-01 -1.7543173966404597e-02 9.7085548999544657e-01 0 0 0
|
||||||
|
370 1 2.5000000000000000e+00 5.4000000000000000e+01 2.7000000000000000e+01 0.0000000000000000e+00 1.2321728304286259e-01 -1.0293413501576086e-02 9.9232633079951105e-01 0 0 0
|
||||||
|
390 1 2.5000000000000000e+00 5.7000000000000000e+01 2.7000000000000000e+01 0.0000000000000000e+00 3.7860607272964045e-02 -7.2971667669136028e-03 9.9925638640646086e-01 0 0 0
|
||||||
|
11 1 2.5000000000000000e+00 0.0000000000000000e+00 3.0000000000000000e+01 0.0000000000000000e+00 -3.7860607272964017e-02 7.2971667669136028e-03 9.9925638640646086e-01 0 0 0
|
||||||
|
31 1 2.5000000000000000e+00 3.0000000000000000e+00 3.0000000000000000e+01 0.0000000000000000e+00 -1.2321728304286254e-01 1.0293413501576089e-02 9.9232633079951105e-01 0 0 0
|
||||||
|
51 1 2.5000000000000000e+00 6.0000000000000000e+00 3.0000000000000000e+01 0.0000000000000000e+00 -2.3902270727461422e-01 1.7543173966404594e-02 9.7085548999544657e-01 0 0 0
|
||||||
|
71 1 2.5000000000000000e+00 9.0000000000000000e+00 3.0000000000000000e+01 0.0000000000000000e+00 -4.0821375936870374e-01 3.1922103301157183e-02 9.1232806927272625e-01 0 0 0
|
||||||
|
91 1 2.5000000000000000e+00 1.2000000000000000e+01 3.0000000000000000e+01 0.0000000000000000e+00 -6.4295931380698856e-01 5.7920936211537842e-02 7.6370706814669798e-01 0 0 0
|
||||||
|
111 1 2.5000000000000000e+00 1.5000000000000000e+01 3.0000000000000000e+01 0.0000000000000000e+00 -8.9330169771966950e-01 9.7873033584060118e-02 4.3867179775797055e-01 0 0 0
|
||||||
|
131 1 2.5000000000000000e+00 1.8000000000000000e+01 3.0000000000000000e+01 0.0000000000000000e+00 -9.8714633419212083e-01 1.3991724696158012e-01 -7.7235217962726102e-02 0 0 0
|
||||||
|
151 1 2.5000000000000000e+00 2.1000000000000000e+01 3.0000000000000000e+01 0.0000000000000000e+00 -8.0506391360620255e-01 1.6077801357100108e-01 -5.7098382232881850e-01 0 0 0
|
||||||
|
171 1 2.5000000000000000e+00 2.4000000000000000e+01 3.0000000000000000e+01 0.0000000000000000e+00 -4.8338466373268996e-01 1.6115060626850930e-01 -8.6044741208706443e-01 0 0 0
|
||||||
|
191 1 2.5000000000000000e+00 2.7000000000000000e+01 3.0000000000000000e+01 0.0000000000000000e+00 -1.5704482464087621e-01 1.5704482464087616e-01 -9.7502504896388853e-01 0 0 0
|
||||||
|
211 1 2.5000000000000000e+00 3.0000000000000000e+01 3.0000000000000000e+01 0.0000000000000000e+00 1.5704482464087602e-01 1.5704482464087616e-01 -9.7502504896388842e-01 0 0 0
|
||||||
|
231 1 2.5000000000000000e+00 3.3000000000000000e+01 3.0000000000000000e+01 0.0000000000000000e+00 4.8338466373268985e-01 1.6115060626850930e-01 -8.6044741208706443e-01 0 0 0
|
||||||
|
251 1 2.5000000000000000e+00 3.6000000000000000e+01 3.0000000000000000e+01 0.0000000000000000e+00 8.0506391360620266e-01 1.6077801357100105e-01 -5.7098382232881861e-01 0 0 0
|
||||||
|
271 1 2.5000000000000000e+00 3.9000000000000000e+01 3.0000000000000000e+01 0.0000000000000000e+00 9.8714633419212094e-01 1.3991724696158014e-01 -7.7235217962726227e-02 0 0 0
|
||||||
|
291 1 2.5000000000000000e+00 4.2000000000000000e+01 3.0000000000000000e+01 0.0000000000000000e+00 8.9330169771966950e-01 9.7873033584060118e-02 4.3867179775797049e-01 0 0 0
|
||||||
|
311 1 2.5000000000000000e+00 4.5000000000000000e+01 3.0000000000000000e+01 0.0000000000000000e+00 6.4295931380698867e-01 5.7920936211537849e-02 7.6370706814669809e-01 0 0 0
|
||||||
|
331 1 2.5000000000000000e+00 4.8000000000000000e+01 3.0000000000000000e+01 0.0000000000000000e+00 4.0821375936870391e-01 3.1922103301157183e-02 9.1232806927272614e-01 0 0 0
|
||||||
|
351 1 2.5000000000000000e+00 5.1000000000000000e+01 3.0000000000000000e+01 0.0000000000000000e+00 2.3902270727461428e-01 1.7543173966404590e-02 9.7085548999544657e-01 0 0 0
|
||||||
|
371 1 2.5000000000000000e+00 5.4000000000000000e+01 3.0000000000000000e+01 0.0000000000000000e+00 1.2321728304286261e-01 1.0293413501576086e-02 9.9232633079951116e-01 0 0 0
|
||||||
|
391 1 2.5000000000000000e+00 5.7000000000000000e+01 3.0000000000000000e+01 0.0000000000000000e+00 3.7860607272964052e-02 7.2971667669136046e-03 9.9925638640646097e-01 0 0 0
|
||||||
|
12 1 2.5000000000000000e+00 0.0000000000000000e+00 3.3000000000000000e+01 0.0000000000000000e+00 -3.5058787503171387e-02 2.0551704657275897e-02 9.9917391321755789e-01 0 0 0
|
||||||
|
32 1 2.5000000000000000e+00 3.0000000000000000e+00 3.3000000000000000e+01 0.0000000000000000e+00 -1.1365104497068096e-01 2.8752729368399288e-02 9.9310458690459191e-01 0 0 0
|
||||||
|
52 1 2.5000000000000000e+00 6.0000000000000000e+00 3.3000000000000000e+01 0.0000000000000000e+00 -2.1884669159068451e-01 4.8457456104349615e-02 9.7455528346405618e-01 0 0 0
|
||||||
|
72 1 2.5000000000000000e+00 9.0000000000000000e+00 3.3000000000000000e+01 0.0000000000000000e+00 -3.7026717261459707e-01 8.7191355151399710e-02 9.2482424734154478e-01 0 0 0
|
||||||
|
92 1 2.5000000000000000e+00 1.2000000000000000e+01 3.3000000000000000e+01 0.0000000000000000e+00 -5.7886257432716870e-01 1.5692234237038316e-01 8.0018341554190908e-01 0 0 0
|
||||||
|
112 1 2.5000000000000000e+00 1.5000000000000000e+01 3.3000000000000000e+01 0.0000000000000000e+00 -8.0744368404029210e-01 2.6598547494087149e-01 5.2657993146712301e-01 0 0 0
|
||||||
|
132 1 2.5000000000000000e+00 1.8000000000000000e+01 3.3000000000000000e+01 0.0000000000000000e+00 -9.1777534868081267e-01 3.9048923819288134e-01 7.2156525757244433e-02 0 0 0
|
||||||
|
152 1 2.5000000000000000e+00 2.1000000000000000e+01 3.3000000000000000e+01 0.0000000000000000e+00 -7.8303583820847311e-01 4.6907708232882811e-01 -4.0843795968914082e-01 0 0 0
|
||||||
|
172 1 2.5000000000000000e+00 2.4000000000000000e+01 3.3000000000000000e+01 0.0000000000000000e+00 -4.8741359543183005e-01 4.8741359543182999e-01 -7.2446944309365657e-01 0 0 0
|
||||||
|
192 1 2.5000000000000000e+00 2.7000000000000000e+01 3.3000000000000000e+01 0.0000000000000000e+00 -1.6115060626850930e-01 4.8338466373268979e-01 -8.6044741208706432e-01 0 0 0
|
||||||
|
212 1 2.5000000000000000e+00 3.0000000000000000e+01 3.3000000000000000e+01 0.0000000000000000e+00 1.6115060626850916e-01 4.8338466373268979e-01 -8.6044741208706443e-01 0 0 0
|
||||||
|
232 1 2.5000000000000000e+00 3.3000000000000000e+01 3.3000000000000000e+01 0.0000000000000000e+00 4.8741359543182988e-01 4.8741359543182999e-01 -7.2446944309365657e-01 0 0 0
|
||||||
|
252 1 2.5000000000000000e+00 3.6000000000000000e+01 3.3000000000000000e+01 0.0000000000000000e+00 7.8303583820847278e-01 4.6907708232882794e-01 -4.0843795968914076e-01 0 0 0
|
||||||
|
272 1 2.5000000000000000e+00 3.9000000000000000e+01 3.3000000000000000e+01 0.0000000000000000e+00 9.1777534868081279e-01 3.9048923819288139e-01 7.2156525757244377e-02 0 0 0
|
||||||
|
292 1 2.5000000000000000e+00 4.2000000000000000e+01 3.3000000000000000e+01 0.0000000000000000e+00 8.0744368404029221e-01 2.6598547494087149e-01 5.2657993146712301e-01 0 0 0
|
||||||
|
312 1 2.5000000000000000e+00 4.5000000000000000e+01 3.3000000000000000e+01 0.0000000000000000e+00 5.7886257432716870e-01 1.5692234237038316e-01 8.0018341554190908e-01 0 0 0
|
||||||
|
332 1 2.5000000000000000e+00 4.8000000000000000e+01 3.3000000000000000e+01 0.0000000000000000e+00 3.7026717261459713e-01 8.7191355151399738e-02 9.2482424734154467e-01 0 0 0
|
||||||
|
352 1 2.5000000000000000e+00 5.1000000000000000e+01 3.3000000000000000e+01 0.0000000000000000e+00 2.1884669159068457e-01 4.8457456104349622e-02 9.7455528346405618e-01 0 0 0
|
||||||
|
372 1 2.5000000000000000e+00 5.4000000000000000e+01 3.3000000000000000e+01 0.0000000000000000e+00 1.1365104497068099e-01 2.8752729368399295e-02 9.9310458690459180e-01 0 0 0
|
||||||
|
392 1 2.5000000000000000e+00 5.7000000000000000e+01 3.3000000000000000e+01 0.0000000000000000e+00 3.5058787503171422e-02 2.0551704657275897e-02 9.9917391321755777e-01 0 0 0
|
||||||
|
13 1 2.5000000000000000e+00 0.0000000000000000e+00 3.6000000000000000e+01 0.0000000000000000e+00 -3.0163850736159126e-02 3.0237916900163156e-02 9.9908748890690546e-01 0 0 0
|
||||||
|
33 1 2.5000000000000000e+00 3.0000000000000000e+00 3.6000000000000000e+01 0.0000000000000000e+00 -9.7059251840902735e-02 4.1653952417990817e-02 9.9440658177630958e-01 0 0 0
|
||||||
|
53 1 2.5000000000000000e+00 6.0000000000000000e+00 3.6000000000000000e+01 0.0000000000000000e+00 -1.8428174194944066e-01 6.8709104650143071e-02 9.8046891767268973e-01 0 0 0
|
||||||
|
73 1 2.5000000000000000e+00 9.0000000000000000e+00 3.6000000000000000e+01 0.0000000000000000e+00 -3.0602867088565661e-01 1.2090775615411221e-01 9.4431338394504194e-01 0 0 0
|
||||||
|
93 1 2.5000000000000000e+00 1.2000000000000000e+01 3.6000000000000000e+01 0.0000000000000000e+00 -4.7013886220911938e-01 2.1357380845070770e-01 8.5636188529416413e-01 0 0 0
|
||||||
|
113 1 2.5000000000000000e+00 1.5000000000000000e+01 3.6000000000000000e+01 0.0000000000000000e+00 -6.5421949001862323e-01 3.6081689881382251e-01 6.6468641058031896e-01 0 0 0
|
||||||
|
133 1 2.5000000000000000e+00 1.8000000000000000e+01 3.6000000000000000e+01 0.0000000000000000e+00 -7.6968694425946660e-01 5.4725458628470525e-01 3.2877716713129751e-01 0 0 0
|
||||||
|
153 1 2.5000000000000000e+00 2.1000000000000000e+01 3.6000000000000000e+01 0.0000000000000000e+00 -7.0472416296125850e-01 7.0472416296125850e-01 -8.2022608329090127e-02 0 0 0
|
||||||
|
173 1 2.5000000000000000e+00 2.4000000000000000e+01 3.6000000000000000e+01 0.0000000000000000e+00 -4.6907708232882805e-01 7.8303583820847300e-01 -4.0843795968914076e-01 0 0 0
|
||||||
|
193 1 2.5000000000000000e+00 2.7000000000000000e+01 3.6000000000000000e+01 0.0000000000000000e+00 -1.6077801357100108e-01 8.0506391360620244e-01 -5.7098382232881861e-01 0 0 0
|
||||||
|
213 1 2.5000000000000000e+00 3.0000000000000000e+01 3.6000000000000000e+01 0.0000000000000000e+00 1.6077801357100091e-01 8.0506391360620277e-01 -5.7098382232881861e-01 0 0 0
|
||||||
|
233 1 2.5000000000000000e+00 3.3000000000000000e+01 3.6000000000000000e+01 0.0000000000000000e+00 4.6907708232882794e-01 7.8303583820847300e-01 -4.0843795968914076e-01 0 0 0
|
||||||
|
253 1 2.5000000000000000e+00 3.6000000000000000e+01 3.6000000000000000e+01 0.0000000000000000e+00 7.0472416296125850e-01 7.0472416296125850e-01 -8.2022608329090210e-02 0 0 0
|
||||||
|
273 1 2.5000000000000000e+00 3.9000000000000000e+01 3.6000000000000000e+01 0.0000000000000000e+00 7.6968694425946649e-01 5.4725458628470525e-01 3.2877716713129740e-01 0 0 0
|
||||||
|
293 1 2.5000000000000000e+00 4.2000000000000000e+01 3.6000000000000000e+01 0.0000000000000000e+00 6.5421949001862323e-01 3.6081689881382251e-01 6.6468641058031896e-01 0 0 0
|
||||||
|
313 1 2.5000000000000000e+00 4.5000000000000000e+01 3.6000000000000000e+01 0.0000000000000000e+00 4.7013886220911949e-01 2.1357380845070775e-01 8.5636188529416413e-01 0 0 0
|
||||||
|
333 1 2.5000000000000000e+00 4.8000000000000000e+01 3.6000000000000000e+01 0.0000000000000000e+00 3.0602867088565661e-01 1.2090775615411223e-01 9.4431338394504194e-01 0 0 0
|
||||||
|
353 1 2.5000000000000000e+00 5.1000000000000000e+01 3.6000000000000000e+01 0.0000000000000000e+00 1.8428174194944069e-01 6.8709104650143099e-02 9.8046891767268973e-01 0 0 0
|
||||||
|
373 1 2.5000000000000000e+00 5.4000000000000000e+01 3.6000000000000000e+01 0.0000000000000000e+00 9.7059251840902763e-02 4.1653952417990830e-02 9.9440658177630947e-01 0 0 0
|
||||||
|
393 1 2.5000000000000000e+00 5.7000000000000000e+01 3.6000000000000000e+01 0.0000000000000000e+00 3.0163850736159133e-02 3.0237916900163159e-02 9.9908748890690535e-01 0 0 0
|
||||||
|
14 1 2.5000000000000000e+00 0.0000000000000000e+00 3.9000000000000000e+01 0.0000000000000000e+00 -2.4270277420221101e-02 3.5235119566844240e-02 9.9908430073895960e-01 0 0 0
|
||||||
|
34 1 2.5000000000000000e+00 3.0000000000000000e+00 3.9000000000000000e+01 0.0000000000000000e+00 -7.7312985281705854e-02 4.7535409319668036e-02 9.9587302763336372e-01 0 0 0
|
||||||
|
54 1 2.5000000000000000e+00 6.0000000000000000e+00 3.9000000000000000e+01 0.0000000000000000e+00 -1.4398087111736474e-01 7.6126593015943766e-02 9.8664798717073854e-01 0 0 0
|
||||||
|
74 1 2.5000000000000000e+00 9.0000000000000000e+00 3.9000000000000000e+01 0.0000000000000000e+00 -2.3284022614534142e-01 1.2975986317850727e-01 9.6381938504912923e-01 0 0 0
|
||||||
|
94 1 2.5000000000000000e+00 1.2000000000000000e+01 3.9000000000000000e+01 0.0000000000000000e+00 -3.4758786972735517e-01 2.2234110900479689e-01 9.1090455266450199e-01 0 0 0
|
||||||
|
114 1 2.5000000000000000e+00 1.5000000000000000e+01 3.9000000000000000e+01 0.0000000000000000e+00 -4.7476254409897917e-01 3.6852592591640326e-01 7.9924287212844314e-01 0 0 0
|
||||||
|
134 1 2.5000000000000000e+00 1.8000000000000000e+01 3.9000000000000000e+01 0.0000000000000000e+00 -5.6571145299922609e-01 5.6571145299922598e-01 5.9995091790163058e-01 0 0 0
|
||||||
|
154 1 2.5000000000000000e+00 2.1000000000000000e+01 3.9000000000000000e+01 0.0000000000000000e+00 -5.4725458628470514e-01 7.6968694425946649e-01 3.2877716713129751e-01 0 0 0
|
||||||
|
174 1 2.5000000000000000e+00 2.4000000000000000e+01 3.9000000000000000e+01 0.0000000000000000e+00 -3.9048923819288139e-01 9.1777534868081279e-01 7.2156525757244475e-02 0 0 0
|
||||||
|
194 1 2.5000000000000000e+00 2.7000000000000000e+01 3.9000000000000000e+01 0.0000000000000000e+00 -1.3991724696158014e-01 9.8714633419212094e-01 -7.7235217962726074e-02 0 0 0
|
||||||
|
214 1 2.5000000000000000e+00 3.0000000000000000e+01 3.9000000000000000e+01 0.0000000000000000e+00 1.3991724696158006e-01 9.8714633419212106e-01 -7.7235217962726074e-02 0 0 0
|
||||||
|
234 1 2.5000000000000000e+00 3.3000000000000000e+01 3.9000000000000000e+01 0.0000000000000000e+00 3.9048923819288128e-01 9.1777534868081290e-01 7.2156525757244516e-02 0 0 0
|
||||||
|
254 1 2.5000000000000000e+00 3.6000000000000000e+01 3.9000000000000000e+01 0.0000000000000000e+00 5.4725458628470502e-01 7.6968694425946649e-01 3.2877716713129757e-01 0 0 0
|
||||||
|
274 1 2.5000000000000000e+00 3.9000000000000000e+01 3.9000000000000000e+01 0.0000000000000000e+00 5.6571145299922598e-01 5.6571145299922598e-01 5.9995091790163058e-01 0 0 0
|
||||||
|
294 1 2.5000000000000000e+00 4.2000000000000000e+01 3.9000000000000000e+01 0.0000000000000000e+00 4.7476254409897917e-01 3.6852592591640337e-01 7.9924287212844292e-01 0 0 0
|
||||||
|
314 1 2.5000000000000000e+00 4.5000000000000000e+01 3.9000000000000000e+01 0.0000000000000000e+00 3.4758786972735523e-01 2.2234110900479689e-01 9.1090455266450188e-01 0 0 0
|
||||||
|
334 1 2.5000000000000000e+00 4.8000000000000000e+01 3.9000000000000000e+01 0.0000000000000000e+00 2.3284022614534150e-01 1.2975986317850730e-01 9.6381938504912923e-01 0 0 0
|
||||||
|
354 1 2.5000000000000000e+00 5.1000000000000000e+01 3.9000000000000000e+01 0.0000000000000000e+00 1.4398087111736474e-01 7.6126593015943780e-02 9.8664798717073843e-01 0 0 0
|
||||||
|
374 1 2.5000000000000000e+00 5.4000000000000000e+01 3.9000000000000000e+01 0.0000000000000000e+00 7.7312985281705868e-02 4.7535409319668070e-02 9.9587302763336383e-01 0 0 0
|
||||||
|
394 1 2.5000000000000000e+00 5.7000000000000000e+01 3.9000000000000000e+01 0.0000000000000000e+00 2.4270277420221108e-02 3.5235119566844240e-02 9.9908430073895971e-01 0 0 0
|
||||||
|
15 1 2.5000000000000000e+00 0.0000000000000000e+00 4.2000000000000000e+01 0.0000000000000000e+00 -1.8429703183501411e-02 3.5634992015801829e-02 9.9919492261750498e-01 0 0 0
|
||||||
|
35 1 2.5000000000000000e+00 3.0000000000000000e+00 4.2000000000000000e+01 0.0000000000000000e+00 -5.8031121465001799e-02 4.6947676140268450e-02 9.9721026100143129e-01 0 0 0
|
||||||
|
55 1 2.5000000000000000e+00 6.0000000000000000e+00 4.2000000000000000e+01 0.0000000000000000e+00 -1.0567933713226436e-01 7.2649992877525812e-02 9.9174283775491956e-01 0 0 0
|
||||||
|
75 1 2.5000000000000000e+00 9.0000000000000000e+00 4.2000000000000000e+01 0.0000000000000000e+00 -1.6561310406555052e-01 1.1922421797550635e-01 9.7895755046370747e-01 0 0 0
|
||||||
|
95 1 2.5000000000000000e+00 1.2000000000000000e+01 4.2000000000000000e+01 0.0000000000000000e+00 -2.3830565311068272e-01 1.9646003525323200e-01 9.5111191257590177e-01 0 0 0
|
||||||
|
115 1 2.5000000000000000e+00 1.5000000000000000e+01 4.2000000000000000e+01 0.0000000000000000e+00 -3.1460569929723275e-01 3.1460569929723275e-01 8.9557049300398384e-01 0 0 0
|
||||||
|
135 1 2.5000000000000000e+00 1.8000000000000000e+01 4.2000000000000000e+01 0.0000000000000000e+00 -3.6852592591640337e-01 4.7476254409897900e-01 7.9924287212844303e-01 0 0 0
|
||||||
|
155 1 2.5000000000000000e+00 2.1000000000000000e+01 4.2000000000000000e+01 0.0000000000000000e+00 -3.6081689881382245e-01 6.5421949001862312e-01 6.6468641058031908e-01 0 0 0
|
||||||
|
175 1 2.5000000000000000e+00 2.4000000000000000e+01 4.2000000000000000e+01 0.0000000000000000e+00 -2.6598547494087144e-01 8.0744368404029221e-01 5.2657993146712301e-01 0 0 0
|
||||||
|
195 1 2.5000000000000000e+00 2.7000000000000000e+01 4.2000000000000000e+01 0.0000000000000000e+00 -9.7873033584060104e-02 8.9330169771966939e-01 4.3867179775797061e-01 0 0 0
|
||||||
|
215 1 2.5000000000000000e+00 3.0000000000000000e+01 4.2000000000000000e+01 0.0000000000000000e+00 9.7873033584060048e-02 8.9330169771966939e-01 4.3867179775797061e-01 0 0 0
|
||||||
|
235 1 2.5000000000000000e+00 3.3000000000000000e+01 4.2000000000000000e+01 0.0000000000000000e+00 2.6598547494087144e-01 8.0744368404029221e-01 5.2657993146712312e-01 0 0 0
|
||||||
|
255 1 2.5000000000000000e+00 3.6000000000000000e+01 4.2000000000000000e+01 0.0000000000000000e+00 3.6081689881382245e-01 6.5421949001862323e-01 6.6468641058031908e-01 0 0 0
|
||||||
|
275 1 2.5000000000000000e+00 3.9000000000000000e+01 4.2000000000000000e+01 0.0000000000000000e+00 3.6852592591640332e-01 4.7476254409897917e-01 7.9924287212844303e-01 0 0 0
|
||||||
|
295 1 2.5000000000000000e+00 4.2000000000000000e+01 4.2000000000000000e+01 0.0000000000000000e+00 3.1460569929723275e-01 3.1460569929723275e-01 8.9557049300398373e-01 0 0 0
|
||||||
|
315 1 2.5000000000000000e+00 4.5000000000000000e+01 4.2000000000000000e+01 0.0000000000000000e+00 2.3830565311068272e-01 1.9646003525323200e-01 9.5111191257590177e-01 0 0 0
|
||||||
|
335 1 2.5000000000000000e+00 4.8000000000000000e+01 4.2000000000000000e+01 0.0000000000000000e+00 1.6561310406555046e-01 1.1922421797550636e-01 9.7895755046370747e-01 0 0 0
|
||||||
|
355 1 2.5000000000000000e+00 5.1000000000000000e+01 4.2000000000000000e+01 0.0000000000000000e+00 1.0567933713226434e-01 7.2649992877525826e-02 9.9174283775491967e-01 0 0 0
|
||||||
|
375 1 2.5000000000000000e+00 5.4000000000000000e+01 4.2000000000000000e+01 0.0000000000000000e+00 5.8031121465001792e-02 4.6947676140268464e-02 9.9721026100143140e-01 0 0 0
|
||||||
|
395 1 2.5000000000000000e+00 5.7000000000000000e+01 4.2000000000000000e+01 0.0000000000000000e+00 1.8429703183501421e-02 3.5634992015801836e-02 9.9919492261750509e-01 0 0 0
|
||||||
|
16 1 2.5000000000000000e+00 0.0000000000000000e+00 4.5000000000000000e+01 0.0000000000000000e+00 -1.3362272507461697e-02 3.2364838887478299e-02 9.9938679542868891e-01 0 0 0
|
||||||
|
36 1 2.5000000000000000e+00 3.0000000000000000e+00 4.5000000000000000e+01 0.0000000000000000e+00 -4.1569375222726877e-02 4.1631298256624177e-02 9.9826791095830592e-01 0 0 0
|
||||||
|
56 1 2.5000000000000000e+00 6.0000000000000000e+00 4.5000000000000000e+01 0.0000000000000000e+00 -7.3954811425103587e-02 6.2196104012276252e-02 9.9532021506285684e-01 0 0 0
|
||||||
|
76 1 2.5000000000000000e+00 9.0000000000000000e+00 4.5000000000000000e+01 0.0000000000000000e+00 -1.1214098437153222e-01 9.8127311868331527e-02 9.8883539089662387e-01 0 0 0
|
||||||
|
96 1 2.5000000000000000e+00 1.2000000000000000e+01 4.5000000000000000e+01 0.0000000000000000e+00 -1.5508313718777622e-01 1.5508313718777625e-01 9.7565282817198595e-01 0 0 0
|
||||||
|
116 1 2.5000000000000000e+00 1.5000000000000000e+01 4.5000000000000000e+01 0.0000000000000000e+00 -1.9646003525323200e-01 2.3830565311068266e-01 9.5111191257590189e-01 0 0 0
|
||||||
|
136 1 2.5000000000000000e+00 1.8000000000000000e+01 4.5000000000000000e+01 0.0000000000000000e+00 -2.2234110900479692e-01 3.4758786972735517e-01 9.1090455266450188e-01 0 0 0
|
||||||
|
156 1 2.5000000000000000e+00 2.1000000000000000e+01 4.5000000000000000e+01 0.0000000000000000e+00 -2.1357380845070770e-01 4.7013886220911938e-01 8.5636188529416413e-01 0 0 0
|
||||||
|
176 1 2.5000000000000000e+00 2.4000000000000000e+01 4.5000000000000000e+01 0.0000000000000000e+00 -1.5692234237038313e-01 5.7886257432716870e-01 8.0018341554190919e-01 0 0 0
|
||||||
|
196 1 2.5000000000000000e+00 2.7000000000000000e+01 4.5000000000000000e+01 0.0000000000000000e+00 -5.7920936211537842e-02 6.4295931380698867e-01 7.6370706814669809e-01 0 0 0
|
||||||
|
216 1 2.5000000000000000e+00 3.0000000000000000e+01 4.5000000000000000e+01 0.0000000000000000e+00 5.7920936211537780e-02 6.4295931380698856e-01 7.6370706814669798e-01 0 0 0
|
||||||
|
236 1 2.5000000000000000e+00 3.3000000000000000e+01 4.5000000000000000e+01 0.0000000000000000e+00 1.5692234237038313e-01 5.7886257432716870e-01 8.0018341554190919e-01 0 0 0
|
||||||
|
256 1 2.5000000000000000e+00 3.6000000000000000e+01 4.5000000000000000e+01 0.0000000000000000e+00 2.1357380845070764e-01 4.7013886220911938e-01 8.5636188529416402e-01 0 0 0
|
||||||
|
276 1 2.5000000000000000e+00 3.9000000000000000e+01 4.5000000000000000e+01 0.0000000000000000e+00 2.2234110900479681e-01 3.4758786972735523e-01 9.1090455266450177e-01 0 0 0
|
||||||
|
296 1 2.5000000000000000e+00 4.2000000000000000e+01 4.5000000000000000e+01 0.0000000000000000e+00 1.9646003525323197e-01 2.3830565311068272e-01 9.5111191257590177e-01 0 0 0
|
||||||
|
316 1 2.5000000000000000e+00 4.5000000000000000e+01 4.5000000000000000e+01 0.0000000000000000e+00 1.5508313718777625e-01 1.5508313718777628e-01 9.7565282817198595e-01 0 0 0
|
||||||
|
336 1 2.5000000000000000e+00 4.8000000000000000e+01 4.5000000000000000e+01 0.0000000000000000e+00 1.1214098437153222e-01 9.8127311868331568e-02 9.8883539089662398e-01 0 0 0
|
||||||
|
356 1 2.5000000000000000e+00 5.1000000000000000e+01 4.5000000000000000e+01 0.0000000000000000e+00 7.3954811425103573e-02 6.2196104012276258e-02 9.9532021506285684e-01 0 0 0
|
||||||
|
376 1 2.5000000000000000e+00 5.4000000000000000e+01 4.5000000000000000e+01 0.0000000000000000e+00 4.1569375222726877e-02 4.1631298256624191e-02 9.9826791095830603e-01 0 0 0
|
||||||
|
396 1 2.5000000000000000e+00 5.7000000000000000e+01 4.5000000000000000e+01 0.0000000000000000e+00 1.3362272507461703e-02 3.2364838887478306e-02 9.9938679542868891e-01 0 0 0
|
||||||
|
17 1 2.5000000000000000e+00 0.0000000000000000e+00 4.8000000000000000e+01 0.0000000000000000e+00 -9.3989438861432541e-03 2.6644762521588483e-02 9.9960077855311480e-01 0 0 0
|
||||||
|
37 1 2.5000000000000000e+00 3.0000000000000000e+00 4.8000000000000000e+01 0.0000000000000000e+00 -2.8894018478272422e-02 3.3534698701154803e-02 9.9901979944303410e-01 0 0 0
|
||||||
|
57 1 2.5000000000000000e+00 6.0000000000000000e+00 4.8000000000000000e+01 0.0000000000000000e+00 -5.0241530269051239e-02 4.8498220596720300e-02 9.9755887607457838e-01 0 0 0
|
||||||
|
77 1 2.5000000000000000e+00 9.0000000000000000e+00 4.8000000000000000e+01 0.0000000000000000e+00 -7.3771080474423129e-02 7.3771080474423115e-02 9.9454293792237680e-01 0 0 0
|
||||||
|
97 1 2.5000000000000000e+00 1.2000000000000000e+01 4.8000000000000000e+01 0.0000000000000000e+00 -9.8127311868331568e-02 1.1214098437153222e-01 9.8883539089662398e-01 0 0 0
|
||||||
|
117 1 2.5000000000000000e+00 1.5000000000000000e+01 4.8000000000000000e+01 0.0000000000000000e+00 -1.1922421797550634e-01 1.6561310406555049e-01 9.7895755046370736e-01 0 0 0
|
||||||
|
137 1 2.5000000000000000e+00 1.8000000000000000e+01 4.8000000000000000e+01 0.0000000000000000e+00 -1.2975986317850727e-01 2.3284022614534133e-01 9.6381938504912912e-01 0 0 0
|
||||||
|
157 1 2.5000000000000000e+00 2.1000000000000000e+01 4.8000000000000000e+01 0.0000000000000000e+00 -1.2090775615411221e-01 3.0602867088565655e-01 9.4431338394504194e-01 0 0 0
|
||||||
|
177 1 2.5000000000000000e+00 2.4000000000000000e+01 4.8000000000000000e+01 0.0000000000000000e+00 -8.7191355151399738e-02 3.7026717261459713e-01 9.2482424734154467e-01 0 0 0
|
||||||
|
197 1 2.5000000000000000e+00 2.7000000000000000e+01 4.8000000000000000e+01 0.0000000000000000e+00 -3.1922103301157183e-02 4.0821375936870380e-01 9.1232806927272625e-01 0 0 0
|
||||||
|
217 1 2.5000000000000000e+00 3.0000000000000000e+01 4.8000000000000000e+01 0.0000000000000000e+00 3.1922103301157141e-02 4.0821375936870391e-01 9.1232806927272625e-01 0 0 0
|
||||||
|
237 1 2.5000000000000000e+00 3.3000000000000000e+01 4.8000000000000000e+01 0.0000000000000000e+00 8.7191355151399710e-02 3.7026717261459707e-01 9.2482424734154489e-01 0 0 0
|
||||||
|
257 1 2.5000000000000000e+00 3.6000000000000000e+01 4.8000000000000000e+01 0.0000000000000000e+00 1.2090775615411221e-01 3.0602867088565661e-01 9.4431338394504205e-01 0 0 0
|
||||||
|
277 1 2.5000000000000000e+00 3.9000000000000000e+01 4.8000000000000000e+01 0.0000000000000000e+00 1.2975986317850727e-01 2.3284022614534139e-01 9.6381938504912912e-01 0 0 0
|
||||||
|
297 1 2.5000000000000000e+00 4.2000000000000000e+01 4.8000000000000000e+01 0.0000000000000000e+00 1.1922421797550634e-01 1.6561310406555052e-01 9.7895755046370747e-01 0 0 0
|
||||||
|
317 1 2.5000000000000000e+00 4.5000000000000000e+01 4.8000000000000000e+01 0.0000000000000000e+00 9.8127311868331568e-02 1.1214098437153222e-01 9.8883539089662398e-01 0 0 0
|
||||||
|
337 1 2.5000000000000000e+00 4.8000000000000000e+01 4.8000000000000000e+01 0.0000000000000000e+00 7.3771080474423115e-02 7.3771080474423129e-02 9.9454293792237680e-01 0 0 0
|
||||||
|
357 1 2.5000000000000000e+00 5.1000000000000000e+01 4.8000000000000000e+01 0.0000000000000000e+00 5.0241530269051225e-02 4.8498220596720300e-02 9.9755887607457838e-01 0 0 0
|
||||||
|
377 1 2.5000000000000000e+00 5.4000000000000000e+01 4.8000000000000000e+01 0.0000000000000000e+00 2.8894018478272426e-02 3.3534698701154796e-02 9.9901979944303410e-01 0 0 0
|
||||||
|
397 1 2.5000000000000000e+00 5.7000000000000000e+01 4.8000000000000000e+01 0.0000000000000000e+00 9.3989438861432593e-03 2.6644762521588490e-02 9.9960077855311480e-01 0 0 0
|
||||||
|
18 1 2.5000000000000000e+00 0.0000000000000000e+00 5.1000000000000000e+01 0.0000000000000000e+00 -6.5828744882500166e-03 1.9561861499557524e-02 9.9978697697966856e-01 0 0 0
|
||||||
|
38 1 2.5000000000000000e+00 3.0000000000000000e+00 5.1000000000000000e+01 0.0000000000000000e+00 -2.0009637034407939e-02 2.4184841732588204e-02 9.9950723251816498e-01 0 0 0
|
||||||
|
58 1 2.5000000000000000e+00 6.0000000000000000e+00 5.1000000000000000e+01 0.0000000000000000e+00 -3.4047077037887570e-02 3.4047077037887563e-02 9.9884012388887966e-01 0 0 0
|
||||||
|
78 1 2.5000000000000000e+00 9.0000000000000000e+00 5.1000000000000000e+01 0.0000000000000000e+00 -4.8498220596720300e-02 5.0241530269051239e-02 9.9755887607457827e-01 0 0 0
|
||||||
|
98 1 2.5000000000000000e+00 1.2000000000000000e+01 5.1000000000000000e+01 0.0000000000000000e+00 -6.2196104012276252e-02 7.3954811425103573e-02 9.9532021506285684e-01 0 0 0
|
||||||
|
118 1 2.5000000000000000e+00 1.5000000000000000e+01 5.1000000000000000e+01 0.0000000000000000e+00 -7.2649992877525812e-02 1.0567933713226434e-01 9.9174283775491956e-01 0 0 0
|
||||||
|
138 1 2.5000000000000000e+00 1.8000000000000000e+01 5.1000000000000000e+01 0.0000000000000000e+00 -7.6126593015943753e-02 1.4398087111736468e-01 9.8664798717073843e-01 0 0 0
|
||||||
|
158 1 2.5000000000000000e+00 2.1000000000000000e+01 5.1000000000000000e+01 0.0000000000000000e+00 -6.8709104650143085e-02 1.8428174194944066e-01 9.8046891767268962e-01 0 0 0
|
||||||
|
178 1 2.5000000000000000e+00 2.4000000000000000e+01 5.1000000000000000e+01 0.0000000000000000e+00 -4.8457456104349608e-02 2.1884669159068451e-01 9.7455528346405618e-01 0 0 0
|
||||||
|
198 1 2.5000000000000000e+00 2.7000000000000000e+01 5.1000000000000000e+01 0.0000000000000000e+00 -1.7543173966404604e-02 2.3902270727461422e-01 9.7085548999544669e-01 0 0 0
|
||||||
|
218 1 2.5000000000000000e+00 3.0000000000000000e+01 5.1000000000000000e+01 0.0000000000000000e+00 1.7543173966404566e-02 2.3902270727461419e-01 9.7085548999544657e-01 0 0 0
|
||||||
|
238 1 2.5000000000000000e+00 3.3000000000000000e+01 5.1000000000000000e+01 0.0000000000000000e+00 4.8457456104349608e-02 2.1884669159068451e-01 9.7455528346405618e-01 0 0 0
|
||||||
|
258 1 2.5000000000000000e+00 3.6000000000000000e+01 5.1000000000000000e+01 0.0000000000000000e+00 6.8709104650143071e-02 1.8428174194944066e-01 9.8046891767268962e-01 0 0 0
|
||||||
|
278 1 2.5000000000000000e+00 3.9000000000000000e+01 5.1000000000000000e+01 0.0000000000000000e+00 7.6126593015943766e-02 1.4398087111736474e-01 9.8664798717073843e-01 0 0 0
|
||||||
|
298 1 2.5000000000000000e+00 4.2000000000000000e+01 5.1000000000000000e+01 0.0000000000000000e+00 7.2649992877525799e-02 1.0567933713226434e-01 9.9174283775491956e-01 0 0 0
|
||||||
|
318 1 2.5000000000000000e+00 4.5000000000000000e+01 5.1000000000000000e+01 0.0000000000000000e+00 6.2196104012276245e-02 7.3954811425103587e-02 9.9532021506285684e-01 0 0 0
|
||||||
|
338 1 2.5000000000000000e+00 4.8000000000000000e+01 5.1000000000000000e+01 0.0000000000000000e+00 4.8498220596720293e-02 5.0241530269051232e-02 9.9755887607457827e-01 0 0 0
|
||||||
|
358 1 2.5000000000000000e+00 5.1000000000000000e+01 5.1000000000000000e+01 0.0000000000000000e+00 3.4047077037887570e-02 3.4047077037887570e-02 9.9884012388887977e-01 0 0 0
|
||||||
|
378 1 2.5000000000000000e+00 5.4000000000000000e+01 5.1000000000000000e+01 0.0000000000000000e+00 2.0009637034407935e-02 2.4184841732588200e-02 9.9950723251816487e-01 0 0 0
|
||||||
|
398 1 2.5000000000000000e+00 5.7000000000000000e+01 5.1000000000000000e+01 0.0000000000000000e+00 6.5828744882500193e-03 1.9561861499557524e-02 9.9978697697966856e-01 0 0 0
|
||||||
|
19 1 2.5000000000000000e+00 0.0000000000000000e+00 5.4000000000000000e+01 0.0000000000000000e+00 -4.8145058779812486e-03 1.1868011343002475e-02 9.9991798205648519e-01 0 0 0
|
||||||
|
39 1 2.5000000000000000e+00 3.0000000000000000e+00 5.4000000000000000e+01 0.0000000000000000e+00 -1.4489047587394143e-02 1.4489047587394136e-02 9.9979004545955585e-01 0 0 0
|
||||||
|
59 1 2.5000000000000000e+00 6.0000000000000000e+00 5.4000000000000000e+01 0.0000000000000000e+00 -2.4184841732588200e-02 2.0009637034407932e-02 9.9950723251816498e-01 0 0 0
|
||||||
|
79 1 2.5000000000000000e+00 9.0000000000000000e+00 5.4000000000000000e+01 0.0000000000000000e+00 -3.3534698701154803e-02 2.8894018478272433e-02 9.9901979944303421e-01 0 0 0
|
||||||
|
99 1 2.5000000000000000e+00 1.2000000000000000e+01 5.4000000000000000e+01 0.0000000000000000e+00 -4.1631298256624205e-02 4.1569375222726870e-02 9.9826791095830603e-01 0 0 0
|
||||||
|
119 1 2.5000000000000000e+00 1.5000000000000000e+01 5.4000000000000000e+01 0.0000000000000000e+00 -4.6947676140268450e-02 5.8031121465001771e-02 9.9721026100143129e-01 0 0 0
|
||||||
|
139 1 2.5000000000000000e+00 1.8000000000000000e+01 5.4000000000000000e+01 0.0000000000000000e+00 -4.7535409319668043e-02 7.7312985281705840e-02 9.9587302763336372e-01 0 0 0
|
||||||
|
159 1 2.5000000000000000e+00 2.1000000000000000e+01 5.4000000000000000e+01 0.0000000000000000e+00 -4.1653952417990810e-02 9.7059251840902694e-02 9.9440658177630958e-01 0 0 0
|
||||||
|
179 1 2.5000000000000000e+00 2.4000000000000000e+01 5.4000000000000000e+01 0.0000000000000000e+00 -2.8752729368399278e-02 1.1365104497068095e-01 9.9310458690459180e-01 0 0 0
|
||||||
|
199 1 2.5000000000000000e+00 2.7000000000000000e+01 5.4000000000000000e+01 0.0000000000000000e+00 -1.0293413501576094e-02 1.2321728304286254e-01 9.9232633079951105e-01 0 0 0
|
||||||
|
219 1 2.5000000000000000e+00 3.0000000000000000e+01 5.4000000000000000e+01 0.0000000000000000e+00 1.0293413501576077e-02 1.2321728304286257e-01 9.9232633079951116e-01 0 0 0
|
||||||
|
239 1 2.5000000000000000e+00 3.3000000000000000e+01 5.4000000000000000e+01 0.0000000000000000e+00 2.8752729368399284e-02 1.1365104497068095e-01 9.9310458690459180e-01 0 0 0
|
||||||
|
259 1 2.5000000000000000e+00 3.6000000000000000e+01 5.4000000000000000e+01 0.0000000000000000e+00 4.1653952417990817e-02 9.7059251840902749e-02 9.9440658177630958e-01 0 0 0
|
||||||
|
279 1 2.5000000000000000e+00 3.9000000000000000e+01 5.4000000000000000e+01 0.0000000000000000e+00 4.7535409319668036e-02 7.7312985281705868e-02 9.9587302763336383e-01 0 0 0
|
||||||
|
299 1 2.5000000000000000e+00 4.2000000000000000e+01 5.4000000000000000e+01 0.0000000000000000e+00 4.6947676140268443e-02 5.8031121465001785e-02 9.9721026100143129e-01 0 0 0
|
||||||
|
319 1 2.5000000000000000e+00 4.5000000000000000e+01 5.4000000000000000e+01 0.0000000000000000e+00 4.1631298256624191e-02 4.1569375222726877e-02 9.9826791095830603e-01 0 0 0
|
||||||
|
339 1 2.5000000000000000e+00 4.8000000000000000e+01 5.4000000000000000e+01 0.0000000000000000e+00 3.3534698701154803e-02 2.8894018478272433e-02 9.9901979944303410e-01 0 0 0
|
||||||
|
359 1 2.5000000000000000e+00 5.1000000000000000e+01 5.4000000000000000e+01 0.0000000000000000e+00 2.4184841732588204e-02 2.0009637034407932e-02 9.9950723251816498e-01 0 0 0
|
||||||
|
379 1 2.5000000000000000e+00 5.4000000000000000e+01 5.4000000000000000e+01 0.0000000000000000e+00 1.4489047587394145e-02 1.4489047587394140e-02 9.9979004545955585e-01 0 0 0
|
||||||
|
399 1 2.5000000000000000e+00 5.7000000000000000e+01 5.4000000000000000e+01 0.0000000000000000e+00 4.8145058779812486e-03 1.1868011343002480e-02 9.9991798205648519e-01 0 0 0
|
||||||
|
20 1 2.5000000000000000e+00 0.0000000000000000e+00 5.7000000000000000e+01 0.0000000000000000e+00 -3.9693242391277937e-03 3.9693242391277764e-03 9.9998424434096445e-01 0 0 0
|
||||||
|
40 1 2.5000000000000000e+00 3.0000000000000000e+00 5.7000000000000000e+01 0.0000000000000000e+00 -1.1868011343002482e-02 4.8145058779812460e-03 9.9991798205648519e-01 0 0 0
|
||||||
|
60 1 2.5000000000000000e+00 6.0000000000000000e+00 5.7000000000000000e+01 0.0000000000000000e+00 -1.9561861499557517e-02 6.5828744882500097e-03 9.9978697697966856e-01 0 0 0
|
||||||
|
80 1 2.5000000000000000e+00 9.0000000000000000e+00 5.7000000000000000e+01 0.0000000000000000e+00 -2.6644762521588487e-02 9.3989438861432437e-03 9.9960077855311491e-01 0 0 0
|
||||||
|
100 1 2.5000000000000000e+00 1.2000000000000000e+01 5.7000000000000000e+01 0.0000000000000000e+00 -3.2364838887478306e-02 1.3362272507461690e-02 9.9938679542868891e-01 0 0 0
|
||||||
|
120 1 2.5000000000000000e+00 1.5000000000000000e+01 5.7000000000000000e+01 0.0000000000000000e+00 -3.5634992015801822e-02 1.8429703183501404e-02 9.9919492261750509e-01 0 0 0
|
||||||
|
140 1 2.5000000000000000e+00 1.8000000000000000e+01 5.7000000000000000e+01 0.0000000000000000e+00 -3.5235119566844240e-02 2.4270277420221090e-02 9.9908430073895971e-01 0 0 0
|
||||||
|
160 1 2.5000000000000000e+00 2.1000000000000000e+01 5.7000000000000000e+01 0.0000000000000000e+00 -3.0237916900163146e-02 3.0163850736159105e-02 9.9908748890690546e-01 0 0 0
|
||||||
|
180 1 2.5000000000000000e+00 2.4000000000000000e+01 5.7000000000000000e+01 0.0000000000000000e+00 -2.0551704657275894e-02 3.5058787503171394e-02 9.9917391321755789e-01 0 0 0
|
||||||
|
200 1 2.5000000000000000e+00 2.7000000000000000e+01 5.7000000000000000e+01 0.0000000000000000e+00 -7.2971667669136028e-03 3.7860607272964010e-02 9.9925638640646086e-01 0 0 0
|
||||||
|
220 1 2.5000000000000000e+00 3.0000000000000000e+01 5.7000000000000000e+01 0.0000000000000000e+00 7.2971667669136037e-03 3.7860607272964024e-02 9.9925638640646097e-01 0 0 0
|
||||||
|
240 1 2.5000000000000000e+00 3.3000000000000000e+01 5.7000000000000000e+01 0.0000000000000000e+00 2.0551704657275890e-02 3.5058787503171394e-02 9.9917391321755777e-01 0 0 0
|
||||||
|
260 1 2.5000000000000000e+00 3.6000000000000000e+01 5.7000000000000000e+01 0.0000000000000000e+00 3.0237916900163159e-02 3.0163850736159115e-02 9.9908748890690535e-01 0 0 0
|
||||||
|
280 1 2.5000000000000000e+00 3.9000000000000000e+01 5.7000000000000000e+01 0.0000000000000000e+00 3.5235119566844234e-02 2.4270277420221094e-02 9.9908430073895960e-01 0 0 0
|
||||||
|
300 1 2.5000000000000000e+00 4.2000000000000000e+01 5.7000000000000000e+01 0.0000000000000000e+00 3.5634992015801836e-02 1.8429703183501414e-02 9.9919492261750498e-01 0 0 0
|
||||||
|
320 1 2.5000000000000000e+00 4.5000000000000000e+01 5.7000000000000000e+01 0.0000000000000000e+00 3.2364838887478299e-02 1.3362272507461701e-02 9.9938679542868891e-01 0 0 0
|
||||||
|
340 1 2.5000000000000000e+00 4.8000000000000000e+01 5.7000000000000000e+01 0.0000000000000000e+00 2.6644762521588480e-02 9.3989438861432611e-03 9.9960077855311480e-01 0 0 0
|
||||||
|
360 1 2.5000000000000000e+00 5.1000000000000000e+01 5.7000000000000000e+01 0.0000000000000000e+00 1.9561861499557527e-02 6.5828744882500097e-03 9.9978697697966845e-01 0 0 0
|
||||||
|
380 1 2.5000000000000000e+00 5.4000000000000000e+01 5.7000000000000000e+01 0.0000000000000000e+00 1.1868011343002492e-02 4.8145058779812391e-03 9.9991798205648519e-01 0 0 0
|
||||||
|
400 1 2.5000000000000000e+00 5.7000000000000000e+01 5.7000000000000000e+01 0.0000000000000000e+00 3.9693242391277937e-03 3.9693242391277851e-03 9.9998424434096445e-01 0 0 0
|
||||||
|
|
||||||
|
Velocities
|
||||||
|
|
||||||
|
1 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
21 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
41 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
61 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
81 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
101 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
121 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
141 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
161 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
181 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
201 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
221 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
241 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
261 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
281 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
301 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
321 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
341 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
361 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
381 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
2 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
22 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
42 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
62 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
82 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
102 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
122 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
142 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
162 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
182 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
202 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
222 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
242 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
262 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
282 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
302 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
322 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
342 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
362 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
382 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
3 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
23 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
43 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
63 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
83 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
103 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
123 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
143 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
163 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
183 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
203 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
223 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
243 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
263 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
283 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
303 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
323 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
343 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
363 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
383 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
4 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
24 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
44 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
64 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
84 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
104 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
124 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
144 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
164 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
184 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
204 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
224 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
244 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
264 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
284 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
304 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
324 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
344 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
364 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
384 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
5 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
25 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
45 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
65 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
85 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
105 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
125 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
145 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
165 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
185 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
205 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
225 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
245 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
265 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
285 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
305 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
325 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
345 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
365 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
385 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
6 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
26 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
46 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
66 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
86 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
106 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
126 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
146 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
166 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
186 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
206 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
226 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
246 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
266 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
286 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
306 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
326 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
346 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
366 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
386 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
7 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
27 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
47 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
67 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
87 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
107 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
127 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
147 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
167 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
187 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
207 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
227 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
247 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
267 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
287 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
307 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
327 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
347 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
367 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
387 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
8 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
28 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
48 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
68 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
88 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
108 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
128 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
148 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
168 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
188 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
208 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
228 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
248 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
268 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
288 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
308 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
328 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
348 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
368 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
388 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
9 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
29 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
49 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
69 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
89 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
109 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
129 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
149 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
169 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
189 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
209 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
229 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
249 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
269 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
289 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
309 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
329 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
349 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
369 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
389 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
10 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
30 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
50 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
70 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
90 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
110 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
130 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
150 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
170 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
190 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
210 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
230 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
250 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
270 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
290 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
310 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
330 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
350 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
370 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
390 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
11 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
31 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
51 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
71 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
91 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
111 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
131 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
151 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
171 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
191 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
211 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
231 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
251 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
271 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
291 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
311 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
331 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
351 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
371 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
391 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
12 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
32 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
52 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
72 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
92 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
112 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
132 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
152 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
172 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
192 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
212 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
232 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
252 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
272 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
292 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
312 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
332 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
352 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
372 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
392 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
13 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
33 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
53 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
73 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
93 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
113 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
133 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
153 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
173 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
193 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
213 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
233 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
253 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
273 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
293 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
313 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
333 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
353 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
373 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
393 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
14 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
34 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
54 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
74 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
94 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
114 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
134 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
154 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
174 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
194 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
214 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
234 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
254 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
274 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
294 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
314 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
334 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
354 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
374 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
394 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
15 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
35 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
55 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
75 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
95 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
115 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
135 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
155 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
175 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
195 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
215 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
235 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
255 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
275 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
295 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
315 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
335 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
355 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
375 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
395 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
16 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
36 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
56 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
76 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
96 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
116 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
136 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
156 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
176 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
196 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
216 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
236 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
256 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
276 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
296 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
316 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
336 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
356 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
376 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
396 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
17 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
37 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
57 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
77 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
97 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
117 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
137 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
157 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
177 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
197 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
217 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
237 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
257 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
277 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
297 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
317 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
337 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
357 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
377 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
397 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
18 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
38 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
58 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
78 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
98 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
118 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
138 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
158 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
178 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
198 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
218 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
238 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
258 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
278 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
298 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
318 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
338 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
358 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
378 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
398 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
19 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
39 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
59 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
79 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
99 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
119 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
139 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
159 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
179 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
199 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
219 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
239 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
259 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
279 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
299 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
319 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
339 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
359 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
379 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
399 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
20 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
40 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
60 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
80 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
100 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
120 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
140 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
160 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
180 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
200 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
220 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
240 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
260 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
280 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
300 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
320 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
340 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
360 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
380 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
|
400 0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00
|
||||||
@ -40,6 +40,6 @@ thermo_style custom step time v_magnorm v_emag v_tmag temp etotal
|
|||||||
thermo_modify format float %20.15g
|
thermo_modify format float %20.15g
|
||||||
|
|
||||||
compute outsp all property/atom spx spy spz sp fmx fmy fmz
|
compute outsp all property/atom spx spy spz sp fmx fmy fmz
|
||||||
dump 10 all custom 1 dump.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] c_outsp[4] c_outsp[5] c_outsp[6] c_outsp[7]
|
dump 1 all custom 1 dump.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] c_outsp[4] c_outsp[5] c_outsp[6] c_outsp[7]
|
||||||
|
|
||||||
run 100
|
run 100
|
||||||
|
|||||||
59
examples/SPIN/setforce_spin/in.spinmin.setforce
Normal file
59
examples/SPIN/setforce_spin/in.spinmin.setforce
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
|
||||||
|
units metal
|
||||||
|
dimension 3
|
||||||
|
boundary f f f
|
||||||
|
atom_style spin
|
||||||
|
|
||||||
|
# necessary for the serial algorithm (sametag)
|
||||||
|
atom_modify map array
|
||||||
|
|
||||||
|
lattice sc 3.0
|
||||||
|
region box block 0.0 10.0 0.0 10.0 0.0 1.0
|
||||||
|
create_box 2 box
|
||||||
|
region reg1 block 0.0 10.0 0.0 5.0 0.0 1.0
|
||||||
|
region reg2 block 0.0 10.0 6.0 10.0 0.0 1.0
|
||||||
|
create_atoms 1 region reg1
|
||||||
|
create_atoms 2 region reg2
|
||||||
|
|
||||||
|
# setting mass, mag. moments, and interactions for bcc iron
|
||||||
|
|
||||||
|
mass 1 55.845
|
||||||
|
mass 2 55.845
|
||||||
|
set region reg1 spin 2.2 0.0 0.0 1.0
|
||||||
|
set region reg2 spin/random 31 2.2
|
||||||
|
|
||||||
|
group fixed_spin region reg1
|
||||||
|
|
||||||
|
pair_style hybrid/overlay spin/exchange 3.1 spin/dmi 3.1
|
||||||
|
pair_coeff * * spin/exchange exchange 3.1 -0.01593 0.06626915552 1.211
|
||||||
|
pair_coeff * * spin/dmi dmi 3.1 0.12e-03 0.0 0.0 1.0
|
||||||
|
|
||||||
|
neighbor 0.1 bin
|
||||||
|
neigh_modify every 10 check yes delay 20
|
||||||
|
|
||||||
|
fix 1 all precession/spin zeeman 0.0 0.0 0.0 1.0 anisotropy 5e-05 0.0 0.0 1.0
|
||||||
|
fix_modify 1 energy yes
|
||||||
|
fix 2 fixed_spin setforce/spin 0.0 0.0 0.0
|
||||||
|
fix 3 all langevin/spin 0.0 0.1 21
|
||||||
|
fix 4 all nve/spin lattice no
|
||||||
|
|
||||||
|
timestep 0.0001
|
||||||
|
|
||||||
|
compute out_mag all spin
|
||||||
|
variable magx equal c_out_mag[1]
|
||||||
|
variable magy equal c_out_mag[2]
|
||||||
|
variable magz equal c_out_mag[3]
|
||||||
|
variable magnorm equal c_out_mag[4]
|
||||||
|
variable emag equal c_out_mag[5]
|
||||||
|
variable tmag equal c_out_mag[6]
|
||||||
|
|
||||||
|
thermo 1000
|
||||||
|
thermo_style custom step time v_magx v_magz v_magnorm v_tmag etotal
|
||||||
|
thermo_modify format float %20.15g
|
||||||
|
|
||||||
|
compute outsp all property/atom spx spy spz sp fmx fmy fmz
|
||||||
|
dump 1 all custom 1000 dump.lammpstrj type x y z c_outsp[1] c_outsp[2] c_outsp[3] c_outsp[5] c_outsp[6] c_outsp[7]
|
||||||
|
|
||||||
|
min_style spin
|
||||||
|
min_modify alpha_damp 1.0 discrete_factor 20.0
|
||||||
|
minimize 1.0e-16 1.0e-16 50000 1000
|
||||||
@ -1 +0,0 @@
|
|||||||
../../../../potentials/CH.airebo
|
|
||||||
1
examples/USER/misc/kolmogorov_crespi_z/CH.rebo
Symbolic link
1
examples/USER/misc/kolmogorov_crespi_z/CH.rebo
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../../../potentials/CH.rebo
|
||||||
@ -22,7 +22,7 @@ group adsorbant type 2
|
|||||||
######################## Potential defition ########################
|
######################## Potential defition ########################
|
||||||
pair_style hybrid/overlay rebo kolmogorov/crespi/z 14.0
|
pair_style hybrid/overlay rebo kolmogorov/crespi/z 14.0
|
||||||
####################################################################
|
####################################################################
|
||||||
pair_coeff * * rebo CH.airebo C C # chemical
|
pair_coeff * * rebo CH.rebo C C # chemical
|
||||||
pair_coeff 1 2 kolmogorov/crespi/z CC.KC C C # long-range
|
pair_coeff 1 2 kolmogorov/crespi/z CC.KC C C # long-range
|
||||||
####################################################################
|
####################################################################
|
||||||
|
|
||||||
|
|||||||
@ -1,208 +0,0 @@
|
|||||||
LAMMPS (8 Mar 2018)
|
|
||||||
using 1 OpenMP thread(s) per MPI task
|
|
||||||
# Initialization
|
|
||||||
units metal
|
|
||||||
boundary p p p
|
|
||||||
atom_style atomic
|
|
||||||
processors * * 1 # domain decomposition over x and y
|
|
||||||
|
|
||||||
# System and atom definition
|
|
||||||
# we use 2 atom types so that inter- and intra-layer
|
|
||||||
# interactions can be specified separately
|
|
||||||
read_data data.bilayer-graphene # read lammps data file
|
|
||||||
orthogonal box = (0 0 -20) to (17.04 19.6761 40)
|
|
||||||
1 by 1 by 1 MPI processor grid
|
|
||||||
reading atoms ...
|
|
||||||
256 atoms
|
|
||||||
mass 1 12.0107 # carbon mass (g/mole) | membrane
|
|
||||||
mass 2 12.0107 # carbon mass (g/mole) | adsorbate
|
|
||||||
# Neighbor update settings
|
|
||||||
neighbor 2.0 bin
|
|
||||||
neigh_modify every 1
|
|
||||||
neigh_modify delay 0
|
|
||||||
neigh_modify check yes
|
|
||||||
# Separate atom groups
|
|
||||||
group membrane type 1
|
|
||||||
128 atoms in group membrane
|
|
||||||
group adsorbant type 2
|
|
||||||
128 atoms in group adsorbant
|
|
||||||
|
|
||||||
######################## Potential defition ########################
|
|
||||||
pair_style hybrid/overlay rebo kolmogorov/crespi/z 14.0
|
|
||||||
####################################################################
|
|
||||||
pair_coeff * * rebo CH.airebo C C # chemical
|
|
||||||
Reading potential file CH.airebo with DATE: 2011-10-25
|
|
||||||
pair_coeff 1 2 kolmogorov/crespi/z CC.KC C C # long-range
|
|
||||||
####################################################################
|
|
||||||
|
|
||||||
#### Simulation settings ####
|
|
||||||
timestep 0.0001
|
|
||||||
velocity all create 300.0 12345
|
|
||||||
fix thermostat all nve
|
|
||||||
compute COM1 membrane com
|
|
||||||
compute COM2 adsorbant com
|
|
||||||
############################
|
|
||||||
|
|
||||||
# Output
|
|
||||||
#dump 1 all xyz 100 trajec.xyz
|
|
||||||
#dump_modify 1 format line "%s %12.6f %12.6f %12.6f" element "C" "C"
|
|
||||||
thermo 10
|
|
||||||
thermo_style custom step time etotal pe temp c_COM1[3] c_COM2[3] # spcpu
|
|
||||||
thermo_modify line one format float %14.8f
|
|
||||||
|
|
||||||
###### Run molecular dynamics ######
|
|
||||||
run 1000
|
|
||||||
Neighbor list info ...
|
|
||||||
update every 1 steps, delay 0 steps, check yes
|
|
||||||
max neighbors/atom: 2000, page size: 100000
|
|
||||||
master list distance cutoff = 16
|
|
||||||
ghost atom cutoff = 16
|
|
||||||
binsize = 8, bins = 3 3 8
|
|
||||||
3 neighbor lists, perpetual/occasional/extra = 3 0 0
|
|
||||||
(1) pair rebo, perpetual
|
|
||||||
attributes: full, newton on, ghost
|
|
||||||
pair build: full/bin/ghost
|
|
||||||
stencil: full/ghost/bin/3d
|
|
||||||
bin: standard
|
|
||||||
(2) pair kolmogorov/crespi/z, perpetual, skip from (3)
|
|
||||||
attributes: half, newton on
|
|
||||||
pair build: skip
|
|
||||||
stencil: none
|
|
||||||
bin: none
|
|
||||||
(3) neighbor class addition, perpetual
|
|
||||||
attributes: half, newton on
|
|
||||||
pair build: half/bin/atomonly/newton
|
|
||||||
stencil: half/bin/3d/newton
|
|
||||||
bin: standard
|
|
||||||
Per MPI rank memory allocation (min/avg/max) = 4.998 | 4.998 | 4.998 Mbytes
|
|
||||||
Step Time TotEng PotEng Temp c_COM1[3] c_COM2[3]
|
|
||||||
0 0.00000000 -1888.67041214 -1898.55881323 300.00000000 0.00000000 3.30000000
|
|
||||||
10 0.00100000 -1888.67037221 -1898.21029897 289.42778520 -0.00020126 3.30020126
|
|
||||||
20 0.00200000 -1888.67021541 -1897.22943612 259.67456089 -0.00041357 3.30041357
|
|
||||||
30 0.00300000 -1888.66999308 -1895.86681311 218.34126559 -0.00063673 3.30063673
|
|
||||||
40 0.00400000 -1888.66978354 -1894.47163830 176.02000692 -0.00087055 3.30087055
|
|
||||||
50 0.00500000 -1888.66966068 -1893.37123377 142.63902862 -0.00111486 3.30111486
|
|
||||||
60 0.00600000 -1888.66966132 -1892.75822749 124.04127205 -0.00136952 3.30136952
|
|
||||||
70 0.00700000 -1888.66976974 -1892.63445751 120.28297808 -0.00163441 3.30163441
|
|
||||||
80 0.00800000 -1888.66992867 -1892.83467462 126.35245792 -0.00190946 3.30190946
|
|
||||||
90 0.00900000 -1888.67006868 -1893.11387069 134.81862145 -0.00219458 3.30219458
|
|
||||||
100 0.01000000 -1888.67013621 -1893.25481851 139.09272853 -0.00248973 3.30248973
|
|
||||||
110 0.01100000 -1888.67011201 -1893.15155790 135.96068294 -0.00279489 3.30279489
|
|
||||||
120 0.01200000 -1888.67001496 -1892.84002960 126.51230266 -0.00311004 3.30311004
|
|
||||||
130 0.01300000 -1888.66988997 -1892.47004238 115.29120968 -0.00343519 3.30343519
|
|
||||||
140 0.01400000 -1888.66979230 -1892.23503116 108.16426723 -0.00377038 3.30377038
|
|
||||||
150 0.01500000 -1888.66976478 -1892.28630583 109.72070257 -0.00411562 3.30411562
|
|
||||||
160 0.01600000 -1888.66982054 -1892.66640611 121.25071190 -0.00447099 3.30447099
|
|
||||||
170 0.01700000 -1888.66993790 -1893.28862637 140.12442721 -0.00483654 3.30483654
|
|
||||||
180 0.01800000 -1888.67007017 -1893.97029258 160.80119589 -0.00521235 3.30521235
|
|
||||||
190 0.01900000 -1888.67016712 -1894.50458787 177.00801243 -0.00559851 3.30559851
|
|
||||||
200 0.02000000 -1888.67019459 -1894.73890106 184.11590729 -0.00599512 3.30599512
|
|
||||||
210 0.02100000 -1888.67014420 -1894.62906014 180.78501932 -0.00640230 3.30640230
|
|
||||||
220 0.02200000 -1888.67003680 -1894.25249103 169.36370738 -0.00682016 3.30682016
|
|
||||||
230 0.02300000 -1888.66991386 -1893.77601613 154.91186767 -0.00724883 3.30724883
|
|
||||||
240 0.02400000 -1888.66982525 -1893.38995084 143.20188490 -0.00768845 3.30768845
|
|
||||||
250 0.02500000 -1888.66980630 -1893.23138936 138.39193056 -0.00813913 3.30813913
|
|
||||||
260 0.02600000 -1888.66986130 -1893.32993923 141.38012476 -0.00860097 3.30860097
|
|
||||||
270 0.02700000 -1888.66996305 -1893.60070606 149.59171763 -0.00907408 3.30907408
|
|
||||||
280 0.02800000 -1888.67006686 -1893.88587226 158.24010433 -0.00955849 3.30955849
|
|
||||||
290 0.02900000 -1888.67012981 -1894.02402669 162.42960292 -0.01005424 3.31005424
|
|
||||||
300 0.03000000 -1888.67012722 -1893.91715234 159.18726627 -0.01056129 3.31056129
|
|
||||||
310 0.03100000 -1888.67005731 -1893.57037242 148.66857852 -0.01107957 3.31107957
|
|
||||||
320 0.03200000 -1888.66994573 -1893.09358619 134.20694883 -0.01160898 3.31160898
|
|
||||||
330 0.03300000 -1888.66983589 -1892.66132663 121.09614207 -0.01214935 3.31214935
|
|
||||||
340 0.03400000 -1888.66977410 -1892.44446345 114.51869676 -0.01270046 3.31270046
|
|
||||||
350 0.03500000 -1888.66978826 -1892.53901235 117.38674604 -0.01326207 3.31326207
|
|
||||||
360 0.03600000 -1888.66987439 -1892.92337288 129.04508371 -0.01383390 3.31383390
|
|
||||||
370 0.03700000 -1888.66999800 -1893.46445570 145.45701555 -0.01441561 3.31441561
|
|
||||||
380 0.03800000 -1888.67010960 -1893.97065516 160.81100020 -0.01500688 3.31500688
|
|
||||||
390 0.03900000 -1888.67016540 -1894.26835818 169.84119247 -0.01560734 3.31560734
|
|
||||||
400 0.04000000 -1888.67014667 -1894.26967975 169.88185546 -0.01621664 3.31621664
|
|
||||||
410 0.04100000 -1888.67006166 -1894.00321069 161.80014280 -0.01683442 3.31683442
|
|
||||||
420 0.04200000 -1888.66994367 -1893.60086324 149.59707418 -0.01746033 3.31746033
|
|
||||||
430 0.04300000 -1888.66984058 -1893.24559841 138.82197275 -0.01809405 3.31809405
|
|
||||||
440 0.04400000 -1888.66979399 -1893.09727874 134.32357877 -0.01873527 3.31873527
|
|
||||||
450 0.04500000 -1888.66982139 -1893.22837442 138.30000378 -0.01938373 3.31938373
|
|
||||||
460 0.04600000 -1888.66990972 -1893.59670383 149.47191354 -0.02003918 3.32003918
|
|
||||||
470 0.04700000 -1888.67002173 -1894.06542598 163.68887743 -0.02070143 3.32070143
|
|
||||||
480 0.04800000 -1888.67011389 -1894.46010842 175.66018439 -0.02137030 3.32137030
|
|
||||||
490 0.04900000 -1888.67015175 -1894.63688098 181.02206322 -0.02204565 3.32204565
|
|
||||||
500 0.05000000 -1888.67012158 -1894.53632221 177.97216882 -0.02272740 3.32272740
|
|
||||||
510 0.05100000 -1888.67003762 -1894.20444731 167.90610436 -0.02341547 3.32341547
|
|
||||||
520 0.05200000 -1888.66993151 -1893.77231066 154.79891353 -0.02410981 3.32410981
|
|
||||||
530 0.05300000 -1888.66984505 -1893.40525927 143.66572038 -0.02481040 3.32481040
|
|
||||||
540 0.05400000 -1888.66981408 -1893.23762083 138.58074854 -0.02551724 3.32551724
|
|
||||||
550 0.05500000 -1888.66985005 -1893.31793594 141.01630317 -0.02623032 3.32623032
|
|
||||||
560 0.05600000 -1888.66993737 -1893.59069013 149.28862751 -0.02694963 3.32694963
|
|
||||||
570 0.05700000 -1888.67003852 -1893.92089571 159.30352588 -0.02767517 3.32767517
|
|
||||||
580 0.05800000 -1888.67011322 -1894.15124753 166.28980524 -0.02840691 3.32840691
|
|
||||||
590 0.05900000 -1888.67013192 -1894.16548041 166.72104345 -0.02914478 3.32914478
|
|
||||||
600 0.06000000 -1888.67008713 -1893.93443318 159.71275856 -0.02988871 3.32988871
|
|
||||||
610 0.06100000 -1888.66999438 -1893.52841656 147.39760646 -0.03063856 3.33063856
|
|
||||||
620 0.06200000 -1888.66988809 -1893.09235021 134.17119963 -0.03139416 3.33139416
|
|
||||||
630 0.06300000 -1888.66980996 -1892.79172016 125.05288240 -0.03215531 3.33215531
|
|
||||||
640 0.06400000 -1888.66979261 -1892.74755390 123.71346730 -0.03292176 3.33292176
|
|
||||||
650 0.06500000 -1888.66984332 -1892.98665459 130.96590324 -0.03369323 3.33369323
|
|
||||||
660 0.06600000 -1888.66994245 -1893.42999868 144.41332389 -0.03446937 3.33446937
|
|
||||||
670 0.06700000 -1888.67005233 -1893.92310681 159.37018806 -0.03524986 3.33524986
|
|
||||||
680 0.06800000 -1888.67013309 -1894.29451581 170.63575808 -0.03603430 3.33603430
|
|
||||||
690 0.06900000 -1888.67015452 -1894.41878117 174.40514192 -0.03682229 3.33682229
|
|
||||||
700 0.07000000 -1888.67010897 -1894.26288036 169.67671530 -0.03761343 3.33761343
|
|
||||||
710 0.07100000 -1888.67001367 -1893.89812904 158.61357114 -0.03840729 3.33840729
|
|
||||||
720 0.07200000 -1888.66990378 -1893.47348746 145.73388454 -0.03920344 3.33920344
|
|
||||||
730 0.07300000 -1888.66982212 -1893.15984839 136.22099960 -0.04000148 3.34000148
|
|
||||||
740 0.07400000 -1888.66980109 -1893.08373746 133.91254029 -0.04080098 3.34080098
|
|
||||||
750 0.07500000 -1888.66984794 -1893.27755511 139.79127024 -0.04160156 3.34160156
|
|
||||||
760 0.07600000 -1888.66994215 -1893.66837365 151.64528967 -0.04240282 3.34240282
|
|
||||||
770 0.07700000 -1888.67004554 -1894.10941206 165.02263027 -0.04320441 3.34320441
|
|
||||||
780 0.07800000 -1888.67011702 -1894.43947545 175.03411436 -0.04400599 3.34400599
|
|
||||||
790 0.07900000 -1888.67013297 -1894.54590471 178.26254255 -0.04480726 3.34480726
|
|
||||||
800 0.08000000 -1888.67008751 -1894.40384142 173.95392406 -0.04560792 3.34560792
|
|
||||||
810 0.08100000 -1888.66999923 -1894.08389003 164.24973321 -0.04640773 3.34640773
|
|
||||||
820 0.08200000 -1888.66990447 -1893.72313979 153.30795965 -0.04720647 3.34720647
|
|
||||||
830 0.08300000 -1888.66984367 -1893.46839190 145.58111626 -0.04800393 3.34800393
|
|
||||||
840 0.08400000 -1888.66984156 -1893.41412536 143.93481093 -0.04879995 3.34879995
|
|
||||||
850 0.08500000 -1888.66989670 -1893.56426154 148.48805553 -0.04959439 3.34959439
|
|
||||||
860 0.08600000 -1888.66998222 -1893.83463719 156.68827294 -0.05038713 3.35038713
|
|
||||||
870 0.08700000 -1888.67006171 -1894.09325045 164.53181920 -0.05117805 3.35117805
|
|
||||||
880 0.08800000 -1888.67010273 -1894.21712661 168.28880100 -0.05196706 3.35196706
|
|
||||||
890 0.08900000 -1888.67008993 -1894.14263950 166.02935656 -0.05275408 3.35275408
|
|
||||||
900 0.09000000 -1888.67002891 -1893.89014571 158.37090587 -0.05353904 3.35353904
|
|
||||||
910 0.09100000 -1888.66994326 -1893.55535709 148.21649469 -0.05432186 3.35432186
|
|
||||||
920 0.09200000 -1888.66986526 -1893.27257949 139.63979178 -0.05510247 3.35510247
|
|
||||||
930 0.09300000 -1888.66982730 -1893.16330891 136.32582949 -0.05588078 3.35588078
|
|
||||||
940 0.09400000 -1888.66984631 -1893.28643285 140.06065785 -0.05665670 3.35665670
|
|
||||||
950 0.09500000 -1888.66991503 -1893.61245342 149.94957268 -0.05743015 3.35743015
|
|
||||||
960 0.09600000 -1888.67000691 -1894.03423922 162.74316516 -0.05820101 3.35820101
|
|
||||||
970 0.09700000 -1888.67008649 -1894.40848025 174.09469037 -0.05896915 3.35896915
|
|
||||||
980 0.09800000 -1888.67012436 -1894.61056767 180.22458605 -0.05973444 3.35973444
|
|
||||||
990 0.09900000 -1888.67010608 -1894.58107659 179.33042338 -0.06049672 3.36049672
|
|
||||||
1000 0.10000000 -1888.67003981 -1894.34773305 172.25312330 -0.06125581 3.36125581
|
|
||||||
Loop time of 3.90147 on 1 procs for 1000 steps with 256 atoms
|
|
||||||
|
|
||||||
Performance: 2.215 ns/day, 10.837 hours/ns, 256.314 timesteps/s
|
|
||||||
99.4% CPU use with 1 MPI tasks x 1 OpenMP threads
|
|
||||||
|
|
||||||
MPI task timing breakdown:
|
|
||||||
Section | min time | avg time | max time |%varavg| %total
|
|
||||||
---------------------------------------------------------------
|
|
||||||
Pair | 3.8786 | 3.8786 | 3.8786 | 0.0 | 99.41
|
|
||||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
|
||||||
Comm | 0.010816 | 0.010816 | 0.010816 | 0.0 | 0.28
|
|
||||||
Output | 0.002461 | 0.002461 | 0.002461 | 0.0 | 0.06
|
|
||||||
Modify | 0.0051703 | 0.0051703 | 0.0051703 | 0.0 | 0.13
|
|
||||||
Other | | 0.004447 | | | 0.11
|
|
||||||
|
|
||||||
Nlocal: 256 ave 256 max 256 min
|
|
||||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
|
||||||
Nghost: 1721 ave 1721 max 1721 min
|
|
||||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
|
||||||
Neighs: 37312 ave 37312 max 37312 min
|
|
||||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
|
||||||
FullNghs: 94592 ave 94592 max 94592 min
|
|
||||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
|
||||||
|
|
||||||
Total # of neighbors = 94592
|
|
||||||
Ave neighs/atom = 369.5
|
|
||||||
Neighbor list builds = 0
|
|
||||||
Dangerous builds = 0
|
|
||||||
Total wall time: 0:00:03
|
|
||||||
@ -1,208 +0,0 @@
|
|||||||
LAMMPS (8 Mar 2018)
|
|
||||||
using 1 OpenMP thread(s) per MPI task
|
|
||||||
# Initialization
|
|
||||||
units metal
|
|
||||||
boundary p p p
|
|
||||||
atom_style atomic
|
|
||||||
processors * * 1 # domain decomposition over x and y
|
|
||||||
|
|
||||||
# System and atom definition
|
|
||||||
# we use 2 atom types so that inter- and intra-layer
|
|
||||||
# interactions can be specified separately
|
|
||||||
read_data data.bilayer-graphene # read lammps data file
|
|
||||||
orthogonal box = (0 0 -20) to (17.04 19.6761 40)
|
|
||||||
2 by 2 by 1 MPI processor grid
|
|
||||||
reading atoms ...
|
|
||||||
256 atoms
|
|
||||||
mass 1 12.0107 # carbon mass (g/mole) | membrane
|
|
||||||
mass 2 12.0107 # carbon mass (g/mole) | adsorbate
|
|
||||||
# Neighbor update settings
|
|
||||||
neighbor 2.0 bin
|
|
||||||
neigh_modify every 1
|
|
||||||
neigh_modify delay 0
|
|
||||||
neigh_modify check yes
|
|
||||||
# Separate atom groups
|
|
||||||
group membrane type 1
|
|
||||||
128 atoms in group membrane
|
|
||||||
group adsorbant type 2
|
|
||||||
128 atoms in group adsorbant
|
|
||||||
|
|
||||||
######################## Potential defition ########################
|
|
||||||
pair_style hybrid/overlay rebo kolmogorov/crespi/z 14.0
|
|
||||||
####################################################################
|
|
||||||
pair_coeff * * rebo CH.airebo C C # chemical
|
|
||||||
Reading potential file CH.airebo with DATE: 2011-10-25
|
|
||||||
pair_coeff 1 2 kolmogorov/crespi/z CC.KC C C # long-range
|
|
||||||
####################################################################
|
|
||||||
|
|
||||||
#### Simulation settings ####
|
|
||||||
timestep 0.0001
|
|
||||||
velocity all create 300.0 12345
|
|
||||||
fix thermostat all nve
|
|
||||||
compute COM1 membrane com
|
|
||||||
compute COM2 adsorbant com
|
|
||||||
############################
|
|
||||||
|
|
||||||
# Output
|
|
||||||
#dump 1 all xyz 100 trajec.xyz
|
|
||||||
#dump_modify 1 format line "%s %12.6f %12.6f %12.6f" element "C" "C"
|
|
||||||
thermo 10
|
|
||||||
thermo_style custom step time etotal pe temp c_COM1[3] c_COM2[3] # spcpu
|
|
||||||
thermo_modify line one format float %14.8f
|
|
||||||
|
|
||||||
###### Run molecular dynamics ######
|
|
||||||
run 1000
|
|
||||||
Neighbor list info ...
|
|
||||||
update every 1 steps, delay 0 steps, check yes
|
|
||||||
max neighbors/atom: 2000, page size: 100000
|
|
||||||
master list distance cutoff = 16
|
|
||||||
ghost atom cutoff = 16
|
|
||||||
binsize = 8, bins = 3 3 8
|
|
||||||
3 neighbor lists, perpetual/occasional/extra = 3 0 0
|
|
||||||
(1) pair rebo, perpetual
|
|
||||||
attributes: full, newton on, ghost
|
|
||||||
pair build: full/bin/ghost
|
|
||||||
stencil: full/ghost/bin/3d
|
|
||||||
bin: standard
|
|
||||||
(2) pair kolmogorov/crespi/z, perpetual, skip from (3)
|
|
||||||
attributes: half, newton on
|
|
||||||
pair build: skip
|
|
||||||
stencil: none
|
|
||||||
bin: none
|
|
||||||
(3) neighbor class addition, perpetual
|
|
||||||
attributes: half, newton on
|
|
||||||
pair build: half/bin/atomonly/newton
|
|
||||||
stencil: half/bin/3d/newton
|
|
||||||
bin: standard
|
|
||||||
Per MPI rank memory allocation (min/avg/max) = 4.572 | 4.572 | 4.572 Mbytes
|
|
||||||
Step Time TotEng PotEng Temp c_COM1[3] c_COM2[3]
|
|
||||||
0 0.00000000 -1888.67041214 -1898.55881323 300.00000000 0.00000000 3.30000000
|
|
||||||
10 0.00100000 -1888.67037221 -1898.21029897 289.42778520 -0.00020126 3.30020126
|
|
||||||
20 0.00200000 -1888.67021541 -1897.22943612 259.67456089 -0.00041357 3.30041357
|
|
||||||
30 0.00300000 -1888.66999308 -1895.86681311 218.34126559 -0.00063673 3.30063673
|
|
||||||
40 0.00400000 -1888.66978354 -1894.47163830 176.02000692 -0.00087055 3.30087055
|
|
||||||
50 0.00500000 -1888.66966068 -1893.37123377 142.63902862 -0.00111486 3.30111486
|
|
||||||
60 0.00600000 -1888.66966132 -1892.75822749 124.04127205 -0.00136952 3.30136952
|
|
||||||
70 0.00700000 -1888.66976974 -1892.63445751 120.28297808 -0.00163441 3.30163441
|
|
||||||
80 0.00800000 -1888.66992867 -1892.83467462 126.35245792 -0.00190946 3.30190946
|
|
||||||
90 0.00900000 -1888.67006868 -1893.11387069 134.81862145 -0.00219458 3.30219458
|
|
||||||
100 0.01000000 -1888.67013621 -1893.25481851 139.09272853 -0.00248973 3.30248973
|
|
||||||
110 0.01100000 -1888.67011201 -1893.15155790 135.96068294 -0.00279489 3.30279489
|
|
||||||
120 0.01200000 -1888.67001496 -1892.84002960 126.51230266 -0.00311004 3.30311004
|
|
||||||
130 0.01300000 -1888.66988997 -1892.47004238 115.29120968 -0.00343519 3.30343519
|
|
||||||
140 0.01400000 -1888.66979230 -1892.23503116 108.16426723 -0.00377038 3.30377038
|
|
||||||
150 0.01500000 -1888.66976478 -1892.28630583 109.72070257 -0.00411562 3.30411562
|
|
||||||
160 0.01600000 -1888.66982054 -1892.66640611 121.25071190 -0.00447099 3.30447099
|
|
||||||
170 0.01700000 -1888.66993790 -1893.28862637 140.12442721 -0.00483654 3.30483654
|
|
||||||
180 0.01800000 -1888.67007017 -1893.97029258 160.80119589 -0.00521235 3.30521235
|
|
||||||
190 0.01900000 -1888.67016712 -1894.50458787 177.00801243 -0.00559851 3.30559851
|
|
||||||
200 0.02000000 -1888.67019459 -1894.73890106 184.11590729 -0.00599512 3.30599512
|
|
||||||
210 0.02100000 -1888.67014420 -1894.62906014 180.78501932 -0.00640230 3.30640230
|
|
||||||
220 0.02200000 -1888.67003680 -1894.25249103 169.36370738 -0.00682016 3.30682016
|
|
||||||
230 0.02300000 -1888.66991386 -1893.77601613 154.91186767 -0.00724883 3.30724883
|
|
||||||
240 0.02400000 -1888.66982525 -1893.38995084 143.20188490 -0.00768845 3.30768845
|
|
||||||
250 0.02500000 -1888.66980630 -1893.23138936 138.39193056 -0.00813913 3.30813913
|
|
||||||
260 0.02600000 -1888.66986130 -1893.32993923 141.38012476 -0.00860097 3.30860097
|
|
||||||
270 0.02700000 -1888.66996305 -1893.60070606 149.59171763 -0.00907408 3.30907408
|
|
||||||
280 0.02800000 -1888.67006686 -1893.88587226 158.24010433 -0.00955849 3.30955849
|
|
||||||
290 0.02900000 -1888.67012981 -1894.02402669 162.42960292 -0.01005424 3.31005424
|
|
||||||
300 0.03000000 -1888.67012722 -1893.91715234 159.18726627 -0.01056129 3.31056129
|
|
||||||
310 0.03100000 -1888.67005731 -1893.57037242 148.66857852 -0.01107957 3.31107957
|
|
||||||
320 0.03200000 -1888.66994573 -1893.09358619 134.20694883 -0.01160898 3.31160898
|
|
||||||
330 0.03300000 -1888.66983589 -1892.66132663 121.09614207 -0.01214935 3.31214935
|
|
||||||
340 0.03400000 -1888.66977410 -1892.44446345 114.51869676 -0.01270046 3.31270046
|
|
||||||
350 0.03500000 -1888.66978826 -1892.53901235 117.38674604 -0.01326207 3.31326207
|
|
||||||
360 0.03600000 -1888.66987439 -1892.92337288 129.04508371 -0.01383390 3.31383390
|
|
||||||
370 0.03700000 -1888.66999800 -1893.46445570 145.45701555 -0.01441561 3.31441561
|
|
||||||
380 0.03800000 -1888.67010960 -1893.97065516 160.81100020 -0.01500688 3.31500688
|
|
||||||
390 0.03900000 -1888.67016540 -1894.26835818 169.84119247 -0.01560734 3.31560734
|
|
||||||
400 0.04000000 -1888.67014667 -1894.26967975 169.88185546 -0.01621664 3.31621664
|
|
||||||
410 0.04100000 -1888.67006166 -1894.00321069 161.80014280 -0.01683442 3.31683442
|
|
||||||
420 0.04200000 -1888.66994367 -1893.60086324 149.59707418 -0.01746033 3.31746033
|
|
||||||
430 0.04300000 -1888.66984058 -1893.24559841 138.82197275 -0.01809405 3.31809405
|
|
||||||
440 0.04400000 -1888.66979399 -1893.09727874 134.32357877 -0.01873527 3.31873527
|
|
||||||
450 0.04500000 -1888.66982139 -1893.22837442 138.30000378 -0.01938373 3.31938373
|
|
||||||
460 0.04600000 -1888.66990972 -1893.59670383 149.47191354 -0.02003918 3.32003918
|
|
||||||
470 0.04700000 -1888.67002173 -1894.06542598 163.68887743 -0.02070143 3.32070143
|
|
||||||
480 0.04800000 -1888.67011389 -1894.46010842 175.66018439 -0.02137030 3.32137030
|
|
||||||
490 0.04900000 -1888.67015175 -1894.63688098 181.02206322 -0.02204565 3.32204565
|
|
||||||
500 0.05000000 -1888.67012158 -1894.53632221 177.97216882 -0.02272740 3.32272740
|
|
||||||
510 0.05100000 -1888.67003762 -1894.20444731 167.90610436 -0.02341547 3.32341547
|
|
||||||
520 0.05200000 -1888.66993151 -1893.77231066 154.79891353 -0.02410981 3.32410981
|
|
||||||
530 0.05300000 -1888.66984505 -1893.40525927 143.66572038 -0.02481040 3.32481040
|
|
||||||
540 0.05400000 -1888.66981408 -1893.23762083 138.58074854 -0.02551724 3.32551724
|
|
||||||
550 0.05500000 -1888.66985005 -1893.31793594 141.01630317 -0.02623032 3.32623032
|
|
||||||
560 0.05600000 -1888.66993737 -1893.59069013 149.28862751 -0.02694963 3.32694963
|
|
||||||
570 0.05700000 -1888.67003852 -1893.92089571 159.30352588 -0.02767517 3.32767517
|
|
||||||
580 0.05800000 -1888.67011322 -1894.15124753 166.28980524 -0.02840691 3.32840691
|
|
||||||
590 0.05900000 -1888.67013192 -1894.16548041 166.72104345 -0.02914478 3.32914478
|
|
||||||
600 0.06000000 -1888.67008713 -1893.93443318 159.71275856 -0.02988871 3.32988871
|
|
||||||
610 0.06100000 -1888.66999438 -1893.52841656 147.39760646 -0.03063856 3.33063856
|
|
||||||
620 0.06200000 -1888.66988809 -1893.09235021 134.17119963 -0.03139416 3.33139416
|
|
||||||
630 0.06300000 -1888.66980996 -1892.79172016 125.05288240 -0.03215531 3.33215531
|
|
||||||
640 0.06400000 -1888.66979261 -1892.74755390 123.71346730 -0.03292176 3.33292176
|
|
||||||
650 0.06500000 -1888.66984332 -1892.98665459 130.96590324 -0.03369323 3.33369323
|
|
||||||
660 0.06600000 -1888.66994245 -1893.42999868 144.41332389 -0.03446937 3.33446937
|
|
||||||
670 0.06700000 -1888.67005233 -1893.92310681 159.37018806 -0.03524986 3.33524986
|
|
||||||
680 0.06800000 -1888.67013309 -1894.29451581 170.63575808 -0.03603430 3.33603430
|
|
||||||
690 0.06900000 -1888.67015452 -1894.41878117 174.40514192 -0.03682229 3.33682229
|
|
||||||
700 0.07000000 -1888.67010897 -1894.26288036 169.67671530 -0.03761343 3.33761343
|
|
||||||
710 0.07100000 -1888.67001367 -1893.89812904 158.61357114 -0.03840729 3.33840729
|
|
||||||
720 0.07200000 -1888.66990378 -1893.47348746 145.73388454 -0.03920344 3.33920344
|
|
||||||
730 0.07300000 -1888.66982212 -1893.15984839 136.22099960 -0.04000148 3.34000148
|
|
||||||
740 0.07400000 -1888.66980109 -1893.08373746 133.91254029 -0.04080098 3.34080098
|
|
||||||
750 0.07500000 -1888.66984794 -1893.27755511 139.79127024 -0.04160156 3.34160156
|
|
||||||
760 0.07600000 -1888.66994215 -1893.66837365 151.64528967 -0.04240282 3.34240282
|
|
||||||
770 0.07700000 -1888.67004554 -1894.10941206 165.02263027 -0.04320441 3.34320441
|
|
||||||
780 0.07800000 -1888.67011702 -1894.43947545 175.03411436 -0.04400599 3.34400599
|
|
||||||
790 0.07900000 -1888.67013297 -1894.54590471 178.26254255 -0.04480726 3.34480726
|
|
||||||
800 0.08000000 -1888.67008751 -1894.40384142 173.95392406 -0.04560792 3.34560792
|
|
||||||
810 0.08100000 -1888.66999923 -1894.08389003 164.24973321 -0.04640773 3.34640773
|
|
||||||
820 0.08200000 -1888.66990447 -1893.72313979 153.30795965 -0.04720647 3.34720647
|
|
||||||
830 0.08300000 -1888.66984367 -1893.46839190 145.58111626 -0.04800393 3.34800393
|
|
||||||
840 0.08400000 -1888.66984156 -1893.41412536 143.93481093 -0.04879995 3.34879995
|
|
||||||
850 0.08500000 -1888.66989670 -1893.56426154 148.48805553 -0.04959439 3.34959439
|
|
||||||
860 0.08600000 -1888.66998222 -1893.83463719 156.68827294 -0.05038713 3.35038713
|
|
||||||
870 0.08700000 -1888.67006171 -1894.09325045 164.53181920 -0.05117805 3.35117805
|
|
||||||
880 0.08800000 -1888.67010273 -1894.21712661 168.28880100 -0.05196706 3.35196706
|
|
||||||
890 0.08900000 -1888.67008993 -1894.14263950 166.02935656 -0.05275408 3.35275408
|
|
||||||
900 0.09000000 -1888.67002891 -1893.89014571 158.37090587 -0.05353904 3.35353904
|
|
||||||
910 0.09100000 -1888.66994326 -1893.55535709 148.21649469 -0.05432186 3.35432186
|
|
||||||
920 0.09200000 -1888.66986526 -1893.27257949 139.63979178 -0.05510247 3.35510247
|
|
||||||
930 0.09300000 -1888.66982730 -1893.16330891 136.32582949 -0.05588078 3.35588078
|
|
||||||
940 0.09400000 -1888.66984631 -1893.28643285 140.06065785 -0.05665670 3.35665670
|
|
||||||
950 0.09500000 -1888.66991503 -1893.61245342 149.94957268 -0.05743015 3.35743015
|
|
||||||
960 0.09600000 -1888.67000691 -1894.03423922 162.74316516 -0.05820101 3.35820101
|
|
||||||
970 0.09700000 -1888.67008649 -1894.40848025 174.09469037 -0.05896915 3.35896915
|
|
||||||
980 0.09800000 -1888.67012436 -1894.61056767 180.22458605 -0.05973444 3.35973444
|
|
||||||
990 0.09900000 -1888.67010608 -1894.58107659 179.33042338 -0.06049672 3.36049672
|
|
||||||
1000 0.10000000 -1888.67003981 -1894.34773305 172.25312330 -0.06125581 3.36125581
|
|
||||||
Loop time of 1.32192 on 4 procs for 1000 steps with 256 atoms
|
|
||||||
|
|
||||||
Performance: 6.536 ns/day, 3.672 hours/ns, 756.476 timesteps/s
|
|
||||||
98.6% CPU use with 4 MPI tasks x 1 OpenMP threads
|
|
||||||
|
|
||||||
MPI task timing breakdown:
|
|
||||||
Section | min time | avg time | max time |%varavg| %total
|
|
||||||
---------------------------------------------------------------
|
|
||||||
Pair | 1.1157 | 1.172 | 1.2369 | 4.0 | 88.66
|
|
||||||
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
|
||||||
Comm | 0.071678 | 0.13667 | 0.19304 | 11.8 | 10.34
|
|
||||||
Output | 0.0029244 | 0.0031272 | 0.0035112 | 0.4 | 0.24
|
|
||||||
Modify | 0.0016961 | 0.0017477 | 0.0017846 | 0.1 | 0.13
|
|
||||||
Other | | 0.008334 | | | 0.63
|
|
||||||
|
|
||||||
Nlocal: 64 ave 64 max 64 min
|
|
||||||
Histogram: 4 0 0 0 0 0 0 0 0 0
|
|
||||||
Nghost: 1265 ave 1265 max 1265 min
|
|
||||||
Histogram: 4 0 0 0 0 0 0 0 0 0
|
|
||||||
Neighs: 9328 ave 9328 max 9328 min
|
|
||||||
Histogram: 4 0 0 0 0 0 0 0 0 0
|
|
||||||
FullNghs: 23648 ave 23648 max 23648 min
|
|
||||||
Histogram: 4 0 0 0 0 0 0 0 0 0
|
|
||||||
|
|
||||||
Total # of neighbors = 94592
|
|
||||||
Ave neighs/atom = 369.5
|
|
||||||
Neighbor list builds = 0
|
|
||||||
Dangerous builds = 0
|
|
||||||
Total wall time: 0:00:01
|
|
||||||
@ -0,0 +1,210 @@
|
|||||||
|
LAMMPS (30 Apr 2019)
|
||||||
|
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:88)
|
||||||
|
using 1 OpenMP thread(s) per MPI task
|
||||||
|
# Initialization
|
||||||
|
units metal
|
||||||
|
boundary p p p
|
||||||
|
atom_style atomic
|
||||||
|
processors * * 1 # domain decomposition over x and y
|
||||||
|
|
||||||
|
# System and atom definition
|
||||||
|
# we use 2 atom types so that inter- and intra-layer
|
||||||
|
# interactions can be specified separately
|
||||||
|
read_data data.bilayer-graphene # read lammps data file
|
||||||
|
orthogonal box = (0 0 -20) to (17.04 19.6761 40)
|
||||||
|
1 by 1 by 1 MPI processor grid
|
||||||
|
reading atoms ...
|
||||||
|
256 atoms
|
||||||
|
read_data CPU = 0.000291348 secs
|
||||||
|
mass 1 12.0107 # carbon mass (g/mole) | membrane
|
||||||
|
mass 2 12.0107 # carbon mass (g/mole) | adsorbate
|
||||||
|
# Neighbor update settings
|
||||||
|
neighbor 2.0 bin
|
||||||
|
neigh_modify every 1
|
||||||
|
neigh_modify delay 0
|
||||||
|
neigh_modify check yes
|
||||||
|
# Separate atom groups
|
||||||
|
group membrane type 1
|
||||||
|
128 atoms in group membrane
|
||||||
|
group adsorbant type 2
|
||||||
|
128 atoms in group adsorbant
|
||||||
|
|
||||||
|
######################## Potential defition ########################
|
||||||
|
pair_style hybrid/overlay rebo kolmogorov/crespi/z 14.0
|
||||||
|
####################################################################
|
||||||
|
pair_coeff * * rebo CH.rebo C C # chemical
|
||||||
|
Reading potential file CH.rebo with DATE: 2018-7-3
|
||||||
|
pair_coeff 1 2 kolmogorov/crespi/z CC.KC C C # long-range
|
||||||
|
####################################################################
|
||||||
|
|
||||||
|
#### Simulation settings ####
|
||||||
|
timestep 0.0001
|
||||||
|
velocity all create 300.0 12345
|
||||||
|
fix thermostat all nve
|
||||||
|
compute COM1 membrane com
|
||||||
|
compute COM2 adsorbant com
|
||||||
|
############################
|
||||||
|
|
||||||
|
# Output
|
||||||
|
#dump 1 all xyz 100 trajec.xyz
|
||||||
|
#dump_modify 1 format line "%s %12.6f %12.6f %12.6f" element "C" "C"
|
||||||
|
thermo 10
|
||||||
|
thermo_style custom step time etotal pe temp c_COM1[3] c_COM2[3] # spcpu
|
||||||
|
thermo_modify line one format float %14.8f
|
||||||
|
|
||||||
|
###### Run molecular dynamics ######
|
||||||
|
run 1000
|
||||||
|
Neighbor list info ...
|
||||||
|
update every 1 steps, delay 0 steps, check yes
|
||||||
|
max neighbors/atom: 2000, page size: 100000
|
||||||
|
master list distance cutoff = 16
|
||||||
|
ghost atom cutoff = 16
|
||||||
|
binsize = 8, bins = 3 3 8
|
||||||
|
3 neighbor lists, perpetual/occasional/extra = 3 0 0
|
||||||
|
(1) pair rebo, perpetual
|
||||||
|
attributes: full, newton on, ghost
|
||||||
|
pair build: full/bin/ghost
|
||||||
|
stencil: full/ghost/bin/3d
|
||||||
|
bin: standard
|
||||||
|
(2) pair kolmogorov/crespi/z, perpetual, skip from (3)
|
||||||
|
attributes: half, newton on
|
||||||
|
pair build: skip
|
||||||
|
stencil: none
|
||||||
|
bin: none
|
||||||
|
(3) neighbor class addition, perpetual
|
||||||
|
attributes: half, newton on
|
||||||
|
pair build: half/bin/atomonly/newton
|
||||||
|
stencil: half/bin/3d/newton
|
||||||
|
bin: standard
|
||||||
|
Per MPI rank memory allocation (min/avg/max) = 4.998 | 4.998 | 4.998 Mbytes
|
||||||
|
Step Time TotEng PotEng Temp c_COM1[3] c_COM2[3]
|
||||||
|
0 0.00000000 -1888.67041233 -1898.55881343 300.00000000 0.00000000 3.30000000
|
||||||
|
10 0.00100000 -1888.67037240 -1898.21029916 289.42778520 -0.00020126 3.30020126
|
||||||
|
20 0.00200000 -1888.67021561 -1897.22943631 259.67456089 -0.00041357 3.30041357
|
||||||
|
30 0.00300000 -1888.66999327 -1895.86681330 218.34126559 -0.00063673 3.30063673
|
||||||
|
40 0.00400000 -1888.66978373 -1894.47163849 176.02000692 -0.00087055 3.30087055
|
||||||
|
50 0.00500000 -1888.66966087 -1893.37123396 142.63902861 -0.00111486 3.30111486
|
||||||
|
60 0.00600000 -1888.66966151 -1892.75822768 124.04127204 -0.00136952 3.30136952
|
||||||
|
70 0.00700000 -1888.66976993 -1892.63445770 120.28297806 -0.00163441 3.30163441
|
||||||
|
80 0.00800000 -1888.66992887 -1892.83467481 126.35245790 -0.00190946 3.30190946
|
||||||
|
90 0.00900000 -1888.67006887 -1893.11387088 134.81862143 -0.00219458 3.30219458
|
||||||
|
100 0.01000000 -1888.67013641 -1893.25481870 139.09272852 -0.00248973 3.30248973
|
||||||
|
110 0.01100000 -1888.67011221 -1893.15155809 135.96068294 -0.00279489 3.30279489
|
||||||
|
120 0.01200000 -1888.67001516 -1892.84002980 126.51230266 -0.00311004 3.30311004
|
||||||
|
130 0.01300000 -1888.66989017 -1892.47004258 115.29120969 -0.00343519 3.30343519
|
||||||
|
140 0.01400000 -1888.66979250 -1892.23503136 108.16426724 -0.00377038 3.30377038
|
||||||
|
150 0.01500000 -1888.66976498 -1892.28630603 109.72070258 -0.00411562 3.30411562
|
||||||
|
160 0.01600000 -1888.66982073 -1892.66640631 121.25071190 -0.00447099 3.30447099
|
||||||
|
170 0.01700000 -1888.66993810 -1893.28862656 140.12442720 -0.00483654 3.30483654
|
||||||
|
180 0.01800000 -1888.67007037 -1893.97029277 160.80119589 -0.00521235 3.30521235
|
||||||
|
190 0.01900000 -1888.67016732 -1894.50458806 177.00801243 -0.00559851 3.30559851
|
||||||
|
200 0.02000000 -1888.67019479 -1894.73890125 184.11590729 -0.00599512 3.30599512
|
||||||
|
210 0.02100000 -1888.67014440 -1894.62906034 180.78501933 -0.00640230 3.30640230
|
||||||
|
220 0.02200000 -1888.67003699 -1894.25249122 169.36370739 -0.00682016 3.30682016
|
||||||
|
230 0.02300000 -1888.66991405 -1893.77601632 154.91186768 -0.00724883 3.30724883
|
||||||
|
240 0.02400000 -1888.66982545 -1893.38995103 143.20188490 -0.00768845 3.30768845
|
||||||
|
250 0.02500000 -1888.66980650 -1893.23138955 138.39193054 -0.00813913 3.30813913
|
||||||
|
260 0.02600000 -1888.66986149 -1893.32993943 141.38012473 -0.00860097 3.30860097
|
||||||
|
270 0.02700000 -1888.66996324 -1893.60070625 149.59171759 -0.00907408 3.30907408
|
||||||
|
280 0.02800000 -1888.67006705 -1893.88587245 158.24010430 -0.00955849 3.30955849
|
||||||
|
290 0.02900000 -1888.67013001 -1894.02402688 162.42960290 -0.01005424 3.31005424
|
||||||
|
300 0.03000000 -1888.67012741 -1893.91715254 159.18726627 -0.01056129 3.31056129
|
||||||
|
310 0.03100000 -1888.67005750 -1893.57037262 148.66857854 -0.01107957 3.31107957
|
||||||
|
320 0.03200000 -1888.66994592 -1893.09358639 134.20694885 -0.01160898 3.31160898
|
||||||
|
330 0.03300000 -1888.66983608 -1892.66132683 121.09614209 -0.01214935 3.31214935
|
||||||
|
340 0.03400000 -1888.66977429 -1892.44446364 114.51869677 -0.01270046 3.31270046
|
||||||
|
350 0.03500000 -1888.66978845 -1892.53901254 117.38674604 -0.01326207 3.31326207
|
||||||
|
360 0.03600000 -1888.66987459 -1892.92337308 129.04508370 -0.01383390 3.31383390
|
||||||
|
370 0.03700000 -1888.66999819 -1893.46445589 145.45701553 -0.01441561 3.31441561
|
||||||
|
380 0.03800000 -1888.67010979 -1893.97065536 160.81100019 -0.01500688 3.31500688
|
||||||
|
390 0.03900000 -1888.67016559 -1894.26835837 169.84119248 -0.01560734 3.31560734
|
||||||
|
400 0.04000000 -1888.67014686 -1894.26967995 169.88185548 -0.01621664 3.31621664
|
||||||
|
410 0.04100000 -1888.67006186 -1894.00321089 161.80014284 -0.01683442 3.31683442
|
||||||
|
420 0.04200000 -1888.66994386 -1893.60086344 149.59707422 -0.01746033 3.31746033
|
||||||
|
430 0.04300000 -1888.66984078 -1893.24559860 138.82197278 -0.01809405 3.31809405
|
||||||
|
440 0.04400000 -1888.66979419 -1893.09727893 134.32357877 -0.01873527 3.31873527
|
||||||
|
450 0.04500000 -1888.66982159 -1893.22837461 138.30000376 -0.01938373 3.31938373
|
||||||
|
460 0.04600000 -1888.66990991 -1893.59670402 149.47191350 -0.02003918 3.32003918
|
||||||
|
470 0.04700000 -1888.67002193 -1894.06542618 163.68887740 -0.02070143 3.32070143
|
||||||
|
480 0.04800000 -1888.67011408 -1894.46010861 175.66018436 -0.02137030 3.32137030
|
||||||
|
490 0.04900000 -1888.67015195 -1894.63688117 181.02206322 -0.02204565 3.32204565
|
||||||
|
500 0.05000000 -1888.67012178 -1894.53632241 177.97216884 -0.02272740 3.32272740
|
||||||
|
510 0.05100000 -1888.67003782 -1894.20444750 167.90610440 -0.02341547 3.32341547
|
||||||
|
520 0.05200000 -1888.66993171 -1893.77231086 154.79891357 -0.02410981 3.32410981
|
||||||
|
530 0.05300000 -1888.66984524 -1893.40525947 143.66572040 -0.02481040 3.32481040
|
||||||
|
540 0.05400000 -1888.66981428 -1893.23762103 138.58074854 -0.02551724 3.32551724
|
||||||
|
550 0.05500000 -1888.66985024 -1893.31793613 141.01630314 -0.02623032 3.32623032
|
||||||
|
560 0.05600000 -1888.66993756 -1893.59069032 149.28862746 -0.02694963 3.32694963
|
||||||
|
570 0.05700000 -1888.67003871 -1893.92089591 159.30352583 -0.02767517 3.32767517
|
||||||
|
580 0.05800000 -1888.67011342 -1894.15124772 166.28980520 -0.02840691 3.32840691
|
||||||
|
590 0.05900000 -1888.67013211 -1894.16548061 166.72104344 -0.02914478 3.32914478
|
||||||
|
600 0.06000000 -1888.67008732 -1893.93443338 159.71275857 -0.02988871 3.32988871
|
||||||
|
610 0.06100000 -1888.66999458 -1893.52841675 147.39760649 -0.03063856 3.33063856
|
||||||
|
620 0.06200000 -1888.66988829 -1893.09235041 134.17119966 -0.03139416 3.33139416
|
||||||
|
630 0.06300000 -1888.66981016 -1892.79172036 125.05288241 -0.03215531 3.33215531
|
||||||
|
640 0.06400000 -1888.66979281 -1892.74755409 123.71346729 -0.03292176 3.33292176
|
||||||
|
650 0.06500000 -1888.66984352 -1892.98665478 130.96590321 -0.03369323 3.33369323
|
||||||
|
660 0.06600000 -1888.66994264 -1893.42999887 144.41332385 -0.03446937 3.33446937
|
||||||
|
670 0.06700000 -1888.67005253 -1893.92310700 159.37018803 -0.03524986 3.33524986
|
||||||
|
680 0.06800000 -1888.67013328 -1894.29451600 170.63575807 -0.03603430 3.33603430
|
||||||
|
690 0.06900000 -1888.67015472 -1894.41878137 174.40514195 -0.03682229 3.33682229
|
||||||
|
700 0.07000000 -1888.67010916 -1894.26288055 169.67671536 -0.03761343 3.33761343
|
||||||
|
710 0.07100000 -1888.67001386 -1893.89812923 158.61357122 -0.03840729 3.33840729
|
||||||
|
720 0.07200000 -1888.66990397 -1893.47348765 145.73388461 -0.03920344 3.33920344
|
||||||
|
730 0.07300000 -1888.66982231 -1893.15984859 136.22099965 -0.04000148 3.34000148
|
||||||
|
740 0.07400000 -1888.66980129 -1893.08373765 133.91254030 -0.04080098 3.34080098
|
||||||
|
750 0.07500000 -1888.66984814 -1893.27755530 139.79127022 -0.04160156 3.34160156
|
||||||
|
760 0.07600000 -1888.66994235 -1893.66837384 151.64528962 -0.04240282 3.34240282
|
||||||
|
770 0.07700000 -1888.67004573 -1894.10941225 165.02263022 -0.04320441 3.34320441
|
||||||
|
780 0.07800000 -1888.67011722 -1894.43947564 175.03411433 -0.04400599 3.34400599
|
||||||
|
790 0.07900000 -1888.67013317 -1894.54590490 178.26254255 -0.04480726 3.34480726
|
||||||
|
800 0.08000000 -1888.67008771 -1894.40384162 173.95392409 -0.04560792 3.34560792
|
||||||
|
810 0.08100000 -1888.66999942 -1894.08389023 164.24973325 -0.04640773 3.34640773
|
||||||
|
820 0.08200000 -1888.66990467 -1893.72313999 153.30795968 -0.04720647 3.34720647
|
||||||
|
830 0.08300000 -1888.66984387 -1893.46839210 145.58111627 -0.04800393 3.34800393
|
||||||
|
840 0.08400000 -1888.66984175 -1893.41412556 143.93481091 -0.04879995 3.34879995
|
||||||
|
850 0.08500000 -1888.66989690 -1893.56426173 148.48805548 -0.04959439 3.34959439
|
||||||
|
860 0.08600000 -1888.66998242 -1893.83463738 156.68827289 -0.05038713 3.35038713
|
||||||
|
870 0.08700000 -1888.67006191 -1894.09325064 164.53181916 -0.05117805 3.35117805
|
||||||
|
880 0.08800000 -1888.67010292 -1894.21712680 168.28880099 -0.05196706 3.35196706
|
||||||
|
890 0.08900000 -1888.67009013 -1894.14263970 166.02935659 -0.05275408 3.35275408
|
||||||
|
900 0.09000000 -1888.67002911 -1893.89014590 158.37090593 -0.05353904 3.35353904
|
||||||
|
910 0.09100000 -1888.66994346 -1893.55535729 148.21649476 -0.05432186 3.35432186
|
||||||
|
920 0.09200000 -1888.66986545 -1893.27257968 139.63979183 -0.05510247 3.35510247
|
||||||
|
930 0.09300000 -1888.66982750 -1893.16330910 136.32582951 -0.05588078 3.35588078
|
||||||
|
940 0.09400000 -1888.66984650 -1893.28643304 140.06065783 -0.05665670 3.35665670
|
||||||
|
950 0.09500000 -1888.66991522 -1893.61245361 149.94957262 -0.05743015 3.35743015
|
||||||
|
960 0.09600000 -1888.67000710 -1894.03423941 162.74316510 -0.05820101 3.35820101
|
||||||
|
970 0.09700000 -1888.67008668 -1894.40848044 174.09469033 -0.05896915 3.35896915
|
||||||
|
980 0.09800000 -1888.67012456 -1894.61056787 180.22458605 -0.05973444 3.35973444
|
||||||
|
990 0.09900000 -1888.67010627 -1894.58107679 179.33042341 -0.06049672 3.36049672
|
||||||
|
1000 0.10000000 -1888.67004000 -1894.34773324 172.25312335 -0.06125581 3.36125581
|
||||||
|
Loop time of 2.60456 on 1 procs for 1000 steps with 256 atoms
|
||||||
|
|
||||||
|
Performance: 3.317 ns/day, 7.235 hours/ns, 383.942 timesteps/s
|
||||||
|
99.7% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||||
|
|
||||||
|
MPI task timing breakdown:
|
||||||
|
Section | min time | avg time | max time |%varavg| %total
|
||||||
|
---------------------------------------------------------------
|
||||||
|
Pair | 2.5864 | 2.5864 | 2.5864 | 0.0 | 99.30
|
||||||
|
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||||
|
Comm | 0.0079134 | 0.0079134 | 0.0079134 | 0.0 | 0.30
|
||||||
|
Output | 0.0027175 | 0.0027175 | 0.0027175 | 0.0 | 0.10
|
||||||
|
Modify | 0.00419 | 0.00419 | 0.00419 | 0.0 | 0.16
|
||||||
|
Other | | 0.00331 | | | 0.13
|
||||||
|
|
||||||
|
Nlocal: 256 ave 256 max 256 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
Nghost: 1721 ave 1721 max 1721 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
Neighs: 37312 ave 37312 max 37312 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
FullNghs: 94592 ave 94592 max 94592 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
|
||||||
|
Total # of neighbors = 94592
|
||||||
|
Ave neighs/atom = 369.5
|
||||||
|
Neighbor list builds = 0
|
||||||
|
Dangerous builds = 0
|
||||||
|
Total wall time: 0:00:02
|
||||||
@ -0,0 +1,210 @@
|
|||||||
|
LAMMPS (30 Apr 2019)
|
||||||
|
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:88)
|
||||||
|
using 1 OpenMP thread(s) per MPI task
|
||||||
|
# Initialization
|
||||||
|
units metal
|
||||||
|
boundary p p p
|
||||||
|
atom_style atomic
|
||||||
|
processors * * 1 # domain decomposition over x and y
|
||||||
|
|
||||||
|
# System and atom definition
|
||||||
|
# we use 2 atom types so that inter- and intra-layer
|
||||||
|
# interactions can be specified separately
|
||||||
|
read_data data.bilayer-graphene # read lammps data file
|
||||||
|
orthogonal box = (0 0 -20) to (17.04 19.6761 40)
|
||||||
|
2 by 2 by 1 MPI processor grid
|
||||||
|
reading atoms ...
|
||||||
|
256 atoms
|
||||||
|
read_data CPU = 0.0488505 secs
|
||||||
|
mass 1 12.0107 # carbon mass (g/mole) | membrane
|
||||||
|
mass 2 12.0107 # carbon mass (g/mole) | adsorbate
|
||||||
|
# Neighbor update settings
|
||||||
|
neighbor 2.0 bin
|
||||||
|
neigh_modify every 1
|
||||||
|
neigh_modify delay 0
|
||||||
|
neigh_modify check yes
|
||||||
|
# Separate atom groups
|
||||||
|
group membrane type 1
|
||||||
|
128 atoms in group membrane
|
||||||
|
group adsorbant type 2
|
||||||
|
128 atoms in group adsorbant
|
||||||
|
|
||||||
|
######################## Potential defition ########################
|
||||||
|
pair_style hybrid/overlay rebo kolmogorov/crespi/z 14.0
|
||||||
|
####################################################################
|
||||||
|
pair_coeff * * rebo CH.rebo C C # chemical
|
||||||
|
Reading potential file CH.rebo with DATE: 2018-7-3
|
||||||
|
pair_coeff 1 2 kolmogorov/crespi/z CC.KC C C # long-range
|
||||||
|
####################################################################
|
||||||
|
|
||||||
|
#### Simulation settings ####
|
||||||
|
timestep 0.0001
|
||||||
|
velocity all create 300.0 12345
|
||||||
|
fix thermostat all nve
|
||||||
|
compute COM1 membrane com
|
||||||
|
compute COM2 adsorbant com
|
||||||
|
############################
|
||||||
|
|
||||||
|
# Output
|
||||||
|
#dump 1 all xyz 100 trajec.xyz
|
||||||
|
#dump_modify 1 format line "%s %12.6f %12.6f %12.6f" element "C" "C"
|
||||||
|
thermo 10
|
||||||
|
thermo_style custom step time etotal pe temp c_COM1[3] c_COM2[3] # spcpu
|
||||||
|
thermo_modify line one format float %14.8f
|
||||||
|
|
||||||
|
###### Run molecular dynamics ######
|
||||||
|
run 1000
|
||||||
|
Neighbor list info ...
|
||||||
|
update every 1 steps, delay 0 steps, check yes
|
||||||
|
max neighbors/atom: 2000, page size: 100000
|
||||||
|
master list distance cutoff = 16
|
||||||
|
ghost atom cutoff = 16
|
||||||
|
binsize = 8, bins = 3 3 8
|
||||||
|
3 neighbor lists, perpetual/occasional/extra = 3 0 0
|
||||||
|
(1) pair rebo, perpetual
|
||||||
|
attributes: full, newton on, ghost
|
||||||
|
pair build: full/bin/ghost
|
||||||
|
stencil: full/ghost/bin/3d
|
||||||
|
bin: standard
|
||||||
|
(2) pair kolmogorov/crespi/z, perpetual, skip from (3)
|
||||||
|
attributes: half, newton on
|
||||||
|
pair build: skip
|
||||||
|
stencil: none
|
||||||
|
bin: none
|
||||||
|
(3) neighbor class addition, perpetual
|
||||||
|
attributes: half, newton on
|
||||||
|
pair build: half/bin/atomonly/newton
|
||||||
|
stencil: half/bin/3d/newton
|
||||||
|
bin: standard
|
||||||
|
Per MPI rank memory allocation (min/avg/max) = 4.572 | 4.572 | 4.572 Mbytes
|
||||||
|
Step Time TotEng PotEng Temp c_COM1[3] c_COM2[3]
|
||||||
|
0 0.00000000 -1888.67041233 -1898.55881343 300.00000000 0.00000000 3.30000000
|
||||||
|
10 0.00100000 -1888.67037240 -1898.21029916 289.42778520 -0.00020126 3.30020126
|
||||||
|
20 0.00200000 -1888.67021561 -1897.22943631 259.67456089 -0.00041357 3.30041357
|
||||||
|
30 0.00300000 -1888.66999327 -1895.86681330 218.34126559 -0.00063673 3.30063673
|
||||||
|
40 0.00400000 -1888.66978373 -1894.47163849 176.02000692 -0.00087055 3.30087055
|
||||||
|
50 0.00500000 -1888.66966087 -1893.37123396 142.63902861 -0.00111486 3.30111486
|
||||||
|
60 0.00600000 -1888.66966151 -1892.75822768 124.04127204 -0.00136952 3.30136952
|
||||||
|
70 0.00700000 -1888.66976993 -1892.63445770 120.28297806 -0.00163441 3.30163441
|
||||||
|
80 0.00800000 -1888.66992887 -1892.83467481 126.35245790 -0.00190946 3.30190946
|
||||||
|
90 0.00900000 -1888.67006887 -1893.11387088 134.81862143 -0.00219458 3.30219458
|
||||||
|
100 0.01000000 -1888.67013641 -1893.25481870 139.09272852 -0.00248973 3.30248973
|
||||||
|
110 0.01100000 -1888.67011221 -1893.15155809 135.96068294 -0.00279489 3.30279489
|
||||||
|
120 0.01200000 -1888.67001516 -1892.84002980 126.51230266 -0.00311004 3.30311004
|
||||||
|
130 0.01300000 -1888.66989017 -1892.47004258 115.29120969 -0.00343519 3.30343519
|
||||||
|
140 0.01400000 -1888.66979250 -1892.23503136 108.16426724 -0.00377038 3.30377038
|
||||||
|
150 0.01500000 -1888.66976498 -1892.28630603 109.72070258 -0.00411562 3.30411562
|
||||||
|
160 0.01600000 -1888.66982073 -1892.66640631 121.25071190 -0.00447099 3.30447099
|
||||||
|
170 0.01700000 -1888.66993810 -1893.28862656 140.12442720 -0.00483654 3.30483654
|
||||||
|
180 0.01800000 -1888.67007037 -1893.97029277 160.80119589 -0.00521235 3.30521235
|
||||||
|
190 0.01900000 -1888.67016732 -1894.50458806 177.00801243 -0.00559851 3.30559851
|
||||||
|
200 0.02000000 -1888.67019479 -1894.73890125 184.11590729 -0.00599512 3.30599512
|
||||||
|
210 0.02100000 -1888.67014440 -1894.62906034 180.78501933 -0.00640230 3.30640230
|
||||||
|
220 0.02200000 -1888.67003699 -1894.25249122 169.36370739 -0.00682016 3.30682016
|
||||||
|
230 0.02300000 -1888.66991405 -1893.77601632 154.91186768 -0.00724883 3.30724883
|
||||||
|
240 0.02400000 -1888.66982545 -1893.38995103 143.20188490 -0.00768845 3.30768845
|
||||||
|
250 0.02500000 -1888.66980650 -1893.23138955 138.39193054 -0.00813913 3.30813913
|
||||||
|
260 0.02600000 -1888.66986149 -1893.32993943 141.38012473 -0.00860097 3.30860097
|
||||||
|
270 0.02700000 -1888.66996324 -1893.60070625 149.59171759 -0.00907408 3.30907408
|
||||||
|
280 0.02800000 -1888.67006705 -1893.88587245 158.24010430 -0.00955849 3.30955849
|
||||||
|
290 0.02900000 -1888.67013001 -1894.02402688 162.42960290 -0.01005424 3.31005424
|
||||||
|
300 0.03000000 -1888.67012741 -1893.91715254 159.18726627 -0.01056129 3.31056129
|
||||||
|
310 0.03100000 -1888.67005750 -1893.57037262 148.66857854 -0.01107957 3.31107957
|
||||||
|
320 0.03200000 -1888.66994592 -1893.09358639 134.20694885 -0.01160898 3.31160898
|
||||||
|
330 0.03300000 -1888.66983608 -1892.66132683 121.09614209 -0.01214935 3.31214935
|
||||||
|
340 0.03400000 -1888.66977429 -1892.44446364 114.51869677 -0.01270046 3.31270046
|
||||||
|
350 0.03500000 -1888.66978845 -1892.53901254 117.38674604 -0.01326207 3.31326207
|
||||||
|
360 0.03600000 -1888.66987459 -1892.92337308 129.04508370 -0.01383390 3.31383390
|
||||||
|
370 0.03700000 -1888.66999819 -1893.46445589 145.45701553 -0.01441561 3.31441561
|
||||||
|
380 0.03800000 -1888.67010979 -1893.97065536 160.81100019 -0.01500688 3.31500688
|
||||||
|
390 0.03900000 -1888.67016559 -1894.26835837 169.84119248 -0.01560734 3.31560734
|
||||||
|
400 0.04000000 -1888.67014686 -1894.26967995 169.88185548 -0.01621664 3.31621664
|
||||||
|
410 0.04100000 -1888.67006186 -1894.00321089 161.80014284 -0.01683442 3.31683442
|
||||||
|
420 0.04200000 -1888.66994386 -1893.60086344 149.59707422 -0.01746033 3.31746033
|
||||||
|
430 0.04300000 -1888.66984078 -1893.24559860 138.82197278 -0.01809405 3.31809405
|
||||||
|
440 0.04400000 -1888.66979419 -1893.09727893 134.32357877 -0.01873527 3.31873527
|
||||||
|
450 0.04500000 -1888.66982159 -1893.22837461 138.30000376 -0.01938373 3.31938373
|
||||||
|
460 0.04600000 -1888.66990991 -1893.59670402 149.47191350 -0.02003918 3.32003918
|
||||||
|
470 0.04700000 -1888.67002193 -1894.06542618 163.68887740 -0.02070143 3.32070143
|
||||||
|
480 0.04800000 -1888.67011408 -1894.46010861 175.66018436 -0.02137030 3.32137030
|
||||||
|
490 0.04900000 -1888.67015195 -1894.63688117 181.02206322 -0.02204565 3.32204565
|
||||||
|
500 0.05000000 -1888.67012178 -1894.53632241 177.97216884 -0.02272740 3.32272740
|
||||||
|
510 0.05100000 -1888.67003782 -1894.20444750 167.90610440 -0.02341547 3.32341547
|
||||||
|
520 0.05200000 -1888.66993171 -1893.77231086 154.79891357 -0.02410981 3.32410981
|
||||||
|
530 0.05300000 -1888.66984524 -1893.40525947 143.66572040 -0.02481040 3.32481040
|
||||||
|
540 0.05400000 -1888.66981428 -1893.23762103 138.58074854 -0.02551724 3.32551724
|
||||||
|
550 0.05500000 -1888.66985024 -1893.31793613 141.01630314 -0.02623032 3.32623032
|
||||||
|
560 0.05600000 -1888.66993756 -1893.59069032 149.28862746 -0.02694963 3.32694963
|
||||||
|
570 0.05700000 -1888.67003871 -1893.92089591 159.30352583 -0.02767517 3.32767517
|
||||||
|
580 0.05800000 -1888.67011342 -1894.15124772 166.28980520 -0.02840691 3.32840691
|
||||||
|
590 0.05900000 -1888.67013211 -1894.16548061 166.72104344 -0.02914478 3.32914478
|
||||||
|
600 0.06000000 -1888.67008732 -1893.93443338 159.71275857 -0.02988871 3.32988871
|
||||||
|
610 0.06100000 -1888.66999458 -1893.52841675 147.39760649 -0.03063856 3.33063856
|
||||||
|
620 0.06200000 -1888.66988829 -1893.09235041 134.17119966 -0.03139416 3.33139416
|
||||||
|
630 0.06300000 -1888.66981016 -1892.79172036 125.05288241 -0.03215531 3.33215531
|
||||||
|
640 0.06400000 -1888.66979281 -1892.74755409 123.71346729 -0.03292176 3.33292176
|
||||||
|
650 0.06500000 -1888.66984352 -1892.98665478 130.96590321 -0.03369323 3.33369323
|
||||||
|
660 0.06600000 -1888.66994264 -1893.42999887 144.41332385 -0.03446937 3.33446937
|
||||||
|
670 0.06700000 -1888.67005253 -1893.92310700 159.37018803 -0.03524986 3.33524986
|
||||||
|
680 0.06800000 -1888.67013328 -1894.29451600 170.63575807 -0.03603430 3.33603430
|
||||||
|
690 0.06900000 -1888.67015472 -1894.41878137 174.40514195 -0.03682229 3.33682229
|
||||||
|
700 0.07000000 -1888.67010916 -1894.26288055 169.67671536 -0.03761343 3.33761343
|
||||||
|
710 0.07100000 -1888.67001386 -1893.89812923 158.61357122 -0.03840729 3.33840729
|
||||||
|
720 0.07200000 -1888.66990397 -1893.47348765 145.73388461 -0.03920344 3.33920344
|
||||||
|
730 0.07300000 -1888.66982231 -1893.15984859 136.22099965 -0.04000148 3.34000148
|
||||||
|
740 0.07400000 -1888.66980129 -1893.08373765 133.91254030 -0.04080098 3.34080098
|
||||||
|
750 0.07500000 -1888.66984814 -1893.27755530 139.79127022 -0.04160156 3.34160156
|
||||||
|
760 0.07600000 -1888.66994235 -1893.66837384 151.64528962 -0.04240282 3.34240282
|
||||||
|
770 0.07700000 -1888.67004573 -1894.10941225 165.02263022 -0.04320441 3.34320441
|
||||||
|
780 0.07800000 -1888.67011722 -1894.43947564 175.03411433 -0.04400599 3.34400599
|
||||||
|
790 0.07900000 -1888.67013317 -1894.54590490 178.26254255 -0.04480726 3.34480726
|
||||||
|
800 0.08000000 -1888.67008771 -1894.40384162 173.95392409 -0.04560792 3.34560792
|
||||||
|
810 0.08100000 -1888.66999942 -1894.08389023 164.24973325 -0.04640773 3.34640773
|
||||||
|
820 0.08200000 -1888.66990467 -1893.72313999 153.30795968 -0.04720647 3.34720647
|
||||||
|
830 0.08300000 -1888.66984387 -1893.46839210 145.58111627 -0.04800393 3.34800393
|
||||||
|
840 0.08400000 -1888.66984175 -1893.41412556 143.93481091 -0.04879995 3.34879995
|
||||||
|
850 0.08500000 -1888.66989690 -1893.56426173 148.48805548 -0.04959439 3.34959439
|
||||||
|
860 0.08600000 -1888.66998242 -1893.83463738 156.68827289 -0.05038713 3.35038713
|
||||||
|
870 0.08700000 -1888.67006191 -1894.09325064 164.53181916 -0.05117805 3.35117805
|
||||||
|
880 0.08800000 -1888.67010292 -1894.21712680 168.28880099 -0.05196706 3.35196706
|
||||||
|
890 0.08900000 -1888.67009013 -1894.14263970 166.02935659 -0.05275408 3.35275408
|
||||||
|
900 0.09000000 -1888.67002911 -1893.89014590 158.37090593 -0.05353904 3.35353904
|
||||||
|
910 0.09100000 -1888.66994346 -1893.55535729 148.21649476 -0.05432186 3.35432186
|
||||||
|
920 0.09200000 -1888.66986545 -1893.27257968 139.63979183 -0.05510247 3.35510247
|
||||||
|
930 0.09300000 -1888.66982750 -1893.16330910 136.32582951 -0.05588078 3.35588078
|
||||||
|
940 0.09400000 -1888.66984650 -1893.28643304 140.06065783 -0.05665670 3.35665670
|
||||||
|
950 0.09500000 -1888.66991522 -1893.61245361 149.94957262 -0.05743015 3.35743015
|
||||||
|
960 0.09600000 -1888.67000710 -1894.03423941 162.74316510 -0.05820101 3.35820101
|
||||||
|
970 0.09700000 -1888.67008668 -1894.40848044 174.09469033 -0.05896915 3.35896915
|
||||||
|
980 0.09800000 -1888.67012456 -1894.61056787 180.22458605 -0.05973444 3.35973444
|
||||||
|
990 0.09900000 -1888.67010627 -1894.58107679 179.33042341 -0.06049672 3.36049672
|
||||||
|
1000 0.10000000 -1888.67004000 -1894.34773324 172.25312335 -0.06125581 3.36125581
|
||||||
|
Loop time of 1.55992 on 4 procs for 1000 steps with 256 atoms
|
||||||
|
|
||||||
|
Performance: 5.539 ns/day, 4.333 hours/ns, 641.059 timesteps/s
|
||||||
|
96.5% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||||
|
|
||||||
|
MPI task timing breakdown:
|
||||||
|
Section | min time | avg time | max time |%varavg| %total
|
||||||
|
---------------------------------------------------------------
|
||||||
|
Pair | 1.3161 | 1.3724 | 1.4128 | 3.0 | 87.98
|
||||||
|
Neigh | 0 | 0 | 0 | 0.0 | 0.00
|
||||||
|
Comm | 0.11734 | 0.16017 | 0.21617 | 8.9 | 10.27
|
||||||
|
Output | 0.0032182 | 0.0051764 | 0.010916 | 4.6 | 0.33
|
||||||
|
Modify | 0.0020187 | 0.0022321 | 0.0026002 | 0.5 | 0.14
|
||||||
|
Other | | 0.0199 | | | 1.28
|
||||||
|
|
||||||
|
Nlocal: 64 ave 64 max 64 min
|
||||||
|
Histogram: 4 0 0 0 0 0 0 0 0 0
|
||||||
|
Nghost: 1265 ave 1265 max 1265 min
|
||||||
|
Histogram: 4 0 0 0 0 0 0 0 0 0
|
||||||
|
Neighs: 9328 ave 9328 max 9328 min
|
||||||
|
Histogram: 4 0 0 0 0 0 0 0 0 0
|
||||||
|
FullNghs: 23648 ave 23648 max 23648 min
|
||||||
|
Histogram: 4 0 0 0 0 0 0 0 0 0
|
||||||
|
|
||||||
|
Total # of neighbors = 94592
|
||||||
|
Ave neighs/atom = 369.5
|
||||||
|
Neighbor list builds = 0
|
||||||
|
Dangerous builds = 0
|
||||||
|
Total wall time: 0:00:01
|
||||||
1
examples/airebo/CH.rebo
Symbolic link
1
examples/airebo/CH.rebo
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../potentials/CH.rebo
|
||||||
22
examples/airebo/in.airebo-0-0
Normal file
22
examples/airebo/in.airebo-0-0
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
# AIREBO polyethelene benchmark
|
||||||
|
|
||||||
|
units metal
|
||||||
|
atom_style atomic
|
||||||
|
|
||||||
|
read_data data.airebo
|
||||||
|
|
||||||
|
replicate 17 16 2
|
||||||
|
|
||||||
|
neighbor 0.5 bin
|
||||||
|
neigh_modify delay 5 every 1
|
||||||
|
|
||||||
|
pair_style airebo 3.0 0 0
|
||||||
|
pair_coeff * * CH.airebo C H
|
||||||
|
|
||||||
|
velocity all create 300.0 761341
|
||||||
|
|
||||||
|
fix 1 all nve
|
||||||
|
timestep 0.0005
|
||||||
|
|
||||||
|
thermo 10
|
||||||
|
run 100
|
||||||
22
examples/airebo/in.rebo2
Normal file
22
examples/airebo/in.rebo2
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
# REBO polyethelene benchmark
|
||||||
|
|
||||||
|
units metal
|
||||||
|
atom_style atomic
|
||||||
|
|
||||||
|
read_data data.airebo
|
||||||
|
|
||||||
|
replicate 17 16 2
|
||||||
|
|
||||||
|
neighbor 0.5 bin
|
||||||
|
neigh_modify delay 5 every 1
|
||||||
|
|
||||||
|
pair_style rebo
|
||||||
|
pair_coeff * * CH.rebo C H
|
||||||
|
|
||||||
|
velocity all create 300.0 761341
|
||||||
|
|
||||||
|
fix 1 all nve
|
||||||
|
timestep 0.0005
|
||||||
|
|
||||||
|
thermo 10
|
||||||
|
run 100
|
||||||
89
examples/airebo/log.30Apr2019.airebo-0-0.g++.1
Normal file
89
examples/airebo/log.30Apr2019.airebo-0-0.g++.1
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
LAMMPS (30 Apr 2019)
|
||||||
|
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:88)
|
||||||
|
using 1 OpenMP thread(s) per MPI task
|
||||||
|
# AIREBO polyethelene benchmark
|
||||||
|
|
||||||
|
units metal
|
||||||
|
atom_style atomic
|
||||||
|
|
||||||
|
read_data data.airebo
|
||||||
|
orthogonal box = (-2.1 -2.1 0) to (2.1 2.1 25.579)
|
||||||
|
1 by 1 by 1 MPI processor grid
|
||||||
|
reading atoms ...
|
||||||
|
60 atoms
|
||||||
|
read_data CPU = 0.000232458 secs
|
||||||
|
|
||||||
|
replicate 17 16 2
|
||||||
|
orthogonal box = (-2.1 -2.1 0) to (69.3 65.1 51.158)
|
||||||
|
1 by 1 by 1 MPI processor grid
|
||||||
|
32640 atoms
|
||||||
|
replicate CPU = 0.00206327 secs
|
||||||
|
|
||||||
|
neighbor 0.5 bin
|
||||||
|
neigh_modify delay 5 every 1
|
||||||
|
|
||||||
|
pair_style airebo 3.0 0 0
|
||||||
|
pair_coeff * * CH.airebo C H
|
||||||
|
Reading potential file CH.airebo with DATE: 2011-10-25
|
||||||
|
|
||||||
|
velocity all create 300.0 761341
|
||||||
|
|
||||||
|
fix 1 all nve
|
||||||
|
timestep 0.0005
|
||||||
|
|
||||||
|
thermo 10
|
||||||
|
run 100
|
||||||
|
Neighbor list info ...
|
||||||
|
update every 1 steps, delay 5 steps, check yes
|
||||||
|
max neighbors/atom: 2000, page size: 100000
|
||||||
|
master list distance cutoff = 6.5
|
||||||
|
ghost atom cutoff = 6.5
|
||||||
|
binsize = 3.25, bins = 22 21 16
|
||||||
|
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||||
|
(1) pair airebo, perpetual
|
||||||
|
attributes: full, newton on, ghost
|
||||||
|
pair build: full/bin/ghost
|
||||||
|
stencil: full/ghost/bin/3d
|
||||||
|
bin: standard
|
||||||
|
Per MPI rank memory allocation (min/avg/max) = 34.21 | 34.21 | 34.21 Mbytes
|
||||||
|
Step Temp E_pair E_mol TotEng Press
|
||||||
|
0 300 -138442.83 0 -137177.16 2463.0755
|
||||||
|
10 179.38448 -137931.29 0 -137174.48 15656.69
|
||||||
|
20 206.89283 -138047.06 0 -137174.19 -24047.407
|
||||||
|
30 150.81289 -137807.48 0 -137171.21 -16524.191
|
||||||
|
40 173.24289 -137902.32 0 -137171.42 -5721.7187
|
||||||
|
50 151.80722 -137812.37 0 -137171.91 3489.8954
|
||||||
|
60 199.06038 -138013.7 0 -137173.88 17887.025
|
||||||
|
70 217.84848 -138093.82 0 -137174.73 -12266.16
|
||||||
|
80 202.34667 -138029.28 0 -137175.59 -7623.6634
|
||||||
|
90 194.92367 -137997.12 0 -137174.75 -32277.173
|
||||||
|
100 185.2078 -137954.64 0 -137173.26 -6888.5104
|
||||||
|
Loop time of 9.70367 on 1 procs for 100 steps with 32640 atoms
|
||||||
|
|
||||||
|
Performance: 0.445 ns/day, 53.909 hours/ns, 10.305 timesteps/s
|
||||||
|
99.5% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||||
|
|
||||||
|
MPI task timing breakdown:
|
||||||
|
Section | min time | avg time | max time |%varavg| %total
|
||||||
|
---------------------------------------------------------------
|
||||||
|
Pair | 7.2508 | 7.2508 | 7.2508 | 0.0 | 74.72
|
||||||
|
Neigh | 2.3573 | 2.3573 | 2.3573 | 0.0 | 24.29
|
||||||
|
Comm | 0.03116 | 0.03116 | 0.03116 | 0.0 | 0.32
|
||||||
|
Output | 0.0014739 | 0.0014739 | 0.0014739 | 0.0 | 0.02
|
||||||
|
Modify | 0.0447 | 0.0447 | 0.0447 | 0.0 | 0.46
|
||||||
|
Other | | 0.01819 | | | 0.19
|
||||||
|
|
||||||
|
Nlocal: 32640 ave 32640 max 32640 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
Nghost: 26460 ave 26460 max 26460 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
Neighs: 0 ave 0 max 0 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
FullNghs: 4.90213e+06 ave 4.90213e+06 max 4.90213e+06 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
|
||||||
|
Total # of neighbors = 4902134
|
||||||
|
Ave neighs/atom = 150.188
|
||||||
|
Neighbor list builds = 9
|
||||||
|
Dangerous builds = 0
|
||||||
|
Total wall time: 0:00:10
|
||||||
89
examples/airebo/log.30Apr2019.airebo-0-0.g++.4
Normal file
89
examples/airebo/log.30Apr2019.airebo-0-0.g++.4
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
LAMMPS (30 Apr 2019)
|
||||||
|
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:88)
|
||||||
|
using 1 OpenMP thread(s) per MPI task
|
||||||
|
# AIREBO polyethelene benchmark
|
||||||
|
|
||||||
|
units metal
|
||||||
|
atom_style atomic
|
||||||
|
|
||||||
|
read_data data.airebo
|
||||||
|
orthogonal box = (-2.1 -2.1 0) to (2.1 2.1 25.579)
|
||||||
|
1 by 1 by 4 MPI processor grid
|
||||||
|
reading atoms ...
|
||||||
|
60 atoms
|
||||||
|
read_data CPU = 0.000363827 secs
|
||||||
|
|
||||||
|
replicate 17 16 2
|
||||||
|
orthogonal box = (-2.1 -2.1 0) to (69.3 65.1 51.158)
|
||||||
|
2 by 2 by 1 MPI processor grid
|
||||||
|
32640 atoms
|
||||||
|
replicate CPU = 0.00244427 secs
|
||||||
|
|
||||||
|
neighbor 0.5 bin
|
||||||
|
neigh_modify delay 5 every 1
|
||||||
|
|
||||||
|
pair_style airebo 3.0 0 0
|
||||||
|
pair_coeff * * CH.airebo C H
|
||||||
|
Reading potential file CH.airebo with DATE: 2011-10-25
|
||||||
|
|
||||||
|
velocity all create 300.0 761341
|
||||||
|
|
||||||
|
fix 1 all nve
|
||||||
|
timestep 0.0005
|
||||||
|
|
||||||
|
thermo 10
|
||||||
|
run 100
|
||||||
|
Neighbor list info ...
|
||||||
|
update every 1 steps, delay 5 steps, check yes
|
||||||
|
max neighbors/atom: 2000, page size: 100000
|
||||||
|
master list distance cutoff = 6.5
|
||||||
|
ghost atom cutoff = 6.5
|
||||||
|
binsize = 3.25, bins = 22 21 16
|
||||||
|
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||||
|
(1) pair airebo, perpetual
|
||||||
|
attributes: full, newton on, ghost
|
||||||
|
pair build: full/bin/ghost
|
||||||
|
stencil: full/ghost/bin/3d
|
||||||
|
bin: standard
|
||||||
|
Per MPI rank memory allocation (min/avg/max) = 11.75 | 11.94 | 12.13 Mbytes
|
||||||
|
Step Temp E_pair E_mol TotEng Press
|
||||||
|
0 300 -138442.83 0 -137177.16 2463.0755
|
||||||
|
10 179.38448 -137931.29 0 -137174.48 15656.69
|
||||||
|
20 206.89283 -138047.06 0 -137174.19 -24047.407
|
||||||
|
30 150.81289 -137807.48 0 -137171.21 -16524.191
|
||||||
|
40 173.24289 -137902.32 0 -137171.42 -5721.7187
|
||||||
|
50 151.80722 -137812.37 0 -137171.91 3489.8954
|
||||||
|
60 199.06038 -138013.7 0 -137173.88 17887.025
|
||||||
|
70 217.84848 -138093.82 0 -137174.73 -12266.16
|
||||||
|
80 202.34667 -138029.28 0 -137175.59 -7623.6634
|
||||||
|
90 194.92367 -137997.12 0 -137174.75 -32277.173
|
||||||
|
100 185.2078 -137954.64 0 -137173.26 -6888.5104
|
||||||
|
Loop time of 6.71962 on 4 procs for 100 steps with 32640 atoms
|
||||||
|
|
||||||
|
Performance: 0.643 ns/day, 37.331 hours/ns, 14.882 timesteps/s
|
||||||
|
96.6% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||||
|
|
||||||
|
MPI task timing breakdown:
|
||||||
|
Section | min time | avg time | max time |%varavg| %total
|
||||||
|
---------------------------------------------------------------
|
||||||
|
Pair | 4.4598 | 4.6375 | 4.7708 | 5.5 | 69.01
|
||||||
|
Neigh | 1.5903 | 1.6452 | 1.7207 | 3.8 | 24.48
|
||||||
|
Comm | 0.16708 | 0.37041 | 0.56709 | 25.1 | 5.51
|
||||||
|
Output | 0.001061 | 0.0059808 | 0.0090635 | 4.3 | 0.09
|
||||||
|
Modify | 0.030086 | 0.03154 | 0.032522 | 0.5 | 0.47
|
||||||
|
Other | | 0.02897 | | | 0.43
|
||||||
|
|
||||||
|
Nlocal: 8160 ave 8163 max 8157 min
|
||||||
|
Histogram: 1 1 0 0 0 0 0 0 1 1
|
||||||
|
Nghost: 11605.8 ave 11615 max 11593 min
|
||||||
|
Histogram: 1 0 0 0 0 0 2 0 0 1
|
||||||
|
Neighs: 0 ave 0 max 0 min
|
||||||
|
Histogram: 4 0 0 0 0 0 0 0 0 0
|
||||||
|
FullNghs: 1.22553e+06 ave 1.22734e+06 max 1.22455e+06 min
|
||||||
|
Histogram: 2 0 0 1 0 0 0 0 0 1
|
||||||
|
|
||||||
|
Total # of neighbors = 4902134
|
||||||
|
Ave neighs/atom = 150.188
|
||||||
|
Neighbor list builds = 9
|
||||||
|
Dangerous builds = 0
|
||||||
|
Total wall time: 0:00:07
|
||||||
@ -1,36 +1,38 @@
|
|||||||
LAMMPS (27 Nov 2018)
|
LAMMPS (30 Apr 2019)
|
||||||
|
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:88)
|
||||||
using 1 OpenMP thread(s) per MPI task
|
using 1 OpenMP thread(s) per MPI task
|
||||||
# AIREBO polyethelene benchmark
|
# AIREBO polyethelene benchmark
|
||||||
|
|
||||||
units metal
|
units metal
|
||||||
atom_style atomic
|
atom_style atomic
|
||||||
|
|
||||||
read_data data.airebo
|
read_data data.airebo
|
||||||
orthogonal box = (-2.1 -2.1 0) to (2.1 2.1 25.579)
|
orthogonal box = (-2.1 -2.1 0) to (2.1 2.1 25.579)
|
||||||
1 by 1 by 1 MPI processor grid
|
1 by 1 by 1 MPI processor grid
|
||||||
reading atoms ...
|
reading atoms ...
|
||||||
60 atoms
|
60 atoms
|
||||||
|
read_data CPU = 0.000225067 secs
|
||||||
|
|
||||||
replicate 17 16 2
|
replicate 17 16 2
|
||||||
orthogonal box = (-2.1 -2.1 0) to (69.3 65.1 51.158)
|
orthogonal box = (-2.1 -2.1 0) to (69.3 65.1 51.158)
|
||||||
1 by 1 by 1 MPI processor grid
|
1 by 1 by 1 MPI processor grid
|
||||||
32640 atoms
|
32640 atoms
|
||||||
Time spent = 0.00141144 secs
|
replicate CPU = 0.00226521 secs
|
||||||
|
|
||||||
neighbor 0.5 bin
|
neighbor 0.5 bin
|
||||||
neigh_modify delay 5 every 1
|
neigh_modify delay 5 every 1
|
||||||
|
|
||||||
pair_style airebo/morse 3.0 1 1
|
pair_style airebo/morse 3.0 1 1
|
||||||
pair_coeff * * ../../potentials/CH.airebo-m C H
|
pair_coeff * * CH.airebo-m C H
|
||||||
Reading potential file ../../potentials/CH.airebo-m with DATE: 2016-03-15
|
Reading potential file CH.airebo-m with DATE: 2016-03-15
|
||||||
|
|
||||||
velocity all create 300.0 761341
|
velocity all create 300.0 761341
|
||||||
|
|
||||||
fix 1 all nve
|
fix 1 all nve
|
||||||
timestep 0.0005
|
timestep 0.0005
|
||||||
|
|
||||||
thermo 10
|
thermo 10
|
||||||
run 100
|
run 100
|
||||||
Neighbor list info ...
|
Neighbor list info ...
|
||||||
update every 1 steps, delay 5 steps, check yes
|
update every 1 steps, delay 5 steps, check yes
|
||||||
max neighbors/atom: 2000, page size: 100000
|
max neighbors/atom: 2000, page size: 100000
|
||||||
@ -45,7 +47,7 @@ Neighbor list info ...
|
|||||||
bin: standard
|
bin: standard
|
||||||
Per MPI rank memory allocation (min/avg/max) = 106.4 | 106.4 | 106.4 Mbytes
|
Per MPI rank memory allocation (min/avg/max) = 106.4 | 106.4 | 106.4 Mbytes
|
||||||
Step Temp E_pair E_mol TotEng Press
|
Step Temp E_pair E_mol TotEng Press
|
||||||
0 300 -139283.82 0 -138018.14 152.25271
|
0 300 -139283.82 0 -138018.14 152.25266
|
||||||
10 166.76148 -138718.75 0 -138015.19 17412.343
|
10 166.76148 -138718.75 0 -138015.19 17412.343
|
||||||
20 207.7293 -138891.79 0 -138015.4 -19395.339
|
20 207.7293 -138891.79 0 -138015.4 -19395.339
|
||||||
30 138.54469 -138596.42 0 -138011.92 -11909.248
|
30 138.54469 -138596.42 0 -138011.92 -11909.248
|
||||||
@ -55,21 +57,21 @@ Step Temp E_pair E_mol TotEng Press
|
|||||||
70 185.72779 -138799.18 0 -138015.61 -10803.744
|
70 185.72779 -138799.18 0 -138015.61 -10803.744
|
||||||
80 164.28396 -138709.5 0 -138016.4 -1524.7353
|
80 164.28396 -138709.5 0 -138016.4 -1524.7353
|
||||||
90 180.26403 -138776.42 0 -138015.9 -27143.467
|
90 180.26403 -138776.42 0 -138015.9 -27143.467
|
||||||
100 164.05694 -138706.58 0 -138014.44 5157.5516
|
100 164.05694 -138706.58 0 -138014.44 5157.5517
|
||||||
Loop time of 64.6107 on 1 procs for 100 steps with 32640 atoms
|
Loop time of 111.537 on 1 procs for 100 steps with 32640 atoms
|
||||||
|
|
||||||
Performance: 0.067 ns/day, 358.948 hours/ns, 1.548 timesteps/s
|
Performance: 0.039 ns/day, 619.650 hours/ns, 0.897 timesteps/s
|
||||||
99.8% CPU use with 1 MPI tasks x 1 OpenMP threads
|
99.8% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||||
|
|
||||||
MPI task timing breakdown:
|
MPI task timing breakdown:
|
||||||
Section | min time | avg time | max time |%varavg| %total
|
Section | min time | avg time | max time |%varavg| %total
|
||||||
---------------------------------------------------------------
|
---------------------------------------------------------------
|
||||||
Pair | 59.916 | 59.916 | 59.916 | 0.0 | 92.73
|
Pair | 103.58 | 103.58 | 103.58 | 0.0 | 92.87
|
||||||
Neigh | 4.6347 | 4.6347 | 4.6347 | 0.0 | 7.17
|
Neigh | 7.8371 | 7.8371 | 7.8371 | 0.0 | 7.03
|
||||||
Comm | 0.025572 | 0.025572 | 0.025572 | 0.0 | 0.04
|
Comm | 0.046259 | 0.046259 | 0.046259 | 0.0 | 0.04
|
||||||
Output | 0.00098896 | 0.00098896 | 0.00098896 | 0.0 | 0.00
|
Output | 0.001497 | 0.001497 | 0.001497 | 0.0 | 0.00
|
||||||
Modify | 0.022327 | 0.022327 | 0.022327 | 0.0 | 0.03
|
Modify | 0.047151 | 0.047151 | 0.047151 | 0.0 | 0.04
|
||||||
Other | | 0.01076 | | | 0.02
|
Other | | 0.02204 | | | 0.02
|
||||||
|
|
||||||
Nlocal: 32640 ave 32640 max 32640 min
|
Nlocal: 32640 ave 32640 max 32640 min
|
||||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
@ -84,4 +86,4 @@ Total # of neighbors = 22210922
|
|||||||
Ave neighs/atom = 680.482
|
Ave neighs/atom = 680.482
|
||||||
Neighbor list builds = 8
|
Neighbor list builds = 8
|
||||||
Dangerous builds = 0
|
Dangerous builds = 0
|
||||||
Total wall time: 0:01:05
|
Total wall time: 0:01:53
|
||||||
@ -1,36 +1,38 @@
|
|||||||
LAMMPS (27 Nov 2018)
|
LAMMPS (30 Apr 2019)
|
||||||
|
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:88)
|
||||||
using 1 OpenMP thread(s) per MPI task
|
using 1 OpenMP thread(s) per MPI task
|
||||||
# AIREBO polyethelene benchmark
|
# AIREBO polyethelene benchmark
|
||||||
|
|
||||||
units metal
|
units metal
|
||||||
atom_style atomic
|
atom_style atomic
|
||||||
|
|
||||||
read_data data.airebo
|
read_data data.airebo
|
||||||
orthogonal box = (-2.1 -2.1 0) to (2.1 2.1 25.579)
|
orthogonal box = (-2.1 -2.1 0) to (2.1 2.1 25.579)
|
||||||
1 by 1 by 4 MPI processor grid
|
1 by 1 by 4 MPI processor grid
|
||||||
reading atoms ...
|
reading atoms ...
|
||||||
60 atoms
|
60 atoms
|
||||||
|
read_data CPU = 0.000880957 secs
|
||||||
|
|
||||||
replicate 17 16 2
|
replicate 17 16 2
|
||||||
orthogonal box = (-2.1 -2.1 0) to (69.3 65.1 51.158)
|
orthogonal box = (-2.1 -2.1 0) to (69.3 65.1 51.158)
|
||||||
2 by 2 by 1 MPI processor grid
|
2 by 2 by 1 MPI processor grid
|
||||||
32640 atoms
|
32640 atoms
|
||||||
Time spent = 0.000637531 secs
|
replicate CPU = 0.00271702 secs
|
||||||
|
|
||||||
neighbor 0.5 bin
|
neighbor 0.5 bin
|
||||||
neigh_modify delay 5 every 1
|
neigh_modify delay 5 every 1
|
||||||
|
|
||||||
pair_style airebo/morse 3.0 1 1
|
pair_style airebo/morse 3.0 1 1
|
||||||
pair_coeff * * ../../potentials/CH.airebo-m C H
|
pair_coeff * * CH.airebo-m C H
|
||||||
Reading potential file ../../potentials/CH.airebo-m with DATE: 2016-03-15
|
Reading potential file CH.airebo-m with DATE: 2016-03-15
|
||||||
|
|
||||||
velocity all create 300.0 761341
|
velocity all create 300.0 761341
|
||||||
|
|
||||||
fix 1 all nve
|
fix 1 all nve
|
||||||
timestep 0.0005
|
timestep 0.0005
|
||||||
|
|
||||||
thermo 10
|
thermo 10
|
||||||
run 100
|
run 100
|
||||||
Neighbor list info ...
|
Neighbor list info ...
|
||||||
update every 1 steps, delay 5 steps, check yes
|
update every 1 steps, delay 5 steps, check yes
|
||||||
max neighbors/atom: 2000, page size: 100000
|
max neighbors/atom: 2000, page size: 100000
|
||||||
@ -45,7 +47,7 @@ Neighbor list info ...
|
|||||||
bin: standard
|
bin: standard
|
||||||
Per MPI rank memory allocation (min/avg/max) = 29.37 | 29.75 | 30.13 Mbytes
|
Per MPI rank memory allocation (min/avg/max) = 29.37 | 29.75 | 30.13 Mbytes
|
||||||
Step Temp E_pair E_mol TotEng Press
|
Step Temp E_pair E_mol TotEng Press
|
||||||
0 300 -139283.82 0 -138018.14 152.25271
|
0 300 -139283.82 0 -138018.14 152.25266
|
||||||
10 166.76148 -138718.75 0 -138015.19 17412.343
|
10 166.76148 -138718.75 0 -138015.19 17412.343
|
||||||
20 207.7293 -138891.79 0 -138015.4 -19395.339
|
20 207.7293 -138891.79 0 -138015.4 -19395.339
|
||||||
30 138.54469 -138596.42 0 -138011.92 -11909.248
|
30 138.54469 -138596.42 0 -138011.92 -11909.248
|
||||||
@ -55,21 +57,21 @@ Step Temp E_pair E_mol TotEng Press
|
|||||||
70 185.72779 -138799.18 0 -138015.61 -10803.744
|
70 185.72779 -138799.18 0 -138015.61 -10803.744
|
||||||
80 164.28396 -138709.5 0 -138016.4 -1524.7353
|
80 164.28396 -138709.5 0 -138016.4 -1524.7353
|
||||||
90 180.26403 -138776.42 0 -138015.9 -27143.467
|
90 180.26403 -138776.42 0 -138015.9 -27143.467
|
||||||
100 164.05694 -138706.58 0 -138014.44 5157.5516
|
100 164.05694 -138706.58 0 -138014.44 5157.5517
|
||||||
Loop time of 18.1922 on 4 procs for 100 steps with 32640 atoms
|
Loop time of 68.9923 on 4 procs for 100 steps with 32640 atoms
|
||||||
|
|
||||||
Performance: 0.237 ns/day, 101.068 hours/ns, 5.497 timesteps/s
|
Performance: 0.063 ns/day, 383.290 hours/ns, 1.449 timesteps/s
|
||||||
98.9% CPU use with 4 MPI tasks x 1 OpenMP threads
|
96.8% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||||
|
|
||||||
MPI task timing breakdown:
|
MPI task timing breakdown:
|
||||||
Section | min time | avg time | max time |%varavg| %total
|
Section | min time | avg time | max time |%varavg| %total
|
||||||
---------------------------------------------------------------
|
---------------------------------------------------------------
|
||||||
Pair | 15.968 | 16.084 | 16.308 | 3.4 | 88.41
|
Pair | 60.09 | 60.276 | 60.515 | 2.1 | 87.37
|
||||||
Neigh | 1.6017 | 1.6334 | 1.7006 | 3.1 | 8.98
|
Neigh | 6.7521 | 6.8996 | 7.0678 | 4.3 | 10.00
|
||||||
Comm | 0.1603 | 0.45122 | 0.59951 | 26.0 | 2.48
|
Comm | 1.5441 | 1.7514 | 2.0838 | 16.9 | 2.54
|
||||||
Output | 0.00042605 | 0.00073195 | 0.0016003 | 0.0 | 0.00
|
Output | 0.0010803 | 0.001972 | 0.0043106 | 3.0 | 0.00
|
||||||
Modify | 0.0092106 | 0.010544 | 0.014411 | 2.2 | 0.06
|
Modify | 0.031365 | 0.032539 | 0.034404 | 0.7 | 0.05
|
||||||
Other | | 0.01193 | | | 0.07
|
Other | | 0.03104 | | | 0.04
|
||||||
|
|
||||||
Nlocal: 8160 ave 8167 max 8153 min
|
Nlocal: 8160 ave 8167 max 8153 min
|
||||||
Histogram: 1 0 1 0 0 0 0 1 0 1
|
Histogram: 1 0 1 0 0 0 0 1 0 1
|
||||||
@ -84,4 +86,4 @@ Total # of neighbors = 22210922
|
|||||||
Ave neighs/atom = 680.482
|
Ave neighs/atom = 680.482
|
||||||
Neighbor list builds = 8
|
Neighbor list builds = 8
|
||||||
Dangerous builds = 0
|
Dangerous builds = 0
|
||||||
Total wall time: 0:00:18
|
Total wall time: 0:01:10
|
||||||
@ -1,36 +1,38 @@
|
|||||||
LAMMPS (27 Nov 2018)
|
LAMMPS (30 Apr 2019)
|
||||||
|
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:88)
|
||||||
using 1 OpenMP thread(s) per MPI task
|
using 1 OpenMP thread(s) per MPI task
|
||||||
# AIREBO polyethelene benchmark
|
# AIREBO polyethelene benchmark
|
||||||
|
|
||||||
units metal
|
units metal
|
||||||
atom_style atomic
|
atom_style atomic
|
||||||
|
|
||||||
read_data data.airebo
|
read_data data.airebo
|
||||||
orthogonal box = (-2.1 -2.1 0) to (2.1 2.1 25.579)
|
orthogonal box = (-2.1 -2.1 0) to (2.1 2.1 25.579)
|
||||||
1 by 1 by 1 MPI processor grid
|
1 by 1 by 1 MPI processor grid
|
||||||
reading atoms ...
|
reading atoms ...
|
||||||
60 atoms
|
60 atoms
|
||||||
|
read_data CPU = 0.000217438 secs
|
||||||
|
|
||||||
replicate 17 16 2
|
replicate 17 16 2
|
||||||
orthogonal box = (-2.1 -2.1 0) to (69.3 65.1 51.158)
|
orthogonal box = (-2.1 -2.1 0) to (69.3 65.1 51.158)
|
||||||
1 by 1 by 1 MPI processor grid
|
1 by 1 by 1 MPI processor grid
|
||||||
32640 atoms
|
32640 atoms
|
||||||
Time spent = 0.00144172 secs
|
replicate CPU = 0.00204968 secs
|
||||||
|
|
||||||
neighbor 0.5 bin
|
neighbor 0.5 bin
|
||||||
neigh_modify delay 5 every 1
|
neigh_modify delay 5 every 1
|
||||||
|
|
||||||
pair_style airebo 3.0 1 1
|
pair_style airebo 3.0 1 1
|
||||||
pair_coeff * * ../../potentials/CH.airebo C H
|
pair_coeff * * CH.airebo C H
|
||||||
Reading potential file ../../potentials/CH.airebo with DATE: 2011-10-25
|
Reading potential file CH.airebo with DATE: 2011-10-25
|
||||||
|
|
||||||
velocity all create 300.0 761341
|
velocity all create 300.0 761341
|
||||||
|
|
||||||
fix 1 all nve
|
fix 1 all nve
|
||||||
timestep 0.0005
|
timestep 0.0005
|
||||||
|
|
||||||
thermo 10
|
thermo 10
|
||||||
run 100
|
run 100
|
||||||
Neighbor list info ...
|
Neighbor list info ...
|
||||||
update every 1 steps, delay 5 steps, check yes
|
update every 1 steps, delay 5 steps, check yes
|
||||||
max neighbors/atom: 2000, page size: 100000
|
max neighbors/atom: 2000, page size: 100000
|
||||||
@ -45,31 +47,31 @@ Neighbor list info ...
|
|||||||
bin: standard
|
bin: standard
|
||||||
Per MPI rank memory allocation (min/avg/max) = 106.4 | 106.4 | 106.4 Mbytes
|
Per MPI rank memory allocation (min/avg/max) = 106.4 | 106.4 | 106.4 Mbytes
|
||||||
Step Temp E_pair E_mol TotEng Press
|
Step Temp E_pair E_mol TotEng Press
|
||||||
0 300 -139300.72 0 -138035.04 7988.6647
|
0 300 -139300.72 0 -138035.04 7988.6646
|
||||||
10 161.34683 -138712.9 0 -138032.19 33228.921
|
10 161.34683 -138712.9 0 -138032.19 33228.921
|
||||||
20 208.59504 -138912.79 0 -138032.74 -3211.8806
|
20 208.59504 -138912.79 0 -138032.74 -3211.8806
|
||||||
30 139.7513 -138618.85 0 -138029.25 10878.143
|
30 139.7513 -138618.85 0 -138029.25 10878.143
|
||||||
40 142.14562 -138629.02 0 -138029.32 14601.302
|
40 142.14562 -138629.02 0 -138029.32 14601.302
|
||||||
50 114.23401 -138510.95 0 -138029 24691.125
|
50 114.23401 -138510.95 0 -138029 24691.124
|
||||||
60 164.92002 -138726 0 -138030.21 35125.541
|
60 164.92002 -138726 0 -138030.21 35125.541
|
||||||
70 162.15256 -138715.9 0 -138031.79 5658.7946
|
70 162.15256 -138715.9 0 -138031.79 5658.7946
|
||||||
80 157.16184 -138695.77 0 -138032.72 19824.698
|
80 157.16184 -138695.77 0 -138032.72 19824.698
|
||||||
90 196.15907 -138860.65 0 -138033.07 -7950.8462
|
90 196.15907 -138860.65 0 -138033.07 -7950.8463
|
||||||
100 178.31875 -138784.89 0 -138032.57 30997.671
|
100 178.31875 -138784.89 0 -138032.57 30997.671
|
||||||
Loop time of 57.9914 on 1 procs for 100 steps with 32640 atoms
|
Loop time of 98.1502 on 1 procs for 100 steps with 32640 atoms
|
||||||
|
|
||||||
Performance: 0.074 ns/day, 322.174 hours/ns, 1.724 timesteps/s
|
Performance: 0.044 ns/day, 545.279 hours/ns, 1.019 timesteps/s
|
||||||
99.9% CPU use with 1 MPI tasks x 1 OpenMP threads
|
99.7% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||||
|
|
||||||
MPI task timing breakdown:
|
MPI task timing breakdown:
|
||||||
Section | min time | avg time | max time |%varavg| %total
|
Section | min time | avg time | max time |%varavg| %total
|
||||||
---------------------------------------------------------------
|
---------------------------------------------------------------
|
||||||
Pair | 53.275 | 53.275 | 53.275 | 0.0 | 91.87
|
Pair | 90.237 | 90.237 | 90.237 | 0.0 | 91.94
|
||||||
Neigh | 4.6548 | 4.6548 | 4.6548 | 0.0 | 8.03
|
Neigh | 7.796 | 7.796 | 7.796 | 0.0 | 7.94
|
||||||
Comm | 0.026622 | 0.026622 | 0.026622 | 0.0 | 0.05
|
Comm | 0.048884 | 0.048884 | 0.048884 | 0.0 | 0.05
|
||||||
Output | 0.00097251 | 0.00097251 | 0.00097251 | 0.0 | 0.00
|
Output | 0.0016053 | 0.0016053 | 0.0016053 | 0.0 | 0.00
|
||||||
Modify | 0.022773 | 0.022773 | 0.022773 | 0.0 | 0.04
|
Modify | 0.045511 | 0.045511 | 0.045511 | 0.0 | 0.05
|
||||||
Other | | 0.01089 | | | 0.02
|
Other | | 0.0217 | | | 0.02
|
||||||
|
|
||||||
Nlocal: 32640 ave 32640 max 32640 min
|
Nlocal: 32640 ave 32640 max 32640 min
|
||||||
Histogram: 1 0 0 0 0 0 0 0 0 0
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
@ -84,4 +86,4 @@ Total # of neighbors = 22217840
|
|||||||
Ave neighs/atom = 680.694
|
Ave neighs/atom = 680.694
|
||||||
Neighbor list builds = 8
|
Neighbor list builds = 8
|
||||||
Dangerous builds = 0
|
Dangerous builds = 0
|
||||||
Total wall time: 0:00:59
|
Total wall time: 0:01:39
|
||||||
@ -1,36 +1,38 @@
|
|||||||
LAMMPS (27 Nov 2018)
|
LAMMPS (30 Apr 2019)
|
||||||
|
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:88)
|
||||||
using 1 OpenMP thread(s) per MPI task
|
using 1 OpenMP thread(s) per MPI task
|
||||||
# AIREBO polyethelene benchmark
|
# AIREBO polyethelene benchmark
|
||||||
|
|
||||||
units metal
|
units metal
|
||||||
atom_style atomic
|
atom_style atomic
|
||||||
|
|
||||||
read_data data.airebo
|
read_data data.airebo
|
||||||
orthogonal box = (-2.1 -2.1 0) to (2.1 2.1 25.579)
|
orthogonal box = (-2.1 -2.1 0) to (2.1 2.1 25.579)
|
||||||
1 by 1 by 4 MPI processor grid
|
1 by 1 by 4 MPI processor grid
|
||||||
reading atoms ...
|
reading atoms ...
|
||||||
60 atoms
|
60 atoms
|
||||||
|
read_data CPU = 0.000266314 secs
|
||||||
|
|
||||||
replicate 17 16 2
|
replicate 17 16 2
|
||||||
orthogonal box = (-2.1 -2.1 0) to (69.3 65.1 51.158)
|
orthogonal box = (-2.1 -2.1 0) to (69.3 65.1 51.158)
|
||||||
2 by 2 by 1 MPI processor grid
|
2 by 2 by 1 MPI processor grid
|
||||||
32640 atoms
|
32640 atoms
|
||||||
Time spent = 0.00262594 secs
|
replicate CPU = 0.00146151 secs
|
||||||
|
|
||||||
neighbor 0.5 bin
|
neighbor 0.5 bin
|
||||||
neigh_modify delay 5 every 1
|
neigh_modify delay 5 every 1
|
||||||
|
|
||||||
pair_style airebo 3.0 1 1
|
pair_style airebo 3.0 1 1
|
||||||
pair_coeff * * ../../potentials/CH.airebo C H
|
pair_coeff * * CH.airebo C H
|
||||||
Reading potential file ../../potentials/CH.airebo with DATE: 2011-10-25
|
Reading potential file CH.airebo with DATE: 2011-10-25
|
||||||
|
|
||||||
velocity all create 300.0 761341
|
velocity all create 300.0 761341
|
||||||
|
|
||||||
fix 1 all nve
|
fix 1 all nve
|
||||||
timestep 0.0005
|
timestep 0.0005
|
||||||
|
|
||||||
thermo 10
|
thermo 10
|
||||||
run 100
|
run 100
|
||||||
Neighbor list info ...
|
Neighbor list info ...
|
||||||
update every 1 steps, delay 5 steps, check yes
|
update every 1 steps, delay 5 steps, check yes
|
||||||
max neighbors/atom: 2000, page size: 100000
|
max neighbors/atom: 2000, page size: 100000
|
||||||
@ -45,31 +47,31 @@ Neighbor list info ...
|
|||||||
bin: standard
|
bin: standard
|
||||||
Per MPI rank memory allocation (min/avg/max) = 29.37 | 29.75 | 30.13 Mbytes
|
Per MPI rank memory allocation (min/avg/max) = 29.37 | 29.75 | 30.13 Mbytes
|
||||||
Step Temp E_pair E_mol TotEng Press
|
Step Temp E_pair E_mol TotEng Press
|
||||||
0 300 -139300.72 0 -138035.04 7988.6647
|
0 300 -139300.72 0 -138035.04 7988.6646
|
||||||
10 161.34683 -138712.9 0 -138032.19 33228.921
|
10 161.34683 -138712.9 0 -138032.19 33228.921
|
||||||
20 208.59504 -138912.79 0 -138032.74 -3211.8806
|
20 208.59504 -138912.79 0 -138032.74 -3211.8806
|
||||||
30 139.7513 -138618.85 0 -138029.25 10878.143
|
30 139.7513 -138618.85 0 -138029.25 10878.143
|
||||||
40 142.14562 -138629.02 0 -138029.32 14601.302
|
40 142.14562 -138629.02 0 -138029.32 14601.302
|
||||||
50 114.23401 -138510.95 0 -138029 24691.125
|
50 114.23401 -138510.95 0 -138029 24691.124
|
||||||
60 164.92002 -138726 0 -138030.21 35125.541
|
60 164.92002 -138726 0 -138030.21 35125.541
|
||||||
70 162.15256 -138715.9 0 -138031.79 5658.7946
|
70 162.15256 -138715.9 0 -138031.79 5658.7946
|
||||||
80 157.16184 -138695.77 0 -138032.72 19824.698
|
80 157.16184 -138695.77 0 -138032.72 19824.698
|
||||||
90 196.15907 -138860.65 0 -138033.07 -7950.8462
|
90 196.15907 -138860.65 0 -138033.07 -7950.8463
|
||||||
100 178.31875 -138784.89 0 -138032.57 30997.671
|
100 178.31875 -138784.89 0 -138032.57 30997.671
|
||||||
Loop time of 16.4395 on 4 procs for 100 steps with 32640 atoms
|
Loop time of 60.4943 on 4 procs for 100 steps with 32640 atoms
|
||||||
|
|
||||||
Performance: 0.263 ns/day, 91.331 hours/ns, 6.083 timesteps/s
|
Performance: 0.071 ns/day, 336.080 hours/ns, 1.653 timesteps/s
|
||||||
98.5% CPU use with 4 MPI tasks x 1 OpenMP threads
|
97.7% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||||
|
|
||||||
MPI task timing breakdown:
|
MPI task timing breakdown:
|
||||||
Section | min time | avg time | max time |%varavg| %total
|
Section | min time | avg time | max time |%varavg| %total
|
||||||
---------------------------------------------------------------
|
---------------------------------------------------------------
|
||||||
Pair | 14.263 | 14.349 | 14.483 | 2.3 | 87.28
|
Pair | 51.737 | 52.46 | 52.86 | 6.2 | 86.72
|
||||||
Neigh | 1.6071 | 1.6283 | 1.6636 | 1.7 | 9.90
|
Neigh | 6.5823 | 6.6605 | 6.726 | 2.0 | 11.01
|
||||||
Comm | 0.26261 | 0.43435 | 0.52323 | 16.1 | 2.64
|
Comm | 0.92426 | 1.3125 | 2.0111 | 37.0 | 2.17
|
||||||
Output | 0.00042105 | 0.0007121 | 0.001538 | 0.0 | 0.00
|
Output | 0.0010669 | 0.0019811 | 0.0043974 | 3.1 | 0.00
|
||||||
Modify | 0.00898 | 0.009112 | 0.0093675 | 0.2 | 0.06
|
Modify | 0.030364 | 0.031523 | 0.032495 | 0.5 | 0.05
|
||||||
Other | | 0.0184 | | | 0.11
|
Other | | 0.028 | | | 0.05
|
||||||
|
|
||||||
Nlocal: 8160 ave 8174 max 8146 min
|
Nlocal: 8160 ave 8174 max 8146 min
|
||||||
Histogram: 1 0 1 0 0 0 0 1 0 1
|
Histogram: 1 0 1 0 0 0 0 1 0 1
|
||||||
@ -84,4 +86,4 @@ Total # of neighbors = 22217840
|
|||||||
Ave neighs/atom = 680.694
|
Ave neighs/atom = 680.694
|
||||||
Neighbor list builds = 8
|
Neighbor list builds = 8
|
||||||
Dangerous builds = 0
|
Dangerous builds = 0
|
||||||
Total wall time: 0:00:16
|
Total wall time: 0:01:01
|
||||||
89
examples/airebo/log.30Apr2019.rebo2.g++.1
Normal file
89
examples/airebo/log.30Apr2019.rebo2.g++.1
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
LAMMPS (30 Apr 2019)
|
||||||
|
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:88)
|
||||||
|
using 1 OpenMP thread(s) per MPI task
|
||||||
|
# REBO polyethelene benchmark
|
||||||
|
|
||||||
|
units metal
|
||||||
|
atom_style atomic
|
||||||
|
|
||||||
|
read_data data.airebo
|
||||||
|
orthogonal box = (-2.1 -2.1 0) to (2.1 2.1 25.579)
|
||||||
|
1 by 1 by 1 MPI processor grid
|
||||||
|
reading atoms ...
|
||||||
|
60 atoms
|
||||||
|
read_data CPU = 0.000190735 secs
|
||||||
|
|
||||||
|
replicate 17 16 2
|
||||||
|
orthogonal box = (-2.1 -2.1 0) to (69.3 65.1 51.158)
|
||||||
|
1 by 1 by 1 MPI processor grid
|
||||||
|
32640 atoms
|
||||||
|
replicate CPU = 0.00197148 secs
|
||||||
|
|
||||||
|
neighbor 0.5 bin
|
||||||
|
neigh_modify delay 5 every 1
|
||||||
|
|
||||||
|
pair_style rebo
|
||||||
|
pair_coeff * * CH.rebo C H
|
||||||
|
Reading potential file CH.rebo with DATE: 2018-7-3
|
||||||
|
|
||||||
|
velocity all create 300.0 761341
|
||||||
|
|
||||||
|
fix 1 all nve
|
||||||
|
timestep 0.0005
|
||||||
|
|
||||||
|
thermo 10
|
||||||
|
run 100
|
||||||
|
Neighbor list info ...
|
||||||
|
update every 1 steps, delay 5 steps, check yes
|
||||||
|
max neighbors/atom: 2000, page size: 100000
|
||||||
|
master list distance cutoff = 6.5
|
||||||
|
ghost atom cutoff = 6.5
|
||||||
|
binsize = 3.25, bins = 22 21 16
|
||||||
|
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||||
|
(1) pair rebo, perpetual
|
||||||
|
attributes: full, newton on, ghost
|
||||||
|
pair build: full/bin/ghost
|
||||||
|
stencil: full/ghost/bin/3d
|
||||||
|
bin: standard
|
||||||
|
Per MPI rank memory allocation (min/avg/max) = 34.21 | 34.21 | 34.21 Mbytes
|
||||||
|
Step Temp E_pair E_mol TotEng Press
|
||||||
|
0 300 -138442.83 0 -137177.16 2463.0748
|
||||||
|
10 179.37985 -137931.27 0 -137174.48 15655.936
|
||||||
|
20 206.87654 -138046.99 0 -137174.19 -24042.627
|
||||||
|
30 150.80122 -137807.43 0 -137171.21 -16524.118
|
||||||
|
40 173.24945 -137902.35 0 -137171.42 -5716.9119
|
||||||
|
50 151.80455 -137812.36 0 -137171.91 3480.4584
|
||||||
|
60 199.08777 -138013.82 0 -137173.88 17881.372
|
||||||
|
70 217.85748 -138093.86 0 -137174.73 -12270.999
|
||||||
|
80 202.37482 -138029.39 0 -137175.59 -7622.7319
|
||||||
|
90 194.90628 -137997.05 0 -137174.75 -32267.471
|
||||||
|
100 185.17818 -137954.51 0 -137173.26 -6901.7499
|
||||||
|
Loop time of 9.44819 on 1 procs for 100 steps with 32640 atoms
|
||||||
|
|
||||||
|
Performance: 0.457 ns/day, 52.490 hours/ns, 10.584 timesteps/s
|
||||||
|
99.7% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||||
|
|
||||||
|
MPI task timing breakdown:
|
||||||
|
Section | min time | avg time | max time |%varavg| %total
|
||||||
|
---------------------------------------------------------------
|
||||||
|
Pair | 7.037 | 7.037 | 7.037 | 0.0 | 74.48
|
||||||
|
Neigh | 2.3182 | 2.3182 | 2.3182 | 0.0 | 24.54
|
||||||
|
Comm | 0.029898 | 0.029898 | 0.029898 | 0.0 | 0.32
|
||||||
|
Output | 0.0014331 | 0.0014331 | 0.0014331 | 0.0 | 0.02
|
||||||
|
Modify | 0.043851 | 0.043851 | 0.043851 | 0.0 | 0.46
|
||||||
|
Other | | 0.01774 | | | 0.19
|
||||||
|
|
||||||
|
Nlocal: 32640 ave 32640 max 32640 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
Nghost: 26460 ave 26460 max 26460 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
Neighs: 0 ave 0 max 0 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
FullNghs: 4.90213e+06 ave 4.90213e+06 max 4.90213e+06 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
|
||||||
|
Total # of neighbors = 4902134
|
||||||
|
Ave neighs/atom = 150.188
|
||||||
|
Neighbor list builds = 9
|
||||||
|
Dangerous builds = 0
|
||||||
|
Total wall time: 0:00:09
|
||||||
89
examples/airebo/log.30Apr2019.rebo2.g++.4
Normal file
89
examples/airebo/log.30Apr2019.rebo2.g++.4
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
LAMMPS (30 Apr 2019)
|
||||||
|
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (src/comm.cpp:88)
|
||||||
|
using 1 OpenMP thread(s) per MPI task
|
||||||
|
# REBO polyethelene benchmark
|
||||||
|
|
||||||
|
units metal
|
||||||
|
atom_style atomic
|
||||||
|
|
||||||
|
read_data data.airebo
|
||||||
|
orthogonal box = (-2.1 -2.1 0) to (2.1 2.1 25.579)
|
||||||
|
1 by 1 by 4 MPI processor grid
|
||||||
|
reading atoms ...
|
||||||
|
60 atoms
|
||||||
|
read_data CPU = 0.000682831 secs
|
||||||
|
|
||||||
|
replicate 17 16 2
|
||||||
|
orthogonal box = (-2.1 -2.1 0) to (69.3 65.1 51.158)
|
||||||
|
2 by 2 by 1 MPI processor grid
|
||||||
|
32640 atoms
|
||||||
|
replicate CPU = 0.00221777 secs
|
||||||
|
|
||||||
|
neighbor 0.5 bin
|
||||||
|
neigh_modify delay 5 every 1
|
||||||
|
|
||||||
|
pair_style rebo
|
||||||
|
pair_coeff * * CH.rebo C H
|
||||||
|
Reading potential file CH.rebo with DATE: 2018-7-3
|
||||||
|
|
||||||
|
velocity all create 300.0 761341
|
||||||
|
|
||||||
|
fix 1 all nve
|
||||||
|
timestep 0.0005
|
||||||
|
|
||||||
|
thermo 10
|
||||||
|
run 100
|
||||||
|
Neighbor list info ...
|
||||||
|
update every 1 steps, delay 5 steps, check yes
|
||||||
|
max neighbors/atom: 2000, page size: 100000
|
||||||
|
master list distance cutoff = 6.5
|
||||||
|
ghost atom cutoff = 6.5
|
||||||
|
binsize = 3.25, bins = 22 21 16
|
||||||
|
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||||
|
(1) pair rebo, perpetual
|
||||||
|
attributes: full, newton on, ghost
|
||||||
|
pair build: full/bin/ghost
|
||||||
|
stencil: full/ghost/bin/3d
|
||||||
|
bin: standard
|
||||||
|
Per MPI rank memory allocation (min/avg/max) = 11.75 | 11.94 | 12.13 Mbytes
|
||||||
|
Step Temp E_pair E_mol TotEng Press
|
||||||
|
0 300 -138442.83 0 -137177.16 2463.0748
|
||||||
|
10 179.37985 -137931.27 0 -137174.48 15655.936
|
||||||
|
20 206.87654 -138046.99 0 -137174.19 -24042.627
|
||||||
|
30 150.80122 -137807.43 0 -137171.21 -16524.118
|
||||||
|
40 173.24945 -137902.35 0 -137171.42 -5716.9119
|
||||||
|
50 151.80455 -137812.36 0 -137171.91 3480.4584
|
||||||
|
60 199.08777 -138013.82 0 -137173.88 17881.372
|
||||||
|
70 217.85748 -138093.86 0 -137174.73 -12270.999
|
||||||
|
80 202.37482 -138029.39 0 -137175.59 -7622.7319
|
||||||
|
90 194.90628 -137997.05 0 -137174.75 -32267.471
|
||||||
|
100 185.17818 -137954.51 0 -137173.26 -6901.7499
|
||||||
|
Loop time of 6.35645 on 4 procs for 100 steps with 32640 atoms
|
||||||
|
|
||||||
|
Performance: 0.680 ns/day, 35.314 hours/ns, 15.732 timesteps/s
|
||||||
|
99.0% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||||
|
|
||||||
|
MPI task timing breakdown:
|
||||||
|
Section | min time | avg time | max time |%varavg| %total
|
||||||
|
---------------------------------------------------------------
|
||||||
|
Pair | 4.4335 | 4.5041 | 4.56 | 2.1 | 70.86
|
||||||
|
Neigh | 1.5332 | 1.5919 | 1.6466 | 3.6 | 25.04
|
||||||
|
Comm | 0.098299 | 0.20854 | 0.26277 | 14.2 | 3.28
|
||||||
|
Output | 0.0011072 | 0.0018047 | 0.0037503 | 2.6 | 0.03
|
||||||
|
Modify | 0.028811 | 0.030358 | 0.031516 | 0.6 | 0.48
|
||||||
|
Other | | 0.01977 | | | 0.31
|
||||||
|
|
||||||
|
Nlocal: 8160 ave 8163 max 8157 min
|
||||||
|
Histogram: 1 1 0 0 0 0 0 0 1 1
|
||||||
|
Nghost: 11605.8 ave 11615 max 11593 min
|
||||||
|
Histogram: 1 0 0 0 0 0 2 0 0 1
|
||||||
|
Neighs: 0 ave 0 max 0 min
|
||||||
|
Histogram: 4 0 0 0 0 0 0 0 0 0
|
||||||
|
FullNghs: 1.22553e+06 ave 1.22735e+06 max 1.22455e+06 min
|
||||||
|
Histogram: 2 0 0 1 0 0 0 0 0 1
|
||||||
|
|
||||||
|
Total # of neighbors = 4902134
|
||||||
|
Ave neighs/atom = 150.188
|
||||||
|
Neighbor list builds = 9
|
||||||
|
Dangerous builds = 0
|
||||||
|
Total wall time: 0:00:06
|
||||||
98
examples/granular/in.pour.drum
Normal file
98
examples/granular/in.pour.drum
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
# pour two types of particles (cohesive and non-cohesive) into cylinder
|
||||||
|
# 'turn' cylinder by changing direction of gravity, then rotate it.
|
||||||
|
# This simulates a rotating drum powder characterization experiment.
|
||||||
|
|
||||||
|
variable name string rotating_drum_two_types
|
||||||
|
|
||||||
|
atom_style sphere
|
||||||
|
units lj
|
||||||
|
|
||||||
|
###############################################
|
||||||
|
# Geometry-related parameters
|
||||||
|
###############################################
|
||||||
|
|
||||||
|
variable boxx equal 30
|
||||||
|
variable boxy equal 30
|
||||||
|
variable boxz equal 50
|
||||||
|
|
||||||
|
variable drum_rad equal ${boxx}*0.5
|
||||||
|
variable drum_height equal 20
|
||||||
|
|
||||||
|
variable xc equal 0.5*${boxx}
|
||||||
|
variable yc equal 0.5*${boxx}
|
||||||
|
variable zc equal 0.5*${boxz}
|
||||||
|
|
||||||
|
###############################################
|
||||||
|
# Particle-related parameters
|
||||||
|
###############################################
|
||||||
|
variable rlo equal 0.25
|
||||||
|
variable rhi equal 0.5
|
||||||
|
variable dlo equal 2.0*${rlo}
|
||||||
|
variable dhi equal 2.0*${rhi}
|
||||||
|
|
||||||
|
variable cyl_rad_inner equal ${drum_rad}-1.1*${rhi}
|
||||||
|
|
||||||
|
variable dens equal 1.0
|
||||||
|
|
||||||
|
variable skin equal 0.4*${rhi}
|
||||||
|
|
||||||
|
#############
|
||||||
|
processors * * 1
|
||||||
|
region boxreg block 0 ${boxx} 0 ${boxy} 0 ${boxz}
|
||||||
|
create_box 2 boxreg
|
||||||
|
change_box all boundary p p f
|
||||||
|
comm_modify vel yes
|
||||||
|
|
||||||
|
variable theta equal 0
|
||||||
|
|
||||||
|
region curved_wall cylinder z ${xc} ${yc} ${drum_rad} 0 ${drum_height} side in rotate v_theta ${xc} ${yc} 0 0 0 1
|
||||||
|
region bottom_wall plane ${xc} ${yc} 0 0 0 1 side in rotate v_theta ${xc} ${yc} 0 0 0 1
|
||||||
|
|
||||||
|
region insreg cylinder z ${xc} ${yc} ${cyl_rad_inner} ${drum_height} ${boxz}
|
||||||
|
|
||||||
|
fix 0 all balance 100 1.0 shift xy 5 1.1
|
||||||
|
fix 1 all nve/sphere
|
||||||
|
fix grav all gravity 10 vector 0 0 -1
|
||||||
|
fix ins1 all pour 2000 1 1234 region insreg diam range ${dlo} ${dhi} dens ${dens} ${dens}
|
||||||
|
fix ins2 all pour 2000 2 1234 region insreg diam range ${dlo} ${dhi} dens ${dens} ${dens}
|
||||||
|
|
||||||
|
comm_modify vel yes
|
||||||
|
|
||||||
|
neighbor ${skin} bin
|
||||||
|
neigh_modify delay 0 every 1 check yes
|
||||||
|
|
||||||
|
pair_style granular
|
||||||
|
pair_coeff 1 * hertz/material 1e5 0.2 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji
|
||||||
|
pair_coeff 2 2 jkr 1e5 0.1 0.3 50 tangential mindlin NULL 1.0 0.5 rolling sds 1e3 1e3 0.1 twisting marshall damping tsuji
|
||||||
|
|
||||||
|
fix 3 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region curved_wall
|
||||||
|
fix 4 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region bottom_wall
|
||||||
|
|
||||||
|
thermo_style custom step atoms ke v_theta
|
||||||
|
thermo_modify lost warn
|
||||||
|
thermo 100
|
||||||
|
|
||||||
|
timestep 0.001
|
||||||
|
|
||||||
|
#dump 1 all custom 100 ${name}.dump id type radius mass x y z
|
||||||
|
|
||||||
|
#For removal later
|
||||||
|
compute 1 all property/atom radius
|
||||||
|
variable zmax atom z+c_1>0.5*${drum_height}
|
||||||
|
group delgroup dynamic all var zmax every 10000
|
||||||
|
|
||||||
|
run 2000
|
||||||
|
|
||||||
|
#Remove any particles that are above z > 0.5*drum_height
|
||||||
|
delete_atoms group delgroup
|
||||||
|
|
||||||
|
#Add top lid
|
||||||
|
region top_wall plane ${xc} ${yc} ${drum_height} 0 0 -1 side in rotate v_theta ${xc} ${yc} 0 0 0 1
|
||||||
|
fix 5 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region top_wall
|
||||||
|
|
||||||
|
# 'Turn' drum by switching the direction of gravity
|
||||||
|
unfix grav
|
||||||
|
fix grav all gravity 10 vector 0 -1 0
|
||||||
|
|
||||||
|
variable theta equal 2*PI*elapsed/20000.0
|
||||||
|
run 3000
|
||||||
67
examples/granular/in.pour.flatwall
Normal file
67
examples/granular/in.pour.flatwall
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
# pour two types of particles (cohesive and non-cohesive) on flat wall
|
||||||
|
|
||||||
|
variable name string pour_two_types
|
||||||
|
|
||||||
|
atom_style sphere
|
||||||
|
units lj
|
||||||
|
|
||||||
|
###############################################
|
||||||
|
# Geometry-related parameters
|
||||||
|
###############################################
|
||||||
|
|
||||||
|
variable boxx equal 20
|
||||||
|
variable boxy equal 20
|
||||||
|
variable boxz equal 30
|
||||||
|
|
||||||
|
variable xc1 equal 0.3*${boxx}
|
||||||
|
variable xc2 equal 0.7*${boxx}
|
||||||
|
variable yc equal 0.5*${boxy}
|
||||||
|
|
||||||
|
###############################################
|
||||||
|
# Particle-related parameters
|
||||||
|
###############################################
|
||||||
|
variable rlo equal 0.25
|
||||||
|
variable rhi equal 0.5
|
||||||
|
variable dlo equal 2.0*${rlo}
|
||||||
|
variable dhi equal 2.0*${rhi}
|
||||||
|
|
||||||
|
variable dens equal 1.0
|
||||||
|
|
||||||
|
variable skin equal 0.3*${rhi}
|
||||||
|
|
||||||
|
#############
|
||||||
|
processors * * 1
|
||||||
|
region boxreg block 0 ${boxx} 0 ${boxy} 0 ${boxz}
|
||||||
|
create_box 2 boxreg
|
||||||
|
change_box all boundary p p f
|
||||||
|
|
||||||
|
comm_modify vel yes
|
||||||
|
|
||||||
|
region insreg1 cylinder z ${xc1} ${yc} 5 15 ${boxz}
|
||||||
|
region insreg2 cylinder z ${xc2} ${yc} 5 15 ${boxz}
|
||||||
|
|
||||||
|
fix 1 all nve/sphere
|
||||||
|
fix grav all gravity 10.0 vector 0 0 -1
|
||||||
|
fix ins1 all pour 1500 1 3123 region insreg1 diam range ${dlo} ${dhi} dens ${dens} ${dens}
|
||||||
|
fix ins2 all pour 1500 2 3123 region insreg2 diam range ${dlo} ${dhi} dens ${dens} ${dens}
|
||||||
|
|
||||||
|
comm_modify vel yes
|
||||||
|
|
||||||
|
neighbor ${skin} bin
|
||||||
|
neigh_modify delay 0 every 1 check yes
|
||||||
|
|
||||||
|
pair_style granular
|
||||||
|
pair_coeff 1 * jkr 1000.0 50.0 0.3 10 tangential mindlin 800.0 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall
|
||||||
|
pair_coeff 2 2 hertz 200.0 20.0 tangential linear_history 300.0 1.0 0.1 rolling sds 200.0 100.0 0.1 twisting marshall
|
||||||
|
|
||||||
|
fix 3 all wall/gran granular hertz/material 1e5 1e3 0.3 tangential mindlin NULL 1.0 0.5 zplane 0 NULL
|
||||||
|
|
||||||
|
thermo_style custom step cpu atoms ke
|
||||||
|
thermo_modify lost warn
|
||||||
|
thermo 100
|
||||||
|
|
||||||
|
timestep 0.001
|
||||||
|
|
||||||
|
#dump 1 all custom 100 ${name}.dump id type radius mass x y z
|
||||||
|
|
||||||
|
run 5000
|
||||||
271
examples/granular/log.29Mar19.pour.drum.g++.1
Normal file
271
examples/granular/log.29Mar19.pour.drum.g++.1
Normal file
@ -0,0 +1,271 @@
|
|||||||
|
LAMMPS (29 Mar 2019)
|
||||||
|
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:88)
|
||||||
|
using 1 OpenMP thread(s) per MPI task
|
||||||
|
# pour two types of particles (cohesive and non-cohesive) into cylinder
|
||||||
|
# 'turn' cylinder by changing direction of gravity, then rotate it.
|
||||||
|
# This simulates a rotating drum powder characterization experiment.
|
||||||
|
|
||||||
|
variable name string rotating_drum_two_types
|
||||||
|
|
||||||
|
atom_style sphere
|
||||||
|
units lj
|
||||||
|
|
||||||
|
###############################################
|
||||||
|
# Geometry-related parameters
|
||||||
|
###############################################
|
||||||
|
|
||||||
|
variable boxx equal 30
|
||||||
|
variable boxy equal 30
|
||||||
|
variable boxz equal 50
|
||||||
|
|
||||||
|
variable drum_rad equal ${boxx}*0.5
|
||||||
|
variable drum_rad equal 30*0.5
|
||||||
|
variable drum_height equal 20
|
||||||
|
|
||||||
|
variable xc equal 0.5*${boxx}
|
||||||
|
variable xc equal 0.5*30
|
||||||
|
variable yc equal 0.5*${boxx}
|
||||||
|
variable yc equal 0.5*30
|
||||||
|
variable zc equal 0.5*${boxz}
|
||||||
|
variable zc equal 0.5*50
|
||||||
|
|
||||||
|
###############################################
|
||||||
|
# Particle-related parameters
|
||||||
|
###############################################
|
||||||
|
variable rlo equal 0.25
|
||||||
|
variable rhi equal 0.5
|
||||||
|
variable dlo equal 2.0*${rlo}
|
||||||
|
variable dlo equal 2.0*0.25
|
||||||
|
variable dhi equal 2.0*${rhi}
|
||||||
|
variable dhi equal 2.0*0.5
|
||||||
|
|
||||||
|
variable cyl_rad_inner equal ${drum_rad}-1.1*${rhi}
|
||||||
|
variable cyl_rad_inner equal 15-1.1*${rhi}
|
||||||
|
variable cyl_rad_inner equal 15-1.1*0.5
|
||||||
|
|
||||||
|
variable dens equal 1.0
|
||||||
|
|
||||||
|
variable skin equal 0.4*${rhi}
|
||||||
|
variable skin equal 0.4*0.5
|
||||||
|
|
||||||
|
#############
|
||||||
|
processors * * 1
|
||||||
|
region boxreg block 0 ${boxx} 0 ${boxy} 0 ${boxz}
|
||||||
|
region boxreg block 0 30 0 ${boxy} 0 ${boxz}
|
||||||
|
region boxreg block 0 30 0 30 0 ${boxz}
|
||||||
|
region boxreg block 0 30 0 30 0 50
|
||||||
|
create_box 2 boxreg
|
||||||
|
Created orthogonal box = (0 0 0) to (30 30 50)
|
||||||
|
1 by 1 by 1 MPI processor grid
|
||||||
|
change_box all boundary p p f
|
||||||
|
comm_modify vel yes
|
||||||
|
|
||||||
|
variable theta equal 0
|
||||||
|
|
||||||
|
region curved_wall cylinder z ${xc} ${yc} ${drum_rad} 0 ${drum_height} side in rotate v_theta ${xc} ${yc} 0 0 0 1
|
||||||
|
region curved_wall cylinder z 15 ${yc} ${drum_rad} 0 ${drum_height} side in rotate v_theta ${xc} ${yc} 0 0 0 1
|
||||||
|
region curved_wall cylinder z 15 15 ${drum_rad} 0 ${drum_height} side in rotate v_theta ${xc} ${yc} 0 0 0 1
|
||||||
|
region curved_wall cylinder z 15 15 15 0 ${drum_height} side in rotate v_theta ${xc} ${yc} 0 0 0 1
|
||||||
|
region curved_wall cylinder z 15 15 15 0 20 side in rotate v_theta ${xc} ${yc} 0 0 0 1
|
||||||
|
region curved_wall cylinder z 15 15 15 0 20 side in rotate v_theta 15 ${yc} 0 0 0 1
|
||||||
|
region curved_wall cylinder z 15 15 15 0 20 side in rotate v_theta 15 15 0 0 0 1
|
||||||
|
region bottom_wall plane ${xc} ${yc} 0 0 0 1 side in rotate v_theta ${xc} ${yc} 0 0 0 1
|
||||||
|
region bottom_wall plane 15 ${yc} 0 0 0 1 side in rotate v_theta ${xc} ${yc} 0 0 0 1
|
||||||
|
region bottom_wall plane 15 15 0 0 0 1 side in rotate v_theta ${xc} ${yc} 0 0 0 1
|
||||||
|
region bottom_wall plane 15 15 0 0 0 1 side in rotate v_theta 15 ${yc} 0 0 0 1
|
||||||
|
region bottom_wall plane 15 15 0 0 0 1 side in rotate v_theta 15 15 0 0 0 1
|
||||||
|
|
||||||
|
region insreg cylinder z ${xc} ${yc} ${cyl_rad_inner} ${drum_height} ${boxz}
|
||||||
|
region insreg cylinder z 15 ${yc} ${cyl_rad_inner} ${drum_height} ${boxz}
|
||||||
|
region insreg cylinder z 15 15 ${cyl_rad_inner} ${drum_height} ${boxz}
|
||||||
|
region insreg cylinder z 15 15 14.45 ${drum_height} ${boxz}
|
||||||
|
region insreg cylinder z 15 15 14.45 20 ${boxz}
|
||||||
|
region insreg cylinder z 15 15 14.45 20 50
|
||||||
|
|
||||||
|
fix 0 all balance 100 1.0 shift xy 5 1.1
|
||||||
|
fix 1 all nve/sphere
|
||||||
|
fix grav all gravity 10 vector 0 0 -1
|
||||||
|
fix ins1 all pour 2000 1 1234 region insreg diam range ${dlo} ${dhi} dens ${dens} ${dens}
|
||||||
|
fix ins1 all pour 2000 1 1234 region insreg diam range 0.5 ${dhi} dens ${dens} ${dens}
|
||||||
|
fix ins1 all pour 2000 1 1234 region insreg diam range 0.5 1 dens ${dens} ${dens}
|
||||||
|
fix ins1 all pour 2000 1 1234 region insreg diam range 0.5 1 dens 1 ${dens}
|
||||||
|
fix ins1 all pour 2000 1 1234 region insreg diam range 0.5 1 dens 1 1
|
||||||
|
Particle insertion: 9396 every 490 steps, 2000 by step 1
|
||||||
|
fix ins2 all pour 2000 2 1234 region insreg diam range ${dlo} ${dhi} dens ${dens} ${dens}
|
||||||
|
fix ins2 all pour 2000 2 1234 region insreg diam range 0.5 ${dhi} dens ${dens} ${dens}
|
||||||
|
fix ins2 all pour 2000 2 1234 region insreg diam range 0.5 1 dens ${dens} ${dens}
|
||||||
|
fix ins2 all pour 2000 2 1234 region insreg diam range 0.5 1 dens 1 ${dens}
|
||||||
|
fix ins2 all pour 2000 2 1234 region insreg diam range 0.5 1 dens 1 1
|
||||||
|
Particle insertion: 9396 every 490 steps, 2000 by step 1
|
||||||
|
|
||||||
|
comm_modify vel yes
|
||||||
|
|
||||||
|
neighbor ${skin} bin
|
||||||
|
neighbor 0.2 bin
|
||||||
|
neigh_modify delay 0 every 1 check yes
|
||||||
|
|
||||||
|
pair_style granular
|
||||||
|
pair_coeff 1 * hertz/material 1e5 0.2 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji
|
||||||
|
pair_coeff 2 2 jkr 1e5 0.1 0.3 50 tangential mindlin NULL 1.0 0.5 rolling sds 1e3 1e3 0.1 twisting marshall damping tsuji
|
||||||
|
|
||||||
|
fix 3 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region curved_wall
|
||||||
|
fix 4 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region bottom_wall
|
||||||
|
|
||||||
|
thermo_style custom step atoms ke v_theta
|
||||||
|
thermo_modify lost warn
|
||||||
|
thermo 100
|
||||||
|
|
||||||
|
timestep 0.001
|
||||||
|
|
||||||
|
dump 1 all custom 100 ${name}.dump id type radius mass x y z
|
||||||
|
dump 1 all custom 100 rotating_drum_two_types.dump id type radius mass x y z
|
||||||
|
|
||||||
|
#For removal later
|
||||||
|
compute 1 all property/atom radius
|
||||||
|
variable zmax atom z+c_1>0.5*${drum_height}
|
||||||
|
variable zmax atom z+c_1>0.5*20
|
||||||
|
group delgroup dynamic all var zmax every 10000
|
||||||
|
dynamic group delgroup defined
|
||||||
|
|
||||||
|
run 2000
|
||||||
|
Neighbor list info ...
|
||||||
|
update every 1 steps, delay 0 steps, check yes
|
||||||
|
max neighbors/atom: 2000, page size: 100000
|
||||||
|
master list distance cutoff = 1.2
|
||||||
|
ghost atom cutoff = 1.2
|
||||||
|
binsize = 0.6, bins = 50 50 84
|
||||||
|
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||||
|
(1) pair granular, perpetual
|
||||||
|
attributes: half, newton on, size, history
|
||||||
|
pair build: half/size/bin/newton
|
||||||
|
stencil: half/bin/3d/newton
|
||||||
|
bin: standard
|
||||||
|
Per MPI rank memory allocation (min/avg/max) = 13.02 | 13.02 | 13.02 Mbytes
|
||||||
|
Step Atoms KinEng v_theta
|
||||||
|
0 0 -0 0
|
||||||
|
100 4000 -0 0
|
||||||
|
200 4000 -0 0
|
||||||
|
300 4000 -0 0
|
||||||
|
400 4000 -0 0
|
||||||
|
500 4000 -0 0
|
||||||
|
600 4000 -0 0
|
||||||
|
700 4000 -0 0
|
||||||
|
800 4000 -0 0
|
||||||
|
900 4000 -0 0
|
||||||
|
1000 4000 -0 0
|
||||||
|
1100 4000 -0 0
|
||||||
|
1200 4000 -0 0
|
||||||
|
1300 4000 -0 0
|
||||||
|
1400 4000 -0 0
|
||||||
|
1500 4000 -0 0
|
||||||
|
1600 4000 -0 0
|
||||||
|
1700 4000 -0 0
|
||||||
|
1800 4000 -0 0
|
||||||
|
1900 4000 -0 0
|
||||||
|
2000 4000 -0 0
|
||||||
|
Loop time of 3.54461 on 1 procs for 2000 steps with 4000 atoms
|
||||||
|
|
||||||
|
Performance: 48750.057 tau/day, 564.237 timesteps/s
|
||||||
|
99.5% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||||
|
|
||||||
|
MPI task timing breakdown:
|
||||||
|
Section | min time | avg time | max time |%varavg| %total
|
||||||
|
---------------------------------------------------------------
|
||||||
|
Pair | 0.61949 | 0.61949 | 0.61949 | 0.0 | 17.48
|
||||||
|
Neigh | 1.2492 | 1.2492 | 1.2492 | 0.0 | 35.24
|
||||||
|
Comm | 0.046404 | 0.046404 | 0.046404 | 0.0 | 1.31
|
||||||
|
Output | 0.15901 | 0.15901 | 0.15901 | 0.0 | 4.49
|
||||||
|
Modify | 1.4165 | 1.4165 | 1.4165 | 0.0 | 39.96
|
||||||
|
Other | | 0.05391 | | | 1.52
|
||||||
|
|
||||||
|
Nlocal: 4000 ave 4000 max 4000 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
Nghost: 166 ave 166 max 166 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
Neighs: 8195 ave 8195 max 8195 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
|
||||||
|
Total # of neighbors = 8195
|
||||||
|
Ave neighs/atom = 2.04875
|
||||||
|
Neighbor list builds = 1004
|
||||||
|
Dangerous builds = 3
|
||||||
|
|
||||||
|
#Remove any particles that are above z > 0.5*drum_height
|
||||||
|
delete_atoms group delgroup
|
||||||
|
Deleted 0 atoms, new total = 4000
|
||||||
|
|
||||||
|
#Add top lid
|
||||||
|
region top_wall plane ${xc} ${yc} ${drum_height} 0 0 -1 side in rotate v_theta ${xc} ${yc} 0 0 0 1
|
||||||
|
region top_wall plane 15 ${yc} ${drum_height} 0 0 -1 side in rotate v_theta ${xc} ${yc} 0 0 0 1
|
||||||
|
region top_wall plane 15 15 ${drum_height} 0 0 -1 side in rotate v_theta ${xc} ${yc} 0 0 0 1
|
||||||
|
region top_wall plane 15 15 20 0 0 -1 side in rotate v_theta ${xc} ${yc} 0 0 0 1
|
||||||
|
region top_wall plane 15 15 20 0 0 -1 side in rotate v_theta 15 ${yc} 0 0 0 1
|
||||||
|
region top_wall plane 15 15 20 0 0 -1 side in rotate v_theta 15 15 0 0 0 1
|
||||||
|
fix 5 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region top_wall
|
||||||
|
|
||||||
|
# 'Turn' drum by switching the direction of gravity
|
||||||
|
unfix grav
|
||||||
|
fix grav all gravity 10 vector 0 -1 0
|
||||||
|
|
||||||
|
variable theta equal 2*PI*elapsed/20000.0
|
||||||
|
run 3000
|
||||||
|
Per MPI rank memory allocation (min/avg/max) = 24.81 | 24.81 | 24.81 Mbytes
|
||||||
|
Step Atoms KinEng v_theta
|
||||||
|
2000 4000 64.333531 0
|
||||||
|
2100 4000 106.69182 0.031415927
|
||||||
|
2200 4000 121.8461 0.062831853
|
||||||
|
2300 4000 88.767952 0.09424778
|
||||||
|
2400 4000 82.850721 0.12566371
|
||||||
|
2500 4000 91.683284 0.15707963
|
||||||
|
2600 4000 31.56344 0.18849556
|
||||||
|
2700 4000 4.5697672 0.21991149
|
||||||
|
2800 4000 3.9879051 0.25132741
|
||||||
|
2900 4000 4.4394235 0.28274334
|
||||||
|
3000 4000 5.1212931 0.31415927
|
||||||
|
3100 4000 5.8608892 0.34557519
|
||||||
|
3200 4000 6.600714 0.37699112
|
||||||
|
3300 4000 7.3497851 0.40840704
|
||||||
|
3400 4000 8.0490988 0.43982297
|
||||||
|
3500 4000 8.6712396 0.4712389
|
||||||
|
3600 4000 9.1328667 0.50265482
|
||||||
|
3700 4000 9.4683561 0.53407075
|
||||||
|
3800 4000 9.5878145 0.56548668
|
||||||
|
3900 4000 9.387745 0.5969026
|
||||||
|
4000 4000 8.9117631 0.62831853
|
||||||
|
4100 4000 8.2344368 0.65973446
|
||||||
|
4200 4000 7.5335088 0.69115038
|
||||||
|
4300 4000 6.8426179 0.72256631
|
||||||
|
4400 4000 6.0567247 0.75398224
|
||||||
|
4500 4000 5.4166132 0.78539816
|
||||||
|
4600 4000 4.6012409 0.81681409
|
||||||
|
4700 4000 3.8314982 0.84823002
|
||||||
|
4800 4000 3.1916415 0.87964594
|
||||||
|
4900 4000 2.7833964 0.91106187
|
||||||
|
5000 4000 2.5051362 0.9424778
|
||||||
|
Loop time of 11.9545 on 1 procs for 3000 steps with 4000 atoms
|
||||||
|
|
||||||
|
Performance: 21682.142 tau/day, 250.951 timesteps/s
|
||||||
|
99.7% CPU use with 1 MPI tasks x 1 OpenMP threads
|
||||||
|
|
||||||
|
MPI task timing breakdown:
|
||||||
|
Section | min time | avg time | max time |%varavg| %total
|
||||||
|
---------------------------------------------------------------
|
||||||
|
Pair | 4.8291 | 4.8291 | 4.8291 | 0.0 | 40.40
|
||||||
|
Neigh | 2.7489 | 2.7489 | 2.7489 | 0.0 | 22.99
|
||||||
|
Comm | 0.071249 | 0.071249 | 0.071249 | 0.0 | 0.60
|
||||||
|
Output | 0.20547 | 0.20547 | 0.20547 | 0.0 | 1.72
|
||||||
|
Modify | 4.0179 | 4.0179 | 4.0179 | 0.0 | 33.61
|
||||||
|
Other | | 0.0819 | | | 0.69
|
||||||
|
|
||||||
|
Nlocal: 4000 ave 4000 max 4000 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
Nghost: 322 ave 322 max 322 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
Neighs: 14849 ave 14849 max 14849 min
|
||||||
|
Histogram: 1 0 0 0 0 0 0 0 0 0
|
||||||
|
|
||||||
|
Total # of neighbors = 14849
|
||||||
|
Ave neighs/atom = 3.71225
|
||||||
|
Neighbor list builds = 1290
|
||||||
|
Dangerous builds = 672
|
||||||
|
Total wall time: 0:00:15
|
||||||
271
examples/granular/log.29Mar19.pour.drum.g++.4
Normal file
271
examples/granular/log.29Mar19.pour.drum.g++.4
Normal file
@ -0,0 +1,271 @@
|
|||||||
|
LAMMPS (29 Mar 2019)
|
||||||
|
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:88)
|
||||||
|
using 1 OpenMP thread(s) per MPI task
|
||||||
|
# pour two types of particles (cohesive and non-cohesive) into cylinder
|
||||||
|
# 'turn' cylinder by changing direction of gravity, then rotate it.
|
||||||
|
# This simulates a rotating drum powder characterization experiment.
|
||||||
|
|
||||||
|
variable name string rotating_drum_two_types
|
||||||
|
|
||||||
|
atom_style sphere
|
||||||
|
units lj
|
||||||
|
|
||||||
|
###############################################
|
||||||
|
# Geometry-related parameters
|
||||||
|
###############################################
|
||||||
|
|
||||||
|
variable boxx equal 30
|
||||||
|
variable boxy equal 30
|
||||||
|
variable boxz equal 50
|
||||||
|
|
||||||
|
variable drum_rad equal ${boxx}*0.5
|
||||||
|
variable drum_rad equal 30*0.5
|
||||||
|
variable drum_height equal 20
|
||||||
|
|
||||||
|
variable xc equal 0.5*${boxx}
|
||||||
|
variable xc equal 0.5*30
|
||||||
|
variable yc equal 0.5*${boxx}
|
||||||
|
variable yc equal 0.5*30
|
||||||
|
variable zc equal 0.5*${boxz}
|
||||||
|
variable zc equal 0.5*50
|
||||||
|
|
||||||
|
###############################################
|
||||||
|
# Particle-related parameters
|
||||||
|
###############################################
|
||||||
|
variable rlo equal 0.25
|
||||||
|
variable rhi equal 0.5
|
||||||
|
variable dlo equal 2.0*${rlo}
|
||||||
|
variable dlo equal 2.0*0.25
|
||||||
|
variable dhi equal 2.0*${rhi}
|
||||||
|
variable dhi equal 2.0*0.5
|
||||||
|
|
||||||
|
variable cyl_rad_inner equal ${drum_rad}-1.1*${rhi}
|
||||||
|
variable cyl_rad_inner equal 15-1.1*${rhi}
|
||||||
|
variable cyl_rad_inner equal 15-1.1*0.5
|
||||||
|
|
||||||
|
variable dens equal 1.0
|
||||||
|
|
||||||
|
variable skin equal 0.4*${rhi}
|
||||||
|
variable skin equal 0.4*0.5
|
||||||
|
|
||||||
|
#############
|
||||||
|
processors * * 1
|
||||||
|
region boxreg block 0 ${boxx} 0 ${boxy} 0 ${boxz}
|
||||||
|
region boxreg block 0 30 0 ${boxy} 0 ${boxz}
|
||||||
|
region boxreg block 0 30 0 30 0 ${boxz}
|
||||||
|
region boxreg block 0 30 0 30 0 50
|
||||||
|
create_box 2 boxreg
|
||||||
|
Created orthogonal box = (0 0 0) to (30 30 50)
|
||||||
|
2 by 2 by 1 MPI processor grid
|
||||||
|
change_box all boundary p p f
|
||||||
|
comm_modify vel yes
|
||||||
|
|
||||||
|
variable theta equal 0
|
||||||
|
|
||||||
|
region curved_wall cylinder z ${xc} ${yc} ${drum_rad} 0 ${drum_height} side in rotate v_theta ${xc} ${yc} 0 0 0 1
|
||||||
|
region curved_wall cylinder z 15 ${yc} ${drum_rad} 0 ${drum_height} side in rotate v_theta ${xc} ${yc} 0 0 0 1
|
||||||
|
region curved_wall cylinder z 15 15 ${drum_rad} 0 ${drum_height} side in rotate v_theta ${xc} ${yc} 0 0 0 1
|
||||||
|
region curved_wall cylinder z 15 15 15 0 ${drum_height} side in rotate v_theta ${xc} ${yc} 0 0 0 1
|
||||||
|
region curved_wall cylinder z 15 15 15 0 20 side in rotate v_theta ${xc} ${yc} 0 0 0 1
|
||||||
|
region curved_wall cylinder z 15 15 15 0 20 side in rotate v_theta 15 ${yc} 0 0 0 1
|
||||||
|
region curved_wall cylinder z 15 15 15 0 20 side in rotate v_theta 15 15 0 0 0 1
|
||||||
|
region bottom_wall plane ${xc} ${yc} 0 0 0 1 side in rotate v_theta ${xc} ${yc} 0 0 0 1
|
||||||
|
region bottom_wall plane 15 ${yc} 0 0 0 1 side in rotate v_theta ${xc} ${yc} 0 0 0 1
|
||||||
|
region bottom_wall plane 15 15 0 0 0 1 side in rotate v_theta ${xc} ${yc} 0 0 0 1
|
||||||
|
region bottom_wall plane 15 15 0 0 0 1 side in rotate v_theta 15 ${yc} 0 0 0 1
|
||||||
|
region bottom_wall plane 15 15 0 0 0 1 side in rotate v_theta 15 15 0 0 0 1
|
||||||
|
|
||||||
|
region insreg cylinder z ${xc} ${yc} ${cyl_rad_inner} ${drum_height} ${boxz}
|
||||||
|
region insreg cylinder z 15 ${yc} ${cyl_rad_inner} ${drum_height} ${boxz}
|
||||||
|
region insreg cylinder z 15 15 ${cyl_rad_inner} ${drum_height} ${boxz}
|
||||||
|
region insreg cylinder z 15 15 14.45 ${drum_height} ${boxz}
|
||||||
|
region insreg cylinder z 15 15 14.45 20 ${boxz}
|
||||||
|
region insreg cylinder z 15 15 14.45 20 50
|
||||||
|
|
||||||
|
fix 0 all balance 100 1.0 shift xy 5 1.1
|
||||||
|
fix 1 all nve/sphere
|
||||||
|
fix grav all gravity 10 vector 0 0 -1
|
||||||
|
fix ins1 all pour 2000 1 1234 region insreg diam range ${dlo} ${dhi} dens ${dens} ${dens}
|
||||||
|
fix ins1 all pour 2000 1 1234 region insreg diam range 0.5 ${dhi} dens ${dens} ${dens}
|
||||||
|
fix ins1 all pour 2000 1 1234 region insreg diam range 0.5 1 dens ${dens} ${dens}
|
||||||
|
fix ins1 all pour 2000 1 1234 region insreg diam range 0.5 1 dens 1 ${dens}
|
||||||
|
fix ins1 all pour 2000 1 1234 region insreg diam range 0.5 1 dens 1 1
|
||||||
|
Particle insertion: 9396 every 490 steps, 2000 by step 1
|
||||||
|
fix ins2 all pour 2000 2 1234 region insreg diam range ${dlo} ${dhi} dens ${dens} ${dens}
|
||||||
|
fix ins2 all pour 2000 2 1234 region insreg diam range 0.5 ${dhi} dens ${dens} ${dens}
|
||||||
|
fix ins2 all pour 2000 2 1234 region insreg diam range 0.5 1 dens ${dens} ${dens}
|
||||||
|
fix ins2 all pour 2000 2 1234 region insreg diam range 0.5 1 dens 1 ${dens}
|
||||||
|
fix ins2 all pour 2000 2 1234 region insreg diam range 0.5 1 dens 1 1
|
||||||
|
Particle insertion: 9396 every 490 steps, 2000 by step 1
|
||||||
|
|
||||||
|
comm_modify vel yes
|
||||||
|
|
||||||
|
neighbor ${skin} bin
|
||||||
|
neighbor 0.2 bin
|
||||||
|
neigh_modify delay 0 every 1 check yes
|
||||||
|
|
||||||
|
pair_style granular
|
||||||
|
pair_coeff 1 * hertz/material 1e5 0.2 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji
|
||||||
|
pair_coeff 2 2 jkr 1e5 0.1 0.3 50 tangential mindlin NULL 1.0 0.5 rolling sds 1e3 1e3 0.1 twisting marshall damping tsuji
|
||||||
|
|
||||||
|
fix 3 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region curved_wall
|
||||||
|
fix 4 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region bottom_wall
|
||||||
|
|
||||||
|
thermo_style custom step atoms ke v_theta
|
||||||
|
thermo_modify lost warn
|
||||||
|
thermo 100
|
||||||
|
|
||||||
|
timestep 0.001
|
||||||
|
|
||||||
|
dump 1 all custom 100 ${name}.dump id type radius mass x y z
|
||||||
|
dump 1 all custom 100 rotating_drum_two_types.dump id type radius mass x y z
|
||||||
|
|
||||||
|
#For removal later
|
||||||
|
compute 1 all property/atom radius
|
||||||
|
variable zmax atom z+c_1>0.5*${drum_height}
|
||||||
|
variable zmax atom z+c_1>0.5*20
|
||||||
|
group delgroup dynamic all var zmax every 10000
|
||||||
|
dynamic group delgroup defined
|
||||||
|
|
||||||
|
run 2000
|
||||||
|
Neighbor list info ...
|
||||||
|
update every 1 steps, delay 0 steps, check yes
|
||||||
|
max neighbors/atom: 2000, page size: 100000
|
||||||
|
master list distance cutoff = 1.2
|
||||||
|
ghost atom cutoff = 1.2
|
||||||
|
binsize = 0.6, bins = 50 50 84
|
||||||
|
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||||
|
(1) pair granular, perpetual
|
||||||
|
attributes: half, newton on, size, history
|
||||||
|
pair build: half/size/bin/newton
|
||||||
|
stencil: half/bin/3d/newton
|
||||||
|
bin: standard
|
||||||
|
Per MPI rank memory allocation (min/avg/max) = 12.25 | 12.25 | 12.25 Mbytes
|
||||||
|
Step Atoms KinEng v_theta
|
||||||
|
0 0 -0 0
|
||||||
|
100 4000 -0 0
|
||||||
|
200 4000 -0 0
|
||||||
|
300 4000 -0 0
|
||||||
|
400 4000 -0 0
|
||||||
|
500 4000 -0 0
|
||||||
|
600 4000 -0 0
|
||||||
|
700 4000 -0 0
|
||||||
|
800 4000 -0 0
|
||||||
|
900 4000 -0 0
|
||||||
|
1000 4000 -0 0
|
||||||
|
1100 4000 -0 0
|
||||||
|
1200 4000 -0 0
|
||||||
|
1300 4000 -0 0
|
||||||
|
1400 4000 -0 0
|
||||||
|
1500 4000 -0 0
|
||||||
|
1600 4000 -0 0
|
||||||
|
1700 4000 -0 0
|
||||||
|
1800 4000 -0 0
|
||||||
|
1900 4000 -0 0
|
||||||
|
2000 4000 -0 0
|
||||||
|
Loop time of 2.0709 on 4 procs for 2000 steps with 4000 atoms
|
||||||
|
|
||||||
|
Performance: 83442.024 tau/day, 965.764 timesteps/s
|
||||||
|
97.7% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||||
|
|
||||||
|
MPI task timing breakdown:
|
||||||
|
Section | min time | avg time | max time |%varavg| %total
|
||||||
|
---------------------------------------------------------------
|
||||||
|
Pair | 0.24679 | 0.26336 | 0.28853 | 3.0 | 12.72
|
||||||
|
Neigh | 0.52279 | 0.5332 | 0.53858 | 0.9 | 25.75
|
||||||
|
Comm | 0.17418 | 0.20253 | 0.23266 | 4.7 | 9.78
|
||||||
|
Output | 0.092897 | 0.093531 | 0.09515 | 0.3 | 4.52
|
||||||
|
Modify | 0.88151 | 0.89571 | 0.90582 | 0.9 | 43.25
|
||||||
|
Other | | 0.08257 | | | 3.99
|
||||||
|
|
||||||
|
Nlocal: 1000 ave 1001 max 999 min
|
||||||
|
Histogram: 2 0 0 0 0 0 0 0 0 2
|
||||||
|
Nghost: 267.75 ave 276 max 262 min
|
||||||
|
Histogram: 1 0 1 0 1 0 0 0 0 1
|
||||||
|
Neighs: 2031.5 ave 2091 max 1958 min
|
||||||
|
Histogram: 1 0 0 0 1 0 0 1 0 1
|
||||||
|
|
||||||
|
Total # of neighbors = 8126
|
||||||
|
Ave neighs/atom = 2.0315
|
||||||
|
Neighbor list builds = 1004
|
||||||
|
Dangerous builds = 3
|
||||||
|
|
||||||
|
#Remove any particles that are above z > 0.5*drum_height
|
||||||
|
delete_atoms group delgroup
|
||||||
|
Deleted 0 atoms, new total = 4000
|
||||||
|
|
||||||
|
#Add top lid
|
||||||
|
region top_wall plane ${xc} ${yc} ${drum_height} 0 0 -1 side in rotate v_theta ${xc} ${yc} 0 0 0 1
|
||||||
|
region top_wall plane 15 ${yc} ${drum_height} 0 0 -1 side in rotate v_theta ${xc} ${yc} 0 0 0 1
|
||||||
|
region top_wall plane 15 15 ${drum_height} 0 0 -1 side in rotate v_theta ${xc} ${yc} 0 0 0 1
|
||||||
|
region top_wall plane 15 15 20 0 0 -1 side in rotate v_theta ${xc} ${yc} 0 0 0 1
|
||||||
|
region top_wall plane 15 15 20 0 0 -1 side in rotate v_theta 15 ${yc} 0 0 0 1
|
||||||
|
region top_wall plane 15 15 20 0 0 -1 side in rotate v_theta 15 15 0 0 0 1
|
||||||
|
fix 5 all wall/gran/region granular hertz/material 1e5 0.1 0.3 tangential mindlin NULL 1.0 0.5 damping tsuji region top_wall
|
||||||
|
|
||||||
|
# 'Turn' drum by switching the direction of gravity
|
||||||
|
unfix grav
|
||||||
|
fix grav all gravity 10 vector 0 -1 0
|
||||||
|
|
||||||
|
variable theta equal 2*PI*elapsed/20000.0
|
||||||
|
run 3000
|
||||||
|
Per MPI rank memory allocation (min/avg/max) = 21.6 | 22.6 | 23.82 Mbytes
|
||||||
|
Step Atoms KinEng v_theta
|
||||||
|
2000 4000 64.255821 0
|
||||||
|
2100 4000 106.47082 0.031415927
|
||||||
|
2200 4000 121.52634 0.062831853
|
||||||
|
2300 4000 87.748818 0.09424778
|
||||||
|
2400 4000 82.712784 0.12566371
|
||||||
|
2500 4000 90.618713 0.15707963
|
||||||
|
2600 4000 30.096031 0.18849556
|
||||||
|
2700 4000 4.0838611 0.21991149
|
||||||
|
2800 4000 3.7485959 0.25132741
|
||||||
|
2900 4000 4.2159774 0.28274334
|
||||||
|
3000 4000 4.8730048 0.31415927
|
||||||
|
3100 4000 5.6109465 0.34557519
|
||||||
|
3200 4000 6.4290528 0.37699112
|
||||||
|
3300 4000 7.2699677 0.40840704
|
||||||
|
3400 4000 8.0895944 0.43982297
|
||||||
|
3500 4000 8.7222781 0.4712389
|
||||||
|
3600 4000 9.133205 0.50265482
|
||||||
|
3700 4000 9.3404584 0.53407075
|
||||||
|
3800 4000 9.3359844 0.56548668
|
||||||
|
3900 4000 9.0916854 0.5969026
|
||||||
|
4000 4000 8.5596424 0.62831853
|
||||||
|
4100 4000 7.9734883 0.65973446
|
||||||
|
4200 4000 7.2154383 0.69115038
|
||||||
|
4300 4000 6.7039232 0.72256631
|
||||||
|
4400 4000 6.1542738 0.75398224
|
||||||
|
4500 4000 5.4049454 0.78539816
|
||||||
|
4600 4000 4.4603192 0.81681409
|
||||||
|
4700 4000 3.6197985 0.84823002
|
||||||
|
4800 4000 2.9895571 0.87964594
|
||||||
|
4900 4000 2.5314553 0.91106187
|
||||||
|
5000 4000 2.2645533 0.9424778
|
||||||
|
Loop time of 6.64209 on 4 procs for 3000 steps with 4000 atoms
|
||||||
|
|
||||||
|
Performance: 39023.861 tau/day, 451.665 timesteps/s
|
||||||
|
96.6% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||||
|
|
||||||
|
MPI task timing breakdown:
|
||||||
|
Section | min time | avg time | max time |%varavg| %total
|
||||||
|
---------------------------------------------------------------
|
||||||
|
Pair | 1.8376 | 2.126 | 2.3131 | 12.6 | 32.01
|
||||||
|
Neigh | 0.97762 | 1.0518 | 1.1337 | 5.4 | 15.84
|
||||||
|
Comm | 0.53699 | 0.84265 | 1.2325 | 27.6 | 12.69
|
||||||
|
Output | 0.13922 | 0.14159 | 0.14388 | 0.4 | 2.13
|
||||||
|
Modify | 1.8815 | 2.1026 | 2.3368 | 11.2 | 31.66
|
||||||
|
Other | | 0.3774 | | | 5.68
|
||||||
|
|
||||||
|
Nlocal: 1000 ave 1256 max 744 min
|
||||||
|
Histogram: 2 0 0 0 0 0 0 0 0 2
|
||||||
|
Nghost: 579.5 ave 789 max 498 min
|
||||||
|
Histogram: 2 1 0 0 0 0 0 0 0 1
|
||||||
|
Neighs: 3696.25 ave 4853 max 2590 min
|
||||||
|
Histogram: 2 0 0 0 0 0 0 0 1 1
|
||||||
|
|
||||||
|
Total # of neighbors = 14785
|
||||||
|
Ave neighs/atom = 3.69625
|
||||||
|
Neighbor list builds = 1230
|
||||||
|
Dangerous builds = 676
|
||||||
|
Total wall time: 0:00:08
|
||||||
134
examples/granular/log.29Mar19.pour.flatwall.g++.1
Normal file
134
examples/granular/log.29Mar19.pour.flatwall.g++.1
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
LAMMPS (29 Mar 2019)
|
||||||
|
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:88)
|
||||||
|
using 1 OpenMP thread(s) per MPI task
|
||||||
|
# pour two types of particles (cohesive and non-cohesive) on flat wall
|
||||||
|
|
||||||
|
variable name string pour_two_types
|
||||||
|
|
||||||
|
atom_style sphere
|
||||||
|
units lj
|
||||||
|
|
||||||
|
###############################################
|
||||||
|
# Geometry-related parameters
|
||||||
|
###############################################
|
||||||
|
|
||||||
|
variable boxx equal 20
|
||||||
|
variable boxy equal 20
|
||||||
|
variable boxz equal 30
|
||||||
|
|
||||||
|
variable xc1 equal 0.3*${boxx}
|
||||||
|
variable xc1 equal 0.3*20
|
||||||
|
variable xc2 equal 0.7*${boxx}
|
||||||
|
variable xc2 equal 0.7*20
|
||||||
|
variable yc equal 0.5*${boxy}
|
||||||
|
variable yc equal 0.5*20
|
||||||
|
|
||||||
|
###############################################
|
||||||
|
# Particle-related parameters
|
||||||
|
###############################################
|
||||||
|
variable rlo equal 0.25
|
||||||
|
variable rhi equal 0.5
|
||||||
|
variable dlo equal 2.0*${rlo}
|
||||||
|
variable dlo equal 2.0*0.25
|
||||||
|
variable dhi equal 2.0*${rhi}
|
||||||
|
variable dhi equal 2.0*0.5
|
||||||
|
|
||||||
|
variable dens equal 1.0
|
||||||
|
|
||||||
|
variable skin equal 0.3*${rhi}
|
||||||
|
variable skin equal 0.3*0.5
|
||||||
|
|
||||||
|
#############
|
||||||
|
processors * * 1
|
||||||
|
region boxreg block 0 ${boxx} 0 ${boxy} 0 ${boxz}
|
||||||
|
region boxreg block 0 20 0 ${boxy} 0 ${boxz}
|
||||||
|
region boxreg block 0 20 0 20 0 ${boxz}
|
||||||
|
region boxreg block 0 20 0 20 0 30
|
||||||
|
create_box 2 boxreg
|
||||||
|
Created orthogonal box = (0 0 0) to (20 20 30)
|
||||||
|
1 by 1 by 1 MPI processor grid
|
||||||
|
change_box all boundary p p f
|
||||||
|
|
||||||
|
comm_modify vel yes
|
||||||
|
|
||||||
|
region insreg1 cylinder z ${xc1} ${yc} 5 15 ${boxz}
|
||||||
|
region insreg1 cylinder z 6 ${yc} 5 15 ${boxz}
|
||||||
|
region insreg1 cylinder z 6 10 5 15 ${boxz}
|
||||||
|
region insreg1 cylinder z 6 10 5 15 30
|
||||||
|
region insreg2 cylinder z ${xc2} ${yc} 5 15 ${boxz}
|
||||||
|
region insreg2 cylinder z 14 ${yc} 5 15 ${boxz}
|
||||||
|
region insreg2 cylinder z 14 10 5 15 ${boxz}
|
||||||
|
region insreg2 cylinder z 14 10 5 15 30
|
||||||
|
|
||||||
|
fix 1 all nve/sphere
|
||||||
|
fix grav all gravity 10.0 vector 0 0 -1
|
||||||
|
fix ins1 all pour 1500 1 3123 region insreg1 diam range ${dlo} ${dhi} dens ${dens} ${dens}
|
||||||
|
fix ins1 all pour 1500 1 3123 region insreg1 diam range 0.5 ${dhi} dens ${dens} ${dens}
|
||||||
|
fix ins1 all pour 1500 1 3123 region insreg1 diam range 0.5 1 dens ${dens} ${dens}
|
||||||
|
fix ins1 all pour 1500 1 3123 region insreg1 diam range 0.5 1 dens 1 ${dens}
|
||||||
|
fix ins1 all pour 1500 1 3123 region insreg1 diam range 0.5 1 dens 1 1
|
||||||
|
Particle insertion: 562 every 346 steps, 1500 by step 693
|
||||||
|
fix ins2 all pour 1500 2 3123 region insreg2 diam range ${dlo} ${dhi} dens ${dens} ${dens}
|
||||||
|
fix ins2 all pour 1500 2 3123 region insreg2 diam range 0.5 ${dhi} dens ${dens} ${dens}
|
||||||
|
fix ins2 all pour 1500 2 3123 region insreg2 diam range 0.5 1 dens ${dens} ${dens}
|
||||||
|
fix ins2 all pour 1500 2 3123 region insreg2 diam range 0.5 1 dens 1 ${dens}
|
||||||
|
fix ins2 all pour 1500 2 3123 region insreg2 diam range 0.5 1 dens 1 1
|
||||||
|
Particle insertion: 562 every 346 steps, 1500 by step 693
|
||||||
|
|
||||||
|
comm_modify vel yes
|
||||||
|
|
||||||
|
neighbor ${skin} bin
|
||||||
|
neighbor 0.15 bin
|
||||||
|
neigh_modify delay 0 every 1 check yes
|
||||||
|
|
||||||
|
pair_style granular
|
||||||
|
pair_coeff 1 * jkr 1000.0 50.0 0.3 10 tangential mindlin 800.0 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall
|
||||||
|
pair_coeff 2 2 hertz 200.0 20.0 tangential linear_history 300.0 1.0 0.1 rolling sds 200.0 100.0 0.1 twisting marshall
|
||||||
|
|
||||||
|
fix 3 all wall/gran granular hertz/material 1e5 1e3 0.3 tangential mindlin NULL 1.0 0.5 zplane 0 NULL
|
||||||
|
|
||||||
|
thermo_style custom step cpu atoms ke
|
||||||
|
thermo_modify lost warn
|
||||||
|
thermo 100
|
||||||
|
|
||||||
|
timestep 0.001
|
||||||
|
|
||||||
|
#dump 1 all custom 100 ${name}.dump id type radius mass x y z
|
||||||
|
|
||||||
|
run 5000
|
||||||
|
Neighbor list info ...
|
||||||
|
update every 1 steps, delay 0 steps, check yes
|
||||||
|
max neighbors/atom: 2000, page size: 100000
|
||||||
|
master list distance cutoff = 1.15
|
||||||
|
ghost atom cutoff = 1.15
|
||||||
|
binsize = 0.575, bins = 35 35 53
|
||||||
|
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||||
|
(1) pair granular, perpetual
|
||||||
|
attributes: half, newton on, size, history
|
||||||
|
pair build: half/size/bin/newton
|
||||||
|
stencil: half/bin/3d/newton
|
||||||
|
bin: standard
|
||||||
|
Per MPI rank memory allocation (min/avg/max) = 12.22 | 12.22 | 12.22 Mbytes
|
||||||
|
Step CPU Atoms KinEng
|
||||||
|
0 0 0 -0
|
||||||
|
100 3.8153191 855 -0
|
||||||
|
200 4.195287 855 -0
|
||||||
|
300 4.5890362 855 -0
|
||||||
|
400 10.636087 1500 -0
|
||||||
|
500 11.306909 1500 -0
|
||||||
|
600 11.968198 1500 -0
|
||||||
|
700 22.631892 2288 -0
|
||||||
|
800 23.711387 2288 -0
|
||||||
|
900 24.754344 2288 -0
|
||||||
|
1000 25.811778 2288 -0
|
||||||
|
1100 35.368869 2845 -0
|
||||||
|
1200 37.149843 2845 -0
|
||||||
|
1300 39.026458 2845 -0
|
||||||
|
1400 41.757583 3000 -0
|
||||||
|
1500 45.155503 3000 -0
|
||||||
|
1600 48.570241 3000 -0
|
||||||
|
1700 52.839322 3000 -0
|
||||||
|
1800 59.772697 3000 -0
|
||||||
|
1900 69.493305 3000 -0
|
||||||
|
2000 114.61886 3000 -0
|
||||||
|
2100 152.89232 3000 -0
|
||||||
191
examples/granular/log.29Mar19.pour.flatwall.g++.4
Normal file
191
examples/granular/log.29Mar19.pour.flatwall.g++.4
Normal file
@ -0,0 +1,191 @@
|
|||||||
|
LAMMPS (29 Mar 2019)
|
||||||
|
OMP_NUM_THREADS environment is not set. Defaulting to 1 thread. (../comm.cpp:88)
|
||||||
|
using 1 OpenMP thread(s) per MPI task
|
||||||
|
# pour two types of particles (cohesive and non-cohesive) on flat wall
|
||||||
|
|
||||||
|
variable name string pour_two_types
|
||||||
|
|
||||||
|
atom_style sphere
|
||||||
|
units lj
|
||||||
|
|
||||||
|
###############################################
|
||||||
|
# Geometry-related parameters
|
||||||
|
###############################################
|
||||||
|
|
||||||
|
variable boxx equal 20
|
||||||
|
variable boxy equal 20
|
||||||
|
variable boxz equal 30
|
||||||
|
|
||||||
|
variable xc1 equal 0.3*${boxx}
|
||||||
|
variable xc1 equal 0.3*20
|
||||||
|
variable xc2 equal 0.7*${boxx}
|
||||||
|
variable xc2 equal 0.7*20
|
||||||
|
variable yc equal 0.5*${boxy}
|
||||||
|
variable yc equal 0.5*20
|
||||||
|
|
||||||
|
###############################################
|
||||||
|
# Particle-related parameters
|
||||||
|
###############################################
|
||||||
|
variable rlo equal 0.25
|
||||||
|
variable rhi equal 0.5
|
||||||
|
variable dlo equal 2.0*${rlo}
|
||||||
|
variable dlo equal 2.0*0.25
|
||||||
|
variable dhi equal 2.0*${rhi}
|
||||||
|
variable dhi equal 2.0*0.5
|
||||||
|
|
||||||
|
variable dens equal 1.0
|
||||||
|
|
||||||
|
variable skin equal 0.3*${rhi}
|
||||||
|
variable skin equal 0.3*0.5
|
||||||
|
|
||||||
|
#############
|
||||||
|
processors * * 1
|
||||||
|
region boxreg block 0 ${boxx} 0 ${boxy} 0 ${boxz}
|
||||||
|
region boxreg block 0 20 0 ${boxy} 0 ${boxz}
|
||||||
|
region boxreg block 0 20 0 20 0 ${boxz}
|
||||||
|
region boxreg block 0 20 0 20 0 30
|
||||||
|
create_box 2 boxreg
|
||||||
|
Created orthogonal box = (0 0 0) to (20 20 30)
|
||||||
|
2 by 2 by 1 MPI processor grid
|
||||||
|
change_box all boundary p p f
|
||||||
|
|
||||||
|
comm_modify vel yes
|
||||||
|
|
||||||
|
region insreg1 cylinder z ${xc1} ${yc} 5 15 ${boxz}
|
||||||
|
region insreg1 cylinder z 6 ${yc} 5 15 ${boxz}
|
||||||
|
region insreg1 cylinder z 6 10 5 15 ${boxz}
|
||||||
|
region insreg1 cylinder z 6 10 5 15 30
|
||||||
|
region insreg2 cylinder z ${xc2} ${yc} 5 15 ${boxz}
|
||||||
|
region insreg2 cylinder z 14 ${yc} 5 15 ${boxz}
|
||||||
|
region insreg2 cylinder z 14 10 5 15 ${boxz}
|
||||||
|
region insreg2 cylinder z 14 10 5 15 30
|
||||||
|
|
||||||
|
fix 1 all nve/sphere
|
||||||
|
fix grav all gravity 10.0 vector 0 0 -1
|
||||||
|
fix ins1 all pour 1500 1 3123 region insreg1 diam range ${dlo} ${dhi} dens ${dens} ${dens}
|
||||||
|
fix ins1 all pour 1500 1 3123 region insreg1 diam range 0.5 ${dhi} dens ${dens} ${dens}
|
||||||
|
fix ins1 all pour 1500 1 3123 region insreg1 diam range 0.5 1 dens ${dens} ${dens}
|
||||||
|
fix ins1 all pour 1500 1 3123 region insreg1 diam range 0.5 1 dens 1 ${dens}
|
||||||
|
fix ins1 all pour 1500 1 3123 region insreg1 diam range 0.5 1 dens 1 1
|
||||||
|
Particle insertion: 562 every 346 steps, 1500 by step 693
|
||||||
|
fix ins2 all pour 1500 2 3123 region insreg2 diam range ${dlo} ${dhi} dens ${dens} ${dens}
|
||||||
|
fix ins2 all pour 1500 2 3123 region insreg2 diam range 0.5 ${dhi} dens ${dens} ${dens}
|
||||||
|
fix ins2 all pour 1500 2 3123 region insreg2 diam range 0.5 1 dens ${dens} ${dens}
|
||||||
|
fix ins2 all pour 1500 2 3123 region insreg2 diam range 0.5 1 dens 1 ${dens}
|
||||||
|
fix ins2 all pour 1500 2 3123 region insreg2 diam range 0.5 1 dens 1 1
|
||||||
|
Particle insertion: 562 every 346 steps, 1500 by step 693
|
||||||
|
|
||||||
|
comm_modify vel yes
|
||||||
|
|
||||||
|
neighbor ${skin} bin
|
||||||
|
neighbor 0.15 bin
|
||||||
|
neigh_modify delay 0 every 1 check yes
|
||||||
|
|
||||||
|
pair_style granular
|
||||||
|
pair_coeff 1 * jkr 1000.0 50.0 0.3 10 tangential mindlin 800.0 1.0 0.5 rolling sds 500.0 200.0 0.5 twisting marshall
|
||||||
|
pair_coeff 2 2 hertz 200.0 20.0 tangential linear_history 300.0 1.0 0.1 rolling sds 200.0 100.0 0.1 twisting marshall
|
||||||
|
|
||||||
|
fix 3 all wall/gran granular hertz/material 1e5 1e3 0.3 tangential mindlin NULL 1.0 0.5 zplane 0 NULL
|
||||||
|
|
||||||
|
thermo_style custom step cpu atoms ke
|
||||||
|
thermo_modify lost warn
|
||||||
|
thermo 100
|
||||||
|
|
||||||
|
timestep 0.001
|
||||||
|
|
||||||
|
dump 1 all custom 100 ${name}.dump id type radius mass x y z
|
||||||
|
dump 1 all custom 100 pour_two_types.dump id type radius mass x y z
|
||||||
|
|
||||||
|
run 5000
|
||||||
|
Neighbor list info ...
|
||||||
|
update every 1 steps, delay 0 steps, check yes
|
||||||
|
max neighbors/atom: 2000, page size: 100000
|
||||||
|
master list distance cutoff = 1.15
|
||||||
|
ghost atom cutoff = 1.15
|
||||||
|
binsize = 0.575, bins = 35 35 53
|
||||||
|
1 neighbor lists, perpetual/occasional/extra = 1 0 0
|
||||||
|
(1) pair granular, perpetual
|
||||||
|
attributes: half, newton on, size, history
|
||||||
|
pair build: half/size/bin/newton
|
||||||
|
stencil: half/bin/3d/newton
|
||||||
|
bin: standard
|
||||||
|
Per MPI rank memory allocation (min/avg/max) = 11.98 | 11.98 | 11.98 Mbytes
|
||||||
|
Step CPU Atoms KinEng
|
||||||
|
0 0 0 -0
|
||||||
|
100 0.11584234 855 -0
|
||||||
|
200 0.12743592 855 -0
|
||||||
|
300 0.13925815 855 -0
|
||||||
|
400 0.35203671 1500 -0
|
||||||
|
500 0.37055922 1500 -0
|
||||||
|
600 0.38671875 1500 -0
|
||||||
|
700 0.71736908 2288 -0
|
||||||
|
800 0.74506783 2288 -0
|
||||||
|
900 0.77112222 2288 -0
|
||||||
|
1000 0.79632139 2288 -0
|
||||||
|
1100 1.0384252 2845 -0
|
||||||
|
1200 1.08093 2845 -0
|
||||||
|
1300 1.1224561 2845 -0
|
||||||
|
1400 1.1811485 3000 -0
|
||||||
|
1500 1.2414908 3000 -0
|
||||||
|
1600 1.3105879 3000 -0
|
||||||
|
1700 1.390928 3000 -0
|
||||||
|
1800 1.4869275 3000 -0
|
||||||
|
1900 1.5958266 3000 -0
|
||||||
|
2000 1.7172487 3000 -0
|
||||||
|
2100 1.851155 3000 -0
|
||||||
|
2200 1.9957182 3000 -0
|
||||||
|
2300 2.1593764 3000 -0
|
||||||
|
2400 2.3433132 3000 -0
|
||||||
|
2500 2.532742 3000 -0
|
||||||
|
2600 2.7376895 3000 -0
|
||||||
|
2700 2.9463468 3000 -0
|
||||||
|
2800 3.1645725 3000 -0
|
||||||
|
2900 3.3879526 3000 -0
|
||||||
|
3000 3.6152103 3000 -0
|
||||||
|
3100 3.8467371 3000 -0
|
||||||
|
3200 4.0787683 3000 -0
|
||||||
|
3300 4.3097105 3000 -0
|
||||||
|
3400 4.5423617 3000 -0
|
||||||
|
3500 4.7773693 3000 -0
|
||||||
|
3600 5.0127218 3000 -0
|
||||||
|
3700 5.2519271 3000 -0
|
||||||
|
3800 5.4951298 3000 -0
|
||||||
|
3900 5.7210469 3000 -0
|
||||||
|
4000 5.9432652 3000 -0
|
||||||
|
4100 6.1687591 3000 -0
|
||||||
|
4200 6.3942792 3000 -0
|
||||||
|
4300 6.6331475 3000 -0
|
||||||
|
4400 6.8632154 3000 -0
|
||||||
|
4500 7.0979366 3000 -0
|
||||||
|
4600 7.3305347 3000 -0
|
||||||
|
4700 7.5670528 3000 -0
|
||||||
|
4800 7.8086057 3000 -0
|
||||||
|
4900 8.0407174 3000 -0
|
||||||
|
5000 8.2765219 3000 -0
|
||||||
|
Loop time of 8.27669 on 4 procs for 5000 steps with 3000 atoms
|
||||||
|
|
||||||
|
Performance: 52194.788 tau/day, 604.106 timesteps/s
|
||||||
|
97.7% CPU use with 4 MPI tasks x 1 OpenMP threads
|
||||||
|
|
||||||
|
MPI task timing breakdown:
|
||||||
|
Section | min time | avg time | max time |%varavg| %total
|
||||||
|
---------------------------------------------------------------
|
||||||
|
Pair | 1.6106 | 3.4073 | 5.4191 | 95.7 | 41.17
|
||||||
|
Neigh | 0.51456 | 0.64572 | 0.81542 | 16.6 | 7.80
|
||||||
|
Comm | 0.2808 | 2.5222 | 4.4998 | 121.9 | 30.47
|
||||||
|
Output | 0.15695 | 0.15919 | 0.16502 | 0.8 | 1.92
|
||||||
|
Modify | 1.3517 | 1.4192 | 1.4904 | 4.9 | 17.15
|
||||||
|
Other | | 0.123 | | | 1.49
|
||||||
|
|
||||||
|
Nlocal: 750 ave 1036 max 482 min
|
||||||
|
Histogram: 2 0 0 0 0 0 0 0 1 1
|
||||||
|
Nghost: 429.75 ave 475 max 386 min
|
||||||
|
Histogram: 2 0 0 0 0 0 0 0 0 2
|
||||||
|
Neighs: 4051.75 ave 6274 max 2057 min
|
||||||
|
Histogram: 2 0 0 0 0 0 0 0 1 1
|
||||||
|
|
||||||
|
Total # of neighbors = 16207
|
||||||
|
Ave neighs/atom = 5.40233
|
||||||
|
Neighbor list builds = 1165
|
||||||
|
Dangerous builds = 0
|
||||||
|
Total wall time: 0:00:08
|
||||||
@ -24,12 +24,13 @@ colvar::colvar()
|
|||||||
{
|
{
|
||||||
runave_os = NULL;
|
runave_os = NULL;
|
||||||
|
|
||||||
prev_timestep = -1;
|
prev_timestep = -1L;
|
||||||
after_restart = false;
|
after_restart = false;
|
||||||
kinetic_energy = 0.0;
|
kinetic_energy = 0.0;
|
||||||
potential_energy = 0.0;
|
potential_energy = 0.0;
|
||||||
|
|
||||||
init_cv_requires();
|
description = "uninitialized colvar";
|
||||||
|
init_dependencies();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -193,7 +194,7 @@ int colvar::init(std::string const &conf)
|
|||||||
{
|
{
|
||||||
bool homogeneous = is_enabled(f_cv_linear);
|
bool homogeneous = is_enabled(f_cv_linear);
|
||||||
for (i = 0; i < cvcs.size(); i++) {
|
for (i = 0; i < cvcs.size(); i++) {
|
||||||
if ((std::fabs(cvcs[i]->sup_coeff) - 1.0) > 1.0e-10) {
|
if ((cvm::fabs(cvcs[i]->sup_coeff) - 1.0) > 1.0e-10) {
|
||||||
homogeneous = false;
|
homogeneous = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -224,7 +225,7 @@ int colvar::init(std::string const &conf)
|
|||||||
// Allow scripted/custom functions to be defined as periodic
|
// Allow scripted/custom functions to be defined as periodic
|
||||||
if ( (is_enabled(f_cv_scripted) || is_enabled(f_cv_custom_function)) && is_enabled(f_cv_scalar) ) {
|
if ( (is_enabled(f_cv_scripted) || is_enabled(f_cv_custom_function)) && is_enabled(f_cv_scalar) ) {
|
||||||
if (get_keyval(conf, "period", period, 0.)) {
|
if (get_keyval(conf, "period", period, 0.)) {
|
||||||
set_enabled(f_cv_periodic, true);
|
enable(f_cv_periodic);
|
||||||
get_keyval(conf, "wrapAround", wrap_center, 0.);
|
get_keyval(conf, "wrapAround", wrap_center, 0.);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -471,7 +472,7 @@ int colvar::init_grid_parameters(std::string const &conf)
|
|||||||
if (get_keyval(conf, "lowerWallConstant", lower_wall_k, 0.0,
|
if (get_keyval(conf, "lowerWallConstant", lower_wall_k, 0.0,
|
||||||
parse_silent)) {
|
parse_silent)) {
|
||||||
cvm::log("Reading legacy options lowerWall and lowerWallConstant: "
|
cvm::log("Reading legacy options lowerWall and lowerWallConstant: "
|
||||||
"consider using a harmonicWalls restraint.\n");
|
"consider using a harmonicWalls restraint\n(caution: force constant would then be scaled by width^2).\n");
|
||||||
lower_wall.type(value());
|
lower_wall.type(value());
|
||||||
if (!get_keyval(conf, "lowerWall", lower_wall, lower_boundary)) {
|
if (!get_keyval(conf, "lowerWall", lower_wall, lower_boundary)) {
|
||||||
cvm::log("Warning: lowerWall will need to be "
|
cvm::log("Warning: lowerWall will need to be "
|
||||||
@ -485,7 +486,7 @@ int colvar::init_grid_parameters(std::string const &conf)
|
|||||||
if (get_keyval(conf, "upperWallConstant", upper_wall_k, 0.0,
|
if (get_keyval(conf, "upperWallConstant", upper_wall_k, 0.0,
|
||||||
parse_silent)) {
|
parse_silent)) {
|
||||||
cvm::log("Reading legacy options upperWall and upperWallConstant: "
|
cvm::log("Reading legacy options upperWall and upperWallConstant: "
|
||||||
"consider using a harmonicWalls restraint.\n");
|
"consider using a harmonicWalls restraint\n(caution: force constant would then be scaled by width^2).\n");
|
||||||
upper_wall.type(value());
|
upper_wall.type(value());
|
||||||
if (!get_keyval(conf, "upperWall", upper_wall, upper_boundary)) {
|
if (!get_keyval(conf, "upperWall", upper_wall, upper_boundary)) {
|
||||||
cvm::log("Warning: upperWall will need to be "
|
cvm::log("Warning: upperWall will need to be "
|
||||||
@ -562,13 +563,13 @@ int colvar::init_extended_Lagrangian(std::string const &conf)
|
|||||||
get_keyval_feature(this, conf, "extendedLagrangian", f_cv_extended_Lagrangian, false);
|
get_keyval_feature(this, conf, "extendedLagrangian", f_cv_extended_Lagrangian, false);
|
||||||
|
|
||||||
if (is_enabled(f_cv_extended_Lagrangian)) {
|
if (is_enabled(f_cv_extended_Lagrangian)) {
|
||||||
cvm::real temp, tolerance, period;
|
cvm::real temp, tolerance, extended_period;
|
||||||
|
|
||||||
cvm::log("Enabling the extended Lagrangian term for colvar \""+
|
cvm::log("Enabling the extended Lagrangian term for colvar \""+
|
||||||
this->name+"\".\n");
|
this->name+"\".\n");
|
||||||
|
|
||||||
xr.type(value());
|
x_ext.type(value());
|
||||||
vr.type(value());
|
v_ext.type(value());
|
||||||
fr.type(value());
|
fr.type(value());
|
||||||
|
|
||||||
const bool found = get_keyval(conf, "extendedTemp", temp, cvm::temperature());
|
const bool found = get_keyval(conf, "extendedTemp", temp, cvm::temperature());
|
||||||
@ -590,11 +591,11 @@ int colvar::init_extended_Lagrangian(std::string const &conf)
|
|||||||
ext_force_k = cvm::boltzmann() * temp / (tolerance * tolerance);
|
ext_force_k = cvm::boltzmann() * temp / (tolerance * tolerance);
|
||||||
cvm::log("Computed extended system force constant: " + cvm::to_str(ext_force_k) + " [E]/U^2");
|
cvm::log("Computed extended system force constant: " + cvm::to_str(ext_force_k) + " [E]/U^2");
|
||||||
|
|
||||||
get_keyval(conf, "extendedTimeConstant", period, 200.0);
|
get_keyval(conf, "extendedTimeConstant", extended_period, 200.0);
|
||||||
if (period <= 0.0) {
|
if (extended_period <= 0.0) {
|
||||||
cvm::error("Error: \"extendedTimeConstant\" must be positive.\n", INPUT_ERROR);
|
cvm::error("Error: \"extendedTimeConstant\" must be positive.\n", INPUT_ERROR);
|
||||||
}
|
}
|
||||||
ext_mass = (cvm::boltzmann() * temp * period * period)
|
ext_mass = (cvm::boltzmann() * temp * extended_period * extended_period)
|
||||||
/ (4.0 * PI * PI * tolerance * tolerance);
|
/ (4.0 * PI * PI * tolerance * tolerance);
|
||||||
cvm::log("Computed fictitious mass: " + cvm::to_str(ext_mass) + " [E]/(U/fs)^2 (U: colvar unit)");
|
cvm::log("Computed fictitious mass: " + cvm::to_str(ext_mass) + " [E]/(U/fs)^2 (U: colvar unit)");
|
||||||
|
|
||||||
@ -615,7 +616,7 @@ int colvar::init_extended_Lagrangian(std::string const &conf)
|
|||||||
enable(f_cv_Langevin);
|
enable(f_cv_Langevin);
|
||||||
ext_gamma *= 1.0e-3; // correct as long as input is required in ps-1 and cvm::dt() is in fs
|
ext_gamma *= 1.0e-3; // correct as long as input is required in ps-1 and cvm::dt() is in fs
|
||||||
// Adjust Langevin sigma for slow time step if time_step_factor != 1
|
// Adjust Langevin sigma for slow time step if time_step_factor != 1
|
||||||
ext_sigma = std::sqrt(2.0 * cvm::boltzmann() * temp * ext_gamma * ext_mass / (cvm::dt() * cvm::real(time_step_factor)));
|
ext_sigma = cvm::sqrt(2.0 * cvm::boltzmann() * temp * ext_gamma * ext_mass / (cvm::dt() * cvm::real(time_step_factor)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -761,6 +762,8 @@ int colvar::init_components(std::string const &conf)
|
|||||||
"weighted by inverse power", "distanceInv");
|
"weighted by inverse power", "distanceInv");
|
||||||
error_code |= init_components_type<distance_pairs>(conf, "N1xN2-long vector "
|
error_code |= init_components_type<distance_pairs>(conf, "N1xN2-long vector "
|
||||||
"of pairwise distances", "distancePairs");
|
"of pairwise distances", "distancePairs");
|
||||||
|
error_code |= init_components_type<dipole_magnitude>(conf, "dipole magnitude",
|
||||||
|
"dipoleMagnitude");
|
||||||
error_code |= init_components_type<coordnum>(conf, "coordination "
|
error_code |= init_components_type<coordnum>(conf, "coordination "
|
||||||
"number", "coordNum");
|
"number", "coordNum");
|
||||||
error_code |= init_components_type<selfcoordnum>(conf, "self-coordination "
|
error_code |= init_components_type<selfcoordnum>(conf, "self-coordination "
|
||||||
@ -831,22 +834,25 @@ void colvar::build_atom_list(void)
|
|||||||
|
|
||||||
for (size_t i = 0; i < cvcs.size(); i++) {
|
for (size_t i = 0; i < cvcs.size(); i++) {
|
||||||
for (size_t j = 0; j < cvcs[i]->atom_groups.size(); j++) {
|
for (size_t j = 0; j < cvcs[i]->atom_groups.size(); j++) {
|
||||||
cvm::atom_group &ag = *(cvcs[i]->atom_groups[j]);
|
cvm::atom_group const &ag = *(cvcs[i]->atom_groups[j]);
|
||||||
for (size_t k = 0; k < ag.size(); k++) {
|
for (size_t k = 0; k < ag.size(); k++) {
|
||||||
temp_id_list.push_back(ag[k].id);
|
temp_id_list.push_back(ag[k].id);
|
||||||
}
|
}
|
||||||
|
if (ag.is_enabled(f_ag_fitting_group) && ag.is_enabled(f_ag_fit_gradients)) {
|
||||||
|
cvm::atom_group const &fg = *(ag.fitting_group);
|
||||||
|
for (size_t k = 0; k < fg.size(); k++) {
|
||||||
|
temp_id_list.push_back(fg[k].id);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
temp_id_list.sort();
|
temp_id_list.sort();
|
||||||
temp_id_list.unique();
|
temp_id_list.unique();
|
||||||
|
|
||||||
// atom_ids = std::vector<int> (temp_id_list.begin(), temp_id_list.end());
|
|
||||||
unsigned int id_i = 0;
|
|
||||||
std::list<int>::iterator li;
|
std::list<int>::iterator li;
|
||||||
for (li = temp_id_list.begin(); li != temp_id_list.end(); ++li) {
|
for (li = temp_id_list.begin(); li != temp_id_list.end(); ++li) {
|
||||||
atom_ids[id_i] = *li;
|
atom_ids.push_back(*li);
|
||||||
id_i++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
temp_id_list.clear();
|
temp_id_list.clear();
|
||||||
@ -934,16 +940,153 @@ int colvar::parse_analysis(std::string const &conf)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void colvar::setup() {
|
int colvar::init_dependencies() {
|
||||||
// loop over all components to reset masses of all groups
|
size_t i;
|
||||||
for (size_t i = 0; i < cvcs.size(); i++) {
|
if (features().size() == 0) {
|
||||||
for (size_t ig = 0; ig < cvcs[i]->atom_groups.size(); ig++) {
|
for (i = 0; i < f_cv_ntot; i++) {
|
||||||
cvm::atom_group &atoms = *(cvcs[i]->atom_groups[ig]);
|
modify_features().push_back(new feature);
|
||||||
atoms.setup();
|
}
|
||||||
atoms.reset_mass(name,i,ig);
|
|
||||||
atoms.read_positions();
|
init_feature(f_cv_active, "active", f_type_dynamic);
|
||||||
|
// Do not require f_cvc_active in children, as some components may be disabled
|
||||||
|
// Colvars must be either a linear combination, or scalar (and polynomial) or scripted/custom
|
||||||
|
require_feature_alt(f_cv_active, f_cv_scalar, f_cv_linear, f_cv_scripted, f_cv_custom_function);
|
||||||
|
|
||||||
|
init_feature(f_cv_awake, "awake", f_type_static);
|
||||||
|
require_feature_self(f_cv_awake, f_cv_active);
|
||||||
|
|
||||||
|
init_feature(f_cv_gradient, "gradient", f_type_dynamic);
|
||||||
|
require_feature_children(f_cv_gradient, f_cvc_gradient);
|
||||||
|
|
||||||
|
init_feature(f_cv_collect_gradient, "collect gradient", f_type_dynamic);
|
||||||
|
require_feature_self(f_cv_collect_gradient, f_cv_gradient);
|
||||||
|
require_feature_self(f_cv_collect_gradient, f_cv_scalar);
|
||||||
|
// The following exlusion could be lifted by implementing the feature
|
||||||
|
exclude_feature_self(f_cv_collect_gradient, f_cv_scripted);
|
||||||
|
require_feature_children(f_cv_collect_gradient, f_cvc_explicit_gradient);
|
||||||
|
|
||||||
|
init_feature(f_cv_fdiff_velocity, "velocity from finite differences", f_type_dynamic);
|
||||||
|
|
||||||
|
// System force: either trivial (spring force); through extended Lagrangian, or calculated explicitly
|
||||||
|
init_feature(f_cv_total_force, "total force", f_type_dynamic);
|
||||||
|
require_feature_alt(f_cv_total_force, f_cv_extended_Lagrangian, f_cv_total_force_calc);
|
||||||
|
|
||||||
|
// Deps for explicit total force calculation
|
||||||
|
init_feature(f_cv_total_force_calc, "total force calculation", f_type_dynamic);
|
||||||
|
require_feature_self(f_cv_total_force_calc, f_cv_scalar);
|
||||||
|
require_feature_self(f_cv_total_force_calc, f_cv_linear);
|
||||||
|
require_feature_children(f_cv_total_force_calc, f_cvc_inv_gradient);
|
||||||
|
require_feature_self(f_cv_total_force_calc, f_cv_Jacobian);
|
||||||
|
|
||||||
|
init_feature(f_cv_Jacobian, "Jacobian derivative", f_type_dynamic);
|
||||||
|
require_feature_self(f_cv_Jacobian, f_cv_scalar);
|
||||||
|
require_feature_self(f_cv_Jacobian, f_cv_linear);
|
||||||
|
require_feature_children(f_cv_Jacobian, f_cvc_Jacobian);
|
||||||
|
|
||||||
|
init_feature(f_cv_hide_Jacobian, "hide Jacobian force", f_type_user);
|
||||||
|
require_feature_self(f_cv_hide_Jacobian, f_cv_Jacobian); // can only hide if calculated
|
||||||
|
|
||||||
|
init_feature(f_cv_extended_Lagrangian, "extended Lagrangian", f_type_user);
|
||||||
|
require_feature_self(f_cv_extended_Lagrangian, f_cv_scalar);
|
||||||
|
require_feature_self(f_cv_extended_Lagrangian, f_cv_gradient);
|
||||||
|
|
||||||
|
init_feature(f_cv_Langevin, "Langevin dynamics", f_type_user);
|
||||||
|
require_feature_self(f_cv_Langevin, f_cv_extended_Lagrangian);
|
||||||
|
|
||||||
|
init_feature(f_cv_linear, "linear", f_type_static);
|
||||||
|
|
||||||
|
init_feature(f_cv_scalar, "scalar", f_type_static);
|
||||||
|
|
||||||
|
init_feature(f_cv_output_energy, "output energy", f_type_user);
|
||||||
|
|
||||||
|
init_feature(f_cv_output_value, "output value", f_type_user);
|
||||||
|
|
||||||
|
init_feature(f_cv_output_velocity, "output velocity", f_type_user);
|
||||||
|
require_feature_self(f_cv_output_velocity, f_cv_fdiff_velocity);
|
||||||
|
|
||||||
|
init_feature(f_cv_output_applied_force, "output applied force", f_type_user);
|
||||||
|
|
||||||
|
init_feature(f_cv_output_total_force, "output total force", f_type_user);
|
||||||
|
require_feature_self(f_cv_output_total_force, f_cv_total_force);
|
||||||
|
|
||||||
|
init_feature(f_cv_subtract_applied_force, "subtract applied force from total force", f_type_user);
|
||||||
|
require_feature_self(f_cv_subtract_applied_force, f_cv_total_force);
|
||||||
|
|
||||||
|
init_feature(f_cv_lower_boundary, "lower boundary", f_type_user);
|
||||||
|
require_feature_self(f_cv_lower_boundary, f_cv_scalar);
|
||||||
|
|
||||||
|
init_feature(f_cv_upper_boundary, "upper boundary", f_type_user);
|
||||||
|
require_feature_self(f_cv_upper_boundary, f_cv_scalar);
|
||||||
|
|
||||||
|
init_feature(f_cv_grid, "grid", f_type_dynamic);
|
||||||
|
require_feature_self(f_cv_grid, f_cv_lower_boundary);
|
||||||
|
require_feature_self(f_cv_grid, f_cv_upper_boundary);
|
||||||
|
|
||||||
|
init_feature(f_cv_runave, "running average", f_type_user);
|
||||||
|
|
||||||
|
init_feature(f_cv_corrfunc, "correlation function", f_type_user);
|
||||||
|
|
||||||
|
init_feature(f_cv_scripted, "scripted", f_type_user);
|
||||||
|
|
||||||
|
init_feature(f_cv_custom_function, "custom function", f_type_user);
|
||||||
|
exclude_feature_self(f_cv_custom_function, f_cv_scripted);
|
||||||
|
|
||||||
|
init_feature(f_cv_periodic, "periodic", f_type_static);
|
||||||
|
require_feature_self(f_cv_periodic, f_cv_scalar);
|
||||||
|
init_feature(f_cv_scalar, "scalar", f_type_static);
|
||||||
|
init_feature(f_cv_linear, "linear", f_type_static);
|
||||||
|
init_feature(f_cv_homogeneous, "homogeneous", f_type_static);
|
||||||
|
|
||||||
|
// because total forces are obtained from the previous time step,
|
||||||
|
// we cannot (currently) have colvar values and total forces for the same timestep
|
||||||
|
init_feature(f_cv_multiple_ts, "multiple timestep colvar", f_type_static);
|
||||||
|
exclude_feature_self(f_cv_multiple_ts, f_cv_total_force_calc);
|
||||||
|
|
||||||
|
// check that everything is initialized
|
||||||
|
for (i = 0; i < colvardeps::f_cv_ntot; i++) {
|
||||||
|
if (is_not_set(i)) {
|
||||||
|
cvm::error("Uninitialized feature " + cvm::to_str(i) + " in " + description);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Initialize feature_states for each instance
|
||||||
|
feature_states.reserve(f_cv_ntot);
|
||||||
|
for (i = 0; i < f_cv_ntot; i++) {
|
||||||
|
feature_states.push_back(feature_state(true, false));
|
||||||
|
// Most features are available, so we set them so
|
||||||
|
// and list exceptions below
|
||||||
|
}
|
||||||
|
|
||||||
|
feature_states[f_cv_fdiff_velocity].available =
|
||||||
|
cvm::main()->proxy->simulation_running();
|
||||||
|
|
||||||
|
return COLVARS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void colvar::setup()
|
||||||
|
{
|
||||||
|
// loop over all components to update masses and charges of all groups
|
||||||
|
for (size_t i = 0; i < cvcs.size(); i++) {
|
||||||
|
for (size_t ig = 0; ig < cvcs[i]->atom_groups.size(); ig++) {
|
||||||
|
cvm::atom_group *atoms = cvcs[i]->atom_groups[ig];
|
||||||
|
atoms->setup();
|
||||||
|
atoms->print_properties(name, i, ig);
|
||||||
|
atoms->read_positions();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
std::vector<std::vector<int> > colvar::get_atom_lists()
|
||||||
|
{
|
||||||
|
std::vector<std::vector<int> > lists;
|
||||||
|
for (size_t i = 0; i < cvcs.size(); i++) {
|
||||||
|
std::vector<std::vector<int> > li = cvcs[i]->get_atom_lists();
|
||||||
|
lists.insert(lists.end(), li.begin(), li.end());
|
||||||
|
}
|
||||||
|
return lists;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -953,8 +1096,8 @@ colvar::~colvar()
|
|||||||
// because the children are cvcs and will be deleted
|
// because the children are cvcs and will be deleted
|
||||||
// just below
|
// just below
|
||||||
|
|
||||||
// Clear references to this colvar's cvcs as children
|
// Clear references to this colvar's cvcs as children
|
||||||
// for dependency purposes
|
// for dependency purposes
|
||||||
remove_all_children();
|
remove_all_children();
|
||||||
|
|
||||||
for (std::vector<cvc *>::reverse_iterator ci = cvcs.rbegin();
|
for (std::vector<cvc *>::reverse_iterator ci = cvcs.rbegin();
|
||||||
@ -1231,7 +1374,6 @@ int colvar::calc_cvc_gradients(int first_cvc, size_t num_cvcs)
|
|||||||
int colvar::collect_cvc_gradients()
|
int colvar::collect_cvc_gradients()
|
||||||
{
|
{
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
if (is_enabled(f_cv_collect_gradient)) {
|
if (is_enabled(f_cv_collect_gradient)) {
|
||||||
// Collect the atomic gradients inside colvar object
|
// Collect the atomic gradients inside colvar object
|
||||||
for (unsigned int a = 0; a < atomic_gradients.size(); a++) {
|
for (unsigned int a = 0; a < atomic_gradients.size(); a++) {
|
||||||
@ -1239,34 +1381,7 @@ int colvar::collect_cvc_gradients()
|
|||||||
}
|
}
|
||||||
for (i = 0; i < cvcs.size(); i++) {
|
for (i = 0; i < cvcs.size(); i++) {
|
||||||
if (!cvcs[i]->is_enabled()) continue;
|
if (!cvcs[i]->is_enabled()) continue;
|
||||||
// Coefficient: d(a * x^n) = a * n * x^(n-1) * dx
|
cvcs[i]->collect_gradients(atom_ids, atomic_gradients);
|
||||||
cvm::real coeff = (cvcs[i])->sup_coeff * cvm::real((cvcs[i])->sup_np) *
|
|
||||||
cvm::integer_power((cvcs[i])->value().real_value, (cvcs[i])->sup_np-1);
|
|
||||||
|
|
||||||
for (size_t j = 0; j < cvcs[i]->atom_groups.size(); j++) {
|
|
||||||
|
|
||||||
cvm::atom_group &ag = *(cvcs[i]->atom_groups[j]);
|
|
||||||
|
|
||||||
// If necessary, apply inverse rotation to get atomic
|
|
||||||
// gradient in the laboratory frame
|
|
||||||
if (ag.b_rotate) {
|
|
||||||
cvm::rotation const rot_inv = ag.rot.inverse();
|
|
||||||
|
|
||||||
for (size_t k = 0; k < ag.size(); k++) {
|
|
||||||
size_t a = std::lower_bound(atom_ids.begin(), atom_ids.end(),
|
|
||||||
ag[k].id) - atom_ids.begin();
|
|
||||||
atomic_gradients[a] += coeff * rot_inv.rotate(ag[k].grad);
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
for (size_t k = 0; k < ag.size(); k++) {
|
|
||||||
size_t a = std::lower_bound(atom_ids.begin(), atom_ids.end(),
|
|
||||||
ag[k].id) - atom_ids.begin();
|
|
||||||
atomic_gradients[a] += coeff * ag[k].grad;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return COLVARS_OK;
|
return COLVARS_OK;
|
||||||
@ -1391,20 +1506,20 @@ int colvar::calc_colvar_properties()
|
|||||||
// initialize the restraint center in the first step to the value
|
// initialize the restraint center in the first step to the value
|
||||||
// just calculated from the cvcs
|
// just calculated from the cvcs
|
||||||
if (cvm::step_relative() == 0 && !after_restart) {
|
if (cvm::step_relative() == 0 && !after_restart) {
|
||||||
xr = x;
|
x_ext = x;
|
||||||
vr.reset(); // (already 0; added for clarity)
|
v_ext.reset(); // (already 0; added for clarity)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Special case of a repeated timestep (eg. multiple NAMD "run" statements)
|
// Special case of a repeated timestep (eg. multiple NAMD "run" statements)
|
||||||
// revert values of the extended coordinate and velocity prior to latest integration
|
// revert values of the extended coordinate and velocity prior to latest integration
|
||||||
if (cvm::step_relative() == prev_timestep) {
|
if (cvm::proxy->simulation_running() && cvm::step_relative() == prev_timestep) {
|
||||||
xr = prev_xr;
|
x_ext = prev_x_ext;
|
||||||
vr = prev_vr;
|
v_ext = prev_v_ext;
|
||||||
}
|
}
|
||||||
|
|
||||||
// report the restraint center as "value"
|
// report the restraint center as "value"
|
||||||
x_reported = xr;
|
x_reported = x_ext;
|
||||||
v_reported = vr;
|
v_reported = v_ext;
|
||||||
// the "total force" with the extended Lagrangian is
|
// the "total force" with the extended Lagrangian is
|
||||||
// calculated in update_forces_energy() below
|
// calculated in update_forces_energy() below
|
||||||
|
|
||||||
@ -1458,77 +1573,86 @@ cvm::real colvar::update_forces_energy()
|
|||||||
// extended variable if there is one
|
// extended variable if there is one
|
||||||
|
|
||||||
if (is_enabled(f_cv_extended_Lagrangian)) {
|
if (is_enabled(f_cv_extended_Lagrangian)) {
|
||||||
if (cvm::debug()) {
|
if (cvm::proxy->simulation_running()) {
|
||||||
cvm::log("Updating extended-Lagrangian degree of freedom.\n");
|
// Only integrate the extended equations of motion in running MD simulations
|
||||||
}
|
if (cvm::debug()) {
|
||||||
|
cvm::log("Updating extended-Lagrangian degree of freedom.\n");
|
||||||
if (prev_timestep > -1) {
|
|
||||||
// Keep track of slow timestep to integrate MTS colvars
|
|
||||||
// the colvar checks the interval after waking up twice
|
|
||||||
int n_timesteps = cvm::step_relative() - prev_timestep;
|
|
||||||
if (n_timesteps != 0 && n_timesteps != time_step_factor) {
|
|
||||||
cvm::error("Error: extended-Lagrangian " + description + " has timeStepFactor " +
|
|
||||||
cvm::to_str(time_step_factor) + ", but was activated after " + cvm::to_str(n_timesteps) +
|
|
||||||
" steps at timestep " + cvm::to_str(cvm::step_absolute()) + " (relative step: " +
|
|
||||||
cvm::to_str(cvm::step_relative()) + ").\n" +
|
|
||||||
"Make sure that this colvar is requested by biases at multiples of timeStepFactor.\n");
|
|
||||||
return 0.;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// Integrate with slow timestep (if time_step_factor != 1)
|
if (prev_timestep > -1) {
|
||||||
cvm::real dt = cvm::dt() * cvm::real(time_step_factor);
|
// Keep track of slow timestep to integrate MTS colvars
|
||||||
|
// the colvar checks the interval after waking up twice
|
||||||
|
int n_timesteps = cvm::step_relative() - prev_timestep;
|
||||||
|
if (n_timesteps != 0 && n_timesteps != time_step_factor) {
|
||||||
|
cvm::error("Error: extended-Lagrangian " + description + " has timeStepFactor " +
|
||||||
|
cvm::to_str(time_step_factor) + ", but was activated after " + cvm::to_str(n_timesteps) +
|
||||||
|
" steps at timestep " + cvm::to_str(cvm::step_absolute()) + " (relative step: " +
|
||||||
|
cvm::to_str(cvm::step_relative()) + ").\n" +
|
||||||
|
"Make sure that this colvar is requested by biases at multiples of timeStepFactor.\n");
|
||||||
|
return 0.;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
colvarvalue f_ext(fr.type()); // force acting on the extended variable
|
// Integrate with slow timestep (if time_step_factor != 1)
|
||||||
f_ext.reset();
|
cvm::real dt = cvm::dt() * cvm::real(time_step_factor);
|
||||||
|
|
||||||
// the total force is applied to the fictitious mass, while the
|
colvarvalue f_ext(fr.type()); // force acting on the extended variable
|
||||||
// atoms only feel the harmonic force + wall force
|
f_ext.reset();
|
||||||
// fr: bias force on extended variable (without harmonic spring), for output in trajectory
|
|
||||||
// f_ext: total force on extended variable (including harmonic spring)
|
|
||||||
// f: - initially, external biasing force
|
|
||||||
// - after this code block, colvar force to be applied to atomic coordinates
|
|
||||||
// ie. spring force (fb_actual will be added just below)
|
|
||||||
fr = f;
|
|
||||||
// External force has been scaled for a 1-timestep impulse, scale it back because we will
|
|
||||||
// integrate it with the colvar's own timestep factor
|
|
||||||
f_ext = f / cvm::real(time_step_factor);
|
|
||||||
f_ext += (-0.5 * ext_force_k) * this->dist2_lgrad(xr, x);
|
|
||||||
f = (-0.5 * ext_force_k) * this->dist2_rgrad(xr, x);
|
|
||||||
// Coupling force is a slow force, to be applied to atomic coords impulse-style
|
|
||||||
f *= cvm::real(time_step_factor);
|
|
||||||
|
|
||||||
if (is_enabled(f_cv_subtract_applied_force)) {
|
// the total force is applied to the fictitious mass, while the
|
||||||
// Report a "system" force without the biases on this colvar
|
// atoms only feel the harmonic force + wall force
|
||||||
// that is, just the spring force
|
// fr: bias force on extended variable (without harmonic spring), for output in trajectory
|
||||||
ft_reported = (-0.5 * ext_force_k) * this->dist2_lgrad(xr, x);
|
// f_ext: total force on extended variable (including harmonic spring)
|
||||||
|
// f: - initially, external biasing force
|
||||||
|
// - after this code block, colvar force to be applied to atomic coordinates
|
||||||
|
// ie. spring force (fb_actual will be added just below)
|
||||||
|
fr = f;
|
||||||
|
// External force has been scaled for a 1-timestep impulse, scale it back because we will
|
||||||
|
// integrate it with the colvar's own timestep factor
|
||||||
|
f_ext = f / cvm::real(time_step_factor);
|
||||||
|
f_ext += (-0.5 * ext_force_k) * this->dist2_lgrad(x_ext, x);
|
||||||
|
f = (-0.5 * ext_force_k) * this->dist2_rgrad(x_ext, x);
|
||||||
|
// Coupling force is a slow force, to be applied to atomic coords impulse-style
|
||||||
|
f *= cvm::real(time_step_factor);
|
||||||
|
|
||||||
|
if (is_enabled(f_cv_subtract_applied_force)) {
|
||||||
|
// Report a "system" force without the biases on this colvar
|
||||||
|
// that is, just the spring force
|
||||||
|
ft_reported = (-0.5 * ext_force_k) * this->dist2_lgrad(x_ext, x);
|
||||||
|
} else {
|
||||||
|
// The total force acting on the extended variable is f_ext
|
||||||
|
// This will be used in the next timestep
|
||||||
|
ft_reported = f_ext;
|
||||||
|
}
|
||||||
|
|
||||||
|
// backup in case we need to revert this integration timestep
|
||||||
|
// if the same MD timestep is re-run
|
||||||
|
prev_x_ext = x_ext;
|
||||||
|
prev_v_ext = v_ext;
|
||||||
|
|
||||||
|
// leapfrog: starting from x_i, f_i, v_(i-1/2)
|
||||||
|
v_ext += (0.5 * dt) * f_ext / ext_mass;
|
||||||
|
// Because of leapfrog, kinetic energy at time i is approximate
|
||||||
|
kinetic_energy = 0.5 * ext_mass * v_ext * v_ext;
|
||||||
|
potential_energy = 0.5 * ext_force_k * this->dist2(x_ext, x);
|
||||||
|
// leap to v_(i+1/2)
|
||||||
|
if (is_enabled(f_cv_Langevin)) {
|
||||||
|
v_ext -= dt * ext_gamma * v_ext;
|
||||||
|
colvarvalue rnd(x);
|
||||||
|
rnd.set_random();
|
||||||
|
v_ext += dt * ext_sigma * rnd / ext_mass;
|
||||||
|
}
|
||||||
|
v_ext += (0.5 * dt) * f_ext / ext_mass;
|
||||||
|
x_ext += dt * v_ext;
|
||||||
|
x_ext.apply_constraints();
|
||||||
|
this->wrap(x_ext);
|
||||||
} else {
|
} else {
|
||||||
// The total force acting on the extended variable is f_ext
|
// If this is a postprocessing run (eg. in VMD), the extended DOF
|
||||||
// This will be used in the next timestep
|
// is equal to the actual coordinate
|
||||||
ft_reported = f_ext;
|
x_ext = x;
|
||||||
}
|
}
|
||||||
|
// Report extended value
|
||||||
// backup in case we need to revert this integration timestep
|
x_reported = x_ext;
|
||||||
// if the same MD timestep is re-run
|
|
||||||
prev_xr = xr;
|
|
||||||
prev_vr = vr;
|
|
||||||
|
|
||||||
// leapfrog: starting from x_i, f_i, v_(i-1/2)
|
|
||||||
vr += (0.5 * dt) * f_ext / ext_mass;
|
|
||||||
// Because of leapfrog, kinetic energy at time i is approximate
|
|
||||||
kinetic_energy = 0.5 * ext_mass * vr * vr;
|
|
||||||
potential_energy = 0.5 * ext_force_k * this->dist2(xr, x);
|
|
||||||
// leap to v_(i+1/2)
|
|
||||||
if (is_enabled(f_cv_Langevin)) {
|
|
||||||
vr -= dt * ext_gamma * vr;
|
|
||||||
colvarvalue rnd(x);
|
|
||||||
rnd.set_random();
|
|
||||||
vr += dt * ext_sigma * rnd / ext_mass;
|
|
||||||
}
|
|
||||||
vr += (0.5 * dt) * f_ext / ext_mass;
|
|
||||||
xr += dt * vr;
|
|
||||||
xr.apply_constraints();
|
|
||||||
this->wrap(xr);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Now adding the force on the actual colvar (for those biases that
|
// Now adding the force on the actual colvar (for those biases that
|
||||||
@ -1730,7 +1854,7 @@ int colvar::update_cvc_config(std::vector<std::string> const &confs)
|
|||||||
|
|
||||||
|
|
||||||
// ******************** METRIC FUNCTIONS ********************
|
// ******************** METRIC FUNCTIONS ********************
|
||||||
// Use the metrics defined by \link cvc \endlink objects
|
// Use the metrics defined by \link colvar::cvc \endlink objects
|
||||||
|
|
||||||
|
|
||||||
bool colvar::periodic_boundaries(colvarvalue const &lb, colvarvalue const &ub) const
|
bool colvar::periodic_boundaries(colvarvalue const &lb, colvarvalue const &ub) const
|
||||||
@ -1742,7 +1866,7 @@ bool colvar::periodic_boundaries(colvarvalue const &lb, colvarvalue const &ub) c
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (period > 0.0) {
|
if (period > 0.0) {
|
||||||
if ( ((std::sqrt(this->dist2(lb, ub))) / this->width)
|
if ( ((cvm::sqrt(this->dist2(lb, ub))) / this->width)
|
||||||
< 1.0E-10 ) {
|
< 1.0E-10 ) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -1792,21 +1916,21 @@ colvarvalue colvar::dist2_rgrad(colvarvalue const &x1,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void colvar::wrap(colvarvalue &x) const
|
|
||||||
|
void colvar::wrap(colvarvalue &x_unwrapped) const
|
||||||
{
|
{
|
||||||
if ( !is_enabled(f_cv_periodic) ) {
|
if (!is_enabled(f_cv_periodic)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( is_enabled(f_cv_scripted) || is_enabled(f_cv_custom_function) ) {
|
if ( is_enabled(f_cv_scripted) || is_enabled(f_cv_custom_function) ) {
|
||||||
// Scripted functions do their own wrapping, as cvcs might not be periodic
|
// Scripted functions do their own wrapping, as cvcs might not be periodic
|
||||||
cvm::real shift = std::floor((x.real_value - wrap_center) / period + 0.5);
|
cvm::real shift = cvm::floor((x_unwrapped.real_value - wrap_center) /
|
||||||
x.real_value -= shift * period;
|
period + 0.5);
|
||||||
|
x_unwrapped.real_value -= shift * period;
|
||||||
} else {
|
} else {
|
||||||
cvcs[0]->wrap(x);
|
cvcs[0]->wrap(x_unwrapped);
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1852,15 +1976,15 @@ std::istream & colvar::read_restart(std::istream &is)
|
|||||||
|
|
||||||
if (is_enabled(f_cv_extended_Lagrangian)) {
|
if (is_enabled(f_cv_extended_Lagrangian)) {
|
||||||
|
|
||||||
if ( !(get_keyval(conf, "extended_x", xr,
|
if ( !(get_keyval(conf, "extended_x", x_ext,
|
||||||
colvarvalue(x.type()), colvarparse::parse_silent)) &&
|
colvarvalue(x.type()), colvarparse::parse_silent)) &&
|
||||||
!(get_keyval(conf, "extended_v", vr,
|
!(get_keyval(conf, "extended_v", v_ext,
|
||||||
colvarvalue(x.type()), colvarparse::parse_silent)) ) {
|
colvarvalue(x.type()), colvarparse::parse_silent)) ) {
|
||||||
cvm::log("Error: restart file does not contain "
|
cvm::log("Error: restart file does not contain "
|
||||||
"\"extended_x\" or \"extended_v\" for the colvar \""+
|
"\"extended_x\" or \"extended_v\" for the colvar \""+
|
||||||
name+"\", but you requested \"extendedLagrangian\".\n");
|
name+"\", but you requested \"extendedLagrangian\".\n");
|
||||||
}
|
}
|
||||||
x_reported = xr;
|
x_reported = x_ext;
|
||||||
} else {
|
} else {
|
||||||
x_reported = x;
|
x_reported = x;
|
||||||
}
|
}
|
||||||
@ -1875,7 +1999,7 @@ std::istream & colvar::read_restart(std::istream &is)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (is_enabled(f_cv_extended_Lagrangian)) {
|
if (is_enabled(f_cv_extended_Lagrangian)) {
|
||||||
v_reported = vr;
|
v_reported = v_ext;
|
||||||
} else {
|
} else {
|
||||||
v_reported = v_fdiff;
|
v_reported = v_fdiff;
|
||||||
}
|
}
|
||||||
@ -1901,8 +2025,8 @@ std::istream & colvar::read_traj(std::istream &is)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (is_enabled(f_cv_extended_Lagrangian)) {
|
if (is_enabled(f_cv_extended_Lagrangian)) {
|
||||||
is >> xr;
|
is >> x_ext;
|
||||||
x_reported = xr;
|
x_reported = x_ext;
|
||||||
} else {
|
} else {
|
||||||
x_reported = x;
|
x_reported = x;
|
||||||
}
|
}
|
||||||
@ -1913,8 +2037,8 @@ std::istream & colvar::read_traj(std::istream &is)
|
|||||||
is >> v_fdiff;
|
is >> v_fdiff;
|
||||||
|
|
||||||
if (is_enabled(f_cv_extended_Lagrangian)) {
|
if (is_enabled(f_cv_extended_Lagrangian)) {
|
||||||
is >> vr;
|
is >> v_ext;
|
||||||
v_reported = vr;
|
v_reported = v_ext;
|
||||||
} else {
|
} else {
|
||||||
v_reported = v_fdiff;
|
v_reported = v_fdiff;
|
||||||
}
|
}
|
||||||
@ -1955,11 +2079,11 @@ std::ostream & colvar::write_restart(std::ostream &os) {
|
|||||||
os << " extended_x "
|
os << " extended_x "
|
||||||
<< std::setprecision(cvm::cv_prec)
|
<< std::setprecision(cvm::cv_prec)
|
||||||
<< std::setw(cvm::cv_width)
|
<< std::setw(cvm::cv_width)
|
||||||
<< xr << "\n"
|
<< x_ext << "\n"
|
||||||
<< " extended_v "
|
<< " extended_v "
|
||||||
<< std::setprecision(cvm::cv_prec)
|
<< std::setprecision(cvm::cv_prec)
|
||||||
<< std::setw(cvm::cv_width)
|
<< std::setw(cvm::cv_width)
|
||||||
<< vr << "\n";
|
<< v_ext << "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
os << "}\n\n";
|
os << "}\n\n";
|
||||||
@ -2190,6 +2314,7 @@ int colvar::calc_acf()
|
|||||||
acf_x_history_p = acf_x_history.begin();
|
acf_x_history_p = acf_x_history.begin();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case acf_notset:
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -2222,6 +2347,7 @@ int colvar::calc_acf()
|
|||||||
history_incr(acf_x_history, acf_x_history_p);
|
history_incr(acf_x_history, acf_x_history_p);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case acf_notset:
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -2257,7 +2383,7 @@ void colvar::calc_vel_acf(std::list<colvarvalue> &v_list,
|
|||||||
|
|
||||||
|
|
||||||
void colvar::calc_coor_acf(std::list<colvarvalue> &x_list,
|
void colvar::calc_coor_acf(std::list<colvarvalue> &x_list,
|
||||||
colvarvalue const &x)
|
colvarvalue const &x_now)
|
||||||
{
|
{
|
||||||
// same as above but for coordinates
|
// same as above but for coordinates
|
||||||
if (x_list.size() >= acf_length+acf_offset) {
|
if (x_list.size() >= acf_length+acf_offset) {
|
||||||
@ -2269,7 +2395,7 @@ void colvar::calc_coor_acf(std::list<colvarvalue> &x_list,
|
|||||||
|
|
||||||
*(acf_i++) += x.norm2();
|
*(acf_i++) += x.norm2();
|
||||||
|
|
||||||
colvarvalue::inner_opt(x, xs_i, x_list.end(), acf_i);
|
colvarvalue::inner_opt(x_now, xs_i, x_list.end(), acf_i);
|
||||||
|
|
||||||
acf_nframes++;
|
acf_nframes++;
|
||||||
}
|
}
|
||||||
@ -2277,7 +2403,7 @@ void colvar::calc_coor_acf(std::list<colvarvalue> &x_list,
|
|||||||
|
|
||||||
|
|
||||||
void colvar::calc_p2coor_acf(std::list<colvarvalue> &x_list,
|
void colvar::calc_p2coor_acf(std::list<colvarvalue> &x_list,
|
||||||
colvarvalue const &x)
|
colvarvalue const &x_now)
|
||||||
{
|
{
|
||||||
// same as above but with second order Legendre polynomial instead
|
// same as above but with second order Legendre polynomial instead
|
||||||
// of just the scalar product
|
// of just the scalar product
|
||||||
@ -2291,7 +2417,7 @@ void colvar::calc_p2coor_acf(std::list<colvarvalue> &x_list,
|
|||||||
// value of P2(0) = 1
|
// value of P2(0) = 1
|
||||||
*(acf_i++) += 1.0;
|
*(acf_i++) += 1.0;
|
||||||
|
|
||||||
colvarvalue::p2leg_opt(x, xs_i, x_list.end(), acf_i);
|
colvarvalue::p2leg_opt(x_now, xs_i, x_list.end(), acf_i);
|
||||||
|
|
||||||
acf_nframes++;
|
acf_nframes++;
|
||||||
}
|
}
|
||||||
@ -2316,6 +2442,9 @@ int colvar::write_acf(std::ostream &os)
|
|||||||
case acf_p2coor:
|
case acf_p2coor:
|
||||||
os << "Coordinate (2nd Legendre poly)";
|
os << "Coordinate (2nd Legendre poly)";
|
||||||
break;
|
break;
|
||||||
|
case acf_notset:
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (acf_colvar_name == name) {
|
if (acf_colvar_name == name) {
|
||||||
@ -2420,7 +2549,7 @@ int colvar::calc_runave()
|
|||||||
<< std::setprecision(cvm::cv_prec) << std::setw(cvm::cv_width)
|
<< std::setprecision(cvm::cv_prec) << std::setw(cvm::cv_width)
|
||||||
<< runave << " "
|
<< runave << " "
|
||||||
<< std::setprecision(cvm::cv_prec) << std::setw(cvm::cv_width)
|
<< std::setprecision(cvm::cv_prec) << std::setw(cvm::cv_width)
|
||||||
<< std::sqrt(runave_variance) << "\n";
|
<< cvm::sqrt(runave_variance) << "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
history_add_value(runave_length, *x_history_p, x);
|
history_add_value(runave_length, *x_history_p, x);
|
||||||
|
|||||||
@ -92,7 +92,7 @@ public:
|
|||||||
static std::vector<feature *> cv_features;
|
static std::vector<feature *> cv_features;
|
||||||
|
|
||||||
/// \brief Implementation of the feature list accessor for colvar
|
/// \brief Implementation of the feature list accessor for colvar
|
||||||
virtual const std::vector<feature *> &features()
|
virtual const std::vector<feature *> &features() const
|
||||||
{
|
{
|
||||||
return cv_features;
|
return cv_features;
|
||||||
}
|
}
|
||||||
@ -133,7 +133,7 @@ protected:
|
|||||||
|
|
||||||
Here:
|
Here:
|
||||||
S(x(t)) = x
|
S(x(t)) = x
|
||||||
s(t) = xr
|
s(t) = x_ext
|
||||||
DS = Ds = delta
|
DS = Ds = delta
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -170,13 +170,13 @@ protected:
|
|||||||
|
|
||||||
// Options for extended_lagrangian
|
// Options for extended_lagrangian
|
||||||
/// Restraint center
|
/// Restraint center
|
||||||
colvarvalue xr;
|
colvarvalue x_ext;
|
||||||
/// Previous value of the restraint center;
|
/// Previous value of the restraint center;
|
||||||
colvarvalue prev_xr;
|
colvarvalue prev_x_ext;
|
||||||
/// Velocity of the restraint center
|
/// Velocity of the restraint center
|
||||||
colvarvalue vr;
|
colvarvalue v_ext;
|
||||||
/// Previous velocity of the restraint center
|
/// Previous velocity of the restraint center
|
||||||
colvarvalue prev_vr;
|
colvarvalue prev_v_ext;
|
||||||
/// Mass of the restraint center
|
/// Mass of the restraint center
|
||||||
cvm::real ext_mass;
|
cvm::real ext_mass;
|
||||||
/// Restraint force constant
|
/// Restraint force constant
|
||||||
@ -273,6 +273,9 @@ public:
|
|||||||
/// Init output flags
|
/// Init output flags
|
||||||
int init_output_flags(std::string const &conf);
|
int init_output_flags(std::string const &conf);
|
||||||
|
|
||||||
|
/// \brief Initialize dependency tree
|
||||||
|
virtual int init_dependencies();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/// Parse the CVC configuration for all components of a certain type
|
/// Parse the CVC configuration for all components of a certain type
|
||||||
template<typename def_class_name> int init_components_type(std::string const &conf,
|
template<typename def_class_name> int init_components_type(std::string const &conf,
|
||||||
@ -373,7 +376,7 @@ protected:
|
|||||||
void update_active_cvc_square_norm();
|
void update_active_cvc_square_norm();
|
||||||
|
|
||||||
/// \brief Absolute timestep number when this colvar was last updated
|
/// \brief Absolute timestep number when this colvar was last updated
|
||||||
int prev_timestep;
|
cvm::step_number prev_timestep;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
@ -383,32 +386,32 @@ public:
|
|||||||
/// \brief Return the number of CVC objects with an active flag (as set by update_cvc_flags)
|
/// \brief Return the number of CVC objects with an active flag (as set by update_cvc_flags)
|
||||||
inline size_t num_active_cvcs() const { return n_active_cvcs; }
|
inline size_t num_active_cvcs() const { return n_active_cvcs; }
|
||||||
|
|
||||||
/// \brief Use the internal metrics (as from \link cvc
|
/// \brief Use the internal metrics (as from \link colvar::cvc
|
||||||
/// \endlink objects) to calculate square distances and gradients
|
/// \endlink objects) to calculate square distances and gradients
|
||||||
///
|
///
|
||||||
/// Handles correctly symmetries and periodic boundary conditions
|
/// Handles correctly symmetries and periodic boundary conditions
|
||||||
cvm::real dist2(colvarvalue const &x1,
|
cvm::real dist2(colvarvalue const &x1,
|
||||||
colvarvalue const &x2) const;
|
colvarvalue const &x2) const;
|
||||||
|
|
||||||
/// \brief Use the internal metrics (as from \link cvc
|
/// \brief Use the internal metrics (as from \link colvar::cvc
|
||||||
/// \endlink objects) to calculate square distances and gradients
|
/// \endlink objects) to calculate square distances and gradients
|
||||||
///
|
///
|
||||||
/// Handles correctly symmetries and periodic boundary conditions
|
/// Handles correctly symmetries and periodic boundary conditions
|
||||||
colvarvalue dist2_lgrad(colvarvalue const &x1,
|
colvarvalue dist2_lgrad(colvarvalue const &x1,
|
||||||
colvarvalue const &x2) const;
|
colvarvalue const &x2) const;
|
||||||
|
|
||||||
/// \brief Use the internal metrics (as from \link cvc
|
/// \brief Use the internal metrics (as from \link colvar::cvc
|
||||||
/// \endlink objects) to calculate square distances and gradients
|
/// \endlink objects) to calculate square distances and gradients
|
||||||
///
|
///
|
||||||
/// Handles correctly symmetries and periodic boundary conditions
|
/// Handles correctly symmetries and periodic boundary conditions
|
||||||
colvarvalue dist2_rgrad(colvarvalue const &x1,
|
colvarvalue dist2_rgrad(colvarvalue const &x1,
|
||||||
colvarvalue const &x2) const;
|
colvarvalue const &x2) const;
|
||||||
|
|
||||||
/// \brief Use the internal metrics (as from \link cvc
|
/// \brief Use the internal metrics (as from \link colvar::cvc
|
||||||
/// \endlink objects) to wrap a value into a standard interval
|
/// \endlink objects) to wrap a value into a standard interval
|
||||||
///
|
///
|
||||||
/// Handles correctly symmetries and periodic boundary conditions
|
/// Handles correctly symmetries and periodic boundary conditions
|
||||||
void wrap(colvarvalue &x) const;
|
void wrap(colvarvalue &x_unwrapped) const;
|
||||||
|
|
||||||
|
|
||||||
/// Read the analysis tasks
|
/// Read the analysis tasks
|
||||||
@ -546,6 +549,7 @@ public:
|
|||||||
class polar_phi;
|
class polar_phi;
|
||||||
class distance_inv;
|
class distance_inv;
|
||||||
class distance_pairs;
|
class distance_pairs;
|
||||||
|
class dipole_magnitude;
|
||||||
class angle;
|
class angle;
|
||||||
class dipole_angle;
|
class dipole_angle;
|
||||||
class dihedral;
|
class dihedral;
|
||||||
@ -574,7 +578,7 @@ public:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
/// \brief Array of \link cvc \endlink objects
|
/// \brief Array of \link colvar::cvc \endlink objects
|
||||||
std::vector<cvc *> cvcs;
|
std::vector<cvc *> cvcs;
|
||||||
|
|
||||||
/// \brief Flags to enable or disable cvcs at next colvar evaluation
|
/// \brief Flags to enable or disable cvcs at next colvar evaluation
|
||||||
@ -619,6 +623,9 @@ public:
|
|||||||
inline size_t n_components() const {
|
inline size_t n_components() const {
|
||||||
return cvcs.size();
|
return cvcs.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// \brief Get vector of vectors of atom IDs for all atom groups
|
||||||
|
virtual std::vector<std::vector<int> > get_atom_lists();
|
||||||
};
|
};
|
||||||
|
|
||||||
inline cvm::real const & colvar::force_constant() const
|
inline cvm::real const & colvar::force_constant() const
|
||||||
@ -655,6 +662,8 @@ inline colvarvalue const & colvar::total_force() const
|
|||||||
|
|
||||||
inline void colvar::add_bias_force(colvarvalue const &force)
|
inline void colvar::add_bias_force(colvarvalue const &force)
|
||||||
{
|
{
|
||||||
|
check_enabled(f_cv_gradient,
|
||||||
|
std::string("applying a force to the variable \""+name+"\""));
|
||||||
if (cvm::debug()) {
|
if (cvm::debug()) {
|
||||||
cvm::log("Adding biasing force "+cvm::to_str(force)+" to colvar \""+name+"\".\n");
|
cvm::log("Adding biasing force "+cvm::to_str(force)+" to colvar \""+name+"\".\n");
|
||||||
}
|
}
|
||||||
|
|||||||
@ -33,24 +33,24 @@ namespace UIestimator {
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
n_matrix() {}
|
n_matrix() {}
|
||||||
n_matrix(const std::vector<double> & lowerboundary, // lowerboundary of x
|
n_matrix(const std::vector<double> & lowerboundary_input, // lowerboundary of x
|
||||||
const std::vector<double> & upperboundary, // upperboundary of
|
const std::vector<double> & upperboundary_input, // upperboundary of
|
||||||
const std::vector<double> & width, // width of x
|
const std::vector<double> & width_input, // width of x
|
||||||
const int y_size) { // size of y, for example, ysize=7, then when x=1, the distribution of y in [-2,4] is considered
|
const int y_size_input) { // size of y, for example, ysize=7, then when x=1, the distribution of y in [-2,4] is considered
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
this->lowerboundary = lowerboundary;
|
this->lowerboundary = lowerboundary_input;
|
||||||
this->upperboundary = upperboundary;
|
this->upperboundary = upperboundary_input;
|
||||||
this->width = width;
|
this->width = width_input;
|
||||||
this->dimension = lowerboundary.size();
|
this->dimension = lowerboundary_input.size();
|
||||||
this->y_size = y_size; // keep in mind the internal (spare) matrix is stored in diagonal form
|
this->y_size = y_size_input; // keep in mind the internal (spare) matrix is stored in diagonal form
|
||||||
this->y_total_size = int(std::pow(double(y_size), double(dimension)) + EPSILON);
|
this->y_total_size = int(cvm::pow(double(y_size_input), double(dimension)) + EPSILON);
|
||||||
|
|
||||||
// the range of the matrix is [lowerboundary, upperboundary]
|
// the range of the matrix is [lowerboundary, upperboundary]
|
||||||
x_total_size = 1;
|
x_total_size = 1;
|
||||||
for (i = 0; i < dimension; i++) {
|
for (i = 0; i < dimension; i++) {
|
||||||
x_size.push_back(int((upperboundary[i] - lowerboundary[i]) / width[i] + EPSILON));
|
x_size.push_back(int((upperboundary_input[i] - lowerboundary_input[i]) / width_input[i] + EPSILON));
|
||||||
x_total_size *= x_size[i];
|
x_total_size *= x_size[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -89,9 +89,10 @@ namespace UIestimator {
|
|||||||
|
|
||||||
std::vector<int> temp; // this vector is used in convert_x and convert_y to save computational resource
|
std::vector<int> temp; // this vector is used in convert_x and convert_y to save computational resource
|
||||||
|
|
||||||
int i, j;
|
|
||||||
|
|
||||||
int convert_x(const std::vector<double> & x) { // convert real x value to its interal index
|
int convert_x(const std::vector<double> & x) { // convert real x value to its interal index
|
||||||
|
|
||||||
|
int i, j;
|
||||||
|
|
||||||
for (i = 0; i < dimension; i++) {
|
for (i = 0; i < dimension; i++) {
|
||||||
temp[i] = int((x[i] - lowerboundary[i]) / width[i] + EPSILON);
|
temp[i] = int((x[i] - lowerboundary[i]) / width[i] + EPSILON);
|
||||||
}
|
}
|
||||||
@ -121,7 +122,7 @@ namespace UIestimator {
|
|||||||
int index = 0;
|
int index = 0;
|
||||||
for (i = 0; i < dimension; i++) {
|
for (i = 0; i < dimension; i++) {
|
||||||
if (i + 1 < dimension)
|
if (i + 1 < dimension)
|
||||||
index += temp[i] * int(std::pow(double(y_size), double(dimension - i - 1)) + EPSILON);
|
index += temp[i] * int(cvm::pow(double(y_size), double(dimension - i - 1)) + EPSILON);
|
||||||
else
|
else
|
||||||
index += temp[i];
|
index += temp[i];
|
||||||
}
|
}
|
||||||
@ -139,19 +140,19 @@ namespace UIestimator {
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
n_vector() {}
|
n_vector() {}
|
||||||
n_vector(const std::vector<double> & lowerboundary, // lowerboundary of x
|
n_vector(const std::vector<double> & lowerboundary_input, // lowerboundary of x
|
||||||
const std::vector<double> & upperboundary, // upperboundary of
|
const std::vector<double> & upperboundary_input, // upperboundary of
|
||||||
const std::vector<double> & width, // width of x
|
const std::vector<double> & width_input, // width of x
|
||||||
const int y_size, // size of y, for example, ysize=7, then when x=1, the distribution of y in [-2,4] is considered
|
const int y_size_input, // size of y, for example, ysize=7, then when x=1, the distribution of y in [-2,4] is considered
|
||||||
const T & default_value) { // the default value of T
|
const T & default_value) { // the default value of T
|
||||||
|
|
||||||
this->width = width;
|
this->width = width_input;
|
||||||
this->dimension = lowerboundary.size();
|
this->dimension = lowerboundary_input.size();
|
||||||
|
|
||||||
x_total_size = 1;
|
x_total_size = 1;
|
||||||
for (int i = 0; i < dimension; i++) {
|
for (int i = 0; i < dimension; i++) {
|
||||||
this->lowerboundary.push_back(lowerboundary[i] - (y_size - 1) / 2 * width[i] - EPSILON);
|
this->lowerboundary.push_back(lowerboundary_input[i] - (y_size_input - 1) / 2 * width_input[i] - EPSILON);
|
||||||
this->upperboundary.push_back(upperboundary[i] + (y_size - 1) / 2 * width[i] + EPSILON);
|
this->upperboundary.push_back(upperboundary_input[i] + (y_size_input - 1) / 2 * width_input[i] + EPSILON);
|
||||||
|
|
||||||
x_size.push_back(int((this->upperboundary[i] - this->lowerboundary[i]) / this->width[i] + EPSILON));
|
x_size.push_back(int((this->upperboundary[i] - this->lowerboundary[i]) / this->width[i] + EPSILON));
|
||||||
x_total_size *= x_size[i];
|
x_total_size *= x_size[i];
|
||||||
@ -215,26 +216,26 @@ namespace UIestimator {
|
|||||||
UIestimator() {}
|
UIestimator() {}
|
||||||
|
|
||||||
//called when (re)start an eabf simulation
|
//called when (re)start an eabf simulation
|
||||||
UIestimator(const std::vector<double> & lowerboundary,
|
UIestimator(const std::vector<double> & lowerboundary_input,
|
||||||
const std::vector<double> & upperboundary,
|
const std::vector<double> & upperboundary_input,
|
||||||
const std::vector<double> & width,
|
const std::vector<double> & width_input,
|
||||||
const std::vector<double> & krestr, // force constant in eABF
|
const std::vector<double> & krestr_input, // force constant in eABF
|
||||||
const std::string & output_filename, // the prefix of output files
|
const std::string & output_filename_input, // the prefix of output files
|
||||||
const int output_freq,
|
const int output_freq_input,
|
||||||
const bool restart, // whether restart from a .count and a .grad file
|
const bool restart_input, // whether restart from a .count and a .grad file
|
||||||
const std::vector<std::string> & input_filename, // the prefixes of input files
|
const std::vector<std::string> & input_filename_input, // the prefixes of input files
|
||||||
const double temperature) {
|
const double temperature_input) {
|
||||||
|
|
||||||
// initialize variables
|
// initialize variables
|
||||||
this->lowerboundary = lowerboundary;
|
this->lowerboundary = lowerboundary_input;
|
||||||
this->upperboundary = upperboundary;
|
this->upperboundary = upperboundary_input;
|
||||||
this->width = width;
|
this->width = width_input;
|
||||||
this->krestr = krestr;
|
this->krestr = krestr_input;
|
||||||
this->output_filename = output_filename;
|
this->output_filename = output_filename_input;
|
||||||
this->output_freq = output_freq;
|
this->output_freq = output_freq_input;
|
||||||
this->restart = restart;
|
this->restart = restart_input;
|
||||||
this->input_filename = input_filename;
|
this->input_filename = input_filename_input;
|
||||||
this->temperature = temperature;
|
this->temperature = temperature_input;
|
||||||
|
|
||||||
int i, j;
|
int i, j;
|
||||||
|
|
||||||
@ -300,7 +301,7 @@ namespace UIestimator {
|
|||||||
~UIestimator() {}
|
~UIestimator() {}
|
||||||
|
|
||||||
// called from MD engine every step
|
// called from MD engine every step
|
||||||
bool update(const int step, std::vector<double> x, std::vector<double> y) {
|
bool update(cvm::step_number step, std::vector<double> x, std::vector<double> y) {
|
||||||
|
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@ -431,7 +432,7 @@ namespace UIestimator {
|
|||||||
loop_flag_y[k] = loop_flag_x[k] - HALF_Y_SIZE * width[k];
|
loop_flag_y[k] = loop_flag_x[k] - HALF_Y_SIZE * width[k];
|
||||||
}
|
}
|
||||||
|
|
||||||
int j = 0;
|
j = 0;
|
||||||
while (j >= 0) {
|
while (j >= 0) {
|
||||||
norm += distribution_x_y.get_value(loop_flag_x, loop_flag_y);
|
norm += distribution_x_y.get_value(loop_flag_x, loop_flag_y);
|
||||||
for (k = 0; k < dimension; k++) {
|
for (k = 0; k < dimension; k++) {
|
||||||
@ -672,7 +673,7 @@ namespace UIestimator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// read input files
|
// read input files
|
||||||
void read_inputfiles(const std::vector<std::string> input_filename)
|
void read_inputfiles(const std::vector<std::string> filename)
|
||||||
{
|
{
|
||||||
char sharp;
|
char sharp;
|
||||||
double nothing;
|
double nothing;
|
||||||
@ -683,11 +684,11 @@ namespace UIestimator {
|
|||||||
std::vector<double> position_temp(dimension, 0);
|
std::vector<double> position_temp(dimension, 0);
|
||||||
std::vector<double> grad_temp(dimension, 0);
|
std::vector<double> grad_temp(dimension, 0);
|
||||||
int count_temp = 0;
|
int count_temp = 0;
|
||||||
for (i = 0; i < int(input_filename.size()); i++) {
|
for (i = 0; i < int(filename.size()); i++) {
|
||||||
int size = 1 , size_temp = 0;
|
int size = 1 , size_temp = 0;
|
||||||
|
|
||||||
std::string count_filename = input_filename[i] + ".UI.count";
|
std::string count_filename = filename[i] + ".UI.count";
|
||||||
std::string grad_filename = input_filename[i] + ".UI.grad";
|
std::string grad_filename = filename[i] + ".UI.grad";
|
||||||
|
|
||||||
std::ifstream count_file(count_filename.c_str(), std::ios::in);
|
std::ifstream count_file(count_filename.c_str(), std::ios::in);
|
||||||
std::ifstream grad_file(grad_filename.c_str(), std::ios::in);
|
std::ifstream grad_file(grad_filename.c_str(), std::ios::in);
|
||||||
|
|||||||
@ -22,7 +22,7 @@ cvm::atom::atom()
|
|||||||
index = -1;
|
index = -1;
|
||||||
id = -1;
|
id = -1;
|
||||||
mass = 1.0;
|
mass = 1.0;
|
||||||
charge = 1.0;
|
charge = 0.0;
|
||||||
reset_data();
|
reset_data();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -107,6 +107,8 @@ cvm::atom_group::~atom_group()
|
|||||||
delete fitting_group;
|
delete fitting_group;
|
||||||
fitting_group = NULL;
|
fitting_group = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cvm::main()->unregister_named_atom_group(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -183,10 +185,7 @@ int cvm::atom_group::init()
|
|||||||
// These may be overwritten by parse(), if a name is provided
|
// These may be overwritten by parse(), if a name is provided
|
||||||
|
|
||||||
atoms.clear();
|
atoms.clear();
|
||||||
|
init_dependencies();
|
||||||
// TODO: check with proxy whether atom forces etc are available
|
|
||||||
init_ag_requires();
|
|
||||||
|
|
||||||
index = -1;
|
index = -1;
|
||||||
|
|
||||||
b_dummy = false;
|
b_dummy = false;
|
||||||
@ -207,8 +206,67 @@ int cvm::atom_group::init()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int cvm::atom_group::init_dependencies() {
|
||||||
|
size_t i;
|
||||||
|
// Initialize static array once and for all
|
||||||
|
if (features().size() == 0) {
|
||||||
|
for (i = 0; i < f_ag_ntot; i++) {
|
||||||
|
modify_features().push_back(new feature);
|
||||||
|
}
|
||||||
|
|
||||||
|
init_feature(f_ag_active, "active", f_type_dynamic);
|
||||||
|
init_feature(f_ag_center, "translational fit", f_type_static);
|
||||||
|
init_feature(f_ag_rotate, "rotational fit", f_type_static);
|
||||||
|
init_feature(f_ag_fitting_group, "fitting group", f_type_static);
|
||||||
|
init_feature(f_ag_explicit_gradient, "explicit atom gradient", f_type_dynamic);
|
||||||
|
init_feature(f_ag_fit_gradients, "fit gradients", f_type_user);
|
||||||
|
require_feature_self(f_ag_fit_gradients, f_ag_explicit_gradient);
|
||||||
|
|
||||||
|
init_feature(f_ag_atom_forces, "atomic forces", f_type_dynamic);
|
||||||
|
|
||||||
|
// parallel calculation implies that we have at least a scalable center of mass,
|
||||||
|
// but f_ag_scalable is kept as a separate feature to deal with future dependencies
|
||||||
|
init_feature(f_ag_scalable, "scalable group calculation", f_type_static);
|
||||||
|
init_feature(f_ag_scalable_com, "scalable group center of mass calculation", f_type_static);
|
||||||
|
require_feature_self(f_ag_scalable, f_ag_scalable_com);
|
||||||
|
|
||||||
|
// check that everything is initialized
|
||||||
|
for (i = 0; i < colvardeps::f_ag_ntot; i++) {
|
||||||
|
if (is_not_set(i)) {
|
||||||
|
cvm::error("Uninitialized feature " + cvm::to_str(i) + " in " + description);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Initialize feature_states for each instance
|
||||||
|
// default as unavailable, not enabled
|
||||||
|
feature_states.reserve(f_ag_ntot);
|
||||||
|
for (i = 0; i < colvardeps::f_ag_ntot; i++) {
|
||||||
|
feature_states.push_back(feature_state(false, false));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Features that are implemented (or not) by all atom groups
|
||||||
|
feature_states[f_ag_active].available = true;
|
||||||
|
// f_ag_scalable_com is provided by the CVC iff it is COM-based
|
||||||
|
feature_states[f_ag_scalable_com].available = false;
|
||||||
|
// TODO make f_ag_scalable depend on f_ag_scalable_com (or something else)
|
||||||
|
feature_states[f_ag_scalable].available = true;
|
||||||
|
feature_states[f_ag_fit_gradients].available = true;
|
||||||
|
feature_states[f_ag_fitting_group].available = true;
|
||||||
|
feature_states[f_ag_explicit_gradient].available = true;
|
||||||
|
|
||||||
|
return COLVARS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int cvm::atom_group::setup()
|
int cvm::atom_group::setup()
|
||||||
{
|
{
|
||||||
|
if (atoms_ids.size() == 0) {
|
||||||
|
atoms_ids.reserve(atoms.size());
|
||||||
|
for (cvm::atom_iter ai = atoms.begin(); ai != atoms.end(); ai++) {
|
||||||
|
atoms_ids.push_back(ai->id);
|
||||||
|
}
|
||||||
|
}
|
||||||
for (cvm::atom_iter ai = atoms.begin(); ai != atoms.end(); ai++) {
|
for (cvm::atom_iter ai = atoms.begin(); ai != atoms.end(); ai++) {
|
||||||
ai->update_mass();
|
ai->update_mass();
|
||||||
ai->update_charge();
|
ai->update_charge();
|
||||||
@ -237,15 +295,6 @@ void cvm::atom_group::update_total_mass()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void cvm::atom_group::reset_mass(std::string &name, int i, int j)
|
|
||||||
{
|
|
||||||
update_total_mass();
|
|
||||||
cvm::log("Re-initialized atom group "+name+":"+cvm::to_str(i)+"/"+
|
|
||||||
cvm::to_str(j)+". "+ cvm::to_str(atoms_ids.size())+
|
|
||||||
" atoms: total mass = "+cvm::to_str(total_mass)+".\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void cvm::atom_group::update_total_charge()
|
void cvm::atom_group::update_total_charge()
|
||||||
{
|
{
|
||||||
if (b_dummy) {
|
if (b_dummy) {
|
||||||
@ -264,6 +313,19 @@ void cvm::atom_group::update_total_charge()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void cvm::atom_group::print_properties(std::string const &colvar_name,
|
||||||
|
int i, int j)
|
||||||
|
{
|
||||||
|
if (cvm::proxy->updated_masses() && cvm::proxy->updated_charges()) {
|
||||||
|
cvm::log("Re-initialized atom group for variable \""+colvar_name+"\":"+
|
||||||
|
cvm::to_str(i)+"/"+
|
||||||
|
cvm::to_str(j)+". "+ cvm::to_str(atoms_ids.size())+
|
||||||
|
" atoms: total mass = "+cvm::to_str(total_mass)+
|
||||||
|
", total charge = "+cvm::to_str(total_charge)+".\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int cvm::atom_group::parse(std::string const &group_conf)
|
int cvm::atom_group::parse(std::string const &group_conf)
|
||||||
{
|
{
|
||||||
cvm::log("Initializing atom group \""+key+"\".\n");
|
cvm::log("Initializing atom group \""+key+"\".\n");
|
||||||
@ -450,10 +512,21 @@ int cvm::atom_group::parse(std::string const &group_conf)
|
|||||||
if (cvm::debug())
|
if (cvm::debug())
|
||||||
cvm::log("Done initializing atom group \""+key+"\".\n");
|
cvm::log("Done initializing atom group \""+key+"\".\n");
|
||||||
|
|
||||||
cvm::log("Atom group \""+key+"\" defined, "+
|
{
|
||||||
cvm::to_str(atoms_ids.size())+" atoms initialized: total mass = "+
|
std::string init_msg;
|
||||||
cvm::to_str(total_mass)+", total charge = "+
|
init_msg.append("Atom group \""+key+"\" defined with "+
|
||||||
cvm::to_str(total_charge)+".\n");
|
cvm::to_str(atoms_ids.size())+" atoms requested");
|
||||||
|
if ((cvm::proxy)->updated_masses()) {
|
||||||
|
init_msg.append(": total mass = "+
|
||||||
|
cvm::to_str(total_mass));
|
||||||
|
if ((cvm::proxy)->updated_charges()) {
|
||||||
|
init_msg.append(", total charge = "+
|
||||||
|
cvm::to_str(total_charge));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
init_msg.append(".\n");
|
||||||
|
cvm::log(init_msg);
|
||||||
|
}
|
||||||
|
|
||||||
if (b_print_atom_ids) {
|
if (b_print_atom_ids) {
|
||||||
cvm::log("Internal definition of the atom group:\n");
|
cvm::log("Internal definition of the atom group:\n");
|
||||||
@ -464,7 +537,7 @@ int cvm::atom_group::parse(std::string const &group_conf)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int cvm::atom_group::add_atoms_of_group(atom_group const * ag)
|
int cvm::atom_group::add_atoms_of_group(atom_group const *ag)
|
||||||
{
|
{
|
||||||
std::vector<int> const &source_ids = ag->atoms_ids;
|
std::vector<int> const &source_ids = ag->atoms_ids;
|
||||||
|
|
||||||
@ -696,6 +769,7 @@ int cvm::atom_group::parse_fitting_options(std::string const &group_conf)
|
|||||||
return INPUT_ERROR;
|
return INPUT_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
enable(f_ag_fitting_group);
|
||||||
}
|
}
|
||||||
|
|
||||||
atom_group *group_for_fit = fitting_group ? fitting_group : this;
|
atom_group *group_for_fit = fitting_group ? fitting_group : this;
|
||||||
@ -800,24 +874,24 @@ int cvm::atom_group::create_sorted_ids()
|
|||||||
|
|
||||||
// Sort the internal IDs
|
// Sort the internal IDs
|
||||||
std::list<int> sorted_atoms_ids_list;
|
std::list<int> sorted_atoms_ids_list;
|
||||||
for (size_t i = 0; i < this->size(); i++) {
|
for (size_t i = 0; i < atoms_ids.size(); i++) {
|
||||||
sorted_atoms_ids_list.push_back(atoms_ids[i]);
|
sorted_atoms_ids_list.push_back(atoms_ids[i]);
|
||||||
}
|
}
|
||||||
sorted_atoms_ids_list.sort();
|
sorted_atoms_ids_list.sort();
|
||||||
sorted_atoms_ids_list.unique();
|
sorted_atoms_ids_list.unique();
|
||||||
if (sorted_atoms_ids_list.size() != this->size()) {
|
if (sorted_atoms_ids_list.size() != atoms_ids.size()) {
|
||||||
return cvm::error("Error: duplicate atom IDs in atom group? (found " +
|
return cvm::error("Error: duplicate atom IDs in atom group? (found " +
|
||||||
cvm::to_str(sorted_atoms_ids_list.size()) +
|
cvm::to_str(sorted_atoms_ids_list.size()) +
|
||||||
" unique atom IDs instead of " +
|
" unique atom IDs instead of " +
|
||||||
cvm::to_str(this->size()) + ").\n", BUG_ERROR);
|
cvm::to_str(atoms_ids.size()) + ").\n", BUG_ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Compute map between sorted and unsorted elements
|
// Compute map between sorted and unsorted elements
|
||||||
sorted_atoms_ids.resize(this->size());
|
sorted_atoms_ids.resize(atoms_ids.size());
|
||||||
sorted_atoms_ids_map.resize(this->size());
|
sorted_atoms_ids_map.resize(atoms_ids.size());
|
||||||
std::list<int>::iterator lsii = sorted_atoms_ids_list.begin();
|
std::list<int>::iterator lsii = sorted_atoms_ids_list.begin();
|
||||||
size_t ii = 0;
|
size_t ii = 0;
|
||||||
for ( ; ii < this->size(); lsii++, ii++) {
|
for ( ; ii < atoms_ids.size(); lsii++, ii++) {
|
||||||
sorted_atoms_ids[ii] = *lsii;
|
sorted_atoms_ids[ii] = *lsii;
|
||||||
size_t const pos = std::find(atoms_ids.begin(), atoms_ids.end(), *lsii) -
|
size_t const pos = std::find(atoms_ids.begin(), atoms_ids.end(), *lsii) -
|
||||||
atoms_ids.begin();
|
atoms_ids.begin();
|
||||||
@ -1038,15 +1112,15 @@ int cvm::atom_group::calc_center_of_mass()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int cvm::atom_group::calc_dipole(cvm::atom_pos const &com)
|
int cvm::atom_group::calc_dipole(cvm::atom_pos const &dipole_center)
|
||||||
{
|
{
|
||||||
if (b_dummy) {
|
if (b_dummy) {
|
||||||
cvm::error("Error: trying to compute the dipole of an empty group.\n", INPUT_ERROR);
|
return cvm::error("Error: trying to compute the dipole "
|
||||||
return COLVARS_ERROR;
|
"of a dummy group.\n", INPUT_ERROR);
|
||||||
}
|
}
|
||||||
dip.reset();
|
dip.reset();
|
||||||
for (cvm::atom_const_iter ai = this->begin(); ai != this->end(); ai++) {
|
for (cvm::atom_const_iter ai = this->begin(); ai != this->end(); ai++) {
|
||||||
dip += ai->charge * (ai->pos - com);
|
dip += ai->charge * (ai->pos - dipole_center);
|
||||||
}
|
}
|
||||||
return COLVARS_OK;
|
return COLVARS_OK;
|
||||||
}
|
}
|
||||||
@ -1056,13 +1130,12 @@ void cvm::atom_group::set_weighted_gradient(cvm::rvector const &grad)
|
|||||||
{
|
{
|
||||||
if (b_dummy) return;
|
if (b_dummy) return;
|
||||||
|
|
||||||
if (is_enabled(f_ag_scalable)) {
|
scalar_com_gradient = grad;
|
||||||
scalar_com_gradient = grad;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (cvm::atom_iter ai = this->begin(); ai != this->end(); ai++) {
|
if (!is_enabled(f_ag_scalable)) {
|
||||||
ai->grad = (ai->mass/total_mass) * grad;
|
for (cvm::atom_iter ai = this->begin(); ai != this->end(); ai++) {
|
||||||
|
ai->grad = (ai->mass/total_mass) * grad;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
|
|
||||||
/// \brief Stores numeric id, mass and all mutable data for an atom,
|
/// \brief Stores numeric id, mass and all mutable data for an atom,
|
||||||
/// mostly used by a \link cvc \endlink
|
/// mostly used by a \link colvar::cvc \endlink
|
||||||
///
|
///
|
||||||
/// This class may be used to keep atomic data such as id, mass,
|
/// This class may be used to keep atomic data such as id, mass,
|
||||||
/// position and collective variable derivatives) altogether.
|
/// position and collective variable derivatives) altogether.
|
||||||
@ -63,7 +63,7 @@ public:
|
|||||||
/// from the \link colvarvalue \endlink class), which is also the
|
/// from the \link colvarvalue \endlink class), which is also the
|
||||||
/// most frequent case. For more complex types of \link
|
/// most frequent case. For more complex types of \link
|
||||||
/// colvarvalue \endlink objects, atomic gradients should be
|
/// colvarvalue \endlink objects, atomic gradients should be
|
||||||
/// defined within the specific \link cvc \endlink
|
/// defined within the specific \link colvar::cvc \endlink
|
||||||
/// implementation
|
/// implementation
|
||||||
cvm::rvector grad;
|
cvm::rvector grad;
|
||||||
|
|
||||||
@ -100,13 +100,19 @@ public:
|
|||||||
/// Get the latest value of the mass
|
/// Get the latest value of the mass
|
||||||
inline void update_mass()
|
inline void update_mass()
|
||||||
{
|
{
|
||||||
mass = (cvm::proxy)->get_atom_mass(index);
|
colvarproxy *p = cvm::proxy;
|
||||||
|
if (p->updated_masses()) {
|
||||||
|
mass = p->get_atom_mass(index);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Get the latest value of the charge
|
/// Get the latest value of the charge
|
||||||
inline void update_charge()
|
inline void update_charge()
|
||||||
{
|
{
|
||||||
charge = (cvm::proxy)->get_atom_charge(index);
|
colvarproxy *p = cvm::proxy;
|
||||||
|
if (p->updated_charges()) {
|
||||||
|
charge = p->get_atom_charge(index);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Get the current position
|
/// Get the current position
|
||||||
@ -145,7 +151,7 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
/// \brief Group of \link atom \endlink objects, mostly used by a
|
/// \brief Group of \link atom \endlink objects, mostly used by a
|
||||||
/// \link cvc \endlink object to gather all atomic data
|
/// \link colvar::cvc \endlink object to gather all atomic data
|
||||||
class colvarmodule::atom_group
|
class colvarmodule::atom_group
|
||||||
: public colvarparse, public colvardeps
|
: public colvarparse, public colvardeps
|
||||||
{
|
{
|
||||||
@ -174,6 +180,9 @@ public:
|
|||||||
/// \brief Set default values for common flags
|
/// \brief Set default values for common flags
|
||||||
int init();
|
int init();
|
||||||
|
|
||||||
|
/// \brief Initialize dependency tree
|
||||||
|
virtual int init_dependencies();
|
||||||
|
|
||||||
/// \brief Update data required to calculate cvc's
|
/// \brief Update data required to calculate cvc's
|
||||||
int setup();
|
int setup();
|
||||||
|
|
||||||
@ -198,16 +207,16 @@ public:
|
|||||||
/// \brief Remove an atom object from this group
|
/// \brief Remove an atom object from this group
|
||||||
int remove_atom(cvm::atom_iter ai);
|
int remove_atom(cvm::atom_iter ai);
|
||||||
|
|
||||||
/// \brief Re-initialize the total mass of a group.
|
/// \brief Print the updated the total mass and charge of a group.
|
||||||
/// This is needed in case the hosting MD code has an option to
|
/// This is needed in case the hosting MD code has an option to
|
||||||
/// change atom masses after their initialization.
|
/// change atom masses after their initialization.
|
||||||
void reset_mass(std::string &name, int i, int j);
|
void print_properties(std::string const &colvar_name, int i, int j);
|
||||||
|
|
||||||
/// \brief Implementation of the feature list for atom group
|
/// \brief Implementation of the feature list for atom group
|
||||||
static std::vector<feature *> ag_features;
|
static std::vector<feature *> ag_features;
|
||||||
|
|
||||||
/// \brief Implementation of the feature list accessor for atom group
|
/// \brief Implementation of the feature list accessor for atom group
|
||||||
virtual const std::vector<feature *> &features()
|
virtual const std::vector<feature *> &features() const
|
||||||
{
|
{
|
||||||
return ag_features;
|
return ag_features;
|
||||||
}
|
}
|
||||||
@ -347,15 +356,19 @@ public:
|
|||||||
|
|
||||||
/// Total mass of the atom group
|
/// Total mass of the atom group
|
||||||
cvm::real total_mass;
|
cvm::real total_mass;
|
||||||
|
|
||||||
|
/// Update the total mass of the atom group
|
||||||
void update_total_mass();
|
void update_total_mass();
|
||||||
|
|
||||||
/// Total charge of the atom group
|
/// Total charge of the atom group
|
||||||
cvm::real total_charge;
|
cvm::real total_charge;
|
||||||
|
|
||||||
|
/// Update the total mass of the group
|
||||||
void update_total_charge();
|
void update_total_charge();
|
||||||
|
|
||||||
/// \brief Don't apply any force on this group (use its coordinates
|
/// \brief Don't apply any force on this group (use its coordinates
|
||||||
/// only to calculate a colvar)
|
/// only to calculate a colvar)
|
||||||
bool noforce;
|
bool noforce;
|
||||||
|
|
||||||
/// \brief Get the current positions
|
/// \brief Get the current positions
|
||||||
void read_positions();
|
void read_positions();
|
||||||
@ -423,20 +436,32 @@ public:
|
|||||||
/// \brief Calculate the center of mass of the atomic positions, assuming that
|
/// \brief Calculate the center of mass of the atomic positions, assuming that
|
||||||
/// they are already pbc-wrapped
|
/// they are already pbc-wrapped
|
||||||
int calc_center_of_mass();
|
int calc_center_of_mass();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
/// \brief Center of mass
|
/// \brief Center of mass
|
||||||
cvm::atom_pos com;
|
cvm::atom_pos com;
|
||||||
|
|
||||||
/// \brief The derivative of a scalar variable with respect to the COM
|
/// \brief The derivative of a scalar variable with respect to the COM
|
||||||
// TODO for scalable calculations of more complex variables (e.g. rotation),
|
// TODO for scalable calculations of more complex variables (e.g. rotation),
|
||||||
// use a colvarvalue of vectors to hold the entire derivative
|
// use a colvarvalue of vectors to hold the entire derivative
|
||||||
cvm::rvector scalar_com_gradient;
|
cvm::rvector scalar_com_gradient;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/// \brief Return the center of mass of the atomic positions
|
|
||||||
|
/// \brief Return the center of mass (COM) of the atomic positions
|
||||||
inline cvm::atom_pos center_of_mass() const
|
inline cvm::atom_pos center_of_mass() const
|
||||||
{
|
{
|
||||||
return com;
|
return com;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// \brief Return previously gradient of scalar variable with respect to the
|
||||||
|
/// COM
|
||||||
|
inline cvm::rvector center_of_mass_scalar_gradient() const
|
||||||
|
{
|
||||||
|
return scalar_com_gradient;
|
||||||
|
}
|
||||||
|
|
||||||
/// \brief Return a copy of the current atom positions, shifted by a constant vector
|
/// \brief Return a copy of the current atom positions, shifted by a constant vector
|
||||||
std::vector<cvm::atom_pos> positions_shifted(cvm::rvector const &shift) const;
|
std::vector<cvm::atom_pos> positions_shifted(cvm::rvector const &shift) const;
|
||||||
|
|
||||||
@ -444,10 +469,15 @@ public:
|
|||||||
std::vector<cvm::rvector> velocities() const;
|
std::vector<cvm::rvector> velocities() const;
|
||||||
|
|
||||||
///\brief Calculate the dipole of the atom group around the specified center
|
///\brief Calculate the dipole of the atom group around the specified center
|
||||||
int calc_dipole(cvm::atom_pos const &com);
|
int calc_dipole(cvm::atom_pos const &dipole_center);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
/// Dipole moment of the atom group
|
||||||
cvm::rvector dip;
|
cvm::rvector dip;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
///\brief Return the (previously calculated) dipole of the atom group
|
///\brief Return the (previously calculated) dipole of the atom group
|
||||||
inline cvm::rvector dipole() const
|
inline cvm::rvector dipole() const
|
||||||
{
|
{
|
||||||
|
|||||||
@ -17,15 +17,14 @@
|
|||||||
colvarbias::colvarbias(char const *key)
|
colvarbias::colvarbias(char const *key)
|
||||||
: bias_type(to_lower_cppstr(key))
|
: bias_type(to_lower_cppstr(key))
|
||||||
{
|
{
|
||||||
init_cvb_requires();
|
description = "uninitialized " + cvm::to_str(key) + " bias";
|
||||||
|
init_dependencies();
|
||||||
rank = 1;
|
rank = 1;
|
||||||
|
|
||||||
has_data = false;
|
has_data = false;
|
||||||
b_output_energy = false;
|
b_output_energy = false;
|
||||||
reset();
|
reset();
|
||||||
state_file_step = 0;
|
state_file_step = 0L;
|
||||||
description = "uninitialized " + cvm::to_str(key) + " bias";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -76,6 +75,7 @@ int colvarbias::init(std::string const &conf)
|
|||||||
cvm::error("Error: no collective variables specified.\n", INPUT_ERROR);
|
cvm::error("Error: no collective variables specified.\n", INPUT_ERROR);
|
||||||
return INPUT_ERROR;
|
return INPUT_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
cvm::log("Reinitializing bias \""+name+"\".\n");
|
cvm::log("Reinitializing bias \""+name+"\".\n");
|
||||||
}
|
}
|
||||||
@ -98,6 +98,70 @@ int colvarbias::init(std::string const &conf)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int colvarbias::init_dependencies() {
|
||||||
|
int i;
|
||||||
|
if (features().size() == 0) {
|
||||||
|
for (i = 0; i < f_cvb_ntot; i++) {
|
||||||
|
modify_features().push_back(new feature);
|
||||||
|
}
|
||||||
|
|
||||||
|
init_feature(f_cvb_active, "active", f_type_dynamic);
|
||||||
|
require_feature_children(f_cvb_active, f_cv_active);
|
||||||
|
|
||||||
|
init_feature(f_cvb_awake, "awake", f_type_static);
|
||||||
|
require_feature_self(f_cvb_awake, f_cvb_active);
|
||||||
|
|
||||||
|
init_feature(f_cvb_apply_force, "apply force", f_type_user);
|
||||||
|
require_feature_children(f_cvb_apply_force, f_cv_gradient);
|
||||||
|
|
||||||
|
init_feature(f_cvb_get_total_force, "obtain total force", f_type_dynamic);
|
||||||
|
require_feature_children(f_cvb_get_total_force, f_cv_total_force);
|
||||||
|
|
||||||
|
init_feature(f_cvb_output_acc_work, "output accumulated work", f_type_user);
|
||||||
|
require_feature_self(f_cvb_output_acc_work, f_cvb_apply_force);
|
||||||
|
|
||||||
|
init_feature(f_cvb_history_dependent, "history-dependent", f_type_static);
|
||||||
|
|
||||||
|
init_feature(f_cvb_time_dependent, "time-dependent", f_type_static);
|
||||||
|
|
||||||
|
init_feature(f_cvb_scalar_variables, "require scalar variables", f_type_static);
|
||||||
|
require_feature_children(f_cvb_scalar_variables, f_cv_scalar);
|
||||||
|
|
||||||
|
init_feature(f_cvb_calc_pmf, "calculate a PMF", f_type_static);
|
||||||
|
|
||||||
|
init_feature(f_cvb_calc_ti_samples, "calculate TI samples", f_type_dynamic);
|
||||||
|
require_feature_self(f_cvb_calc_ti_samples, f_cvb_get_total_force);
|
||||||
|
require_feature_children(f_cvb_calc_ti_samples, f_cv_grid);
|
||||||
|
|
||||||
|
init_feature(f_cvb_write_ti_samples, "write TI samples ", f_type_user);
|
||||||
|
require_feature_self(f_cvb_write_ti_samples, f_cvb_calc_ti_samples);
|
||||||
|
|
||||||
|
init_feature(f_cvb_write_ti_pmf, "write TI PMF", f_type_user);
|
||||||
|
require_feature_self(f_cvb_write_ti_pmf, f_cvb_calc_ti_samples);
|
||||||
|
|
||||||
|
// check that everything is initialized
|
||||||
|
for (i = 0; i < colvardeps::f_cvb_ntot; i++) {
|
||||||
|
if (is_not_set(i)) {
|
||||||
|
cvm::error("Uninitialized feature " + cvm::to_str(i) + " in " + description);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Initialize feature_states for each instance
|
||||||
|
feature_states.reserve(f_cvb_ntot);
|
||||||
|
for (i = 0; i < f_cvb_ntot; i++) {
|
||||||
|
feature_states.push_back(feature_state(true, false));
|
||||||
|
// Most features are available, so we set them so
|
||||||
|
// and list exceptions below
|
||||||
|
}
|
||||||
|
|
||||||
|
// only compute TI samples when deriving from colvarbias_ti
|
||||||
|
feature_states[f_cvb_calc_ti_samples].available = false;
|
||||||
|
|
||||||
|
return COLVARS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int colvarbias::reset()
|
int colvarbias::reset()
|
||||||
{
|
{
|
||||||
bias_energy = 0.0;
|
bias_energy = 0.0;
|
||||||
@ -217,6 +281,9 @@ int colvarbias::update()
|
|||||||
|
|
||||||
void colvarbias::communicate_forces()
|
void colvarbias::communicate_forces()
|
||||||
{
|
{
|
||||||
|
if (! is_enabled(f_cvb_apply_force)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
for (i = 0; i < num_variables(); i++) {
|
for (i = 0; i < num_variables(); i++) {
|
||||||
if (cvm::debug()) {
|
if (cvm::debug()) {
|
||||||
@ -345,7 +412,8 @@ std::istream & colvarbias::read_state(std::istream &is)
|
|||||||
(set_state_params(conf) != COLVARS_OK) ) {
|
(set_state_params(conf) != COLVARS_OK) ) {
|
||||||
cvm::error("Error: in reading state configuration for \""+bias_type+"\" bias \""+
|
cvm::error("Error: in reading state configuration for \""+bias_type+"\" bias \""+
|
||||||
this->name+"\" at position "+
|
this->name+"\" at position "+
|
||||||
cvm::to_str(is.tellg())+" in stream.\n", INPUT_ERROR);
|
cvm::to_str(static_cast<size_t>(is.tellg()))+
|
||||||
|
" in stream.\n", INPUT_ERROR);
|
||||||
is.clear();
|
is.clear();
|
||||||
is.seekg(start_pos, std::ios::beg);
|
is.seekg(start_pos, std::ios::beg);
|
||||||
is.setstate(std::ios::failbit);
|
is.setstate(std::ios::failbit);
|
||||||
@ -355,7 +423,8 @@ std::istream & colvarbias::read_state(std::istream &is)
|
|||||||
if (!read_state_data(is)) {
|
if (!read_state_data(is)) {
|
||||||
cvm::error("Error: in reading state data for \""+bias_type+"\" bias \""+
|
cvm::error("Error: in reading state data for \""+bias_type+"\" bias \""+
|
||||||
this->name+"\" at position "+
|
this->name+"\" at position "+
|
||||||
cvm::to_str(is.tellg())+" in stream.\n", INPUT_ERROR);
|
cvm::to_str(static_cast<size_t>(is.tellg()))+
|
||||||
|
" in stream.\n", INPUT_ERROR);
|
||||||
is.clear();
|
is.clear();
|
||||||
is.seekg(start_pos, std::ios::beg);
|
is.seekg(start_pos, std::ios::beg);
|
||||||
is.setstate(std::ios::failbit);
|
is.setstate(std::ios::failbit);
|
||||||
@ -365,7 +434,8 @@ std::istream & colvarbias::read_state(std::istream &is)
|
|||||||
if (brace != "}") {
|
if (brace != "}") {
|
||||||
cvm::error("Error: corrupt restart information for \""+bias_type+"\" bias \""+
|
cvm::error("Error: corrupt restart information for \""+bias_type+"\" bias \""+
|
||||||
this->name+"\": no matching brace at position "+
|
this->name+"\": no matching brace at position "+
|
||||||
cvm::to_str(is.tellg())+" in stream.\n");
|
cvm::to_str(static_cast<size_t>(is.tellg()))+
|
||||||
|
" in stream.\n");
|
||||||
is.setstate(std::ios::failbit);
|
is.setstate(std::ios::failbit);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -381,7 +451,8 @@ std::istream & colvarbias::read_state_data_key(std::istream &is, char const *key
|
|||||||
!(key_in == to_lower_cppstr(std::string(key))) ) {
|
!(key_in == to_lower_cppstr(std::string(key))) ) {
|
||||||
cvm::error("Error: in reading restart configuration for "+
|
cvm::error("Error: in reading restart configuration for "+
|
||||||
bias_type+" bias \""+this->name+"\" at position "+
|
bias_type+" bias \""+this->name+"\" at position "+
|
||||||
cvm::to_str(is.tellg())+" in stream.\n", INPUT_ERROR);
|
cvm::to_str(static_cast<size_t>(is.tellg()))+
|
||||||
|
" in stream.\n", INPUT_ERROR);
|
||||||
is.clear();
|
is.clear();
|
||||||
is.seekg(start_pos, std::ios::beg);
|
is.seekg(start_pos, std::ios::beg);
|
||||||
is.setstate(std::ios::failbit);
|
is.setstate(std::ios::failbit);
|
||||||
@ -640,7 +711,7 @@ int colvarbias_ti::write_output_files()
|
|||||||
cvm::proxy->close_output_stream(ti_count_file_name);
|
cvm::proxy->close_output_stream(ti_count_file_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string const ti_grad_file_name(ti_output_prefix+".ti.grad");
|
std::string const ti_grad_file_name(ti_output_prefix+".ti.force");
|
||||||
os = cvm::proxy->output_stream(ti_grad_file_name);
|
os = cvm::proxy->output_stream(ti_grad_file_name);
|
||||||
if (os) {
|
if (os) {
|
||||||
ti_avg_forces->write_multicol(*os);
|
ti_avg_forces->write_multicol(*os);
|
||||||
|
|||||||
@ -96,6 +96,9 @@ public:
|
|||||||
/// \brief Parse config string and (re)initialize
|
/// \brief Parse config string and (re)initialize
|
||||||
virtual int init(std::string const &conf);
|
virtual int init(std::string const &conf);
|
||||||
|
|
||||||
|
/// \brief Initialize dependency tree
|
||||||
|
virtual int init_dependencies();
|
||||||
|
|
||||||
/// \brief Set to zero all mutable data
|
/// \brief Set to zero all mutable data
|
||||||
virtual int reset();
|
virtual int reset();
|
||||||
|
|
||||||
@ -181,7 +184,7 @@ public:
|
|||||||
static std::vector<feature *> cvb_features;
|
static std::vector<feature *> cvb_features;
|
||||||
|
|
||||||
/// \brief Implementation of the feature list accessor for colvarbias
|
/// \brief Implementation of the feature list accessor for colvarbias
|
||||||
virtual const std::vector<feature *> &features()
|
virtual const std::vector<feature *> &features() const
|
||||||
{
|
{
|
||||||
return cvb_features;
|
return cvb_features;
|
||||||
}
|
}
|
||||||
@ -220,7 +223,7 @@ protected:
|
|||||||
bool has_data;
|
bool has_data;
|
||||||
|
|
||||||
/// \brief Step number read from the last state file
|
/// \brief Step number read from the last state file
|
||||||
size_t state_file_step;
|
cvm::step_number state_file_step;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -191,10 +191,10 @@ int colvarbias_abf::init(std::string const &conf)
|
|||||||
// Projected ABF
|
// Projected ABF
|
||||||
get_keyval(conf, "pABFintegrateFreq", pabf_freq, 0);
|
get_keyval(conf, "pABFintegrateFreq", pabf_freq, 0);
|
||||||
// Parameters for integrating initial (and final) gradient data
|
// Parameters for integrating initial (and final) gradient data
|
||||||
get_keyval(conf, "integrateInitSteps", integrate_initial_steps, 1e4);
|
get_keyval(conf, "integrateInitMaxIterations", integrate_initial_iterations, 1e4);
|
||||||
get_keyval(conf, "integrateInitTol", integrate_initial_tol, 1e-6);
|
get_keyval(conf, "integrateInitTol", integrate_initial_tol, 1e-6);
|
||||||
// for updating the integrated PMF on the fly
|
// for updating the integrated PMF on the fly
|
||||||
get_keyval(conf, "integrateSteps", integrate_steps, 100);
|
get_keyval(conf, "integrateMaxIterations", integrate_iterations, 100);
|
||||||
get_keyval(conf, "integrateTol", integrate_tol, 1e-4);
|
get_keyval(conf, "integrateTol", integrate_tol, 1e-4);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -366,10 +366,10 @@ int colvarbias_abf::update()
|
|||||||
if ( b_integrate ) {
|
if ( b_integrate ) {
|
||||||
if ( pabf_freq && cvm::step_relative() % pabf_freq == 0 ) {
|
if ( pabf_freq && cvm::step_relative() % pabf_freq == 0 ) {
|
||||||
cvm::real err;
|
cvm::real err;
|
||||||
int iter = pmf->integrate(integrate_steps, integrate_tol, err);
|
int iter = pmf->integrate(integrate_iterations, integrate_tol, err);
|
||||||
if ( iter == integrate_steps ) {
|
if ( iter == integrate_iterations ) {
|
||||||
cvm::log("Warning: PMF integration did not converge to " + cvm::to_str(integrate_tol)
|
cvm::log("Warning: PMF integration did not converge to " + cvm::to_str(integrate_tol)
|
||||||
+ " in " + cvm::to_str(integrate_steps)
|
+ " in " + cvm::to_str(integrate_iterations)
|
||||||
+ " steps. Residual error: " + cvm::to_str(err));
|
+ " steps. Residual error: " + cvm::to_str(err));
|
||||||
}
|
}
|
||||||
pmf->set_zero_minimum(); // TODO: do this only when necessary
|
pmf->set_zero_minimum(); // TODO: do this only when necessary
|
||||||
@ -597,7 +597,7 @@ void colvarbias_abf::write_gradients_samples(const std::string &prefix, bool app
|
|||||||
if (b_integrate) {
|
if (b_integrate) {
|
||||||
// Do numerical integration (to high precision) and output a PMF
|
// Do numerical integration (to high precision) and output a PMF
|
||||||
cvm::real err;
|
cvm::real err;
|
||||||
pmf->integrate(integrate_initial_steps, integrate_initial_tol, err);
|
pmf->integrate(integrate_initial_iterations, integrate_initial_tol, err);
|
||||||
pmf->set_zero_minimum();
|
pmf->set_zero_minimum();
|
||||||
|
|
||||||
std::string pmf_out_name = prefix + ".pmf";
|
std::string pmf_out_name = prefix + ".pmf";
|
||||||
@ -661,7 +661,7 @@ void colvarbias_abf::write_gradients_samples(const std::string &prefix, bool app
|
|||||||
// Do numerical integration (to high precision) and output a PMF
|
// Do numerical integration (to high precision) and output a PMF
|
||||||
cvm::real err;
|
cvm::real err;
|
||||||
czar_pmf->set_div();
|
czar_pmf->set_div();
|
||||||
czar_pmf->integrate(integrate_initial_steps, integrate_initial_tol, err);
|
czar_pmf->integrate(integrate_initial_iterations, integrate_initial_tol, err);
|
||||||
czar_pmf->set_zero_minimum();
|
czar_pmf->set_zero_minimum();
|
||||||
|
|
||||||
std::string czar_pmf_out_name = prefix + ".czar.pmf";
|
std::string czar_pmf_out_name = prefix + ".czar.pmf";
|
||||||
|
|||||||
@ -27,9 +27,13 @@ class colvarbias_abf : public colvarbias {
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
/// Constructor for ABF bias
|
||||||
colvarbias_abf(char const *key);
|
colvarbias_abf(char const *key);
|
||||||
|
/// Initializer for ABF bias
|
||||||
virtual int init(std::string const &conf);
|
virtual int init(std::string const &conf);
|
||||||
|
/// Default destructor for ABF bias
|
||||||
virtual ~colvarbias_abf();
|
virtual ~colvarbias_abf();
|
||||||
|
/// Per-timestep update of ABF bias
|
||||||
virtual int update();
|
virtual int update();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@ -40,11 +44,17 @@ private:
|
|||||||
/// Base filename(s) for reading previous gradient data (replaces data from restart file)
|
/// Base filename(s) for reading previous gradient data (replaces data from restart file)
|
||||||
std::vector<std::string> input_prefix;
|
std::vector<std::string> input_prefix;
|
||||||
|
|
||||||
|
/// Adapt the bias at each time step (as opposed to keeping it constant)?
|
||||||
bool update_bias;
|
bool update_bias;
|
||||||
|
/// Use normalized definition of PMF for distance functions? (flat at long distances)
|
||||||
|
/// by including the Jacobian term separately of the recorded PMF
|
||||||
bool hide_Jacobian;
|
bool hide_Jacobian;
|
||||||
|
/// Integrate gradients into a PMF on output
|
||||||
bool b_integrate;
|
bool b_integrate;
|
||||||
|
|
||||||
|
/// Number of samples per bin before applying the full biasing force
|
||||||
size_t full_samples;
|
size_t full_samples;
|
||||||
|
/// Number of samples per bin before applying a scaled-down biasing force
|
||||||
size_t min_samples;
|
size_t min_samples;
|
||||||
/// frequency for updating output files
|
/// frequency for updating output files
|
||||||
int output_freq;
|
int output_freq;
|
||||||
@ -52,6 +62,7 @@ private:
|
|||||||
bool b_history_files;
|
bool b_history_files;
|
||||||
/// Write CZAR output file for stratified eABF (.zgrad)
|
/// Write CZAR output file for stratified eABF (.zgrad)
|
||||||
bool b_czar_window_file;
|
bool b_czar_window_file;
|
||||||
|
/// Number of timesteps between recording data in history files (if non-zero)
|
||||||
size_t history_freq;
|
size_t history_freq;
|
||||||
/// Umbrella Integration estimator of free energy from eABF
|
/// Umbrella Integration estimator of free energy from eABF
|
||||||
UIestimator::UIestimator eabf_UI;
|
UIestimator::UIestimator eabf_UI;
|
||||||
@ -63,25 +74,30 @@ private:
|
|||||||
/// Frequency for updating pABF PMF (if zero, pABF is not used)
|
/// Frequency for updating pABF PMF (if zero, pABF is not used)
|
||||||
int pabf_freq;
|
int pabf_freq;
|
||||||
/// Max number of CG iterations for integrating PMF at startup and for file output
|
/// Max number of CG iterations for integrating PMF at startup and for file output
|
||||||
int integrate_initial_steps;
|
int integrate_initial_iterations;
|
||||||
/// Tolerance for integrating PMF at startup and for file output
|
/// Tolerance for integrating PMF at startup and for file output
|
||||||
cvm::real integrate_initial_tol;
|
cvm::real integrate_initial_tol;
|
||||||
/// Max number of CG iterations for integrating PMF at on-the-fly pABF updates
|
/// Max number of CG iterations for integrating PMF at on-the-fly pABF updates
|
||||||
int integrate_steps;
|
int integrate_iterations;
|
||||||
/// Tolerance for integrating PMF at on-the-fly pABF updates
|
/// Tolerance for integrating PMF at on-the-fly pABF updates
|
||||||
cvm::real integrate_tol;
|
cvm::real integrate_tol;
|
||||||
|
|
||||||
/// Cap the biasing force to be applied?
|
/// Cap the biasing force to be applied? (option maxForce)
|
||||||
bool cap_force;
|
bool cap_force;
|
||||||
|
/// Maximum force to be applied
|
||||||
std::vector<cvm::real> max_force;
|
std::vector<cvm::real> max_force;
|
||||||
|
|
||||||
// Frequency for updating 2D gradients
|
|
||||||
int integrate_freq;
|
|
||||||
|
|
||||||
// Internal data and methods
|
// Internal data and methods
|
||||||
|
|
||||||
std::vector<int> bin, force_bin, z_bin;
|
/// Current bin in sample grid
|
||||||
gradient_t system_force, applied_force;
|
std::vector<int> bin;
|
||||||
|
/// Current bin in force grid
|
||||||
|
std::vector<int> force_bin;
|
||||||
|
/// Cuurent bin in "actual" coordinate, when running extended Lagrangian dynamics
|
||||||
|
std::vector<int> z_bin;
|
||||||
|
|
||||||
|
/// Measured instantaneous system force
|
||||||
|
gradient_t system_force;
|
||||||
|
|
||||||
/// n-dim grid of free energy gradients
|
/// n-dim grid of free energy gradients
|
||||||
colvar_grid_gradient *gradients;
|
colvar_grid_gradient *gradients;
|
||||||
@ -118,7 +134,7 @@ private:
|
|||||||
// shared ABF
|
// shared ABF
|
||||||
bool shared_on;
|
bool shared_on;
|
||||||
size_t shared_freq;
|
size_t shared_freq;
|
||||||
int shared_last_step;
|
cvm::step_number shared_last_step;
|
||||||
// Share between replicas -- may be called independently of update
|
// Share between replicas -- may be called independently of update
|
||||||
virtual int replica_share();
|
virtual int replica_share();
|
||||||
|
|
||||||
|
|||||||
@ -37,7 +37,7 @@ protected:
|
|||||||
std::string out_name, out_name_dx;
|
std::string out_name, out_name_dx;
|
||||||
size_t output_freq;
|
size_t output_freq;
|
||||||
|
|
||||||
/// If one or more of the variables are \link type_vector \endlink, treat them as arrays of this length
|
/// If one or more of the variables are \link colvarvalue::type_vector \endlink, treat them as arrays of this length
|
||||||
size_t colvar_array_size;
|
size_t colvar_array_size;
|
||||||
/// If colvar_array_size is larger than 1, weigh each one by this number before accumulating the histogram
|
/// If colvar_array_size is larger than 1, weigh each one by this number before accumulating the histogram
|
||||||
std::vector<cvm::real> weights;
|
std::vector<cvm::real> weights;
|
||||||
|
|||||||
@ -11,7 +11,6 @@
|
|||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <iomanip>
|
#include <iomanip>
|
||||||
#include <cmath>
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
// used to set the absolute path of a replica file
|
// used to set the absolute path of a replica file
|
||||||
@ -39,6 +38,8 @@ colvarbias_meta::colvarbias_meta(char const *key)
|
|||||||
new_hills_begin = hills.end();
|
new_hills_begin = hills.end();
|
||||||
hills_traj_os = NULL;
|
hills_traj_os = NULL;
|
||||||
replica_hills_os = NULL;
|
replica_hills_os = NULL;
|
||||||
|
|
||||||
|
ebmeta_equil_steps = 0L;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -61,7 +62,7 @@ int colvarbias_meta::init(std::string const &conf)
|
|||||||
enable(f_cvb_history_dependent);
|
enable(f_cvb_history_dependent);
|
||||||
}
|
}
|
||||||
|
|
||||||
get_keyval(conf, "hillWidth", hill_width, std::sqrt(2.0 * PI) / 2.0);
|
get_keyval(conf, "hillWidth", hill_width, cvm::sqrt(2.0 * PI) / 2.0);
|
||||||
cvm::log("Half-widths of the Gaussian hills (sigma's):\n");
|
cvm::log("Half-widths of the Gaussian hills (sigma's):\n");
|
||||||
for (size_t i = 0; i < num_variables(); i++) {
|
for (size_t i = 0; i < num_variables(); i++) {
|
||||||
cvm::log(variables(i)->name+std::string(": ")+
|
cvm::log(variables(i)->name+std::string(": ")+
|
||||||
@ -201,6 +202,7 @@ int colvarbias_meta::init_ebmeta_params(std::string const &conf)
|
|||||||
}
|
}
|
||||||
target_dist = new colvar_grid_scalar();
|
target_dist = new colvar_grid_scalar();
|
||||||
target_dist->init_from_colvars(colvars);
|
target_dist->init_from_colvars(colvars);
|
||||||
|
std::string target_dist_file;
|
||||||
get_keyval(conf, "targetdistfile", target_dist_file);
|
get_keyval(conf, "targetdistfile", target_dist_file);
|
||||||
std::ifstream targetdiststream(target_dist_file.c_str());
|
std::ifstream targetdiststream(target_dist_file.c_str());
|
||||||
target_dist->read_multicol(targetdiststream);
|
target_dist->read_multicol(targetdiststream);
|
||||||
@ -221,9 +223,9 @@ int colvarbias_meta::init_ebmeta_params(std::string const &conf)
|
|||||||
}
|
}
|
||||||
// normalize target distribution and multiply by effective volume = exp(differential entropy)
|
// normalize target distribution and multiply by effective volume = exp(differential entropy)
|
||||||
target_dist->multiply_constant(1.0/target_dist->integral());
|
target_dist->multiply_constant(1.0/target_dist->integral());
|
||||||
cvm::real volume = std::exp(target_dist->entropy());
|
cvm::real volume = cvm::exp(target_dist->entropy());
|
||||||
target_dist->multiply_constant(volume);
|
target_dist->multiply_constant(volume);
|
||||||
get_keyval(conf, "ebMetaEquilSteps", ebmeta_equil_steps, 0);
|
get_keyval(conf, "ebMetaEquilSteps", ebmeta_equil_steps, ebmeta_equil_steps);
|
||||||
}
|
}
|
||||||
|
|
||||||
return COLVARS_OK;
|
return COLVARS_OK;
|
||||||
@ -291,7 +293,7 @@ colvarbias_meta::create_hill(colvarbias_meta::hill const &h)
|
|||||||
// need to be computed analytically when the colvar returns
|
// need to be computed analytically when the colvar returns
|
||||||
// off-grid
|
// off-grid
|
||||||
cvm::real const min_dist = hills_energy->bin_distance_from_boundaries(h.centers, true);
|
cvm::real const min_dist = hills_energy->bin_distance_from_boundaries(h.centers, true);
|
||||||
if (min_dist < (3.0 * std::floor(hill_width)) + 1.0) {
|
if (min_dist < (3.0 * cvm::floor(hill_width)) + 1.0) {
|
||||||
hills_off_grid.push_back(h);
|
hills_off_grid.push_back(h);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -387,7 +389,7 @@ int colvarbias_meta::update_grid_params()
|
|||||||
// first of all, expand the grids, if specified
|
// first of all, expand the grids, if specified
|
||||||
bool changed_grids = false;
|
bool changed_grids = false;
|
||||||
int const min_buffer =
|
int const min_buffer =
|
||||||
(3 * (size_t) std::floor(hill_width)) + 1;
|
(3 * (size_t) cvm::floor(hill_width)) + 1;
|
||||||
|
|
||||||
std::vector<int> new_sizes(hills_energy->sizes());
|
std::vector<int> new_sizes(hills_energy->sizes());
|
||||||
std::vector<colvarvalue> new_lower_boundaries(hills_energy->lower_boundaries);
|
std::vector<colvarvalue> new_lower_boundaries(hills_energy->lower_boundaries);
|
||||||
@ -492,9 +494,9 @@ int colvarbias_meta::update_bias()
|
|||||||
|
|
||||||
if (ebmeta) {
|
if (ebmeta) {
|
||||||
hills_scale *= 1.0/target_dist->value(target_dist->get_colvars_index());
|
hills_scale *= 1.0/target_dist->value(target_dist->get_colvars_index());
|
||||||
if(cvm::step_absolute() <= long(ebmeta_equil_steps)) {
|
if(cvm::step_absolute() <= ebmeta_equil_steps) {
|
||||||
cvm::real const hills_lambda =
|
cvm::real const hills_lambda =
|
||||||
(cvm::real(long(ebmeta_equil_steps) - cvm::step_absolute())) /
|
(cvm::real(ebmeta_equil_steps - cvm::step_absolute())) /
|
||||||
(cvm::real(ebmeta_equil_steps));
|
(cvm::real(ebmeta_equil_steps));
|
||||||
hills_scale = hills_lambda + (1-hills_lambda)*hills_scale;
|
hills_scale = hills_lambda + (1-hills_lambda)*hills_scale;
|
||||||
}
|
}
|
||||||
@ -508,7 +510,7 @@ int colvarbias_meta::update_bias()
|
|||||||
} else {
|
} else {
|
||||||
calc_hills(new_hills_begin, hills.end(), hills_energy_sum_here);
|
calc_hills(new_hills_begin, hills.end(), hills_energy_sum_here);
|
||||||
}
|
}
|
||||||
hills_scale *= std::exp(-1.0*hills_energy_sum_here/(bias_temperature*cvm::boltzmann()));
|
hills_scale *= cvm::exp(-1.0*hills_energy_sum_here/(bias_temperature*cvm::boltzmann()));
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (comm) {
|
switch (comm) {
|
||||||
@ -710,7 +712,7 @@ void colvarbias_meta::calc_hills(colvarbias_meta::hill_iter h_first,
|
|||||||
// set it to zero if the exponent is more negative than log(1.0E-05)
|
// set it to zero if the exponent is more negative than log(1.0E-05)
|
||||||
h->value(0.0);
|
h->value(0.0);
|
||||||
} else {
|
} else {
|
||||||
h->value(std::exp(-0.5*cv_sqdev));
|
h->value(cvm::exp(-0.5*cv_sqdev));
|
||||||
}
|
}
|
||||||
energy += h->energy();
|
energy += h->energy();
|
||||||
}
|
}
|
||||||
@ -904,7 +906,7 @@ void colvarbias_meta::recount_hills_off_grid(colvarbias_meta::hill_iter h_first
|
|||||||
|
|
||||||
for (hill_iter h = h_first; h != h_last; h++) {
|
for (hill_iter h = h_first; h != h_last; h++) {
|
||||||
cvm::real const min_dist = hills_energy->bin_distance_from_boundaries(h->centers, true);
|
cvm::real const min_dist = hills_energy->bin_distance_from_boundaries(h->centers, true);
|
||||||
if (min_dist < (3.0 * std::floor(hill_width)) + 1.0) {
|
if (min_dist < (3.0 * cvm::floor(hill_width)) + 1.0) {
|
||||||
hills_off_grid.push_back(*h);
|
hills_off_grid.push_back(*h);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1427,8 +1429,8 @@ std::istream & colvarbias_meta::read_hill(std::istream &is)
|
|||||||
return is;
|
return is;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t h_it;
|
cvm::step_number h_it;
|
||||||
get_keyval(data, "step", h_it, 0, parse_silent);
|
get_keyval(data, "step", h_it, 0L, parse_silent);
|
||||||
if (h_it <= state_file_step) {
|
if (h_it <= state_file_step) {
|
||||||
if (cvm::debug())
|
if (cvm::debug())
|
||||||
cvm::log("Skipping a hill older than the state file for metadynamics bias \""+
|
cvm::log("Skipping a hill older than the state file for metadynamics bias \""+
|
||||||
@ -1457,7 +1459,7 @@ std::istream & colvarbias_meta::read_hill(std::istream &is)
|
|||||||
|
|
||||||
std::vector<cvm::real> h_widths(num_variables());
|
std::vector<cvm::real> h_widths(num_variables());
|
||||||
get_keyval(data, "widths", h_widths,
|
get_keyval(data, "widths", h_widths,
|
||||||
std::vector<cvm::real>(num_variables(), (std::sqrt(2.0 * PI) / 2.0)),
|
std::vector<cvm::real>(num_variables(), (cvm::sqrt(2.0 * PI) / 2.0)),
|
||||||
parse_silent);
|
parse_silent);
|
||||||
|
|
||||||
std::string h_replica = "";
|
std::string h_replica = "";
|
||||||
@ -1482,7 +1484,7 @@ std::istream & colvarbias_meta::read_hill(std::istream &is)
|
|||||||
// be computed analytically
|
// be computed analytically
|
||||||
cvm::real const min_dist =
|
cvm::real const min_dist =
|
||||||
hills_energy->bin_distance_from_boundaries((hills.back()).centers, true);
|
hills_energy->bin_distance_from_boundaries((hills.back()).centers, true);
|
||||||
if (min_dist < (3.0 * std::floor(hill_width)) + 1.0) {
|
if (min_dist < (3.0 * cvm::floor(hill_width)) + 1.0) {
|
||||||
hills_off_grid.push_back(hills.back());
|
hills_off_grid.push_back(hills.back());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -19,8 +19,8 @@
|
|||||||
#include "colvargrid.h"
|
#include "colvargrid.h"
|
||||||
|
|
||||||
/// Metadynamics bias (implementation of \link colvarbias \endlink)
|
/// Metadynamics bias (implementation of \link colvarbias \endlink)
|
||||||
class colvarbias_meta
|
class colvarbias_meta
|
||||||
: public virtual colvarbias,
|
: public virtual colvarbias,
|
||||||
public virtual colvarbias_ti
|
public virtual colvarbias_ti
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -174,12 +174,14 @@ protected:
|
|||||||
/// \brief Biasing temperature in well-tempered metadynamics
|
/// \brief Biasing temperature in well-tempered metadynamics
|
||||||
cvm::real bias_temperature;
|
cvm::real bias_temperature;
|
||||||
|
|
||||||
// EBmeta parameters
|
/// Ensemble-biased metadynamics (EBmeta) flag
|
||||||
bool ebmeta;
|
bool ebmeta;
|
||||||
|
|
||||||
|
/// Target distribution for EBmeta
|
||||||
colvar_grid_scalar* target_dist;
|
colvar_grid_scalar* target_dist;
|
||||||
std::string target_dist_file;
|
|
||||||
cvm::real target_dist_volume;
|
/// Number of equilibration steps for EBmeta
|
||||||
size_t ebmeta_equil_steps;
|
cvm::step_number ebmeta_equil_steps;
|
||||||
|
|
||||||
|
|
||||||
/// \brief Try to read the restart information by allocating new
|
/// \brief Try to read the restart information by allocating new
|
||||||
@ -285,7 +287,7 @@ public:
|
|||||||
friend class colvarbias_meta;
|
friend class colvarbias_meta;
|
||||||
|
|
||||||
/// Time step at which this hill was added
|
/// Time step at which this hill was added
|
||||||
size_t it;
|
cvm::step_number it;
|
||||||
|
|
||||||
/// Identity of the replica who added this hill (only in multiple replica simulations)
|
/// Identity of the replica who added this hill (only in multiple replica simulations)
|
||||||
std::string replica;
|
std::string replica;
|
||||||
@ -296,9 +298,9 @@ public:
|
|||||||
/// replica (optional) Identity of the replica which creates the
|
/// replica (optional) Identity of the replica which creates the
|
||||||
/// hill
|
/// hill
|
||||||
inline hill(cvm::real const &W_in,
|
inline hill(cvm::real const &W_in,
|
||||||
std::vector<colvar *> &cv,
|
std::vector<colvar *> &cv,
|
||||||
cvm::real const &hill_width,
|
cvm::real const &hill_width,
|
||||||
std::string const &replica_in = "")
|
std::string const &replica_in = "")
|
||||||
: sW(1.0),
|
: sW(1.0),
|
||||||
W(W_in),
|
W(W_in),
|
||||||
centers(cv.size()),
|
centers(cv.size()),
|
||||||
@ -325,11 +327,11 @@ public:
|
|||||||
/// weight Weight of the hill \param centers Center of the hill
|
/// weight Weight of the hill \param centers Center of the hill
|
||||||
/// \param widths Width of the hill around centers \param replica
|
/// \param widths Width of the hill around centers \param replica
|
||||||
/// (optional) Identity of the replica which creates the hill
|
/// (optional) Identity of the replica which creates the hill
|
||||||
inline hill(size_t const &it_in,
|
inline hill(cvm::step_number const &it_in,
|
||||||
cvm::real const &W_in,
|
cvm::real const &W_in,
|
||||||
std::vector<colvarvalue> const ¢ers_in,
|
std::vector<colvarvalue> const ¢ers_in,
|
||||||
std::vector<cvm::real> const &widths_in,
|
std::vector<cvm::real> const &widths_in,
|
||||||
std::string const &replica_in = "")
|
std::string const &replica_in = "")
|
||||||
: sW(1.0),
|
: sW(1.0),
|
||||||
W(W_in),
|
W(W_in),
|
||||||
centers(centers_in),
|
centers(centers_in),
|
||||||
|
|||||||
@ -7,8 +7,6 @@
|
|||||||
// If you wish to distribute your changes, please submit them to the
|
// If you wish to distribute your changes, please submit them to the
|
||||||
// Colvars repository at GitHub.
|
// Colvars repository at GitHub.
|
||||||
|
|
||||||
#include <cmath>
|
|
||||||
|
|
||||||
#include "colvarmodule.h"
|
#include "colvarmodule.h"
|
||||||
#include "colvarproxy.h"
|
#include "colvarproxy.h"
|
||||||
#include "colvarvalue.h"
|
#include "colvarvalue.h"
|
||||||
@ -179,7 +177,7 @@ int colvarbias_restraint_k::change_configuration(std::string const &conf)
|
|||||||
colvarbias_restraint_moving::colvarbias_restraint_moving(char const *key)
|
colvarbias_restraint_moving::colvarbias_restraint_moving(char const *key)
|
||||||
{
|
{
|
||||||
target_nstages = 0;
|
target_nstages = 0;
|
||||||
target_nsteps = 0;
|
target_nsteps = 0L;
|
||||||
stage = 0;
|
stage = 0;
|
||||||
acc_work = 0.0;
|
acc_work = 0.0;
|
||||||
b_chg_centers = false;
|
b_chg_centers = false;
|
||||||
@ -241,8 +239,8 @@ int colvarbias_restraint_moving::set_state_params(std::string const &conf)
|
|||||||
{
|
{
|
||||||
if (b_chg_centers || b_chg_force_k) {
|
if (b_chg_centers || b_chg_force_k) {
|
||||||
if (target_nstages) {
|
if (target_nstages) {
|
||||||
if (!get_keyval(conf, "stage", stage))
|
get_keyval(conf, "stage", stage, stage,
|
||||||
cvm::error("Error: current stage is missing from the restart.\n");
|
colvarparse::parse_restart | colvarparse::parse_required);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return COLVARS_OK;
|
return COLVARS_OK;
|
||||||
@ -436,13 +434,13 @@ int colvarbias_restraint_centers_moving::set_state_params(std::string const &con
|
|||||||
colvarbias_restraint::set_state_params(conf);
|
colvarbias_restraint::set_state_params(conf);
|
||||||
|
|
||||||
if (b_chg_centers) {
|
if (b_chg_centers) {
|
||||||
// cvm::log ("Reading the updated restraint centers from the restart.\n");
|
get_keyval(conf, "centers", colvar_centers, colvar_centers,
|
||||||
if (!get_keyval(conf, "centers", colvar_centers))
|
colvarparse::parse_restart | colvarparse::parse_required);
|
||||||
cvm::error("Error: restraint centers are missing from the restart.\n");
|
}
|
||||||
if (is_enabled(f_cvb_output_acc_work)) {
|
|
||||||
if (!get_keyval(conf, "accumulatedWork", acc_work))
|
if (is_enabled(f_cvb_output_acc_work)) {
|
||||||
cvm::error("Error: accumulatedWork is missing from the restart.\n");
|
get_keyval(conf, "accumulatedWork", acc_work, acc_work,
|
||||||
}
|
colvarparse::parse_restart | colvarparse::parse_required);
|
||||||
}
|
}
|
||||||
|
|
||||||
return COLVARS_OK;
|
return COLVARS_OK;
|
||||||
@ -563,7 +561,7 @@ int colvarbias_restraint_k_moving::update()
|
|||||||
lambda = 0.0;
|
lambda = 0.0;
|
||||||
}
|
}
|
||||||
force_k = starting_force_k + (target_force_k - starting_force_k)
|
force_k = starting_force_k + (target_force_k - starting_force_k)
|
||||||
* std::pow(lambda, force_k_exp);
|
* cvm::pow(lambda, force_k_exp);
|
||||||
cvm::log("Restraint " + this->name + ", stage " + cvm::to_str(stage)
|
cvm::log("Restraint " + this->name + ", stage " + cvm::to_str(stage)
|
||||||
+ " : lambda = " + cvm::to_str(lambda)
|
+ " : lambda = " + cvm::to_str(lambda)
|
||||||
+ ", k = " + cvm::to_str(force_k));
|
+ ", k = " + cvm::to_str(force_k));
|
||||||
@ -585,7 +583,7 @@ int colvarbias_restraint_k_moving::update()
|
|||||||
for (size_t i = 0; i < num_variables(); i++) {
|
for (size_t i = 0; i < num_variables(); i++) {
|
||||||
dU_dk += d_restraint_potential_dk(i);
|
dU_dk += d_restraint_potential_dk(i);
|
||||||
}
|
}
|
||||||
restraint_FE += force_k_exp * std::pow(lambda, force_k_exp - 1.0)
|
restraint_FE += force_k_exp * cvm::pow(lambda, force_k_exp - 1.0)
|
||||||
* (target_force_k - starting_force_k) * dU_dk;
|
* (target_force_k - starting_force_k) * dU_dk;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -608,7 +606,7 @@ int colvarbias_restraint_k_moving::update()
|
|||||||
lambda = cvm::real(stage) / cvm::real(target_nstages);
|
lambda = cvm::real(stage) / cvm::real(target_nstages);
|
||||||
}
|
}
|
||||||
force_k = starting_force_k + (target_force_k - starting_force_k)
|
force_k = starting_force_k + (target_force_k - starting_force_k)
|
||||||
* std::pow(lambda, force_k_exp);
|
* cvm::pow(lambda, force_k_exp);
|
||||||
cvm::log("Restraint " + this->name + ", stage " + cvm::to_str(stage)
|
cvm::log("Restraint " + this->name + ", stage " + cvm::to_str(stage)
|
||||||
+ " : lambda = " + cvm::to_str(lambda)
|
+ " : lambda = " + cvm::to_str(lambda)
|
||||||
+ ", k = " + cvm::to_str(force_k));
|
+ ", k = " + cvm::to_str(force_k));
|
||||||
@ -622,7 +620,7 @@ int colvarbias_restraint_k_moving::update()
|
|||||||
lambda = cvm::real(cvm::step_absolute()) / cvm::real(target_nsteps);
|
lambda = cvm::real(cvm::step_absolute()) / cvm::real(target_nsteps);
|
||||||
cvm::real const force_k_old = force_k;
|
cvm::real const force_k_old = force_k;
|
||||||
force_k = starting_force_k + (target_force_k - starting_force_k)
|
force_k = starting_force_k + (target_force_k - starting_force_k)
|
||||||
* std::pow(lambda, force_k_exp);
|
* cvm::pow(lambda, force_k_exp);
|
||||||
force_k_incr = force_k - force_k_old;
|
force_k_incr = force_k - force_k_old;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -672,13 +670,13 @@ int colvarbias_restraint_k_moving::set_state_params(std::string const &conf)
|
|||||||
colvarbias_restraint::set_state_params(conf);
|
colvarbias_restraint::set_state_params(conf);
|
||||||
|
|
||||||
if (b_chg_force_k) {
|
if (b_chg_force_k) {
|
||||||
// cvm::log ("Reading the updated force constant from the restart.\n");
|
get_keyval(conf, "forceConstant", force_k, force_k,
|
||||||
if (!get_keyval(conf, "forceConstant", force_k, force_k))
|
colvarparse::parse_restart | colvarparse::parse_required);
|
||||||
cvm::error("Error: force constant is missing from the restart.\n");
|
}
|
||||||
if (is_enabled(f_cvb_output_acc_work)) {
|
|
||||||
if (!get_keyval(conf, "accumulatedWork", acc_work))
|
if (is_enabled(f_cvb_output_acc_work)) {
|
||||||
cvm::error("Error: accumulatedWork is missing from the restart.\n");
|
get_keyval(conf, "accumulatedWork", acc_work, acc_work,
|
||||||
}
|
colvarparse::parse_restart | colvarparse::parse_required);
|
||||||
}
|
}
|
||||||
|
|
||||||
return COLVARS_OK;
|
return COLVARS_OK;
|
||||||
@ -719,7 +717,8 @@ std::istream & colvarbias_restraint::read_state(std::istream &is)
|
|||||||
(set_state_params(conf) != COLVARS_OK) ) {
|
(set_state_params(conf) != COLVARS_OK) ) {
|
||||||
cvm::error("Error: in reading state configuration for \""+bias_type+"\" bias \""+
|
cvm::error("Error: in reading state configuration for \""+bias_type+"\" bias \""+
|
||||||
this->name+"\" at position "+
|
this->name+"\" at position "+
|
||||||
cvm::to_str(is.tellg())+" in stream.\n", INPUT_ERROR);
|
cvm::to_str(static_cast<size_t>(is.tellg()))+
|
||||||
|
" in stream.\n", INPUT_ERROR);
|
||||||
is.clear();
|
is.clear();
|
||||||
is.seekg(start_pos, std::ios::beg);
|
is.seekg(start_pos, std::ios::beg);
|
||||||
is.setstate(std::ios::failbit);
|
is.setstate(std::ios::failbit);
|
||||||
@ -729,7 +728,8 @@ std::istream & colvarbias_restraint::read_state(std::istream &is)
|
|||||||
if (!read_state_data(is)) {
|
if (!read_state_data(is)) {
|
||||||
cvm::error("Error: in reading state data for \""+bias_type+"\" bias \""+
|
cvm::error("Error: in reading state data for \""+bias_type+"\" bias \""+
|
||||||
this->name+"\" at position "+
|
this->name+"\" at position "+
|
||||||
cvm::to_str(is.tellg())+" in stream.\n", INPUT_ERROR);
|
cvm::to_str(static_cast<size_t>(is.tellg()))+
|
||||||
|
" in stream.\n", INPUT_ERROR);
|
||||||
is.clear();
|
is.clear();
|
||||||
is.seekg(start_pos, std::ios::beg);
|
is.seekg(start_pos, std::ios::beg);
|
||||||
is.setstate(std::ios::failbit);
|
is.setstate(std::ios::failbit);
|
||||||
@ -740,7 +740,7 @@ std::istream & colvarbias_restraint::read_state(std::istream &is)
|
|||||||
cvm::log("brace = "+brace+"\n");
|
cvm::log("brace = "+brace+"\n");
|
||||||
cvm::error("Error: corrupt restart information for \""+bias_type+"\" bias \""+
|
cvm::error("Error: corrupt restart information for \""+bias_type+"\" bias \""+
|
||||||
this->name+"\": no matching brace at position "+
|
this->name+"\": no matching brace at position "+
|
||||||
cvm::to_str(is.tellg())+" in stream.\n");
|
cvm::to_str(static_cast<size_t>(is.tellg()))+" in stream.\n");
|
||||||
is.setstate(std::ios::failbit);
|
is.setstate(std::ios::failbit);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -787,11 +787,11 @@ int colvarbias_restraint_harmonic::init(std::string const &conf)
|
|||||||
colvarbias_restraint_k_moving::init(conf);
|
colvarbias_restraint_k_moving::init(conf);
|
||||||
|
|
||||||
for (size_t i = 0; i < num_variables(); i++) {
|
for (size_t i = 0; i < num_variables(); i++) {
|
||||||
if (variables(i)->width != 1.0)
|
cvm::real const w = variables(i)->width;
|
||||||
cvm::log("The force constant for colvar \""+variables(i)->name+
|
cvm::log("The force constant for colvar \""+variables(i)->name+
|
||||||
"\" will be rescaled to "+
|
"\" will be rescaled to "+
|
||||||
cvm::to_str(force_k / (variables(i)->width * variables(i)->width))+
|
cvm::to_str(force_k/(w*w))+
|
||||||
" according to the specified width.\n");
|
" according to the specified width ("+cvm::to_str(w)+").\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
return COLVARS_OK;
|
return COLVARS_OK;
|
||||||
@ -1014,7 +1014,7 @@ int colvarbias_restraint_harmonic_walls::init(std::string const &conf)
|
|||||||
INPUT_ERROR);
|
INPUT_ERROR);
|
||||||
return INPUT_ERROR;
|
return INPUT_ERROR;
|
||||||
}
|
}
|
||||||
force_k = std::sqrt(lower_wall_k * upper_wall_k);
|
force_k = cvm::sqrt(lower_wall_k * upper_wall_k);
|
||||||
// transform the two constants to relative values using gemetric mean as ref
|
// transform the two constants to relative values using gemetric mean as ref
|
||||||
// to preserve force_k if provided as single parameter
|
// to preserve force_k if provided as single parameter
|
||||||
// (allow changing both via force_k)
|
// (allow changing both via force_k)
|
||||||
@ -1037,25 +1037,21 @@ int colvarbias_restraint_harmonic_walls::init(std::string const &conf)
|
|||||||
|
|
||||||
if (lower_walls.size() > 0) {
|
if (lower_walls.size() > 0) {
|
||||||
for (i = 0; i < num_variables(); i++) {
|
for (i = 0; i < num_variables(); i++) {
|
||||||
if (variables(i)->width != 1.0)
|
cvm::real const w = variables(i)->width;
|
||||||
cvm::log("The lower wall force constant for colvar \""+
|
cvm::log("The lower wall force constant for colvar \""+
|
||||||
variables(i)->name+
|
variables(i)->name+"\" will be rescaled to "+
|
||||||
"\" will be rescaled to "+
|
cvm::to_str(lower_wall_k * force_k / (w*w))+
|
||||||
cvm::to_str(lower_wall_k * force_k /
|
" according to the specified width ("+cvm::to_str(w)+").\n");
|
||||||
(variables(i)->width * variables(i)->width))+
|
|
||||||
" according to the specified width.\n");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (upper_walls.size() > 0) {
|
if (upper_walls.size() > 0) {
|
||||||
for (i = 0; i < num_variables(); i++) {
|
for (i = 0; i < num_variables(); i++) {
|
||||||
if (variables(i)->width != 1.0)
|
cvm::real const w = variables(i)->width;
|
||||||
cvm::log("The upper wall force constant for colvar \""+
|
cvm::log("The upper wall force constant for colvar \""+
|
||||||
variables(i)->name+
|
variables(i)->name+"\" will be rescaled to "+
|
||||||
"\" will be rescaled to "+
|
cvm::to_str(upper_wall_k * force_k / (w*w))+
|
||||||
cvm::to_str(upper_wall_k * force_k /
|
" according to the specified width ("+cvm::to_str(w)+").\n");
|
||||||
(variables(i)->width * variables(i)->width))+
|
|
||||||
" according to the specified width.\n");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1225,11 +1221,11 @@ int colvarbias_restraint_linear::init(std::string const &conf)
|
|||||||
INPUT_ERROR);
|
INPUT_ERROR);
|
||||||
return INPUT_ERROR;
|
return INPUT_ERROR;
|
||||||
}
|
}
|
||||||
if (variables(i)->width != 1.0)
|
cvm::real const w = variables(i)->width;
|
||||||
cvm::log("The force constant for colvar \""+variables(i)->name+
|
cvm::log("The force constant for colvar \""+variables(i)->name+
|
||||||
"\" will be rescaled to "+
|
"\" will be rescaled to "+
|
||||||
cvm::to_str(force_k / variables(i)->width)+
|
cvm::to_str(force_k / w)+
|
||||||
" according to the specified width.\n");
|
" according to the specified width ("+cvm::to_str(w)+").\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
return COLVARS_OK;
|
return COLVARS_OK;
|
||||||
@ -1367,6 +1363,7 @@ colvarbias_restraint_histogram::colvarbias_restraint_histogram(char const *key)
|
|||||||
int colvarbias_restraint_histogram::init(std::string const &conf)
|
int colvarbias_restraint_histogram::init(std::string const &conf)
|
||||||
{
|
{
|
||||||
colvarbias::init(conf);
|
colvarbias::init(conf);
|
||||||
|
enable(f_cvb_apply_force);
|
||||||
|
|
||||||
get_keyval(conf, "lowerBoundary", lower_boundary, lower_boundary);
|
get_keyval(conf, "lowerBoundary", lower_boundary, lower_boundary);
|
||||||
get_keyval(conf, "upperBoundary", upper_boundary, upper_boundary);
|
get_keyval(conf, "upperBoundary", upper_boundary, upper_boundary);
|
||||||
@ -1390,7 +1387,7 @@ int colvarbias_restraint_histogram::init(std::string const &conf)
|
|||||||
cvm::real const nbins = (upper_boundary - lower_boundary) / width;
|
cvm::real const nbins = (upper_boundary - lower_boundary) / width;
|
||||||
int const nbins_round = (int)(nbins);
|
int const nbins_round = (int)(nbins);
|
||||||
|
|
||||||
if (std::fabs(nbins - cvm::real(nbins_round)) > 1.0E-10) {
|
if (cvm::fabs(nbins - cvm::real(nbins_round)) > 1.0E-10) {
|
||||||
cvm::log("Warning: grid interval ("+
|
cvm::log("Warning: grid interval ("+
|
||||||
cvm::to_str(lower_boundary, cvm::cv_width, cvm::cv_prec)+" - "+
|
cvm::to_str(lower_boundary, cvm::cv_width, cvm::cv_prec)+" - "+
|
||||||
cvm::to_str(upper_boundary, cvm::cv_width, cvm::cv_prec)+
|
cvm::to_str(upper_boundary, cvm::cv_width, cvm::cv_prec)+
|
||||||
@ -1440,7 +1437,7 @@ int colvarbias_restraint_histogram::init(std::string const &conf)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
cvm::real const ref_integral = ref_p.sum() * width;
|
cvm::real const ref_integral = ref_p.sum() * width;
|
||||||
if (std::fabs(ref_integral - 1.0) > 1.0e-03) {
|
if (cvm::fabs(ref_integral - 1.0) > 1.0e-03) {
|
||||||
cvm::log("Reference distribution not normalized, normalizing to unity.\n");
|
cvm::log("Reference distribution not normalized, normalizing to unity.\n");
|
||||||
ref_p /= ref_integral;
|
ref_p /= ref_integral;
|
||||||
}
|
}
|
||||||
@ -1471,7 +1468,7 @@ int colvarbias_restraint_histogram::update()
|
|||||||
vector_size += variables(icv)->value().size();
|
vector_size += variables(icv)->value().size();
|
||||||
}
|
}
|
||||||
|
|
||||||
cvm::real const norm = 1.0/(std::sqrt(2.0*PI)*gaussian_width*vector_size);
|
cvm::real const norm = 1.0/(cvm::sqrt(2.0*PI)*gaussian_width*vector_size);
|
||||||
|
|
||||||
// calculate the histogram
|
// calculate the histogram
|
||||||
p.reset();
|
p.reset();
|
||||||
@ -1482,7 +1479,7 @@ int colvarbias_restraint_histogram::update()
|
|||||||
size_t igrid;
|
size_t igrid;
|
||||||
for (igrid = 0; igrid < p.size(); igrid++) {
|
for (igrid = 0; igrid < p.size(); igrid++) {
|
||||||
cvm::real const x_grid = (lower_boundary + (igrid+0.5)*width);
|
cvm::real const x_grid = (lower_boundary + (igrid+0.5)*width);
|
||||||
p[igrid] += norm * std::exp(-1.0 * (x_grid - cv_value) * (x_grid - cv_value) /
|
p[igrid] += norm * cvm::exp(-1.0 * (x_grid - cv_value) * (x_grid - cv_value) /
|
||||||
(2.0 * gaussian_width * gaussian_width));
|
(2.0 * gaussian_width * gaussian_width));
|
||||||
}
|
}
|
||||||
} else if (cv.type() == colvarvalue::type_vector) {
|
} else if (cv.type() == colvarvalue::type_vector) {
|
||||||
@ -1492,7 +1489,7 @@ int colvarbias_restraint_histogram::update()
|
|||||||
size_t igrid;
|
size_t igrid;
|
||||||
for (igrid = 0; igrid < p.size(); igrid++) {
|
for (igrid = 0; igrid < p.size(); igrid++) {
|
||||||
cvm::real const x_grid = (lower_boundary + (igrid+0.5)*width);
|
cvm::real const x_grid = (lower_boundary + (igrid+0.5)*width);
|
||||||
p[igrid] += norm * std::exp(-1.0 * (x_grid - cv_value) * (x_grid - cv_value) /
|
p[igrid] += norm * cvm::exp(-1.0 * (x_grid - cv_value) * (x_grid - cv_value) /
|
||||||
(2.0 * gaussian_width * gaussian_width));
|
(2.0 * gaussian_width * gaussian_width));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1523,7 +1520,7 @@ int colvarbias_restraint_histogram::update()
|
|||||||
for (igrid = 0; igrid < p.size(); igrid++) {
|
for (igrid = 0; igrid < p.size(); igrid++) {
|
||||||
cvm::real const x_grid = (lower_boundary + (igrid+0.5)*width);
|
cvm::real const x_grid = (lower_boundary + (igrid+0.5)*width);
|
||||||
force += force_k_cv * p_diff[igrid] *
|
force += force_k_cv * p_diff[igrid] *
|
||||||
norm * std::exp(-1.0 * (x_grid - cv_value) * (x_grid - cv_value) /
|
norm * cvm::exp(-1.0 * (x_grid - cv_value) * (x_grid - cv_value) /
|
||||||
(2.0 * gaussian_width * gaussian_width)) *
|
(2.0 * gaussian_width * gaussian_width)) *
|
||||||
(-1.0 * (x_grid - cv_value) / (gaussian_width * gaussian_width));
|
(-1.0 * (x_grid - cv_value) / (gaussian_width * gaussian_width));
|
||||||
}
|
}
|
||||||
@ -1536,7 +1533,7 @@ int colvarbias_restraint_histogram::update()
|
|||||||
for (igrid = 0; igrid < p.size(); igrid++) {
|
for (igrid = 0; igrid < p.size(); igrid++) {
|
||||||
cvm::real const x_grid = (lower_boundary + (igrid+0.5)*width);
|
cvm::real const x_grid = (lower_boundary + (igrid+0.5)*width);
|
||||||
force += force_k_cv * p_diff[igrid] *
|
force += force_k_cv * p_diff[igrid] *
|
||||||
norm * std::exp(-1.0 * (x_grid - cv_value) * (x_grid - cv_value) /
|
norm * cvm::exp(-1.0 * (x_grid - cv_value) * (x_grid - cv_value) /
|
||||||
(2.0 * gaussian_width * gaussian_width)) *
|
(2.0 * gaussian_width * gaussian_width)) *
|
||||||
(-1.0 * (x_grid - cv_value) / (gaussian_width * gaussian_width));
|
(-1.0 * (x_grid - cv_value) / (gaussian_width * gaussian_width));
|
||||||
}
|
}
|
||||||
@ -1550,7 +1547,7 @@ int colvarbias_restraint_histogram::update()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
std::ostream & colvarbias_restraint_histogram::write_restart(std::ostream &os)
|
int colvarbias_restraint_histogram::write_output_files()
|
||||||
{
|
{
|
||||||
if (b_write_histogram) {
|
if (b_write_histogram) {
|
||||||
std::string file_name(cvm::output_prefix()+"."+this->name+".hist.dat");
|
std::string file_name(cvm::output_prefix()+"."+this->name+".hist.dat");
|
||||||
@ -1558,6 +1555,9 @@ std::ostream & colvarbias_restraint_histogram::write_restart(std::ostream &os)
|
|||||||
*os << "# " << cvm::wrap_string(variables(0)->name, cvm::cv_width)
|
*os << "# " << cvm::wrap_string(variables(0)->name, cvm::cv_width)
|
||||||
<< " " << "p(" << cvm::wrap_string(variables(0)->name, cvm::cv_width-3)
|
<< " " << "p(" << cvm::wrap_string(variables(0)->name, cvm::cv_width-3)
|
||||||
<< ")\n";
|
<< ")\n";
|
||||||
|
|
||||||
|
os->setf(std::ios::fixed, std::ios::floatfield);
|
||||||
|
|
||||||
size_t igrid;
|
size_t igrid;
|
||||||
for (igrid = 0; igrid < p.size(); igrid++) {
|
for (igrid = 0; igrid < p.size(); igrid++) {
|
||||||
cvm::real const x_grid = (lower_boundary + (igrid+1)*width);
|
cvm::real const x_grid = (lower_boundary + (igrid+1)*width);
|
||||||
@ -1572,13 +1572,7 @@ std::ostream & colvarbias_restraint_histogram::write_restart(std::ostream &os)
|
|||||||
}
|
}
|
||||||
cvm::proxy->close_output_stream(file_name);
|
cvm::proxy->close_output_stream(file_name);
|
||||||
}
|
}
|
||||||
return os;
|
return COLVARS_OK;
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
std::istream & colvarbias_restraint_histogram::read_restart(std::istream &is)
|
|
||||||
{
|
|
||||||
return is;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -132,7 +132,7 @@ protected:
|
|||||||
|
|
||||||
/// \brief Number of steps required to reach the target force constant
|
/// \brief Number of steps required to reach the target force constant
|
||||||
/// or restraint centers
|
/// or restraint centers
|
||||||
long target_nsteps;
|
cvm::step_number target_nsteps;
|
||||||
|
|
||||||
/// \brief Accumulated work (computed when outputAccumulatedWork == true)
|
/// \brief Accumulated work (computed when outputAccumulatedWork == true)
|
||||||
cvm::real acc_work;
|
cvm::real acc_work;
|
||||||
@ -328,8 +328,7 @@ public:
|
|||||||
|
|
||||||
virtual int update();
|
virtual int update();
|
||||||
|
|
||||||
virtual std::istream & read_restart(std::istream &is);
|
virtual int write_output_files();
|
||||||
virtual std::ostream & write_restart(std::ostream &os);
|
|
||||||
virtual std::ostream & write_traj_label(std::ostream &os);
|
virtual std::ostream & write_traj_label(std::ostream &os);
|
||||||
virtual std::ostream & write_traj(std::ostream &os);
|
virtual std::ostream & write_traj(std::ostream &os);
|
||||||
|
|
||||||
|
|||||||
@ -20,7 +20,8 @@ colvar::cvc::cvc()
|
|||||||
b_periodic(false),
|
b_periodic(false),
|
||||||
b_try_scalable(true)
|
b_try_scalable(true)
|
||||||
{
|
{
|
||||||
init_cvc_requires();
|
description = "uninitialized colvar component";
|
||||||
|
init_dependencies();
|
||||||
sup_coeff = 1.0;
|
sup_coeff = 1.0;
|
||||||
period = 0.0;
|
period = 0.0;
|
||||||
wrap_center = 0.0;
|
wrap_center = 0.0;
|
||||||
@ -33,7 +34,8 @@ colvar::cvc::cvc(std::string const &conf)
|
|||||||
b_periodic(false),
|
b_periodic(false),
|
||||||
b_try_scalable(true)
|
b_try_scalable(true)
|
||||||
{
|
{
|
||||||
init_cvc_requires();
|
description = "uninitialized colvar component";
|
||||||
|
init_dependencies();
|
||||||
sup_coeff = 1.0;
|
sup_coeff = 1.0;
|
||||||
period = 0.0;
|
period = 0.0;
|
||||||
wrap_center = 0.0;
|
wrap_center = 0.0;
|
||||||
@ -176,6 +178,100 @@ cvm::atom_group *colvar::cvc::parse_group(std::string const &conf,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int colvar::cvc::init_dependencies() {
|
||||||
|
size_t i;
|
||||||
|
// Initialize static array once and for all
|
||||||
|
if (features().size() == 0) {
|
||||||
|
for (i = 0; i < colvardeps::f_cvc_ntot; i++) {
|
||||||
|
modify_features().push_back(new feature);
|
||||||
|
}
|
||||||
|
|
||||||
|
init_feature(f_cvc_active, "active", f_type_dynamic);
|
||||||
|
// The dependency below may become useful if we use dynamic atom groups
|
||||||
|
// require_feature_children(f_cvc_active, f_ag_active);
|
||||||
|
|
||||||
|
init_feature(f_cvc_scalar, "scalar", f_type_static);
|
||||||
|
|
||||||
|
init_feature(f_cvc_gradient, "gradient", f_type_dynamic);
|
||||||
|
|
||||||
|
init_feature(f_cvc_explicit_gradient, "explicit gradient", f_type_static);
|
||||||
|
require_feature_children(f_cvc_explicit_gradient, f_ag_explicit_gradient);
|
||||||
|
|
||||||
|
init_feature(f_cvc_inv_gradient, "inverse gradient", f_type_dynamic);
|
||||||
|
require_feature_self(f_cvc_inv_gradient, f_cvc_gradient);
|
||||||
|
|
||||||
|
init_feature(f_cvc_debug_gradient, "debug gradient", f_type_user);
|
||||||
|
require_feature_self(f_cvc_debug_gradient, f_cvc_gradient);
|
||||||
|
require_feature_self(f_cvc_debug_gradient, f_cvc_explicit_gradient);
|
||||||
|
|
||||||
|
init_feature(f_cvc_Jacobian, "Jacobian derivative", f_type_dynamic);
|
||||||
|
require_feature_self(f_cvc_Jacobian, f_cvc_inv_gradient);
|
||||||
|
|
||||||
|
init_feature(f_cvc_com_based, "depends on group centers of mass", f_type_static);
|
||||||
|
|
||||||
|
init_feature(f_cvc_pbc_minimum_image, "use minimum-image distances with PBCs", f_type_user);
|
||||||
|
|
||||||
|
// Compute total force on first site only to avoid unwanted
|
||||||
|
// coupling to other colvars (see e.g. Ciccotti et al., 2005)
|
||||||
|
init_feature(f_cvc_one_site_total_force, "compute total force from one group", f_type_user);
|
||||||
|
require_feature_self(f_cvc_one_site_total_force, f_cvc_com_based);
|
||||||
|
|
||||||
|
init_feature(f_cvc_scalable, "scalable calculation", f_type_static);
|
||||||
|
require_feature_self(f_cvc_scalable, f_cvc_scalable_com);
|
||||||
|
|
||||||
|
init_feature(f_cvc_scalable_com, "scalable calculation of centers of mass", f_type_static);
|
||||||
|
require_feature_self(f_cvc_scalable_com, f_cvc_com_based);
|
||||||
|
|
||||||
|
|
||||||
|
// TODO only enable this when f_ag_scalable can be turned on for a pre-initialized group
|
||||||
|
// require_feature_children(f_cvc_scalable, f_ag_scalable);
|
||||||
|
// require_feature_children(f_cvc_scalable_com, f_ag_scalable_com);
|
||||||
|
|
||||||
|
// check that everything is initialized
|
||||||
|
for (i = 0; i < colvardeps::f_cvc_ntot; i++) {
|
||||||
|
if (is_not_set(i)) {
|
||||||
|
cvm::error("Uninitialized feature " + cvm::to_str(i) + " in " + description);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Initialize feature_states for each instance
|
||||||
|
// default as available, not enabled
|
||||||
|
// except dynamic features which default as unavailable
|
||||||
|
feature_states.reserve(f_cvc_ntot);
|
||||||
|
for (i = 0; i < colvardeps::f_cvc_ntot; i++) {
|
||||||
|
bool avail = is_dynamic(i) ? false : true;
|
||||||
|
feature_states.push_back(feature_state(avail, false));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Features that are implemented by all cvcs by default
|
||||||
|
// Each cvc specifies what other features are available
|
||||||
|
feature_states[f_cvc_active].available = true;
|
||||||
|
feature_states[f_cvc_gradient].available = true;
|
||||||
|
|
||||||
|
// CVCs are enabled from the start - get disabled based on flags
|
||||||
|
enable(f_cvc_active);
|
||||||
|
// feature_states[f_cvc_active].enabled = true;
|
||||||
|
|
||||||
|
// Explicit gradients are implemented in mosts CVCs. Exceptions must be specified explicitly.
|
||||||
|
// feature_states[f_cvc_explicit_gradient].enabled = true;
|
||||||
|
enable(f_cvc_explicit_gradient);
|
||||||
|
|
||||||
|
// Use minimum-image distances by default
|
||||||
|
// feature_states[f_cvc_pbc_minimum_image].enabled = true;
|
||||||
|
enable(f_cvc_pbc_minimum_image);
|
||||||
|
|
||||||
|
// Features that are implemented by default if their requirements are
|
||||||
|
feature_states[f_cvc_one_site_total_force].available = true;
|
||||||
|
|
||||||
|
// Features That are implemented only for certain simulation engine configurations
|
||||||
|
feature_states[f_cvc_scalable_com].available = (cvm::proxy->scalable_group_coms() == COLVARS_OK);
|
||||||
|
feature_states[f_cvc_scalable].available = feature_states[f_cvc_scalable_com].available;
|
||||||
|
|
||||||
|
return COLVARS_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int colvar::cvc::setup()
|
int colvar::cvc::setup()
|
||||||
{
|
{
|
||||||
description = "cvc " + name;
|
description = "cvc " + name;
|
||||||
@ -192,6 +288,7 @@ colvar::cvc::~cvc()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void colvar::cvc::read_data()
|
void colvar::cvc::read_data()
|
||||||
{
|
{
|
||||||
size_t ig;
|
size_t ig;
|
||||||
@ -214,6 +311,66 @@ void colvar::cvc::read_data()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
std::vector<std::vector<int> > colvar::cvc::get_atom_lists()
|
||||||
|
{
|
||||||
|
std::vector<std::vector<int> > lists;
|
||||||
|
|
||||||
|
std::vector<cvm::atom_group *>::iterator agi = atom_groups.begin();
|
||||||
|
for ( ; agi != atom_groups.end(); ++agi) {
|
||||||
|
(*agi)->create_sorted_ids();
|
||||||
|
lists.push_back((*agi)->sorted_ids());
|
||||||
|
if ((*agi)->is_enabled(f_ag_fitting_group) && (*agi)->is_enabled(f_ag_fit_gradients)) {
|
||||||
|
cvm::atom_group &fg = *((*agi)->fitting_group);
|
||||||
|
fg.create_sorted_ids();
|
||||||
|
lists.push_back(fg.sorted_ids());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return lists;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void colvar::cvc::collect_gradients(std::vector<int> const &atom_ids, std::vector<cvm::rvector> &atomic_gradients)
|
||||||
|
{
|
||||||
|
// Coefficient: d(a * x^n) = a * n * x^(n-1) * dx
|
||||||
|
cvm::real coeff = sup_coeff * cvm::real(sup_np) *
|
||||||
|
cvm::integer_power(value().real_value, sup_np-1);
|
||||||
|
|
||||||
|
for (size_t j = 0; j < atom_groups.size(); j++) {
|
||||||
|
|
||||||
|
cvm::atom_group &ag = *(atom_groups[j]);
|
||||||
|
|
||||||
|
// If necessary, apply inverse rotation to get atomic
|
||||||
|
// gradient in the laboratory frame
|
||||||
|
if (ag.b_rotate) {
|
||||||
|
cvm::rotation const rot_inv = ag.rot.inverse();
|
||||||
|
|
||||||
|
for (size_t k = 0; k < ag.size(); k++) {
|
||||||
|
size_t a = std::lower_bound(atom_ids.begin(), atom_ids.end(),
|
||||||
|
ag[k].id) - atom_ids.begin();
|
||||||
|
atomic_gradients[a] += coeff * rot_inv.rotate(ag[k].grad);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
for (size_t k = 0; k < ag.size(); k++) {
|
||||||
|
size_t a = std::lower_bound(atom_ids.begin(), atom_ids.end(),
|
||||||
|
ag[k].id) - atom_ids.begin();
|
||||||
|
atomic_gradients[a] += coeff * ag[k].grad;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ag.is_enabled(f_ag_fitting_group) && ag.is_enabled(f_ag_fit_gradients)) {
|
||||||
|
cvm::atom_group const &fg = *(ag.fitting_group);
|
||||||
|
for (size_t k = 0; k < fg.size(); k++) {
|
||||||
|
size_t a = std::lower_bound(atom_ids.begin(), atom_ids.end(),
|
||||||
|
fg[k].id) - atom_ids.begin();
|
||||||
|
// fit gradients are in the unrotated (simulation) frame
|
||||||
|
atomic_gradients[a] += coeff * fg.fit_gradients[k];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void colvar::cvc::calc_force_invgrads()
|
void colvar::cvc::calc_force_invgrads()
|
||||||
{
|
{
|
||||||
cvm::error("Error: calculation of inverse gradients is not implemented "
|
cvm::error("Error: calculation of inverse gradients is not implemented "
|
||||||
@ -306,8 +463,8 @@ void colvar::cvc::debug_gradients()
|
|||||||
cvm::log("dx(interp) = "+cvm::to_str(dx_pred,
|
cvm::log("dx(interp) = "+cvm::to_str(dx_pred,
|
||||||
21, 14)+"\n");
|
21, 14)+"\n");
|
||||||
cvm::log("|dx(actual) - dx(interp)|/|dx(actual)| = "+
|
cvm::log("|dx(actual) - dx(interp)|/|dx(actual)| = "+
|
||||||
cvm::to_str(std::fabs(x_1 - x_0 - dx_pred) /
|
cvm::to_str(cvm::fabs(x_1 - x_0 - dx_pred) /
|
||||||
std::fabs(x_1 - x_0), 12, 5)+"\n");
|
cvm::fabs(x_1 - x_0), 12, 5)+"\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -341,8 +498,8 @@ void colvar::cvc::debug_gradients()
|
|||||||
cvm::log("dx(interp) = "+cvm::to_str (dx_pred,
|
cvm::log("dx(interp) = "+cvm::to_str (dx_pred,
|
||||||
21, 14)+"\n");
|
21, 14)+"\n");
|
||||||
cvm::log ("|dx(actual) - dx(interp)|/|dx(actual)| = "+
|
cvm::log ("|dx(actual) - dx(interp)|/|dx(actual)| = "+
|
||||||
cvm::to_str(std::fabs (x_1 - x_0 - dx_pred) /
|
cvm::to_str(cvm::fabs (x_1 - x_0 - dx_pred) /
|
||||||
std::fabs (x_1 - x_0),
|
cvm::fabs (x_1 - x_0),
|
||||||
12, 5)+
|
12, 5)+
|
||||||
".\n");
|
".\n");
|
||||||
}
|
}
|
||||||
@ -378,7 +535,7 @@ colvarvalue colvar::cvc::dist2_rgrad(colvarvalue const &x1,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void colvar::cvc::wrap(colvarvalue &x) const
|
void colvar::cvc::wrap(colvarvalue &x_unwrapped) const
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -27,12 +27,12 @@
|
|||||||
|
|
||||||
/// \brief Colvar component (base class for collective variables)
|
/// \brief Colvar component (base class for collective variables)
|
||||||
///
|
///
|
||||||
/// A \link cvc \endlink object (or an object of a
|
/// A \link colvar::cvc \endlink object (or an object of a
|
||||||
/// cvc-derived class) implements the calculation of a collective
|
/// cvc-derived class) implements the calculation of a collective
|
||||||
/// variable, its gradients and any other related physical quantities
|
/// variable, its gradients and any other related physical quantities
|
||||||
/// that depend on microscopic degrees of freedom.
|
/// that depend on microscopic degrees of freedom.
|
||||||
///
|
///
|
||||||
/// No restriction is set to what kind of calculation a \link cvc \endlink
|
/// No restriction is set to what kind of calculation a \link colvar::cvc \endlink
|
||||||
/// object performs (usually an analytical function of atomic coordinates).
|
/// object performs (usually an analytical function of atomic coordinates).
|
||||||
/// The only constraints are that: \par
|
/// The only constraints are that: \par
|
||||||
///
|
///
|
||||||
@ -42,9 +42,9 @@
|
|||||||
/// alike, and allows an automatic selection of the applicable algorithms.
|
/// alike, and allows an automatic selection of the applicable algorithms.
|
||||||
///
|
///
|
||||||
/// - The object provides an implementation \link apply_force() \endlink to
|
/// - The object provides an implementation \link apply_force() \endlink to
|
||||||
/// apply forces to atoms. Typically, one or more \link cvm::atom_group
|
/// apply forces to atoms. Typically, one or more \link colvarmodule::atom_group
|
||||||
/// \endlink objects are used, but this is not a requirement for as long as
|
/// \endlink objects are used, but this is not a requirement for as long as
|
||||||
/// the \link cvc \endlink object communicates with the simulation program.
|
/// the \link colvar::cvc \endlink object communicates with the simulation program.
|
||||||
///
|
///
|
||||||
/// <b> If you wish to implement a new collective variable component, you
|
/// <b> If you wish to implement a new collective variable component, you
|
||||||
/// should write your own class by inheriting directly from \link
|
/// should write your own class by inheriting directly from \link
|
||||||
@ -75,9 +75,9 @@ public:
|
|||||||
/// \brief Description of the type of collective variable
|
/// \brief Description of the type of collective variable
|
||||||
///
|
///
|
||||||
/// Normally this string is set by the parent \link colvar \endlink
|
/// Normally this string is set by the parent \link colvar \endlink
|
||||||
/// object within its constructor, when all \link cvc \endlink
|
/// object within its constructor, when all \link colvar::cvc \endlink
|
||||||
/// objects are initialized; therefore the main "config string"
|
/// objects are initialized; therefore the main "config string"
|
||||||
/// constructor does not need to define it. If a \link cvc
|
/// constructor does not need to define it. If a \link colvar::cvc
|
||||||
/// \endlink is initialized and/or a different constructor is used,
|
/// \endlink is initialized and/or a different constructor is used,
|
||||||
/// this variable definition should be set within the constructor.
|
/// this variable definition should be set within the constructor.
|
||||||
std::string function_type;
|
std::string function_type;
|
||||||
@ -109,6 +109,9 @@ public:
|
|||||||
/// cvc \endlink
|
/// cvc \endlink
|
||||||
virtual int init(std::string const &conf);
|
virtual int init(std::string const &conf);
|
||||||
|
|
||||||
|
/// \brief Initialize dependency tree
|
||||||
|
virtual int init_dependencies();
|
||||||
|
|
||||||
/// \brief Within the constructor, make a group parse its own
|
/// \brief Within the constructor, make a group parse its own
|
||||||
/// options from the provided configuration string
|
/// options from the provided configuration string
|
||||||
/// Returns reference to new group
|
/// Returns reference to new group
|
||||||
@ -122,7 +125,7 @@ public:
|
|||||||
/// \brief After construction, set data related to dependency handling
|
/// \brief After construction, set data related to dependency handling
|
||||||
int setup();
|
int setup();
|
||||||
|
|
||||||
/// \brief Default constructor (used when \link cvc \endlink
|
/// \brief Default constructor (used when \link colvar::cvc \endlink
|
||||||
/// objects are declared within other ones)
|
/// objects are declared within other ones)
|
||||||
cvc();
|
cvc();
|
||||||
|
|
||||||
@ -133,7 +136,7 @@ public:
|
|||||||
static std::vector<feature *> cvc_features;
|
static std::vector<feature *> cvc_features;
|
||||||
|
|
||||||
/// \brief Implementation of the feature list accessor for colvar
|
/// \brief Implementation of the feature list accessor for colvar
|
||||||
virtual const std::vector<feature *> &features()
|
virtual const std::vector<feature *> &features() const
|
||||||
{
|
{
|
||||||
return cvc_features;
|
return cvc_features;
|
||||||
}
|
}
|
||||||
@ -148,6 +151,9 @@ public:
|
|||||||
cvc_features.clear();
|
cvc_features.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// \brief Get vector of vectors of atom IDs for all atom groups
|
||||||
|
virtual std::vector<std::vector<int> > get_atom_lists();
|
||||||
|
|
||||||
/// \brief Obtain data needed for the calculation for the backend
|
/// \brief Obtain data needed for the calculation for the backend
|
||||||
virtual void read_data();
|
virtual void read_data();
|
||||||
|
|
||||||
@ -164,6 +170,10 @@ public:
|
|||||||
/// \brief Calculate finite-difference gradients alongside the analytical ones, for each Cartesian component
|
/// \brief Calculate finite-difference gradients alongside the analytical ones, for each Cartesian component
|
||||||
virtual void debug_gradients();
|
virtual void debug_gradients();
|
||||||
|
|
||||||
|
/// \brief Calculate atomic gradients and add them to the corresponding item in gradient vector
|
||||||
|
/// May be overridden by CVCs that do not store their gradients in the classic way, see dihedPC
|
||||||
|
virtual void collect_gradients(std::vector<int> const &atom_ids, std::vector<cvm::rvector> &atomic_gradients);
|
||||||
|
|
||||||
/// \brief Calculate the total force from the system using the
|
/// \brief Calculate the total force from the system using the
|
||||||
/// inverse atomic gradients
|
/// inverse atomic gradients
|
||||||
virtual void calc_force_invgrads();
|
virtual void calc_force_invgrads();
|
||||||
@ -237,7 +247,7 @@ public:
|
|||||||
colvarvalue const &x2) const;
|
colvarvalue const &x2) const;
|
||||||
|
|
||||||
/// \brief Wrap value (for periodic/symmetric cvcs)
|
/// \brief Wrap value (for periodic/symmetric cvcs)
|
||||||
virtual void wrap(colvarvalue &x) const;
|
virtual void wrap(colvarvalue &x_unwrapped) const;
|
||||||
|
|
||||||
/// \brief Pointers to all atom groups, to let colvars collect info
|
/// \brief Pointers to all atom groups, to let colvars collect info
|
||||||
/// e.g. atomic gradients
|
/// e.g. atomic gradients
|
||||||
@ -246,7 +256,7 @@ public:
|
|||||||
/// \brief Store a pointer to new atom group, and list as child for dependencies
|
/// \brief Store a pointer to new atom group, and list as child for dependencies
|
||||||
inline void register_atom_group(cvm::atom_group *ag) {
|
inline void register_atom_group(cvm::atom_group *ag) {
|
||||||
atom_groups.push_back(ag);
|
atom_groups.push_back(ag);
|
||||||
add_child((colvardeps *) ag);
|
add_child(ag);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// \brief Whether or not this CVC will be computed in parallel whenever possible
|
/// \brief Whether or not this CVC will be computed in parallel whenever possible
|
||||||
@ -415,7 +425,7 @@ public:
|
|||||||
virtual colvarvalue dist2_rgrad(colvarvalue const &x1,
|
virtual colvarvalue dist2_rgrad(colvarvalue const &x1,
|
||||||
colvarvalue const &x2) const;
|
colvarvalue const &x2) const;
|
||||||
/// \brief Redefined to make use of the user-provided period
|
/// \brief Redefined to make use of the user-provided period
|
||||||
virtual void wrap(colvarvalue &x) const;
|
virtual void wrap(colvarvalue &x_unwrapped) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -474,7 +484,7 @@ public:
|
|||||||
virtual colvarvalue dist2_rgrad(colvarvalue const &x1,
|
virtual colvarvalue dist2_rgrad(colvarvalue const &x1,
|
||||||
colvarvalue const &x2) const;
|
colvarvalue const &x2) const;
|
||||||
/// Redefined to handle the 2*PI periodicity
|
/// Redefined to handle the 2*PI periodicity
|
||||||
virtual void wrap(colvarvalue &x) const;
|
virtual void wrap(colvarvalue &x_unwrapped) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -559,6 +569,35 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/// \brief Colvar component: dipole magnitude of a molecule
|
||||||
|
class colvar::dipole_magnitude
|
||||||
|
: public colvar::cvc
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
/// Dipole atom group
|
||||||
|
cvm::atom_group *atoms;
|
||||||
|
cvm::atom_pos dipoleV;
|
||||||
|
public:
|
||||||
|
/// Initialize by parsing the configuration
|
||||||
|
dipole_magnitude (std::string const &conf);
|
||||||
|
dipole_magnitude (cvm::atom const &a1);
|
||||||
|
dipole_magnitude();
|
||||||
|
virtual inline ~dipole_magnitude() {}
|
||||||
|
virtual void calc_value();
|
||||||
|
virtual void calc_gradients();
|
||||||
|
//virtual void calc_force_invgrads();
|
||||||
|
//virtual void calc_Jacobian_derivative();
|
||||||
|
virtual void apply_force (colvarvalue const &force);
|
||||||
|
virtual cvm::real dist2 (colvarvalue const &x1,
|
||||||
|
colvarvalue const &x2) const;
|
||||||
|
virtual colvarvalue dist2_lgrad (colvarvalue const &x1,
|
||||||
|
colvarvalue const &x2) const;
|
||||||
|
virtual colvarvalue dist2_rgrad (colvarvalue const &x1,
|
||||||
|
colvarvalue const &x2) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// \brief Colvar component: Radius of gyration of an atom group
|
/// \brief Colvar component: Radius of gyration of an atom group
|
||||||
/// (colvarvalue::type_scalar type, range [0:*))
|
/// (colvarvalue::type_scalar type, range [0:*))
|
||||||
class colvar::gyration
|
class colvar::gyration
|
||||||
@ -818,7 +857,7 @@ public:
|
|||||||
virtual colvarvalue dist2_rgrad(colvarvalue const &x1,
|
virtual colvarvalue dist2_rgrad(colvarvalue const &x1,
|
||||||
colvarvalue const &x2) const;
|
colvarvalue const &x2) const;
|
||||||
/// Redefined to handle the 2*PI periodicity
|
/// Redefined to handle the 2*PI periodicity
|
||||||
virtual void wrap(colvarvalue &x) const;
|
virtual void wrap(colvarvalue &x_unwrapped) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -1002,7 +1041,7 @@ public:
|
|||||||
cvm::atom const &donor,
|
cvm::atom const &donor,
|
||||||
cvm::real r0, int en, int ed);
|
cvm::real r0, int en, int ed);
|
||||||
h_bond();
|
h_bond();
|
||||||
virtual ~h_bond();
|
virtual ~h_bond() {}
|
||||||
virtual void calc_value();
|
virtual void calc_value();
|
||||||
virtual void calc_gradients();
|
virtual void calc_gradients();
|
||||||
virtual void apply_force(colvarvalue const &force);
|
virtual void apply_force(colvarvalue const &force);
|
||||||
@ -1090,6 +1129,8 @@ public:
|
|||||||
virtual ~alpha_angles();
|
virtual ~alpha_angles();
|
||||||
void calc_value();
|
void calc_value();
|
||||||
void calc_gradients();
|
void calc_gradients();
|
||||||
|
/// Re-implementation of cvc::collect_gradients() to carry over atomic gradients of sub-cvcs
|
||||||
|
void collect_gradients(std::vector<int> const &atom_ids, std::vector<cvm::rvector> &atomic_gradients);
|
||||||
void apply_force(colvarvalue const &force);
|
void apply_force(colvarvalue const &force);
|
||||||
virtual cvm::real dist2(colvarvalue const &x1,
|
virtual cvm::real dist2(colvarvalue const &x1,
|
||||||
colvarvalue const &x2) const;
|
colvarvalue const &x2) const;
|
||||||
@ -1120,6 +1161,8 @@ public:
|
|||||||
virtual ~dihedPC();
|
virtual ~dihedPC();
|
||||||
void calc_value();
|
void calc_value();
|
||||||
void calc_gradients();
|
void calc_gradients();
|
||||||
|
/// Re-implementation of cvc::collect_gradients() to carry over atomic gradients of sub-cvcs
|
||||||
|
void collect_gradients(std::vector<int> const &atom_ids, std::vector<cvm::rvector> &atomic_gradients);
|
||||||
void apply_force(colvarvalue const &force);
|
void apply_force(colvarvalue const &force);
|
||||||
virtual cvm::real dist2(colvarvalue const &x1,
|
virtual cvm::real dist2(colvarvalue const &x1,
|
||||||
colvarvalue const &x2) const;
|
colvarvalue const &x2) const;
|
||||||
@ -1159,6 +1202,7 @@ public:
|
|||||||
|
|
||||||
orientation(std::string const &conf);
|
orientation(std::string const &conf);
|
||||||
orientation();
|
orientation();
|
||||||
|
virtual int init(std::string const &conf);
|
||||||
virtual ~orientation() {}
|
virtual ~orientation() {}
|
||||||
virtual void calc_value();
|
virtual void calc_value();
|
||||||
virtual void calc_gradients();
|
virtual void calc_gradients();
|
||||||
@ -1183,6 +1227,7 @@ public:
|
|||||||
|
|
||||||
orientation_angle(std::string const &conf);
|
orientation_angle(std::string const &conf);
|
||||||
orientation_angle();
|
orientation_angle();
|
||||||
|
virtual int init(std::string const &conf);
|
||||||
virtual ~orientation_angle() {}
|
virtual ~orientation_angle() {}
|
||||||
virtual void calc_value();
|
virtual void calc_value();
|
||||||
virtual void calc_gradients();
|
virtual void calc_gradients();
|
||||||
@ -1207,6 +1252,7 @@ public:
|
|||||||
|
|
||||||
orientation_proj(std::string const &conf);
|
orientation_proj(std::string const &conf);
|
||||||
orientation_proj();
|
orientation_proj();
|
||||||
|
virtual int init(std::string const &conf);
|
||||||
virtual ~orientation_proj() {}
|
virtual ~orientation_proj() {}
|
||||||
virtual void calc_value();
|
virtual void calc_value();
|
||||||
virtual void calc_gradients();
|
virtual void calc_gradients();
|
||||||
@ -1234,6 +1280,7 @@ public:
|
|||||||
|
|
||||||
tilt(std::string const &conf);
|
tilt(std::string const &conf);
|
||||||
tilt();
|
tilt();
|
||||||
|
virtual int init(std::string const &conf);
|
||||||
virtual ~tilt() {}
|
virtual ~tilt() {}
|
||||||
virtual void calc_value();
|
virtual void calc_value();
|
||||||
virtual void calc_gradients();
|
virtual void calc_gradients();
|
||||||
@ -1261,6 +1308,7 @@ public:
|
|||||||
|
|
||||||
spin_angle(std::string const &conf);
|
spin_angle(std::string const &conf);
|
||||||
spin_angle();
|
spin_angle();
|
||||||
|
virtual int init(std::string const &conf);
|
||||||
virtual ~spin_angle() {}
|
virtual ~spin_angle() {}
|
||||||
virtual void calc_value();
|
virtual void calc_value();
|
||||||
virtual void calc_gradients();
|
virtual void calc_gradients();
|
||||||
@ -1275,7 +1323,7 @@ public:
|
|||||||
virtual colvarvalue dist2_rgrad(colvarvalue const &x1,
|
virtual colvarvalue dist2_rgrad(colvarvalue const &x1,
|
||||||
colvarvalue const &x2) const;
|
colvarvalue const &x2) const;
|
||||||
/// Redefined to handle the 2*PI periodicity
|
/// Redefined to handle the 2*PI periodicity
|
||||||
virtual void wrap(colvarvalue &x) const;
|
virtual void wrap(colvarvalue &x_unwrapped) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -11,9 +11,6 @@
|
|||||||
#include "colvar.h"
|
#include "colvar.h"
|
||||||
#include "colvarcomp.h"
|
#include "colvarcomp.h"
|
||||||
|
|
||||||
#include <cmath>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
colvar::angle::angle(std::string const &conf)
|
colvar::angle::angle(std::string const &conf)
|
||||||
: cvc(conf)
|
: cvc(conf)
|
||||||
@ -77,14 +74,14 @@ void colvar::angle::calc_value()
|
|||||||
|
|
||||||
cvm::real const cos_theta = (r21*r23)/(r21l*r23l);
|
cvm::real const cos_theta = (r21*r23)/(r21l*r23l);
|
||||||
|
|
||||||
x.real_value = (180.0/PI) * std::acos(cos_theta);
|
x.real_value = (180.0/PI) * cvm::acos(cos_theta);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void colvar::angle::calc_gradients()
|
void colvar::angle::calc_gradients()
|
||||||
{
|
{
|
||||||
cvm::real const cos_theta = (r21*r23)/(r21l*r23l);
|
cvm::real const cos_theta = (r21*r23)/(r21l*r23l);
|
||||||
cvm::real const dxdcos = -1.0 / std::sqrt(1.0 - cos_theta*cos_theta);
|
cvm::real const dxdcos = -1.0 / cvm::sqrt(1.0 - cos_theta*cos_theta);
|
||||||
|
|
||||||
dxdr1 = (180.0/PI) * dxdcos *
|
dxdr1 = (180.0/PI) * dxdcos *
|
||||||
(1.0/r21l) * ( r23/r23l + (-1.0) * cos_theta * r21/r21l );
|
(1.0/r21l) * ( r23/r23l + (-1.0) * cos_theta * r21/r21l );
|
||||||
@ -126,7 +123,7 @@ void colvar::angle::calc_Jacobian_derivative()
|
|||||||
// det(J) = (2 pi) r^2 * sin(theta)
|
// det(J) = (2 pi) r^2 * sin(theta)
|
||||||
// hence Jd = cot(theta)
|
// hence Jd = cot(theta)
|
||||||
const cvm::real theta = x.real_value * PI / 180.0;
|
const cvm::real theta = x.real_value * PI / 180.0;
|
||||||
jd = PI / 180.0 * (theta != 0.0 ? std::cos(theta) / std::sin(theta) : 0.0);
|
jd = PI / 180.0 * (theta != 0.0 ? cvm::cos(theta) / cvm::sin(theta) : 0.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -202,7 +199,7 @@ void colvar::dipole_angle::calc_value()
|
|||||||
|
|
||||||
cvm::real const cos_theta = (r21*r23)/(r21l*r23l);
|
cvm::real const cos_theta = (r21*r23)/(r21l*r23l);
|
||||||
|
|
||||||
x.real_value = (180.0/PI) * std::acos(cos_theta);
|
x.real_value = (180.0/PI) * cvm::acos(cos_theta);
|
||||||
}
|
}
|
||||||
|
|
||||||
//to be implemented
|
//to be implemented
|
||||||
@ -212,7 +209,7 @@ void colvar::dipole_angle::calc_value()
|
|||||||
void colvar::dipole_angle::calc_gradients()
|
void colvar::dipole_angle::calc_gradients()
|
||||||
{
|
{
|
||||||
cvm::real const cos_theta = (r21*r23)/(r21l*r23l);
|
cvm::real const cos_theta = (r21*r23)/(r21l*r23l);
|
||||||
cvm::real const dxdcos = -1.0 / std::sqrt(1.0 - cos_theta*cos_theta);
|
cvm::real const dxdcos = -1.0 / cvm::sqrt(1.0 - cos_theta*cos_theta);
|
||||||
|
|
||||||
dxdr1 = (180.0/PI) * dxdcos *
|
dxdr1 = (180.0/PI) * dxdcos *
|
||||||
(1.0/r21l)* (r23/r23l + (-1.0) * cos_theta * r21/r21l );
|
(1.0/r21l)* (r23/r23l + (-1.0) * cos_theta * r21/r21l );
|
||||||
@ -346,7 +343,7 @@ void colvar::dihedral::calc_value()
|
|||||||
cvm::real const cos_phi = n1 * n2;
|
cvm::real const cos_phi = n1 * n2;
|
||||||
cvm::real const sin_phi = n1 * r34 * r23.norm();
|
cvm::real const sin_phi = n1 * r34 * r23.norm();
|
||||||
|
|
||||||
x.real_value = (180.0/PI) * std::atan2(sin_phi, cos_phi);
|
x.real_value = (180.0/PI) * cvm::atan2(sin_phi, cos_phi);
|
||||||
this->wrap(x);
|
this->wrap(x);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -368,7 +365,7 @@ void colvar::dihedral::calc_gradients()
|
|||||||
rB = 1.0/rB;
|
rB = 1.0/rB;
|
||||||
B *= rB;
|
B *= rB;
|
||||||
|
|
||||||
if (std::fabs(sin_phi) > 0.1) {
|
if (cvm::fabs(sin_phi) > 0.1) {
|
||||||
rA = 1.0/rA;
|
rA = 1.0/rA;
|
||||||
A *= rA;
|
A *= rA;
|
||||||
cvm::rvector const dcosdA = rA*(cos_phi*A-B);
|
cvm::rvector const dcosdA = rA*(cos_phi*A-B);
|
||||||
@ -440,8 +437,8 @@ void colvar::dihedral::calc_force_invgrads()
|
|||||||
cvm::real const dot1 = u23 * u12;
|
cvm::real const dot1 = u23 * u12;
|
||||||
cvm::real const dot4 = u23 * u34;
|
cvm::real const dot4 = u23 * u34;
|
||||||
|
|
||||||
cvm::real const fact1 = d12 * std::sqrt(1.0 - dot1 * dot1);
|
cvm::real const fact1 = d12 * cvm::sqrt(1.0 - dot1 * dot1);
|
||||||
cvm::real const fact4 = d34 * std::sqrt(1.0 - dot4 * dot4);
|
cvm::real const fact4 = d34 * cvm::sqrt(1.0 - dot4 * dot4);
|
||||||
|
|
||||||
group1->read_total_forces();
|
group1->read_total_forces();
|
||||||
if (is_enabled(f_cvc_one_site_total_force)) {
|
if (is_enabled(f_cvc_one_site_total_force)) {
|
||||||
@ -508,19 +505,17 @@ colvarvalue colvar::dihedral::dist2_rgrad(colvarvalue const &x1,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void colvar::dihedral::wrap(colvarvalue &x) const
|
void colvar::dihedral::wrap(colvarvalue &x_unwrapped) const
|
||||||
{
|
{
|
||||||
if ((x.real_value - wrap_center) >= 180.0) {
|
if ((x_unwrapped.real_value - wrap_center) >= 180.0) {
|
||||||
x.real_value -= 360.0;
|
x_unwrapped.real_value -= 360.0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((x.real_value - wrap_center) < -180.0) {
|
if ((x_unwrapped.real_value - wrap_center) < -180.0) {
|
||||||
x.real_value += 360.0;
|
x_unwrapped.real_value += 360.0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -548,8 +543,8 @@ void colvar::polar_theta::calc_value()
|
|||||||
cvm::rvector pos = atoms->center_of_mass();
|
cvm::rvector pos = atoms->center_of_mass();
|
||||||
r = atoms->center_of_mass().norm();
|
r = atoms->center_of_mass().norm();
|
||||||
// Internal values of theta and phi are radians
|
// Internal values of theta and phi are radians
|
||||||
theta = (r > 0.) ? std::acos(pos.z / r) : 0.;
|
theta = (r > 0.) ? cvm::acos(pos.z / r) : 0.;
|
||||||
phi = std::atan2(pos.y, pos.x);
|
phi = cvm::atan2(pos.y, pos.x);
|
||||||
x.real_value = (180.0/PI) * theta;
|
x.real_value = (180.0/PI) * theta;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -560,9 +555,9 @@ void colvar::polar_theta::calc_gradients()
|
|||||||
atoms->set_weighted_gradient(cvm::rvector(0., 0., 0.));
|
atoms->set_weighted_gradient(cvm::rvector(0., 0., 0.));
|
||||||
else
|
else
|
||||||
atoms->set_weighted_gradient(cvm::rvector(
|
atoms->set_weighted_gradient(cvm::rvector(
|
||||||
(180.0/PI) * std::cos(theta) * std::cos(phi) / r,
|
(180.0/PI) * cvm::cos(theta) * cvm::cos(phi) / r,
|
||||||
(180.0/PI) * std::cos(theta) * std::sin(phi) / r,
|
(180.0/PI) * cvm::cos(theta) * cvm::sin(phi) / r,
|
||||||
(180.0/PI) * -std::sin(theta) / r));
|
(180.0/PI) * -cvm::sin(theta) / r));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -602,8 +597,8 @@ void colvar::polar_phi::calc_value()
|
|||||||
cvm::rvector pos = atoms->center_of_mass();
|
cvm::rvector pos = atoms->center_of_mass();
|
||||||
r = atoms->center_of_mass().norm();
|
r = atoms->center_of_mass().norm();
|
||||||
// Internal values of theta and phi are radians
|
// Internal values of theta and phi are radians
|
||||||
theta = (r > 0.) ? std::acos(pos.z / r) : 0.;
|
theta = (r > 0.) ? cvm::acos(pos.z / r) : 0.;
|
||||||
phi = std::atan2(pos.y, pos.x);
|
phi = cvm::atan2(pos.y, pos.x);
|
||||||
x.real_value = (180.0/PI) * phi;
|
x.real_value = (180.0/PI) * phi;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -611,8 +606,8 @@ void colvar::polar_phi::calc_value()
|
|||||||
void colvar::polar_phi::calc_gradients()
|
void colvar::polar_phi::calc_gradients()
|
||||||
{
|
{
|
||||||
atoms->set_weighted_gradient(cvm::rvector(
|
atoms->set_weighted_gradient(cvm::rvector(
|
||||||
(180.0/PI) * -std::sin(phi) / (r*std::sin(theta)),
|
(180.0/PI) * -cvm::sin(phi) / (r*cvm::sin(theta)),
|
||||||
(180.0/PI) * std::cos(phi) / (r*std::sin(theta)),
|
(180.0/PI) * cvm::cos(phi) / (r*cvm::sin(theta)),
|
||||||
0.));
|
0.));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -653,15 +648,15 @@ colvarvalue colvar::polar_phi::dist2_rgrad(colvarvalue const &x1,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void colvar::polar_phi::wrap(colvarvalue &x) const
|
void colvar::polar_phi::wrap(colvarvalue &x_unwrapped) const
|
||||||
{
|
{
|
||||||
if ((x.real_value - wrap_center) >= 180.0) {
|
if ((x_unwrapped.real_value - wrap_center) >= 180.0) {
|
||||||
x.real_value -= 360.0;
|
x_unwrapped.real_value -= 360.0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((x.real_value - wrap_center) < -180.0) {
|
if ((x_unwrapped.real_value - wrap_center) < -180.0) {
|
||||||
x.real_value += 360.0;
|
x_unwrapped.real_value += 360.0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -7,8 +7,6 @@
|
|||||||
// If you wish to distribute your changes, please submit them to the
|
// If you wish to distribute your changes, please submit them to the
|
||||||
// Colvars repository at GitHub.
|
// Colvars repository at GitHub.
|
||||||
|
|
||||||
#include <cmath>
|
|
||||||
|
|
||||||
#include "colvarmodule.h"
|
#include "colvarmodule.h"
|
||||||
#include "colvarparse.h"
|
#include "colvarparse.h"
|
||||||
#include "colvaratoms.h"
|
#include "colvaratoms.h"
|
||||||
@ -102,6 +100,12 @@ colvar::coordnum::coordnum(std::string const &conf)
|
|||||||
group1 = parse_group(conf, "group1");
|
group1 = parse_group(conf, "group1");
|
||||||
group2 = parse_group(conf, "group2");
|
group2 = parse_group(conf, "group2");
|
||||||
|
|
||||||
|
if (group1 == NULL || group2 == NULL) {
|
||||||
|
cvm::error("Error: failed to initialize atom groups.\n",
|
||||||
|
INPUT_ERROR);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (int atom_number = cvm::atom_group::overlap(*group1, *group2)) {
|
if (int atom_number = cvm::atom_group::overlap(*group1, *group2)) {
|
||||||
cvm::error("Error: group1 and group2 share a common atom (number: " +
|
cvm::error("Error: group1 and group2 share a common atom (number: " +
|
||||||
cvm::to_str(atom_number) + ")\n", INPUT_ERROR);
|
cvm::to_str(atom_number) + ")\n", INPUT_ERROR);
|
||||||
@ -408,12 +412,6 @@ colvar::h_bond::h_bond()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
colvar::h_bond::~h_bond()
|
|
||||||
{
|
|
||||||
delete atom_groups[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void colvar::h_bond::calc_value()
|
void colvar::h_bond::calc_value()
|
||||||
{
|
{
|
||||||
int const flags = coordnum::ef_null;
|
int const flags = coordnum::ef_null;
|
||||||
@ -655,8 +653,6 @@ colvar::groupcoordnum::groupcoordnum()
|
|||||||
|
|
||||||
void colvar::groupcoordnum::calc_value()
|
void colvar::groupcoordnum::calc_value()
|
||||||
{
|
{
|
||||||
cvm::rvector const r0_vec(0.0); // TODO enable the flag?
|
|
||||||
|
|
||||||
// create fake atoms to hold the com coordinates
|
// create fake atoms to hold the com coordinates
|
||||||
cvm::atom group1_com_atom;
|
cvm::atom group1_com_atom;
|
||||||
cvm::atom group2_com_atom;
|
cvm::atom group2_com_atom;
|
||||||
@ -680,8 +676,6 @@ void colvar::groupcoordnum::calc_value()
|
|||||||
|
|
||||||
void colvar::groupcoordnum::calc_gradients()
|
void colvar::groupcoordnum::calc_gradients()
|
||||||
{
|
{
|
||||||
cvm::rvector const r0_vec(0.0); // TODO enable the flag?
|
|
||||||
|
|
||||||
cvm::atom group1_com_atom;
|
cvm::atom group1_com_atom;
|
||||||
cvm::atom group2_com_atom;
|
cvm::atom group2_com_atom;
|
||||||
group1_com_atom.pos = group1->center_of_mass();
|
group1_com_atom.pos = group1->center_of_mass();
|
||||||
|
|||||||
@ -7,8 +7,6 @@
|
|||||||
// If you wish to distribute your changes, please submit them to the
|
// If you wish to distribute your changes, please submit them to the
|
||||||
// Colvars repository at GitHub.
|
// Colvars repository at GitHub.
|
||||||
|
|
||||||
#include <cmath>
|
|
||||||
|
|
||||||
#include "colvarmodule.h"
|
#include "colvarmodule.h"
|
||||||
#include "colvarvalue.h"
|
#include "colvarvalue.h"
|
||||||
#include "colvarparse.h"
|
#include "colvarparse.h"
|
||||||
@ -102,7 +100,7 @@ colvar::distance_vec::distance_vec(std::string const &conf)
|
|||||||
{
|
{
|
||||||
function_type = "distance_vec";
|
function_type = "distance_vec";
|
||||||
enable(f_cvc_com_based);
|
enable(f_cvc_com_based);
|
||||||
enable(f_cvc_implicit_gradient);
|
disable(f_cvc_explicit_gradient);
|
||||||
x.type(colvarvalue::type_3vector);
|
x.type(colvarvalue::type_3vector);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -112,7 +110,7 @@ colvar::distance_vec::distance_vec()
|
|||||||
{
|
{
|
||||||
function_type = "distance_vec";
|
function_type = "distance_vec";
|
||||||
enable(f_cvc_com_based);
|
enable(f_cvc_com_based);
|
||||||
enable(f_cvc_implicit_gradient);
|
disable(f_cvc_explicit_gradient);
|
||||||
x.type(colvarvalue::type_3vector);
|
x.type(colvarvalue::type_3vector);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -320,7 +318,7 @@ cvm::real colvar::distance_z::dist2(colvarvalue const &x1,
|
|||||||
{
|
{
|
||||||
cvm::real diff = x1.real_value - x2.real_value;
|
cvm::real diff = x1.real_value - x2.real_value;
|
||||||
if (b_periodic) {
|
if (b_periodic) {
|
||||||
cvm::real shift = std::floor(diff/period + 0.5);
|
cvm::real shift = cvm::floor(diff/period + 0.5);
|
||||||
diff -= shift * period;
|
diff -= shift * period;
|
||||||
}
|
}
|
||||||
return diff * diff;
|
return diff * diff;
|
||||||
@ -332,7 +330,7 @@ colvarvalue colvar::distance_z::dist2_lgrad(colvarvalue const &x1,
|
|||||||
{
|
{
|
||||||
cvm::real diff = x1.real_value - x2.real_value;
|
cvm::real diff = x1.real_value - x2.real_value;
|
||||||
if (b_periodic) {
|
if (b_periodic) {
|
||||||
cvm::real shift = std::floor(diff/period + 0.5);
|
cvm::real shift = cvm::floor(diff/period + 0.5);
|
||||||
diff -= shift * period;
|
diff -= shift * period;
|
||||||
}
|
}
|
||||||
return 2.0 * diff;
|
return 2.0 * diff;
|
||||||
@ -344,22 +342,23 @@ colvarvalue colvar::distance_z::dist2_rgrad(colvarvalue const &x1,
|
|||||||
{
|
{
|
||||||
cvm::real diff = x1.real_value - x2.real_value;
|
cvm::real diff = x1.real_value - x2.real_value;
|
||||||
if (b_periodic) {
|
if (b_periodic) {
|
||||||
cvm::real shift = std::floor(diff/period + 0.5);
|
cvm::real shift = cvm::floor(diff/period + 0.5);
|
||||||
diff -= shift * period;
|
diff -= shift * period;
|
||||||
}
|
}
|
||||||
return (-2.0) * diff;
|
return (-2.0) * diff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void colvar::distance_z::wrap(colvarvalue &x) const
|
void colvar::distance_z::wrap(colvarvalue &x_unwrapped) const
|
||||||
{
|
{
|
||||||
if (!b_periodic) {
|
if (!b_periodic) {
|
||||||
// don't wrap if the period has not been set
|
// don't wrap if the period has not been set
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
cvm::real shift = std::floor((x.real_value - wrap_center) / period + 0.5);
|
cvm::real shift =
|
||||||
x.real_value -= shift * period;
|
cvm::floor((x_unwrapped.real_value - wrap_center) / period + 0.5);
|
||||||
|
x_unwrapped.real_value -= shift * period;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -481,7 +480,7 @@ colvar::distance_dir::distance_dir(std::string const &conf)
|
|||||||
{
|
{
|
||||||
function_type = "distance_dir";
|
function_type = "distance_dir";
|
||||||
enable(f_cvc_com_based);
|
enable(f_cvc_com_based);
|
||||||
enable(f_cvc_implicit_gradient);
|
disable(f_cvc_explicit_gradient);
|
||||||
x.type(colvarvalue::type_unit3vector);
|
x.type(colvarvalue::type_unit3vector);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -491,7 +490,7 @@ colvar::distance_dir::distance_dir()
|
|||||||
{
|
{
|
||||||
function_type = "distance_dir";
|
function_type = "distance_dir";
|
||||||
enable(f_cvc_com_based);
|
enable(f_cvc_com_based);
|
||||||
enable(f_cvc_implicit_gradient);
|
disable(f_cvc_explicit_gradient);
|
||||||
x.type(colvarvalue::type_unit3vector);
|
x.type(colvarvalue::type_unit3vector);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -629,7 +628,7 @@ void colvar::distance_inv::calc_value()
|
|||||||
}
|
}
|
||||||
|
|
||||||
x.real_value *= 1.0 / cvm::real(group1->size() * group2->size());
|
x.real_value *= 1.0 / cvm::real(group1->size() * group2->size());
|
||||||
x.real_value = std::pow(x.real_value, -1.0/cvm::real(exponent));
|
x.real_value = cvm::pow(x.real_value, -1.0/cvm::real(exponent));
|
||||||
|
|
||||||
cvm::real const dxdsum = (-1.0/(cvm::real(exponent))) *
|
cvm::real const dxdsum = (-1.0/(cvm::real(exponent))) *
|
||||||
cvm::integer_power(x.real_value, exponent+1) /
|
cvm::integer_power(x.real_value, exponent+1) /
|
||||||
@ -671,7 +670,7 @@ colvar::distance_pairs::distance_pairs(std::string const &conf)
|
|||||||
group2 = parse_group(conf, "group2");
|
group2 = parse_group(conf, "group2");
|
||||||
|
|
||||||
x.type(colvarvalue::type_vector);
|
x.type(colvarvalue::type_vector);
|
||||||
enable(f_cvc_implicit_gradient);
|
disable(f_cvc_explicit_gradient);
|
||||||
x.vector1d_value.resize(group1->size() * group2->size());
|
x.vector1d_value.resize(group1->size() * group2->size());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -679,7 +678,7 @@ colvar::distance_pairs::distance_pairs(std::string const &conf)
|
|||||||
colvar::distance_pairs::distance_pairs()
|
colvar::distance_pairs::distance_pairs()
|
||||||
{
|
{
|
||||||
function_type = "distance_pairs";
|
function_type = "distance_pairs";
|
||||||
enable(f_cvc_implicit_gradient);
|
disable(f_cvc_explicit_gradient);
|
||||||
x.type(colvarvalue::type_vector);
|
x.type(colvarvalue::type_vector);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -747,6 +746,63 @@ void colvar::distance_pairs::apply_force(colvarvalue const &force)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
colvar::dipole_magnitude::dipole_magnitude(std::string const &conf)
|
||||||
|
: cvc(conf)
|
||||||
|
{
|
||||||
|
function_type = "dipole_magnitude";
|
||||||
|
atoms = parse_group(conf, "atoms");
|
||||||
|
init_total_force_params(conf);
|
||||||
|
x.type(colvarvalue::type_scalar);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
colvar::dipole_magnitude::dipole_magnitude(cvm::atom const &a1)
|
||||||
|
{
|
||||||
|
atoms = new cvm::atom_group(std::vector<cvm::atom>(1, a1));
|
||||||
|
register_atom_group(atoms);
|
||||||
|
x.type(colvarvalue::type_scalar);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
colvar::dipole_magnitude::dipole_magnitude()
|
||||||
|
{
|
||||||
|
function_type = "dipole_magnitude";
|
||||||
|
x.type(colvarvalue::type_scalar);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void colvar::dipole_magnitude::calc_value()
|
||||||
|
{
|
||||||
|
cvm::atom_pos const atomsCom = atoms->center_of_mass();
|
||||||
|
atoms->calc_dipole(atomsCom);
|
||||||
|
dipoleV = atoms->dipole();
|
||||||
|
x.real_value = dipoleV.norm();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void colvar::dipole_magnitude::calc_gradients()
|
||||||
|
{
|
||||||
|
cvm::real const aux1 = atoms->total_charge/atoms->total_mass;
|
||||||
|
cvm::atom_pos const dipVunit = dipoleV.unit();
|
||||||
|
|
||||||
|
for (cvm::atom_iter ai = atoms->begin(); ai != atoms->end(); ai++) {
|
||||||
|
ai->grad = (ai->charge - aux1*ai->mass) * dipVunit;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void colvar::dipole_magnitude::apply_force(colvarvalue const &force)
|
||||||
|
{
|
||||||
|
if (!atoms->noforce) {
|
||||||
|
atoms->apply_colvar_force(force.real_value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
simple_scalar_dist_functions(dipole_magnitude)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
colvar::gyration::gyration(std::string const &conf)
|
colvar::gyration::gyration(std::string const &conf)
|
||||||
: cvc(conf)
|
: cvc(conf)
|
||||||
{
|
{
|
||||||
@ -782,7 +838,7 @@ void colvar::gyration::calc_value()
|
|||||||
for (cvm::atom_iter ai = atoms->begin(); ai != atoms->end(); ai++) {
|
for (cvm::atom_iter ai = atoms->begin(); ai != atoms->end(); ai++) {
|
||||||
x.real_value += (ai->pos).norm2();
|
x.real_value += (ai->pos).norm2();
|
||||||
}
|
}
|
||||||
x.real_value = std::sqrt(x.real_value / cvm::real(atoms->size()));
|
x.real_value = cvm::sqrt(x.real_value / cvm::real(atoms->size()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1029,7 +1085,7 @@ void colvar::rmsd::calc_value()
|
|||||||
x.real_value += ((*atoms)[ia].pos - ref_pos[ia]).norm2();
|
x.real_value += ((*atoms)[ia].pos - ref_pos[ia]).norm2();
|
||||||
}
|
}
|
||||||
x.real_value /= cvm::real(atoms->size()); // MSD
|
x.real_value /= cvm::real(atoms->size()); // MSD
|
||||||
x.real_value = std::sqrt(x.real_value);
|
x.real_value = cvm::sqrt(x.real_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1405,7 +1461,7 @@ void colvar::eigenvector::calc_Jacobian_derivative()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
jd.real_value = sum * std::sqrt(eigenvec_invnorm2);
|
jd.real_value = sum * cvm::sqrt(eigenvec_invnorm2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1436,7 +1492,7 @@ colvar::cartesian::cartesian(std::string const &conf)
|
|||||||
}
|
}
|
||||||
|
|
||||||
x.type(colvarvalue::type_vector);
|
x.type(colvarvalue::type_vector);
|
||||||
enable(f_cvc_implicit_gradient);
|
disable(f_cvc_explicit_gradient);
|
||||||
x.vector1d_value.resize(atoms->size() * axes.size());
|
x.vector1d_value.resize(atoms->size() * axes.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -7,8 +7,6 @@
|
|||||||
// If you wish to distribute your changes, please submit them to the
|
// If you wish to distribute your changes, please submit them to the
|
||||||
// Colvars repository at GitHub.
|
// Colvars repository at GitHub.
|
||||||
|
|
||||||
#include <cmath>
|
|
||||||
|
|
||||||
#include "colvarmodule.h"
|
#include "colvarmodule.h"
|
||||||
#include "colvarvalue.h"
|
#include "colvarvalue.h"
|
||||||
#include "colvarparse.h"
|
#include "colvarparse.h"
|
||||||
@ -27,7 +25,7 @@ colvar::alpha_angles::alpha_angles(std::string const &conf)
|
|||||||
cvm::log("Initializing alpha_angles object.\n");
|
cvm::log("Initializing alpha_angles object.\n");
|
||||||
|
|
||||||
function_type = "alpha_angles";
|
function_type = "alpha_angles";
|
||||||
enable(f_cvc_implicit_gradient);
|
enable(f_cvc_explicit_gradient);
|
||||||
x.type(colvarvalue::type_scalar);
|
x.type(colvarvalue::type_scalar);
|
||||||
|
|
||||||
std::string segment_id;
|
std::string segment_id;
|
||||||
@ -118,7 +116,7 @@ colvar::alpha_angles::alpha_angles()
|
|||||||
: cvc()
|
: cvc()
|
||||||
{
|
{
|
||||||
function_type = "alpha_angles";
|
function_type = "alpha_angles";
|
||||||
enable(f_cvc_implicit_gradient);
|
enable(f_cvc_explicit_gradient);
|
||||||
x.type(colvarvalue::type_scalar);
|
x.type(colvarvalue::type_scalar);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -133,6 +131,8 @@ colvar::alpha_angles::~alpha_angles()
|
|||||||
delete hb.back();
|
delete hb.back();
|
||||||
hb.pop_back();
|
hb.pop_back();
|
||||||
}
|
}
|
||||||
|
// Our references to atom groups have become invalid now that children cvcs are deleted
|
||||||
|
atom_groups.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -191,6 +191,58 @@ void colvar::alpha_angles::calc_gradients()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void colvar::alpha_angles::collect_gradients(std::vector<int> const &atom_ids, std::vector<cvm::rvector> &atomic_gradients)
|
||||||
|
{
|
||||||
|
cvm::real cvc_coeff = sup_coeff * cvm::real(sup_np) * cvm::integer_power(value().real_value, sup_np-1);
|
||||||
|
|
||||||
|
if (theta.size()) {
|
||||||
|
cvm::real const theta_norm = (1.0-hb_coeff) / cvm::real(theta.size());
|
||||||
|
|
||||||
|
for (size_t i = 0; i < theta.size(); i++) {
|
||||||
|
cvm::real const t = ((theta[i])->value().real_value-theta_ref)/theta_tol;
|
||||||
|
cvm::real const f = ( (1.0 - (t*t)) /
|
||||||
|
(1.0 - (t*t*t*t)) );
|
||||||
|
cvm::real const dfdt =
|
||||||
|
1.0/(1.0 - (t*t*t*t)) *
|
||||||
|
( (-2.0 * t) + (-1.0*f)*(-4.0 * (t*t*t)) );
|
||||||
|
|
||||||
|
// Coeficient of this CVC's gradient in the colvar gradient, times coefficient of this
|
||||||
|
// angle's gradient in the CVC's gradient
|
||||||
|
cvm::real const coeff = cvc_coeff * theta_norm * dfdt * (1.0/theta_tol);
|
||||||
|
|
||||||
|
for (size_t j = 0; j < theta[i]->atom_groups.size(); j++) {
|
||||||
|
cvm::atom_group &ag = *(theta[i]->atom_groups[j]);
|
||||||
|
for (size_t k = 0; k < ag.size(); k++) {
|
||||||
|
size_t a = std::lower_bound(atom_ids.begin(), atom_ids.end(),
|
||||||
|
ag[k].id) - atom_ids.begin();
|
||||||
|
atomic_gradients[a] += coeff * ag[k].grad;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hb.size()) {
|
||||||
|
|
||||||
|
cvm::real const hb_norm = hb_coeff / cvm::real(hb.size());
|
||||||
|
|
||||||
|
for (size_t i = 0; i < hb.size(); i++) {
|
||||||
|
// Coeficient of this CVC's gradient in the colvar gradient, times coefficient of this
|
||||||
|
// hbond's gradient in the CVC's gradient
|
||||||
|
cvm::real const coeff = cvc_coeff * 0.5 * hb_norm;
|
||||||
|
|
||||||
|
for (size_t j = 0; j < hb[i]->atom_groups.size(); j++) {
|
||||||
|
cvm::atom_group &ag = *(hb[i]->atom_groups[j]);
|
||||||
|
for (size_t k = 0; k < ag.size(); k++) {
|
||||||
|
size_t a = std::lower_bound(atom_ids.begin(), atom_ids.end(),
|
||||||
|
ag[k].id) - atom_ids.begin();
|
||||||
|
atomic_gradients[a] += coeff * ag[k].grad;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void colvar::alpha_angles::apply_force(colvarvalue const &force)
|
void colvar::alpha_angles::apply_force(colvarvalue const &force)
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -242,7 +294,8 @@ colvar::dihedPC::dihedPC(std::string const &conf)
|
|||||||
cvm::log("Initializing dihedral PC object.\n");
|
cvm::log("Initializing dihedral PC object.\n");
|
||||||
|
|
||||||
function_type = "dihedPC";
|
function_type = "dihedPC";
|
||||||
enable(f_cvc_implicit_gradient);
|
// Supported through references to atom groups of children cvcs
|
||||||
|
enable(f_cvc_explicit_gradient);
|
||||||
x.type(colvarvalue::type_scalar);
|
x.type(colvarvalue::type_scalar);
|
||||||
|
|
||||||
std::string segment_id;
|
std::string segment_id;
|
||||||
@ -372,7 +425,8 @@ colvar::dihedPC::dihedPC()
|
|||||||
: cvc()
|
: cvc()
|
||||||
{
|
{
|
||||||
function_type = "dihedPC";
|
function_type = "dihedPC";
|
||||||
enable(f_cvc_implicit_gradient);
|
// Supported through references to atom groups of children cvcs
|
||||||
|
enable(f_cvc_explicit_gradient);
|
||||||
x.type(colvarvalue::type_scalar);
|
x.type(colvarvalue::type_scalar);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -383,6 +437,8 @@ colvar::dihedPC::~dihedPC()
|
|||||||
delete theta.back();
|
delete theta.back();
|
||||||
theta.pop_back();
|
theta.pop_back();
|
||||||
}
|
}
|
||||||
|
// Our references to atom groups have become invalid now that children cvcs are deleted
|
||||||
|
atom_groups.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -392,8 +448,8 @@ void colvar::dihedPC::calc_value()
|
|||||||
for (size_t i = 0; i < theta.size(); i++) {
|
for (size_t i = 0; i < theta.size(); i++) {
|
||||||
theta[i]->calc_value();
|
theta[i]->calc_value();
|
||||||
cvm::real const t = (PI / 180.) * theta[i]->value().real_value;
|
cvm::real const t = (PI / 180.) * theta[i]->value().real_value;
|
||||||
x.real_value += coeffs[2*i ] * std::cos(t)
|
x.real_value += coeffs[2*i ] * cvm::cos(t)
|
||||||
+ coeffs[2*i+1] * std::sin(t);
|
+ coeffs[2*i+1] * cvm::sin(t);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -406,12 +462,35 @@ void colvar::dihedPC::calc_gradients()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void colvar::dihedPC::collect_gradients(std::vector<int> const &atom_ids, std::vector<cvm::rvector> &atomic_gradients)
|
||||||
|
{
|
||||||
|
cvm::real cvc_coeff = sup_coeff * cvm::real(sup_np) * cvm::integer_power(value().real_value, sup_np-1);
|
||||||
|
for (size_t i = 0; i < theta.size(); i++) {
|
||||||
|
cvm::real const t = (PI / 180.) * theta[i]->value().real_value;
|
||||||
|
cvm::real const dcosdt = - (PI / 180.) * cvm::sin(t);
|
||||||
|
cvm::real const dsindt = (PI / 180.) * cvm::cos(t);
|
||||||
|
// Coeficient of this dihedPC's gradient in the colvar gradient, times coefficient of this
|
||||||
|
// dihedral's gradient in the dihedPC's gradient
|
||||||
|
cvm::real const coeff = cvc_coeff * (coeffs[2*i] * dcosdt + coeffs[2*i+1] * dsindt);
|
||||||
|
|
||||||
|
for (size_t j = 0; j < theta[i]->atom_groups.size(); j++) {
|
||||||
|
cvm::atom_group &ag = *(theta[i]->atom_groups[j]);
|
||||||
|
for (size_t k = 0; k < ag.size(); k++) {
|
||||||
|
size_t a = std::lower_bound(atom_ids.begin(), atom_ids.end(),
|
||||||
|
ag[k].id) - atom_ids.begin();
|
||||||
|
atomic_gradients[a] += coeff * ag[k].grad;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void colvar::dihedPC::apply_force(colvarvalue const &force)
|
void colvar::dihedPC::apply_force(colvarvalue const &force)
|
||||||
{
|
{
|
||||||
for (size_t i = 0; i < theta.size(); i++) {
|
for (size_t i = 0; i < theta.size(); i++) {
|
||||||
cvm::real const t = (PI / 180.) * theta[i]->value().real_value;
|
cvm::real const t = (PI / 180.) * theta[i]->value().real_value;
|
||||||
cvm::real const dcosdt = - (PI / 180.) * std::sin(t);
|
cvm::real const dcosdt = - (PI / 180.) * cvm::sin(t);
|
||||||
cvm::real const dsindt = (PI / 180.) * std::cos(t);
|
cvm::real const dsindt = (PI / 180.) * cvm::cos(t);
|
||||||
|
|
||||||
theta[i]->apply_force((coeffs[2*i ] * dcosdt +
|
theta[i]->apply_force((coeffs[2*i ] * dcosdt +
|
||||||
coeffs[2*i+1] * dsindt) * force);
|
coeffs[2*i+1] * dsindt) * force);
|
||||||
|
|||||||
@ -7,8 +7,6 @@
|
|||||||
// If you wish to distribute your changes, please submit them to the
|
// If you wish to distribute your changes, please submit them to the
|
||||||
// Colvars repository at GitHub.
|
// Colvars repository at GitHub.
|
||||||
|
|
||||||
#include <cmath>
|
|
||||||
|
|
||||||
#include "colvarmodule.h"
|
#include "colvarmodule.h"
|
||||||
#include "colvarvalue.h"
|
#include "colvarvalue.h"
|
||||||
#include "colvarparse.h"
|
#include "colvarparse.h"
|
||||||
@ -18,21 +16,27 @@
|
|||||||
|
|
||||||
|
|
||||||
colvar::orientation::orientation(std::string const &conf)
|
colvar::orientation::orientation(std::string const &conf)
|
||||||
: cvc(conf)
|
: cvc()
|
||||||
{
|
{
|
||||||
function_type = "orientation";
|
function_type = "orientation";
|
||||||
atoms = parse_group(conf, "atoms");
|
disable(f_cvc_explicit_gradient);
|
||||||
enable(f_cvc_implicit_gradient);
|
|
||||||
x.type(colvarvalue::type_quaternion);
|
x.type(colvarvalue::type_quaternion);
|
||||||
|
init(conf);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int colvar::orientation::init(std::string const &conf)
|
||||||
|
{
|
||||||
|
int error_code = cvc::init(conf);
|
||||||
|
|
||||||
|
atoms = parse_group(conf, "atoms");
|
||||||
ref_pos.reserve(atoms->size());
|
ref_pos.reserve(atoms->size());
|
||||||
|
|
||||||
if (get_keyval(conf, "refPositions", ref_pos, ref_pos)) {
|
if (get_keyval(conf, "refPositions", ref_pos, ref_pos)) {
|
||||||
cvm::log("Using reference positions from input file.\n");
|
cvm::log("Using reference positions from input file.\n");
|
||||||
if (ref_pos.size() != atoms->size()) {
|
if (ref_pos.size() != atoms->size()) {
|
||||||
cvm::error("Error: reference positions do not "
|
return cvm::error("Error: reference positions do not "
|
||||||
"match the number of requested atoms.\n");
|
"match the number of requested atoms.\n", INPUT_ERROR);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,9 +50,8 @@ colvar::orientation::orientation(std::string const &conf)
|
|||||||
// use PDB flags if column is provided
|
// use PDB flags if column is provided
|
||||||
bool found = get_keyval(conf, "refPositionsColValue", file_col_value, 0.0);
|
bool found = get_keyval(conf, "refPositionsColValue", file_col_value, 0.0);
|
||||||
if (found && file_col_value==0.0) {
|
if (found && file_col_value==0.0) {
|
||||||
cvm::error("Error: refPositionsColValue, "
|
return cvm::error("Error: refPositionsColValue, "
|
||||||
"if provided, must be non-zero.\n");
|
"if provided, must be non-zero.\n", INPUT_ERROR);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -59,9 +62,8 @@ colvar::orientation::orientation(std::string const &conf)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!ref_pos.size()) {
|
if (!ref_pos.size()) {
|
||||||
cvm::error("Error: must define a set of "
|
return cvm::error("Error: must define a set of "
|
||||||
"reference coordinates.\n");
|
"reference coordinates.\n", INPUT_ERROR);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -85,6 +87,7 @@ colvar::orientation::orientation(std::string const &conf)
|
|||||||
rot.request_group2_gradients(atoms->size());
|
rot.request_group2_gradients(atoms->size());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return error_code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -92,7 +95,7 @@ colvar::orientation::orientation()
|
|||||||
: cvc()
|
: cvc()
|
||||||
{
|
{
|
||||||
function_type = "orientation";
|
function_type = "orientation";
|
||||||
enable(f_cvc_implicit_gradient);
|
disable(f_cvc_explicit_gradient);
|
||||||
x.type(colvarvalue::type_quaternion);
|
x.type(colvarvalue::type_quaternion);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -158,10 +161,18 @@ colvarvalue colvar::orientation::dist2_rgrad(colvarvalue const &x1,
|
|||||||
|
|
||||||
|
|
||||||
colvar::orientation_angle::orientation_angle(std::string const &conf)
|
colvar::orientation_angle::orientation_angle(std::string const &conf)
|
||||||
: orientation(conf)
|
: orientation()
|
||||||
{
|
{
|
||||||
function_type = "orientation_angle";
|
function_type = "orientation_angle";
|
||||||
|
enable(f_cvc_explicit_gradient);
|
||||||
x.type(colvarvalue::type_scalar);
|
x.type(colvarvalue::type_scalar);
|
||||||
|
init(conf);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int colvar::orientation_angle::init(std::string const &conf)
|
||||||
|
{
|
||||||
|
return orientation::init(conf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -169,6 +180,7 @@ colvar::orientation_angle::orientation_angle()
|
|||||||
: orientation()
|
: orientation()
|
||||||
{
|
{
|
||||||
function_type = "orientation_angle";
|
function_type = "orientation_angle";
|
||||||
|
enable(f_cvc_explicit_gradient);
|
||||||
x.type(colvarvalue::type_scalar);
|
x.type(colvarvalue::type_scalar);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -180,9 +192,9 @@ void colvar::orientation_angle::calc_value()
|
|||||||
rot.calc_optimal_rotation(ref_pos, atoms->positions_shifted(-1.0 * atoms_cog));
|
rot.calc_optimal_rotation(ref_pos, atoms->positions_shifted(-1.0 * atoms_cog));
|
||||||
|
|
||||||
if ((rot.q).q0 >= 0.0) {
|
if ((rot.q).q0 >= 0.0) {
|
||||||
x.real_value = (180.0/PI) * 2.0 * std::acos((rot.q).q0);
|
x.real_value = (180.0/PI) * 2.0 * cvm::acos((rot.q).q0);
|
||||||
} else {
|
} else {
|
||||||
x.real_value = (180.0/PI) * 2.0 * std::acos(-1.0 * (rot.q).q0);
|
x.real_value = (180.0/PI) * 2.0 * cvm::acos(-1.0 * (rot.q).q0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -191,7 +203,7 @@ void colvar::orientation_angle::calc_gradients()
|
|||||||
{
|
{
|
||||||
cvm::real const dxdq0 =
|
cvm::real const dxdq0 =
|
||||||
( ((rot.q).q0 * (rot.q).q0 < 1.0) ?
|
( ((rot.q).q0 * (rot.q).q0 < 1.0) ?
|
||||||
((180.0 / PI) * (-2.0) / std::sqrt(1.0 - ((rot.q).q0 * (rot.q).q0))) :
|
((180.0 / PI) * (-2.0) / cvm::sqrt(1.0 - ((rot.q).q0 * (rot.q).q0))) :
|
||||||
0.0 );
|
0.0 );
|
||||||
|
|
||||||
for (size_t ia = 0; ia < atoms->size(); ia++) {
|
for (size_t ia = 0; ia < atoms->size(); ia++) {
|
||||||
@ -214,10 +226,18 @@ simple_scalar_dist_functions(orientation_angle)
|
|||||||
|
|
||||||
|
|
||||||
colvar::orientation_proj::orientation_proj(std::string const &conf)
|
colvar::orientation_proj::orientation_proj(std::string const &conf)
|
||||||
: orientation(conf)
|
: orientation()
|
||||||
{
|
{
|
||||||
function_type = "orientation_proj";
|
function_type = "orientation_proj";
|
||||||
|
enable(f_cvc_explicit_gradient);
|
||||||
x.type(colvarvalue::type_scalar);
|
x.type(colvarvalue::type_scalar);
|
||||||
|
init(conf);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int colvar::orientation_proj::init(std::string const &conf)
|
||||||
|
{
|
||||||
|
return orientation::init(conf);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -225,6 +245,7 @@ colvar::orientation_proj::orientation_proj()
|
|||||||
: orientation()
|
: orientation()
|
||||||
{
|
{
|
||||||
function_type = "orientation_proj";
|
function_type = "orientation_proj";
|
||||||
|
enable(f_cvc_explicit_gradient);
|
||||||
x.type(colvarvalue::type_scalar);
|
x.type(colvarvalue::type_scalar);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -261,18 +282,28 @@ simple_scalar_dist_functions(orientation_proj)
|
|||||||
|
|
||||||
|
|
||||||
colvar::tilt::tilt(std::string const &conf)
|
colvar::tilt::tilt(std::string const &conf)
|
||||||
: orientation(conf)
|
: orientation()
|
||||||
{
|
{
|
||||||
function_type = "tilt";
|
function_type = "tilt";
|
||||||
|
enable(f_cvc_explicit_gradient);
|
||||||
|
x.type(colvarvalue::type_scalar);
|
||||||
|
init(conf);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int colvar::tilt::init(std::string const &conf)
|
||||||
|
{
|
||||||
|
int error_code = COLVARS_OK;
|
||||||
|
|
||||||
|
error_code |= orientation::init(conf);
|
||||||
|
|
||||||
get_keyval(conf, "axis", axis, cvm::rvector(0.0, 0.0, 1.0));
|
get_keyval(conf, "axis", axis, cvm::rvector(0.0, 0.0, 1.0));
|
||||||
|
|
||||||
if (axis.norm2() != 1.0) {
|
if (axis.norm2() != 1.0) {
|
||||||
axis /= axis.norm();
|
axis /= axis.norm();
|
||||||
cvm::log("Normalizing rotation axis to "+cvm::to_str(axis)+".\n");
|
cvm::log("Normalizing rotation axis to "+cvm::to_str(axis)+".\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
x.type(colvarvalue::type_scalar);
|
return error_code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -280,6 +311,7 @@ colvar::tilt::tilt()
|
|||||||
: orientation()
|
: orientation()
|
||||||
{
|
{
|
||||||
function_type = "tilt";
|
function_type = "tilt";
|
||||||
|
enable(f_cvc_explicit_gradient);
|
||||||
x.type(colvarvalue::type_scalar);
|
x.type(colvarvalue::type_scalar);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -322,20 +354,30 @@ simple_scalar_dist_functions(tilt)
|
|||||||
|
|
||||||
|
|
||||||
colvar::spin_angle::spin_angle(std::string const &conf)
|
colvar::spin_angle::spin_angle(std::string const &conf)
|
||||||
: orientation(conf)
|
: orientation()
|
||||||
{
|
{
|
||||||
function_type = "spin_angle";
|
function_type = "spin_angle";
|
||||||
|
period = 360.0;
|
||||||
|
b_periodic = true;
|
||||||
|
enable(f_cvc_explicit_gradient);
|
||||||
|
x.type(colvarvalue::type_scalar);
|
||||||
|
init(conf);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int colvar::spin_angle::init(std::string const &conf)
|
||||||
|
{
|
||||||
|
int error_code = COLVARS_OK;
|
||||||
|
|
||||||
|
error_code |= orientation::init(conf);
|
||||||
|
|
||||||
get_keyval(conf, "axis", axis, cvm::rvector(0.0, 0.0, 1.0));
|
get_keyval(conf, "axis", axis, cvm::rvector(0.0, 0.0, 1.0));
|
||||||
|
|
||||||
if (axis.norm2() != 1.0) {
|
if (axis.norm2() != 1.0) {
|
||||||
axis /= axis.norm();
|
axis /= axis.norm();
|
||||||
cvm::log("Normalizing rotation axis to "+cvm::to_str(axis)+".\n");
|
cvm::log("Normalizing rotation axis to "+cvm::to_str(axis)+".\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
period = 360.0;
|
return error_code;
|
||||||
b_periodic = true;
|
|
||||||
x.type(colvarvalue::type_scalar);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -345,6 +387,7 @@ colvar::spin_angle::spin_angle()
|
|||||||
function_type = "spin_angle";
|
function_type = "spin_angle";
|
||||||
period = 360.0;
|
period = 360.0;
|
||||||
b_periodic = true;
|
b_periodic = true;
|
||||||
|
enable(f_cvc_explicit_gradient);
|
||||||
x.type(colvarvalue::type_scalar);
|
x.type(colvarvalue::type_scalar);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -410,15 +453,15 @@ colvarvalue colvar::spin_angle::dist2_rgrad(colvarvalue const &x1,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void colvar::spin_angle::wrap(colvarvalue &x) const
|
void colvar::spin_angle::wrap(colvarvalue &x_unwrapped) const
|
||||||
{
|
{
|
||||||
if ((x.real_value - wrap_center) >= 180.0) {
|
if ((x_unwrapped.real_value - wrap_center) >= 180.0) {
|
||||||
x.real_value -= 360.0;
|
x_unwrapped.real_value -= 360.0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((x.real_value - wrap_center) < -180.0) {
|
if ((x_unwrapped.real_value - wrap_center) < -180.0) {
|
||||||
x.real_value += 360.0;
|
x_unwrapped.real_value += 360.0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user