Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
161 commits
Select commit Hold shift + click to select a range
73304ab
first draft
alphataubio Jan 29, 2026
f43452b
dont scale colvars values by number of atoms
alphataubio Jan 29, 2026
3425f54
Update in.peptide-colvars
alphataubio Jan 29, 2026
e6ac159
Update in.peptide-colvars
alphataubio Jan 29, 2026
9439fb0
second draft
alphataubio Jan 29, 2026
43d4874
third draft
alphataubio Jan 29, 2026
a31bec2
update size_vector in case fix_modify changed number of colvars
alphataubio Jan 29, 2026
6167997
cleanup
alphataubio Jan 29, 2026
a7c5227
get_thermo_colname
alphataubio Jan 29, 2026
4b12116
allow friend class FixColvars to call colname_auto()
alphataubio Jan 30, 2026
68d0584
thermo_modify colname auto
alphataubio Jan 30, 2026
f72a609
resize name on mpi rank > 0
alphataubio Jan 30, 2026
97b315d
formatting CV(name) and name CV(Energy) for scalar
alphataubio Jan 30, 2026
687c3bd
add global vector and thermo_modify colname auto
alphataubio Jan 30, 2026
b70d0fd
whitespace
alphataubio Jan 30, 2026
57bd847
same convention as existing fixes requested by @jrgissing
alphataubio Jan 30, 2026
1179717
update sentence colname auto
alphataubio Jan 30, 2026
48e1263
ascii quotes (copilot)
alphataubio Jan 30, 2026
6e83d1a
??? -> TBD (copilot)
alphataubio Jan 30, 2026
91b42df
Merge branch 'develop' into alphataubio-colvars
alphataubio Jan 30, 2026
49a421c
compute_vector() -> compute_array()
alphataubio Jan 30, 2026
2a7d15d
add distanceVec colvar to test compute_array()
alphataubio Jan 30, 2026
ac8f8b6
move arse_module_config and update_colvars to post_constructor
alphataubio Jan 30, 2026
b07d084
add array column to compute/fix colname auto
alphataubio Jan 30, 2026
aa18955
whitespace
alphataubio Jan 30, 2026
77ab15e
update doc for global array instead of global vector
alphataubio Jan 30, 2026
1f928c7
id->ID and f_ -> f\_
alphataubio Jan 30, 2026
2055a22
minimal example to test fix_modify config
alphataubio Jan 31, 2026
3ca5e62
simplify code formatting
alphataubio Jan 31, 2026
e2d6f2e
simplify to size_array_cols = 4 (maximum quaternion colvar)
alphataubio Jan 31, 2026
d773029
expand explanation of scalar and vector colvars
alphataubio Jan 31, 2026
8c2314f
move update_colvars to setup and modify_param for both rank 0 and >0
alphataubio Jan 31, 2026
84af07b
cleanup
alphataubio Jan 31, 2026
c2aa0d2
move update_colvars earlier in setup for fix colvars input
alphataubio Jan 31, 2026
b1f9941
handle variable size colvars eg. cartesian, distancePairs
alphataubio Jan 31, 2026
6f58db9
add cartesian colvar to test example
alphataubio Jan 31, 2026
45535a8
add description of cartesian and distancePairs
alphataubio Jan 31, 2026
6e97689
minimal example to test lammps variable substitution mpi deadlock bug
alphataubio Jan 31, 2026
7f6bdba
Substitute LAMMPS variables on all ranks to avoid mpi deadlock
alphataubio Jan 31, 2026
710d35d
3xN -> Nx3
alphataubio Jan 31, 2026
cbf1e8e
move MPI_Comm_split earlier to constructor to fix multiple replica fi…
alphataubio Feb 1, 2026
33bc043
Merge branch 'develop' into alphataubio-colvars
alphataubio Feb 4, 2026
b1260ce
command args
salamaaya Feb 4, 2026
5fcf44f
generate angles
salamaaya Feb 5, 2026
0da5bd7
use special bonds to generate angles
salamaaya Feb 9, 2026
853f557
generate dihedrals
salamaaya Feb 9, 2026
9d973ea
generate impropers
salamaaya Feb 9, 2026
3989989
tiny_epoxy example
salamaaya Feb 9, 2026
fef3add
doc: Shorten the description of array-style thermo variables
giacomofiorin Feb 9, 2026
98dfcae
style: Join split line
giacomofiorin Feb 9, 2026
ed9d4c2
This should be better.
alphataubio Feb 10, 2026
29676d0
update_colvars() -> setup_colvars()
alphataubio Feb 10, 2026
989555d
std::max -> MAX
alphataubio Feb 10, 2026
295f712
Error::NOLASTLINE
alphataubio Feb 10, 2026
777e097
Merge branch 'alphataubio-colvars' of https://github.com/alphataubio/…
alphataubio Feb 10, 2026
5e1033f
Error::NOLASTLINE
alphataubio Feb 10, 2026
22dd8de
Error::NOLASTLINE
alphataubio Feb 10, 2026
47a59a5
Revert "doc: Shorten the description of array-style thermo variables"
alphataubio Feb 10, 2026
56cf902
missing_cmd_args
alphataubio Feb 10, 2026
bf290a4
restore empty lines
alphataubio Feb 10, 2026
4c9ae29
revert non-functional change
alphataubio Feb 10, 2026
1609a10
4 lines instead of 2.
alphataubio Feb 10, 2026
9262199
For nested conditionals or loops, all but the innermost curly braces …
alphataubio Feb 10, 2026
6a539e7
Merge branch 'develop' into alphataubio-colvars
alphataubio Feb 10, 2026
48f09d2
whitespqce
alphataubio Feb 10, 2026
a8398ba
Merge branch 'develop' into autogenerate
salamaaya Feb 13, 2026
dc12753
update infer_* usage
salamaaya Feb 13, 2026
e1810ce
update error checking
salamaaya Feb 13, 2026
7a91c08
Implemented @jtclemm recommendations from previous PR.
Miniland1333 Feb 18, 2026
4eee12c
Merge branch 'develop' into autogenerate
salamaaya Feb 19, 2026
6ec7eb9
change input format to auto
salamaaya Feb 19, 2026
a5b3f22
docs
salamaaya Feb 20, 2026
7cab6e8
Merge branch 'develop' into mbx-plugin3
akohlmey Feb 21, 2026
d657792
silence compiler warning
akohlmey Feb 21, 2026
8108c41
make compilation of MBX package with Linux-to-Windows cross-compiler …
akohlmey Feb 21, 2026
caea3d6
Merge remote-tracking branch 'github/develop' into mbx-plugin3
akohlmey Feb 21, 2026
e7573be
adapt for building standalone plugin package for Windows
akohlmey Feb 21, 2026
8c9722c
update improper central atom calculation
salamaaya Feb 23, 2026
bc15feb
comments
salamaaya Feb 24, 2026
9f75296
error checking
salamaaya Feb 25, 2026
112b89b
Merge branch 'develop' into autogenerate
salamaaya Feb 25, 2026
7257cc5
Update molecule.rst with versionadded and clarity
jrgissing Feb 25, 2026
ddd6fdf
correct overwriting
salamaaya Feb 25, 2026
aa68a31
update logs
salamaaya Feb 26, 2026
5686077
error check hybrid improper_style
salamaaya Feb 27, 2026
3d0340c
move hybrid error checking
salamaaya Feb 27, 2026
bfdb344
Merge branch 'develop' into mbx-plugin3
Miniland1333 Mar 2, 2026
eaca2fd
Remove whitespace in math_const.h
Miniland1333 Mar 2, 2026
9a2d067
Merge branch 'lammps:develop' into alphataubio-colvars
alphataubio Mar 12, 2026
8b5897f
make colname_auto() public instead of having friend class FixColvars
alphataubio Mar 12, 2026
547a675
whitespace
alphataubio Mar 12, 2026
d903b60
cosmetic changes
alphataubio Mar 12, 2026
a88fa28
more cosmetic changrs
alphataubio Mar 12, 2026
c43fb38
update log files of example requested by @jrgissing
alphataubio Mar 12, 2026
dc7b1fa
remove links from rst to avoid link rot
alphataubio Mar 13, 2026
ff015a4
add nullptr guards
alphataubio Mar 14, 2026
daff834
fix order of execution for colname_auto() during header instead of co…
alphataubio Mar 14, 2026
a8ac66e
make colname_auto() private again (MCAPA !)
alphataubio Mar 14, 2026
e3f2b14
Update src/thermo.cpp
alphataubio Mar 18, 2026
4cfffc5
Update src/COLVARS/fix_colvars.cpp
alphataubio Mar 18, 2026
6ca56aa
Update src/thermo.cpp
alphataubio Mar 18, 2026
07d0f6e
Merge branch 'develop' into alphataubio-colvars
alphataubio Mar 21, 2026
93e1653
Revert "Update src/thermo.cpp"
alphataubio Mar 21, 2026
aefb0a2
Revert "Update src/thermo.cpp"
alphataubio Mar 21, 2026
95c442f
Revert "make colname_auto() private again (MCAPA !)"
alphataubio Mar 21, 2026
515bdbf
Revert "fix order of execution for colname_auto() during header inste…
alphataubio Mar 21, 2026
62e8fb0
Revert "add nullptr guards"
alphataubio Mar 21, 2026
6b3c13d
revert all changes to thermo
alphataubio Mar 21, 2026
a5b6af6
remove get_thermo_colname()
alphataubio Mar 21, 2026
e3f7c81
remove colname auto from example
alphataubio Mar 21, 2026
d3b535e
remove colname auto from rst
alphataubio Mar 21, 2026
34eb407
removed long list of very specific Colvars keywords
alphataubio Mar 21, 2026
e95c149
fix compile error
alphataubio Mar 21, 2026
aab0bd6
Initial plan
Copilot Mar 22, 2026
0d882ab
Add draw_trinorm() to Image class for per-vertex color and normal int…
Copilot Mar 22, 2026
41317ee
Change EllipsoidObj to use icosahedron instead of octahedron as initi…
Copilot Mar 20, 2026
df48e9b
Fix triangle drawing gaps by using floor/ceil for pixel coordinate co…
Copilot Mar 21, 2026
9533b34
port rounding fix from collected-small-fixes
akohlmey Mar 22, 2026
883a849
coding style updates
akohlmey Mar 22, 2026
32a7db5
remove redundant opacity check from applying transparency pattern
akohlmey Mar 22, 2026
abc88da
add symbolic constant for TRINORM objects
akohlmey Mar 22, 2026
1ddac1e
Update EllipsoidObj, ArrowObj, ConeObj to use draw_trinorm(); add Gra…
Copilot Mar 22, 2026
0d277a9
Merge branch 'develop' into copilot/add-draw-trinorm-function
akohlmey Mar 22, 2026
516ee2a
back out changes to fix smd/wall/surface
akohlmey Mar 22, 2026
797561f
update ellipsoid drawing docs for use of rounded triangles, simplify …
akohlmey Mar 22, 2026
d35ada3
no longer need to brighten colors with triangulated ellipsoids. corre…
akohlmey Mar 22, 2026
462a0eb
fall back to white color if no valid type is given
akohlmey Mar 22, 2026
66d92a5
use interpolated colors and recover drawing wire mesh
akohlmey Mar 22, 2026
94390c5
programming style improvements
akohlmey Mar 22, 2026
2c93d4b
provide per vertex type information so we can use interpolated colors
akohlmey Mar 22, 2026
cd96834
update docs for fix graphics/isosurface
akohlmey Mar 22, 2026
6bafbda
tweak normal calculation for arrow tip to be more pointy at the tip
akohlmey Mar 22, 2026
7ea91b7
apply small updates to address review comments
akohlmey Mar 22, 2026
28c86a6
use shaded/rounded triangles for plain triangle style of bodies
akohlmey Mar 23, 2026
13cbdc2
update images in visualization howto
akohlmey Mar 23, 2026
7e6d403
Merge remote-tracking branch 'upstream/develop' into mbx-plugin3
Miniland1333 Mar 23, 2026
bbf6ef0
no more cylinder shifting required since the "both" options is no more
akohlmey Mar 23, 2026
e995714
Temporary update to MBX tar
Miniland1333 Mar 23, 2026
b4dcbc8
Remove M_PI macro from MBX
Miniland1333 Mar 23, 2026
59a005e
Updated MBX tests
Miniland1333 Mar 23, 2026
0364b1b
Updated MBX release Tar
Miniland1333 Mar 23, 2026
4c444a0
Recompute ellipsoid normals from surface gradient after deformation i…
Copilot Mar 24, 2026
6e494d1
move hybrid error check while reading keyword
salamaaya Mar 2, 2026
d0c2cd6
Update documentation for *auto* keyword usage
jrgissing Mar 7, 2026
2cbf5c6
copilot comments
salamaaya Mar 11, 2026
76dff53
correct placement of central atom for impropers
salamaaya Mar 11, 2026
efda0fb
initial unit tests
salamaaya Mar 25, 2026
4901eae
Merge branch 'develop' into autogenerate
salamaaya Mar 25, 2026
ee3047b
title normals for bodies toward the center of the triangle or square …
akohlmey Mar 25, 2026
47ae78c
Merge branch 'develop' into mbx-plugin3
Miniland1333 Mar 25, 2026
5ca745d
remove MBX patch and update CMake scripting accordingly for new MBX v…
akohlmey Mar 25, 2026
77e9d33
Merge branch 'develop' into add-and-apply-draw-trinorm-function
akohlmey Mar 26, 2026
9739420
correct logic for selecting edges versus triangles
akohlmey Mar 26, 2026
29556b6
documentation updates and corrections and spelling fixes for superell…
akohlmey Mar 26, 2026
d0c409c
implement logic for bodyflag2 to support 4 styles: shaded triangles, …
akohlmey Mar 26, 2026
f77ede4
Merge pull request #4889 from Miniland1333/mbx-plugin3
akohlmey Mar 26, 2026
34d8b00
Merge branch 'develop' into alphataubio-colvars
akohlmey Mar 26, 2026
e982fd7
reformat and restore some whitespace for improved readability
akohlmey Mar 26, 2026
0eab621
Merge pull request #4925 from akohlmey/add-and-apply-draw-trinorm-fun…
akohlmey Mar 26, 2026
b5c1af3
Merge pull request #4894 from salamaaya/autogenerate
akohlmey Mar 26, 2026
ea2e02f
Merge pull request #4866 from alphataubio/alphataubio-colvars
akohlmey Mar 26, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 36 additions & 15 deletions cmake/Modules/Packages/MBX.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ if(POLICY CMP0135)
cmake_policy(SET CMP0135 OLD)
endif()

if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
message(FATAL_ERROR "Compiling the MBX package for Windows is currently not supported")
if((CMAKE_SYSTEM_NAME STREQUAL "Windows") AND (NOT CMAKE_CROSSCOMPILING))
message(FATAL_ERROR "Compiling the MBX package natively for Windows is currently not supported")
endif()

# for supporting multiple concurrent mbx installations for debugging and testing
Expand All @@ -34,8 +34,8 @@ if(CONFIGURE_REQUEST_PIC)
list(APPEND MBX_CONFIG_FLAGS ${CONFIGURE_REQUEST_PIC})
endif()

set(MBXLIB_URL "https://github.com/paesanilab/MBX/releases/download/v1.3.5/mbx-1.3.5.tar.gz" CACHE STRING "URL for MBX tarball")
set(MBXLIB_SHA256 "f66de645b28d73e52be69e6c857b7bd58b6dd0ee398030daecc5bf976bf28111" CACHE STRING "SHA256 checksum of MBX tarball")
set(MBXLIB_URL "https://github.com/paesanilab/MBX/releases/download/v1.3.12/mbx-1.3.12.tar.gz" CACHE STRING "URL for MBX tarball")
set(MBXLIB_SHA256 "0f3600d0841e1736abec3fe6a38c8ff673523fe4494169db2839ddaa9bb618bf" CACHE STRING "SHA256 checksum of MBX tarball")

mark_as_advanced(MBXLIB_URL)
mark_as_advanced(MBXLIB_SHA256)
Expand Down Expand Up @@ -65,17 +65,38 @@ if(DOWNLOAD_MBX)
message(STATUS "MBX_CONFIG_FLAGS: ${MBX_CONFIG_FLAGS}")

include(ExternalProject)
ExternalProject_Add(mbx_build
URL ${MBXLIB_URL}
URL_HASH SHA256=${MBXLIB_SHA256}
CONFIGURE_COMMAND <SOURCE_DIR>/configure
--prefix=<INSTALL_DIR>
${MBX_CONFIG_FLAGS}
CXX=${MBX_CONFIG_CXX}
CC=${MBX_CONFIG_CC}
CPPFLAGS=-I${FFTW3_INCLUDE_DIRS}
BUILD_BYPRODUCTS ${MBX_BUILD_BYPRODUCTS}
)

# hacks to make Linux-to-Windows cross-compilation work
if((CMAKE_SYSTEM_NAME STREQUAL "Windows") AND (CMAKE_CROSSCOMPILING))
ExternalProject_Add(mbx_build
URL ${MBXLIB_URL}
URL_HASH SHA256=${MBXLIB_SHA256}
BUILD_IN_SOURCE TRUE
CONFIGURE_COMMAND mingw64-configure
--prefix=<INSTALL_DIR>
--disable-i-pi-plugin
${MBX_CONFIG_FLAGS}
INSTALL_COMMAND make install prefix=-build includedir=/include bindir=/bin
datadir=/share exec_prefix=/ infodir=/share/info
libdir=/lib libexecdir=/libexec localstatedir=/var
mandir=/share/man sbindir=/sbin sharedstatedir=/com
sysconfdir=/etc DESTDIR=<INSTALL_DIR>
BUILD_BYPRODUCTS ${MBX_BUILD_BYPRODUCTS}
)
else()
ExternalProject_Add(mbx_build
URL ${MBXLIB_URL}
URL_HASH SHA256=${MBXLIB_SHA256}
CONFIGURE_COMMAND <SOURCE_DIR>/configure
--prefix=<INSTALL_DIR>
--disable-i-pi-plugin
${MBX_CONFIG_FLAGS}
CXX=${MBX_CONFIG_CXX}
CC=${MBX_CONFIG_CC}
CPPFLAGS=-I${FFTW3_INCLUDE_DIRS}
BUILD_BYPRODUCTS ${MBX_BUILD_BYPRODUCTS}
)
endif()
ExternalProject_get_property(mbx_build INSTALL_DIR)
add_library(LAMMPS::MBX UNKNOWN IMPORTED)
add_dependencies(LAMMPS::MBX mbx_build)
Expand Down
19 changes: 14 additions & 5 deletions doc/src/Howto_body.rst
Original file line number Diff line number Diff line change
Expand Up @@ -499,12 +499,21 @@ spheres, one for each sub-particle. The size of each sphere is
determined by the *bflag1* parameter for the *body* keyword. The
*bflag2* argument is ignored.

For the *rounded/polygon* body style, each body is drawn as a polygon
and for *rounded/polyhedron* as a polyhedron. The *bflag2* argument
For the *rounded/polygon* body style, each body is drawn as a polygon.
The *bflag2* argument selects how the bodies are represented: for a
value of 1, only the faces are drawn; for a value of 2 instead only a
wireframe outline is drawn; and for a value of 3 both the faces and the
wireframe outline are drawn. The diameter of the wireframe cylinders is
determined by the *bflag1* parameter for the *body* keyword.

For the *rounded/polyhedron* body style, each body is drawn as a
polyhedron consisting of triangles and squares. The *bflag2* argument
selects how the bodies are represented: for a value of 1, only the faces
are drawn; for a value of 2, only a wireframe mesh is drawn, and for a
value of 3 both. The diameter of each wireframe line is determined by
the *bflag1* parameter for the *body* keyword.
are drawn with some shading added; for a value of 2 instead only a
wireframe mesh is drawn; for a value of 3 both the faces and the
wireframe mesh are drawn; and for a value of 4 only the faces are drawn,
but without shading. The diameter of the wireframe cylinders is
determined by the *bflag1* parameter for the *body* keyword.

Note that for both the *rounded/polygon* and *rounded/polyhedron*
styles, line segments are drawn between the pairs of vertices.
Expand Down
28 changes: 17 additions & 11 deletions doc/src/Howto_viz.rst
Original file line number Diff line number Diff line change
Expand Up @@ -608,32 +608,38 @@ faces (*bflag1* value 1), or both (*bflag1* value 3).
Visualizing ellipsoid particles
-------------------------------

.. versionadded:: 11Feb2026

Ellipsoidal particles are a generalization of spheres that may have
three different radii to define the shape. They can be modeled using
pair styles :doc:`gayberne <pair_gayberne>` or :doc:`resquared
pair styles like :doc:`gayberne <pair_gayberne>` or :doc:`resquared
<pair_resquared>`. The regular :doc:`dump custom <dump>` command can
output the center of those bodies, the shape parameters and the
orientation as quaternions. If one follows the required conventions and
follows the documented steps, those trajectory dump files can be
`imported and visualized in OVITO
<https://www.ovito.org/manual/advanced_topics/aspherical_particles.html>`_

.. versionchanged:: TBD

Now uses curved triangles instead of flat ones; "both" option is removed

As an alternative, the ellipsoid particles can be visualized directly
with :doc:`dump image <dump_image>` using the *ellipsoid* keyword. The
color and transparency settings can be changed by settings those
color and transparency settings can be changed by setting those
properties for the corresponding atom types. It is also possible to
represent the ellipsoids via generating a triangle mesh and visualizing
it as either wireframes (*eflag* value 2), planar faces (*eflag* value
1), or both (*eflag* value 3), same as demonstrated for body particles
above. The use of a triangle mesh is currently required since the
it as either wireframes (*eflag* value 2) or rounded faces (*eflag*
value 1). The use of a triangle mesh is currently required since the
rasterizer built into LAMMPS does not offer a suitable graphics
primitive for ellipsoids. The mesh is constructed by iteratively
refining a triangle mesh representing an octahedron where each triangle
is replaced by four triangles. For a smooth representation a refinement
level of 5 or 6 is required, which will cause a significant slowdown of
the rendering of the image. Also, some artifacts can happen due to
rounding which can be somewhat minimized using FSAA (which causes
further slowdown of the rendering).
refining a triangle mesh representing an icosahedron where each triangle
is replaced by four triangles in each iteration. For a sufficiently
smooth representation a refinement level of 4 to 6 is required (see
example images below). A high refinement level can cause a significant
slowdown of the rendering of the image due to the large number of
triangles that need to be drawn. This will be more pronounced when
enabling FSAA or SSAO or both.

.. |ellipsoid1| image:: img/ellipsoid-level2.png
:width: 33%
Expand Down
42 changes: 24 additions & 18 deletions doc/src/dump_image.rst
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ Syntax
width = numeric value for triangle edge width (distance units)
*ellipsoid* = color eflag level width
color = *type* or *index* or *atom*
eflag = 1 for triangles, 2 for wireframe, 3 for both
eflag = 1 for triangles, 2 for wireframe
level = mesh refinement level, value between 1 (low resolution) and 6 (ultra high resolution)
width = diameter of wireframe edges (distance units) (ignored for triangles)
*body* = color bflag1 bflag2
Expand Down Expand Up @@ -566,13 +566,18 @@ colors than atom types are desired, the *number of atom types* must be

.. versionadded:: 11Feb2026

.. versionchanged:: TBD

Now uses rounded triangles

The *ellipsoid* keyword can be used when :doc:`atom_style ellipsoid
<atom_style>` is used to define particles as ellipsoids, and will draw
them as a mesh of triangles or edges or both, depending on the setting
for *eflag*\ . If edges are drawn, the *width* setting determines the
diameters of the line segments. If this keyword is not used, ellipsoid
particles will be drawn as spheres, the same as if they were regular
atoms.
them as a mesh of rounded triangles or edges, depending on the setting
for *eflag*\ (1 for rounded triangles, 2 for edges, other values are
accepted for backward compatibility but select rounded triangles).
If edges are drawn, the *width* setting determines the diameters of the
line segments. If this keyword is not used, ellipsoid particles will be
drawn as spheres, the same as if they were regular atoms.

.. versionchanged:: TBD

Expand Down Expand Up @@ -600,26 +605,27 @@ colors than atom types are desired, the *number of atom types* must be
*increased* correspondingly when using either the :doc:`create_box
<create_box>` or the :doc:`read_data <read_data>` command.

.. versionchanged:: TBD

changed initial geometry to icosahedron and use rounded triangles

The *level* setting determines the number of triangles in the mesh of
triangles and thus the resolution of the representation of the
ellipsoid. At level 1 the ellipsoid is represented by an octahedron
ellipsoid. At level 1 the ellipsoid is represented by an icosahedron
that is stretched according to the ellipsoid's shape parameters. For
each higher level, any of the triangles is replaced by four triangles
and their edges are shifted to be on the surface of the ellipsoid. The
maximum allowed level is 6 (corresponding to 8192 triangles).
each higher level, a refinement iteration is performed where any of the
triangles are replaced by four triangles and their edges are shifted to
be on the surface of the ellipsoid. The maximum allowed refinement
level is 6 (corresponding to 12288 triangles per ellipsoid).

.. admonition:: Image quality versus rendering speed
:class: Hint

Since the rendered ellipsoids are constructed from iteratively
refined triangle meshes, the image quality increases with each
refinement level, but so does the computational effort to render the
image. Rendering only triangles is much faster than rendering the
wireframe edges. However, at mesh refinement levels of 4 and up,
artifacts from the image rendering library are more common where
triangles meet. These artifacts can be somewhat hidden by using the
*fsaa yes* setting, but are also less visible when rendering both
edges and triangles.
refined triangle meshes as explained above, the image quality
increases with each refinement level, but so does the computational
effort to render the image. This becomes more pronounced when FSAA
or SSAO or both are enabled.

----------

Expand Down
10 changes: 10 additions & 0 deletions doc/src/fix_colvars.rst
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,16 @@ Aside from the state information in a ".colvars.state" file, other
are produced by Colvars depending on the type of simulation. For this
reason, the "output" keyword is required for fix colvars.

.. versionadded:: TBD

This fix provides access to a global array of the current values of each
collective variable computed in the Colvars module. The number of rows
of the global array is equal to the number of collective variables and
the columns are:

* `f_ID[I][1]` for a scalar-valued collective variable
* `f_ID[I][1], ..., f_ID[I][N]` for a vector-valued collective variable


Controlling Colvars via `fix_modify`
""""""""""""""""""""""""""""""""""""
Expand Down
11 changes: 7 additions & 4 deletions doc/src/fix_graphics_isosurface.rst
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,10 @@ the :doc:`dump image fix <dump_image>` command. The color is that of
the atom type's element color instead with the *element* coloring
scheme, or just a globally set constant color for the whole isosurface
with the *const* coloring scheme. That color can be set with the
*fcolor* keyword of the :doc:`dump modify <dump_image>` command.
*fcolor* keyword of the :doc:`dump modify <dump_image>` command. For
rounded triangles, the color is interpolated across the triangle if
there are different colors assigned to the different corners of the
triangle.

The isosurface's transparency setting is fully opaque by default and can
be changed with the *ftrans* keyword of the :doc:`dump modify
Expand Down Expand Up @@ -140,11 +143,11 @@ the fix group and pass the graphics geometry information about it to
*dump image* so that it is included in the rendered image.

The *fflag1* setting of *dump image fix* determines whether the
isosurface will be rendered as a set of connected triangles (1) or as a
mesh of cylinders (2).
isosurface will be rendered as a set of connected rounded triangles (1)
or as a mesh of cylinders (2).

If using a mesh of cylinders, the *fflag2* setting determines the
diameter of the cylinders.
diameter of the cylinders, otherwise it is ignored.

The *quality* settings of "min" and "low" work best with the cylinder
mesh setting while the other quality settings are more suitable for a
Expand Down
Binary file modified doc/src/img/body-both.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified doc/src/img/body-faces.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified doc/src/img/body-frames.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified doc/src/img/ellipsoid-level2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified doc/src/img/ellipsoid-level4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified doc/src/img/ellipsoid-level6.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
37 changes: 36 additions & 1 deletion doc/src/molecule.rst
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ Syntax
* ID = user-assigned name for the molecule template
* file1,file2,... = names of files containing molecule descriptions
* zero or more keyword/value pairs may be appended after each file
* keyword = *offset* or *toff* or *boff* or *aoff* or *doff* or *ioff* or *scale* or *check_labels*
* keyword = *offset* or *toff* or *boff* or *aoff* or *doff* or *ioff* or *scale* or *check_labels* or *auto*

.. parsed-literal::

Expand All @@ -37,6 +37,10 @@ Syntax
sfactor = scale factor to apply to the size, mass, and dipole of the molecule
*check_labels* value = string
string = string containing any of the following characters: 'b', 'a', 'd', or 'i'
*auto* value = string
string = string containing any of the following characters:
'a', 'd', or 'i', which will autogenerate angles, dihedrals, and
impropers, respectively

Examples
""""""""
Expand All @@ -49,6 +53,7 @@ Examples
molecule CO2 co2.txt boff 3 aoff 2
molecule 1 mymol.txt offset 6 9 18 23 14
molecule objects file.1 scale 1.5 file.1 scale 2.0 file.2 scale 1.3
molecule 1 mymol.txt auto ad

Description
"""""""""""
Expand Down Expand Up @@ -163,6 +168,36 @@ complex and are described on the doc page for each improper style in the
<read_restart>`, thus binary restart files need to be converted to
data files first.

.. versionadded:: TBD

The *auto* keyword allows the molecule command to generate new angles,
dihedrals, and/or impropers, and assign their angle types, dihedral
types, and/or improper types. New interactions are discovered by
traversing the bond graph defined in the *Bonds* section, and new types
are inferred using :doc:`type label<Howto_type_labels>`. Type labels
for angle, dihedral, and improper types must already be defined (e.g.,
by the read_data command), to use the *auto* keyword, and each of the
labels must be defined as a list with its constituent atom type labels
separated by hyphens, as described for the *check_labels* keyword. The
*auto* value is a single string that should contain one or more of the
characters 'a', 'd', and 'i', which correspond to angles, dihedrals, and
impropers, respectively. For example, the keyword/value pair *auto adi*
will generate angle, dihedral, and improper information, while *auto di*
will only generate information for dihedrals and impropers but not for
angles. Angles are generated from all unique 1-2-3 paths through the
bond graph. Dihedrals are generated from all unique 1-2-3-4 paths
through the bond graph, as long as there are no duplicate atoms in the
dihedral. Impropers are generated from all atoms bonded to exactly
three neighbors. The type assigned to each generated 2-, 3- and 4-body
interaction is found by searching the list of type labels for a match,
e.g., 'c1-c2-c3' or 'c3-c2-c1' in the case of a 3-atom angle. If a
matching type cannot be found, LAMMPS will generate an error.

.. note::

This command requires *Special Bonds* data to exist, which are
generated automatically by default.

----------

Format of a native molecule file
Expand Down
Loading