Resolving merge conflicts
This commit is contained in:
6
.gitattributes
vendored
6
.gitattributes
vendored
@ -3,3 +3,9 @@
|
||||
.github export-ignore
|
||||
.lgtm.yml export-ignore
|
||||
SECURITY.md export-ignore
|
||||
* text=auto
|
||||
*.jpg -text
|
||||
*.pdf -text
|
||||
*.gz -text
|
||||
*.png -text
|
||||
*.ps -text
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@ -12,6 +12,7 @@
|
||||
*.sif
|
||||
*.dll
|
||||
*.pyc
|
||||
*.whl
|
||||
a.out
|
||||
__pycache__
|
||||
|
||||
|
||||
@ -16,6 +16,7 @@ endif()
|
||||
|
||||
project(lammps CXX)
|
||||
set(SOVERSION 0)
|
||||
get_property(BUILD_IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
||||
|
||||
get_filename_component(LAMMPS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/.. ABSOLUTE)
|
||||
get_filename_component(LAMMPS_LIB_BINARY_DIR ${CMAKE_BINARY_DIR}/lib ABSOLUTE)
|
||||
@ -749,13 +750,15 @@ if(BUILD_SHARED_LIBS)
|
||||
else()
|
||||
find_package(Python COMPONENTS Interpreter)
|
||||
endif()
|
||||
if(BUILD_IS_MULTI_CONFIG)
|
||||
set(LIBLAMMPS_SHARED_BINARY ${CMAKE_BINARY_DIR}/$<CONFIG>/liblammps${LAMMPS_MACHINE}${CMAKE_SHARED_LIBRARY_SUFFIX})
|
||||
else()
|
||||
set(LIBLAMMPS_SHARED_BINARY ${CMAKE_BINARY_DIR}/liblammps${LAMMPS_MACHINE}${CMAKE_SHARED_LIBRARY_SUFFIX})
|
||||
endif()
|
||||
if(Python_EXECUTABLE)
|
||||
add_custom_target(
|
||||
install-python ${CMAKE_COMMAND} -E remove_directory build
|
||||
COMMAND ${Python_EXECUTABLE} install.py -v ${LAMMPS_SOURCE_DIR}/version.h
|
||||
-p ${LAMMPS_PYTHON_DIR}/lammps
|
||||
-l ${CMAKE_BINARY_DIR}/liblammps${LAMMPS_MACHINE}${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
WORKING_DIRECTORY ${LAMMPS_PYTHON_DIR}
|
||||
COMMAND ${Python_EXECUTABLE} ${LAMMPS_PYTHON_DIR}/install.py -p ${LAMMPS_PYTHON_DIR}/lammps -l ${LIBLAMMPS_SHARED_BINARY}
|
||||
COMMENT "Installing LAMMPS Python module")
|
||||
else()
|
||||
add_custom_target(
|
||||
@ -800,7 +803,6 @@ if(ClangFormat_FOUND)
|
||||
endif()
|
||||
|
||||
get_target_property(DEFINES lammps COMPILE_DEFINITIONS)
|
||||
get_property(BUILD_IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
||||
if(BUILD_IS_MULTI_CONFIG)
|
||||
set(LAMMPS_BUILD_TYPE "Multi-Config")
|
||||
else()
|
||||
|
||||
@ -82,7 +82,7 @@
|
||||
"configurationType": "Debug",
|
||||
"buildRoot": "${workspaceRoot}\\build\\${name}",
|
||||
"installRoot": "${workspaceRoot}\\install\\${name}",
|
||||
"cmakeCommandArgs": "-C ${workspaceRoot}\\cmake\\presets\\windows.cmake",
|
||||
"cmakeCommandArgs": "-C ${workspaceRoot}\\cmake\\presets\\windows.cmake -DCMAKE_C_COMPILER=clang-cl.exe -DCMAKE_CXX_COMPILER=clang-cl.exe",
|
||||
"buildCommandArgs": "",
|
||||
"ctestCommandArgs": "",
|
||||
"inheritEnvironments": [ "clang_cl_x64" ],
|
||||
@ -115,15 +115,15 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "x64-Debug-OneAPI",
|
||||
"name": "x64-Release-Clang",
|
||||
"generator": "Ninja",
|
||||
"configurationType": "Debug",
|
||||
"configurationType": "Release",
|
||||
"buildRoot": "${workspaceRoot}\\build\\${name}",
|
||||
"installRoot": "${workspaceRoot}\\install\\${name}",
|
||||
"cmakeCommandArgs": "-C ${workspaceRoot}\\cmake\\presets\\windows.cmake -DCMAKE_CXX_COMPILER=icx -DCMAKE_C_COMPILER=icx",
|
||||
"cmakeCommandArgs": "-C ${workspaceRoot}\\cmake\\presets\\windows.cmake -DCMAKE_C_COMPILER=clang-cl.exe -DCMAKE_CXX_COMPILER=clang-cl.exe",
|
||||
"buildCommandArgs": "",
|
||||
"ctestCommandArgs": "",
|
||||
"inheritEnvironments": [ "msvc_x64_x64" ],
|
||||
"inheritEnvironments": [ "clang_cl_x64" ],
|
||||
"variables": [
|
||||
{
|
||||
"name": "BUILD_SHARED_LIBS",
|
||||
@ -149,54 +149,6 @@
|
||||
"name": "ENABLE_TESTING",
|
||||
"value": "True",
|
||||
"type": "BOOL"
|
||||
},
|
||||
{
|
||||
"name": "BUILD_MPI",
|
||||
"value": "False",
|
||||
"type": "BOOL"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "x64-Debug-Intel",
|
||||
"generator": "Ninja",
|
||||
"configurationType": "Debug",
|
||||
"buildRoot": "${workspaceRoot}\\build\\${name}",
|
||||
"installRoot": "${workspaceRoot}\\install\\${name}",
|
||||
"cmakeCommandArgs": "-C ${workspaceRoot}\\cmake\\presets\\windows.cmake -DCMAKE_CXX_COMPILER=icl -DCMAKE_C_COMPILER=icl -DCMAKE_Fortran_COMPILER=ifort",
|
||||
"buildCommandArgs": "",
|
||||
"ctestCommandArgs": "",
|
||||
"inheritEnvironments": [ "msvc_x64_x64" ],
|
||||
"variables": [
|
||||
{
|
||||
"name": "BUILD_SHARED_LIBS",
|
||||
"value": "True",
|
||||
"type": "BOOL"
|
||||
},
|
||||
{
|
||||
"name": "BUILD_TOOLS",
|
||||
"value": "True",
|
||||
"type": "BOOL"
|
||||
},
|
||||
{
|
||||
"name": "LAMMPS_EXCEPTIONS",
|
||||
"value": "True",
|
||||
"type": "BOOL"
|
||||
},
|
||||
{
|
||||
"name": "PKG_PYTHON",
|
||||
"value": "True",
|
||||
"type": "BOOL"
|
||||
},
|
||||
{
|
||||
"name": "ENABLE_TESTING",
|
||||
"value": "False",
|
||||
"type": "BOOL"
|
||||
},
|
||||
{
|
||||
"name": "BUILD_MPI",
|
||||
"value": "False",
|
||||
"type": "BOOL"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@ -30,7 +30,15 @@ file(GLOB GPU_LIB_SOURCES ${LAMMPS_LIB_SOURCE_DIR}/gpu/[^.]*.cpp)
|
||||
file(MAKE_DIRECTORY ${LAMMPS_LIB_BINARY_DIR}/gpu)
|
||||
|
||||
if(GPU_API STREQUAL "CUDA")
|
||||
find_package(CUDA QUIET)
|
||||
# augment search path for CUDA toolkit libraries to include the stub versions. Needed to find libcuda.so on machines without a CUDA driver installation
|
||||
if(CUDA_FOUND)
|
||||
set(CMAKE_LIBRARY_PATH "${CUDA_TOOLKIT_ROOT_DIR}/lib64/stubs;${CUDA_TOOLKIT_ROOT_DIR}/lib/stubs;${CUDA_TOOLKIT_ROOT_DIR}/lib64;${CUDA_TOOLKIT_ROOT_DIR}/lib;${CMAKE_LIBRARY_PATH}")
|
||||
find_package(CUDA REQUIRED)
|
||||
else()
|
||||
message(FATAL_ERROR "CUDA Toolkit not found")
|
||||
endif()
|
||||
|
||||
find_program(BIN2C bin2c)
|
||||
if(NOT BIN2C)
|
||||
message(FATAL_ERROR "Could not find bin2c, use -DBIN2C=/path/to/bin2c to help cmake finding it.")
|
||||
|
||||
@ -51,6 +51,7 @@ if(DOWNLOAD_QUIP)
|
||||
GIT_TAG origin/public
|
||||
GIT_SHALLOW YES
|
||||
GIT_PROGRESS YES
|
||||
GIT_SUBMODULES "src/fox;src/GAP"
|
||||
PATCH_COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_BINARY_DIR}/quip.config <SOURCE_DIR>/arch/Makefile.lammps
|
||||
CONFIGURE_COMMAND env QUIP_ARCH=lammps make config
|
||||
BUILD_COMMAND env QUIP_ARCH=lammps make libquip
|
||||
|
||||
@ -54,8 +54,8 @@ if(DOWNLOAD_PLUMED)
|
||||
set(PLUMED_BUILD_BYPRODUCTS "<INSTALL_DIR>/lib/libplumedWrapper.a")
|
||||
endif()
|
||||
|
||||
set(PLUMED_URL "https://github.com/plumed/plumed2/releases/download/v2.7.3/plumed-src-2.7.3.tgz" CACHE STRING "URL for PLUMED tarball")
|
||||
set(PLUMED_MD5 "f00cc82edfefe6bb3df934911dbe32fb" CACHE STRING "MD5 checksum of PLUMED tarball")
|
||||
set(PLUMED_URL "https://github.com/plumed/plumed2/releases/download/v2.7.4/plumed-src-2.7.4.tgz" CACHE STRING "URL for PLUMED tarball")
|
||||
set(PLUMED_MD5 "858e0b6aed173748fc85b6bc8a9dcb3e" CACHE STRING "MD5 checksum of PLUMED tarball")
|
||||
|
||||
mark_as_advanced(PLUMED_URL)
|
||||
mark_as_advanced(PLUMED_MD5)
|
||||
|
||||
@ -4,15 +4,15 @@ Optional build settings
|
||||
LAMMPS can be built with several optional settings. Each sub-section
|
||||
explain how to do this for building both with CMake and make.
|
||||
|
||||
* :ref:`C++11 standard compliance <cxx11>` when building all of LAMMPS
|
||||
* :ref:`FFT library <fft>` for use with the :doc:`kspace_style pppm <kspace_style>` command
|
||||
* :ref:`Size of LAMMPS integer types <size>`
|
||||
* :ref:`Read or write compressed files <gzip>`
|
||||
* :ref:`Output of JPG and PNG files <graphics>` via the :doc:`dump image <dump_image>` command
|
||||
* :ref:`Output of movie files <graphics>` via the :doc:`dump_movie <dump_image>` command
|
||||
* :ref:`Memory allocation alignment <align>`
|
||||
* :ref:`Workaround for long long integers <longlong>`
|
||||
* :ref:`Error handling exceptions <exceptions>` when using LAMMPS as a library
|
||||
* `C++11 standard compliance`_ when building all of LAMMPS
|
||||
* `FFT library`_ for use with the :doc:`kspace_style pppm <kspace_style>` command
|
||||
* `Size of LAMMPS integer types and size limits`_
|
||||
* `Read or write compressed files`_
|
||||
* `Output of JPG, PNG, and move files` via the :doc:`dump image <dump_image>` or :doc:`dump movie <dump_image>` commands
|
||||
* `Memory allocation alignment`_
|
||||
* `Workaround for long long integers`_
|
||||
* `Exception handling when using LAMMPS as a library`_ to capture errors
|
||||
* `Trigger selected floating-point exceptions`_
|
||||
|
||||
----------
|
||||
|
||||
|
||||
@ -16,44 +16,52 @@ General remarks
|
||||
|
||||
LAMMPS is developed and tested primarily on Linux machines. The vast
|
||||
majority of HPC clusters and supercomputers today run on Linux as well.
|
||||
While portability to other platforms is desired, it is not always achieved.
|
||||
The LAMMPS developers are dependent on LAMMPS users giving feedback and
|
||||
providing assistance in resolving portability issues. This is particularly
|
||||
true for compiling LAMMPS on Windows, since this platform has significant
|
||||
differences in some low-level functionality.
|
||||
While portability to other platforms is desired, it is not always
|
||||
achieved. That is sometimes due to non-portable code in LAMMPS itself,
|
||||
but more often due to portability limitations of external libraries and
|
||||
tools required to build a specific feature or package. The LAMMPS
|
||||
developers are dependent on LAMMPS users giving feedback and providing
|
||||
assistance in resolving portability issues. This is particularly true
|
||||
for compiling LAMMPS on Windows, since this platform has significant
|
||||
differences in some low-level functionality. As of LAMMPS version 14
|
||||
December 2021, large parts of LAMMPS can be compiled natively with the
|
||||
Microsoft Visual C++ Compilers. This is largely facilitated by using
|
||||
the :doc:`Developer_platform` in the ``platform`` namespace.
|
||||
|
||||
Before trying to build LAMMPS on Windows yourself, please consider the
|
||||
`pre-compiled Windows installer packages <https://packages.lammps.org/windows.html>`_
|
||||
and see if they are sufficient for your needs.
|
||||
|
||||
.. _linux:
|
||||
|
||||
Running Linux on Windows
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Before trying to build LAMMPS on Windows, please consider if the
|
||||
pre-compiled Windows binary packages are sufficient for your needs. If
|
||||
it is necessary for you to compile LAMMPS on a Windows machine
|
||||
If it is necessary for you to compile LAMMPS on a Windows machine
|
||||
(e.g. because it is your main desktop), please also consider using a
|
||||
virtual machine software and compile and run LAMMPS in a Linux virtual
|
||||
machine, or - if you have a sufficiently up-to-date Windows 10 or
|
||||
Windows 11 installation - consider using the Windows subsystem for
|
||||
Linux. This optional Windows feature allows you to run the bash shell
|
||||
from Ubuntu from within Windows and from there on, you can pretty much
|
||||
use that shell like you are running on an Ubuntu Linux machine
|
||||
(e.g. installing software via apt-get and more). For more details on
|
||||
that, please see :doc:`this tutorial <Howto_wsl>`.
|
||||
of a Linux system (Ubuntu by default) from within Windows and from there
|
||||
on, you can pretty much use that shell like you are running on a regular
|
||||
Ubuntu Linux machine (e.g. installing software via apt-get and more).
|
||||
For more details on that, please see :doc:`this tutorial <Howto_wsl>`.
|
||||
|
||||
.. _gnu:
|
||||
|
||||
Using a GNU GCC ported to Windows
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
One option for compiling LAMMPS on Windows natively that has been known
|
||||
to work in the past is to install a bash shell, unix shell utilities,
|
||||
perl, GNU make, and a GNU compiler ported to Windows. The Cygwin
|
||||
package provides a unix/linux interface to low-level Windows functions,
|
||||
so LAMMPS can be compiled on Windows. The necessary (minor)
|
||||
modifications to LAMMPS are included, but may not always up-to-date for
|
||||
recently added functionality and the corresponding new code. A machine
|
||||
makefile for using cygwin for the old build system is provided. Using
|
||||
CMake for this mode of compilation is untested and not likely to work.
|
||||
One option for compiling LAMMPS on Windows natively is to install a Bash
|
||||
shell, Unix shell utilities, Perl, Python, GNU make, and a GNU compiler
|
||||
ported to Windows. The Cygwin package provides a unix/linux interface
|
||||
to low-level Windows functions, so LAMMPS can be compiled on Windows.
|
||||
The necessary (minor) modifications to LAMMPS are included, but may not
|
||||
always up-to-date for recently added functionality and the corresponding
|
||||
new code. A machine makefile for using cygwin for the old build system
|
||||
is provided. Using CMake for this mode of compilation is untested and
|
||||
not likely to work.
|
||||
|
||||
When compiling for Windows do **not** set the ``-DLAMMPS_MEMALIGN``
|
||||
define in the LMP_INC makefile variable and add ``-lwsock32 -lpsapi`` to
|
||||
@ -75,19 +83,27 @@ Using Microsoft Visual Studio
|
||||
|
||||
Following the integration of the :doc:`platform namespace
|
||||
<Developer_platform>` into the LAMMPS code base, portability of LAMMPS
|
||||
to be compiled on Windows using Visual Studio has been significantly
|
||||
improved. This has been tested with Visual Studio 2019 (aka version
|
||||
16). Not all features and packages in LAMMPS are currently supported
|
||||
out of the box, but a preset ``cmake/presets/windows.cmake`` is provided
|
||||
that contains the packages that have been compiled successfully. You
|
||||
must use the CMake based build procedure, and either use the integrated
|
||||
CMake support of Visual Studio or use an external CMake installation to
|
||||
create build files for the Visual Studio build system. Please note that
|
||||
on launching Visual Studio it will scan the directory tree and likely
|
||||
miss the correct master ``CMakeLists.txt``. Try to open the
|
||||
``cmake/CMakeSettings.json`` and use those CMake configurations as a
|
||||
starting point. It is also possible to configure and compile LAMMPS
|
||||
from the command line with a CMake binary from `cmake.org <https://cmake.org>`_.
|
||||
for native compilation on Windows using Visual Studio has been
|
||||
significantly improved. This has been tested with Visual Studio 2019
|
||||
(aka version 16) and Visual Studio 2022 (aka version 17). We strongly
|
||||
recommend using Visual Studio 2022 version 17.1 or later. Not all
|
||||
features and packages in LAMMPS are currently supported out of the box,
|
||||
but a preset ``cmake/presets/windows.cmake`` is provided that contains
|
||||
the packages that have been compiled successfully so far. You **must**
|
||||
use the CMake based build procedure, since there is no support for GNU
|
||||
make or the Unix shell utilities required for the GNU make build
|
||||
procedure.
|
||||
|
||||
It is possible to use both the integrated CMake support of the Visual
|
||||
Studio IDE or use an external CMake installation (e.g. downloaded from
|
||||
cmake.org) to create build files and compile LAMMPS from the command line.
|
||||
|
||||
.. note::
|
||||
|
||||
Versions of Visual Studio before version 17.1 may scan the entire
|
||||
LAMMPS source tree and likely miss the correct master
|
||||
``CMakeLists.txt`` and get confused since there are multiple files
|
||||
of that name in different folders but none in top level folder.
|
||||
|
||||
Please note, that for either approach CMake will create a so-called
|
||||
:ref:`"multi-configuration" build environment <cmake_multiconfig>`, and
|
||||
@ -98,6 +114,8 @@ To support running in parallel you can compile with OpenMP enabled using
|
||||
the OPENMP package or install Microsoft MPI (including the SDK) and compile
|
||||
LAMMPS with MPI enabled.
|
||||
|
||||
.. note::
|
||||
|
||||
This is work in progress and you should contact the LAMMPS developers
|
||||
via GitHub, the forum, or the mailing list, if you have questions or
|
||||
LAMMPS specific problems.
|
||||
|
||||
@ -101,7 +101,6 @@ KOKKOS, o = OPENMP, t = OPT.
|
||||
* :doc:`pe/tally <compute_tally>`
|
||||
* :doc:`plasticity/atom <compute_plasticity_atom>`
|
||||
* :doc:`pressure <compute_pressure>`
|
||||
* :doc:`pressure/cylinder <compute_pressure_cylinder>`
|
||||
* :doc:`pressure/uef <compute_pressure_uef>`
|
||||
* :doc:`property/atom <compute_property_atom>`
|
||||
* :doc:`property/chunk <compute_property_chunk>`
|
||||
@ -144,8 +143,11 @@ KOKKOS, o = OPENMP, t = OPT.
|
||||
* :doc:`sph/t/atom <compute_sph_t_atom>`
|
||||
* :doc:`spin <compute_spin>`
|
||||
* :doc:`stress/atom <compute_stress_atom>`
|
||||
* :doc:`stress/cartesian <compute_stress_profile>`
|
||||
* :doc:`stress/cylinder <compute_stress_profile>`
|
||||
* :doc:`stress/mop <compute_stress_mop>`
|
||||
* :doc:`stress/mop/profile <compute_stress_mop>`
|
||||
* :doc:`stress/spherical <compute_stress_profile>`
|
||||
* :doc:`stress/tally <compute_tally>`
|
||||
* :doc:`tdpd/cc/atom <compute_tdpd_cc_atom>`
|
||||
* :doc:`temp (k) <compute_temp>`
|
||||
|
||||
@ -97,8 +97,6 @@ OPT.
|
||||
* :doc:`latte <fix_latte>`
|
||||
* :doc:`lb/fluid <fix_lb_fluid>`
|
||||
* :doc:`lb/momentum <fix_lb_momentum>`
|
||||
* :doc:`lb/pc <fix_lb_pc>`
|
||||
* :doc:`lb/rigid/pc/sphere <fix_lb_rigid_pc_sphere>`
|
||||
* :doc:`lb/viscous <fix_lb_viscous>`
|
||||
* :doc:`lineforce <fix_lineforce>`
|
||||
* :doc:`manifoldforce <fix_manifoldforce>`
|
||||
|
||||
@ -11,8 +11,9 @@ of time and requests from the LAMMPS user community.
|
||||
:maxdepth: 1
|
||||
|
||||
Developer_org
|
||||
Developer_cxx_vs_c_style
|
||||
Developer_code_design
|
||||
Developer_parallel
|
||||
Developer_comm_ops
|
||||
Developer_flow
|
||||
Developer_write
|
||||
Developer_notes
|
||||
|
||||
433
doc/src/Developer_code_design.rst
Normal file
433
doc/src/Developer_code_design.rst
Normal file
@ -0,0 +1,433 @@
|
||||
Code design
|
||||
-----------
|
||||
|
||||
This section explains some of the code design choices in LAMMPS with
|
||||
the goal of helping developers write new code similar to the existing
|
||||
code. Please see the section on :doc:`Requirements for contributed
|
||||
code <Modify_style>` for more specific recommendations and guidelines.
|
||||
While that section is organized more in the form of a checklist for
|
||||
code contributors, the focus here is on overall code design strategy,
|
||||
choices made between possible alternatives, and discussing some
|
||||
relevant C++ programming language constructs.
|
||||
|
||||
Historically, the basic design philosophy of the LAMMPS C++ code was a
|
||||
"C with classes" style. The motivation was to make it easy to modify
|
||||
LAMMPS for people without significant training in C++ programming.
|
||||
Data structures and code constructs were used that resemble the
|
||||
previous implementation(s) in Fortran. A contributing factor to this
|
||||
choice also was that at the time, C++ compilers were often not mature
|
||||
and some of the advanced features contained bugs or did not function
|
||||
as the standard required. There were also disagreements between
|
||||
compiler vendors as to how to interpret the C++ standard documents.
|
||||
|
||||
However, C++ compilers have now advanced significantly. In 2020 we
|
||||
decided to to require the C++11 standard as the minimum C++ language
|
||||
standard for LAMMPS. Since then we have begun to also replace some of
|
||||
the C-style constructs with equivalent C++ functionality, either from
|
||||
the C++ standard library or as custom classes or functions, in order
|
||||
to improve readability of the code and to increase code reuse through
|
||||
abstraction of commonly used functionality.
|
||||
|
||||
.. note::
|
||||
|
||||
Please note that as of spring 2022 there is still a sizable chunk
|
||||
of legacy code in LAMMPS that has not yet been refactored to
|
||||
reflect these style conventions in full. LAMMPS has a large code
|
||||
base and many different contributors and there also is a hierarchy
|
||||
of precedence in which the code is adapted. Highest priority has
|
||||
been the code in the ``src`` folder, followed by code in packages
|
||||
in order of their popularity and complexity (simpler code is
|
||||
adapted sooner), followed by code in the ``lib`` folder. Source
|
||||
code that is downloaded from external packages or libraries during
|
||||
compilation is not subject to the conventions discussed here.
|
||||
|
||||
Object oriented code
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
LAMMPS is designed to be an object oriented code. Each simulation is
|
||||
represented by an instance of the LAMMPS class. When running in
|
||||
parallel each MPI process creates such an instance. This can be seen
|
||||
in the ``main.cpp`` file where the core steps of running a LAMMPS
|
||||
simulation are the following 3 lines of code:
|
||||
|
||||
.. code-block:: C++
|
||||
|
||||
LAMMPS *lammps = new LAMMPS(argc, argv, lammps_comm);
|
||||
lammps->input->file();
|
||||
delete lammps;
|
||||
|
||||
The first line creates a LAMMPS class instance and passes the command
|
||||
line arguments and the global communicator to its constructor. The
|
||||
second line triggers the LAMMPS instance to process the input (either
|
||||
from standard input or a provided input file) until the simulation
|
||||
ends. The third line deletes the LAMMPS instance. The remainder of
|
||||
the main.cpp file has code for error handling, MPI configuration, and
|
||||
other special features.
|
||||
|
||||
The basic LAMMPS class hierarchy which is created by the LAMMPS class
|
||||
constructor is shown in :ref:`class-topology`. When input commands
|
||||
are processed, additional class instances are created, or deleted, or
|
||||
replaced. Likewise specific member functions of specific classes are
|
||||
called to trigger actions such creating atoms, computing forces,
|
||||
computing properties, time-propagating the system, or writing output.
|
||||
|
||||
Compositing and Inheritance
|
||||
===========================
|
||||
|
||||
LAMMPS makes extensive use of the object oriented programming (OOP)
|
||||
principles of *compositing* and *inheritance*. Classes like the
|
||||
``LAMMPS`` class are a **composite** containing pointers to instances
|
||||
of other classes like ``Atom``, ``Comm``, ``Force``, ``Neighbor``,
|
||||
``Modify``, and so on. Each of these classes implement certain
|
||||
functionality by storing and manipulating data related to the
|
||||
simulation and providing member functions that trigger certain
|
||||
actions. Some of those classes like ``Force`` are themselves
|
||||
composites, containing instances of classes describing different force
|
||||
interactions. Similarly the ``Modify`` class contains a list of
|
||||
``Fix`` and ``Compute`` classes. If the input commands that
|
||||
correspond to these classes include the word *style*, then LAMMPS
|
||||
stores only a single instance of that class. E.g. *atom_style*,
|
||||
*comm_style*, *pair_style*, *bond_style*. It the input command does
|
||||
not include the word *style*, there can be many instances of that
|
||||
class defined. E.g. *region*, *fix*, *compute*, *dump*.
|
||||
|
||||
**Inheritance** enables creation of *derived* classes that can share
|
||||
common functionality in their base class while providing a consistent
|
||||
interface. The derived classes replace (dummy or pure) functions in
|
||||
the base class. The higher level classes can then call those methods
|
||||
of the instantiated classes without having to know which specific
|
||||
derived class variant was instantiated. In LAMMPS these derived
|
||||
classes are often referred to as "styles", e.g. pair styles, fix
|
||||
styles, atom styles and so on.
|
||||
|
||||
This is the origin of the flexibility of LAMMPS. For example pair
|
||||
styles implement a variety of different non-bonded interatomic
|
||||
potentials functions. All details for the implementation of a
|
||||
potential are stored and executed in a single class.
|
||||
|
||||
As mentioned above, there can be multiple instances of classes derived
|
||||
from the ``Fix`` or ``Compute`` base classes. They represent a
|
||||
different facet of LAMMPS flexibility as they provide methods which
|
||||
can be called at different points in time within a timestep, as
|
||||
explained in `Developer_flow`. This allows the input script to tailor
|
||||
how a specific simulation is run, what diagnostic computations are
|
||||
performed, and how the output of those computations is further
|
||||
processed or output.
|
||||
|
||||
Additional code sharing is possible by creating derived classes from the
|
||||
derived classes (e.g., to implement an accelerated version of a pair
|
||||
style) where only a subset of the derived class methods are replaced
|
||||
with accelerated versions.
|
||||
|
||||
Polymorphism
|
||||
============
|
||||
|
||||
Polymorphism and dynamic dispatch are another OOP feature that play an
|
||||
important role in how LAMMPS selects what code to execute. In a
|
||||
nutshell, this is a mechanism where the decision of which member
|
||||
function to call from a class is determined at runtime and not when
|
||||
the code is compiled. To enable it, the function has to be declared
|
||||
as ``virtual`` and all corresponding functions in derived classes
|
||||
should use the ``override`` property. Below is a brief example.
|
||||
|
||||
.. code-block:: c++
|
||||
|
||||
class Base {
|
||||
public:
|
||||
virtual ~Base() = default;
|
||||
void call();
|
||||
void normal();
|
||||
virtual void poly();
|
||||
};
|
||||
|
||||
void Base::call() {
|
||||
normal();
|
||||
poly();
|
||||
}
|
||||
|
||||
class Derived : public Base {
|
||||
public:
|
||||
~Derived() override = default;
|
||||
void normal();
|
||||
void poly() override;
|
||||
};
|
||||
|
||||
// [....]
|
||||
|
||||
Base *base1 = new Base();
|
||||
Base *base2 = new Derived();
|
||||
|
||||
base1->call();
|
||||
base2->call();
|
||||
|
||||
The difference in behavior of the ``normal()`` and the ``poly()`` member
|
||||
functions is which of the two member functions is called when executing
|
||||
`base1->call()` versus `base2->call()`. Without polymorphism, a
|
||||
function within the base class can only call member functions within the
|
||||
same scope, that is ``Base::call()`` will always call
|
||||
``Base::normal()``. But for the `base2->call()` case the call of the
|
||||
virtual member function will be dispatched to ``Derived::poly()``
|
||||
instead. This mechanism means that functions are called within the
|
||||
scope of the class type that was used to *create* the class instance are
|
||||
invoked; even if they are assigned to a pointer using the type of a base
|
||||
class. This is the desired behavior and this way LAMMPS can even use
|
||||
styles that are loaded at runtime from a shared object file with the
|
||||
:doc:`plugin command <plugin>`.
|
||||
|
||||
A special case of virtual functions are so-called pure functions. These
|
||||
are virtual functions that are initialized to 0 in the class declaration
|
||||
(see example below).
|
||||
|
||||
.. code-block:: c++
|
||||
|
||||
class Base {
|
||||
public:
|
||||
virtual void pure() = 0;
|
||||
};
|
||||
|
||||
This has the effect that an instance of the base class cannot be
|
||||
created and that derived classes **must** implement these functions.
|
||||
Many of the functions listed with the various class styles in the
|
||||
section :doc:`Modify` are pure functions. The motivation for this is
|
||||
to define the interface or API of the functions but defer their
|
||||
implementation to the derived classes.
|
||||
|
||||
However, there are downsides to this. For example, calls to virtual
|
||||
functions from within a constructor, will not be in the scope of the
|
||||
derived class and thus it is good practice to either avoid calling them
|
||||
or to provide an explicit scope such as ``Base::poly()`` or
|
||||
``Derived::poly()``. Furthermore, any destructors in classes containing
|
||||
virtual functions should be declared virtual too, so they will be
|
||||
processed in the expected order before types are removed from dynamic
|
||||
dispatch.
|
||||
|
||||
.. admonition:: Important Notes
|
||||
|
||||
In order to be able to detect incompatibilities at compile time and
|
||||
to avoid unexpected behavior, it is crucial that all member functions
|
||||
that are intended to replace a virtual or pure function use the
|
||||
``override`` property keyword. For the same reason, the use of
|
||||
overloads or default arguments for virtual functions should be
|
||||
avoided as they lead to confusion over which function is supposed to
|
||||
override which and which arguments need to be declared.
|
||||
|
||||
Style Factories
|
||||
===============
|
||||
|
||||
In order to create class instances for different styles, LAMMPS often
|
||||
uses a programming pattern called `Factory`. Those are functions that
|
||||
create an instance of a specific derived class, say ``PairLJCut`` and
|
||||
return a pointer to the type of the common base class of that style,
|
||||
``Pair`` in this case. To associate the factory function with the
|
||||
style keyword, an ``std::map`` class is used with function pointers
|
||||
indexed by their keyword (for example "lj/cut" for ``PairLJCut`` and
|
||||
"morse" for ``PairMorse``). A couple of typedefs help keep the code
|
||||
readable and a template function is used to implement the actual
|
||||
factory functions for the individual classes. Below is an example
|
||||
of such a factory function from the ``Force`` class as declared in
|
||||
``force.h`` and implemented in ``force.cpp``. The file ``style_pair.h``
|
||||
is generated during compilation and includes all main header files
|
||||
(i.e. those starting with ``pair_``) of pair styles and then the
|
||||
macro ``PairStyle()`` will associate the style name "lj/cut"
|
||||
with a factory function creating an instance of the ``PairLJCut``
|
||||
class.
|
||||
|
||||
.. code-block:: C++
|
||||
|
||||
// from force.h
|
||||
typedef Pair *(*PairCreator)(LAMMPS *);
|
||||
typedef std::map<std::string, PairCreator> PairCreatorMap;
|
||||
PairCreatorMap *pair_map;
|
||||
|
||||
// from force.cpp
|
||||
template <typename S, typename T> static S *style_creator(LAMMPS *lmp)
|
||||
{
|
||||
return new T(lmp);
|
||||
}
|
||||
|
||||
// [...]
|
||||
|
||||
pair_map = new PairCreatorMap();
|
||||
|
||||
#define PAIR_CLASS
|
||||
#define PairStyle(key, Class) (*pair_map)[#key] = &style_creator<Pair, Class>;
|
||||
#include "style_pair.h"
|
||||
#undef PairStyle
|
||||
#undef PAIR_CLASS
|
||||
|
||||
// from pair_lj_cut.h
|
||||
|
||||
#ifdef PAIR_CLASS
|
||||
PairStyle(lj/cut,PairLJCut);
|
||||
#else
|
||||
// [...]
|
||||
|
||||
Similar code constructs are present in other files like ``modify.cpp`` and
|
||||
``modify.h`` or ``neighbor.cpp`` and ``neighbor.h``. Those contain
|
||||
similar macros and include ``style_*.h`` files for creating class instances
|
||||
of styles they manage.
|
||||
|
||||
|
||||
I/O and output formatting
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
C-style stdio versus C++ style iostreams
|
||||
========================================
|
||||
|
||||
LAMMPS uses the "stdio" library of the standard C library for reading
|
||||
from and writing to files and console instead of C++ "iostreams".
|
||||
This is mainly motivated by better performance, better control over
|
||||
formatting, and less effort to achieve specific formatting.
|
||||
|
||||
Since mixing "stdio" and "iostreams" can lead to unexpected
|
||||
behavior. use of the latter is strongly discouraged. Also output to
|
||||
the screen should not use the predefined ``stdout`` FILE pointer, but
|
||||
rather the ``screen`` and ``logfile`` FILE pointers managed by the
|
||||
LAMMPS class. Furthermore, output should generally only be done by
|
||||
MPI rank 0 (``comm->me == 0``). Output that is sent to both
|
||||
``screen`` and ``logfile`` should use the :cpp:func:`utils::logmesg()
|
||||
convenience function <LAMMPS_NS::utils::logmesg>`.
|
||||
|
||||
We also discourage the use of stringstreams because the bundled {fmt}
|
||||
library and the customized tokenizer classes can provide the same
|
||||
functionality in a cleaner way with better performance. This also
|
||||
helps maintain a consistent programming syntax with code from many
|
||||
different contributors.
|
||||
|
||||
Formatting with the {fmt} library
|
||||
===================================
|
||||
|
||||
The LAMMPS source code includes a copy of the `{fmt} library
|
||||
<https://fmt.dev>`_ which is preferred over formatting with the
|
||||
"printf()" family of functions. The primary reason is that it allows
|
||||
a typesafe default format for any type of supported data. This is
|
||||
particularly useful for formatting integers of a given size (32-bit or
|
||||
64-bit) which may require different format strings depending on
|
||||
compile time settings or compilers/operating systems. Furthermore,
|
||||
{fmt} gives better performance, has more functionality, a familiar
|
||||
formatting syntax that has similarities to ``format()`` in Python, and
|
||||
provides a facility that can be used to integrate format strings and a
|
||||
variable number of arguments into custom functions in a much simpler
|
||||
way than the varargs mechanism of the C library. Finally, {fmt} has
|
||||
been included into the C++20 language standard, so changes to adopt it
|
||||
are future-proof.
|
||||
|
||||
Formatted strings are frequently created by calling the
|
||||
``fmt::format()`` function which will return a string as a
|
||||
``std::string`` class instance. In contrast to the ``%`` placeholder
|
||||
in ``printf()``, the {fmt} library uses ``{}`` to embed format
|
||||
descriptors. In the simplest case, no additional characters are
|
||||
needed as {fmt} will choose the default format based on the data type
|
||||
of the argument. Otherwise the ``fmt::print()`` function may be
|
||||
used instead of ``printf()`` or ``fprintf()``. In addition, several
|
||||
LAMMPS output functions, that originally accepted a single string as
|
||||
argument have been overloaded to accept a format string with optional
|
||||
arguments as well (e.g., ``Error::all()``, ``Error::one()``,
|
||||
``utils::logmesg()``).
|
||||
|
||||
Summary of the {fmt} format syntax
|
||||
==================================
|
||||
|
||||
The syntax of the format string is "{[<argument id>][:<format spec>]}",
|
||||
where either the argument id or the format spec (separated by a colon
|
||||
':') is optional. The argument id is usually a number starting from 0
|
||||
that is the index to the arguments following the format string. By
|
||||
default these are assigned in order (i.e. 0, 1, 2, 3, 4 etc.). The most
|
||||
common case for using argument id would be to use the same argument in
|
||||
multiple places in the format string without having to provide it as an
|
||||
argument multiple times. In LAMMPS the argument id is rarely used.
|
||||
|
||||
More common is the use of a format specifier, which starts with a colon.
|
||||
This may optionally be followed by a fill character (default is ' '). If
|
||||
provided, the fill character **must** be followed by an alignment
|
||||
character ('<', '^', '>' for left, centered, or right alignment
|
||||
(default)). The alignment character may be used without a fill
|
||||
character. The next important format parameter would be the minimum
|
||||
width, which may be followed by a dot '.' and a precision for floating
|
||||
point numbers. The final character in the format string would be an
|
||||
indicator for the "presentation", i.e. 'd' for decimal presentation of
|
||||
integers, 'x' for hexadecimal, 'o' for octal, 'c' for character etc.
|
||||
This mostly follows the "printf()" scheme but without requiring an
|
||||
additional length parameter to distinguish between different integer
|
||||
widths. The {fmt} library will detect those and adapt the formatting
|
||||
accordingly. For floating point numbers there are correspondingly, 'g'
|
||||
for generic presentation, 'e' for exponential presentation, and 'f' for
|
||||
fixed point presentation.
|
||||
|
||||
Thus "{:8}" would represent *any* type argument using at least 8
|
||||
characters; "{:<8}" would do this as left aligned, "{:^8}" as centered,
|
||||
"{:>8}" as right aligned. If a specific presentation is selected, the
|
||||
argument type must be compatible or else the {fmt} formatting code will
|
||||
throw an exception. Some format string examples are given below:
|
||||
|
||||
.. code-block:: C
|
||||
|
||||
auto mesg = fmt::format(" CPU time: {:4d}:{:02d}:{:02d}\n", cpuh, cpum, cpus);
|
||||
mesg = fmt::format("{:<8s}| {:<10.5g} | {:<10.5g} | {:<10.5g} |{:6.1f} |{:6.2f}\n",
|
||||
label, time_min, time, time_max, time_sq, tmp);
|
||||
utils::logmesg(lmp,"{:>6} = max # of 1-2 neighbors\n",maxall);
|
||||
utils::logmesg(lmp,"Lattice spacing in x,y,z = {:.8} {:.8} {:.8}\n",
|
||||
xlattice,ylattice,zlattice);
|
||||
|
||||
which will create the following output lines:
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
CPU time: 0:02:16
|
||||
Pair | 2.0133 | 2.0133 | 2.0133 | 0.0 | 84.21
|
||||
4 = max # of 1-2 neighbors
|
||||
Lattice spacing in x,y,z = 1.6795962 1.6795962 1.6795962
|
||||
|
||||
Finally, a special feature of the {fmt} library is that format
|
||||
parameters like the width or the precision may be also provided as
|
||||
arguments. In that case a nested format is used where a pair of curly
|
||||
braces (with an optional argument id) "{}" are used instead of the
|
||||
value, for example "{:{}d}" will consume two integer arguments, the
|
||||
first will be the value shown and the second the minimum width.
|
||||
|
||||
For more details and examples, please consult the `{fmt} syntax
|
||||
documentation <https://fmt.dev/latest/syntax.html>`_ website.
|
||||
|
||||
|
||||
Memory management
|
||||
^^^^^^^^^^^^^^^^^
|
||||
|
||||
Dynamical allocation of small data and objects can be done with the
|
||||
the C++ commands "new" and "delete/delete[]. Large data should use
|
||||
the member functions of the ``Memory`` class, most commonly,
|
||||
``Memory::create()``, ``Memory::grow()``, and ``Memory::destroy()``,
|
||||
which provide variants for vectors, 2d arrays, 3d arrays, etc.
|
||||
These can also be used for small data.
|
||||
|
||||
The use of ``malloc()``, ``calloc()``, ``realloc()`` and ``free()``
|
||||
directly is strongly discouraged. To simplify adapting legacy code
|
||||
into the LAMMPS code base the member functions ``Memory::smalloc()``,
|
||||
``Memory::srealloc()``, and ``Memory::sfree()`` are available, which
|
||||
perform additional error checks for safety.
|
||||
|
||||
Use of these custom memory allocation functions is motivated by the
|
||||
following considerations:
|
||||
|
||||
- memory allocation failures on *any* MPI rank during a parallel run
|
||||
will trigger an immediate abort of the entire parallel calculation
|
||||
instead of stalling it
|
||||
- a failing "new" will trigger an exception which is also captured by
|
||||
LAMMPS and triggers a global abort
|
||||
- allocation of multi-dimensional arrays will be done in a C compatible
|
||||
fashion but so that the storage of the actual data is stored in one
|
||||
large contiguous block. Thus when MPI communication is needed,
|
||||
the data can be communicated directly (similar to Fortran arrays).
|
||||
- the "destroy()" and "sfree()" functions may safely be called on NULL
|
||||
pointers
|
||||
- the "destroy()" functions will nullify the pointer variables making
|
||||
"use after free" errors easy to detect
|
||||
- it is possible to use a larger than default memory alignment (not on
|
||||
all operating systems, since the allocated storage pointers must be
|
||||
compatible with ``free()`` for technical reasons)
|
||||
|
||||
In the practical implementation of code this means that any pointer
|
||||
variables that are class members should be initialized to a
|
||||
``nullptr`` value in their respective constructors. That way it is
|
||||
safe to call ``Memory::destroy()`` or ``delete[]`` on them before
|
||||
*any* allocation outside the constructor. This helps prevent memory
|
||||
leaks.
|
||||
235
doc/src/Developer_comm_ops.rst
Normal file
235
doc/src/Developer_comm_ops.rst
Normal file
@ -0,0 +1,235 @@
|
||||
Communication patterns
|
||||
----------------------
|
||||
|
||||
This page describes various inter-processor communication operations
|
||||
provided by LAMMPS, mostly in the core *Comm* class. These are operations
|
||||
for common tasks implemented using MPI library calls. They are used by
|
||||
other classes to perform communication of different kinds. These
|
||||
operations are useful to know about when writing new code for LAMMPS
|
||||
that needs to communicate data between processors.
|
||||
|
||||
Owned and ghost atoms
|
||||
^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
As described on the :doc:`parallel partitioning algorithms
|
||||
<Developer_par_part>` page, LAMMPS spatially decomposes the simulation
|
||||
domain, either in a *brick* or *tiled* manner. Each processor (MPI
|
||||
task) owns atoms within its sub-domain and additionally stores ghost
|
||||
atoms within a cutoff distance of its sub-domain.
|
||||
|
||||
Forward and reverse communication
|
||||
=================================
|
||||
|
||||
As described on the :doc:`parallel communication algorithms
|
||||
<Developer_par_comm>` page, the most common communication operations are
|
||||
first, *forward communication* which sends owned atom information from
|
||||
each processor to nearby processors to store with their ghost atoms.
|
||||
The need to do this communication arises when data from the owned atoms
|
||||
is updated (e.g. their positions) and this updated information needs to
|
||||
be **copied** to the corresponding ghost atoms.
|
||||
|
||||
And second, *reverse communication* which sends ghost atom information
|
||||
from each processor to the owning processor to **accumulate** (sum)
|
||||
the values with the corresponding owned atoms. The need for this
|
||||
arises when data is computed and also stored with ghost atoms
|
||||
(e.g. forces when using a "half" neighbor list) and thus those terms
|
||||
need to be added to their corresponding atoms on the process where
|
||||
they are "owned" atoms. Please note, that with the :doc:`newton off
|
||||
<newton>` setting this does not happen and the neighbor lists are
|
||||
constructed so that these interactions are computed on both MPI
|
||||
processes containing one of the atoms and only the data pertaining to
|
||||
the local atom is stored.
|
||||
|
||||
The time-integration classes in LAMMPS invoke these operations each
|
||||
timestep via the *forward_comm()* and *reverse_comm()* methods in the
|
||||
*Comm* class. Which per-atom data is communicated depends on the
|
||||
currently used :doc:`atom style <atom_style>` and whether
|
||||
:doc:`comm_modify vel <comm_modify>` setting is "no" (default) or
|
||||
"yes".
|
||||
|
||||
Similarly, *Pair* style classes can invoke the *forward_comm(this)*
|
||||
and *reverse_comm(this)* methods in the *Comm* class to perform the
|
||||
same operations on per-atom data that is generated and stored within
|
||||
the pair style class. Note that this function requires passing the
|
||||
``this`` pointer as the first argument to enable the *Comm* class to
|
||||
call the "pack" and "unpack" functions discussed below. An example of
|
||||
the use of these functions are many-body pair styles like the
|
||||
embedded-atom method (EAM) which compute intermediate values in the
|
||||
first part of the compute() function that need to be stored by both
|
||||
owned and ghost atoms for the second part of the force computation.
|
||||
The *Comm* class methods perform the MPI communication for buffers of
|
||||
per-atom data. They "call back" to the *Pair* class so it can *pack*
|
||||
or *unpack* the buffer with data the *Pair* class owns. There are 4
|
||||
such methods that the *Pair* class must define, assuming it uses both
|
||||
forward and reverse communication:
|
||||
|
||||
* pack_forward_comm()
|
||||
* unpack_forward_comm()
|
||||
* pack_reverse_comm()
|
||||
* unpack_reverse_comm()
|
||||
|
||||
The arguments to these methods include the buffer and a list of atoms
|
||||
to pack or unpack. The *Pair* class also must set the *comm_forward*
|
||||
and *comm_reverse* variables which store the number of values stored
|
||||
in the communication buffers for each operation. This means, if
|
||||
desired, it can choose to store multiple per-atom values in the
|
||||
buffer, and they will be communicated together to minimize
|
||||
communication overhead. The communication buffers are defined vectors
|
||||
containing ``double`` values. To correctly store integers that may be
|
||||
64-bit (bigint, tagint, imageint) in the buffer, you need to use the
|
||||
`ubuf union <Communication buffer coding with ubuf>`_ construct.
|
||||
|
||||
The *Fix*, *Compute*, and *Dump* classes can also invoke the same kind
|
||||
of forward and reverse communication operations using the same *Comm*
|
||||
class methods. Likewise the same pack/unpack methods and
|
||||
comm_forward/comm_reverse variables must be defined by the calling
|
||||
*Fix*, *Compute*, or *Dump* class.
|
||||
|
||||
For *Fix* classes there is an optional second argument to the
|
||||
*forward_comm()* and *reverse_comm()* call which can be used when the
|
||||
fix performs multiple modes of communication, with different numbers
|
||||
of values per atom. The fix should set the *comm_forward* and
|
||||
*comm_reverse* variables to the maximum value, but can invoke the
|
||||
communication for a particular mode with a smaller value. For this
|
||||
to work, the *pack_forward_comm()*, etc methods typically use a class
|
||||
member variable to choose which values to pack/unpack into/from the
|
||||
buffer.
|
||||
|
||||
Finally, for reverse communications in *Fix* classes there is also the
|
||||
*reverse_comm_variable()* method that allows the communication to have
|
||||
a different amount of data per-atom. It invokes these corresponding
|
||||
callback methods:
|
||||
|
||||
* pack_reverse_comm_size()
|
||||
* unpack_reverse_comm_size()
|
||||
|
||||
which have extra arguments to specify the amount of data stored
|
||||
in the buffer for each atom.
|
||||
|
||||
Higher level communication
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
There are also several higher-level communication operations provided
|
||||
in LAMMPS which work for either *brick* or *tiled* decompositions.
|
||||
They may be useful for a new class to invoke if it requires more
|
||||
sophisticated communication than the *forward* and *reverse* methods
|
||||
provide. The 3 communication operations described here are
|
||||
|
||||
* ring
|
||||
* irregular
|
||||
* rendezvous
|
||||
|
||||
You can invoke these *grep* command in the LAMMPS src directory, to
|
||||
see a list of classes that invoke the 3 operations.
|
||||
|
||||
* ``grep "\->ring" *.cpp */*.cpp``
|
||||
* ``grep "irregular\->" *.cpp``
|
||||
* ``grep "\->rendezvous" *.cpp */*.cpp``
|
||||
|
||||
Ring operation
|
||||
==============
|
||||
|
||||
The *ring* operation is invoked via the *ring()* method in the *Comm*
|
||||
class.
|
||||
|
||||
Each processor first creates a buffer with a list of values, typically
|
||||
associated with a subset of the atoms it owns. Now think of the *P*
|
||||
processors as connected to each other in a *ring*. Each processor *M*
|
||||
sends data to the next *M+1* processor. It receives data from the
|
||||
preceding *M-1* processor. The ring is periodic so that the last
|
||||
processor sends to the first processor, and the first processor
|
||||
receives from the last processor.
|
||||
|
||||
Invoking the *ring()* method passes each processor's buffer in *P*
|
||||
steps around the ring. At each step a *callback* method, provided as
|
||||
an argument to ring(), in the caller is invoked. This allows each
|
||||
processor to examine the data buffer provided by every other
|
||||
processor. It may extract values needed by its atoms from the
|
||||
buffers, or it may alter placeholder values in the buffer. In the
|
||||
latter case, when the *ring* operation is complete, each processor can
|
||||
examine its original buffer to extract modified values.
|
||||
|
||||
Note that the *ring* operation is similar to an MPI_Alltoall()
|
||||
operation where every processor effectively sends and receives data to
|
||||
every other processor. The difference is that the *ring* operation
|
||||
does it one step at a time, so the total volume of data does not need
|
||||
to be stored by every processor. However, the *ring* operation is
|
||||
also less efficient than MPI_Alltoall() because of the *P* stages
|
||||
required. So it is typically only suitable for small data buffers and
|
||||
occasional operations that are not time-critical.
|
||||
|
||||
Irregular operation
|
||||
===================
|
||||
|
||||
The *irregular* operation is provided by the *Irregular* class. What
|
||||
LAMMPS terms irregular communication is when each processor knows what
|
||||
data it needs to send to what processor, but does not know what
|
||||
processors are sending it data. An example is when load-balancing is
|
||||
performed and each processor needs to send some of its atoms to new
|
||||
processors.
|
||||
|
||||
The *Irregular* class provides 5 high-level methods useful in this
|
||||
context:
|
||||
|
||||
* create_data()
|
||||
* exchange_data()
|
||||
* create_atom()
|
||||
* exchange_atom()
|
||||
* migrate_atoms()
|
||||
|
||||
For the *create_data()* method, each processor specifies a list of *N*
|
||||
datums to send, each to a specified processor. Internally, the method
|
||||
creates efficient data structures for performing the communication.
|
||||
The *exchange_data()* method triggers the communication to be
|
||||
performed. Each processor provides the vector of *N* datums to send,
|
||||
and the size of each datum. All datums must be the same size.
|
||||
|
||||
The *create_atom()* and *exchange_atom()* methods are similar except
|
||||
that the size of each datum can be different. Typically this is used
|
||||
to communicate atoms, each with a variable amount of per-atom data, to
|
||||
other processors.
|
||||
|
||||
The *migrate_atoms()* method is a convenience wrapper on the
|
||||
*create_atom()* and *exchange_atom()* methods to simplify
|
||||
communication of all the per-atom data associated with an atom so that
|
||||
the atom can effectively migrate to a new owning processor. It is
|
||||
similar to the *exchange()* method in the *Comm* class invoked when
|
||||
atoms move to neighboring processors (in the regular or tiled
|
||||
decomposition) during timestepping, except that it allows atoms to
|
||||
have moved arbitrarily long distances and still be properly
|
||||
communicated to a new owning processor.
|
||||
|
||||
Rendezvous operation
|
||||
====================
|
||||
|
||||
Finally, the *rendezvous* operation is invoked via the *rendezvous()*
|
||||
method in the *Comm* class. Depending on how much communication is
|
||||
needed and how many processors a LAMMPS simulation is running on, it
|
||||
can be a much more efficient choice than the *ring()* method. It uses
|
||||
the *irregular* operation internally once or twice to do its
|
||||
communication. The rendezvous algorithm is described in detail in
|
||||
:ref:`(Plimpton) <Plimpton>`, including some LAMMPS use cases.
|
||||
|
||||
For the *rendezvous()* method, each processor specifies a list of *N*
|
||||
datums to send and which processor to send each of them to.
|
||||
Internally, this communication is performed as an irregular operation.
|
||||
The received datums are returned to the caller via invocation of
|
||||
*callback* function, provided as an argument to *rendezvous()*. The
|
||||
caller can then process the received datums and (optionally) assemble
|
||||
a new list of datums to communicate to a new list of specific
|
||||
processors. When the callback function exits, the *rendezvous()*
|
||||
method performs a second irregular communication on the new list of
|
||||
datums.
|
||||
|
||||
Examples in LAMMPS of use of the *rendezvous* operation are the
|
||||
:doc:`fix rigid/small <fix_rigid>` and :doc:`fix shake
|
||||
<fix_shake>` commands (for one-time identification of the rigid body
|
||||
atom clusters) and the identification of special_bond 1-2, 1-3 and 1-4
|
||||
neighbors within molecules. See the :doc:`special_bonds <special_bonds>`
|
||||
command for context.
|
||||
|
||||
----------
|
||||
|
||||
.. _Plimpton:
|
||||
|
||||
**(Plimpton)** Plimpton and Knight, JPDC, 147, 184-195 (2021).
|
||||
@ -1,384 +0,0 @@
|
||||
Code design
|
||||
-----------
|
||||
|
||||
This section discusses some of the code design choices in LAMMPS and
|
||||
overall strategy in order to assist developers to write new code that
|
||||
will fit well with the remaining code. Please see the section on
|
||||
:doc:`Requirements for contributed code <Modify_style>` for more
|
||||
specific recommendations and guidelines. While that section is
|
||||
organized more in the form of a checklist for code contributors, the
|
||||
focus here is on overall code design strategy, choices made between
|
||||
possible alternatives, and to discuss of some relevant C++ programming
|
||||
language constructs.
|
||||
|
||||
Historically, the basic design philosophy of the LAMMPS C++ code was
|
||||
that of a "C with classes" style. The was motivated by the desire to
|
||||
make it easier to modify LAMMPS for people without significant training
|
||||
in C++ programming and by trying to use data structures and code constructs
|
||||
that somewhat resemble the previous implementation(s) in Fortran.
|
||||
A contributing factor for this choice also was that at the time the
|
||||
implementation of C++ compilers was not always very mature and some of
|
||||
the advanced features contained bugs or were not functioning exactly
|
||||
as the standard required; plus there was some disagreement between
|
||||
compiler vendors about how to interpret the C++ standard documents.
|
||||
|
||||
However, C++ compilers have advanced a lot since then and with the
|
||||
transition to requiring the C++11 standard in 2020 as the minimum C++ language
|
||||
standard for LAMMPS, the decision was made to also replace some of the
|
||||
C-style constructs with equivalent C++ functionality, either from the
|
||||
C++ standard library or as custom classes or function, in order to
|
||||
improve readability of the code and to increase code reuse through
|
||||
abstraction of commonly used functionality.
|
||||
|
||||
.. note::
|
||||
|
||||
Please note that as of spring 2022 there is still a sizable chunk of
|
||||
legacy code in LAMMPS that has not yet been refactored to reflect these
|
||||
style conventions in full. LAMMPS has a large code base and many
|
||||
different contributors and there also is a hierarchy of precedence
|
||||
in which the code is adapted. Highest priority has the code in the
|
||||
``src`` folder, followed by code in packages in order of their popularity
|
||||
and complexity (simpler code is adapted sooner), followed by code
|
||||
in the ``lib`` folder. Source code that is downloaded during compilation
|
||||
is not subject to the conventions discussed here.
|
||||
|
||||
Object oriented code
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
LAMMPS is designed to be an object oriented code, that is each
|
||||
simulation is represented by an instance of the LAMMPS class. When
|
||||
running in parallel, of course, each MPI process will create such an
|
||||
instance. This can be seen in the ``main.cpp`` file where the core
|
||||
steps of running a LAMMPS simulation are the following 3 lines of code:
|
||||
|
||||
.. code-block:: C++
|
||||
|
||||
LAMMPS *lammps = new LAMMPS(argc, argv, lammps_comm);
|
||||
lammps->input->file();
|
||||
delete lammps;
|
||||
|
||||
The first line creates a LAMMPS class instance and passes the command
|
||||
line arguments and the global communicator to its constructor. The
|
||||
second line tells the LAMMPS instance to process the input (either from
|
||||
standard input or the provided input file) until the end. And the third
|
||||
line deletes that instance again. The remainder of the main.cpp file
|
||||
are for error handling, MPI configuration and other special features.
|
||||
|
||||
In the constructor of the LAMMPS class instance the basic LAMMPS class hierarchy
|
||||
is created as shown in :ref:`class-topology`. While processing the input further
|
||||
class instances are created, or deleted, or replaced and specific member functions
|
||||
of specific classes are called to trigger actions like creating atoms, computing
|
||||
forces, computing properties, propagating the system, or writing output.
|
||||
|
||||
Compositing and Inheritance
|
||||
===========================
|
||||
|
||||
LAMMPS makes extensive use of the object oriented programming (OOP)
|
||||
principles of *compositing* and *inheritance*. Classes like the
|
||||
``LAMMPS`` class are a **composite** containing pointers to instances of
|
||||
other classes like ``Atom``, ``Comm``, ``Force``, ``Neighbor``,
|
||||
``Modify``, and so on. Each of these classes implement certain
|
||||
functionality by storing and manipulating data related to the simulation
|
||||
and providing member functions that trigger certain actions. Some of
|
||||
those classes like ``Force`` are a composite again containing instances
|
||||
of classes describing the force interactions or ``Modify`` containing
|
||||
and calling fixes and computes. In most cases (e.g. ``AtomVec``, ``Comm``,
|
||||
``Pair``, or ``Bond``) there is only one instance of those member classes
|
||||
allowed, but in a few cases (e.g. ``Region``, ``Fix``, ``Compute``, or
|
||||
``Dump``) there can be multiple instances and the parent class is
|
||||
maintaining a list of the pointers of instantiated classes instead
|
||||
of a single pointer.
|
||||
|
||||
Changing behavior or adjusting how LAMMPS handles a simulation is
|
||||
implemented via **inheritance** where different variants of the
|
||||
functionality are realized by creating *derived* classes that can share
|
||||
common functionality in their base class and provide a consistent
|
||||
interface where the derived classes replace (dummy or pure) functions in
|
||||
the base class. The higher level classes can then call those methods of
|
||||
the instantiated classes without having to know which specific derived
|
||||
class variant was instantiated. In the LAMMPS documentation those
|
||||
derived classes are usually referred to a "styles", e.g. pair styles,
|
||||
fix styles, atom styles and so on.
|
||||
|
||||
This is the origin of the flexibility of LAMMPS and facilitates for
|
||||
example to compute forces for very different non-bonded potential
|
||||
functions by having different pair styles (implemented as different
|
||||
classes derived from the ``Pair`` class) where the evaluation of the
|
||||
potential function is confined to the implementation of the individual
|
||||
classes. Whenever a new :doc:`pair_style` or :doc:`bond_style` or
|
||||
:doc:`comm_style` or similar command is processed in the LAMMPS input
|
||||
any existing class instance is deleted and a new instance created in
|
||||
it place.
|
||||
|
||||
Classes derived from ``Fix`` or ``Compute`` represent a different facet
|
||||
of LAMMPS' flexibility as there can be multiple instances of them an
|
||||
their member functions will be called at different phases of the time
|
||||
integration process (as explained in `Developer_flow`). This way
|
||||
multiple manipulations of the entire or parts of the system can be
|
||||
programmed (with fix styles) or different computations can be performed
|
||||
and accessed and further processed or output through a common interface
|
||||
(with compute styles).
|
||||
|
||||
Further code sharing is possible by creating derived classes from the
|
||||
derived classes (for instance to implement an accelerated version of a
|
||||
pair style) where then only a subset of the methods are replaced with
|
||||
the accelerated versions.
|
||||
|
||||
Polymorphism
|
||||
============
|
||||
|
||||
Polymorphism and dynamic dispatch are another OOP feature that play an
|
||||
important part of how LAMMPS selects which code to execute. In a nutshell,
|
||||
this is a mechanism where the decision of which member function to call
|
||||
from a class is determined at runtime and not when the code is compiled.
|
||||
To enable it, the function has to be declared as ``virtual`` and all
|
||||
corresponding functions in derived classes should be using the ``override``
|
||||
property. Below is a brief example.
|
||||
|
||||
.. code-block:: c++
|
||||
|
||||
class Base {
|
||||
public:
|
||||
virtual ~Base() = default;
|
||||
void call();
|
||||
void normal();
|
||||
virtual void poly();
|
||||
};
|
||||
|
||||
void Base::call() {
|
||||
normal();
|
||||
poly();
|
||||
}
|
||||
|
||||
class Derived : public Base {
|
||||
public:
|
||||
~Derived() override = default;
|
||||
void normal();
|
||||
void poly() override;
|
||||
};
|
||||
|
||||
// [....]
|
||||
|
||||
Base *base1 = new Base();
|
||||
Base *base2 = new Derived();
|
||||
|
||||
base1->call();
|
||||
base2->call();
|
||||
|
||||
The difference in behavior of the ``normal()`` and the ``poly()`` member
|
||||
functions is in which of the two member functions is called when
|
||||
executing `base1->call()` and `base2->call()`. Without polymorphism, a
|
||||
function within the base class will call only member functions within
|
||||
the same scope, that is ``Base::call()`` will always call
|
||||
``Base::normal()``. But for the `base2->call()` the call for the
|
||||
virtual member function will be dispatched to ``Derived::poly()``
|
||||
instead. This mechanism allows to always call functions within the
|
||||
scope of the class type that was used to create the class instance, even
|
||||
if they are assigned to a pointer using the type of a base class. This
|
||||
is the desired behavior, and thanks to dynamic dispatch, LAMMPS can even
|
||||
use styles that are loaded at runtime from a shared object file with the
|
||||
:doc:`plugin command <plugin>`.
|
||||
|
||||
A special case of virtual functions are so-called pure functions. These
|
||||
are virtual functions that are initialized to 0 in the class declaration
|
||||
(see example below).
|
||||
|
||||
.. code-block:: c++
|
||||
|
||||
class Base {
|
||||
public:
|
||||
virtual void pure() = 0;
|
||||
};
|
||||
|
||||
This has the effect that it will no longer be possible to create an
|
||||
instance of the base class and that derived classes **must** implement
|
||||
these functions. Many of the functions listed with the various class
|
||||
styles in the section :doc:`Modify` are such pure functions. The
|
||||
motivation for this is to define the interface or API of the functions
|
||||
but defer the implementation to the derived classes.
|
||||
|
||||
However, there are downsides to this. For example, calls to virtual
|
||||
functions from within a constructor, will not be in the scope of the
|
||||
derived class and thus it is good practice to either avoid calling them
|
||||
or to provide an explicit scope like in ``Base::poly()``. Furthermore,
|
||||
any destructors in classes containing virtual functions should be
|
||||
declared virtual, too, so they are processed in the expected order
|
||||
before types are removed from dynamic dispatch.
|
||||
|
||||
.. admonition:: Important Notes
|
||||
|
||||
In order to be able to detect incompatibilities and to avoid unexpected
|
||||
behavior already at compile time, it is crucial that all member functions
|
||||
that are intended to replace a virtual or pure function use the ``override``
|
||||
property keyword. For the same reason it should be avoided to use overloads
|
||||
or default arguments for virtual functions as they lead to confusion over
|
||||
which function is supposed to override which and which arguments need to be
|
||||
declared.
|
||||
|
||||
Style Factories
|
||||
===============
|
||||
|
||||
In order to create class instances of the different styles, LAMMPS often
|
||||
uses a programming pattern called `Factory`. Those are functions that create
|
||||
an instance of a specific derived class, say ``PairLJCut`` and return a pointer
|
||||
to the type of the common base class of that style, ``Pair`` in this case.
|
||||
To associate the factory function with the style keyword, an ``std::map``
|
||||
class is used in which function pointers are indexed by their keyword
|
||||
(for example "lj/cut" for ``PairLJCut`` and "morse" ``PairMorse``).
|
||||
A couple of typedefs help to keep the code readable and a template function
|
||||
is used to implement the actual factory functions for the individual classes.
|
||||
|
||||
I/O and output formatting
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
C-style stdio versus C++ style iostreams
|
||||
========================================
|
||||
|
||||
LAMMPS chooses to use the "stdio" library of the standard C library for
|
||||
reading from and writing to files and console instead of C++
|
||||
"iostreams". This is mainly motivated by the better performance, better
|
||||
control over formatting, and less effort to achieve specific formatting.
|
||||
|
||||
Since mixing "stdio" and "iostreams" can lead to unexpected behavior using
|
||||
the latter is strongly discouraged. Also output to the screen should not
|
||||
use the predefined ``stdout`` FILE pointer, but rather the ``screen`` and
|
||||
``logfile`` FILE pointers managed by the LAMMPS class. Furthermore, output
|
||||
should only be done by MPI rank 0 (``comm->me == 0``) and output that is
|
||||
send to both ``screen`` and ``logfile`` should use the
|
||||
:cpp:func:`utils::logmesg() convenience function <LAMMPS_NS::utils::logmesg>`.
|
||||
|
||||
We also discourage the use for stringstreams as the bundled {fmt} library
|
||||
and the customized tokenizer classes can provide the same functionality
|
||||
in a cleaner way with better performance. This will also help to retain
|
||||
a consistent programming style despite the many different contributors.
|
||||
|
||||
Formatting with the {fmt} library
|
||||
===================================
|
||||
|
||||
The LAMMPS source code includes a copy of the `{fmt} library
|
||||
<https://fmt.dev>`_ which is preferred over formatting with the
|
||||
"printf()" family of functions. The primary reason is that it allows a
|
||||
typesafe default format for any type of supported data. This is
|
||||
particularly useful for formatting integers of a given size (32-bit or
|
||||
64-bit) which may require different format strings depending on compile
|
||||
time settings or compilers/operating systems. Furthermore, {fmt} gives
|
||||
better performance, has more functionality, a familiar formatting syntax
|
||||
that has similarities to ``format()`` in Python, and provides a facility
|
||||
that can be used to integrate format strings and a variable number of
|
||||
arguments into custom functions in a much simpler way that the varargs
|
||||
mechanism of the C library. Finally, {fmt} has been included into the
|
||||
C++20 language standard, so changes to adopt it are future proof.
|
||||
|
||||
Formatted strings are frequently created by calling the
|
||||
``fmt::format()`` function which will return a string as ``std::string``
|
||||
class instance. In contrast to the ``%`` placeholder in ``printf()``,
|
||||
the {fmt} library uses ``{}`` to embed format descriptors. In the
|
||||
simplest case, no additional characters are needed as {fmt} will choose
|
||||
the default format based on the data type of the argument. Alternatively
|
||||
The ``fmt::print()`` function may be used instead of ``printf()`` or
|
||||
``fprintf()``. In addition, several LAMMPS output functions, that
|
||||
originally accepted a single string as arguments have been overloaded to
|
||||
accept a format string with optional arguments as well (e.g.
|
||||
``Error::all()``, ``Error::one()``, ``utils::logmesg()``).
|
||||
|
||||
Summary of the {fmt} format syntax
|
||||
==================================
|
||||
|
||||
The syntax of the format string is "{[<argument id>][:<format spec>]}",
|
||||
where either the argument id or the format spec (separated by a colon
|
||||
':') is optional. The argument id is usually a number starting from 0
|
||||
that is the index to the arguments following the format string. By
|
||||
default these are assigned in order (i.e. 0, 1, 2, 3, 4 etc.). The most
|
||||
common case for using argument id would be to use the same argument in
|
||||
multiple places in the format string without having to provide it as an
|
||||
argument multiple times. In LAMMPS the argument id is rarely used.
|
||||
|
||||
More common is the use of the format specifier, which starts with a
|
||||
colon. This may optionally be followed by a fill character (default is
|
||||
' '). If provided, the fill character **must** be followed by an
|
||||
alignment character ('<', '^', '>' for left, centered, or right
|
||||
alignment (default)). The alignment character may be used without a fill
|
||||
character. The next important format parameter would be the minimum
|
||||
width, which may be followed by a dot '.' and a precision for floating
|
||||
point numbers. The final character in the format string would be an
|
||||
indicator for the "presentation", i.e. 'd' for decimal presentation of
|
||||
integers, 'x' for hexadecimal, 'o' for octal, 'c' for character
|
||||
etc. This mostly follows the "printf()" scheme but without requiring an
|
||||
additional length parameter to distinguish between different integer
|
||||
widths. The {fmt} library will detect those and adapt the formatting
|
||||
accordingly. For floating point numbers there are correspondingly, 'g'
|
||||
for generic presentation, 'e' for exponential presentation, and 'f' for
|
||||
fixed point presentation.
|
||||
|
||||
Thus "{:8}" would represent *any* type argument using at least 8
|
||||
characters; "{:<8}" would do this as left aligned, "{:^8}" as centered,
|
||||
"{:>8}" as right aligned. If a specific presentation is selected, the
|
||||
argument type must be compatible or else the {fmt} formatting code will
|
||||
throw an exception. Some format string examples are given below:
|
||||
|
||||
.. code-block:: C
|
||||
|
||||
auto mesg = fmt::format(" CPU time: {:4d}:{:02d}:{:02d}\n", cpuh, cpum, cpus);
|
||||
mesg = fmt::format("{:<8s}| {:<10.5g} | {:<10.5g} | {:<10.5g} |{:6.1f} |{:6.2f}\n",
|
||||
label, time_min, time, time_max, time_sq, tmp);
|
||||
utils::logmesg(lmp,"{:>6} = max # of 1-2 neighbors\n",maxall);
|
||||
utils::logmesg(lmp,"Lattice spacing in x,y,z = {:.8} {:.8} {:.8}\n",
|
||||
xlattice,ylattice,zlattice);
|
||||
|
||||
which will create the following output lines:
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
CPU time: 0:02:16
|
||||
Pair | 2.0133 | 2.0133 | 2.0133 | 0.0 | 84.21
|
||||
4 = max # of 1-2 neighbors
|
||||
Lattice spacing in x,y,z = 1.6795962 1.6795962 1.6795962
|
||||
|
||||
A special feature of the {fmt} library is that format parameters like
|
||||
the width or the precision may be also provided as arguments. In that
|
||||
case a nested format is used where a pair of curly braces (with an
|
||||
optional argument id) "{}" are used instead of the value, for example
|
||||
"{:{}d}" will consume two integer arguments, the first will be the value
|
||||
shown and the second the minimum width.
|
||||
|
||||
For more details and examples, please consult the `{fmt} syntax
|
||||
documentation <https://fmt.dev/latest/syntax.html>`_ website.
|
||||
|
||||
|
||||
Memory management
|
||||
^^^^^^^^^^^^^^^^^
|
||||
|
||||
Dynamical allocation of data and objects should be done with either the
|
||||
C++ commands "new" and "delete/delete[]" or using member functions of
|
||||
the ``Memory`` class, most commonly, ``Memory::create()``,
|
||||
``Memory::grow()``, and ``Memory::destroy()``. The use of ``malloc()``,
|
||||
``calloc()``, ``realloc()`` and ``free()`` directly is strongly
|
||||
discouraged. To simplify adapting legacy code into the LAMMPS code base
|
||||
the member functions ``Memory::smalloc()``, ``Memory::srealloc()``, and
|
||||
``Memory::sfree()`` are available.
|
||||
|
||||
Using those custom memory allocation functions is motivated by the
|
||||
following considerations:
|
||||
|
||||
- memory allocation failures on *any* MPI rank during a parallel run
|
||||
will trigger an immediate abort of the entire parallel calculation
|
||||
instead of stalling it
|
||||
- a failing "new" will trigger an exception which is also captured by
|
||||
LAMMPS and triggers a global abort
|
||||
- allocation of multi-dimensional arrays will be done in a C compatible
|
||||
fashion but so that the storage of the actual data is stored in one
|
||||
large consecutive block and thus when MPI communication is needed,
|
||||
only this storage needs to be communicated (similar to Fortran arrays)
|
||||
- the "destroy()" and "sfree()" functions may safely be called on NULL
|
||||
pointers
|
||||
- the "destroy()" functions will nullify the pointer variables making
|
||||
"use after free" errors easy to detect
|
||||
- it is possible to use a larger than default memory alignment (not on
|
||||
all operating systems, since the allocated storage pointers must be
|
||||
compatible with ``free()`` for technical reasons)
|
||||
|
||||
In the practical implementation of code this means that any pointer variables
|
||||
that are class members should be initialized to a ``nullptr`` value in their
|
||||
respective constructors. That way it would be safe to call ``Memory::destroy()``
|
||||
or ``delete[]`` on them before *any* allocation outside the constructor.
|
||||
This helps to prevent memory leaks.
|
||||
@ -7,13 +7,22 @@ typically document what a variable stores, what a small section of
|
||||
code does, or what a function does and its input/outputs. The topics
|
||||
on this page are intended to document code functionality at a higher level.
|
||||
|
||||
Available topics are:
|
||||
|
||||
- `Reading and parsing of text and text files`_
|
||||
- `Requesting and accessing neighbor lists`_
|
||||
- `Fix contributions to instantaneous energy, virial, and cumulative energy`_
|
||||
- `KSpace PPPM FFT grids`_
|
||||
|
||||
----
|
||||
|
||||
Reading and parsing of text and text files
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
It is frequently required for a class in LAMMPS to read in additional
|
||||
data from a file, most commonly potential parameters from a potential
|
||||
file for manybody potentials. LAMMPS provides several custom classes
|
||||
and convenience functions to simplify the process. This offers the
|
||||
data from a file, e.g. potential parameters from a potential file for
|
||||
manybody potentials. LAMMPS provides several custom classes and
|
||||
convenience functions to simplify the process. They offer the
|
||||
following benefits:
|
||||
|
||||
- better code reuse and fewer lines of code needed to implement reading
|
||||
@ -23,7 +32,7 @@ following benefits:
|
||||
text to a number or returning a 0 on unrecognized text and thus reading incorrect values
|
||||
- re-entrant code through avoiding global static variables (as used by ``strtok()``)
|
||||
- transparent support for translating unsupported UTF-8 characters to their ASCII equivalents
|
||||
(the text to value conversion functions **only** accept ASCII characters)
|
||||
(the text-to-value conversion functions **only** accept ASCII characters)
|
||||
|
||||
In most cases (e.g. potential files) the same data is needed on all MPI
|
||||
ranks. Then it is best to do the reading and parsing only on MPI rank
|
||||
@ -31,16 +40,17 @@ ranks. Then it is best to do the reading and parsing only on MPI rank
|
||||
calls. For reading generic text and potential parameter files the
|
||||
custom classes :cpp:class:`TextFileReader <LAMMPS_NS::TextFileReader>`
|
||||
and :cpp:class:`PotentialFileReader <LAMMPS_NS::PotentialFileReader>`
|
||||
are available. Those classes allow to read the file as individual lines
|
||||
for which they can return a tokenizer class (see below) for parsing the
|
||||
line, or they can return blocks of numbers as a vector directly. The
|
||||
documentation on `File reader classes <file-reader-classes>`_ contains
|
||||
an example for a typical case.
|
||||
are available. They allow reading the file as individual lines for which
|
||||
they can return a tokenizer class (see below) for parsing the line. Or
|
||||
they can return blocks of numbers as a vector directly. The
|
||||
documentation on :ref:`File reader classes <file-reader-classes>`
|
||||
contains an example for a typical case.
|
||||
|
||||
When reading per-atom data, the data in the file usually needs include
|
||||
an atom ID so it can be associated with a particular atom. In that case
|
||||
the data can be read in multi-line chunks and broadcast to all MPI ranks
|
||||
with :cpp:func:`utils::read_lines_from_file()
|
||||
When reading per-atom data, the data on each line of the file usually
|
||||
needs to include an atom ID so it can be associated with a particular
|
||||
atom. In that case the data can be read in multi-line chunks and
|
||||
broadcast to all MPI ranks with
|
||||
:cpp:func:`utils::read_lines_from_file()
|
||||
<LAMMPS_NS::utils::read_lines_from_file>`. Those chunks are then
|
||||
split into lines, parsed, and applied only to atoms the MPI rank
|
||||
"owns".
|
||||
@ -49,19 +59,163 @@ For splitting a string (incrementally) into words and optionally
|
||||
converting those to numbers, the :cpp:class:`Tokenizer
|
||||
<LAMMPS_NS::Tokenizer>` and :cpp:class:`ValueTokenizer
|
||||
<LAMMPS_NS::ValueTokenizer>` can be used. Those provide a superset of
|
||||
the functionality of ``strtok()`` from the C-library and the latter also
|
||||
includes conversion to different types. Any errors while processing the
|
||||
string in those classes will result in an exception, which can be caught
|
||||
and the error processed as needed. Unlike the C-library functions
|
||||
``atoi()``, ``atof()``, ``strtol()``, or ``strtod()`` the conversion
|
||||
will check if the converted text is a valid integer of floating point
|
||||
number and will not silently return an unexpected or incorrect value.
|
||||
For example, ``atoi()`` will return 12 when converting "12.5" while the
|
||||
ValueTokenizer class will throw an :cpp:class:`InvalidIntegerException
|
||||
the functionality of ``strtok()`` from the C-library and the latter
|
||||
also includes conversion to different types. Any errors while
|
||||
processing the string in those classes will result in an exception,
|
||||
which can be caught and the error processed as needed. Unlike the
|
||||
C-library functions ``atoi()``, ``atof()``, ``strtol()``, or
|
||||
``strtod()`` the conversion will check if the converted text is a
|
||||
valid integer or floating point number and will not silently return an
|
||||
unexpected or incorrect value. For example, ``atoi()`` will return 12
|
||||
when converting "12.5", while the ValueTokenizer class will throw an
|
||||
:cpp:class:`InvalidIntegerException
|
||||
<LAMMPS_NS::InvalidIntegerException>` if
|
||||
:cpp:func:`ValueTokenizer::next_int()
|
||||
<LAMMPS_NS::ValueTokenizer::next_int>` is called on the same string.
|
||||
|
||||
Requesting and accessing neighbor lists
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
LAMMPS uses Verlet-style neighbor lists to avoid having to loop over
|
||||
*all* pairs of *all* atoms when computing pairwise properties with a
|
||||
cutoff (e.g. pairwise forces or radial distribution functions). There
|
||||
are three main algorithms that can be selected by the :doc:`neighbor
|
||||
command <neighbor>`: `bin` (the default, uses binning to achieve linear
|
||||
scaling with system size), `nsq` (without binning, quadratic scaling),
|
||||
`multi` (with binning, optimized for varying cutoffs or polydisperse
|
||||
granular particles). In addition to how the neighbor lists are
|
||||
constructed a number of different variants of neighbor lists need to be
|
||||
created (e.g. "full" or "half") for different purposes and styles and
|
||||
those may be required in every time step ("perpetual") or on some steps
|
||||
("occasional").
|
||||
|
||||
The neighbor list creation is managed by the ``Neighbor`` class.
|
||||
Individual classes can obtain a neighbor list by creating an instance of
|
||||
a ``NeighRequest`` class which is stored in a list inside the
|
||||
``Neighbor`` class. The ``Neighbor`` class will then analyze the
|
||||
various requests and apply optimizations where neighbor lists that have
|
||||
the same settings will be created only once and then copied, or a list
|
||||
may be constructed by processing a neighbor list from a different
|
||||
request that is a superset of the requested list. The neighbor list
|
||||
build is then :doc:`processed in parallel <Developer_par_neigh>`.
|
||||
|
||||
The most commonly required neighbor list is a so-called "half" neighbor
|
||||
list, where each pair of atoms is listed only once (except when the
|
||||
:doc:`newton command setting <newton>` for pair is off; in that case
|
||||
pairs straddling sub-domains or periodic boundaries will be listed twice).
|
||||
Thus these are the default settings when a neighbor list request is created in:
|
||||
|
||||
.. code-block:: C++
|
||||
|
||||
void Pair::init_style()
|
||||
{
|
||||
neighbor->add_request(this);
|
||||
}
|
||||
|
||||
void Pair::init_list(int /*id*/, NeighList *ptr)
|
||||
{
|
||||
list = ptr;
|
||||
}
|
||||
|
||||
The ``this`` pointer argument is required so the neighbor list code can
|
||||
access the requesting class instance to store the assembled neighbor
|
||||
list with that instance by calling its ``init_list()`` member function.
|
||||
The optional second argument (omitted here) contains a bitmask of flags
|
||||
that determines the kind of neighbor list requested. The default value
|
||||
used here asks for a perpetual "half" neighbor list.
|
||||
|
||||
Non-default values of the second argument need to be used to adjust a
|
||||
neighbor list request to the specific needs of a style an additional
|
||||
request flag is needed. The :doc:`tersoff <pair_tersoff>` pair style,
|
||||
for example, needs a "full" neighbor list:
|
||||
|
||||
.. code-block:: C++
|
||||
|
||||
void PairTersoff::init_style()
|
||||
{
|
||||
// [...]
|
||||
neighbor->add_request(this, NeighConst::REQ_FULL);
|
||||
}
|
||||
|
||||
When a pair style supports r-RESPA time integration with different cutoff regions,
|
||||
the request flag may depend on the corresponding r-RESPA settings. Here an example
|
||||
from pair style lj/cut:
|
||||
|
||||
.. code-block:: C++
|
||||
|
||||
void PairLJCut::init_style()
|
||||
{
|
||||
int list_style = NeighConst::REQ_DEFAULT;
|
||||
|
||||
if (update->whichflag == 1 && utils::strmatch(update->integrate_style, "^respa")) {
|
||||
auto respa = (Respa *) update->integrate;
|
||||
if (respa->level_inner >= 0) list_style = NeighConst::REQ_RESPA_INOUT;
|
||||
if (respa->level_middle >= 0) list_style = NeighConst::REQ_RESPA_ALL;
|
||||
}
|
||||
neighbor->add_request(this, list_style);
|
||||
// [...]
|
||||
}
|
||||
|
||||
Granular pair styles need neighbor lists based on particle sizes and not cutoff
|
||||
and also may require to have the list of previous neighbors available ("history").
|
||||
For example with:
|
||||
|
||||
.. code-block:: C++
|
||||
|
||||
if (use_history) neighbor->add_request(this, NeighConst::REQ_SIZE | NeighConst::REQ_HISTORY);
|
||||
else neighbor->add_request(this, NeighConst::REQ_SIZE);
|
||||
|
||||
In case a class would need to make multiple neighbor list requests with different
|
||||
settings each request can set an id which is then used in the corresponding
|
||||
``init_list()`` function to assign it to the suitable pointer variable. This is
|
||||
done for example by the :doc:`pair style meam <pair_meam>`:
|
||||
|
||||
.. code-block:: C++
|
||||
|
||||
void PairMEAM::init_style()
|
||||
{
|
||||
// [...]
|
||||
neighbor->add_request(this, NeighConst::REQ_FULL)->set_id(1);
|
||||
neighbor->add_request(this)->set_id(2);
|
||||
}
|
||||
void PairMEAM::init_list(int id, NeighList *ptr)
|
||||
{
|
||||
if (id == 1) listfull = ptr;
|
||||
else if (id == 2) listhalf = ptr;
|
||||
}
|
||||
|
||||
Fixes may require a neighbor list that is only build occasionally (or
|
||||
just once) and this can also be indicated by a flag. As an example here
|
||||
is the request from the ``FixPeriNeigh`` class which is created
|
||||
internally by :doc:`Peridynamics pair styles <pair_peri>`:
|
||||
|
||||
.. code-block:: C++
|
||||
|
||||
neighbor->add_request(this, NeighConst::REQ_FULL | NeighConst::REQ_OCCASIONAL);
|
||||
|
||||
It is also possible to request a neighbor list that uses a different cutoff
|
||||
than what is usually inferred from the pair style settings (largest cutoff of
|
||||
all pair styles plus neighbor list skin). The following is used in the
|
||||
:doc:`compute rdf <compute_rdf>` command implementation:
|
||||
|
||||
.. code-block:: C++
|
||||
|
||||
if (cutflag)
|
||||
neighbor->add_request(this, NeighConst::REQ_OCCASIONAL)->set_cutoff(mycutneigh);
|
||||
else
|
||||
neighbor->add_request(this, NeighConst::REQ_OCCASIONAL);
|
||||
|
||||
The neighbor list request function has a slightly different set of arguments
|
||||
when created by a command style. In this case the neighbor list is
|
||||
*always* an occasional neighbor list, so that flag is not needed. However
|
||||
for printing the neighbor list summary the name of the requesting command
|
||||
should be set. Below is the request from the :doc:`delete atoms <delete_atoms>`
|
||||
command:
|
||||
|
||||
.. code-block:: C++
|
||||
|
||||
neighbor->add_request(this, "delete_atoms", NeighConst::REQ_FULL);
|
||||
|
||||
Fix contributions to instantaneous energy, virial, and cumulative energy
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
|
||||
@ -252,12 +252,6 @@ follows:
|
||||
- The Timer class logs timing information, output at the end
|
||||
of a run.
|
||||
|
||||
.. TODO section on "Spatial decomposition and parallel operations"
|
||||
.. diagram of 3d processor grid, brick vs. tiled. local vs. ghost
|
||||
.. atoms, 6-way communication with pack/unpack functions,
|
||||
.. PBC as part of the communication, forward and reverse communication
|
||||
.. rendezvous communication, ring communication.
|
||||
|
||||
.. TODO section on "Fixes, Computes, and Variables"
|
||||
.. how and when data is computed and provided and how it is
|
||||
.. referenced. flags in Fix/Compute/Variable classes tell
|
||||
|
||||
@ -8,11 +8,20 @@ without recompiling LAMMPS. The functionality for this and the
|
||||
|
||||
Plugins use the operating system's capability to load dynamic shared
|
||||
object (DSO) files in a way similar shared libraries and then reference
|
||||
specific functions in those DSOs. Any DSO file with plugins has to include
|
||||
an initialization function with a specific name, "lammpsplugin_init", that
|
||||
has to follow specific rules described below. When loading the DSO with
|
||||
the "plugin" command, this function is looked up and called and will then
|
||||
register the contained plugin(s) with LAMMPS.
|
||||
specific functions in those DSOs. Any DSO file with plugins has to
|
||||
include an initialization function with a specific name,
|
||||
"lammpsplugin_init", that has to follow specific rules described below.
|
||||
When loading the DSO with the "plugin" command, this function is looked
|
||||
up and called and will then register the contained plugin(s) with
|
||||
LAMMPS.
|
||||
|
||||
When the environment variable ``LAMMPS_PLUGIN_PATH`` is set, then LAMMPS
|
||||
will search the directory (or directories) listed in this path for files
|
||||
with names that end in ``plugin.so`` (e.g. ``helloplugin.so``) and will
|
||||
try to load the contained plugins automatically at start-up. For
|
||||
plugins that are loaded this way, the behavior of LAMMPS should be
|
||||
identical to a binary where the corresponding code was compiled in
|
||||
statically as a package.
|
||||
|
||||
From the programmer perspective this can work because of the object
|
||||
oriented design of LAMMPS where all pair style commands are derived from
|
||||
@ -65,19 +74,18 @@ Members of ``lammpsplugin_t``
|
||||
* - handle
|
||||
- Pointer to the open DSO file handle
|
||||
|
||||
Only one of the three alternate creator entries can be used at a time
|
||||
and which of those is determined by the style of plugin. The
|
||||
"creator.v1" element is for factory functions of supported styles
|
||||
computing forces (i.e. command, pair, bond, angle, dihedral, or
|
||||
improper styles) and the function takes as single argument the pointer
|
||||
to the LAMMPS instance. The factory function is cast to the
|
||||
``lammpsplugin_factory1`` type before assignment. The "creator.v2"
|
||||
element is for factory functions creating an instance of a fix, compute,
|
||||
or region style and takes three arguments: a pointer to the LAMMPS
|
||||
instance, an integer with the length of the argument list and a ``char
|
||||
**`` pointer to the list of arguments. The factory function pointer
|
||||
needs to be cast to the ``lammpsplugin_factory2`` type before
|
||||
assignment.
|
||||
Only one of the two alternate creator entries can be used at a time and
|
||||
which of those is determined by the style of plugin. The "creator.v1"
|
||||
element is for factory functions of supported styles computing forces
|
||||
(i.e. pair, bond, angle, dihedral, or improper styles) or command styles
|
||||
and the function takes as single argument the pointer to the LAMMPS
|
||||
instance. The factory function is cast to the ``lammpsplugin_factory1``
|
||||
type before assignment. The "creator.v2" element is for factory
|
||||
functions creating an instance of a fix, compute, or region style and
|
||||
takes three arguments: a pointer to the LAMMPS instance, an integer with
|
||||
the length of the argument list and a ``char **`` pointer to the list of
|
||||
arguments. The factory function pointer needs to be cast to the
|
||||
``lammpsplugin_factory2`` type before assignment.
|
||||
|
||||
Pair style example
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
@ -249,3 +257,8 @@ by ``#ifdef PAIR_CLASS`` is not needed, since the mapping of the class
|
||||
name to the style name is done by the plugin registration function with
|
||||
the information from the ``lammpsplugin_t`` struct. It may be included
|
||||
in case the new code is intended to be later included in LAMMPS directly.
|
||||
|
||||
A plugin may be registered under an existing style name. In that case
|
||||
the plugin will override the existing code. This can be used to modify
|
||||
the behavior of existing styles or to debug new versions of them without
|
||||
having to re-compile or re-install all of LAMMPS.
|
||||
|
||||
@ -396,7 +396,7 @@ A typical code segment would look like this:
|
||||
|
||||
----------
|
||||
|
||||
.. file-reader-classes:
|
||||
.. _file-reader-classes:
|
||||
|
||||
File reader classes
|
||||
-------------------
|
||||
|
||||
@ -21,7 +21,8 @@ YAML
|
||||
print """---
|
||||
timestep: $(step)
|
||||
pe: $(pe)
|
||||
ke: $(ke)""" file current_state.yaml screen no
|
||||
ke: $(ke)
|
||||
...""" file current_state.yaml screen no
|
||||
|
||||
.. code-block:: yaml
|
||||
:caption: current_state.yaml
|
||||
@ -51,6 +52,58 @@ JSON
|
||||
"ke": 2.4962152903997174569
|
||||
}
|
||||
|
||||
YAML format thermo_style output
|
||||
===============================
|
||||
|
||||
.. versionadded:: 24Mar2022
|
||||
|
||||
LAMMPS supports the thermo style "yaml" and for "custom" style
|
||||
thermodynamic output the format can be changed to YAML with
|
||||
:doc:`thermo_modify line yaml <thermo_modify>`. This will produce a
|
||||
block of output in a compact YAML format - one "document" per run - of
|
||||
the following style:
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
---
|
||||
keywords: [Step, Temp, E_pair, E_mol, TotEng, Press, ]
|
||||
data:
|
||||
- [100, 0.757453103239935, -5.7585054860159, 0, -4.62236133677021, 0.207261053624721, ]
|
||||
- [110, 0.759322359337036, -5.7614668389562, 0, -4.62251889318624, 0.194314975399602, ]
|
||||
- [120, 0.759372342462676, -5.76149365656489, 0, -4.62247073844943, 0.191600048851267, ]
|
||||
- [130, 0.756833027516501, -5.75777334823494, 0, -4.62255928350835, 0.208792327853067, ]
|
||||
...
|
||||
|
||||
This data can be extracted and parsed from a log file using python with:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
import re, yaml
|
||||
|
||||
docs = ""
|
||||
with open("log.lammps") as f:
|
||||
for line in f:
|
||||
m = re.search(r"^(keywords:.*$|data:$|---$|\.\.\.$| - \[.*\]$)", line)
|
||||
if m: docs += m.group(0) + '\n'
|
||||
|
||||
thermo = list(yaml.load_all(docs, Loader=yaml.SafeLoader))
|
||||
|
||||
print("Number of runs: ", len(thermo))
|
||||
print(thermo[1]['keywords'][4], ' = ', thermo[1]['data'][2][4])
|
||||
|
||||
After loading the YAML data, `thermo` is a list containing a dictionary
|
||||
for each "run" where the tag "keywords" maps to the list of thermo
|
||||
header strings and the tag "data" has a list of lists where the outer
|
||||
list represents the lines of output and the inner list the values of the
|
||||
columns matching the header keywords for that step. The second print()
|
||||
command for example will print the header string for the fifth keyword
|
||||
of the second run and the corresponding value for the third output line
|
||||
of that run:
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
Number of runs: 2
|
||||
TotEng = -4.62140097780047
|
||||
|
||||
Writing continuous data during a simulation
|
||||
===========================================
|
||||
|
||||
@ -165,5 +165,4 @@ changed. How to do this depends on the build system you are using.
|
||||
URL "git@github.com:lammps/lammps.git".
|
||||
|
||||
The LAMMPS GitHub project is currently managed by Axel Kohlmeyer
|
||||
(Temple U, akohlmey at gmail.com) and Richard Berger (Temple U,
|
||||
richard.berger at temple.edu).
|
||||
(Temple U, akohlmey at gmail.com).
|
||||
|
||||
@ -1,16 +1,17 @@
|
||||
Modifying & extending LAMMPS
|
||||
****************************
|
||||
|
||||
LAMMPS is designed in a modular fashion so as to be easy to modify and
|
||||
LAMMPS is designed in a modular fashion and to be easy to modify or
|
||||
extend with new functionality. In fact, about 95% of its source code
|
||||
is add-on files. These doc pages give basic instructions on how to do
|
||||
this.
|
||||
are optional. The following pages give basic instructions on what
|
||||
is required when adding new styles of different kinds to LAMMPS.
|
||||
|
||||
If you add a new feature to LAMMPS and think it will be of interest to
|
||||
general users, we encourage you to submit it for inclusion in LAMMPS
|
||||
as a pull request on our `GitHub site <https://github.com/lammps/lammps>`_,
|
||||
after reading about :doc:`how to prepare your code for submission <Modify_contribute>`
|
||||
and :doc:`the style requirements and recommendations <Modify_style>`.
|
||||
If you add a new feature to LAMMPS and think it will be of general
|
||||
interest to other users, we encourage you to submit it for inclusion in
|
||||
LAMMPS as a pull request on our `GitHub site
|
||||
<https://github.com/lammps/lammps>`_, after reading about :doc:`how to
|
||||
prepare your code for submission <Modify_contribute>` and :doc:`the
|
||||
style requirements and recommendations <Modify_style>`.
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
@ -1,13 +1,14 @@
|
||||
Overview
|
||||
========
|
||||
|
||||
The best way to add a new feature to LAMMPS is to find a similar
|
||||
feature and look at the corresponding source and header files to figure
|
||||
out what it does. You will need some knowledge of C++ to be able to
|
||||
understand the high-level structure of LAMMPS and its class
|
||||
organization, but functions (class methods) that do actual
|
||||
computations are written in vanilla C-style code and operate on simple
|
||||
C-style data structures (vectors and arrays).
|
||||
The best way to add a new feature to LAMMPS is to find a similar feature
|
||||
and look at the corresponding source and header files to figure out what
|
||||
it does. You will need some knowledge of C++ to be able to understand
|
||||
the high-level structure of LAMMPS and its class organization, but
|
||||
functions (class methods) that do actual computations are mostly written
|
||||
in C-style code and operate on simple C-style data structures (vectors
|
||||
and arrays). A high-level overview of the programming style choices in
|
||||
LAMMPS is :doc:`given elsewhere <Developer_code_design>`.
|
||||
|
||||
Most of the new features described on the :doc:`Modify <Modify>` doc
|
||||
page require you to write a new C++ derived class (except for exceptions
|
||||
|
||||
@ -250,9 +250,11 @@ keep the code readable to programmers that have limited C++ programming
|
||||
experience. C++ constructs are acceptable when they help improving the
|
||||
readability and reliability of the code, e.g. when using the
|
||||
`std::string` class instead of manipulating pointers and calling the
|
||||
string functions of the C library. In addition and number of convenient
|
||||
:doc:`utility functions and classes <Developer_utils>` for recurring
|
||||
tasks are provided.
|
||||
string functions of the C library. In addition a collection of
|
||||
convenient :doc:`utility functions and classes <Developer_utils>` for
|
||||
recurring tasks and a collection of
|
||||
:doc:`platform neutral functions <Developer_platform>` for improved
|
||||
portability are provided.
|
||||
|
||||
Included Fortran code has to be compatible with the Fortran 2003
|
||||
standard. Python code must be compatible with Python 3.5. Large parts
|
||||
@ -261,10 +263,11 @@ compatible with Python 2.7. Compatibility with Python 2.7 is
|
||||
desirable, but compatibility with Python 3.5 is **required**.
|
||||
|
||||
Compatibility with these older programming language standards is very
|
||||
important to maintain portability, especially with HPC cluster
|
||||
environments, which tend to be running older software stacks and LAMMPS
|
||||
users may be required to use those older tools or not have the option to
|
||||
install newer compilers.
|
||||
important to maintain portability and availability of LAMMPS on many
|
||||
platforms. This applies especially to HPC cluster environments, which
|
||||
tend to be running older software stacks and LAMMPS users may be
|
||||
required to use those older tools for access to advanced hardware
|
||||
features or not have the option to install newer compilers or libraries.
|
||||
|
||||
Programming conventions (varied)
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@ -1,27 +1,54 @@
|
||||
Thermodynamic output options
|
||||
============================
|
||||
|
||||
There is one class that computes and prints thermodynamic information
|
||||
to the screen and log file; see the file thermo.cpp.
|
||||
The ``Thermo`` class computes and prints thermodynamic information to
|
||||
the screen and log file; see the files ``thermo.cpp`` and ``thermo.h``.
|
||||
|
||||
There are two styles defined in thermo.cpp: "one" and "multi". There
|
||||
is also a flexible "custom" style which allows the user to explicitly
|
||||
list keywords for quantities to print when thermodynamic info is
|
||||
output. See the :doc:`thermo_style <thermo_style>` command for a list
|
||||
of defined quantities.
|
||||
There are four styles defined in ``thermo.cpp``: "one", "multi", "yaml",
|
||||
and "custom". The "custom" style allows the user to explicitly list
|
||||
keywords for individual quantities to print when thermodynamic output is
|
||||
generated. The others have a fixed list of keywords. See the
|
||||
:doc:`thermo_style <thermo_style>` command for a list of available
|
||||
quantities. The formatting of the "custom" style defaults to the "one"
|
||||
style, but can be adapted using :doc:`thermo_modify line <thermo_modify>`.
|
||||
|
||||
The thermo styles (one, multi, etc) are simply lists of keywords.
|
||||
Adding a new style thus only requires defining a new list of keywords.
|
||||
Search for the word "customize" with references to "thermo style" in
|
||||
thermo.cpp to see the two locations where code will need to be added.
|
||||
The thermo styles (one, multi, etc) are defined by lists of keywords
|
||||
with associated formats for integer and floating point numbers and
|
||||
identified but an enumerator constant. Adding a new style thus mostly
|
||||
requires defining a new list of keywords and the associated formats and
|
||||
then inserting the required output processing where the enumerators are
|
||||
identified. Search for the word "CUSTOMIZATION" with references to
|
||||
"thermo style" in the ``thermo.cpp`` file to see the locations where
|
||||
code will need to be added. The member function ``Thermo::header()``
|
||||
prints output at the very beginning of a thermodynamic output block and
|
||||
can be used to print column headers or other front matter. The member
|
||||
function ``Thermo::footer()`` prints output at the end of a
|
||||
thermodynamic output block. The formatting of the output is done by
|
||||
assembling a "line" (which may span multiple lines if the style inserts
|
||||
newline characters ("\n" as in the "multi" style).
|
||||
|
||||
New keywords can also be added to thermo.cpp to compute new quantities
|
||||
for output. Search for the word "customize" with references to
|
||||
"keyword" in thermo.cpp to see the several locations where code will
|
||||
need to be added.
|
||||
New thermodynamic keywords can also be added to ``thermo.cpp`` to
|
||||
compute new quantities for output. Search for the word "CUSTOMIZATION"
|
||||
with references to "keyword" in ``thermo.cpp`` to see the several
|
||||
locations where code will need to be added. Effectively, you need to
|
||||
define a member function that computes the property, add an if statement
|
||||
in ``Thermo::parse_fields()`` where the corresponding header string for
|
||||
the keyword and the function pointer is registered by calling the
|
||||
``Thermo::addfield()`` method, and add an if statement in
|
||||
``Thermo::evaluate_keyword()`` which is called from the ``Variable``
|
||||
class when a thermo keyword is encountered.
|
||||
|
||||
Note that the :doc:`thermo_style custom <thermo_style>` command already allows
|
||||
for thermo output of quantities calculated by :doc:`fixes <fix>`,
|
||||
:doc:`computes <compute>`, and :doc:`variables <variable>`. Thus, it may
|
||||
be simpler to compute what you wish via one of those constructs, than
|
||||
by adding a new keyword to the thermo command.
|
||||
.. note::
|
||||
|
||||
The third argument to ``Thermo::addfield()`` is a flag indicating
|
||||
whether the function for the keyword computes a floating point
|
||||
(FLOAT), regular integer (INT), or big integer (BIGINT) value. This
|
||||
information is used for formatting the thermodynamic output. Inside
|
||||
the function the result must then be stored either in the ``dvalue``,
|
||||
``ivalue`` or ``bivalue`` member variable, respectively.
|
||||
|
||||
Since the :doc:`thermo_style custom <thermo_style>` command allows to
|
||||
use output of quantities calculated by :doc:`fixes <fix>`,
|
||||
:doc:`computes <compute>`, and :doc:`variables <variable>`, it may often
|
||||
be simpler to compute what you wish via one of those constructs, rather
|
||||
than by adding a new keyword to the thermo_style command.
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
Variable options
|
||||
================
|
||||
|
||||
There is one class that computes and stores :doc:`variable <variable>`
|
||||
information in LAMMPS; see the file variable.cpp. The value
|
||||
The ``Variable`` class computes and stores :doc:`variable <variable>`
|
||||
information in LAMMPS; see the file ``variable.cpp``. The value
|
||||
associated with a variable can be periodically printed to the screen
|
||||
via the :doc:`print <print>`, :doc:`fix print <fix_print>`, or
|
||||
:doc:`thermo_style custom <thermo_style>` commands. Variables of style
|
||||
@ -19,21 +19,22 @@ of arguments:
|
||||
compute values = c_mytemp[0], c_thermo_press[3], ...
|
||||
|
||||
Adding keywords for the :doc:`thermo_style custom <thermo_style>`
|
||||
command (which can then be accessed by variables) is discussed on the
|
||||
:doc:`Modify thermo <Modify_thermo>` doc page.
|
||||
command (which can then be accessed by variables) is discussed in the
|
||||
:doc:`Modify thermo <Modify_thermo>` documentation.
|
||||
|
||||
Adding a new math function of one or two arguments can be done by
|
||||
editing one section of the Variable::evaluate() method. Search for
|
||||
editing one section of the ``Variable::evaluate()`` method. Search for
|
||||
the word "customize" to find the appropriate location.
|
||||
|
||||
Adding a new group function can be done by editing one section of the
|
||||
Variable::evaluate() method. Search for the word "customize" to find
|
||||
the appropriate location. You may need to add a new method to the
|
||||
Group class as well (see the group.cpp file).
|
||||
``Variable::evaluate()`` method. Search for the word "customize" to
|
||||
find the appropriate location. You may need to add a new method to the
|
||||
Group class as well (see the ``group.cpp`` file).
|
||||
|
||||
Accessing a new atom-based vector can be done by editing one section
|
||||
of the Variable::evaluate() method. Search for the word "customize"
|
||||
to find the appropriate location.
|
||||
|
||||
Adding new :doc:`compute styles <compute>` (whose calculated values can
|
||||
then be accessed by variables) is discussed on the :doc:`Modify compute <Modify_compute>` doc page.
|
||||
then be accessed by variables) is discussed in the :doc:`Modify compute
|
||||
<Modify_compute>` documentation.
|
||||
|
||||
@ -9,7 +9,7 @@ gives links to documentation, example scripts, and pictures/movies (if
|
||||
available) that illustrate use of the package.
|
||||
|
||||
The majority of packages can be included in a LAMMPS build with a
|
||||
single setting (``-D PGK_<NAME>=on`` for CMake) or command
|
||||
single setting (``-D PKG_<NAME>=on`` for CMake) or command
|
||||
(``make yes-<name>`` for make). See the :doc:`Build package <Build_package>`
|
||||
page for more info. A few packages may require additional steps;
|
||||
this is indicated in the descriptions below. The :doc:`Build extras <Build_extras>`
|
||||
@ -2181,6 +2181,11 @@ A :doc:`plugin <plugin>` command that can load and unload several
|
||||
kind of styles in LAMMPS from shared object files at runtime without
|
||||
having to recompile and relink LAMMPS.
|
||||
|
||||
When the environment variable ``LAMMPS_PLUGIN_PATH`` is set, then LAMMPS
|
||||
will search the directory (or directories) listed in this path for files
|
||||
with names that end in ``plugin.so`` (e.g. ``helloplugin.so``) and will
|
||||
try to load the contained plugins automatically at start-up.
|
||||
|
||||
**Authors:** Axel Kohlmeyer (Temple U)
|
||||
|
||||
**Supporting info:**
|
||||
|
||||
@ -25,11 +25,10 @@ Installing the LAMMPS Python Module and Shared Library
|
||||
======================================================
|
||||
|
||||
Making LAMMPS usable within Python and vice versa requires putting the
|
||||
LAMMPS Python package (``lammps``) into a location where the
|
||||
Python interpreter can find it and installing the LAMMPS shared library
|
||||
into a folder that the dynamic loader searches or inside of the installed
|
||||
``lammps`` package folder. There are multiple ways to achieve
|
||||
this.
|
||||
LAMMPS Python package (``lammps``) into a location where the Python
|
||||
interpreter can find it and installing the LAMMPS shared library into a
|
||||
folder that the dynamic loader searches or inside of the installed
|
||||
``lammps`` package folder. There are multiple ways to achieve this.
|
||||
|
||||
#. Do a full LAMMPS installation of libraries, executables, selected
|
||||
headers, documentation (if enabled), and supporting files (only
|
||||
@ -159,38 +158,52 @@ this.
|
||||
|
||||
make install-python
|
||||
|
||||
This will try to install (only) the shared library and the Python
|
||||
package into a system folder and if that fails (due to missing
|
||||
write permissions) will instead do the installation to a user
|
||||
folder under ``$HOME/.local``. For a system-wide installation you
|
||||
This will try to build a so-called (binary) 'wheel', a compressed
|
||||
binary python package and then install it with the python package
|
||||
manager 'pip'. Installation will be attempted into a system-wide
|
||||
``site-packages`` folder and if that fails into the corresponding
|
||||
folder in the user's home directory. For a system-wide installation you
|
||||
would have to gain superuser privilege, e.g. though ``sudo``
|
||||
|
||||
+------------------------+-----------------------------------------------------------------+-------------------------------------------------------------+
|
||||
+------------------------+----------------------------------------------------------+-------------------------------------------------------------+
|
||||
| File | Location | Notes |
|
||||
+========================+=================================================================+=============================================================+
|
||||
| LAMMPS Python package | * ``$HOME/.local/lib/pythonX.Y/site-packages/lammps`` (32bit) | ``X.Y`` depends on the installed Python version |
|
||||
| | * ``$HOME/.local/lib64/pythonX.Y/site-packages/lammps`` (64bit) | |
|
||||
+------------------------+-----------------------------------------------------------------+-------------------------------------------------------------+
|
||||
| LAMMPS shared library | * ``$HOME/.local/lib/pythonX.Y/site-packages/lammps`` (32bit) | ``X.Y`` depends on the installed Python version |
|
||||
| | * ``$HOME/.local/lib64/pythonX.Y/site-packages/lammps`` (64bit) | |
|
||||
+------------------------+-----------------------------------------------------------------+-------------------------------------------------------------+
|
||||
+========================+==========================================================+=============================================================+
|
||||
| LAMMPS Python package | * ``$HOME/.local/lib/pythonX.Y/site-packages/lammps`` | ``X.Y`` depends on the installed Python version |
|
||||
+------------------------+----------------------------------------------------------+-------------------------------------------------------------+
|
||||
| LAMMPS shared library | * ``$HOME/.local/lib/pythonX.Y/site-packages/lammps`` | ``X.Y`` depends on the installed Python version |
|
||||
+------------------------+----------------------------------------------------------+-------------------------------------------------------------+
|
||||
|
||||
For a system-wide installation those folders would then become.
|
||||
|
||||
+------------------------+---------------------------------------------------------+-------------------------------------------------------------+
|
||||
+------------------------+-------------------------------------------------+-------------------------------------------------------------+
|
||||
| File | Location | Notes |
|
||||
+========================+=========================================================+=============================================================+
|
||||
| LAMMPS Python package | * ``/usr/lib/pythonX.Y/site-packages/lammps`` (32bit) | ``X.Y`` depends on the installed Python version |
|
||||
| | * ``/usr/lib64/pythonX.Y/site-packages/lammps`` (64bit) | |
|
||||
+------------------------+---------------------------------------------------------+-------------------------------------------------------------+
|
||||
| LAMMPS shared library | * ``/usr/lib/pythonX.Y/site-packages/lammps`` (32bit) | ``X.Y`` depends on the installed Python version |
|
||||
| | * ``/usr/lib64/pythonX.Y/site-packages/lammps`` (64bit) | |
|
||||
+------------------------+---------------------------------------------------------+-------------------------------------------------------------+
|
||||
+========================+=================================================+=============================================================+
|
||||
| LAMMPS Python package | * ``/usr/lib/pythonX.Y/site-packages/lammps`` | ``X.Y`` depends on the installed Python version |
|
||||
+------------------------+-------------------------------------------------+-------------------------------------------------------------+
|
||||
| LAMMPS shared library | * ``/usr/lib/pythonX.Y/site-packages/lammps`` | ``X.Y`` depends on the installed Python version |
|
||||
+------------------------+-------------------------------------------------+-------------------------------------------------------------+
|
||||
|
||||
No environment variables need to be set for those, as those
|
||||
folders are searched by default by Python or the LAMMPS Python
|
||||
package.
|
||||
|
||||
.. versionchanged:: 24Mar2022
|
||||
|
||||
.. note::
|
||||
|
||||
If there is an existing installation of the LAMMPS python
|
||||
module, ``make install-python`` will try to update it.
|
||||
However, that will fail if the older version of the module
|
||||
was installed by LAMMPS versions until 17Feb2022. Those
|
||||
were using the distutils package, which does not create a
|
||||
"manifest" that allows a clean uninstall. The ``make
|
||||
install-python`` command will always produce a
|
||||
lammps-<version>-<python>-<abi>-<os>-<arch>.whl file (the
|
||||
'wheel'). And this file can be later installed directly with
|
||||
``python -m pip install <wheel file>.whl`` without having to
|
||||
type ``make install-python`` again and repeating the build
|
||||
step, too.
|
||||
|
||||
For the traditional make process you can override the python
|
||||
version to version x.y when calling ``make`` with
|
||||
``PYTHON=pythonX.Y``. For a CMake based compilation this choice
|
||||
@ -201,16 +214,12 @@ this.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ python install.py -p <python package> -l <shared library> -v <version.h file> [-d <pydir>]
|
||||
$ python install.py -p <python package> -l <shared library> [-n]
|
||||
|
||||
* The ``-p`` flag points to the ``lammps`` Python package folder to be installed,
|
||||
* the ``-l`` flag points to the LAMMPS shared library file to be installed,
|
||||
* the ``-v`` flag points to the ``version.h`` file in the LAMMPS source
|
||||
* and the optional ``-d`` flag to a custom (legacy) installation folder
|
||||
|
||||
If you use a legacy installation folder, you will need to set your
|
||||
``PYTHONPATH`` and ``LD_LIBRARY_PATH`` (and/or ``DYLD_LIBRARY_PATH``) environment
|
||||
variables accordingly as explained in the description for "In place use".
|
||||
* and the optional ``-n`` instructs the script to only build a wheel file
|
||||
but not attempt to install it.
|
||||
|
||||
.. tab:: Virtual environment
|
||||
|
||||
@ -257,32 +266,29 @@ this.
|
||||
package and the shared library file are installed into the
|
||||
following locations:
|
||||
|
||||
+------------------------+-----------------------------------------------------------------+-------------------------------------------------------------+
|
||||
+------------------------+--------------------------------------------------------+-------------------------------------------------------------+
|
||||
| File | Location | Notes |
|
||||
+========================+=================================================================+=============================================================+
|
||||
| LAMMPS Python Module | * ``$VIRTUAL_ENV/lib/pythonX.Y/site-packages/lammps`` (32bit) | ``X.Y`` depends on the installed Python version |
|
||||
| | * ``$VIRTUAL_ENV/lib64/pythonX.Y/site-packages/lammps`` (64bit) | |
|
||||
+------------------------+-----------------------------------------------------------------+-------------------------------------------------------------+
|
||||
| LAMMPS shared library | * ``$VIRTUAL_ENV/lib/pythonX.Y/site-packages/lammps`` (32bit) | ``X.Y`` depends on the installed Python version |
|
||||
| | * ``$VIRTUAL_ENV/lib64/pythonX.Y/site-packages/lammps`` (64bit) | |
|
||||
+------------------------+-----------------------------------------------------------------+-------------------------------------------------------------+
|
||||
+========================+========================================================+=============================================================+
|
||||
| LAMMPS Python Module | * ``$VIRTUAL_ENV/lib/pythonX.Y/site-packages/lammps`` | ``X.Y`` depends on the installed Python version |
|
||||
+------------------------+--------------------------------------------------------+-------------------------------------------------------------+
|
||||
| LAMMPS shared library | * ``$VIRTUAL_ENV/lib/pythonX.Y/site-packages/lammps`` | ``X.Y`` depends on the installed Python version |
|
||||
+------------------------+--------------------------------------------------------+-------------------------------------------------------------+
|
||||
|
||||
If you do a full installation (CMake only) with "install", this
|
||||
leads to the following installation locations:
|
||||
|
||||
+------------------------+-----------------------------------------------------------------+-------------------------------------------------------------+
|
||||
+------------------------+--------------------------------------------------------+-------------------------------------------------------------+
|
||||
| File | Location | Notes |
|
||||
+========================+=================================================================+=============================================================+
|
||||
| LAMMPS Python Module | * ``$VIRTUAL_ENV/lib/pythonX.Y/site-packages/lammps`` (32bit) | ``X.Y`` depends on the installed Python version |
|
||||
| | * ``$VIRTUAL_ENV/lib64/pythonX.Y/site-packages/lammps`` (64bit) | |
|
||||
+------------------------+-----------------------------------------------------------------+-------------------------------------------------------------+
|
||||
+========================+========================================================+=============================================================+
|
||||
| LAMMPS Python Module | * ``$VIRTUAL_ENV/lib/pythonX.Y/site-packages/lammps`` | ``X.Y`` depends on the installed Python version |
|
||||
+------------------------+--------------------------------------------------------+-------------------------------------------------------------+
|
||||
| LAMMPS shared library | * ``$VIRTUAL_ENV/lib/`` (32bit) | Set shared loader environment variable to this path |
|
||||
| | * ``$VIRTUAL_ENV/lib64/`` (64bit) | (see below for more info on this) |
|
||||
+------------------------+-----------------------------------------------------------------+-------------------------------------------------------------+
|
||||
+------------------------+--------------------------------------------------------+-------------------------------------------------------------+
|
||||
| LAMMPS executable | * ``$VIRTUAL_ENV/bin/`` | |
|
||||
+------------------------+-----------------------------------------------------------------+-------------------------------------------------------------+
|
||||
+------------------------+--------------------------------------------------------+-------------------------------------------------------------+
|
||||
| LAMMPS potential files | * ``$VIRTUAL_ENV/share/lammps/potentials/`` | Set ``LAMMPS_POTENTIALS`` environment variable to this path |
|
||||
+------------------------+-----------------------------------------------------------------+-------------------------------------------------------------+
|
||||
+------------------------+--------------------------------------------------------+-------------------------------------------------------------+
|
||||
|
||||
In that case you need to modify the ``$HOME/myenv/bin/activate``
|
||||
script in a similar fashion you need to update your
|
||||
|
||||
@ -247,7 +247,6 @@ The individual style names on the :doc:`Commands compute <Commands_compute>` pag
|
||||
* :doc:`pe/tally <compute_tally>` - potential energy between two groups of atoms via the tally callback mechanism
|
||||
* :doc:`plasticity/atom <compute_plasticity_atom>` - Peridynamic plasticity for each atom
|
||||
* :doc:`pressure <compute_pressure>` - total pressure and pressure tensor
|
||||
* :doc:`pressure/cylinder <compute_pressure_cylinder>` - pressure tensor in cylindrical coordinates
|
||||
* :doc:`pressure/uef <compute_pressure_uef>` - pressure tensor in the reference frame of an applied flow field
|
||||
* :doc:`property/atom <compute_property_atom>` - convert atom attributes to per-atom vectors/arrays
|
||||
* :doc:`property/chunk <compute_property_chunk>` - extract various per-chunk attributes
|
||||
@ -290,8 +289,11 @@ The individual style names on the :doc:`Commands compute <Commands_compute>` pag
|
||||
* :doc:`sph/t/atom <compute_sph_t_atom>` - per-atom internal temperature of Smooth-Particle Hydrodynamics atoms
|
||||
* :doc:`spin <compute_spin>` - magnetic quantities for a system of atoms having spins
|
||||
* :doc:`stress/atom <compute_stress_atom>` - stress tensor for each atom
|
||||
* :doc:`stress/cartesian <compute_stress_profile>` - stress tensor in cartesian coordinates
|
||||
* :doc:`stress/cylinder <compute_stress_profile>` - stress tensor in cylindrical coordinates
|
||||
* :doc:`stress/mop <compute_stress_mop>` - normal components of the local stress tensor using the method of planes
|
||||
* :doc:`stress/mop/profile <compute_stress_mop>` - profile of the normal components of the local stress tensor using the method of planes
|
||||
* :doc:`stress/spherical <compute_stress_profile>` - stress tensor in spherical coordinates
|
||||
* :doc:`stress/tally <compute_tally>` - stress between two groups of atoms via the tally callback mechanism
|
||||
* :doc:`tdpd/cc/atom <compute_tdpd_cc_atom>` - per-atom chemical concentration of a specified species for each tDPD particle
|
||||
* :doc:`temp <compute_temp>` - temperature of group of atoms
|
||||
|
||||
@ -23,11 +23,10 @@ Examples
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
Define a computation that calculates the translational momentum
|
||||
of a group of particles.
|
||||
|
||||
The momentum of each particles is computed as m v, where m and v are
|
||||
the mass and velocity of the particle.
|
||||
Define a computation that calculates the translational momentum *p*
|
||||
of a group of particles. It is computed as the sum :math:`\vec{p} = \sum_i m_i \cdot \vec{v}_i`
|
||||
over all particles in the compute group, where *m* and *v* are
|
||||
the mass and velocity vector of the particle, respectively.
|
||||
|
||||
Output info
|
||||
"""""""""""
|
||||
|
||||
@ -1,88 +0,0 @@
|
||||
.. index:: compute pressure/cylinder
|
||||
|
||||
compute pressure/cylinder command
|
||||
=================================
|
||||
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
compute ID group-ID pressure/cylinder zlo zhi Rmax bin_width
|
||||
|
||||
* ID, group-ID are documented in :doc:`compute <compute>` command
|
||||
* pressure/cylinder = style name of this compute command
|
||||
* zlo = minimum z-boundary for cylinder
|
||||
* zhi = maximum z-boundary for cylinder
|
||||
* Rmax = maximum radius to perform calculation to
|
||||
* bin_width = width of radial bins to use for calculation
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
compute 1 all pressure/cylinder -10.0 10.0 15.0 0.25
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
Define a computation that calculates the pressure tensor of a system in
|
||||
cylindrical coordinates, as discussed in :ref:`(Addington) <Addington1>`.
|
||||
This is useful for systems with a single axis of rotational symmetry,
|
||||
such as cylindrical micelles or carbon nanotubes. The compute splits the
|
||||
system into radial, cylindrical-shell-type bins of width bin_width,
|
||||
centered at x=0,y=0, and calculates the radial (P_rhorho), azimuthal
|
||||
(P_phiphi), and axial (P_zz) components of the configurational pressure
|
||||
tensor. The local density is also calculated for each bin, so that the
|
||||
true pressure can be recovered as P_kin+P_conf=density\*k\*T+P_conf. The
|
||||
output is a global array with 5 columns; one each for bin radius, local
|
||||
number density, P_rhorho, P_phiphi, and P_zz. The number of rows is
|
||||
governed by the values of Rmax and bin_width. Pressure tensor values are
|
||||
output in pressure units.
|
||||
|
||||
Output info
|
||||
"""""""""""
|
||||
|
||||
This compute calculates a global array with 5 columns and Rmax/bin_width
|
||||
rows. The output columns are: R (distance units), number density (inverse
|
||||
volume units), configurational radial pressure (pressure units),
|
||||
configurational azimuthal pressure (pressure units), and configurational
|
||||
axial pressure (pressure units).
|
||||
|
||||
The values calculated by this compute are
|
||||
"intensive". The pressure values will be in pressure
|
||||
:doc:`units <units>`. The number density values will be in
|
||||
inverse volume :doc:`units <units>`.
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
This compute currently calculates the pressure tensor contributions
|
||||
for pair styles only (i.e. no bond, angle, dihedral, etc. contributions
|
||||
and in the presence of bonded interactions, the result will be incorrect
|
||||
due to exclusions for special bonds) and requires pairwise force
|
||||
calculations not available for most many-body pair styles. K-space
|
||||
calculations are also excluded. Note that this pressure compute outputs
|
||||
the configurational terms only; the kinetic contribution is not included
|
||||
and may be calculated from the number density output by P_kin=density\*k\*T.
|
||||
|
||||
This compute is part of the EXTRA-COMPUTE package. It is only enabled
|
||||
if LAMMPS was built with that package. See the :doc:`Build package <Build_package>` page for more info.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`compute temp <compute_temp>`, :doc:`compute stress/atom <compute_stress_atom>`,
|
||||
:doc:`thermo_style <thermo_style>`,
|
||||
|
||||
Default
|
||||
"""""""
|
||||
|
||||
none
|
||||
|
||||
----------
|
||||
|
||||
.. _Addington1:
|
||||
|
||||
**(Addington)** Addington, Long, Gubbins, J Chem Phys, 149, 084109 (2018).
|
||||
@ -33,7 +33,7 @@ Syntax
|
||||
* R_1, R_2,... = list of cutoff radii, one for each type (distance units)
|
||||
* w_1, w_2,... = list of neighbor weights, one for each type
|
||||
* zero or more keyword/value pairs may be appended
|
||||
* keyword = *rmin0* or *switchflag* or *bzeroflag* or *quadraticflag* or *chem* or *bnormflag* or *wselfallflag*
|
||||
* keyword = *rmin0* or *switchflag* or *bzeroflag* or *quadraticflag* or *chem* or *bnormflag* or *wselfallflag* or *bikflag* or *switchinnerflag*
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
@ -56,6 +56,12 @@ Syntax
|
||||
*wselfallflag* value = *0* or *1*
|
||||
*0* = self-contribution only for element of central atom
|
||||
*1* = self-contribution for all elements
|
||||
*bikflag* value = *0* or *1* (only implemented for compute snap)
|
||||
*0* = per-atom bispectrum descriptors are summed over atoms
|
||||
*1* = per-atom bispectrum descriptors are not summed over atoms
|
||||
*switchinnerflag* values = *rinnerlist* *drinnerlist*
|
||||
*rinnerlist* = *ntypes* values of rinner (distance units)
|
||||
*drinnerlist* = *ntypes* values of drinner (distance units)
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
@ -67,6 +73,7 @@ Examples
|
||||
compute vb all sna/atom 1.4 0.95 6 2.0 1.0
|
||||
compute snap all snap 1.4 0.95 6 2.0 1.0
|
||||
compute snap all snap 1.0 0.99363 6 3.81 3.83 1.0 0.93 chem 2 0 1
|
||||
compute snap all snap 1.0 0.99363 6 3.81 3.83 1.0 0.93 switchinnerflag 1.1 1.3 0.5 0.6
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
@ -296,6 +303,35 @@ This option is typically used in conjunction with the *chem* keyword,
|
||||
and LAMMPS will generate a warning if both *chem* and *bnormflag*
|
||||
are not both set or not both unset.
|
||||
|
||||
The keyword *bikflag* determines whether or not to expand the bispectrum
|
||||
rows of the global array returned by compute snap. If *bikflag* is set
|
||||
to *1* then the bispectrum row, which is typically the per-atom bispectrum
|
||||
descriptors :math:`B_{i,k}` summed over all atoms *i* to produce
|
||||
:math:`B_k`, becomes bispectrum rows equal to the number of atoms. Thus,
|
||||
the resulting bispectrum rows are :math:`B_{i,k}` instead of just
|
||||
:math:`B_k`. In this case, the entries in the final column for these rows
|
||||
are set to zero.
|
||||
|
||||
The keyword *switchinnerflag* activates an additional radial switching
|
||||
function similar to :math:`f_c(r)` above, but acting to switch off
|
||||
smoothly contributions from neighbor atoms at short separation distances.
|
||||
This is useful when SNAP is used in combination with a simple
|
||||
repulsive potential. The keyword is followed by the *ntypes*
|
||||
values for :math:`r_{inner}` and the *ntypes*
|
||||
values for :math:`\Delta r_{inner}`. For a neighbor atom at
|
||||
distance :math:`r`, its contribution is scaled by a multiplicative
|
||||
factor :math:`f_{inner}(r)` defined as follows:
|
||||
|
||||
.. math::
|
||||
|
||||
= & 0, r \leq r_{inner} \\
|
||||
f_{inner}(r) = & \frac{1}{2}(1 - \cos(\pi \frac{r-r_{inner}}{\Delta r_{inner}})), r_{inner} < r \leq r_{inner} + \Delta r_{inner} \\
|
||||
= & 1, r > r_{inner} + \Delta r_{inner}
|
||||
|
||||
The values of :math:`r_{inner}` and :math:`\Delta r_{inner}` are
|
||||
the arithmetic means of the values for the central atom of type I
|
||||
and the neighbor atom of type J.
|
||||
|
||||
.. note::
|
||||
|
||||
If you have a bonded system, then the settings of :doc:`special_bonds
|
||||
|
||||
@ -68,7 +68,19 @@ configurational stress (conf), and/or total stress (total).
|
||||
NOTE 1: The configurational stress is computed considering all pairs of atoms where at least one atom belongs to group group-ID.
|
||||
|
||||
NOTE 2: The local stress does not include any Lennard-Jones tail
|
||||
corrections to the pressure added by the :doc:`pair_modify tail yes <pair_modify>` command, since those are contributions to the global system pressure.
|
||||
corrections to the stress added by the :doc:`pair_modify tail yes <pair_modify>`
|
||||
command, since those are contributions to the global system pressure.
|
||||
|
||||
NOTE 3: The local stress profile generated by compute *stress/mop/profile*
|
||||
is similar to that obtained by compute
|
||||
:doc:`stress/cartesian <compute_stress_profile>`.
|
||||
A key difference
|
||||
is that compute *stress/mop/profile* considers particles
|
||||
crossing a set of planes,
|
||||
while compute *stress/cartesian* computes averages for a set of
|
||||
small volumes. More information
|
||||
on the similarities and differences can be found in
|
||||
:ref:`(Ikeshoji)<Ikeshoji2>`.
|
||||
|
||||
Output info
|
||||
"""""""""""
|
||||
@ -87,7 +99,10 @@ and stress_dir,z.
|
||||
|
||||
The values are in pressure :doc:`units <units>`.
|
||||
|
||||
The values produced by this compute can be accessed by various :doc:`output commands <Howto_output>`. For instance, the results can be written to a file using the :doc:`fix ave/time <fix_ave_time>` command. Please see the example in the examples/PACKAGES/mop folder.
|
||||
The values produced by this compute can be accessed by various :doc:`output commands <Howto_output>`.
|
||||
For instance, the results can be written to a file using the
|
||||
:doc:`fix ave/time <fix_ave_time>` command. Please see the example
|
||||
in the examples/PACKAGES/mop folder.
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
@ -107,7 +122,7 @@ intra-molecular interactions, and long range (kspace) interactions.
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`compute stress/atom <compute_stress_atom>`
|
||||
:doc:`compute stress/atom <compute_stress_atom>`, :doc:`compute pressure <compute_pressure>`, :doc:`compute stress/cartesian <compute_stress_profile>`, :doc:`compute stress/cylinder <compute_stress_profile>`, :doc:`compute stress/spherical <compute_stress_profile>`
|
||||
|
||||
Default
|
||||
"""""""
|
||||
@ -120,3 +135,7 @@ none
|
||||
|
||||
**(Todd)** B. D. Todd, Denis J. Evans, and Peter J. Daivis: "Pressure tensor for inhomogeneous fluids",
|
||||
Phys. Rev. E 52, 1627 (1995).
|
||||
|
||||
.. _Ikeshoji3:
|
||||
|
||||
**(Ikeshoji)** Ikeshoji, Hafskjold, Furuholt, Mol Sim, 29, 101-109, (2003).
|
||||
|
||||
165
doc/src/compute_stress_profile.rst
Normal file
165
doc/src/compute_stress_profile.rst
Normal file
@ -0,0 +1,165 @@
|
||||
.. index:: compute stress/cartesian
|
||||
.. index:: compute stress/cylinder
|
||||
.. index:: compute stress/spherical
|
||||
|
||||
|
||||
compute stress/cartesian command
|
||||
==================================
|
||||
|
||||
compute stress/cylinder command
|
||||
=================================
|
||||
|
||||
compute stress/spherical command
|
||||
==================================
|
||||
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
compute ID group-ID style args
|
||||
|
||||
* ID, group-ID are documented in :doc:`compute <compute>` command
|
||||
* style = stress/cartesian or stress/spherical or stress/cylinder
|
||||
* args = argument specific to the compute style
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
*stress/cartesian* args = dim bin_width
|
||||
dim = x, y, or z. One or two dim/bin_width pairs may be appended
|
||||
bin_width = width of the bin
|
||||
*stress/cylinder* args = zlo zh Rmax bin_width keyword
|
||||
zlo = minimum z-boundary for cylinder
|
||||
zhi = maximum z-boundary for cylinder
|
||||
Rmax = maximum radius to perform calculation to
|
||||
bin_width = width of radial bins to use for calculation
|
||||
keyword = ke (zero or one can be specified)
|
||||
ke = yes or no
|
||||
*stress/spherical*
|
||||
x0, y0, z0 = origin of the spherical coordinate system
|
||||
bin_width = width of spherical shells
|
||||
Rmax = maximum radius of spherical shells
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
compute 1 all stress/cartesian x 0.1
|
||||
compute 1 all stress/cartesian y 0.25 z 0.1
|
||||
compute 1 all stress/cylinder -10.0 10.0 15.0 0.25
|
||||
compute 1 all stress/cylinder -10.0 10.0 15.0 0.25 ke no
|
||||
compute 1 all stress/spherical 0 0 0 0.1 10
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
Compute *stress/cartesian*, compute *stress/cylinder*, and compute
|
||||
*stress/spherical* define computations that calculate profiles of the
|
||||
diagonal components of the local stress tensor in the specified
|
||||
coordinate system. The stress tensor is split into a kinetic
|
||||
contribution :math:`P^k` and a virial contribution :math:`P^v`. The sum
|
||||
gives the total stress tensor :math:`P = P^k+P^v`. These computes can
|
||||
for example be used to calculate the diagonal components of the local
|
||||
stress tensor of interfaces with flat, cylindrical, or spherical
|
||||
symmetry. These computes obeys momentum balance through fluid
|
||||
interfaces. They use the Irving-Kirkwood contour, which is the straight
|
||||
line between particle pairs.
|
||||
|
||||
The *stress/cartesian* computes the stress profile along one or two
|
||||
Cartesian coordinates, as described in :ref:`(Ikeshoji)<Ikeshoji2>`. The
|
||||
compute *stress/cylinder* computes the stress profile along the
|
||||
radial direction in cylindrical coordinates, as described in
|
||||
:ref:`(Addington)<Addington1>`. The compute *stress/spherical*
|
||||
computes the stress profile along the radial direction in spherical
|
||||
coordinates, as described in :ref:`(Ikeshoji)<Ikeshoji2>`.
|
||||
|
||||
|
||||
Output info
|
||||
"""""""""""
|
||||
|
||||
The output columns for *stress/cartesian* are the position of the
|
||||
center of the local volume in the first and second dimensions, number
|
||||
density, :math:`P^k_{xx}`, :math:`P^k_{yy}`, :math:`P^k_{zz}`,
|
||||
:math:`P^v_{xx}`, :math:`P^v_{yy}`, and :math:`P^v_{zz}`. There are 8
|
||||
columns when one dimension is specified and 9 columns when two
|
||||
dimensions are specified. The number of bins/rows are
|
||||
(L1/bin_width1)*(L2/bin_width2), L1 and L2 are the sizes of the
|
||||
simulation box in the specified dimensions, and bin_width1 and
|
||||
bin_width2 are the specified bin widths. When only one dimension is
|
||||
specified the number of bins/rows are L1/bin_width.
|
||||
|
||||
The default output columns for *stress/cylinder* are the radius to the
|
||||
center of the cylindrical shell, number density, :math:`P^k_{rr}`,
|
||||
:math:`P^k_{\phi\phi}`, :math:`P^k_{zz}`, :math:`P^v_{rr}`,
|
||||
:math:`P^v_{\phi\phi}`, and :math:`P^v_{zz}`. When the keyword *ke* is
|
||||
set to no, the kinetic contributions are not calculated, and
|
||||
consequently there are only 5 columns the radius to the center of the
|
||||
cylindrical shell, number density, :math:`P^v_{rr}`,
|
||||
:math:`P^v_{\phi\phi}`, :math:`P^v_{zz}`. The number of bins/rows are
|
||||
Rmax/bin_width.
|
||||
|
||||
The output columns for *stress/spherical* are the radius to the center
|
||||
of the spherical shell, number density, :math:`P^k_{rr}`,
|
||||
:math:`P^k_{\theta\theta}`, :math:`P^k_{\phi\phi}`, :math:`P^v_{rr}`,
|
||||
:math:`P^v_{\theta\theta}`, and :math:`P^v_{\phi\phi}`. There are 8
|
||||
columns and the number of bins/rows are Rmax/bin_width.
|
||||
|
||||
This array can be output with :doc:`fix ave/time <fix_ave_time>`,
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
compute p all stress/cartesian x 0.1
|
||||
fix 2 all ave/time 100 1 100 c_p[*] file dump_p.out mode vector
|
||||
|
||||
The values calculated by this compute are "intensive". The stress
|
||||
values will be in pressure :doc:`units <units>`. The number density
|
||||
values are in inverse volume :doc:`units <units>`.
|
||||
|
||||
NOTE 1: The local stress does not include any Lennard-Jones tail
|
||||
corrections to the stress added by the :doc:`pair_modify tail yes <pair_modify>`
|
||||
command, since those are contributions to the global system pressure.
|
||||
|
||||
NOTE 2: The local stress profiles generated by these computes are
|
||||
similar to those obtained by the
|
||||
:doc:`method-of-planes (MOP) <compute_stress_mop>`.
|
||||
A key difference
|
||||
is that compute `stress/mop/profile <compute_stress_mop>`
|
||||
considers particles crossing a set of planes, while
|
||||
*stress/cartesian* computes averages for a set of small volumes.
|
||||
More information on the similarities and differences can be found in
|
||||
:ref:`(Ikeshoji)<Ikeshoji2>`.
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
These computes calculate the stress tensor contributions for pair
|
||||
styles only (i.e. no bond, angle, dihedral, etc. contributions, and in
|
||||
the presence of bonded interactions, the result will be incorrect due to
|
||||
exclusions for special bonds) and requires pairwise force calculations
|
||||
not available for most many-body pair styles. K-space calculations are
|
||||
also excluded.
|
||||
|
||||
These computes are part of the EXTRA-COMPUTE package. They are only
|
||||
enabled if LAMMPS was built with that package. See the :doc:`Build
|
||||
package <Build_package>` doc page for more info.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`compute stress/atom <compute_stress_atom>`, :doc:`compute pressure <compute_pressure>`, :doc:`compute stress/mop/profile <compute_stress_mop>`
|
||||
|
||||
Default
|
||||
"""""""
|
||||
|
||||
The keyword default for ke in style *stress/cylinder* is yes.
|
||||
|
||||
----------
|
||||
|
||||
.. _Ikeshoji2:
|
||||
|
||||
**(Ikeshoji)** Ikeshoji, Hafskjold, Furuholt, Mol Sim, 29, 101-109, (2003).
|
||||
|
||||
.. _Addington1:
|
||||
|
||||
**(Addington)** Addington, Long, Gubbins, J Chem Phys, 149, 084109 (2018).
|
||||
@ -31,7 +31,7 @@ Syntax
|
||||
compute ID group-ID style group2-ID
|
||||
|
||||
* ID, group-ID are documented in :doc:`compute <compute>` command
|
||||
* style = *force/tally* or *heat/flux/tally* or *heat/flux/virial/tally* or * or *pe/tally* or *pe/mol/tally* or *stress/tally*
|
||||
* style = *force/tally* or *heat/flux/tally* or *heat/flux/virial/tally* or *pe/tally* or *pe/mol/tally* or *stress/tally*
|
||||
* group2-ID = group ID of second (or same) group
|
||||
|
||||
Examples
|
||||
@ -61,7 +61,7 @@ mechanism. Compute *pe/mol/tally* is one such style, that can
|
||||
- through using this mechanism - separately tally intermolecular
|
||||
and intramolecular energies. Something that would otherwise be
|
||||
impossible without integrating this as a core functionality into
|
||||
the based classes of LAMMPS.
|
||||
the base classes of LAMMPS.
|
||||
|
||||
----------
|
||||
|
||||
@ -148,27 +148,35 @@ pairwise property computations.
|
||||
Output info
|
||||
"""""""""""
|
||||
|
||||
Compute *pe/tally* calculates a global scalar (the energy) and a per
|
||||
- Compute *pe/tally* calculates a global scalar (the energy) and a per
|
||||
atom scalar (the contributions of the single atom to the global
|
||||
scalar). Compute *pe/mol/tally* calculates a global 4-element vector
|
||||
containing (in this order): *evdwl* and *ecoul* for intramolecular pairs
|
||||
and *evdwl* and *ecoul* for intermolecular pairs. Since molecules are
|
||||
scalar).
|
||||
|
||||
- Compute *pe/mol/tally* calculates a global 4-element vector containing
|
||||
(in this order): *evdwl* and *ecoul* for intramolecular pairs and
|
||||
*evdwl* and *ecoul* for intermolecular pairs. Since molecules are
|
||||
identified by their molecule IDs, the partitioning does not have to be
|
||||
related to molecules, but the energies are tallied into the respective
|
||||
slots depending on whether the molecule IDs of a pair are the same or
|
||||
different. Compute *force/tally* calculates a global scalar (the force
|
||||
magnitude) and a per atom 3-element vector (force contribution from
|
||||
each atom). Compute *stress/tally* calculates a global scalar
|
||||
different.
|
||||
|
||||
- Compute *force/tally* calculates a global scalar (the force magnitude)
|
||||
and a per atom 3-element vector (force contribution from each atom).
|
||||
|
||||
- Compute *stress/tally* calculates a global scalar
|
||||
(average of the diagonal elements of the stress tensor) and a per atom
|
||||
vector (the 6 elements of stress tensor contributions from the
|
||||
individual atom). As in :doc:`compute heat/flux <compute_heat_flux>`,
|
||||
individual atom).
|
||||
|
||||
- As in :doc:`compute heat/flux <compute_heat_flux>`,
|
||||
compute *heat/flux/tally* calculates a global vector of length 6,
|
||||
where the first 3 components are the :math:`x`, :math:`y`, :math:`z`
|
||||
components of the full heat flow vector,
|
||||
and the next 3 components are the corresponding components
|
||||
of just the convective portion of the flow, i.e. the
|
||||
first term in the equation for :math:`\mathbf{Q}`.
|
||||
Compute *heat/flux/virial/tally* calculates a global scalar (heat flow)
|
||||
|
||||
- Compute *heat/flux/virial/tally* calculates a global scalar (heat flow)
|
||||
and a per atom 3-element vector
|
||||
(contribution to the force acting over atoms in the first group
|
||||
from individual atoms in both groups).
|
||||
|
||||
@ -240,8 +240,6 @@ accelerated styles exist.
|
||||
* :doc:`latte <fix_latte>` - wrapper on LATTE density-functional tight-binding code
|
||||
* :doc:`lb/fluid <fix_lb_fluid>` -
|
||||
* :doc:`lb/momentum <fix_lb_momentum>` -
|
||||
* :doc:`lb/pc <fix_lb_pc>` -
|
||||
* :doc:`lb/rigid/pc/sphere <fix_lb_rigid_pc_sphere>` -
|
||||
* :doc:`lb/viscous <fix_lb_viscous>` -
|
||||
* :doc:`lineforce <fix_lineforce>` - constrain atoms to move in a line
|
||||
* :doc:`manifoldforce <fix_manifoldforce>` - restrain atoms to a manifold during minimization
|
||||
|
||||
@ -444,8 +444,15 @@ doc page for more info.
|
||||
Do not set "neigh_modify once yes" or else this fix will never be
|
||||
called. Reneighboring is required.
|
||||
|
||||
Only usable for 3D simulations.
|
||||
|
||||
Can be run in parallel, but aspects of the GCMC part will not scale
|
||||
well in parallel. Only usable for 3D simulations.
|
||||
well in parallel. Currently, molecule translations and rotations
|
||||
are not supported with more than one MPI process.
|
||||
It is still possible to do parallel molecule exchange without
|
||||
translation and rotation moves by setting MC moves to zero
|
||||
and/or by using the *mcmoves* keyword with *Pmoltrans* = *Pmolrotate* = 0 .
|
||||
|
||||
|
||||
When using fix gcmc in combination with fix shake or fix rigid,
|
||||
only GCMC exchange moves are supported, so the argument
|
||||
|
||||
@ -12,55 +12,65 @@ Syntax
|
||||
|
||||
* ID, group-ID are documented in :doc:`fix <fix>` command
|
||||
* lb/fluid = style name of this fix command
|
||||
* nevery = update the lattice-Boltzmann fluid every this many timesteps
|
||||
* LBtype = 1 to use the standard finite difference LB integrator,
|
||||
2 to use the LB integrator of :ref:`Ollila et al. <Ollila>`
|
||||
* nevery = update the lattice-Boltzmann fluid every this many timesteps (should normally be 1)
|
||||
* viscosity = the fluid viscosity (units of mass/(time\*length)).
|
||||
* density = the fluid density.
|
||||
* zero or more keyword/value pairs may be appended
|
||||
* keyword = *setArea* or *setGamma* or *scaleGamma* or *dx* or *dm* or *a0* or *noise* or *calcforce* or *trilinear* or *D3Q19* or *read_restart* or *write_restart* or *zwall_velocity* or *bodyforce* or *printfluid*
|
||||
* keyword = *dx* or *dm* or *noise* or *stencil* or *read_restart* or *write_restart* or *zwall_velocity* or *pressurebcx* or *bodyforce* or *D3Q19* or *dumpxdmf* or *dof* or *scaleGamma* or *a0* or *npits* or *wp* or *sw*
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
*setArea* values = type node_area
|
||||
type = atom type (1-N)
|
||||
node_area = portion of the surface area of the composite object associated with the particular atom type (used when the force coupling constant is set by default).
|
||||
*setGamma* values = gamma
|
||||
gamma = user set value for the force coupling constant.
|
||||
*scaleGamma* values = type gammaFactor
|
||||
type = atom type (1-N)
|
||||
gammaFactor = factor to scale the *setGamma* gamma value by, for the specified atom type.
|
||||
*dx* values = dx_LB = the lattice spacing.
|
||||
*dm* values = dm_LB = the lattice-Boltzmann mass unit.
|
||||
*a0* values = a_0_real = the square of the speed of sound in the fluid.
|
||||
*noise* values = Temperature seed
|
||||
Temperature = fluid temperature.
|
||||
seed = random number generator seed (positive integer)
|
||||
*calcforce* values = N forcegroup-ID
|
||||
N = output the force and torque every N timesteps
|
||||
forcegroup-ID = ID of the particle group to calculate the force and torque of
|
||||
*trilinear* values = none (used to switch from the default Peskin interpolation stencil to the trilinear stencil).
|
||||
*D3Q19* values = none (used to switch from the default D3Q15, 15 velocity lattice, to the D3Q19, 19 velocity lattice).
|
||||
*stencil* values = 2 (trilinear stencil, the default), 3 (3-point immersed boundary stencil), or 4 (4-point Keys' interpolation stencil)
|
||||
*read_restart* values = restart file = name of the restart file to use to restart a fluid run.
|
||||
*write_restart* values = N = write a restart file every N MD timesteps.
|
||||
*zwall_velocity* values = velocity_bottom velocity_top = velocities along the y-direction of the bottom and top walls (located at z=zmin and z=zmax).
|
||||
*pressurebcx* values = pgradav = imposes a pressure jump at the (periodic) x-boundary of pgradav*Lx*1000.
|
||||
*bodyforce* values = bodyforcex bodyforcey bodyforcez = the x,y and z components of a constant body force added to the fluid.
|
||||
*printfluid* values = N = print the fluid density and velocity at each grid point every N timesteps.
|
||||
*D3Q19* values = none (used to switch from the default D3Q15, 15 velocity lattice, to the D3Q19, 19 velocity lattice).
|
||||
*dumpxdmf* values = N file timeI
|
||||
N = output the force and torque every N timesteps
|
||||
file = output file name
|
||||
timeI = 1 (use simulation time to index xdmf file), 0 (use output frame number to index xdmf file)
|
||||
*dof* values = dof = specify the number of degrees of freedom for temperature calculation
|
||||
*scaleGamma* values = type gammaFactor
|
||||
type = atom type (1-N)
|
||||
gammaFactor = factor to scale the *setGamma* gamma value by, for the specified atom type.
|
||||
*a0* values = a_0_real = the square of the speed of sound in the fluid.
|
||||
*npits* values = npits h_p l_p l_pp l_e
|
||||
npits = number of pit regions
|
||||
h_p = z-height of pit regions (floor to bottom of slit)
|
||||
l_p = x-length of pit regions
|
||||
l_pp = x-length of slit regions between consecutive pits
|
||||
l_e = x-length of slit regions at ends
|
||||
*wp* values = w_p = y-width of slit regions (defaults to full width if not present or if sw active)
|
||||
*sw* values = none (turns on y-sidewalls (in xz plane) if npits option active)
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
fix 1 all lb/fluid 1 2 1.0 1.0 setGamma 13.0 dx 4.0 dm 10.0 calcforce sphere1
|
||||
fix 1 all lb/fluid 1 1 1.0 0.0009982071 setArea 1 1.144592082 dx 2.0 dm 0.3 trilinear noise 300.0 8979873
|
||||
fix 1 all lb/fluid 1 1.0 0.0009982071 dx 1.2 dm 0.001
|
||||
fix 1 all lb/fluid 1 1.0 0.0009982071 dx 1.2 dm 0.001 noise 300.0 2761
|
||||
fix 1 all lb/fluid 1 1.0 1.0 dx 4.0 dm 10.0 dumpxdmf 500 fflow 0 pressurebcx 0.01 npits 2 20 40 5 0 wp 30
|
||||
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
Implement a lattice-Boltzmann fluid on a uniform mesh covering the LAMMPS
|
||||
simulation domain. The MD particles described by *group-ID* apply a velocity
|
||||
dependent force to the fluid.
|
||||
.. versionchanged:: 24Mar2022
|
||||
|
||||
Implement a lattice-Boltzmann fluid on a uniform mesh covering the
|
||||
LAMMPS simulation domain. Note that this fix was updated in 2022 and is
|
||||
not backward compatible with the previous version. If you need the
|
||||
previous version, please download an older version of LAMMPS. The MD
|
||||
particles described by *group-ID* apply a velocity dependent force to
|
||||
the fluid.
|
||||
|
||||
The lattice-Boltzmann algorithm solves for the fluid motion governed by
|
||||
the Navier Stokes equations,
|
||||
@ -86,28 +96,23 @@ respectively. Here, we have implemented
|
||||
\sigma_{\alpha \beta} = -P_{\alpha \beta} = -\rho a_0 \delta_{\alpha \beta}
|
||||
|
||||
with :math:`a_0` set to :math:`\frac{1}{3} \frac{dx}{dt}^2` by default.
|
||||
You should not normally need to change this default.
|
||||
|
||||
The algorithm involves tracking the time evolution of a set of partial
|
||||
distribution functions which evolve according to a velocity
|
||||
discretized version of the Boltzmann equation,
|
||||
distribution functions which evolve according to a velocity discretized
|
||||
version of the Boltzmann equation,
|
||||
|
||||
.. math::
|
||||
|
||||
\left(\partial_t + e_{i\alpha}\partial_{\alpha}\right)f_i = -\frac{1}{\tau}\left(f_i - f_i^{eq}\right) + W_i
|
||||
|
||||
where the first term on the right hand side represents a single time
|
||||
relaxation towards the equilibrium distribution function, and :math:`\tau` is a
|
||||
parameter physically related to the viscosity. On a technical note,
|
||||
we have implemented a 15 velocity model (D3Q15) as default; however,
|
||||
the user can switch to a 19 velocity model (D3Q19) through the use of
|
||||
the *D3Q19* keyword. This fix provides the user with the choice of
|
||||
two algorithms to solve this equation, through the specification of
|
||||
the keyword *LBtype*\ . If *LBtype* is set equal to 1, the standard
|
||||
finite difference LB integrator is used. If *LBtype* is set equal to
|
||||
2, the algorithm of :ref:`Ollila et al. <Ollila>` is used.
|
||||
|
||||
Physical variables are then defined in terms of moments of the distribution
|
||||
functions,
|
||||
relaxation towards the equilibrium distribution function, and
|
||||
:math:`\tau` is a parameter physically related to the viscosity. On a
|
||||
technical note, we have implemented a 15 velocity model (D3Q15) as
|
||||
default; however, the user can switch to a 19 velocity model (D3Q19)
|
||||
through the use of the *D3Q19* keyword. Physical variables are then
|
||||
defined in terms of moments of the distribution functions,
|
||||
|
||||
.. math::
|
||||
|
||||
@ -115,7 +120,7 @@ functions,
|
||||
\rho u_{\alpha} = & \displaystyle\sum\limits_{i} f_i e_{i\alpha}
|
||||
|
||||
Full details of the lattice-Boltzmann algorithm used can be found in
|
||||
:ref:`Mackay et al. <fluid-Mackay>`.
|
||||
:ref:`Denniston et al. <fluid-Denniston>`.
|
||||
|
||||
The fluid is coupled to the MD particles described by *group-ID* through
|
||||
a velocity dependent force. The contribution to the fluid force on a
|
||||
@ -127,90 +132,64 @@ calculated as:
|
||||
{\bf F}_{j \alpha} = \gamma \left({\bf v}_n - {\bf u}_f \right) \zeta_{j\alpha}
|
||||
|
||||
where :math:`\mathbf{v}_n` is the velocity of the MD particle,
|
||||
:math:`\mathbf{u}_f` is the fluid
|
||||
velocity interpolated to the particle location, and :math:`\gamma` is the force
|
||||
coupling constant. :math:`\zeta` is a weight assigned to the grid point,
|
||||
obtained by distributing the particle to the nearest lattice sites.
|
||||
For this, the user has the choice between a trilinear stencil, which
|
||||
provides a support of 8 lattice sites, or the immersed boundary method
|
||||
Peskin stencil, which provides a support of 64 lattice sites. While
|
||||
the Peskin stencil is seen to provide more stable results, the
|
||||
trilinear stencil may be better suited for simulation of objects close
|
||||
to walls, due to its smaller support. Therefore, by default, the
|
||||
Peskin stencil is used; however the user may switch to the trilinear
|
||||
stencil by specifying the keyword, *trilinear*\ .
|
||||
:math:`\mathbf{u}_f` is the fluid velocity interpolated to the particle
|
||||
location, and :math:`\gamma` is the force coupling constant. This
|
||||
force, as with most forces in LAMMPS, and hence the velocities, are
|
||||
calculated at the half-time step. :math:`\zeta` is a weight assigned to
|
||||
the grid point, obtained by distributing the particle to the nearest
|
||||
lattice sites.
|
||||
|
||||
By default, the force coupling constant, :math:`\gamma`, is calculated
|
||||
The force coupling constant, :math:`\gamma`, is calculated
|
||||
according to
|
||||
|
||||
.. math::
|
||||
|
||||
\gamma = \frac{2m_um_v}{m_u+m_v}\left(\frac{1}{\Delta t_{collision}}\right)
|
||||
\gamma = \frac{2m_um_v}{m_u+m_v}\left(\frac{1}{\Delta t}\right)
|
||||
|
||||
Here, :math:`m_v` is the mass of the MD particle, :math:`m_u` is a
|
||||
representative fluid mass at the particle location, and :math:`\Delta
|
||||
t_{collision}` is a collision time, chosen such that
|
||||
:math:`\frac{\tau}{\Delta t_{collision}} = 1` (see :ref:`Mackay and
|
||||
Denniston <Mackay2>` for full details). In order to calculate :math:`m_u`,
|
||||
the fluid density is interpolated to the MD particle location, and
|
||||
multiplied by a volume, node_area * :math:`dx_{LB}`, where node_area
|
||||
represents the portion of the surface area of the composite object
|
||||
associated with a given MD particle. By default, node_area is set
|
||||
equal to :math:`dx_{LB}^2`; however specific values for given atom types
|
||||
can be set using the *setArea* keyword.
|
||||
|
||||
The user also has the option of specifying their own value for the
|
||||
force coupling constant, for all the MD particles associated with the
|
||||
fix, through the use of the *setGamma* keyword. This may be useful
|
||||
when modelling porous particles. See :ref:`Mackay et al. <fluid-Mackay>` for a
|
||||
detailed description of the method by which the user can choose an
|
||||
appropriate :math:`\gamma` value.
|
||||
representative fluid mass at the particle location, and :math:`\Delta t`
|
||||
is the time step. The fluid mass :math:`m_u` that the MD particle
|
||||
interacts with is calculated internally. This coupling is chosen to
|
||||
constrain the particle and associated fluid velocity to match at the end
|
||||
of the time step. As with other constraints, such as :doc:`shake
|
||||
<fix_shake>`, this constraint can remove degrees of freedom from the
|
||||
simulation which are accounted for internally in the algorithm.
|
||||
|
||||
.. note::
|
||||
|
||||
while this fix applies the force of the particles on the fluid,
|
||||
it does not apply the force of the fluid to the particles. When the
|
||||
force coupling constant is set using the default method, there is only
|
||||
one option to include this hydrodynamic force on the particles, and
|
||||
that is through the use of the :doc:`lb/viscous <fix_lb_viscous>` fix.
|
||||
This fix adds the hydrodynamic force to the total force acting on the
|
||||
particles, after which any of the built-in LAMMPS integrators can be
|
||||
used to integrate the particle motion. However, if the user specifies
|
||||
their own value for the force coupling constant, as mentioned in
|
||||
:ref:`Mackay et al. <fluid-Mackay>`, the built-in LAMMPS integrators may prove to
|
||||
be unstable. Therefore, we have included our own integrators
|
||||
:doc:`fix lb/rigid/pc/sphere <fix_lb_rigid_pc_sphere>`, and
|
||||
:doc:`fix lb/pc <fix_lb_pc>`, to solve for the particle motion in these
|
||||
cases. These integrators should not be used with the
|
||||
:doc:`lb/viscous <fix_lb_viscous>` fix, as they add hydrodynamic forces
|
||||
to the particles directly. In addition, they can not be used if the
|
||||
force coupling constant has been set the default way.
|
||||
|
||||
.. note::
|
||||
|
||||
if the force coupling constant is set using the default method,
|
||||
and the :doc:`lb/viscous <fix_lb_viscous>` fix is NOT used to add the
|
||||
While this fix applies the force of the particles on the fluid, it
|
||||
does not apply the force of the fluid to the particles. There is
|
||||
only one option to include this hydrodynamic force on the particles,
|
||||
and that is through the use of the :doc:`lb/viscous <fix_lb_viscous>`
|
||||
fix. This fix adds the hydrodynamic force to the total force acting
|
||||
on the particles, after which any of the built-in LAMMPS integrators
|
||||
can be used to integrate the particle motion. If the
|
||||
:doc:`lb/viscous <fix_lb_viscous>` fix is NOT used to add the
|
||||
hydrodynamic force to the total force acting on the particles, this
|
||||
physically corresponds to a situation in which an infinitely massive
|
||||
particle is moving through the fluid (since collisions between the
|
||||
particle and the fluid do not act to change the particle's velocity).
|
||||
Therefore, the user should set the mass of the particle to be
|
||||
significantly larger than the mass of the fluid at the particle
|
||||
location, in order to approximate an infinitely massive particle (see
|
||||
the dragforce test run for an example).
|
||||
In this case, setting *scaleGamma* to -1 for the corresponding
|
||||
particle type will explicitly take this limit (of infinite particle
|
||||
mass) in computing the force coupling for the fluid force.
|
||||
|
||||
----------
|
||||
|
||||
Inside the fix, parameters are scaled by the lattice-Boltzmann
|
||||
Physical parameters describing the fluid are specified through
|
||||
*viscosity* and *density*. These parameters should all be given in
|
||||
terms of the mass, distance, and time units chosen for the main LAMMPS
|
||||
run, as they are scaled by the LB timestep, lattice spacing, and mass
|
||||
unit, inside the fix.
|
||||
|
||||
The *dx* keyword allows the user to specify a value for the LB grid
|
||||
spacing and the *dm* keyword allows the user to specify the LB mass
|
||||
unit. Inside the fix, parameters are scaled by the lattice-Boltzmann
|
||||
timestep, :math:`dt_{LB}`, grid spacing, :math:`dx_{LB}`, and mass unit,
|
||||
:math:`dm_{LB}`. :math:`dt_{LB}` is set equal to
|
||||
:math:`\mathrm{nevery}\cdot dt_{MD}`, where :math:`dt_{MD}` is the MD timestep.
|
||||
By default,
|
||||
:math:`dm_{LB}` is set equal to 1.0, and :math:`dx_{LB}` is chosen so that
|
||||
:math:`\frac{\tau}{dt} = \frac{3\eta dt}{\rho dx^2}` is approximately equal to 1.
|
||||
However, the user has the option of specifying their own values for
|
||||
:math:`dm_{LB}`, and :math:`dx_{LB}`, by using
|
||||
the optional keywords *dm*, and *dx* respectively.
|
||||
:math:`\mathrm{nevery}\cdot dt_{MD}`, where :math:`dt_{MD}` is the MD
|
||||
timestep. By default, :math:`dm_{LB}` is set equal to 1.0, and
|
||||
:math:`dx_{LB}` is chosen so that :math:`\frac{\tau}{dt} = \frac{3\eta
|
||||
dt}{\rho dx^2}` is approximately equal to 1.
|
||||
|
||||
.. note::
|
||||
|
||||
@ -223,74 +202,27 @@ the optional keywords *dm*, and *dx* respectively.
|
||||
with equal lengths in all dimensions, and the default value for
|
||||
:math:`dx_{LB}` is used, this will automatically be satisfied.
|
||||
|
||||
Physical parameters describing the fluid are specified through
|
||||
*viscosity*, *density*, and *a0*\ . If the force coupling constant is
|
||||
set the default way, the surface area associated with the MD particles
|
||||
is specified using the *setArea* keyword. If the user chooses to
|
||||
specify a value for the force coupling constant, this is set using the
|
||||
*setGamma* keyword. These parameters should all be given in terms of
|
||||
the mass, distance, and time units chosen for the main LAMMPS run, as
|
||||
they are scaled by the LB timestep, lattice spacing, and mass unit,
|
||||
inside the fix.
|
||||
|
||||
----------
|
||||
|
||||
The *setArea* keyword allows the user to associate a surface area with
|
||||
a given atom type. For example if a spherical composite object of
|
||||
radius R is represented as a spherical shell of N evenly distributed
|
||||
MD particles, all of the same type, the surface area per particle
|
||||
associated with that atom type should be set equal to :math:`\frac{4\pi R^2}{N}`.
|
||||
This keyword should only be used if the force coupling constant,
|
||||
:math:`\gamma`, is set the default way.
|
||||
|
||||
The *setGamma* keyword allows the user to specify their own value for
|
||||
the force coupling constant, :math:`\gamma`, instead of using the default
|
||||
value.
|
||||
|
||||
The *scaleGamma* keyword should be used in conjunction with the
|
||||
*setGamma* keyword, when the user wishes to specify different :math:`\gamma`
|
||||
values for different atom types. This keyword allows the user to
|
||||
scale the *setGamma* :math:`\gamma` value by a factor, gammaFactor,
|
||||
for a given atom type.
|
||||
|
||||
The *dx* keyword allows the user to specify a value for the LB grid
|
||||
spacing.
|
||||
|
||||
The *dm* keyword allows the user to specify the LB mass unit.
|
||||
|
||||
If the *a0* keyword is used, the value specified is used for the
|
||||
square of the speed of sound in the fluid. If this keyword is not
|
||||
present, the speed of sound squared is set equal to
|
||||
:math:`\frac{1}{3}\left(\frac{dx_{LB}}{dt_{LB}}\right)^2`.
|
||||
Setting :math:`a0 > (\frac{dx_{LB}}{dt_{LB}})^2` is not allowed,
|
||||
as this may lead to instabilities.
|
||||
|
||||
If the *noise* keyword is used, followed by a positive temperature
|
||||
value, and a positive integer random number seed, a thermal
|
||||
lattice-Boltzmann algorithm is used. If *LBtype* is set equal to 1
|
||||
(i.e. the standard LB integrator is chosen), the thermal LB algorithm
|
||||
of :ref:`Adhikari et al. <Adhikari>` is used; however if *LBtype* is set
|
||||
equal to 2 both the LB integrator, and thermal LB algorithm described
|
||||
in :ref:`Ollila et al. <Ollila>` are used.
|
||||
value, and a positive integer random number seed, the thermal LB algorithm
|
||||
of :ref:`Adhikari et al. <Adhikari>` is used.
|
||||
|
||||
If the *calcforce* keyword is used, both the fluid force and torque
|
||||
acting on the specified particle group are printed to the screen every
|
||||
N timesteps.
|
||||
If the keyword *stencil* is used, the value sets the number of
|
||||
interpolation points used in each direction. For this, the user has the
|
||||
choice between a trilinear stencil (*stencil* 2), which provides a
|
||||
support of 8 lattice sites, or the 3-point immersed boundary method
|
||||
stencil (*stencil* 3), which provides a support of 27 lattice sites, or
|
||||
the 4-point Keys' interpolation stencil (stencil 4), which provides a
|
||||
support of 64 lattice sites. The trilinear stencil is the default as it
|
||||
is better suited for simulation of objects close to walls or other
|
||||
objects, due to its smaller support. The 3-point stencil provides
|
||||
smoother motion of the lattice and is suitable for particles not likely
|
||||
to be to close to walls or other objects.
|
||||
|
||||
If the keyword *trilinear* is used, the trilinear stencil is used to
|
||||
interpolate the particle nodes onto the fluid mesh. By default, the
|
||||
immersed boundary method, Peskin stencil is used. Both of these
|
||||
interpolation methods are described in :ref:`Mackay et al. <fluid-Mackay>`.
|
||||
|
||||
If the keyword *D3Q19* is used, the 19 velocity (D3Q19) lattice is
|
||||
used by the lattice-Boltzmann algorithm. By default, the 15 velocity
|
||||
(D3Q15) lattice is used.
|
||||
|
||||
If the keyword *write_restart* is used, followed by a positive
|
||||
integer, N, a binary restart file is printed every N LB timesteps.
|
||||
This restart file only contains information about the fluid.
|
||||
Therefore, a LAMMPS restart file should also be written in order to
|
||||
print out full details of the simulation.
|
||||
If the keyword *write_restart* is used, followed by a positive integer,
|
||||
N, a binary restart file is printed every N LB timesteps. This restart
|
||||
file only contains information about the fluid. Therefore, a LAMMPS
|
||||
restart file should also be written in order to print out full details
|
||||
of the simulation.
|
||||
|
||||
.. note::
|
||||
|
||||
@ -308,19 +240,100 @@ conditions in the z-direction. If fixed boundary conditions are
|
||||
present in the z-direction, and this keyword is not used, the walls
|
||||
are assumed to be stationary.
|
||||
|
||||
If the *pressurebcx* keyword is used, a pressure jump (implemented by a
|
||||
step jump in density) is imposed at the (periodic) x-boundary. The
|
||||
value set specifies what would be the resulting equilibrium average
|
||||
pressure gradient in the x-direction if the system had a constant
|
||||
cross-section (i.e. resistance to flow). It is converted to a pressure
|
||||
jump by multiplication by the system size in the x-direction. As this
|
||||
value should normally be quite small, it is also assumed to be scaled
|
||||
by 1000.
|
||||
|
||||
If the *bodyforce* keyword is used, a constant body force is added to
|
||||
the fluid, defined by it's x, y and z components.
|
||||
|
||||
If the *printfluid* keyword is used, followed by a positive integer, N,
|
||||
the fluid densities and velocities at each lattice site are printed to the
|
||||
screen every N timesteps.
|
||||
If the keyword *D3Q19* is used, the 19 velocity (D3Q19) lattice is
|
||||
used by the lattice-Boltzmann algorithm. By default, the 15 velocity
|
||||
(D3Q15) lattice is used.
|
||||
|
||||
If the *dumpxdmf* keyword is used, followed by a positive integer, N,
|
||||
and a file name, the fluid densities and velocities at each lattice site
|
||||
are output to an xdmf file every N timesteps. This is a binary file
|
||||
format that can be read by visualization packages such as `Paraview
|
||||
<https://www.paraview.org/>`_ . The xdmf file format contains a time
|
||||
index for each frame dump and the value timeI = 1 uses simulation time
|
||||
while 0 uses the output frame number to index xdmf file. The later can
|
||||
be useful if the :doc:`dump vtk <dump_vtk>` command is used to output
|
||||
the particle positions at the same timesteps and you want to visualize
|
||||
both the fluid and particle data together in `Paraview
|
||||
<https://www.paraview.org/>`_ .
|
||||
|
||||
The *scaleGamma* keyword allows the user to scale the :math:`\gamma`
|
||||
value by a factor, gammaFactor, for a given atom type. Setting
|
||||
*scaleGamma* to -1 for the corresponding particle type will explicitly
|
||||
take the limit of infinite particle mass in computing the force coupling
|
||||
for the fluid force (see note above).
|
||||
|
||||
If the *a0* keyword is used, the value specified is used for the square
|
||||
of the speed of sound in the fluid. If this keyword is not present, the
|
||||
speed of sound squared is set equal to
|
||||
:math:`\frac{1}{3}\left(\frac{dx_{LB}}{dt_{LB}}\right)^2`. Setting
|
||||
:math:`a0 > (\frac{dx_{LB}}{dt_{LB}})^2` is not allowed, as this may
|
||||
lead to instabilities. As the speed of sound should usually be much
|
||||
larger than any fluid velocity of interest, its value does not normally
|
||||
have a significant impact on the results. As such, it is usually best
|
||||
to use the default for this option.
|
||||
|
||||
The *npits* keyword (followed by integer arguments: npits, h_p, l_p,
|
||||
l_pp, l_e) sets the fluid domain to the pits geometry. These arguments
|
||||
should only be used if you actually want something more complex than a
|
||||
rectangular/cubic geometry. The npits value sets the number of pits
|
||||
regions (arranged along x). The remaining arguments are sizes measured
|
||||
in multiples of dx_lb: h_p is the z-height of the pit regions, l_p is
|
||||
the x-length of the pit regions, l_pp is the length of the region
|
||||
between consecutive pits (referred to as a "slit" region), and l_e is
|
||||
the x-length of the slit regions at each end of the channel. The pit
|
||||
geometry must fill the system in the x-direction but can be longer, in
|
||||
which case it is truncated (which enables asymmetric entrance/exit end
|
||||
sections). The additional *wp* keyword allows the width (in
|
||||
y-direction) of the pit to be specified (the default is full width) and
|
||||
the *sw* keyword indicates that there should be sidewalls in the
|
||||
y-direction (default is periodic in y-direction). These parameters are
|
||||
illustrated below::
|
||||
|
||||
Sideview (in xz plane) of pit geometry:
|
||||
______________________________________________________________________
|
||||
slit slit slit ^
|
||||
|
|
||||
<---le---><---------lp-------><---lpp---><-------lp--------><---le---> hs = (Nbz-1) - hp
|
||||
|
|
||||
__________ __________ __________ v
|
||||
| | | | ^ z
|
||||
| | | | | |
|
||||
| pit | | pit | hp +-x
|
||||
| | | | |
|
||||
|__________________| |__________________| v
|
||||
|
||||
Endview (in yz plane) of pit geometry (no sw so wp is active):
|
||||
_____________________
|
||||
^
|
||||
|
|
||||
hs
|
||||
|
|
||||
_____________________ v
|
||||
| | ^
|
||||
| | | z
|
||||
|<---wp--->| hp |
|
||||
| | | +-y
|
||||
|__________| v
|
||||
|
||||
|
||||
----------
|
||||
|
||||
For further details, as well as descriptions and results of several
|
||||
test runs, see :ref:`Mackay et al. <fluid-Mackay>`. Please include a citation to
|
||||
this paper if the lb_fluid fix is used in work contributing to
|
||||
published research.
|
||||
For further details, as well as descriptions and results of several test
|
||||
runs, see :ref:`Denniston et al. <fluid-Denniston>`. Please include a
|
||||
citation to this paper if the lb_fluid fix is used in work contributing
|
||||
to published research.
|
||||
|
||||
----------
|
||||
|
||||
@ -333,68 +346,77 @@ binary restart files, if requested, independent of the main LAMMPS
|
||||
is written to the main LAMMPS :doc:`binary restart files <restart>`.
|
||||
|
||||
None of the :doc:`fix_modify <fix_modify>` options are relevant to this
|
||||
fix. No global or per-atom quantities are stored by this fix for
|
||||
access by various :doc:`output commands <Howto_output>`. No parameter
|
||||
of this fix can be used with the *start/stop* keywords of the
|
||||
:doc:`run <run>` command. This fix is not invoked during :doc:`energy minimization <minimize>`.
|
||||
fix.
|
||||
|
||||
The fix computes a global scalar which can be accessed by various
|
||||
:doc:`output commands <Howto_output>`. The scalar is the current
|
||||
temperature of the group of particles described by *group-ID* along with
|
||||
the fluid constrained to move with them. The temperature is computed via
|
||||
the kinetic energy of the group and fluid constrained to move with them
|
||||
and the total number of degrees of freedom (calculated internally). If
|
||||
the particles are not integrated independently (such as via :doc:`fix
|
||||
NVE <fix_nve>`) but have additional constraints imposed on them (such as
|
||||
via integration using :doc:`fix rigid <fix_rigid>`) the degrees of
|
||||
freedom removed from these additional constraints will not be properly
|
||||
accounted for. In this case, the user can specify the total degrees of
|
||||
freedom independently using the *dof* keyword.
|
||||
|
||||
The fix also computes a global array of values which can be accessed by
|
||||
various :doc:`output commands <Howto_output>`. There are 5 entries in
|
||||
the array. The first entry is the temperature of the fluid, the second
|
||||
entry is the total mass of the fluid plus particles, the third through
|
||||
fifth entries give the x, y, and z total momentum of the fluid plus
|
||||
particles.
|
||||
|
||||
No parameter of this fix can be used with the *start/stop* keywords of
|
||||
the :doc:`run <run>` command. This fix is not invoked during
|
||||
:doc:`energy minimization <minimize>`.
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
This fix is part of the LATBOLTZ package. It is only enabled if LAMMPS
|
||||
was built with that package. See the :doc:`Build package <Build_package>` page for more info.
|
||||
was built with that package. See the :doc:`Build package
|
||||
<Build_package>` page for more info.
|
||||
|
||||
This fix can only be used with an orthogonal simulation domain.
|
||||
|
||||
Walls have only been implemented in the z-direction. Therefore, the
|
||||
boundary conditions, as specified via the main LAMMPS boundary command
|
||||
must be periodic for x and y, and either fixed or periodic for z.
|
||||
Shrink-wrapped boundary conditions are not permitted with this fix.
|
||||
The boundary conditions for the fluid are specified independently to the
|
||||
particles. However, these should normally be specified consistently via
|
||||
the main LAMMPS :doc:`boundary <boundary>` command (p p p, p p f, and p
|
||||
f f are the only consistent possibilities). Shrink-wrapped boundary
|
||||
conditions are not permitted with this fix.
|
||||
|
||||
This fix must be used before any of :doc:`fix lb/viscous <fix_lb_viscous>`, :doc:`fix lb/momentum <fix_lb_momentum>`, :doc:`fix lb/rigid/pc/sphere <fix_lb_rigid_pc_sphere>`, and/ or :doc:`fix lb/pc <fix_lb_pc>` , as the fluid needs to be initialized before
|
||||
any of these routines try to access its properties. In addition, in
|
||||
order for the hydrodynamic forces to be added to the particles, this
|
||||
fix must be used in conjunction with the
|
||||
:doc:`lb/viscous <fix_lb_viscous>` fix if the force coupling constant is
|
||||
set by default, or either the :doc:`lb/viscous <fix_lb_viscous>` fix or
|
||||
one of the :doc:`lb/rigid/pc/sphere <fix_lb_rigid_pc_sphere>` or
|
||||
:doc:`lb/pc <fix_lb_pc>` integrators, if the user chooses to specify
|
||||
their own value for the force coupling constant.
|
||||
This fix must be used before any of :doc:`fix lb/viscous
|
||||
<fix_lb_viscous>` and :doc:`fix lb/momentum <fix_lb_momentum>` as the
|
||||
fluid needs to be initialized before any of these routines try to access
|
||||
its properties. In addition, in order for the hydrodynamic forces to be
|
||||
added to the particles, this fix must be used in conjunction with the
|
||||
:doc:`lb/viscous <fix_lb_viscous>` fix.
|
||||
|
||||
This fix needs to be used in conjunction with a standard LAMMPS
|
||||
integrator such as :doc:`fix NVE <fix_nve>` or :doc:`fix rigid
|
||||
<fix_rigid>`.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`fix lb/viscous <fix_lb_viscous>`, :doc:`fix lb/momentum <fix_lb_momentum>`, :doc:`fix lb/rigid/pc/sphere <fix_lb_rigid_pc_sphere>`, :doc:`fix lb/pc <fix_lb_pc>`
|
||||
:doc:`fix lb/viscous <fix_lb_viscous>`, :doc:`fix lb/momentum <fix_lb_momentum>`
|
||||
|
||||
Default
|
||||
"""""""
|
||||
|
||||
By default, the force coupling constant is set according to
|
||||
|
||||
.. math::
|
||||
|
||||
\gamma = \frac{2m_um_v}{m_u+m_v}\left(\frac{1}{\Delta t_{collision}}\right)
|
||||
|
||||
and an area of :math:`dx_{LB}^2` per node, used to calculate the fluid mass at
|
||||
the particle node location, is assumed.
|
||||
|
||||
*dx* is chosen such that :math:`\frac{\tau}{dt_{LB}} =
|
||||
\frac{3\eta dt_{LB}}{\rho dx_{LB}^2}` is approximately equal to 1.
|
||||
*dx* is chosen such that :math:`\frac{\tau}{dt_{LB}} = \frac{3\eta dt_{LB}}{\rho dx_{LB}^2}` is approximately equal to 1.
|
||||
*dm* is set equal to 1.0.
|
||||
*a0* is set equal to :math:`\frac{1}{3}\left(\frac{dx_{LB}}{dt_{LB}}\right)^2`.
|
||||
The Peskin stencil is used as the default interpolation method.
|
||||
The trilinear stencil is used as the default interpolation method.
|
||||
The D3Q15 lattice is used for the lattice-Boltzmann algorithm.
|
||||
If walls are present, they are assumed to be stationary.
|
||||
|
||||
----------
|
||||
|
||||
.. _Ollila:
|
||||
.. _fluid-Denniston:
|
||||
|
||||
**(Ollila et al.)** Ollila, S.T.T., Denniston, C., Karttunen, M., and Ala-Nissila, T., Fluctuating lattice-Boltzmann model for complex fluids, J. Chem. Phys. 134 (2011) 064902.
|
||||
|
||||
.. _fluid-Mackay:
|
||||
|
||||
**(Mackay et al.)** Mackay, F. E., Ollila, S.T.T., and Denniston, C., Hydrodynamic Forces Implemented into LAMMPS through a lattice-Boltzmann fluid, Computer Physics Communications 184 (2013) 2021-2031.
|
||||
**(Denniston et al.)** Denniston, C., Afrasiabian, N., Cole-Andre, M.G., Mackay, F. E., Ollila, S.T.T., and Whitehead, T., LAMMPS lb/fluid fix version 2: Improved Hydrodynamic Forces Implemented into LAMMPS through a lattice-Boltzmann fluid, Computer Physics Communications 275 (2022) `108318 <https://doi.org/10.1016/j.cpc.2022.108318>`_ .
|
||||
|
||||
.. _Mackay2:
|
||||
|
||||
@ -403,3 +425,4 @@ If walls are present, they are assumed to be stationary.
|
||||
.. _Adhikari:
|
||||
|
||||
**(Adhikari et al.)** Adhikari, R., Stratford, K., Cates, M. E., and Wagner, A. J., Fluctuating lattice Boltzmann, Europhys. Lett. 71 (2005) 473-479.
|
||||
|
||||
|
||||
@ -38,7 +38,7 @@ lattice-Boltzmann fluid is present.
|
||||
|
||||
Zero the total linear momentum of the system, including both the atoms
|
||||
specified by group-ID and the lattice-Boltzmann fluid every nevery
|
||||
timesteps. This is accomplished by adjusting the particle velocities
|
||||
timesteps. If there are no atoms specified by group-ID only the fluid momentum is affected. This is accomplished by adjusting the particle velocities
|
||||
and the fluid velocities at each lattice site.
|
||||
|
||||
.. note::
|
||||
|
||||
@ -1,65 +0,0 @@
|
||||
.. index:: fix lb/pc
|
||||
|
||||
fix lb/pc command
|
||||
=================
|
||||
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
fix ID group-ID lb/pc
|
||||
|
||||
* ID, group-ID are documented in the :doc:`fix <fix>` command
|
||||
* lb/pc = style name of this fix command
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
fix 1 all lb/pc
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
Update the positions and velocities of the individual particles
|
||||
described by *group-ID*, experiencing velocity-dependent hydrodynamic
|
||||
forces, using the integration algorithm described in :ref:`Mackay et al. <Mackay1>`. This integration algorithm should only be used if a
|
||||
user-specified value for the force-coupling constant used in :doc:`fix lb/fluid <fix_lb_fluid>` has been set; do not use this integration
|
||||
algorithm if the force coupling constant has been set by default.
|
||||
|
||||
Restart, fix_modify, output, run start/stop, minimize info
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
No information about this fix is written to :doc:`binary restart files <restart>`. None of the :doc:`fix_modify <fix_modify>` options
|
||||
are relevant to this fix. No global or per-atom quantities are stored
|
||||
by this fix for access by various :doc:`output commands <Howto_output>`.
|
||||
No parameter of this fix can be used with the *start/stop* keywords of
|
||||
the :doc:`run <run>` command. This fix is not invoked during :doc:`energy minimization <minimize>`.
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
This fix is part of the LATBOLTZ package. It is only enabled if LAMMPS
|
||||
was built with that package. See the :doc:`Build package <Build_package>` page for more info.
|
||||
|
||||
Can only be used if a lattice-Boltzmann fluid has been created via the
|
||||
:doc:`fix lb/fluid <fix_lb_fluid>` command, and must come after this
|
||||
command.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`fix lb/fluid <fix_lb_fluid>` :doc:`fix lb/rigid/pc/sphere <fix_lb_rigid_pc_sphere>`
|
||||
|
||||
Default
|
||||
"""""""
|
||||
|
||||
none.
|
||||
|
||||
----------
|
||||
|
||||
.. _Mackay1:
|
||||
|
||||
**(Mackay et al.)** Mackay, F. E., Ollila, S.T.T., and Denniston, C., Hydrodynamic Forces Implemented into LAMMPS through a lattice-Boltzmann fluid, Computer Physics Communications 184 (2013) 2021-2031.
|
||||
@ -1,167 +0,0 @@
|
||||
.. index:: fix lb/rigid/pc/sphere
|
||||
|
||||
fix lb/rigid/pc/sphere command
|
||||
==============================
|
||||
|
||||
Syntax
|
||||
""""""
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
fix ID group-ID lb/rigid/pc/sphere bodystyle args keyword values ...
|
||||
|
||||
* ID, group-ID are documented in :doc:`fix <fix>` command
|
||||
* lb/rigid/pc/sphere = style name of this fix command
|
||||
* bodystyle = *single* or *molecule* or *group*
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
*single* args = none
|
||||
*molecule* args = none
|
||||
*group* args = N groupID1 groupID2 ...
|
||||
N = # of groups
|
||||
|
||||
* zero or more keyword/value pairs may be appended
|
||||
* keyword = *force* or *torque* or *innerNodes*
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
*force* values = M xflag yflag zflag
|
||||
M = which rigid body from 1-Nbody (see asterisk form below)
|
||||
xflag,yflag,zflag = off/on if component of center-of-mass force is active
|
||||
*torque* values = M xflag yflag zflag
|
||||
M = which rigid body from 1-Nbody (see asterisk form below)
|
||||
xflag,yflag,zflag = off/on if component of center-of-mass torque is active
|
||||
*innerNodes* values = innergroup-ID
|
||||
innergroup-ID = ID of the atom group which does not experience a hydrodynamic force from the lattice-Boltzmann fluid
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
fix 1 spheres lb/rigid/pc/sphere
|
||||
fix 1 all lb/rigid/pc/sphere force 1 0 0 innerNodes ForceAtoms
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
This fix is based on the :doc:`fix rigid <fix_rigid>` command, and was
|
||||
created to be used in place of that fix, to integrate the equations of
|
||||
motion of spherical rigid bodies when a lattice-Boltzmann fluid is
|
||||
present with a user-specified value of the force-coupling constant.
|
||||
The fix uses the integration algorithm described in :ref:`Mackay et
|
||||
al. <Mackay>` to update the positions, velocities, and orientations of
|
||||
a set of spherical rigid bodies experiencing velocity dependent
|
||||
hydrodynamic forces. The spherical bodies are assumed to rotate as
|
||||
solid, uniform density spheres, with moments of inertia calculated
|
||||
using the combined sum of the masses of all the constituent particles
|
||||
(which are assumed to be point particles).
|
||||
|
||||
----------
|
||||
|
||||
By default, all of the atoms that this fix acts on experience a
|
||||
hydrodynamic force due to the presence of the lattice-Boltzmann fluid.
|
||||
However, the *innerNodes* keyword allows the user to specify atoms
|
||||
belonging to a rigid object which do not interact with the
|
||||
lattice-Boltzmann fluid (i.e. these atoms do not feel a hydrodynamic
|
||||
force from the lattice-Boltzmann fluid). This can be used to
|
||||
distinguish between atoms on the surface of a non-porous object, and
|
||||
those on the inside.
|
||||
|
||||
This feature can be used, for example, when implementing a hard sphere
|
||||
interaction between two spherical objects. Instead of interactions
|
||||
occurring between the particles on the surfaces of the two spheres, it
|
||||
is desirable simply to place an atom at the center of each sphere,
|
||||
which does not contribute to the hydrodynamic force, and have these
|
||||
central atoms interact with one another.
|
||||
|
||||
----------
|
||||
|
||||
Apart from the features described above, this fix is very similar to
|
||||
the rigid fix (although it includes fewer optional arguments, and
|
||||
assumes the constituent atoms are point particles); see
|
||||
:doc:`fix rigid <fix_rigid>` for a complete documentation.
|
||||
|
||||
Restart, fix_modify, output, run start/stop, minimize info
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
No information about the *rigid* and *rigid/nve* fixes are written to
|
||||
:doc:`binary restart files <restart>`.
|
||||
|
||||
The :doc:`fix_modify <fix_modify>` *virial* option is supported by
|
||||
this fix to add the contribution due to the added forces on atoms to
|
||||
both the global pressure and per-atom stress of the system via the
|
||||
:doc:`compute pressure <compute_pressure>` and :doc:`compute
|
||||
stress/atom <compute_stress_atom>` commands. The former can be
|
||||
accessed by :doc:`thermodynamic output <thermo_style>`. The default
|
||||
setting for this fix is :doc:`fix_modify virial yes <fix_modify>`.
|
||||
|
||||
Similar to the :doc:`fix rigid <fix_rigid>` command: The rigid fix
|
||||
computes a global scalar which can be accessed by various :doc:`output
|
||||
commands <Howto_output>`. The scalar value calculated by these fixes
|
||||
is "intensive". The scalar is the current temperature of the
|
||||
collection of rigid bodies. This is averaged over all rigid bodies
|
||||
and their translational and rotational degrees of freedom. The
|
||||
translational energy of a rigid body is 1/2 m v\^2, where m = total
|
||||
mass of the body and v = the velocity of its center of mass. The
|
||||
rotational energy of a rigid body is 1/2 I w\^2, where I = the moment
|
||||
of inertia tensor of the body and w = its angular velocity. Degrees
|
||||
of freedom constrained by the *force* and *torque* keywords are
|
||||
removed from this calculation.
|
||||
|
||||
All of these fixes compute a global array of values which can be
|
||||
accessed by various :doc:`output commands <Howto_output>`. The number
|
||||
of rows in the array is equal to the number of rigid bodies. The
|
||||
number of columns is 15. Thus for each rigid body, 15 values are
|
||||
stored: the xyz coords of the center of mass (COM), the xyz components
|
||||
of the COM velocity, the xyz components of the force acting on the
|
||||
COM, the xyz components of the torque acting on the COM, and the xyz
|
||||
image flags of the COM, which have the same meaning as image flags for
|
||||
atom positions (see the "dump" command). The force and torque values
|
||||
in the array are not affected by the *force* and *torque* keywords in
|
||||
the fix rigid command; they reflect values before any changes are made
|
||||
by those keywords.
|
||||
|
||||
The ordering of the rigid bodies (by row in the array) is as follows.
|
||||
For the *single* keyword there is just one rigid body. For the
|
||||
*molecule* keyword, the bodies are ordered by ascending molecule ID.
|
||||
For the *group* keyword, the list of group IDs determines the ordering
|
||||
of bodies.
|
||||
|
||||
The array values calculated by these fixes are "intensive", meaning
|
||||
they are independent of the number of atoms in the simulation.
|
||||
|
||||
No parameter of these fixes can be used with the *start/stop* keywords
|
||||
of the :doc:`run <run>` command. These fixes are not invoked during
|
||||
:doc:`energy minimization <minimize>`.
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
This fix is part of the LATBOLTZ package. It is only enabled if LAMMPS
|
||||
was built with that package. See the :doc:`Build package
|
||||
<Build_package>` page for more info.
|
||||
|
||||
Can only be used if a lattice-Boltzmann fluid has been created via the
|
||||
:doc:`fix lb/fluid <fix_lb_fluid>` command, and must come after this
|
||||
command. Should only be used if the force coupling constant used in
|
||||
:doc:`fix lb/fluid <fix_lb_fluid>` has been set by the user; this
|
||||
integration fix cannot be used if the force coupling constant is set
|
||||
by default.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`fix lb/fluid <fix_lb_fluid>`, :doc:`fix lb/pc <fix_lb_pc>`
|
||||
|
||||
Default
|
||||
"""""""
|
||||
|
||||
The defaults are force \* on on on, and torque \* on on on.
|
||||
|
||||
----------
|
||||
|
||||
.. _Mackay:
|
||||
|
||||
**(Mackay et al.)** Mackay, F. E., Ollila, S.T.T., and Denniston, C., Hydrodynamic Forces Implemented into LAMMPS through a lattice-Boltzmann fluid, Computer Physics Communications 184 (2013) 2021-2031.
|
||||
@ -25,27 +25,14 @@ Description
|
||||
|
||||
This fix is similar to the :doc:`fix viscous <fix_viscous>` command, and
|
||||
is to be used in place of that command when a lattice-Boltzmann fluid
|
||||
is present, and the user wishes to integrate the particle motion using
|
||||
one of the built in LAMMPS integrators.
|
||||
is present using the :doc:`fix lb/fluid <fix_lb_fluid>`. This should be used in conjunction with one of the built-in LAMMPS integrators, such as :doc:`fix NVE <fix_nve>` or :doc:`fix rigid <fix_rigid>`.
|
||||
|
||||
This fix adds a force, F = - Gamma\*(velocity-fluid_velocity), to each
|
||||
atom, where Gamma is the force coupling constant described in the :doc:`fix lb/fluid <fix_lb_fluid>` command (which applies an equal and
|
||||
opposite force to the fluid).
|
||||
|
||||
.. note::
|
||||
|
||||
This fix should only be used in conjunction with one of the
|
||||
built in LAMMPS integrators; it should not be used with the :doc:`fix lb/pc <fix_lb_pc>` or :doc:`fix lb/rigid/pc/sphere <fix_lb_rigid_pc_sphere>` integrators, which
|
||||
already include the hydrodynamic forces. These latter fixes should
|
||||
only be used if the force coupling constant has been set by the user
|
||||
(instead of using the default value); if the default force coupling
|
||||
value is used, then this fix provides the only method for adding the
|
||||
hydrodynamic forces to the particles.
|
||||
This fix adds a viscous force to each atom to cause it move with the same velocity as the fluid (an equal and opposite force is applied to the fluid via :doc:`fix lb/fluid <fix_lb_fluid>`). When :doc:`fix lb/fluid <fix_lb_fluid>` is called with the noise option, the atoms will also experience random forces which will thermalize them to the same temperature as the fluid. In this way, the combination of this fix with :doc:`fix lb/fluid <fix_lb_fluid>` and a LAMMPS integrator like :doc:`fix NVE <fix_nve>` is analogous to :doc:`fix langevin <fix_langevin>` except here the fluid is explicit. The temperature of the particles can be monitored via the scalar output of :doc:`fix lb/fluid <fix_lb_fluid>`.
|
||||
|
||||
----------
|
||||
|
||||
For further details, as well as descriptions and results of several
|
||||
test runs, see :ref:`Mackay et al. <Mackay3>`. Please include a citation to
|
||||
For details of this fix, as well as descriptions and results of several
|
||||
test runs, see :ref:`Denniston et al. <fluid-Denniston2>`. Please include a citation to
|
||||
this paper if this fix is used in work contributing to published
|
||||
research.
|
||||
|
||||
@ -78,14 +65,11 @@ Can only be used if a lattice-Boltzmann fluid has been created via the
|
||||
:doc:`fix lb/fluid <fix_lb_fluid>` command, and must come after this
|
||||
command.
|
||||
|
||||
This fix should not be used if either the :doc:`fix lb/pc <fix_lb_pc>`
|
||||
or :doc:`fix lb/rigid/pc/sphere <fix_lb_rigid_pc_sphere>` integrator is
|
||||
used.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`fix lb/fluid <fix_lb_fluid>`, :doc:`fix lb/pc <fix_lb_pc>`, :doc:`fix lb/rigid/pc/sphere <fix_lb_rigid_pc_sphere>`
|
||||
:doc:`fix lb/fluid <fix_lb_fluid>`
|
||||
|
||||
Default
|
||||
"""""""
|
||||
@ -94,6 +78,6 @@ none
|
||||
|
||||
----------
|
||||
|
||||
.. _Mackay3:
|
||||
.. _fluid-Denniston2:
|
||||
|
||||
**(Mackay et al.)** Mackay, F. E., Ollila, S.T.T., and Denniston, C., Hydrodynamic Forces Implemented into LAMMPS through a lattice-Boltzmann fluid, Computer Physics Communications 184 (2013) 2021-2031.
|
||||
**(Denniston et al.)** Denniston, C., Afrasiabian, N., Cole-Andre, M.G., Mackay, F. E., Ollila, S.T.T., and Whitehead, T., LAMMPS lb/fluid fix version 2: Improved Hydrodynamic Forces Implemented into LAMMPS through a lattice-Boltzmann fluid, Computer Physics Communications 275 (2022) `108318 <https://doi.org/10.1016/j.cpc.2022.108318>`_ .
|
||||
|
||||
@ -21,7 +21,7 @@ Syntax
|
||||
* ID, group-ID are documented in :doc:`fix <fix>` command
|
||||
* style = *polarize/bem/gmres* or *polarize/bem/icc* or *polarize/functional*
|
||||
* Nevery = this fixed is invoked every this many timesteps
|
||||
* tolerance = the tolerance for the iterative solver to stop
|
||||
* tolerance = the relative tolerance for the iterative solver to stop
|
||||
|
||||
|
||||
Examples
|
||||
@ -45,10 +45,45 @@ Description
|
||||
"""""""""""
|
||||
|
||||
These fixes compute induced charges at the interface between two
|
||||
impermeable media with different dielectric constants.
|
||||
impermeable media with different dielectric constants. The interfaces
|
||||
need to be discretized into vertices, each representing a boundary element.
|
||||
The vertices are treated as if they were regular atoms or particles.
|
||||
:doc:`atom_style dielectric <atom_style>` should be used since it defines
|
||||
the additional properties of each interface particle such as
|
||||
interface normal vectors, element areas, and local dielectric mismatch.
|
||||
These fixes also require the use of :doc:`pair_style <pair_style>` and
|
||||
:doc:`kspace_style <kspace_style>` with the *dielectric* suffix.
|
||||
At every time step, given a configuration of the physical charges in the system
|
||||
(such as atoms and charged particles) these fixes compute and update
|
||||
the charge of the interface particles. The interfaces are allowed to move
|
||||
during the simulation with appropriate time integrators (for example,
|
||||
with :doc:`fix_rigid <fix_rigid>`).
|
||||
|
||||
There are some example scripts for using this fix
|
||||
with LAMMPS in the examples/PACKAGES/dielectric directory.
|
||||
Consider an interface between two media: one with dielectric constant
|
||||
of 78 (water), the other of 4 (silica). The interface is discretized
|
||||
into 2000 boundary elements, each represented by an interface particle. Suppose that
|
||||
each interface particle has a normal unit vector pointing from the silica medium to water.
|
||||
The dielectric difference along the normal vector is then 78 - 4 = 74,
|
||||
the mean dielectric value is (78 + 4) / 2 = 41. Each boundary element
|
||||
also has its area and the local mean curvature (which is used by these fixes
|
||||
for computing a correction term in the local electric field).
|
||||
To model charged interfaces, the interface particle will have a non-zero charge value,
|
||||
coming from its area and surface charge density.
|
||||
|
||||
For non-interface particles such as atoms and charged particles,
|
||||
the interface normal vectors, element area, and dielectric mismatch are
|
||||
irrelevant. Their local dielectric value is used to rescale their actual charge
|
||||
when computing the Coulombic interactions. For instance, for a cation carrying
|
||||
a charge of +2 (in charge unit) in an implicit solvent with dielectric constant of 40
|
||||
would have actual charge of +2, and a local dielectric constant value of 40.
|
||||
It is assumed that the particles cannot pass through the interface during the simulation
|
||||
so that its local dielectric constant value does not change.
|
||||
|
||||
There are some example scripts for using these fixes
|
||||
with LAMMPS in the ``examples/PACKAGES/dielectric directory``. The README file
|
||||
therein contains specific details on the system setup. Note that the example data files
|
||||
show the additional fields (columns) needed for :doc:`atom_style dielectric <atom_style>`
|
||||
beyond the conventional fields *id*, *mol*, *type*, *q*, *x*, *y*, and *z*.
|
||||
|
||||
----------
|
||||
|
||||
@ -75,12 +110,41 @@ as described in :ref:`(Barros) <Barros>` to solve :math:`\sigma_b`.
|
||||
Fix *polarize/bem/icc* employs the successive over-relaxation algorithm
|
||||
as described in :ref:`(Tyagi) <Tyagi>` to solve :math:`\sigma_b`.
|
||||
|
||||
Fix *polarize/functional* ...
|
||||
The iterative solvers would terminate either when the maximum relative change
|
||||
in the induced charges in consecutive iterations is below the set tolerance,
|
||||
or when the number of iterations reaches *iter_max* (see below).
|
||||
|
||||
Fix *polarize/functional* employs the energy functional variation approach
|
||||
as described in :ref:`(Jadhao) <Jadhao>` to solve :math:`\sigma_b`.
|
||||
|
||||
|
||||
More details on the implementation of these fixes and their recommended use
|
||||
are described in :ref:`(NguyenTD) <NguyenTD>`.
|
||||
|
||||
|
||||
Restart, fix_modify, output, run start/stop, minimize info
|
||||
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
...
|
||||
No information about this fix is written to :doc:`binary restart files <restart>`.
|
||||
|
||||
The :doc:`fix_modify <fix_modify>` command provides certain options to
|
||||
control the induced charge solver and the initial values of the interface elements:
|
||||
|
||||
.. parsed-literal::
|
||||
*itr_max* arg
|
||||
arg = maximum number of iterations for convergence
|
||||
*dielectrics* ediff emean epsilon area charge
|
||||
ediff = dielectric difference
|
||||
emean = dielectric mean
|
||||
epsilon = local dielectric value
|
||||
aree = element area
|
||||
charge = real interface charge
|
||||
|
||||
*polarize/bem/gmres* or *polarize/bem/icc* compute a global 2-element vector
|
||||
which can be accessed by various :doc:`output commands <Howto_output>`.
|
||||
The first element is the number of iterations when the solver terminates
|
||||
(of which the upper bound is set by *iter_max*). The second element is the RMS error.
|
||||
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
@ -94,12 +158,15 @@ KSPACE package is installed. See the :doc:`Build package
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
:doc:`pair_coeff <pair_coeff>`, :doc:`fix polarize <fix_polarize>`, :doc:`read_data <read_data>`,
|
||||
:doc:`pair_style lj/cut/coul/long/dielectric <pair_dielectric>`,
|
||||
:doc:`kspace_style pppm/dielectric <kspace_style>`,
|
||||
:doc:`compute efield/atom <compute_efield_atom>`
|
||||
|
||||
Default
|
||||
"""""""
|
||||
|
||||
None.
|
||||
*iter_max* = 20
|
||||
|
||||
----------
|
||||
|
||||
|
||||
@ -201,9 +201,11 @@ larger sizes, and *qeq/fire* is faster than *qeq/dynamic*\ .
|
||||
|
||||
.. note::
|
||||
|
||||
To avoid the evaluation of the derivative of charge with respect
|
||||
to position, which is typically ill-defined, the system should have a
|
||||
zero net charge.
|
||||
In order to solve the self-consistent equations for electronegativity
|
||||
equalization, LAMMPS imposes the additional constraint that all the
|
||||
charges in the fix group must add up to zero. The initial charge
|
||||
assignments should also satisfy this constraint. LAMMPS will print a
|
||||
warning if that is not the case.
|
||||
|
||||
.. note::
|
||||
|
||||
|
||||
@ -63,6 +63,14 @@ performing charge equilibration (more iterations) and accuracy.
|
||||
If the *file* keyword is used, then information about each
|
||||
equilibration calculation is written to the specified file.
|
||||
|
||||
.. note::
|
||||
|
||||
In order to solve the self-consistent equations for electronegativity
|
||||
equalization, LAMMPS imposes the additional constraint that all the
|
||||
charges in the fix group must add up to zero. The initial charge
|
||||
assignments should also satisfy this constraint. LAMMPS will print a
|
||||
warning if that is not the case.
|
||||
|
||||
----------
|
||||
|
||||
.. include:: accel_styles.rst
|
||||
|
||||
@ -77,6 +77,8 @@ of this fix are hard-coded to be A, eV, and electronic charge.
|
||||
The optional *dual* keyword allows to perform the optimization
|
||||
of the S and T matrices in parallel. This is only supported for
|
||||
the *qeq/reaxff/omp* style. Otherwise they are processed separately.
|
||||
The *qeq/reaxff/kk* style always solves the S and T matrices in
|
||||
parallel.
|
||||
|
||||
The optional *maxiter* keyword allows changing the max number
|
||||
of iterations in the linear solver. The default value is 200.
|
||||
@ -88,6 +90,14 @@ same fixed number of QEq iterations is desired, which can be achieved
|
||||
by using a very small tolerance and setting *maxiter* to the desired
|
||||
number of iterations.
|
||||
|
||||
.. note::
|
||||
|
||||
In order to solve the self-consistent equations for electronegativity
|
||||
equalization, LAMMPS imposes the additional constraint that all the
|
||||
charges in the fix group must add up to zero. The initial charge
|
||||
assignments should also satisfy this constraint. LAMMPS will print a
|
||||
warning if that is not the case.
|
||||
|
||||
Restart, fix_modify, output, run start/stop, minimize info
|
||||
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
||||
|
||||
|
||||
@ -20,7 +20,7 @@ Examples
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
pair_style harmonic/cut 2.5
|
||||
pair_style harmonic/cut
|
||||
pair_coeff * * 0.2 2.0
|
||||
pair_coeff 1 1 0.5 2.5
|
||||
|
||||
@ -58,7 +58,7 @@ coefficients can be mixed. The default mix value is *geometric*.
|
||||
See the "pair_modify" command for details.
|
||||
|
||||
Since the potential is zero at and beyond the cutoff parameter by
|
||||
construction, there is no need to support support the :doc:`pair_modify
|
||||
construction, there is no need to support the :doc:`pair_modify
|
||||
<pair_modify>` shift or tail options for the energy and pressure of the
|
||||
pair interaction.
|
||||
|
||||
|
||||
@ -94,10 +94,6 @@ boron nitride nanotubes.
|
||||
Atoms belonging to different CNTs need to be assigned
|
||||
different molecule IDs.
|
||||
|
||||
A full summary of the method and LAMMPS implementation details
|
||||
is expected to soon become available in Computer Physics
|
||||
Communications.
|
||||
|
||||
----------
|
||||
|
||||
Mixing, shift, table, tail correction, restart, rRESPA info
|
||||
|
||||
@ -20,6 +20,9 @@ Examples
|
||||
pair_style python 2.5
|
||||
pair_coeff * * py_pot.LJCutMelt lj
|
||||
|
||||
pair_style python 10.0
|
||||
pair_coeff * * py_pot.HarmonicCut A B
|
||||
|
||||
pair_style hybrid/overlay coul/long 12.0 python 12.0
|
||||
pair_coeff * * coul/long
|
||||
pair_coeff * * python py_pot.LJCutSPCE OW NULL
|
||||
@ -159,23 +162,82 @@ Following the *LJCutMelt* example, here are the two functions:
|
||||
to be multiplied by delta x, delta y, and delta z to conveniently obtain
|
||||
the three components of the force vector between these two atoms.
|
||||
|
||||
Below is a more complex example using *real* units and defines an interaction
|
||||
equivalent to:
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
units real
|
||||
pair_style harmonic/cut
|
||||
pair_coeff 1 1 0.2 9.0
|
||||
pair_coeff 2 2 0.4 9.0
|
||||
|
||||
This uses the default geometric mixing. The equivalent input with pair
|
||||
style *python* is:
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
units real
|
||||
pair_style python 10.0
|
||||
pair_coeff * * py_pot.Harmonic A B
|
||||
|
||||
Note that while for pair style *harmonic/cut* the cutoff is implicitly
|
||||
set to the minimum of the harmonic potential, for pair style python a
|
||||
global cutoff must be set and it must be equal or larger to the implicit
|
||||
cutoff of the potential in python, which has to explicitly return zero
|
||||
force and energy beyond the cutoff. Also, the mixed parameters have to
|
||||
be explicitly provided. The corresponding python code is:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
class Harmonic(LAMMPSPairPotential):
|
||||
def __init__(self):
|
||||
super(Harmonic,self).__init__()
|
||||
self.units = 'real'
|
||||
# set coeffs: K, r0
|
||||
self.coeff = {'A' : {'A' : (0.2,9.0),
|
||||
'B' : (math.sqrt(0.2*0.4),9.0)},
|
||||
'B' : {'A' : (math.sqrt(0.2*0.4),9.0),
|
||||
'B' : (0.4,9.0)}}
|
||||
|
||||
def compute_force(self,rsq,itype,jtype):
|
||||
coeff = self.coeff[self.pmap[itype]][self.pmap[jtype]]
|
||||
r = math.sqrt(rsq)
|
||||
delta = coeff[1]-r
|
||||
if (r < coeff[1]):
|
||||
return 2.0*delta*coeff[0]/r
|
||||
else:
|
||||
return 0.0
|
||||
|
||||
def compute_energy(self,rsq,itype,jtype):
|
||||
coeff = self.coeff[self.pmap[itype]][self.pmap[jtype]]
|
||||
r = math.sqrt(rsq)
|
||||
delta = coeff[1]-r
|
||||
if (r < coeff[1]):
|
||||
return delta*delta*coeff[0]
|
||||
else:
|
||||
return 0.0
|
||||
|
||||
----------
|
||||
|
||||
.. note::
|
||||
.. admonition:: Performance Impact
|
||||
:class: note
|
||||
|
||||
The evaluation of scripted python code will slow down the
|
||||
computation pairwise interactions quite significantly. However, this
|
||||
can be largely worked around through using the python pair style not
|
||||
for the actual simulation, but to generate tabulated potentials on the
|
||||
fly using the :doc:`pair_write <pair_write>` command. Please see below
|
||||
for an example LAMMPS input of how to build a table file:
|
||||
The evaluation of scripted python code will slow down the computation
|
||||
of pairwise interactions quite significantly. However, this performance
|
||||
penalty can be worked around through using the python pair style not
|
||||
for the actual simulation, but to generate tabulated potentials using
|
||||
the :doc:`pair_write <pair_write>` command. This will also enable
|
||||
GPU or multi-thread acceleration through the GPU, KOKKOS, or OPENMP
|
||||
package versions of the *table* pair style. Please see below for a
|
||||
LAMMPS input example demonstrating how to build a table file:
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
pair_style python 2.5
|
||||
pair_coeff * * py_pot.LJCutMelt lj
|
||||
shell rm -f melt.table
|
||||
pair_write 1 1 2000 rsq 0.01 2.5 lj1_lj2.table lj
|
||||
shell rm -f lj.table
|
||||
pair_write 1 1 2000 rsq 0.01 2.5 lj.table lj
|
||||
|
||||
Note that it is strongly recommended to try to **delete** the potential
|
||||
table file before generating it. Since the *pair_write* command will
|
||||
@ -190,7 +252,7 @@ to be assigned to the LAMMPS atom types like this:
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
pair_style table linear 2000
|
||||
pair_coeff 1 1 melt.table lj
|
||||
pair_coeff 1 1 lj.table lj
|
||||
|
||||
This can also be done for more complex systems. Please see the
|
||||
*examples/python* folders for a few more examples.
|
||||
|
||||
@ -19,13 +19,15 @@ Syntax
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
keyword = *checkqeq* or *lgvdw* or *safezone* or *mincap* or *minhbonds*
|
||||
keyword = *checkqeq* or *lgvdw* or *safezone* or *mincap* or *minhbonds* or *tabulate* or *list/blocking*
|
||||
*checkqeq* value = *yes* or *no* = whether or not to require qeq/reaxff or acks2/reaxff fix
|
||||
*enobonds* value = *yes* or *no* = whether or not to tally energy of atoms with no bonds
|
||||
*lgvdw* value = *yes* or *no* = whether or not to use a low gradient vdW correction
|
||||
*safezone* = factor used for array allocation
|
||||
*mincap* = minimum size for array allocation
|
||||
*minhbonds* = minimum size use for storing hydrogen bonds
|
||||
*tabulate* value = size of interpolation table for Lennard-Jones and Coulomb interactions
|
||||
*list/blocking* value = *yes* or *no* = whether or not to use "blocking" scheme for bond list build
|
||||
|
||||
Examples
|
||||
""""""""
|
||||
@ -158,6 +160,21 @@ the Kokkos version, which instead uses a more robust memory allocation
|
||||
scheme that checks if the sizes of the arrays have been exceeded and
|
||||
automatically allocates more memory.
|
||||
|
||||
The keyword *tabulate* controls the size of interpolation table for
|
||||
Lennard-Jones and Coulomb interactions. Tabulation may also be set in the
|
||||
control file (see below). If tabulation is set in both the input script and the
|
||||
control file, the value in the control file will be ignored. A size of 10000 is
|
||||
typically used for the interpolation table. A value of 0 means no tabulation
|
||||
will be used.
|
||||
|
||||
The keyword *list/blocking* is only supported by the Kokkos version of
|
||||
ReaxFF and ignored otherwise. Setting the value to *yes* enables the
|
||||
"blocking" scheme (dynamically building interaction lists) for the
|
||||
ReaxFF bond neighbor list. This reduces the number of empty
|
||||
interactions and can improve performance in some cases (e.g. large
|
||||
number of atoms/GPU on AMD hardware). It is also enabled by default
|
||||
when running the CPU with Kokkos.
|
||||
|
||||
The thermo variable *evdwl* stores the sum of all the ReaxFF potential
|
||||
energy contributions, with the exception of the Coulombic and charge
|
||||
equilibration contributions which are stored in the thermo variable
|
||||
@ -360,8 +377,9 @@ Related commands
|
||||
Default
|
||||
"""""""
|
||||
|
||||
The keyword defaults are checkqeq = yes, enobonds = yes, lgvdw = no,
|
||||
safezone = 1.2, mincap = 50, minhbonds = 25.
|
||||
The keyword defaults are checkqeq = yes, enobonds = yes, lgvdw = no, safezone =
|
||||
1.2, mincap = 50, minhbonds = 25, tabulate = 0, list/blocking = yes on CPU, no
|
||||
on GPU.
|
||||
|
||||
----------
|
||||
|
||||
|
||||
@ -135,7 +135,8 @@ with #) anywhere. Each non-blank non-comment line must contain one
|
||||
keyword/value pair. The required keywords are *rcutfac* and
|
||||
*twojmax*\ . Optional keywords are *rfac0*, *rmin0*,
|
||||
*switchflag*, *bzeroflag*, *quadraticflag*, *chemflag*,
|
||||
*bnormflag*, *wselfallflag*, *chunksize*, and *parallelthresh*\ .
|
||||
*bnormflag*, *wselfallflag*, *switchinnerflag*,
|
||||
*rinner*, *drinner*, *chunksize*, and *parallelthresh*\ .
|
||||
|
||||
The default values for these keywords are
|
||||
|
||||
@ -147,6 +148,7 @@ The default values for these keywords are
|
||||
* *chemflag* = 0
|
||||
* *bnormflag* = 0
|
||||
* *wselfallflag* = 0
|
||||
* *switchinnerflag* = 0
|
||||
* *chunksize* = 32768
|
||||
* *parallelthresh* = 8192
|
||||
|
||||
@ -189,6 +191,16 @@ corresponding *K*-vector of linear coefficients for element
|
||||
which must equal the number of unique elements appearing in the LAMMPS
|
||||
pair_coeff command, to avoid ambiguity in the number of coefficients.
|
||||
|
||||
The keyword *switchinnerflag* activates an additional switching function
|
||||
that smoothly turns off contributions to the SNAP potential from neighbor
|
||||
atoms at short separations. If *switchinnerflag* is set to 1 then
|
||||
the additional keywords *rinner* and *drinner* must also be provided.
|
||||
Each of these is followed by *nelements* values, where *nelements*
|
||||
is the number of unique elements appearing in appearing in the LAMMPS
|
||||
pair_coeff command. The element order should correspond to the order
|
||||
in which elements first appear in the pair_coeff command reading from
|
||||
left to right.
|
||||
|
||||
The keywords *chunksize* and *parallelthresh* are only applicable when
|
||||
using the pair style *snap* with the KOKKOS package on GPUs and are
|
||||
ignored otherwise. The *chunksize* keyword controls the number of atoms
|
||||
|
||||
@ -67,20 +67,34 @@ If the pair_style command has a cutoff argument, it sets global
|
||||
cutoffs for all pairs of atom types. The distance(s) can be smaller
|
||||
or larger than the dimensions of the simulation box.
|
||||
|
||||
Typically, the global cutoff value can be overridden for a specific
|
||||
pair of atom types by the :doc:`pair_coeff <pair_coeff>` command. The
|
||||
pair style settings (including global cutoffs) can be changed by a
|
||||
subsequent pair_style command using the same style. This will reset
|
||||
the cutoffs for all atom type pairs, including those previously set
|
||||
explicitly by a :doc:`pair_coeff <pair_coeff>` command. The exceptions
|
||||
to this are that pair_style *table* and *hybrid* settings cannot be
|
||||
reset. A new pair_style command for these styles will wipe out all
|
||||
previously specified pair_coeff values.
|
||||
In many cases, the global cutoff value can be overridden for a
|
||||
specific pair of atom types by the :doc:`pair_coeff <pair_coeff>`
|
||||
command.
|
||||
|
||||
If a new pair_style command is specified with a new style, all
|
||||
previous :doc:`pair_coeff <pair_coeff>` and :doc:`pair_modify
|
||||
<pair_modify>` command settings are erased; those commands must be
|
||||
re-specified if necessary.
|
||||
|
||||
If a new pair_style command is specified with the same style, then
|
||||
only the global settings in that command are reset. Any previous
|
||||
doc:`pair_coeff <pair_coeff>` and :doc:`pair_modify <pair_modify>`
|
||||
command settings are preserved. The only exception is that if the
|
||||
global cutoff in the pair_style command is changed, it will override
|
||||
the corresponding cutoff in any of the previous doc:`pair_modify
|
||||
<pair_coeff>` commands.
|
||||
|
||||
Two pair styles which do not follow this rule are the pair_style
|
||||
*table* and *hybrid* commands. A new pair_style command for these
|
||||
styles will wipe out all previously specified doc:`pair_coeff
|
||||
<pair_coeff>` and :doc:`pair_modify <pair_modify>` settings, including
|
||||
for the sub-styles of the *hybrid* command.
|
||||
|
||||
----------
|
||||
|
||||
Here is an alphabetic list of pair styles defined in LAMMPS. They are
|
||||
also listed in more compact form on the :doc:`Commands pair <Commands_pair>` doc page.
|
||||
also listed in more compact form on the :doc:`Commands pair
|
||||
<Commands_pair>` doc page.
|
||||
|
||||
Click on the style to display the formula it computes, any additional
|
||||
arguments specified in the pair_style command, and coefficients
|
||||
|
||||
@ -56,6 +56,15 @@ styles and names.
|
||||
|
||||
The *clear* command will unload all currently loaded plugins.
|
||||
|
||||
.. admonition:: Automatic loading of plugins
|
||||
:class: note
|
||||
|
||||
When the environment variable ``LAMMPS_PLUGIN_PATH`` is set, then
|
||||
LAMMPS will search the directory (or directories) listed in this path
|
||||
for files with names that end in ``plugin.so``
|
||||
(e.g. ``helloplugin.so``) and will try to load the contained plugins
|
||||
automatically at start-up.
|
||||
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
@ -20,8 +20,9 @@ Syntax
|
||||
dir1,dir2 = one or more directories to create
|
||||
*mv* args = old new
|
||||
old = old filename
|
||||
new = new filename
|
||||
*rm* args = file1 file2 ...
|
||||
new = new filename or destination folder
|
||||
*rm* args = [-f] file1 file2 ...
|
||||
-f = turn off warnings (optional)
|
||||
file1,file2 = one or more filenames to delete
|
||||
*rmdir* args = dir1 dir2 ...
|
||||
dir1,dir2 = one or more directories to delete
|
||||
@ -36,8 +37,8 @@ Examples
|
||||
|
||||
shell cd sub1
|
||||
shell cd ..
|
||||
shell mkdir tmp1 tmp2 tmp3
|
||||
shell rmdir tmp1
|
||||
shell mkdir tmp1 tmp2/tmp3
|
||||
shell rmdir tmp1 tmp2
|
||||
shell mv log.lammps hold/log.1
|
||||
shell rm TMP/file1 TMP/file2
|
||||
shell putenv LAMMPS_POTENTIALS=../../potentials
|
||||
@ -50,34 +51,39 @@ Description
|
||||
Execute a shell command. A few simple file-based shell commands are
|
||||
supported directly, in Unix-style syntax. Any command not listed
|
||||
above is passed as-is to the C-library system() call, which invokes
|
||||
the command in a shell.
|
||||
the command in a shell. To use the external executable instead of
|
||||
the built-in version one needs to use a full path, for example
|
||||
*/bin/rm* instead of *rm*. The built-in commands will also work
|
||||
on operating systems, that do not - by default - provide the
|
||||
corresponding external executables (like *mkdir* on Windows).
|
||||
|
||||
This is means to invoke other commands from your input script. For
|
||||
example, you can move files around in preparation for the next section
|
||||
of the input script. Or you can run a program that pre-processes data
|
||||
for input into LAMMPS. Or you can run a program that post-processes
|
||||
LAMMPS output data.
|
||||
This command provides a ways to invoke custom commands or executables
|
||||
from your input script. For example, you can move files around in
|
||||
preparation for the next section of the input script. Or you can run a
|
||||
program that pre-processes data for input into LAMMPS. Or you can run a
|
||||
program that post-processes LAMMPS output data.
|
||||
|
||||
With the exception of *cd*, all commands, including ones invoked via a
|
||||
system() call, are executed by only a single processor, so that
|
||||
files/directories are not being manipulated by multiple processors.
|
||||
files/directories are not being manipulated by multiple processors
|
||||
concurrently which may result in unexpected errors or corrupted files.
|
||||
|
||||
The *cd* command executes the Unix "cd" command to change the working
|
||||
directory. All subsequent LAMMPS commands that read/write files will
|
||||
use the new directory. All processors execute this command.
|
||||
The *cd* command changes the current working directory similar to
|
||||
the ``cd`` command. All subsequent LAMMPS commands that read/write files
|
||||
will use the new directory. All processors execute this command.
|
||||
|
||||
The *mkdir* command executes the Unix "mkdir" command to create one or
|
||||
more directories.
|
||||
The *mkdir* command creates directories similar to the Unix ``mkdir -p``
|
||||
command. That is, it will attempt to create the entire path of
|
||||
sub-directories if they do not exist yet.
|
||||
|
||||
The *mv* command executes the Unix "mv" command to rename a file and/or
|
||||
move it to a new directory.
|
||||
The *mv* command renames a file and/or moves it to a new directory.
|
||||
It cannot rename files across filesystem boundaries or between drives.
|
||||
|
||||
The *rm* command executes the Unix "rm" command to remove one or more
|
||||
files.
|
||||
The *rm* command deletes file similar to the Unix ``rm`` command.
|
||||
|
||||
The *rmdir* command executes the Unix "rmdir" command to remove one or
|
||||
more directories. A directory must be empty to be successfully
|
||||
removed.
|
||||
The *rmdir* command deletes directories similar to Unix ``rmdir`` command.
|
||||
If a directory is not empty, its contents are also removed recursively
|
||||
similar to the Unix ``rm -r`` command.
|
||||
|
||||
The *putenv* command defines or updates an environment variable directly.
|
||||
Since this command does not pass through the shell, no shell variable
|
||||
@ -107,9 +113,9 @@ with 3 arguments: file1 10 file2.
|
||||
Restrictions
|
||||
""""""""""""
|
||||
|
||||
LAMMPS does not detect errors or print warnings when any of these
|
||||
commands execute. E.g. if the specified directory does not exist,
|
||||
executing the *cd* command will silently do nothing.
|
||||
LAMMPS will do a best effort to detect errors and print suitable
|
||||
warnings, but due to the nature of delegating commands to the C-library
|
||||
system() call, this is not always reliable.
|
||||
|
||||
Related commands
|
||||
""""""""""""""""
|
||||
|
||||
@ -32,18 +32,20 @@ The content and format of what is printed is controlled by the
|
||||
:doc:`thermo_style <thermo_style>` and
|
||||
:doc:`thermo_modify <thermo_modify>` commands.
|
||||
|
||||
Instead of a numeric value, N can be specified as an :doc:`equal-style variable <variable>`, 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
|
||||
thermodynamic info 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 :doc:`equal-style variables <variable>`, as examples of useful functions to use in
|
||||
this context. Other similar math functions could easily be added as
|
||||
options for :doc:`equal-style variables <variable>`.
|
||||
Instead of a numeric value, N can be specified as an :doc:`equal-style
|
||||
variable <variable>`, 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 thermodynamic
|
||||
info 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 :doc:`equal-style variables <variable>`, as
|
||||
examples of useful functions to use in this context. Other similar math
|
||||
functions could easily be added as options for :doc:`equal-style
|
||||
variables <variable>`.
|
||||
|
||||
For example, the following commands will output thermodynamic info at
|
||||
timesteps 0,10,20,30,100,200,300,1000,2000,etc:
|
||||
timesteps 0, 10, 20, 30, 100, 200, 300, 1000, 2000, *etc*:
|
||||
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
|
||||
@ -20,7 +20,7 @@ Syntax
|
||||
*warn* value = *ignore* or *reset* or *default* or a number
|
||||
*norm* value = *yes* or *no*
|
||||
*flush* value = *yes* or *no*
|
||||
*line* value = *one* or *multi*
|
||||
*line* value = *one* or *multi* or *yaml*
|
||||
*format* values = *line* string, *int* string, *float* string, M string, or *none*
|
||||
string = C-style format string
|
||||
M = integer from 1 to N, where N = # of quantities being output
|
||||
@ -36,35 +36,35 @@ Examples
|
||||
thermo_modify temp myTemp format 3 %15.8g
|
||||
thermo_modify temp myTemp format line "%ld %g %g %15.8g"
|
||||
thermo_modify line multi format float %g
|
||||
themos_modify line yaml format none
|
||||
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
Set options for how thermodynamic information is computed and printed
|
||||
by LAMMPS.
|
||||
Set options for how thermodynamic information is computed and printed by
|
||||
LAMMPS.
|
||||
|
||||
.. note::
|
||||
|
||||
These options apply to the currently defined thermo style. When
|
||||
These options apply to the *currently defined* thermo style. When
|
||||
you specify a :doc:`thermo_style <thermo_style>` command, all
|
||||
thermodynamic settings are restored to their default values, including
|
||||
those previously reset by a thermo_modify command. Thus if your input
|
||||
script specifies a thermo_style command, you should use the
|
||||
thermo_modify command after it.
|
||||
thermodynamic settings are restored to their default values,
|
||||
including those previously reset by a thermo_modify command. Thus if
|
||||
your input script specifies a thermo_style command, you should use
|
||||
the thermo_modify command **after** it.
|
||||
|
||||
The *lost* keyword determines whether LAMMPS checks for lost atoms
|
||||
each time it computes thermodynamics and what it does if atoms are
|
||||
lost. An atom can be "lost" if it moves across a non-periodic
|
||||
simulation box :doc:`boundary <boundary>` or if it moves more than a box
|
||||
length outside the simulation domain (or more than a processor
|
||||
sub-domain length) before reneighboring occurs. The latter case is
|
||||
typically due to bad dynamics, e.g. too large a timestep or huge
|
||||
forces and velocities. If the value is *ignore*, LAMMPS does not
|
||||
check for lost atoms. If the value is *error* or *warn*, LAMMPS
|
||||
checks and either issues an error or warning. The code will exit with
|
||||
an error and continue with a warning. A warning will only be issued
|
||||
once, the first time an atom is lost. This can be a useful debugging
|
||||
option.
|
||||
The *lost* keyword determines whether LAMMPS checks for lost atoms each
|
||||
time it computes thermodynamics and what it does if atoms are lost. An
|
||||
atom can be "lost" if it moves across a non-periodic simulation box
|
||||
:doc:`boundary <boundary>` or if it moves more than a box length outside
|
||||
the simulation domain (or more than a processor sub-domain length)
|
||||
before reneighboring occurs. The latter case is typically due to bad
|
||||
dynamics, e.g. too large a timestep or huge forces and velocities. If
|
||||
the value is *ignore*, LAMMPS does not check for lost atoms. If the
|
||||
value is *error* or *warn*, LAMMPS checks and either issues an error or
|
||||
warning. The code will exit with an error and continue with a warning.
|
||||
A warning will only be issued once, the first time an atom is lost.
|
||||
This can be a useful debugging option.
|
||||
|
||||
The *lost/bond* keyword determines whether LAMMPS throws an error or
|
||||
not if an atom in a bonded interaction (bond, angle, etc) cannot be
|
||||
@ -109,55 +109,55 @@ will be reset to zero, and with the value *default*, the counter is
|
||||
reset and the limit set to 100. An example usage of either *reset* or
|
||||
*default* would be to re-enable warnings that were disabled or have
|
||||
reached the limit during equilibration, where the warnings would be
|
||||
acceptable while the system is still adjusting, but then change
|
||||
to all warnings for the production run, where they would indicate
|
||||
problems that would require a closer look at what is causing them.
|
||||
acceptable while the system is still adjusting, but then change to all
|
||||
warnings for the production run, where they would indicate problems that
|
||||
would require a closer look at what is causing them.
|
||||
|
||||
The *norm* keyword determines whether various thermodynamic output
|
||||
values are normalized by the number of atoms or not, depending on
|
||||
whether it is set to *yes* or *no*\ . Different unit styles have
|
||||
different defaults for this setting (see below). Even if *norm* is
|
||||
set to *yes*, a value is only normalized if it is an "extensive"
|
||||
quantity, meaning that it scales with the number of atoms in the
|
||||
system. For the thermo keywords described by the page for the
|
||||
:doc:`thermo_style <thermo_style>` command, all energy-related keywords
|
||||
are extensive, such as *pe* or *ebond* or *enthalpy*\ . Other keywords
|
||||
such as *temp* or *press* are "intensive" meaning their value is
|
||||
independent (in a statistical sense) of the number of atoms in the
|
||||
system and thus are never normalized. For thermodynamic output values
|
||||
extracted from fixes and computes in a :doc:`thermo_style custom <thermo_style>` command, the page for the individual
|
||||
:doc:`fix <fix>` or :doc:`compute <compute>` lists whether the value is
|
||||
"extensive" or "intensive" and thus whether it is normalized.
|
||||
Thermodynamic output values calculated by a variable formula are
|
||||
assumed to be "intensive" and thus are never normalized. You can
|
||||
always include a divide by the number of atoms in the variable formula
|
||||
if this is not the case.
|
||||
different defaults for this setting (see below). Even if *norm* is set
|
||||
to *yes*, a value is only normalized if it is an "extensive" quantity,
|
||||
meaning that it scales with the number of atoms in the system. For the
|
||||
thermo keywords described by the page for the :doc:`thermo_style
|
||||
<thermo_style>` command, all energy-related keywords are extensive, such
|
||||
as *pe* or *ebond* or *enthalpy*\ . Other keywords such as *temp* or
|
||||
*press* are "intensive" meaning their value is independent (in a
|
||||
statistical sense) of the number of atoms in the system and thus are
|
||||
never normalized. For thermodynamic output values extracted from fixes
|
||||
and computes in a :doc:`thermo_style custom <thermo_style>` command, the
|
||||
page for the individual :doc:`fix <fix>` or :doc:`compute <compute>`
|
||||
lists whether the value is "extensive" or "intensive" and thus whether
|
||||
it is normalized. Thermodynamic output values calculated by a variable
|
||||
formula are assumed to be "intensive" and thus are never normalized.
|
||||
You can always include a divide by the number of atoms in the variable
|
||||
formula if this is not the case.
|
||||
|
||||
The *flush* keyword invokes a flush operation after thermodynamic info
|
||||
is written to the screen and log file. This insures the output is
|
||||
updated and not buffered (by the application) even if LAMMPS halts
|
||||
before the simulation completes. Please note that this does not
|
||||
affect buffering by the OS or devices, so you may still lose data
|
||||
in case the simulation stops due to a hardware failure.
|
||||
before the simulation completes. Please note that this does not affect
|
||||
buffering by the OS or devices, so you may still lose data in case the
|
||||
simulation stops due to a hardware failure.
|
||||
|
||||
The *line* keyword determines whether thermodynamics will be output as
|
||||
a series of numeric values on one line or in a multi-line format with
|
||||
3 quantities with text strings per line and a dashed-line header
|
||||
containing the timestep and CPU time. This modify option overrides
|
||||
the *one* and *multi* thermo_style settings.
|
||||
The *line* keyword determines whether thermodynamics will be output as a
|
||||
series of numeric values on one line ("one"), in a multi-line format
|
||||
with 3 quantities with text strings per line and a dashed-line header
|
||||
containing the timestep and CPU time ("multi"), or in a YAML format
|
||||
block ("yaml"). This modify option overrides the *one*, *multi*, or
|
||||
*yaml* thermo_style settings.
|
||||
|
||||
The *format* keyword can be used to change the default numeric format
|
||||
of any of quantities the :doc:`thermo_style <thermo_style>` command
|
||||
outputs. All the specified format strings are C-style formats,
|
||||
e.g. as used by the C/C++ printf() command. The *line* keyword takes
|
||||
a single argument which is the format string for the entire line of
|
||||
thermo output, with N fields, which you must enclose in quotes if it
|
||||
is more than one field. The *int* and *float* keywords take a single
|
||||
format argument and are applied to all integer or floating-point
|
||||
quantities output. The setting for *M string* also takes a single
|
||||
format argument which is used for the Mth value output in each line,
|
||||
e.g. the fifth column is output in high precision for "format 5
|
||||
%20.15g".
|
||||
The *format* keyword can be used to change the default numeric format of
|
||||
any of quantities the :doc:`thermo_style <thermo_style>` command
|
||||
outputs. All the specified format strings are C-style formats, e.g. as
|
||||
used by the C/C++ printf() command. The *line* keyword takes a single
|
||||
argument which is the format string for the entire line of thermo
|
||||
output, with N fields, which you must enclose in quotes if it is more
|
||||
than one field. The *int* and *float* keywords take a single format
|
||||
argument and are applied to all integer or floating-point quantities
|
||||
output. The setting for *M string* also takes a single format argument
|
||||
which is used for the Mth value output in each line, e.g. the fifth
|
||||
column is output in high precision for "format 5 %20.15g".
|
||||
|
||||
The *format* keyword can be used multiple times. The precedence is
|
||||
that for each value in a line of output, the *M* format (if specified)
|
||||
@ -168,46 +168,46 @@ settings, reverting all values to their default format.
|
||||
|
||||
.. note::
|
||||
|
||||
The thermo output values *step* and *atoms* are stored
|
||||
internally as 8-byte signed integers, rather than the usual 4-byte
|
||||
signed integers. When specifying the *format int* option you can use
|
||||
a "%d"-style format identifier in the format string and LAMMPS will
|
||||
convert this to the corresponding 8-byte form when it is applied to
|
||||
those keywords. However, when specifying the *line* option or *format
|
||||
M string* option for *step* and *natoms*, you should specify a format
|
||||
The thermo output values *step* and *atoms* are stored internally as
|
||||
8-byte signed integers, rather than the usual 4-byte signed integers.
|
||||
When specifying the *format int* option you can use a "%d"-style
|
||||
format identifier in the format string and LAMMPS will convert this
|
||||
to the corresponding 8-byte form when it is applied to those
|
||||
keywords. However, when specifying the *line* option or *format M
|
||||
string* option for *step* and *natoms*, you should specify a format
|
||||
string appropriate for an 8-byte signed integer, e.g. one with "%ld".
|
||||
|
||||
The *temp* keyword is used to determine how thermodynamic temperature
|
||||
is calculated, which is used by all thermo quantities that require a
|
||||
The *temp* keyword is used to determine how thermodynamic temperature is
|
||||
calculated, which is used by all thermo quantities that require a
|
||||
temperature ("temp", "press", "ke", "etotal", "enthalpy", "pxx", etc).
|
||||
The specified compute ID must have been previously defined by the user
|
||||
via the :doc:`compute <compute>` command and it must be a style of
|
||||
compute that calculates a temperature. As described in the
|
||||
:doc:`thermo_style <thermo_style>` command, thermo output uses a default
|
||||
compute for temperature with ID = *thermo_temp*. This option allows
|
||||
the user to override the default.
|
||||
compute for temperature with ID = *thermo_temp*. This option allows the
|
||||
user to override the default.
|
||||
|
||||
The *press* keyword is used to determine how thermodynamic pressure is
|
||||
calculated, which is used by all thermo quantities that require a
|
||||
pressure ("press", "enthalpy", "pxx", etc). The specified compute ID
|
||||
must have been previously defined by the user via the
|
||||
:doc:`compute <compute>` command and it must be a style of compute that
|
||||
calculates a pressure. As described in the
|
||||
:doc:`thermo_style <thermo_style>` command, thermo output uses a default
|
||||
compute for pressure with ID = *thermo_press*. This option allows the
|
||||
user to override the default.
|
||||
must have been previously defined by the user via the :doc:`compute
|
||||
<compute>` command and it must be a style of compute that calculates a
|
||||
pressure. As described in the :doc:`thermo_style <thermo_style>`
|
||||
command, thermo output uses a default compute for pressure with ID =
|
||||
*thermo_press*. This option allows the user to override the default.
|
||||
|
||||
.. note::
|
||||
|
||||
If both the *temp* and *press* keywords are used in a single
|
||||
thermo_modify command (or in two separate commands), then the order in
|
||||
which the keywords are specified is important. Note that a :doc:`pressure compute <compute_pressure>` defines its own temperature compute as
|
||||
an argument when it is specified. The *temp* keyword will override
|
||||
this (for the pressure compute being used by thermodynamics), but only
|
||||
if the *temp* keyword comes after the *press* keyword. If the *temp*
|
||||
keyword comes before the *press* keyword, then the new pressure
|
||||
compute specified by the *press* keyword will be unaffected by the
|
||||
*temp* setting.
|
||||
thermo_modify command (or in two separate commands), then the order
|
||||
in which the keywords are specified is important. Note that a
|
||||
:doc:`pressure compute <compute_pressure>` defines its own
|
||||
temperature compute as an argument when it is specified. The *temp*
|
||||
keyword will override this (for the pressure compute being used by
|
||||
thermodynamics), but only if the *temp* keyword comes after the
|
||||
*press* keyword. If the *temp* keyword comes before the *press*
|
||||
keyword, then the new pressure compute specified by the *press*
|
||||
keyword will be unaffected by the *temp* setting.
|
||||
|
||||
Restrictions
|
||||
""""""""""""
|
||||
@ -225,7 +225,8 @@ The option defaults are lost = error, warn = 100, norm = yes for unit
|
||||
style of *lj*, norm = no for unit style of *real* and *metal*,
|
||||
flush = no, and temp/press = compute IDs defined by thermo_style.
|
||||
|
||||
The defaults for the line and format options depend on the thermo
|
||||
style. For styles "one" and "custom", the line and format defaults
|
||||
are "one", "%8d", and "%12.8g". For style "multi", the line and
|
||||
format defaults are "multi", "%8d", and "%14.4f".
|
||||
The defaults for the line and format options depend on the thermo style.
|
||||
For styles "one" and "custom", the line and format defaults are "one",
|
||||
"%10d", and "%12.8g". For style "multi", the line and format defaults
|
||||
are "multi", "%14d", and "%14.4f". For style "yaml", the line and format
|
||||
defaults are "%d" and "%.15g".
|
||||
|
||||
@ -10,13 +10,14 @@ Syntax
|
||||
|
||||
thermo_style style args
|
||||
|
||||
* style = *one* or *multi* or *custom*
|
||||
* style = *one* or *multi* *yaml* or *custom*
|
||||
* args = list of arguments for a particular style
|
||||
|
||||
.. parsed-literal::
|
||||
|
||||
*one* args = none
|
||||
*multi* args = none
|
||||
*yaml* args = none
|
||||
*custom* args = list of keywords
|
||||
possible keywords = step, elapsed, elaplong, dt, time,
|
||||
cpu, tpcpu, spcpu, cpuremain, part, timeremain,
|
||||
@ -92,6 +93,8 @@ Examples
|
||||
.. code-block:: LAMMPS
|
||||
|
||||
thermo_style multi
|
||||
thermo_style yaml
|
||||
thermo_style one
|
||||
thermo_style custom step temp pe etotal press vol
|
||||
thermo_style custom step temp etotal c_myTemp v_abc
|
||||
thermo_style custom step temp etotal c_myTemp[*] v_abc
|
||||
@ -99,18 +102,35 @@ Examples
|
||||
Description
|
||||
"""""""""""
|
||||
|
||||
Set the style and content for printing thermodynamic data to the
|
||||
screen and log file.
|
||||
Set the style and content for printing thermodynamic data to the screen
|
||||
and log files.
|
||||
|
||||
Style *one* prints a one-line summary of thermodynamic info that is
|
||||
the equivalent of "thermo_style custom step temp epair emol etotal
|
||||
press". The line contains only numeric values.
|
||||
Style *one* prints a single line of thermodynamic info that is the
|
||||
equivalent of "thermo_style custom step temp epair emol etotal press".
|
||||
The line contains only numeric values.
|
||||
|
||||
Style *multi* prints a multiple-line listing of thermodynamic info
|
||||
that is the equivalent of "thermo_style custom etotal ke temp pe ebond
|
||||
eangle edihed eimp evdwl ecoul elong press". The listing contains
|
||||
numeric values and a string ID for each quantity.
|
||||
|
||||
.. versionadded:: 24Mar2022
|
||||
|
||||
Style *yaml* is similar to style *one* but prints the output in `YAML
|
||||
<https://yaml.org/>`_ format which can be easily read by a variety of
|
||||
script languages and data handling packages. Since LAMMPS may print
|
||||
other output before, after, or in between thermodynamic output, the
|
||||
YAML format content needs to be separated from the rest. All YAML
|
||||
format thermodynamic output can be matched with a regular expression
|
||||
and can thus be extracted with commands like ``egrep`` as follows:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
egrep '^(keywords:|data:$|---$|\.\.\.$| - \[)' log.lammps > log.yaml
|
||||
|
||||
Information about processing such YAML files is in the :doc:`structured
|
||||
data output howto <Howto_structured_data>`.
|
||||
|
||||
Style *custom* is the most general setting and allows you to specify
|
||||
which of the keywords listed above you want printed on each
|
||||
thermodynamic timestep. Note that the keywords c_ID, f_ID, v_name are
|
||||
|
||||
@ -256,12 +256,13 @@ print("Total number of style index entries:", total_index)
|
||||
|
||||
skip_fix = ('python', 'NEIGH_HISTORY/omp','acks2/reax','qeq/reax','reax/c/bonds','reax/c/species')
|
||||
skip_pair = ('meam/c','lj/sf','reax/c')
|
||||
skip_compute = ('pressure/cylinder')
|
||||
|
||||
counter = 0
|
||||
|
||||
counter += check_style('Commands_all.rst', doc_dir, ":doc:`(.+) <.+>`",command,'Command',suffix=True)
|
||||
counter += check_style('Commands_compute.rst', doc_dir, ":doc:`(.+) <compute.+>`",compute,'Compute',suffix=True)
|
||||
counter += check_style('compute.rst', doc_dir, ":doc:`(.+) <compute.+>` -",compute,'Compute',suffix=False)
|
||||
counter += check_style('Commands_compute.rst', doc_dir, ":doc:`(.+) <compute.+>`",compute,'Compute',skip=skip_compute,suffix=True)
|
||||
counter += check_style('compute.rst', doc_dir, ":doc:`(.+) <compute.+>` -",compute,'Compute',skip=skip_compute,suffix=False)
|
||||
counter += check_style('Commands_fix.rst', doc_dir, ":doc:`(.+) <fix.+>`",fix,'Fix',skip=skip_fix,suffix=True)
|
||||
counter += check_style('fix.rst', doc_dir, ":doc:`(.+) <fix.+>` -",fix,'Fix',skip=skip_fix,suffix=False)
|
||||
counter += check_style('Commands_pair.rst', doc_dir, ":doc:`(.+) <pair.+>`",pair,'Pair',skip=skip_pair,suffix=True)
|
||||
@ -281,7 +282,7 @@ if counter:
|
||||
|
||||
counter = 0
|
||||
|
||||
counter += check_style_index("compute", compute, index["compute"])
|
||||
counter += check_style_index("compute", compute, index["compute"], skip=['pressure/cylinder'])
|
||||
counter += check_style_index("fix", fix, index["fix"], skip=['python','acks2/reax','qeq/reax','reax/c/bonds','reax/c/species'])
|
||||
counter += check_style_index("angle_style", angle, index["angle_style"])
|
||||
counter += check_style_index("bond_style", bond, index["bond_style"])
|
||||
|
||||
@ -5,13 +5,18 @@ From https://github.com/ryan-roemer/sphinx-bootstrap-theme.
|
||||
"""
|
||||
|
||||
from os import path
|
||||
from sys import version_info as python_version
|
||||
|
||||
import sphinx
|
||||
from sphinx import version_info as sphinx_version
|
||||
from sphinx.locale import _
|
||||
from sphinx.util.logging import getLogger
|
||||
|
||||
|
||||
__version__ = '0.5.0'
|
||||
__version__ = '1.0.0'
|
||||
__version_full__ = __version__
|
||||
|
||||
logger = getLogger(__name__)
|
||||
|
||||
|
||||
def get_html_theme_path():
|
||||
"""Return list of HTML theme paths."""
|
||||
@ -19,16 +24,40 @@ def get_html_theme_path():
|
||||
return cur_dir
|
||||
|
||||
|
||||
def config_initiated(app, config):
|
||||
theme_options = config.html_theme_options or {}
|
||||
if theme_options.get('canonical_url'):
|
||||
logger.warning(
|
||||
_('The canonical_url option is deprecated, use the html_baseurl option from Sphinx instead.')
|
||||
)
|
||||
|
||||
# See http://www.sphinx-doc.org/en/stable/theming.html#distribute-your-theme-as-a-python-package
|
||||
def setup(app):
|
||||
if sphinx.version_info >= (1, 6, 0):
|
||||
# Register the theme that can be referenced without adding a theme path
|
||||
app.add_html_theme('sphinx_rtd_theme', path.abspath(path.dirname(__file__)))
|
||||
if python_version[0] < 3:
|
||||
logger.warning("Python 2 is deprecated with sphinx_rtd_theme, update to Python 3")
|
||||
app.require_sphinx('1.6')
|
||||
if sphinx_version <= (2, 0, 0):
|
||||
logger.warning("Sphinx 1.x is deprecated with sphinx_rtd_theme, update to Sphinx 2.x or greater")
|
||||
if not app.config.html_experimental_html5_writer:
|
||||
logger.warning("'html4_writer' is deprecated with sphinx_rtd_theme")
|
||||
else:
|
||||
if app.config.html4_writer:
|
||||
logger.warning("'html4_writer' is deprecated with sphinx_rtd_theme")
|
||||
|
||||
if sphinx.version_info >= (1, 8, 0):
|
||||
# Register the theme that can be referenced without adding a theme path
|
||||
app.add_html_theme('lammps_theme', path.abspath(path.dirname(__file__)))
|
||||
|
||||
if sphinx_version >= (1, 8, 0):
|
||||
# Add Sphinx message catalog for newer versions of Sphinx
|
||||
# See http://www.sphinx-doc.org/en/master/extdev/appapi.html#sphinx.application.Sphinx.add_message_catalog
|
||||
rtd_locale_path = path.join(path.abspath(path.dirname(__file__)), 'locale')
|
||||
app.add_message_catalog('sphinx', rtd_locale_path)
|
||||
app.connect('config-inited', config_initiated)
|
||||
|
||||
# sphinx emits the permalink icon for headers, so choose one more in keeping with our theme
|
||||
if sphinx_version >= (3, 5, 0):
|
||||
app.config.html_permalinks_icon = "\uf0c1"
|
||||
else:
|
||||
app.config.html_add_permalinks = "\uf0c1"
|
||||
|
||||
return {'parallel_read_safe': True, 'parallel_write_safe': True}
|
||||
|
||||
@ -1,86 +1,79 @@
|
||||
{# Support for Sphinx 1.3+ page_source_suffix, but don't break old builds. #}
|
||||
{%- if meta is defined and meta is not none %}
|
||||
{%- set check_meta = True %}
|
||||
{%- else %}
|
||||
{%- set check_meta = False %}
|
||||
{%- endif %}
|
||||
|
||||
{% if page_source_suffix %}
|
||||
{% set suffix = page_source_suffix %}
|
||||
{% else %}
|
||||
{% set suffix = source_suffix %}
|
||||
{% endif %}
|
||||
{%- if check_meta and 'github_url' in meta %}
|
||||
{%- set display_github = True %}
|
||||
{%- endif %}
|
||||
|
||||
{% if meta is defined and meta is not none %}
|
||||
{% set check_meta = True %}
|
||||
{% else %}
|
||||
{% set check_meta = False %}
|
||||
{% endif %}
|
||||
{%- if check_meta and 'bitbucket_url' in meta %}
|
||||
{%- set display_bitbucket = True %}
|
||||
{%- endif %}
|
||||
|
||||
{% if check_meta and 'github_url' in meta %}
|
||||
{% set display_github = True %}
|
||||
{% endif %}
|
||||
{%- if check_meta and 'gitlab_url' in meta %}
|
||||
{%- set display_gitlab = True %}
|
||||
{%- endif %}
|
||||
|
||||
{% if check_meta and 'bitbucket_url' in meta %}
|
||||
{% set display_bitbucket = True %}
|
||||
{% endif %}
|
||||
|
||||
{% if check_meta and 'gitlab_url' in meta %}
|
||||
{% set display_gitlab = True %}
|
||||
{% endif %}
|
||||
|
||||
{% set display_vcs_links = display_vcs_links if display_vcs_links is defined else True %}
|
||||
|
||||
<div role="navigation" aria-label="breadcrumbs navigation">
|
||||
{%- set display_vcs_links = display_vcs_links if display_vcs_links is defined else True %}
|
||||
|
||||
{#- Translators: This is an ARIA section label for page links, including previous/next page link and links to GitHub/GitLab/etc. -#}
|
||||
<div role="navigation" aria-label="{{ _('Page navigation') }}">
|
||||
<ul class="wy-breadcrumbs">
|
||||
{% block breadcrumbs %}
|
||||
{%- block breadcrumbs %}
|
||||
<li><a href="{{ pathto(master_doc) }}" class="icon icon-home"></a> »</li>
|
||||
{% for doc in parents %}
|
||||
{%- for doc in parents %}
|
||||
<li><a href="{{ doc.link|e }}">{{ doc.title }}</a> »</li>
|
||||
{% endfor %}
|
||||
{%- endfor %}
|
||||
<li>{{ title }}</li>
|
||||
{% endblock %}
|
||||
{% block breadcrumbs_aside %}
|
||||
{%- endblock %}
|
||||
{%- block breadcrumbs_aside %}
|
||||
<li class="wy-breadcrumbs-aside">
|
||||
{% if hasdoc(pagename) and display_vcs_links %}
|
||||
{% if display_github %}
|
||||
{% if check_meta and 'github_url' in meta %}
|
||||
{%- if hasdoc(pagename) and display_vcs_links %}
|
||||
{%- if display_github %}
|
||||
{%- if check_meta and 'github_url' in meta %}
|
||||
<!-- User defined GitHub URL -->
|
||||
<a href="{{ meta['github_url'] }}" class="fa fa-github"> {{ _('Edit on GitHub') }}</a>
|
||||
{% else %}
|
||||
<a href="https://{{ github_host|default("github.com") }}/{{ github_user }}/{{ github_repo }}/{{ theme_vcs_pageview_mode|default("blob") }}/{{ github_version }}{{ conf_py_path }}{{ pagename }}{{ suffix }}" class="fa fa-github"> {{ _('Edit on GitHub') }}</a>
|
||||
{% endif %}
|
||||
{% elif display_bitbucket %}
|
||||
{% if check_meta and 'bitbucket_url' in meta %}
|
||||
{%- else %}
|
||||
<a href="https://{{ github_host|default("github.com") }}/{{ github_user }}/{{ github_repo }}/{{ theme_vcs_pageview_mode or "blob" }}/{{ github_version }}{{ conf_py_path }}{{ pagename }}{{ page_source_suffix }}" class="fa fa-github"> {{ _('Edit on GitHub') }}</a>
|
||||
{%- endif %}
|
||||
{%- elif display_bitbucket %}
|
||||
{%- if check_meta and 'bitbucket_url' in meta %}
|
||||
<!-- User defined Bitbucket URL -->
|
||||
<a href="{{ meta['bitbucket_url'] }}" class="fa fa-bitbucket"> {{ _('Edit on Bitbucket') }}</a>
|
||||
{% else %}
|
||||
<a href="https://bitbucket.org/{{ bitbucket_user }}/{{ bitbucket_repo }}/src/{{ bitbucket_version}}{{ conf_py_path }}{{ pagename }}{{ suffix }}?mode={{ theme_vcs_pageview_mode|default("view") }}" class="fa fa-bitbucket"> {{ _('Edit on Bitbucket') }}</a>
|
||||
{% endif %}
|
||||
{% elif display_gitlab %}
|
||||
{% if check_meta and 'gitlab_url' in meta %}
|
||||
{%- else %}
|
||||
<a href="https://bitbucket.org/{{ bitbucket_user }}/{{ bitbucket_repo }}/src/{{ bitbucket_version}}{{ conf_py_path }}{{ pagename }}{{ page_source_suffix }}?mode={{ theme_vcs_pageview_mode or "view" }}" class="fa fa-bitbucket"> {{ _('Edit on Bitbucket') }}</a>
|
||||
{%- endif %}
|
||||
{%- elif display_gitlab %}
|
||||
{%- if check_meta and 'gitlab_url' in meta %}
|
||||
<!-- User defined GitLab URL -->
|
||||
<a href="{{ meta['gitlab_url'] }}" class="fa fa-gitlab"> {{ _('Edit on GitLab') }}</a>
|
||||
{% else %}
|
||||
<a href="https://{{ gitlab_host|default("gitlab.com") }}/{{ gitlab_user }}/{{ gitlab_repo }}/{{ theme_vcs_pageview_mode|default("blob") }}/{{ gitlab_version }}{{ conf_py_path }}{{ pagename }}{{ suffix }}" class="fa fa-gitlab"> {{ _('Edit on GitLab') }}</a>
|
||||
{% endif %}
|
||||
{% elif show_source and source_url_prefix %}
|
||||
<a href="{{ source_url_prefix }}{{ pagename }}{{ suffix }}">{{ _('View page source') }}</a>
|
||||
{% elif show_source and has_source and sourcename %}
|
||||
{%- else %}
|
||||
<a href="https://{{ gitlab_host|default("gitlab.com") }}/{{ gitlab_user }}/{{ gitlab_repo }}/{{ theme_vcs_pageview_mode or "blob" }}/{{ gitlab_version }}{{ conf_py_path }}{{ pagename }}{{ page_source_suffix }}" class="fa fa-gitlab"> {{ _('Edit on GitLab') }}</a>
|
||||
{%- endif %}
|
||||
{%- elif show_source and source_url_prefix %}
|
||||
<a href="{{ source_url_prefix }}{{ pagename }}{{ page_source_suffix }}">{{ _('View page source') }}</a>
|
||||
{%- elif show_source and has_source and sourcename %}
|
||||
<a href="{{ pathto('_sources/' + sourcename, true)|e }}" rel="nofollow"> {{ _('View page source') }}</a>
|
||||
{% endif %}
|
||||
{%- endif %}
|
||||
<a href="https://www.lammps.org">Website</a>
|
||||
<a href="Commands_all.html">Commands</a>
|
||||
{% endif %}
|
||||
{%- endif %}
|
||||
</li>
|
||||
{% endblock %}
|
||||
{%- endblock %}
|
||||
</ul>
|
||||
|
||||
{% if (theme_prev_next_buttons_location == 'top' or theme_prev_next_buttons_location == 'both') and (next or prev) %}
|
||||
<div class="rst-breadcrumbs-buttons" role="navigation" aria-label="breadcrumb navigation">
|
||||
{% if next %}
|
||||
<a href="{{ next.link|e }}" class="btn btn-neutral float-right" title="{{ next.title|striptags|e }}" accesskey="n">{{ _('Next') }} <span class="fa fa-arrow-circle-right"></span></a>
|
||||
{% endif %}
|
||||
{% if prev %}
|
||||
<a href="{{ prev.link|e }}" class="btn btn-neutral float-left" title="{{ prev.title|striptags|e }}" accesskey="p"><span class="fa fa-arrow-circle-left"></span> {{ _('Previous') }}</a>
|
||||
{% endif %}
|
||||
{%- if (theme_prev_next_buttons_location == 'top' or theme_prev_next_buttons_location == 'both') and (next or prev) %}
|
||||
{#- Translators: This is an ARIA section label for sequential page links, such as previous and next page links. -#}
|
||||
<div class="rst-breadcrumbs-buttons" role="navigation" aria-label="{{ _('Sequential page navigation') }}">
|
||||
{%- if prev %}
|
||||
<a href="{{ prev.link|e }}" class="btn btn-neutral float-left" title="{{ prev.title|striptags|e }}" accesskey="p"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> {{ _('Previous') }}</a>
|
||||
{%- endif %}
|
||||
{%- if next %}
|
||||
<a href="{{ next.link|e }}" class="btn btn-neutral float-right" title="{{ next.title|striptags|e }}" accesskey="n">{{ _('Next') }} <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||||
{%- endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{%- endif %}
|
||||
<hr/>
|
||||
</div>
|
||||
|
||||
@ -1,60 +1,61 @@
|
||||
<footer>
|
||||
{% if (theme_prev_next_buttons_location == 'bottom' or theme_prev_next_buttons_location == 'both') and (next or prev) %}
|
||||
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
|
||||
{% if next %}
|
||||
<a href="{{ next.link|e }}" class="btn btn-neutral float-right" title="{{ next.title|striptags|e }}" accesskey="n" rel="next">{{ _('Next') }} <span class="fa fa-arrow-circle-right"></span></a>
|
||||
{% endif %}
|
||||
{% if prev %}
|
||||
<a href="{{ prev.link|e }}" class="btn btn-neutral float-left" title="{{ prev.title|striptags|e }}" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> {{ _('Previous') }}</a>
|
||||
{% endif %}
|
||||
{%- if (theme_prev_next_buttons_location == 'bottom' or theme_prev_next_buttons_location == 'both') and (next or prev) %}
|
||||
{#- Translators: This is an ARIA section label for the footer section of the page. -#}
|
||||
<div class="rst-footer-buttons" role="navigation" aria-label="{{ _('Footer') }}">
|
||||
{%- if prev %}
|
||||
<a href="{{ prev.link|e }}" class="btn btn-neutral float-left" title="{{ prev.title|striptags|e }}" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> {{ _('Previous') }}</a>
|
||||
{%- endif %}
|
||||
{%- if next %}
|
||||
<a href="{{ next.link|e }}" class="btn btn-neutral float-right" title="{{ next.title|striptags|e }}" accesskey="n" rel="next">{{ _('Next') }} <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
|
||||
{%- endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{%- endif %}
|
||||
|
||||
<hr/>
|
||||
|
||||
<div role="contentinfo">
|
||||
{%- block contentinfo %}
|
||||
<p>
|
||||
{%- if show_copyright %}
|
||||
{%- if hasdoc('copyright') %}
|
||||
{% set path = pathto('copyright') %}
|
||||
{% set copyright = copyright|e %}
|
||||
© <a href="{{ path }}">{% trans %}Copyright{% endtrans %}</a> {{ copyright }}
|
||||
{%- trans path=pathto('copyright'), copyright=copyright|e %}© <a href="{{ path }}">Copyright</a> {{ copyright }}.{% endtrans %}
|
||||
{%- else %}
|
||||
{% set copyright = copyright|e %}
|
||||
© {% trans %}Copyright{% endtrans %} {{ copyright }}
|
||||
{%- trans copyright=copyright|e %}© Copyright {{ copyright }}.{% endtrans %}
|
||||
{%- endif %}
|
||||
{%- endif %}
|
||||
|
||||
{%- if build_id and build_url %}
|
||||
<span class="build">
|
||||
{# Translators: Build is a noun, not a verb #}
|
||||
{% trans %}Build{% endtrans %}
|
||||
{#- Translators: Build is a noun, not a verb -#}
|
||||
{%- trans %}Build{% endtrans -%}
|
||||
<a href="{{ build_url }}">{{ build_id }}</a>.
|
||||
</span>
|
||||
{%- elif commit %}
|
||||
<span class="commit">
|
||||
{# Translators: the phrase "revision" comes from Git, referring to a commit #}
|
||||
{% trans %}Revision{% endtrans %} <code>{{ commit }}</code>.
|
||||
</span>
|
||||
{%- elif last_updated %}
|
||||
<span class="lastupdated">
|
||||
{% trans last_updated=last_updated|e %}Last updated on {{ last_updated }}.{% endtrans %}
|
||||
{#- Translators: the phrase "revision" comes from Git, referring to a commit #}
|
||||
{%- trans %}Revision{% endtrans %} <code>{{ commit }}</code>.
|
||||
</span>
|
||||
{%- endif %}
|
||||
{%- if last_updated %}
|
||||
<span class="lastupdated">
|
||||
{%- trans last_updated=last_updated|e %}Last updated on {{ last_updated }}.{% endtrans %}
|
||||
</span>
|
||||
{%- endif -%}
|
||||
|
||||
</p>
|
||||
{%- endblock %}
|
||||
</div>
|
||||
|
||||
{%- if show_sphinx %}
|
||||
{% set sphinx_web = '<a href="https://www.sphinx-doc.org/">Sphinx</a>' %}
|
||||
{% set readthedocs_web = '<a href="https://readthedocs.org">Read the Docs</a>' %}
|
||||
{# Translators: the variable "sphinx_web" is a link to the Sphinx project documentation with the text "Sphinx" #}
|
||||
{% trans sphinx_web=sphinx_web, readthedocs_web=readthedocs_web %}Built with {{ sphinx_web }} using a{% endtrans %}
|
||||
{# Translators: "theme" refers to a theme for Sphinx, which alters the appearance of the generated documenation #}
|
||||
{% if show_sphinx %}
|
||||
{%- set sphinx_web = '<a href="https://www.sphinx-doc.org/">Sphinx</a>' %}
|
||||
{%- set readthedocs_web = '<a href="https://readthedocs.org">Read the Docs</a>' %}
|
||||
{#- Translators: the variable "sphinx_web" is a link to the Sphinx project documentation with the text "Sphinx" #}
|
||||
{%- trans sphinx_web=sphinx_web, readthedocs_web=readthedocs_web %}Built with {{ sphinx_web }} using a{% endtrans %}
|
||||
{#- Translators: "theme" refers to a theme for Sphinx, which alters the appearance of the generated documenation #}
|
||||
<a href="https://github.com/readthedocs/sphinx_rtd_theme">{% trans %}theme{% endtrans %}</a>
|
||||
{# Translators: this is always used as "provided by Read the Docs", and should not imply Read the Docs is an author of the generated documentation. #}
|
||||
{#- Translators: this is always used as "provided by Read the Docs", and should not imply Read the Docs is an author of the generated documentation. #}
|
||||
{% trans %}provided by {{ readthedocs_web }}{% endtrans %}.
|
||||
{%- endif %}
|
||||
{% endif %}
|
||||
|
||||
{%- block extrafooter %} {% endblock %}
|
||||
|
||||
|
||||
@ -7,21 +7,27 @@
|
||||
{%- set titlesuffix = "" %}
|
||||
{%- endif %}
|
||||
{%- set lang_attr = 'en' if language == None else (language | replace('_', '-')) %}
|
||||
{%- set sphinx_writer = 'writer-html5' if html5_doctype else 'writer-html4' %}
|
||||
{%- set sphinx_writer = 'writer-html5' if html5_doctype else 'writer-html4' -%}
|
||||
|
||||
{# Build sphinx_version_info tuple from sphinx_version string in pure Jinja #}
|
||||
{%- set (_ver_major, _ver_minor, _ver_bugfix) = sphinx_version.split('.') | map('int') -%}
|
||||
{%- set sphinx_version_info = (_ver_major, _ver_minor, _ver_bugfix) -%}
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html class="{{ sphinx_writer }}" lang="{{ lang_attr }}" >
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
{{ metatags }}
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
{% block htmltitle %}
|
||||
<meta charset="utf-8" />
|
||||
{{- metatags }}
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
{%- block htmltitle %}
|
||||
<title>{{ title|striptags|e }}{{ titlesuffix }}</title>
|
||||
{% endblock %}
|
||||
{%- endblock -%}
|
||||
|
||||
{# CSS #}
|
||||
{#- CSS #}
|
||||
{%- if sphinx_version_info < (4, 0) -%}
|
||||
<link rel="stylesheet" href="{{ pathto('_static/' + style, 1) }}" type="text/css" />
|
||||
<link rel="stylesheet" href="{{ pathto('_static/pygments.css', 1) }}" type="text/css" />
|
||||
{%- endif %}
|
||||
{%- for css in css_files %}
|
||||
{%- if css|attr("rel") %}
|
||||
<link rel="{{ css.rel }}" href="{{ pathto(css.filename, 1) }}" type="text/css"{% if css.title is not none %} title="{{ css.title }}"{% endif %} />
|
||||
@ -32,19 +38,28 @@
|
||||
|
||||
{%- for cssfile in extra_css_files %}
|
||||
<link rel="stylesheet" href="{{ pathto(cssfile, 1) }}" type="text/css" />
|
||||
{%- endfor %}
|
||||
{%- endfor -%}
|
||||
|
||||
{# FAVICON #}
|
||||
{% if favicon %}
|
||||
{#- FAVICON #}
|
||||
{%- if favicon %}
|
||||
{%- if sphinx_version_info < (4, 0) -%}
|
||||
<link rel="shortcut icon" href="{{ pathto('_static/' + favicon, 1) }}"/>
|
||||
{% endif %}
|
||||
{%- else %}
|
||||
<link rel="shortcut icon" href="{{ favicon_url }}"/>
|
||||
{%- endif %}
|
||||
{%- endif -%}
|
||||
|
||||
{#- CANONICAL URL (deprecated) #}
|
||||
{%- if theme_canonical_url and not pageurl %}
|
||||
<link rel="canonical" href="{{ theme_canonical_url }}{{ pagename }}.html"/>
|
||||
{%- endif -%}
|
||||
|
||||
{#- CANONICAL URL #}
|
||||
{%- if pageurl %}
|
||||
<link rel="canonical" href="{{ pageurl|e }}" />
|
||||
{%- endif -%}
|
||||
|
||||
{# JAVASCRIPTS #}
|
||||
{#- JAVASCRIPTS #}
|
||||
{%- block scripts %}
|
||||
<!--[if lt IE 9]>
|
||||
<script src="{{ pathto('_static/js/html5shiv.min.js', 1) }}"></script>
|
||||
@ -55,13 +70,15 @@
|
||||
|
||||
{%- if not embedded %}
|
||||
{# XXX Sphinx 1.8.0 made this an external js-file, quick fix until we refactor the template to inherert more blocks directly from sphinx #}
|
||||
{% if sphinx_version >= "1.8.0" %}
|
||||
<script type="text/javascript" id="documentation_options" data-url_root="{{ pathto('', 1) }}" src="{{ pathto('_static/documentation_options.js', 1) }}"></script>
|
||||
{%- if sphinx_version_info >= (1, 8) -%}
|
||||
{%- if sphinx_version_info < (4, 0) -%}
|
||||
<script id="documentation_options" data-url_root="{{ url_root }}" src="{{ pathto('_static/documentation_options.js', 1) }}"></script>
|
||||
{%- endif -%}
|
||||
{%- for scriptfile in script_files %}
|
||||
{{ js_tag(scriptfile) }}
|
||||
{%- endfor %}
|
||||
{% else %}
|
||||
<script type="text/javascript">
|
||||
{%- else %}
|
||||
<script>
|
||||
var DOCUMENTATION_OPTIONS = {
|
||||
URL_ROOT:'{{ url_root }}',
|
||||
VERSION:'{{ release|e }}',
|
||||
@ -73,12 +90,12 @@
|
||||
};
|
||||
</script>
|
||||
{%- for scriptfile in script_files %}
|
||||
<script type="text/javascript" src="{{ pathto(scriptfile, 1) }}"></script>
|
||||
<script src="{{ pathto(scriptfile, 1) }}"></script>
|
||||
{%- endfor %}
|
||||
{% endif %}
|
||||
<script type="text/javascript" src="{{ pathto('_static/js/theme.js', 1) }}"></script>
|
||||
{%- endif %}
|
||||
<script src="{{ pathto('_static/js/theme.js', 1) }}"></script>
|
||||
|
||||
{# OPENSEARCH #}
|
||||
{#- OPENSEARCH #}
|
||||
{%- if use_opensearch %}
|
||||
<link rel="search" type="application/opensearchdescription+xml"
|
||||
title="{% trans docstitle=docstitle|e %}Search within {{ docstitle }}{% endtrans %}"
|
||||
@ -112,126 +129,124 @@
|
||||
|
||||
<body class="wy-body-for-nav">
|
||||
|
||||
{% block extrabody %} {% endblock %}
|
||||
{%- block extrabody %} {% endblock %}
|
||||
<div class="wy-grid-for-nav">
|
||||
{# SIDE NAV, TOGGLES ON MOBILE #}
|
||||
{#- SIDE NAV, TOGGLES ON MOBILE #}
|
||||
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
|
||||
<div class="wy-side-scroll">
|
||||
<div class="wy-side-nav-search" {% if theme_style_nav_header_background %} style="background: {{theme_style_nav_header_background}}" {% endif %}>
|
||||
{% block sidebartitle %}
|
||||
{%- block sidebartitle %}
|
||||
|
||||
{% if logo and theme_logo_only %}
|
||||
{%- if logo and theme_logo_only %}
|
||||
<a href="{{ pathto(master_doc) }}">
|
||||
{% else %}
|
||||
{%- else %}
|
||||
<a href="{{ pathto(master_doc) }}" class="icon icon-home"> {{ project }}
|
||||
{% endif %}
|
||||
{%- endif %}
|
||||
|
||||
{% if logo %}
|
||||
{# Not strictly valid HTML, but it's the only way to display/scale
|
||||
{%- if logo %}
|
||||
{#- Not strictly valid HTML, but it's the only way to display/scale
|
||||
it properly, without weird scripting or heaps of work
|
||||
#}
|
||||
{%- if sphinx_version_info < (4, 0) -%}
|
||||
<img src="{{ pathto('_static/' + logo, 1) }}" class="logo" alt="{{ _('Logo') }}"/>
|
||||
{% endif %}
|
||||
{%- else %}
|
||||
<img src="{{ logo_url }}" class="logo" alt="{{ _('Logo') }}"/>
|
||||
{%- endif %}
|
||||
{%- endif %}
|
||||
</a>
|
||||
|
||||
{% if theme_display_version %}
|
||||
{%- if theme_display_version %}
|
||||
<div class="lammps_version">Version: <b>{{ current_version }}</b></div>
|
||||
<div class="lammps_release">git info: {{ release }}</div>
|
||||
{% endif %}
|
||||
{%- endif %}
|
||||
|
||||
{% include "searchbox.html" %}
|
||||
{%- include "searchbox.html" %}
|
||||
|
||||
{% endblock %}
|
||||
{%- endblock %}
|
||||
</div>
|
||||
|
||||
{% block navigation %}
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
|
||||
{% block menu %}
|
||||
{#
|
||||
The singlehtml builder doesn't handle this toctree call when the
|
||||
toctree is empty. Skip building this for now.
|
||||
#}
|
||||
{% if 'singlehtml' not in builder %}
|
||||
{% set global_toc = toctree(maxdepth=theme_navigation_depth|int,
|
||||
{%- block navigation %}
|
||||
{#- Translators: This is an ARIA section label for the main navigation menu -#}
|
||||
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="{{ _('Navigation menu') }}">
|
||||
{%- block menu %}
|
||||
{%- set toctree = toctree(maxdepth=theme_navigation_depth|int,
|
||||
collapse=theme_collapse_navigation|tobool,
|
||||
includehidden=theme_includehidden|tobool,
|
||||
titles_only=theme_titles_only|tobool) %}
|
||||
{% endif %}
|
||||
{% if global_toc %}
|
||||
{{ global_toc }}
|
||||
{% else %}
|
||||
{%- if toctree %}
|
||||
{{ toctree }}
|
||||
{%- else %}
|
||||
<!-- Local TOC -->
|
||||
<div class="local-toc">{{ toc }}</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
{%- endif %}
|
||||
{%- endblock %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
{%- endblock %}
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
|
||||
|
||||
{# MOBILE NAV, TRIGGLES SIDE NAV ON TOGGLE #}
|
||||
<nav class="wy-nav-top" aria-label="top navigation">
|
||||
{% block mobile_nav %}
|
||||
{#- MOBILE NAV, TRIGGLES SIDE NAV ON TOGGLE #}
|
||||
{#- Translators: This is an ARIA section label for the navigation menu that is visible when viewing the page on mobile devices -#}
|
||||
<nav class="wy-nav-top" aria-label="{{ _('Mobile navigation menu') }}" {% if theme_style_nav_header_background %} style="background: {{theme_style_nav_header_background}}" {% endif %}>
|
||||
{%- block mobile_nav %}
|
||||
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
|
||||
<a href="{{ pathto(master_doc) }}">{{ project }}</a>
|
||||
{% endblock %}
|
||||
{%- endblock %}
|
||||
</nav>
|
||||
|
||||
|
||||
<div class="wy-nav-content">
|
||||
{%- block content %}
|
||||
{% if theme_style_external_links|tobool %}
|
||||
{%- if theme_style_external_links|tobool %}
|
||||
<div class="rst-content style-external-links">
|
||||
{% else %}
|
||||
{%- else %}
|
||||
<div class="rst-content">
|
||||
{% endif %}
|
||||
{%- endif %}
|
||||
{% include "breadcrumbs.html" %}
|
||||
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
|
||||
{%- block document %}
|
||||
<div itemprop="articleBody">
|
||||
{% block body %}{% endblock %}
|
||||
</div>
|
||||
{% if self.comments()|trim %}
|
||||
{%- if self.comments()|trim %}
|
||||
<div class="articleComments">
|
||||
{% block comments %}{% endblock %}
|
||||
{%- block comments %}{% endblock %}
|
||||
</div>
|
||||
{% endif%}
|
||||
{%- endif%}
|
||||
</div>
|
||||
{%- endblock %}
|
||||
{% include "footer.html" %}
|
||||
</div>
|
||||
{%- endblock %}
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
</div>
|
||||
{% include "versions.html" %}
|
||||
{% include "versions.html" -%}
|
||||
|
||||
<script type="text/javascript">
|
||||
<script>
|
||||
jQuery(function () {
|
||||
SphinxRtdTheme.Navigation.enable({{ 'true' if theme_sticky_navigation|tobool else 'false' }});
|
||||
});
|
||||
</script>
|
||||
|
||||
{# Do not conflict with RTD insertion of analytics script #}
|
||||
{% if not READTHEDOCS %}
|
||||
{% if theme_analytics_id %}
|
||||
{#- Do not conflict with RTD insertion of analytics script #}
|
||||
{%- if not READTHEDOCS %}
|
||||
{%- if theme_analytics_id %}
|
||||
<!-- Theme Analytics -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id={{ theme_analytics_id }}"></script>
|
||||
<script>
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
|
||||
ga('create', '{{ theme_analytics_id }}', 'auto');
|
||||
ga('send', 'pageview');
|
||||
gtag('config', '{{ theme_analytics_id }}', {
|
||||
'anonymize_ip': {{ 'true' if theme_analytics_anonymize_ip|tobool else 'false' }},
|
||||
});
|
||||
</script>
|
||||
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{%- endif %}
|
||||
{%- endif %}
|
||||
|
||||
{%- block footer %} {% endblock %}
|
||||
|
||||
|
||||
Binary file not shown.
@ -11,7 +11,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2020-05-06 13:38-0600\n"
|
||||
"POT-Creation-Date: 2021-09-13 13:35-0600\n"
|
||||
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
||||
"Last-Translator: Tom Kunze <transifex.com@tomabrafix.de>, 2019\n"
|
||||
"Language-Team: German (https://www.transifex.com/readthedocs/teams/101354/de/)\n"
|
||||
@ -22,37 +22,32 @@ msgstr ""
|
||||
"Language: de\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:43 sphinx_rtd_theme/breadcrumbs.html:45
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:37 sphinx_rtd_theme/breadcrumbs.html:39
|
||||
msgid "Edit on GitHub"
|
||||
msgstr "Auf GitHub bearbeiten"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:50 sphinx_rtd_theme/breadcrumbs.html:52
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:44 sphinx_rtd_theme/breadcrumbs.html:46
|
||||
msgid "Edit on Bitbucket"
|
||||
msgstr "Auf Bitbucket bearbeiten"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:57 sphinx_rtd_theme/breadcrumbs.html:59
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:51 sphinx_rtd_theme/breadcrumbs.html:53
|
||||
msgid "Edit on GitLab"
|
||||
msgstr "Auf GitLab bearbeiten"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:62 sphinx_rtd_theme/breadcrumbs.html:64
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:56 sphinx_rtd_theme/breadcrumbs.html:58
|
||||
msgid "View page source"
|
||||
msgstr "Quelltext anzeigen"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:74 sphinx_rtd_theme/footer.html:5
|
||||
msgid "Next"
|
||||
msgstr "Weiter"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:77 sphinx_rtd_theme/footer.html:8
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:69 sphinx_rtd_theme/footer.html:6
|
||||
msgid "Previous"
|
||||
msgstr "Zurück"
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:21 sphinx_rtd_theme/footer.html:24
|
||||
#: sphinx_rtd_theme/layout.html:96
|
||||
msgid "Copyright"
|
||||
msgstr "Copyright"
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:72 sphinx_rtd_theme/footer.html:9
|
||||
msgid "Next"
|
||||
msgstr "Weiter"
|
||||
|
||||
#. Build is a noun, not a verb
|
||||
#: sphinx_rtd_theme/footer.html:31
|
||||
#: sphinx_rtd_theme/footer.html:30
|
||||
msgid "Build"
|
||||
msgstr "Build"
|
||||
|
||||
@ -64,49 +59,53 @@ msgstr "Zuletzt aktualisiert am %(last_updated)s."
|
||||
#. the variable "sphinx_web" is a link to the Sphinx project documentation
|
||||
#. with
|
||||
#. the text "Sphinx"
|
||||
#: sphinx_rtd_theme/footer.html:52
|
||||
#: sphinx_rtd_theme/footer.html:53
|
||||
#, python-format
|
||||
msgid "Built with %(sphinx_web)s using a"
|
||||
msgstr "Erstellt mit %(sphinx_web)s mit einem"
|
||||
|
||||
#. this is always used as "provided by Read the Docs", and should not imply
|
||||
#. Read the Docs is an author of the generated documentation.
|
||||
#: sphinx_rtd_theme/footer.html:56
|
||||
#: sphinx_rtd_theme/footer.html:57
|
||||
#, python-format
|
||||
msgid "provided by %(readthedocs_web)s"
|
||||
msgstr "bereitgestellt von %(readthedocs_web)s"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:79
|
||||
#: sphinx_rtd_theme/layout.html:97
|
||||
#, python-format
|
||||
msgid "Search within %(docstitle)s"
|
||||
msgstr "%(docstitle)s durchsuchen"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:87
|
||||
#: sphinx_rtd_theme/layout.html:105
|
||||
msgid "About these documents"
|
||||
msgstr "Über diese Dokumentation"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:90
|
||||
#: sphinx_rtd_theme/layout.html:108
|
||||
msgid "Index"
|
||||
msgstr "Index"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:93 sphinx_rtd_theme/search.html:11
|
||||
#: sphinx_rtd_theme/layout.html:111 sphinx_rtd_theme/search.html:11
|
||||
msgid "Search"
|
||||
msgstr "Suche"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:128
|
||||
#: sphinx_rtd_theme/layout.html:114
|
||||
msgid "Copyright"
|
||||
msgstr "Copyright"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
|
||||
msgid "Logo"
|
||||
msgstr "Logo"
|
||||
|
||||
#: sphinx_rtd_theme/search.html:29
|
||||
#: sphinx_rtd_theme/search.html:31
|
||||
msgid "Please activate JavaScript to enable the search functionality."
|
||||
msgstr "Bitte aktiviere JavaScript, um die Suchfunktion zu nutzen."
|
||||
|
||||
#. Search is a noun, not a verb
|
||||
#: sphinx_rtd_theme/search.html:37
|
||||
#: sphinx_rtd_theme/search.html:39
|
||||
msgid "Search Results"
|
||||
msgstr "Suchergebnisse"
|
||||
|
||||
#: sphinx_rtd_theme/search.html:39
|
||||
#: sphinx_rtd_theme/search.html:41
|
||||
msgid ""
|
||||
"Your search did not match any documents. Please make sure that all words are"
|
||||
" spelled correctly and that you've selected enough categories."
|
||||
@ -119,7 +118,7 @@ msgstr ""
|
||||
msgid "Search docs"
|
||||
msgstr "Dokumentation durchsuchen"
|
||||
|
||||
#: sphinx_rtd_theme/versions.html:11
|
||||
#: sphinx_rtd_theme/versions.html:3 sphinx_rtd_theme/versions.html:11
|
||||
msgid "Versions"
|
||||
msgstr "Versionen"
|
||||
|
||||
@ -135,9 +134,3 @@ msgstr "Projektübersicht"
|
||||
#: sphinx_rtd_theme/versions.html:29
|
||||
msgid "Builds"
|
||||
msgstr "Builds"
|
||||
|
||||
#~ msgid "Docs"
|
||||
#~ msgstr "Dokumentation"
|
||||
|
||||
#~ msgid "Free document hosting provided by"
|
||||
#~ msgstr "Kostenloses Dokumentationen-Hosting zur Verfügung gestellt von"
|
||||
|
||||
Binary file not shown.
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2020-05-06 13:38-0600\n"
|
||||
"POT-Creation-Date: 2021-09-13 13:35-0600\n"
|
||||
"PO-Revision-Date: 2019-07-16 15:43-0600\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language: en\n"
|
||||
@ -19,42 +19,64 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:43 sphinx_rtd_theme/breadcrumbs.html:45
|
||||
#. This is an ARIA section label for page links, including previous/next page
|
||||
#. link and links to GitHub/GitLab/etc.
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:22
|
||||
msgid "Page navigation"
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:37 sphinx_rtd_theme/breadcrumbs.html:39
|
||||
msgid "Edit on GitHub"
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:50 sphinx_rtd_theme/breadcrumbs.html:52
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:44 sphinx_rtd_theme/breadcrumbs.html:46
|
||||
msgid "Edit on Bitbucket"
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:57 sphinx_rtd_theme/breadcrumbs.html:59
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:51 sphinx_rtd_theme/breadcrumbs.html:53
|
||||
msgid "Edit on GitLab"
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:62 sphinx_rtd_theme/breadcrumbs.html:64
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:56 sphinx_rtd_theme/breadcrumbs.html:58
|
||||
msgid "View page source"
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:74 sphinx_rtd_theme/footer.html:5
|
||||
msgid "Next"
|
||||
#. This is an ARIA section label for sequential page links, such as previous
|
||||
#. and next page links.
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:67
|
||||
msgid "Sequential page navigation"
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:77 sphinx_rtd_theme/footer.html:8
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:69 sphinx_rtd_theme/footer.html:6
|
||||
msgid "Previous"
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:21 sphinx_rtd_theme/footer.html:24
|
||||
#: sphinx_rtd_theme/layout.html:96
|
||||
msgid "Copyright"
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:72 sphinx_rtd_theme/footer.html:9
|
||||
msgid "Next"
|
||||
msgstr ""
|
||||
|
||||
#. This is an ARIA section label for the footer section of the page.
|
||||
#: sphinx_rtd_theme/footer.html:4
|
||||
msgid "Footer"
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:21
|
||||
#, python-format
|
||||
msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s."
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:23
|
||||
#, python-format
|
||||
msgid "© Copyright %(copyright)s."
|
||||
msgstr ""
|
||||
|
||||
#. Build is a noun, not a verb
|
||||
#: sphinx_rtd_theme/footer.html:31
|
||||
#: sphinx_rtd_theme/footer.html:30
|
||||
msgid "Build"
|
||||
msgstr ""
|
||||
|
||||
#. the phrase "revision" comes from Git, referring to a commit
|
||||
#: sphinx_rtd_theme/footer.html:37
|
||||
#: sphinx_rtd_theme/footer.html:36
|
||||
msgid "Revision"
|
||||
msgstr ""
|
||||
|
||||
@ -65,59 +87,70 @@ msgstr ""
|
||||
|
||||
#. the variable "sphinx_web" is a link to the Sphinx project documentation with
|
||||
#. the text "Sphinx"
|
||||
#: sphinx_rtd_theme/footer.html:52
|
||||
#: sphinx_rtd_theme/footer.html:53
|
||||
#, python-format
|
||||
msgid "Built with %(sphinx_web)s using a"
|
||||
msgstr ""
|
||||
|
||||
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
||||
#. generated documenation
|
||||
#: sphinx_rtd_theme/footer.html:54
|
||||
#: sphinx_rtd_theme/footer.html:55
|
||||
msgid "theme"
|
||||
msgstr ""
|
||||
|
||||
#. this is always used as "provided by Read the Docs", and should not imply
|
||||
#. Read the Docs is an author of the generated documentation.
|
||||
#: sphinx_rtd_theme/footer.html:56
|
||||
#: sphinx_rtd_theme/footer.html:57
|
||||
#, python-format
|
||||
msgid "provided by %(readthedocs_web)s"
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:79
|
||||
#: sphinx_rtd_theme/layout.html:97
|
||||
#, python-format
|
||||
msgid "Search within %(docstitle)s"
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:87
|
||||
#: sphinx_rtd_theme/layout.html:105
|
||||
msgid "About these documents"
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:90
|
||||
#: sphinx_rtd_theme/layout.html:108
|
||||
msgid "Index"
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:93 sphinx_rtd_theme/search.html:11
|
||||
#: sphinx_rtd_theme/layout.html:111 sphinx_rtd_theme/search.html:11
|
||||
msgid "Search"
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:121
|
||||
msgid "Documentation Home"
|
||||
#: sphinx_rtd_theme/layout.html:114
|
||||
msgid "Copyright"
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:128
|
||||
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
|
||||
msgid "Logo"
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/search.html:29
|
||||
#. This is an ARIA section label for the main navigation menu
|
||||
#: sphinx_rtd_theme/layout.html:173
|
||||
msgid "Navigation menu"
|
||||
msgstr ""
|
||||
|
||||
#. This is an ARIA section label for the navigation menu that is visible when
|
||||
#. viewing the page on mobile devices
|
||||
#: sphinx_rtd_theme/layout.html:195
|
||||
msgid "Mobile navigation menu"
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/search.html:31
|
||||
msgid "Please activate JavaScript to enable the search functionality."
|
||||
msgstr ""
|
||||
|
||||
#. Search is a noun, not a verb
|
||||
#: sphinx_rtd_theme/search.html:37
|
||||
#: sphinx_rtd_theme/search.html:39
|
||||
msgid "Search Results"
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/search.html:39
|
||||
#: sphinx_rtd_theme/search.html:41
|
||||
msgid ""
|
||||
"Your search did not match any documents. Please make sure that all words "
|
||||
"are spelled correctly and that you've selected enough categories."
|
||||
@ -127,7 +160,7 @@ msgstr ""
|
||||
msgid "Search docs"
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/versions.html:11
|
||||
#: sphinx_rtd_theme/versions.html:3 sphinx_rtd_theme/versions.html:11
|
||||
msgid "Versions"
|
||||
msgstr ""
|
||||
|
||||
@ -154,3 +187,15 @@ msgstr ""
|
||||
#~ msgid "Free document hosting provided by"
|
||||
#~ msgstr ""
|
||||
|
||||
#~ msgid "Documentation Home"
|
||||
#~ msgstr ""
|
||||
|
||||
#~ msgid "Breadcrumbs"
|
||||
#~ msgstr ""
|
||||
|
||||
#~ msgid "Main"
|
||||
#~ msgstr ""
|
||||
|
||||
#~ msgid "Top"
|
||||
#~ msgstr ""
|
||||
|
||||
|
||||
Binary file not shown.
@ -6,15 +6,15 @@
|
||||
#
|
||||
# Translators:
|
||||
# Anthony <aj@ohess.org>, 2019
|
||||
# Leonardo J. Caballero G. <leonardocaballero@gmail.com>, 2020
|
||||
# Radina Matic <radina.matic@gmail.com>, 2021
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2020-05-06 13:38-0600\n"
|
||||
"POT-Creation-Date: 2021-09-13 13:35-0600\n"
|
||||
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
||||
"Last-Translator: Leonardo J. Caballero G. <leonardocaballero@gmail.com>, 2020\n"
|
||||
"Last-Translator: Radina Matic <radina.matic@gmail.com>, 2021\n"
|
||||
"Language-Team: Spanish (https://www.transifex.com/readthedocs/teams/101354/es/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -23,107 +23,117 @@ msgstr ""
|
||||
"Language: es\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:43 sphinx_rtd_theme/breadcrumbs.html:45
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:37 sphinx_rtd_theme/breadcrumbs.html:39
|
||||
msgid "Edit on GitHub"
|
||||
msgstr "Editar en GitHub"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:50 sphinx_rtd_theme/breadcrumbs.html:52
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:44 sphinx_rtd_theme/breadcrumbs.html:46
|
||||
msgid "Edit on Bitbucket"
|
||||
msgstr "Editar en Bitbucket"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:57 sphinx_rtd_theme/breadcrumbs.html:59
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:51 sphinx_rtd_theme/breadcrumbs.html:53
|
||||
msgid "Edit on GitLab"
|
||||
msgstr "Editar en GitLab"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:62 sphinx_rtd_theme/breadcrumbs.html:64
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:56 sphinx_rtd_theme/breadcrumbs.html:58
|
||||
msgid "View page source"
|
||||
msgstr "Ver código fuente de la página"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:74 sphinx_rtd_theme/footer.html:5
|
||||
msgid "Next"
|
||||
msgstr "Siguiente"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:77 sphinx_rtd_theme/footer.html:8
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:69 sphinx_rtd_theme/footer.html:6
|
||||
msgid "Previous"
|
||||
msgstr "Anterior"
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:21 sphinx_rtd_theme/footer.html:24
|
||||
#: sphinx_rtd_theme/layout.html:96
|
||||
msgid "Copyright"
|
||||
msgstr "Derechos de autor"
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:72 sphinx_rtd_theme/footer.html:9
|
||||
msgid "Next"
|
||||
msgstr "Siguiente"
|
||||
|
||||
#. This is an ARIA section label for the footer section of the page.
|
||||
#: sphinx_rtd_theme/footer.html:4
|
||||
msgid "Footer"
|
||||
msgstr "Pie de página"
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:21
|
||||
#, python-format
|
||||
msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s."
|
||||
msgstr "© <a href=\"%(path)s\">Derechos de autor</a> %(copyright)s."
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:23
|
||||
#, python-format
|
||||
msgid "© Copyright %(copyright)s."
|
||||
msgstr "© Derechos de autor %(copyright)s."
|
||||
|
||||
#. Build is a noun, not a verb
|
||||
#: sphinx_rtd_theme/footer.html:31
|
||||
#: sphinx_rtd_theme/footer.html:30
|
||||
msgid "Build"
|
||||
msgstr "Construido"
|
||||
msgstr "Compilación"
|
||||
|
||||
#. the phrase "revision" comes from Git, referring to a commit
|
||||
#: sphinx_rtd_theme/footer.html:37
|
||||
#: sphinx_rtd_theme/footer.html:36
|
||||
msgid "Revision"
|
||||
msgstr "Revisión"
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:41
|
||||
#, python-format
|
||||
msgid "Last updated on %(last_updated)s."
|
||||
msgstr "Actualizado por última vez en %(last_updated)s."
|
||||
msgstr "Actualizado por última vez el %(last_updated)s."
|
||||
|
||||
#. the variable "sphinx_web" is a link to the Sphinx project documentation
|
||||
#. with
|
||||
#. the text "Sphinx"
|
||||
#: sphinx_rtd_theme/footer.html:52
|
||||
#: sphinx_rtd_theme/footer.html:53
|
||||
#, python-format
|
||||
msgid "Built with %(sphinx_web)s using a"
|
||||
msgstr "Construido con %(sphinx_web)s usando un"
|
||||
msgstr "Compilado con %(sphinx_web)s usando un"
|
||||
|
||||
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
||||
#. generated documenation
|
||||
#: sphinx_rtd_theme/footer.html:54
|
||||
#: sphinx_rtd_theme/footer.html:55
|
||||
msgid "theme"
|
||||
msgstr "tema"
|
||||
|
||||
#. this is always used as "provided by Read the Docs", and should not imply
|
||||
#. Read the Docs is an author of the generated documentation.
|
||||
#: sphinx_rtd_theme/footer.html:56
|
||||
#: sphinx_rtd_theme/footer.html:57
|
||||
#, python-format
|
||||
msgid "provided by %(readthedocs_web)s"
|
||||
msgstr "proporcionado por %(readthedocs_web)s"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:79
|
||||
#: sphinx_rtd_theme/layout.html:97
|
||||
#, python-format
|
||||
msgid "Search within %(docstitle)s"
|
||||
msgstr "Buscar en %(docstitle)s"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:87
|
||||
#: sphinx_rtd_theme/layout.html:105
|
||||
msgid "About these documents"
|
||||
msgstr "Sobre esta documentación"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:90
|
||||
#: sphinx_rtd_theme/layout.html:108
|
||||
msgid "Index"
|
||||
msgstr "Índice"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:93 sphinx_rtd_theme/search.html:11
|
||||
#: sphinx_rtd_theme/layout.html:111 sphinx_rtd_theme/search.html:11
|
||||
msgid "Search"
|
||||
msgstr "Búsqueda"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:121
|
||||
msgid "Documentation Home"
|
||||
msgstr "Inicio de Documentación"
|
||||
#: sphinx_rtd_theme/layout.html:114
|
||||
msgid "Copyright"
|
||||
msgstr "Derechos de autor"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:128
|
||||
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
|
||||
msgid "Logo"
|
||||
msgstr "Logotipo"
|
||||
|
||||
#: sphinx_rtd_theme/search.html:29
|
||||
#: sphinx_rtd_theme/search.html:31
|
||||
msgid "Please activate JavaScript to enable the search functionality."
|
||||
msgstr ""
|
||||
"Por favor, active JavaScript para habilitar la funcionalidad de búsqueda."
|
||||
|
||||
#. Search is a noun, not a verb
|
||||
#: sphinx_rtd_theme/search.html:37
|
||||
#: sphinx_rtd_theme/search.html:39
|
||||
msgid "Search Results"
|
||||
msgstr "Resultados de la búsqueda"
|
||||
|
||||
#: sphinx_rtd_theme/search.html:39
|
||||
#: sphinx_rtd_theme/search.html:41
|
||||
msgid ""
|
||||
"Your search did not match any documents. Please make sure that all words are"
|
||||
" spelled correctly and that you've selected enough categories."
|
||||
@ -136,7 +146,7 @@ msgstr ""
|
||||
msgid "Search docs"
|
||||
msgstr "Buscar documentos"
|
||||
|
||||
#: sphinx_rtd_theme/versions.html:11
|
||||
#: sphinx_rtd_theme/versions.html:3 sphinx_rtd_theme/versions.html:11
|
||||
msgid "Versions"
|
||||
msgstr "Versiones"
|
||||
|
||||
@ -155,10 +165,4 @@ msgstr "Página de Proyecto"
|
||||
|
||||
#: sphinx_rtd_theme/versions.html:29
|
||||
msgid "Builds"
|
||||
msgstr "Construcciones"
|
||||
|
||||
#~ msgid "Docs"
|
||||
#~ msgstr "Documentos"
|
||||
|
||||
#~ msgid "Free document hosting provided by"
|
||||
#~ msgstr "Alojamiento gratuito de documentos proporcionado por"
|
||||
msgstr "Compilaciones"
|
||||
|
||||
Binary file not shown.
@ -6,15 +6,15 @@
|
||||
#
|
||||
# Translators:
|
||||
# Anthony <aj@ohess.org>, 2020
|
||||
# Ivar Smolin <okul@linux.ee>, 2020
|
||||
# Ivar Smolin <okul@linux.ee>, 2021
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2020-05-06 13:38-0600\n"
|
||||
"POT-Creation-Date: 2021-09-13 13:35-0600\n"
|
||||
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
||||
"Last-Translator: Ivar Smolin <okul@linux.ee>, 2020\n"
|
||||
"Last-Translator: Ivar Smolin <okul@linux.ee>, 2021\n"
|
||||
"Language-Team: Estonian (https://www.transifex.com/readthedocs/teams/101354/et/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -23,42 +23,52 @@ msgstr ""
|
||||
"Language: et\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:43 sphinx_rtd_theme/breadcrumbs.html:45
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:37 sphinx_rtd_theme/breadcrumbs.html:39
|
||||
msgid "Edit on GitHub"
|
||||
msgstr "Muuda GitHubis"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:50 sphinx_rtd_theme/breadcrumbs.html:52
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:44 sphinx_rtd_theme/breadcrumbs.html:46
|
||||
msgid "Edit on Bitbucket"
|
||||
msgstr "Muuda Bitbucketis"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:57 sphinx_rtd_theme/breadcrumbs.html:59
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:51 sphinx_rtd_theme/breadcrumbs.html:53
|
||||
msgid "Edit on GitLab"
|
||||
msgstr "Muuda GitLabis"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:62 sphinx_rtd_theme/breadcrumbs.html:64
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:56 sphinx_rtd_theme/breadcrumbs.html:58
|
||||
msgid "View page source"
|
||||
msgstr "Vaata lehe lähtekoodi"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:74 sphinx_rtd_theme/footer.html:5
|
||||
msgid "Next"
|
||||
msgstr "Järgmine"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:77 sphinx_rtd_theme/footer.html:8
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:69 sphinx_rtd_theme/footer.html:6
|
||||
msgid "Previous"
|
||||
msgstr "Eelmine"
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:21 sphinx_rtd_theme/footer.html:24
|
||||
#: sphinx_rtd_theme/layout.html:96
|
||||
msgid "Copyright"
|
||||
msgstr "Autoriõigus"
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:72 sphinx_rtd_theme/footer.html:9
|
||||
msgid "Next"
|
||||
msgstr "Järgmine"
|
||||
|
||||
#. This is an ARIA section label for the footer section of the page.
|
||||
#: sphinx_rtd_theme/footer.html:4
|
||||
msgid "Footer"
|
||||
msgstr "Jalus"
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:21
|
||||
#, python-format
|
||||
msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s."
|
||||
msgstr "© <a href=\"%(path)s\">Autoriõigus</a> %(copyright)s."
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:23
|
||||
#, python-format
|
||||
msgid "© Copyright %(copyright)s."
|
||||
msgstr "© Autoriõigus %(copyright)s."
|
||||
|
||||
#. Build is a noun, not a verb
|
||||
#: sphinx_rtd_theme/footer.html:31
|
||||
#: sphinx_rtd_theme/footer.html:30
|
||||
msgid "Build"
|
||||
msgstr "Ehitus"
|
||||
|
||||
#. the phrase "revision" comes from Git, referring to a commit
|
||||
#: sphinx_rtd_theme/footer.html:37
|
||||
#: sphinx_rtd_theme/footer.html:36
|
||||
msgid "Revision"
|
||||
msgstr "Redaktsioon"
|
||||
|
||||
@ -70,52 +80,59 @@ msgstr "Viimati uuendatud %(last_updated)s."
|
||||
#. the variable "sphinx_web" is a link to the Sphinx project documentation
|
||||
#. with
|
||||
#. the text "Sphinx"
|
||||
#: sphinx_rtd_theme/footer.html:52
|
||||
#: sphinx_rtd_theme/footer.html:53
|
||||
#, python-format
|
||||
msgid "Built with %(sphinx_web)s using a"
|
||||
msgstr "Ehitatud %(sphinx_web)s'iga,"
|
||||
|
||||
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
||||
#. generated documenation
|
||||
#: sphinx_rtd_theme/footer.html:54
|
||||
#: sphinx_rtd_theme/footer.html:55
|
||||
msgid "theme"
|
||||
msgstr "kujundusteema"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:79
|
||||
#. this is always used as "provided by Read the Docs", and should not imply
|
||||
#. Read the Docs is an author of the generated documentation.
|
||||
#: sphinx_rtd_theme/footer.html:57
|
||||
#, python-format
|
||||
msgid "provided by %(readthedocs_web)s"
|
||||
msgstr "on loonud %(readthedocs_web)s"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:97
|
||||
#, python-format
|
||||
msgid "Search within %(docstitle)s"
|
||||
msgstr "Otsi dokumendist %(docstitle)s"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:87
|
||||
#: sphinx_rtd_theme/layout.html:105
|
||||
msgid "About these documents"
|
||||
msgstr "Nende dokumentide kirjeldused"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:90
|
||||
#: sphinx_rtd_theme/layout.html:108
|
||||
msgid "Index"
|
||||
msgstr "Indeks"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:93 sphinx_rtd_theme/search.html:11
|
||||
#: sphinx_rtd_theme/layout.html:111 sphinx_rtd_theme/search.html:11
|
||||
msgid "Search"
|
||||
msgstr "Otsing"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:121
|
||||
msgid "Documentation Home"
|
||||
msgstr "Dokumentatsiooni kodu"
|
||||
#: sphinx_rtd_theme/layout.html:114
|
||||
msgid "Copyright"
|
||||
msgstr "Autoriõigus"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:128
|
||||
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
|
||||
msgid "Logo"
|
||||
msgstr "Logo"
|
||||
|
||||
#: sphinx_rtd_theme/search.html:29
|
||||
#: sphinx_rtd_theme/search.html:31
|
||||
msgid "Please activate JavaScript to enable the search functionality."
|
||||
msgstr "Otsimisfunktsiooni lubamiseks aktiveeri palun JavaScript"
|
||||
|
||||
#. Search is a noun, not a verb
|
||||
#: sphinx_rtd_theme/search.html:37
|
||||
#: sphinx_rtd_theme/search.html:39
|
||||
msgid "Search Results"
|
||||
msgstr "Otsingu tulemused"
|
||||
|
||||
#: sphinx_rtd_theme/search.html:39
|
||||
#: sphinx_rtd_theme/search.html:41
|
||||
msgid ""
|
||||
"Your search did not match any documents. Please make sure that all words are"
|
||||
" spelled correctly and that you've selected enough categories."
|
||||
@ -127,7 +144,7 @@ msgstr ""
|
||||
msgid "Search docs"
|
||||
msgstr "Otsi dokumente"
|
||||
|
||||
#: sphinx_rtd_theme/versions.html:11
|
||||
#: sphinx_rtd_theme/versions.html:3 sphinx_rtd_theme/versions.html:11
|
||||
msgid "Versions"
|
||||
msgstr "Versioonid"
|
||||
|
||||
@ -147,9 +164,3 @@ msgstr "Projekti kodu"
|
||||
#: sphinx_rtd_theme/versions.html:29
|
||||
msgid "Builds"
|
||||
msgstr "Ehitused"
|
||||
|
||||
#~ msgid "Docs"
|
||||
#~ msgstr "Dokumendid"
|
||||
|
||||
#~ msgid "Free document hosting provided by"
|
||||
#~ msgstr "Dokumentatsiooni majutab tasuta"
|
||||
|
||||
Binary file not shown.
@ -0,0 +1,160 @@
|
||||
# English translations for sphinx_rtd_theme.
|
||||
# Copyright (C) 2019 ORGANIZATION
|
||||
# This file is distributed under the same license as the sphinx_rtd_theme
|
||||
# project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
|
||||
#
|
||||
# Translators:
|
||||
# Anthony <aj@ohess.org>, 2021
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2021-09-13 13:35-0600\n"
|
||||
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
||||
"Last-Translator: Anthony <aj@ohess.org>, 2021\n"
|
||||
"Language-Team: Persian (Iran) (https://www.transifex.com/readthedocs/teams/101354/fa_IR/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
"Language: fa_IR\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:37 sphinx_rtd_theme/breadcrumbs.html:39
|
||||
msgid "Edit on GitHub"
|
||||
msgstr "ویرایش در GitHub"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:44 sphinx_rtd_theme/breadcrumbs.html:46
|
||||
msgid "Edit on Bitbucket"
|
||||
msgstr "ویرایش در Bitbucket"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:51 sphinx_rtd_theme/breadcrumbs.html:53
|
||||
msgid "Edit on GitLab"
|
||||
msgstr "ویرایش در GitLab"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:56 sphinx_rtd_theme/breadcrumbs.html:58
|
||||
msgid "View page source"
|
||||
msgstr "نمایش متن منبع صفحه"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:69 sphinx_rtd_theme/footer.html:6
|
||||
msgid "Previous"
|
||||
msgstr "پیشین"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:72 sphinx_rtd_theme/footer.html:9
|
||||
msgid "Next"
|
||||
msgstr "بعدی"
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:21
|
||||
#, python-format
|
||||
msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s."
|
||||
msgstr "© <a href=\"%(path)s\">حق انتشار</a> %(copyright)s."
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:23
|
||||
#, python-format
|
||||
msgid "© Copyright %(copyright)s."
|
||||
msgstr "© حق انتشار%(copyright)s."
|
||||
|
||||
#. Build is a noun, not a verb
|
||||
#: sphinx_rtd_theme/footer.html:30
|
||||
msgid "Build"
|
||||
msgstr "ساخت"
|
||||
|
||||
#. the phrase "revision" comes from Git, referring to a commit
|
||||
#: sphinx_rtd_theme/footer.html:36
|
||||
msgid "Revision"
|
||||
msgstr "بازبینی"
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:41
|
||||
#, python-format
|
||||
msgid "Last updated on %(last_updated)s."
|
||||
msgstr "آخرین بروز رسانی در %(last_updated)s ."
|
||||
|
||||
#. the variable "sphinx_web" is a link to the Sphinx project documentation
|
||||
#. with
|
||||
#. the text "Sphinx"
|
||||
#: sphinx_rtd_theme/footer.html:53
|
||||
#, python-format
|
||||
msgid "Built with %(sphinx_web)s using a"
|
||||
msgstr "ساخته شده با %(sphinx_web)s"
|
||||
|
||||
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
||||
#. generated documenation
|
||||
#: sphinx_rtd_theme/footer.html:55
|
||||
msgid "theme"
|
||||
msgstr "پوسته"
|
||||
|
||||
#. this is always used as "provided by Read the Docs", and should not imply
|
||||
#. Read the Docs is an author of the generated documentation.
|
||||
#: sphinx_rtd_theme/footer.html:57
|
||||
#, python-format
|
||||
msgid "provided by %(readthedocs_web)s"
|
||||
msgstr "تهیّه شده با %(readthedocs_web)s"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:97
|
||||
#, python-format
|
||||
msgid "Search within %(docstitle)s"
|
||||
msgstr "جستجو در %(docstitle)s"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:105
|
||||
msgid "About these documents"
|
||||
msgstr "درباره این مستندات"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:108
|
||||
msgid "Index"
|
||||
msgstr "فهرست"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:111 sphinx_rtd_theme/search.html:11
|
||||
msgid "Search"
|
||||
msgstr "جستجوی"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:114
|
||||
msgid "Copyright"
|
||||
msgstr "کپی رایت"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
|
||||
msgid "Logo"
|
||||
msgstr "آرم"
|
||||
|
||||
#: sphinx_rtd_theme/search.html:31
|
||||
msgid "Please activate JavaScript to enable the search functionality."
|
||||
msgstr "لطفاً جاوا اسکریپت را فعّال کنید تا قابلیّت جستجو فعّال شود."
|
||||
|
||||
#. Search is a noun, not a verb
|
||||
#: sphinx_rtd_theme/search.html:39
|
||||
msgid "Search Results"
|
||||
msgstr "نتایج جستجو"
|
||||
|
||||
#: sphinx_rtd_theme/search.html:41
|
||||
msgid ""
|
||||
"Your search did not match any documents. Please make sure that all words are"
|
||||
" spelled correctly and that you've selected enough categories."
|
||||
msgstr ""
|
||||
"جستجوی شما با هیچ سندی مطابقت نداشت. لطفاً از درستی املای واژگان مطمئن شوید."
|
||||
" همچنین بررسی کنید آیا به اندازه کافی دسته بندی انتخاب کردهاید."
|
||||
|
||||
#: sphinx_rtd_theme/searchbox.html:4
|
||||
msgid "Search docs"
|
||||
msgstr "جستجوی مستندات"
|
||||
|
||||
#: sphinx_rtd_theme/versions.html:3 sphinx_rtd_theme/versions.html:11
|
||||
msgid "Versions"
|
||||
msgstr "نگارشها"
|
||||
|
||||
#: sphinx_rtd_theme/versions.html:17
|
||||
msgid "Downloads"
|
||||
msgstr "بارگیریها"
|
||||
|
||||
#. The phrase "Read the Docs" is not translated
|
||||
#: sphinx_rtd_theme/versions.html:24
|
||||
msgid "On Read the Docs"
|
||||
msgstr "دربارهی خواندن مستندات"
|
||||
|
||||
#: sphinx_rtd_theme/versions.html:26
|
||||
msgid "Project Home"
|
||||
msgstr "صفحه خانگی پروژه"
|
||||
|
||||
#: sphinx_rtd_theme/versions.html:29
|
||||
msgid "Builds"
|
||||
msgstr "ساختها"
|
||||
Binary file not shown.
@ -5,16 +5,16 @@
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
|
||||
#
|
||||
# Translators:
|
||||
# Radina Matic <radina.matic@gmail.com>, 2020
|
||||
# Anthony <aj@ohess.org>, 2020
|
||||
# Radina Matic <radina.matic@gmail.com>, 2021
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2020-05-06 13:38-0600\n"
|
||||
"POT-Creation-Date: 2021-09-13 13:35-0600\n"
|
||||
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
||||
"Last-Translator: Anthony <aj@ohess.org>, 2020\n"
|
||||
"Last-Translator: Radina Matic <radina.matic@gmail.com>, 2021\n"
|
||||
"Language-Team: French (https://www.transifex.com/readthedocs/teams/101354/fr/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -23,42 +23,52 @@ msgstr ""
|
||||
"Language: fr\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:43 sphinx_rtd_theme/breadcrumbs.html:45
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:37 sphinx_rtd_theme/breadcrumbs.html:39
|
||||
msgid "Edit on GitHub"
|
||||
msgstr "Éditer sur GitHub"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:50 sphinx_rtd_theme/breadcrumbs.html:52
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:44 sphinx_rtd_theme/breadcrumbs.html:46
|
||||
msgid "Edit on Bitbucket"
|
||||
msgstr "Éditer sur Bitbucket"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:57 sphinx_rtd_theme/breadcrumbs.html:59
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:51 sphinx_rtd_theme/breadcrumbs.html:53
|
||||
msgid "Edit on GitLab"
|
||||
msgstr "Éditer sur GitLab"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:62 sphinx_rtd_theme/breadcrumbs.html:64
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:56 sphinx_rtd_theme/breadcrumbs.html:58
|
||||
msgid "View page source"
|
||||
msgstr "Afficher la source de la page"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:74 sphinx_rtd_theme/footer.html:5
|
||||
msgid "Next"
|
||||
msgstr "Suivant"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:77 sphinx_rtd_theme/footer.html:8
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:69 sphinx_rtd_theme/footer.html:6
|
||||
msgid "Previous"
|
||||
msgstr "Précédent"
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:21 sphinx_rtd_theme/footer.html:24
|
||||
#: sphinx_rtd_theme/layout.html:96
|
||||
msgid "Copyright"
|
||||
msgstr "Droits d'auteur"
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:72 sphinx_rtd_theme/footer.html:9
|
||||
msgid "Next"
|
||||
msgstr "Suivant"
|
||||
|
||||
#. This is an ARIA section label for the footer section of the page.
|
||||
#: sphinx_rtd_theme/footer.html:4
|
||||
msgid "Footer"
|
||||
msgstr "Pied de page"
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:21
|
||||
#, python-format
|
||||
msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s."
|
||||
msgstr "© <a href=\"%(path)s\">Droits d'auteur</a> %(copyright)s."
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:23
|
||||
#, python-format
|
||||
msgid "© Copyright %(copyright)s."
|
||||
msgstr "© Droits d'auteur %(copyright)s."
|
||||
|
||||
#. Build is a noun, not a verb
|
||||
#: sphinx_rtd_theme/footer.html:31
|
||||
#: sphinx_rtd_theme/footer.html:30
|
||||
msgid "Build"
|
||||
msgstr "Compilation"
|
||||
|
||||
#. the phrase "revision" comes from Git, referring to a commit
|
||||
#: sphinx_rtd_theme/footer.html:37
|
||||
#: sphinx_rtd_theme/footer.html:36
|
||||
msgid "Revision"
|
||||
msgstr "Révision"
|
||||
|
||||
@ -70,55 +80,59 @@ msgstr "Dernière mise à jour le %(last_updated)s."
|
||||
#. the variable "sphinx_web" is a link to the Sphinx project documentation
|
||||
#. with
|
||||
#. the text "Sphinx"
|
||||
#: sphinx_rtd_theme/footer.html:52
|
||||
#: sphinx_rtd_theme/footer.html:53
|
||||
#, python-format
|
||||
msgid "Built with %(sphinx_web)s using a"
|
||||
msgstr "Compilé avec %(sphinx_web)s en utilisant un"
|
||||
|
||||
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
||||
#. generated documenation
|
||||
#: sphinx_rtd_theme/footer.html:54
|
||||
#: sphinx_rtd_theme/footer.html:55
|
||||
msgid "theme"
|
||||
msgstr "thème"
|
||||
|
||||
#. this is always used as "provided by Read the Docs", and should not imply
|
||||
#. Read the Docs is an author of the generated documentation.
|
||||
#: sphinx_rtd_theme/footer.html:56
|
||||
#: sphinx_rtd_theme/footer.html:57
|
||||
#, python-format
|
||||
msgid "provided by %(readthedocs_web)s"
|
||||
msgstr "fourni par %(readthedocs_web)s"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:79
|
||||
#: sphinx_rtd_theme/layout.html:97
|
||||
#, python-format
|
||||
msgid "Search within %(docstitle)s"
|
||||
msgstr "Rechercher dans %(docstitle)s"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:87
|
||||
#: sphinx_rtd_theme/layout.html:105
|
||||
msgid "About these documents"
|
||||
msgstr "À propos de cette documentation"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:90
|
||||
#: sphinx_rtd_theme/layout.html:108
|
||||
msgid "Index"
|
||||
msgstr "Index"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:93 sphinx_rtd_theme/search.html:11
|
||||
#: sphinx_rtd_theme/layout.html:111 sphinx_rtd_theme/search.html:11
|
||||
msgid "Search"
|
||||
msgstr "Rechercher"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:128
|
||||
#: sphinx_rtd_theme/layout.html:114
|
||||
msgid "Copyright"
|
||||
msgstr "Droits d'auteur"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
|
||||
msgid "Logo"
|
||||
msgstr "Logo"
|
||||
|
||||
#: sphinx_rtd_theme/search.html:29
|
||||
#: sphinx_rtd_theme/search.html:31
|
||||
msgid "Please activate JavaScript to enable the search functionality."
|
||||
msgstr "Activez JavaScript pour accéder à la fonction de recherche."
|
||||
|
||||
#. Search is a noun, not a verb
|
||||
#: sphinx_rtd_theme/search.html:37
|
||||
#: sphinx_rtd_theme/search.html:39
|
||||
msgid "Search Results"
|
||||
msgstr "Résultats de la recherche"
|
||||
|
||||
#: sphinx_rtd_theme/search.html:39
|
||||
#: sphinx_rtd_theme/search.html:41
|
||||
msgid ""
|
||||
"Your search did not match any documents. Please make sure that all words are"
|
||||
" spelled correctly and that you've selected enough categories."
|
||||
@ -131,7 +145,7 @@ msgstr ""
|
||||
msgid "Search docs"
|
||||
msgstr "Rechercher docs"
|
||||
|
||||
#: sphinx_rtd_theme/versions.html:11
|
||||
#: sphinx_rtd_theme/versions.html:3 sphinx_rtd_theme/versions.html:11
|
||||
msgid "Versions"
|
||||
msgstr "Versions"
|
||||
|
||||
@ -139,6 +153,11 @@ msgstr "Versions"
|
||||
msgid "Downloads"
|
||||
msgstr "Téléchargements"
|
||||
|
||||
#. The phrase "Read the Docs" is not translated
|
||||
#: sphinx_rtd_theme/versions.html:24
|
||||
msgid "On Read the Docs"
|
||||
msgstr "À propos de Read the Docs"
|
||||
|
||||
#: sphinx_rtd_theme/versions.html:26
|
||||
msgid "Project Home"
|
||||
msgstr "Accueil du projet"
|
||||
@ -146,9 +165,3 @@ msgstr "Accueil du projet"
|
||||
#: sphinx_rtd_theme/versions.html:29
|
||||
msgid "Builds"
|
||||
msgstr "Compilations"
|
||||
|
||||
#~ msgid "Docs"
|
||||
#~ msgstr "Docs"
|
||||
|
||||
#~ msgid "Free document hosting provided by"
|
||||
#~ msgstr "Hébergement gratuit de documents fourni par"
|
||||
|
||||
Binary file not shown.
@ -0,0 +1,190 @@
|
||||
# English translations for sphinx_rtd_theme.
|
||||
# Copyright (C) 2019 ORGANIZATION
|
||||
# This file is distributed under the same license as the sphinx_rtd_theme
|
||||
# project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
|
||||
#
|
||||
# Translators:
|
||||
# Anthony <aj@ohess.org>, 2021
|
||||
# Maurizio Paglia <mpaglia0@gmail.com>, 2021
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2021-09-13 13:35-0600\n"
|
||||
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
||||
"Last-Translator: Maurizio Paglia <mpaglia0@gmail.com>, 2021\n"
|
||||
"Language-Team: Italian (https://www.transifex.com/readthedocs/teams/101354/it/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
"Language: it\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. This is an ARIA section label for page links, including previous/next page
|
||||
#. link and links to GitHub/GitLab/etc.
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:22
|
||||
msgid "Page navigation"
|
||||
msgstr "Naviga tra le pagine"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:37 sphinx_rtd_theme/breadcrumbs.html:39
|
||||
msgid "Edit on GitHub"
|
||||
msgstr "Modifica su GitHub"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:44 sphinx_rtd_theme/breadcrumbs.html:46
|
||||
msgid "Edit on Bitbucket"
|
||||
msgstr "Modifica su Bitbucket"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:51 sphinx_rtd_theme/breadcrumbs.html:53
|
||||
msgid "Edit on GitLab"
|
||||
msgstr "Modifica su GitLab"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:56 sphinx_rtd_theme/breadcrumbs.html:58
|
||||
msgid "View page source"
|
||||
msgstr "Visualizza sorgente pagina"
|
||||
|
||||
#. This is an ARIA section label for sequential page links, such as previous
|
||||
#. and next page links.
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:67
|
||||
msgid "Sequential page navigation"
|
||||
msgstr "Naviga sequenzialmente tra le pagine"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:69 sphinx_rtd_theme/footer.html:6
|
||||
msgid "Previous"
|
||||
msgstr "Precedente"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:72 sphinx_rtd_theme/footer.html:9
|
||||
msgid "Next"
|
||||
msgstr "Prossimo"
|
||||
|
||||
#. This is an ARIA section label for the footer section of the page.
|
||||
#: sphinx_rtd_theme/footer.html:4
|
||||
msgid "Footer"
|
||||
msgstr "Piè di pagina"
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:21
|
||||
#, python-format
|
||||
msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s."
|
||||
msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s."
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:23
|
||||
#, python-format
|
||||
msgid "© Copyright %(copyright)s."
|
||||
msgstr "© Copyright %(copyright)s."
|
||||
|
||||
#. Build is a noun, not a verb
|
||||
#: sphinx_rtd_theme/footer.html:30
|
||||
msgid "Build"
|
||||
msgstr "Rev."
|
||||
|
||||
#. the phrase "revision" comes from Git, referring to a commit
|
||||
#: sphinx_rtd_theme/footer.html:36
|
||||
msgid "Revision"
|
||||
msgstr "Revisione"
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:41
|
||||
#, python-format
|
||||
msgid "Last updated on %(last_updated)s."
|
||||
msgstr "Ultimo aggiornamento il %(last_updated)s."
|
||||
|
||||
#. the variable "sphinx_web" is a link to the Sphinx project documentation
|
||||
#. with
|
||||
#. the text "Sphinx"
|
||||
#: sphinx_rtd_theme/footer.html:53
|
||||
#, python-format
|
||||
msgid "Built with %(sphinx_web)s using a"
|
||||
msgstr "Realizzato con %(sphinx_web)s e il tema"
|
||||
|
||||
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
||||
#. generated documenation
|
||||
#: sphinx_rtd_theme/footer.html:55
|
||||
msgid "theme"
|
||||
msgstr "tema"
|
||||
|
||||
#. this is always used as "provided by Read the Docs", and should not imply
|
||||
#. Read the Docs is an author of the generated documentation.
|
||||
#: sphinx_rtd_theme/footer.html:57
|
||||
#, python-format
|
||||
msgid "provided by %(readthedocs_web)s"
|
||||
msgstr "fornito da %(readthedocs_web)s"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:97
|
||||
#, python-format
|
||||
msgid "Search within %(docstitle)s"
|
||||
msgstr "Cerca in %(docstitle)s"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:105
|
||||
msgid "About these documents"
|
||||
msgstr "Nota sulla documentazione"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:108
|
||||
msgid "Index"
|
||||
msgstr "Indice"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:111 sphinx_rtd_theme/search.html:11
|
||||
msgid "Search"
|
||||
msgstr "Ricerca"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:114
|
||||
msgid "Copyright"
|
||||
msgstr "Copyright"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
|
||||
msgid "Logo"
|
||||
msgstr "Logo"
|
||||
|
||||
#. This is an ARIA section label for the main navigation menu
|
||||
#: sphinx_rtd_theme/layout.html:173
|
||||
msgid "Navigation menu"
|
||||
msgstr "Menu di navigazione"
|
||||
|
||||
#. This is an ARIA section label for the navigation menu that is visible when
|
||||
#. viewing the page on mobile devices
|
||||
#: sphinx_rtd_theme/layout.html:195
|
||||
msgid "Mobile navigation menu"
|
||||
msgstr "Menu navigazione dispositivi mobili"
|
||||
|
||||
#: sphinx_rtd_theme/search.html:31
|
||||
msgid "Please activate JavaScript to enable the search functionality."
|
||||
msgstr "Devi attivare JavaScript per attivare la funzione di ricerca."
|
||||
|
||||
#. Search is a noun, not a verb
|
||||
#: sphinx_rtd_theme/search.html:39
|
||||
msgid "Search Results"
|
||||
msgstr "Risultati della ricerca"
|
||||
|
||||
#: sphinx_rtd_theme/search.html:41
|
||||
msgid ""
|
||||
"Your search did not match any documents. Please make sure that all words are"
|
||||
" spelled correctly and that you've selected enough categories."
|
||||
msgstr ""
|
||||
"La tua ricerca non ha prodotto nessun risultato. Assicurati di aver scritto "
|
||||
"correttamente tutti i termini cercati e di aver selezionato sufficienti "
|
||||
"categorie."
|
||||
|
||||
#: sphinx_rtd_theme/searchbox.html:4
|
||||
msgid "Search docs"
|
||||
msgstr "Cerca documenti"
|
||||
|
||||
#: sphinx_rtd_theme/versions.html:3 sphinx_rtd_theme/versions.html:11
|
||||
msgid "Versions"
|
||||
msgstr "Versioni"
|
||||
|
||||
#: sphinx_rtd_theme/versions.html:17
|
||||
msgid "Downloads"
|
||||
msgstr "Downloads"
|
||||
|
||||
#. The phrase "Read the Docs" is not translated
|
||||
#: sphinx_rtd_theme/versions.html:24
|
||||
msgid "On Read the Docs"
|
||||
msgstr "Riguardo Read the Docs"
|
||||
|
||||
#: sphinx_rtd_theme/versions.html:26
|
||||
msgid "Project Home"
|
||||
msgstr "Home progetto"
|
||||
|
||||
#: sphinx_rtd_theme/versions.html:29
|
||||
msgid "Builds"
|
||||
msgstr "Rev."
|
||||
Binary file not shown.
@ -0,0 +1,188 @@
|
||||
# English translations for sphinx_rtd_theme.
|
||||
# Copyright (C) 2019 ORGANIZATION
|
||||
# This file is distributed under the same license as the sphinx_rtd_theme
|
||||
# project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
|
||||
#
|
||||
# Translators:
|
||||
# Tomas Straupis, 2021
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2021-09-13 13:35-0600\n"
|
||||
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
||||
"Last-Translator: Tomas Straupis, 2021\n"
|
||||
"Language-Team: Lithuanian (https://www.transifex.com/readthedocs/teams/101354/lt/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
"Language: lt\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\n"
|
||||
|
||||
#. This is an ARIA section label for page links, including previous/next page
|
||||
#. link and links to GitHub/GitLab/etc.
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:22
|
||||
msgid "Page navigation"
|
||||
msgstr "Puslapių navigacija"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:37 sphinx_rtd_theme/breadcrumbs.html:39
|
||||
msgid "Edit on GitHub"
|
||||
msgstr "Keisti GitHub'e"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:44 sphinx_rtd_theme/breadcrumbs.html:46
|
||||
msgid "Edit on Bitbucket"
|
||||
msgstr "Keisti Bitbucket'e"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:51 sphinx_rtd_theme/breadcrumbs.html:53
|
||||
msgid "Edit on GitLab"
|
||||
msgstr "Keisti GitLab'e"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:56 sphinx_rtd_theme/breadcrumbs.html:58
|
||||
msgid "View page source"
|
||||
msgstr "Žiūrėti puslapio šaltinį"
|
||||
|
||||
#. This is an ARIA section label for sequential page links, such as previous
|
||||
#. and next page links.
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:67
|
||||
msgid "Sequential page navigation"
|
||||
msgstr "Puslapių navigacija iš eilės"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:69 sphinx_rtd_theme/footer.html:6
|
||||
msgid "Previous"
|
||||
msgstr "Ankstesnis"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:72 sphinx_rtd_theme/footer.html:9
|
||||
msgid "Next"
|
||||
msgstr "Kitas"
|
||||
|
||||
#. This is an ARIA section label for the footer section of the page.
|
||||
#: sphinx_rtd_theme/footer.html:4
|
||||
msgid "Footer"
|
||||
msgstr "Poraštė"
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:21
|
||||
#, python-format
|
||||
msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s."
|
||||
msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s."
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:23
|
||||
#, python-format
|
||||
msgid "© Copyright %(copyright)s."
|
||||
msgstr "© Copyright %(copyright)s."
|
||||
|
||||
#. Build is a noun, not a verb
|
||||
#: sphinx_rtd_theme/footer.html:30
|
||||
msgid "Build"
|
||||
msgstr "Surinkimas"
|
||||
|
||||
#. the phrase "revision" comes from Git, referring to a commit
|
||||
#: sphinx_rtd_theme/footer.html:36
|
||||
msgid "Revision"
|
||||
msgstr "Versija"
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:41
|
||||
#, python-format
|
||||
msgid "Last updated on %(last_updated)s."
|
||||
msgstr "Atnaujinta %(last_updated)s."
|
||||
|
||||
#. the variable "sphinx_web" is a link to the Sphinx project documentation
|
||||
#. with
|
||||
#. the text "Sphinx"
|
||||
#: sphinx_rtd_theme/footer.html:53
|
||||
#, python-format
|
||||
msgid "Built with %(sphinx_web)s using a"
|
||||
msgstr "Surinkta su %(sphinx_web)s naudojant"
|
||||
|
||||
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
||||
#. generated documenation
|
||||
#: sphinx_rtd_theme/footer.html:55
|
||||
msgid "theme"
|
||||
msgstr "temą"
|
||||
|
||||
#. this is always used as "provided by Read the Docs", and should not imply
|
||||
#. Read the Docs is an author of the generated documentation.
|
||||
#: sphinx_rtd_theme/footer.html:57
|
||||
#, python-format
|
||||
msgid "provided by %(readthedocs_web)s"
|
||||
msgstr "pateiktą %(readthedocs_web)s"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:97
|
||||
#, python-format
|
||||
msgid "Search within %(docstitle)s"
|
||||
msgstr "Ieškoti %(docstitle)s"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:105
|
||||
msgid "About these documents"
|
||||
msgstr "Apie šiuos dokumentus"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:108
|
||||
msgid "Index"
|
||||
msgstr "Indeksas"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:111 sphinx_rtd_theme/search.html:11
|
||||
msgid "Search"
|
||||
msgstr "Paieška"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:114
|
||||
msgid "Copyright"
|
||||
msgstr "Autorių teisės"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
|
||||
msgid "Logo"
|
||||
msgstr "Logo"
|
||||
|
||||
#. This is an ARIA section label for the main navigation menu
|
||||
#: sphinx_rtd_theme/layout.html:173
|
||||
msgid "Navigation menu"
|
||||
msgstr "Navigacijos meniu"
|
||||
|
||||
#. This is an ARIA section label for the navigation menu that is visible when
|
||||
#. viewing the page on mobile devices
|
||||
#: sphinx_rtd_theme/layout.html:195
|
||||
msgid "Mobile navigation menu"
|
||||
msgstr "Mobilios navigacijos meniu"
|
||||
|
||||
#: sphinx_rtd_theme/search.html:31
|
||||
msgid "Please activate JavaScript to enable the search functionality."
|
||||
msgstr "Prašome įjungti JavaScript, kad veiktų paieškos funkcionalumas."
|
||||
|
||||
#. Search is a noun, not a verb
|
||||
#: sphinx_rtd_theme/search.html:39
|
||||
msgid "Search Results"
|
||||
msgstr "Paieškos rezultatai"
|
||||
|
||||
#: sphinx_rtd_theme/search.html:41
|
||||
msgid ""
|
||||
"Your search did not match any documents. Please make sure that all words are"
|
||||
" spelled correctly and that you've selected enough categories."
|
||||
msgstr ""
|
||||
"Jūsų paieškai neatitiko nei vienas dokumentas. Prašome įsitikinti, kad visi "
|
||||
"žodžiai parašyti teisingai ir kad parinkote pakankamai kategorijų."
|
||||
|
||||
#: sphinx_rtd_theme/searchbox.html:4
|
||||
msgid "Search docs"
|
||||
msgstr "Ieškoti dokumentuose"
|
||||
|
||||
#: sphinx_rtd_theme/versions.html:3 sphinx_rtd_theme/versions.html:11
|
||||
msgid "Versions"
|
||||
msgstr "Versijos"
|
||||
|
||||
#: sphinx_rtd_theme/versions.html:17
|
||||
msgid "Downloads"
|
||||
msgstr "Atsisiuntimai"
|
||||
|
||||
#. The phrase "Read the Docs" is not translated
|
||||
#: sphinx_rtd_theme/versions.html:24
|
||||
msgid "On Read the Docs"
|
||||
msgstr "Apie Read the Docs"
|
||||
|
||||
#: sphinx_rtd_theme/versions.html:26
|
||||
msgid "Project Home"
|
||||
msgstr "Projekto namai"
|
||||
|
||||
#: sphinx_rtd_theme/versions.html:29
|
||||
msgid "Builds"
|
||||
msgstr "Surinkimai"
|
||||
Binary file not shown.
@ -5,15 +5,15 @@
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
|
||||
#
|
||||
# Translators:
|
||||
# Jesse Tan, 2019
|
||||
# Jesse Tan, 2021
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2020-05-06 13:38-0600\n"
|
||||
"POT-Creation-Date: 2021-09-13 13:35-0600\n"
|
||||
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
||||
"Last-Translator: Jesse Tan, 2019\n"
|
||||
"Last-Translator: Jesse Tan, 2021\n"
|
||||
"Language-Team: Dutch (https://www.transifex.com/readthedocs/teams/101354/nl/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -22,42 +22,64 @@ msgstr ""
|
||||
"Language: nl\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:43 sphinx_rtd_theme/breadcrumbs.html:45
|
||||
#. This is an ARIA section label for page links, including previous/next page
|
||||
#. link and links to GitHub/GitLab/etc.
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:22
|
||||
msgid "Page navigation"
|
||||
msgstr "Paginanavigatie"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:37 sphinx_rtd_theme/breadcrumbs.html:39
|
||||
msgid "Edit on GitHub"
|
||||
msgstr "Bewerk op GitHub"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:50 sphinx_rtd_theme/breadcrumbs.html:52
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:44 sphinx_rtd_theme/breadcrumbs.html:46
|
||||
msgid "Edit on Bitbucket"
|
||||
msgstr "Bewerk op BitBucket"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:57 sphinx_rtd_theme/breadcrumbs.html:59
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:51 sphinx_rtd_theme/breadcrumbs.html:53
|
||||
msgid "Edit on GitLab"
|
||||
msgstr "Bewerk op GitLab"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:62 sphinx_rtd_theme/breadcrumbs.html:64
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:56 sphinx_rtd_theme/breadcrumbs.html:58
|
||||
msgid "View page source"
|
||||
msgstr "Bekijk paginabron"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:74 sphinx_rtd_theme/footer.html:5
|
||||
msgid "Next"
|
||||
msgstr "Volgende"
|
||||
#. This is an ARIA section label for sequential page links, such as previous
|
||||
#. and next page links.
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:67
|
||||
msgid "Sequential page navigation"
|
||||
msgstr "Navigatie voor gerelateerde pagina's"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:77 sphinx_rtd_theme/footer.html:8
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:69 sphinx_rtd_theme/footer.html:6
|
||||
msgid "Previous"
|
||||
msgstr "Vorige"
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:21 sphinx_rtd_theme/footer.html:24
|
||||
#: sphinx_rtd_theme/layout.html:96
|
||||
msgid "Copyright"
|
||||
msgstr "Copyright"
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:72 sphinx_rtd_theme/footer.html:9
|
||||
msgid "Next"
|
||||
msgstr "Volgende"
|
||||
|
||||
#. This is an ARIA section label for the footer section of the page.
|
||||
#: sphinx_rtd_theme/footer.html:4
|
||||
msgid "Footer"
|
||||
msgstr "Voettekst"
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:21
|
||||
#, python-format
|
||||
msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s."
|
||||
msgstr "© <a href=\"%(path)s\">Copyright</a> %(copyright)s."
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:23
|
||||
#, python-format
|
||||
msgid "© Copyright %(copyright)s."
|
||||
msgstr "© Copyright %(copyright)s."
|
||||
|
||||
#. Build is a noun, not a verb
|
||||
#: sphinx_rtd_theme/footer.html:31
|
||||
#: sphinx_rtd_theme/footer.html:30
|
||||
msgid "Build"
|
||||
msgstr "Bouwresultaat"
|
||||
|
||||
#. the phrase "revision" comes from Git, referring to a commit
|
||||
#: sphinx_rtd_theme/footer.html:37
|
||||
#: sphinx_rtd_theme/footer.html:36
|
||||
msgid "Revision"
|
||||
msgstr "Revisie"
|
||||
|
||||
@ -69,55 +91,70 @@ msgstr "Laatste update op %(last_updated)s."
|
||||
#. the variable "sphinx_web" is a link to the Sphinx project documentation
|
||||
#. with
|
||||
#. the text "Sphinx"
|
||||
#: sphinx_rtd_theme/footer.html:52
|
||||
#: sphinx_rtd_theme/footer.html:53
|
||||
#, python-format
|
||||
msgid "Built with %(sphinx_web)s using a"
|
||||
msgstr "Gebouwd met %(sphinx_web)s met een"
|
||||
|
||||
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
||||
#. generated documenation
|
||||
#: sphinx_rtd_theme/footer.html:54
|
||||
#: sphinx_rtd_theme/footer.html:55
|
||||
msgid "theme"
|
||||
msgstr "thema"
|
||||
|
||||
#. this is always used as "provided by Read the Docs", and should not imply
|
||||
#. Read the Docs is an author of the generated documentation.
|
||||
#: sphinx_rtd_theme/footer.html:56
|
||||
#: sphinx_rtd_theme/footer.html:57
|
||||
#, python-format
|
||||
msgid "provided by %(readthedocs_web)s"
|
||||
msgstr "geleverd door %(readthedocs_web)s"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:79
|
||||
#: sphinx_rtd_theme/layout.html:97
|
||||
#, python-format
|
||||
msgid "Search within %(docstitle)s"
|
||||
msgstr "Zoek binnen %(docstitle)s"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:87
|
||||
#: sphinx_rtd_theme/layout.html:105
|
||||
msgid "About these documents"
|
||||
msgstr "Over deze documenten"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:90
|
||||
#: sphinx_rtd_theme/layout.html:108
|
||||
msgid "Index"
|
||||
msgstr "Index"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:93 sphinx_rtd_theme/search.html:11
|
||||
#: sphinx_rtd_theme/layout.html:111 sphinx_rtd_theme/search.html:11
|
||||
msgid "Search"
|
||||
msgstr "Zoek"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:128
|
||||
#: sphinx_rtd_theme/layout.html:114
|
||||
msgid "Copyright"
|
||||
msgstr "Copyright"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
|
||||
msgid "Logo"
|
||||
msgstr "Logo"
|
||||
|
||||
#: sphinx_rtd_theme/search.html:29
|
||||
#. This is an ARIA section label for the main navigation menu
|
||||
#: sphinx_rtd_theme/layout.html:173
|
||||
msgid "Navigation menu"
|
||||
msgstr "Navigatiemenu"
|
||||
|
||||
#. This is an ARIA section label for the navigation menu that is visible when
|
||||
#. viewing the page on mobile devices
|
||||
#: sphinx_rtd_theme/layout.html:195
|
||||
msgid "Mobile navigation menu"
|
||||
msgstr "Navigatiemenu voor mobiel"
|
||||
|
||||
#: sphinx_rtd_theme/search.html:31
|
||||
msgid "Please activate JavaScript to enable the search functionality."
|
||||
msgstr "Zet JavaScript aan om de zoekfunctie mogelijk te maken."
|
||||
|
||||
#. Search is a noun, not a verb
|
||||
#: sphinx_rtd_theme/search.html:37
|
||||
#: sphinx_rtd_theme/search.html:39
|
||||
msgid "Search Results"
|
||||
msgstr "Zoekresultaten"
|
||||
|
||||
#: sphinx_rtd_theme/search.html:39
|
||||
#: sphinx_rtd_theme/search.html:41
|
||||
msgid ""
|
||||
"Your search did not match any documents. Please make sure that all words are"
|
||||
" spelled correctly and that you've selected enough categories."
|
||||
@ -129,7 +166,7 @@ msgstr ""
|
||||
msgid "Search docs"
|
||||
msgstr "Zoek in documentatie"
|
||||
|
||||
#: sphinx_rtd_theme/versions.html:11
|
||||
#: sphinx_rtd_theme/versions.html:3 sphinx_rtd_theme/versions.html:11
|
||||
msgid "Versions"
|
||||
msgstr "Versies"
|
||||
|
||||
@ -149,9 +186,3 @@ msgstr "Project Home"
|
||||
#: sphinx_rtd_theme/versions.html:29
|
||||
msgid "Builds"
|
||||
msgstr "Bouwresultaten"
|
||||
|
||||
#~ msgid "Docs"
|
||||
#~ msgstr "Documentatie"
|
||||
|
||||
#~ msgid "Free document hosting provided by"
|
||||
#~ msgstr "Gratis hosting voor documentatie verzorgd door"
|
||||
|
||||
Binary file not shown.
@ -0,0 +1,137 @@
|
||||
# English translations for sphinx_rtd_theme.
|
||||
# Copyright (C) 2019 ORGANIZATION
|
||||
# This file is distributed under the same license as the sphinx_rtd_theme
|
||||
# project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
|
||||
#
|
||||
# Translators:
|
||||
# Michal Sniatala, 2021
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2021-09-13 13:35-0600\n"
|
||||
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
||||
"Last-Translator: Michal Sniatala, 2021\n"
|
||||
"Language-Team: Polish (https://www.transifex.com/readthedocs/teams/101354/pl/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
"Language: pl\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:37 sphinx_rtd_theme/breadcrumbs.html:39
|
||||
msgid "Edit on GitHub"
|
||||
msgstr "Edytuj na GitHub"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:44 sphinx_rtd_theme/breadcrumbs.html:46
|
||||
msgid "Edit on Bitbucket"
|
||||
msgstr "Edytuj na Bitbucket"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:51 sphinx_rtd_theme/breadcrumbs.html:53
|
||||
msgid "Edit on GitLab"
|
||||
msgstr "Edytuj na GitLab"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:56 sphinx_rtd_theme/breadcrumbs.html:58
|
||||
msgid "View page source"
|
||||
msgstr "Zobacz źródło strony"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:69 sphinx_rtd_theme/footer.html:6
|
||||
msgid "Previous"
|
||||
msgstr "Poprzedni"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:72 sphinx_rtd_theme/footer.html:9
|
||||
msgid "Next"
|
||||
msgstr "Następny"
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:21
|
||||
#, python-format
|
||||
msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s."
|
||||
msgstr "© <a href=\"%(path)s\">Prawa zastrzeżone</a> %(copyright)s."
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:23
|
||||
#, python-format
|
||||
msgid "© Copyright %(copyright)s."
|
||||
msgstr "© Prawa zastrzeżone %(copyright)s."
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:41
|
||||
#, python-format
|
||||
msgid "Last updated on %(last_updated)s."
|
||||
msgstr "Ostatnia aktualizacja %(last_updated)s."
|
||||
|
||||
#. the variable "sphinx_web" is a link to the Sphinx project documentation
|
||||
#. with
|
||||
#. the text "Sphinx"
|
||||
#: sphinx_rtd_theme/footer.html:53
|
||||
#, python-format
|
||||
msgid "Built with %(sphinx_web)s using a"
|
||||
msgstr "Zbudowano w %(sphinx_web)s używając"
|
||||
|
||||
#. this is always used as "provided by Read the Docs", and should not imply
|
||||
#. Read the Docs is an author of the generated documentation.
|
||||
#: sphinx_rtd_theme/footer.html:57
|
||||
#, python-format
|
||||
msgid "provided by %(readthedocs_web)s"
|
||||
msgstr "dostarczone przez %(readthedocs_web)s"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:97
|
||||
#, python-format
|
||||
msgid "Search within %(docstitle)s"
|
||||
msgstr "Szukaj w %(docstitle)s"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:105
|
||||
msgid "About these documents"
|
||||
msgstr "O tych dokumentach"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:108
|
||||
msgid "Index"
|
||||
msgstr "Indeks"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:111 sphinx_rtd_theme/search.html:11
|
||||
msgid "Search"
|
||||
msgstr "Szukaj"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:114
|
||||
msgid "Copyright"
|
||||
msgstr "Prawa zastrzeżone"
|
||||
|
||||
#: sphinx_rtd_theme/search.html:31
|
||||
msgid "Please activate JavaScript to enable the search functionality."
|
||||
msgstr ""
|
||||
"Proszę aktywować obsługę JavaScript, aby włączyć funkcję wyszukiwania."
|
||||
|
||||
#. Search is a noun, not a verb
|
||||
#: sphinx_rtd_theme/search.html:39
|
||||
msgid "Search Results"
|
||||
msgstr "Wyniki wyszukiwania"
|
||||
|
||||
#: sphinx_rtd_theme/search.html:41
|
||||
msgid ""
|
||||
"Your search did not match any documents. Please make sure that all words are"
|
||||
" spelled correctly and that you've selected enough categories."
|
||||
msgstr ""
|
||||
"Nie znaleziono szukanej frazy. Upewnij się, że wszystkie słowa są napisane "
|
||||
"poprawnie i że wybrałeś wystarczającą liczbę kategorii."
|
||||
|
||||
#: sphinx_rtd_theme/searchbox.html:4
|
||||
msgid "Search docs"
|
||||
msgstr "Szukaj"
|
||||
|
||||
#: sphinx_rtd_theme/versions.html:3 sphinx_rtd_theme/versions.html:11
|
||||
msgid "Versions"
|
||||
msgstr "Wersje"
|
||||
|
||||
#: sphinx_rtd_theme/versions.html:17
|
||||
msgid "Downloads"
|
||||
msgstr "Pobrania"
|
||||
|
||||
#. The phrase "Read the Docs" is not translated
|
||||
#: sphinx_rtd_theme/versions.html:24
|
||||
msgid "On Read the Docs"
|
||||
msgstr "Na Read the Docs"
|
||||
|
||||
#: sphinx_rtd_theme/versions.html:26
|
||||
msgid "Project Home"
|
||||
msgstr "Strona projektu"
|
||||
Binary file not shown.
@ -0,0 +1,161 @@
|
||||
# English translations for sphinx_rtd_theme.
|
||||
# Copyright (C) 2019 ORGANIZATION
|
||||
# This file is distributed under the same license as the sphinx_rtd_theme
|
||||
# project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
|
||||
#
|
||||
# Translators:
|
||||
# Ana Costa <anacosta.xl@gmail.com>, 2021
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2021-09-13 13:35-0600\n"
|
||||
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
||||
"Last-Translator: Ana Costa <anacosta.xl@gmail.com>, 2021\n"
|
||||
"Language-Team: Portuguese (https://www.transifex.com/readthedocs/teams/101354/pt/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
"Language: pt\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. This is an ARIA section label for page links, including previous/next page
|
||||
#. link and links to GitHub/GitLab/etc.
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:22
|
||||
msgid "Page navigation"
|
||||
msgstr "Navegação da página"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:37 sphinx_rtd_theme/breadcrumbs.html:39
|
||||
msgid "Edit on GitHub"
|
||||
msgstr "Editar no GitHub"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:44 sphinx_rtd_theme/breadcrumbs.html:46
|
||||
msgid "Edit on Bitbucket"
|
||||
msgstr "Editar no Bitbucket"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:51 sphinx_rtd_theme/breadcrumbs.html:53
|
||||
msgid "Edit on GitLab"
|
||||
msgstr "Editar no GitLab"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:56 sphinx_rtd_theme/breadcrumbs.html:58
|
||||
msgid "View page source"
|
||||
msgstr "Ver código-fonte da página"
|
||||
|
||||
#. This is an ARIA section label for sequential page links, such as previous
|
||||
#. and next page links.
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:67
|
||||
msgid "Sequential page navigation"
|
||||
msgstr "Navegação sequencial da página"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:69 sphinx_rtd_theme/footer.html:6
|
||||
msgid "Previous"
|
||||
msgstr "Anterior"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:72 sphinx_rtd_theme/footer.html:9
|
||||
msgid "Next"
|
||||
msgstr "Seguinte"
|
||||
|
||||
#. This is an ARIA section label for the footer section of the page.
|
||||
#: sphinx_rtd_theme/footer.html:4
|
||||
msgid "Footer"
|
||||
msgstr "Rodapé"
|
||||
|
||||
#. the phrase "revision" comes from Git, referring to a commit
|
||||
#: sphinx_rtd_theme/footer.html:36
|
||||
msgid "Revision"
|
||||
msgstr "Revisão"
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:41
|
||||
#, python-format
|
||||
msgid "Last updated on %(last_updated)s."
|
||||
msgstr "Última actualização em %(last_updated)s."
|
||||
|
||||
#. the variable "sphinx_web" is a link to the Sphinx project documentation
|
||||
#. with
|
||||
#. the text "Sphinx"
|
||||
#: sphinx_rtd_theme/footer.html:53
|
||||
#, python-format
|
||||
msgid "Built with %(sphinx_web)s using a"
|
||||
msgstr "Compilado com %(sphinx_web)s usando um"
|
||||
|
||||
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
||||
#. generated documenation
|
||||
#: sphinx_rtd_theme/footer.html:55
|
||||
msgid "theme"
|
||||
msgstr "tema"
|
||||
|
||||
#. this is always used as "provided by Read the Docs", and should not imply
|
||||
#. Read the Docs is an author of the generated documentation.
|
||||
#: sphinx_rtd_theme/footer.html:57
|
||||
#, python-format
|
||||
msgid "provided by %(readthedocs_web)s"
|
||||
msgstr "fornecido por %(readthedocs_web)s"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:97
|
||||
#, python-format
|
||||
msgid "Search within %(docstitle)s"
|
||||
msgstr "Procurar em %(docstitle)s"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:105
|
||||
msgid "About these documents"
|
||||
msgstr "Sobre estes documentos"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:108
|
||||
msgid "Index"
|
||||
msgstr "Índice"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:111 sphinx_rtd_theme/search.html:11
|
||||
msgid "Search"
|
||||
msgstr "Pesquisar"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
|
||||
msgid "Logo"
|
||||
msgstr "Logo"
|
||||
|
||||
#. This is an ARIA section label for the main navigation menu
|
||||
#: sphinx_rtd_theme/layout.html:173
|
||||
msgid "Navigation menu"
|
||||
msgstr "Menu de navegação"
|
||||
|
||||
#. This is an ARIA section label for the navigation menu that is visible when
|
||||
#. viewing the page on mobile devices
|
||||
#: sphinx_rtd_theme/layout.html:195
|
||||
msgid "Mobile navigation menu"
|
||||
msgstr "Menu de navegação móvel"
|
||||
|
||||
#: sphinx_rtd_theme/search.html:31
|
||||
msgid "Please activate JavaScript to enable the search functionality."
|
||||
msgstr "Por favor, active o JavaScript para permitir a função de pesquisa."
|
||||
|
||||
#. Search is a noun, not a verb
|
||||
#: sphinx_rtd_theme/search.html:39
|
||||
msgid "Search Results"
|
||||
msgstr "Resultados de Pesquisa"
|
||||
|
||||
#: sphinx_rtd_theme/search.html:41
|
||||
msgid ""
|
||||
"Your search did not match any documents. Please make sure that all words are"
|
||||
" spelled correctly and that you've selected enough categories."
|
||||
msgstr ""
|
||||
"A sua pesquisa não encontrou nenhum documento. Por favor confirme que todas "
|
||||
"as palavras estão bem escritas e que selecionou categorias suficientes."
|
||||
|
||||
#: sphinx_rtd_theme/searchbox.html:4
|
||||
msgid "Search docs"
|
||||
msgstr "Pesquisar docs"
|
||||
|
||||
#: sphinx_rtd_theme/versions.html:3 sphinx_rtd_theme/versions.html:11
|
||||
msgid "Versions"
|
||||
msgstr "Versões"
|
||||
|
||||
#: sphinx_rtd_theme/versions.html:17
|
||||
msgid "Downloads"
|
||||
msgstr "Transferências"
|
||||
|
||||
#. The phrase "Read the Docs" is not translated
|
||||
#: sphinx_rtd_theme/versions.html:24
|
||||
msgid "On Read the Docs"
|
||||
msgstr "No Read the Docs"
|
||||
Binary file not shown.
@ -5,15 +5,16 @@
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
|
||||
#
|
||||
# Translators:
|
||||
# Rafael Fontenelle <rffontenelle@gmail.com>, 2020
|
||||
# Rafael Fontenelle <rffontenelle@gmail.com>, 2021
|
||||
# Wellington Uemura <wellingtonuemura@gmail.com>, 2021
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2020-05-06 13:38-0600\n"
|
||||
"POT-Creation-Date: 2021-09-13 13:35-0600\n"
|
||||
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
||||
"Last-Translator: Rafael Fontenelle <rffontenelle@gmail.com>, 2020\n"
|
||||
"Last-Translator: Wellington Uemura <wellingtonuemura@gmail.com>, 2021\n"
|
||||
"Language-Team: Portuguese (Brazil) (https://www.transifex.com/readthedocs/teams/101354/pt_BR/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -22,42 +23,64 @@ msgstr ""
|
||||
"Language: pt_BR\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:43 sphinx_rtd_theme/breadcrumbs.html:45
|
||||
#. This is an ARIA section label for page links, including previous/next page
|
||||
#. link and links to GitHub/GitLab/etc.
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:22
|
||||
msgid "Page navigation"
|
||||
msgstr "Navegação da página"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:37 sphinx_rtd_theme/breadcrumbs.html:39
|
||||
msgid "Edit on GitHub"
|
||||
msgstr "Editar no GitHub"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:50 sphinx_rtd_theme/breadcrumbs.html:52
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:44 sphinx_rtd_theme/breadcrumbs.html:46
|
||||
msgid "Edit on Bitbucket"
|
||||
msgstr "Editar no Bitbucket"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:57 sphinx_rtd_theme/breadcrumbs.html:59
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:51 sphinx_rtd_theme/breadcrumbs.html:53
|
||||
msgid "Edit on GitLab"
|
||||
msgstr "Editar no GitLab"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:62 sphinx_rtd_theme/breadcrumbs.html:64
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:56 sphinx_rtd_theme/breadcrumbs.html:58
|
||||
msgid "View page source"
|
||||
msgstr "Ver código-fonte da página"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:74 sphinx_rtd_theme/footer.html:5
|
||||
msgid "Next"
|
||||
msgstr "Próximo"
|
||||
#. This is an ARIA section label for sequential page links, such as previous
|
||||
#. and next page links.
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:67
|
||||
msgid "Sequential page navigation"
|
||||
msgstr "Navegação sequencial da página"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:77 sphinx_rtd_theme/footer.html:8
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:69 sphinx_rtd_theme/footer.html:6
|
||||
msgid "Previous"
|
||||
msgstr "Anterior"
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:21 sphinx_rtd_theme/footer.html:24
|
||||
#: sphinx_rtd_theme/layout.html:96
|
||||
msgid "Copyright"
|
||||
msgstr "Copyright"
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:72 sphinx_rtd_theme/footer.html:9
|
||||
msgid "Next"
|
||||
msgstr "Próximo"
|
||||
|
||||
#. This is an ARIA section label for the footer section of the page.
|
||||
#: sphinx_rtd_theme/footer.html:4
|
||||
msgid "Footer"
|
||||
msgstr "Rodapé"
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:21
|
||||
#, python-format
|
||||
msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s."
|
||||
msgstr "© <a href=\"%(path)s\">Direitos autorais</a> %(copyright)s."
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:23
|
||||
#, python-format
|
||||
msgid "© Copyright %(copyright)s."
|
||||
msgstr "© Direitos autorais %(copyright)s."
|
||||
|
||||
#. Build is a noun, not a verb
|
||||
#: sphinx_rtd_theme/footer.html:31
|
||||
#: sphinx_rtd_theme/footer.html:30
|
||||
msgid "Build"
|
||||
msgstr "Compilação"
|
||||
|
||||
#. the phrase "revision" comes from Git, referring to a commit
|
||||
#: sphinx_rtd_theme/footer.html:37
|
||||
#: sphinx_rtd_theme/footer.html:36
|
||||
msgid "Revision"
|
||||
msgstr "Revisão"
|
||||
|
||||
@ -69,56 +92,71 @@ msgstr "Última atualização em %(last_updated)s."
|
||||
#. the variable "sphinx_web" is a link to the Sphinx project documentation
|
||||
#. with
|
||||
#. the text "Sphinx"
|
||||
#: sphinx_rtd_theme/footer.html:52
|
||||
#: sphinx_rtd_theme/footer.html:53
|
||||
#, python-format
|
||||
msgid "Built with %(sphinx_web)s using a"
|
||||
msgstr "Compilado com %(sphinx_web)s usando um"
|
||||
|
||||
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
||||
#. generated documenation
|
||||
#: sphinx_rtd_theme/footer.html:54
|
||||
#: sphinx_rtd_theme/footer.html:55
|
||||
msgid "theme"
|
||||
msgstr "tema"
|
||||
|
||||
#. this is always used as "provided by Read the Docs", and should not imply
|
||||
#. Read the Docs is an author of the generated documentation.
|
||||
#: sphinx_rtd_theme/footer.html:56
|
||||
#: sphinx_rtd_theme/footer.html:57
|
||||
#, python-format
|
||||
msgid "provided by %(readthedocs_web)s"
|
||||
msgstr "fornecido por %(readthedocs_web)s"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:79
|
||||
#: sphinx_rtd_theme/layout.html:97
|
||||
#, python-format
|
||||
msgid "Search within %(docstitle)s"
|
||||
msgstr "Pesquisar em %(docstitle)s"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:87
|
||||
#: sphinx_rtd_theme/layout.html:105
|
||||
msgid "About these documents"
|
||||
msgstr "Sobre esses documentos"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:90
|
||||
#: sphinx_rtd_theme/layout.html:108
|
||||
msgid "Index"
|
||||
msgstr "Índice"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:93 sphinx_rtd_theme/search.html:11
|
||||
#: sphinx_rtd_theme/layout.html:111 sphinx_rtd_theme/search.html:11
|
||||
msgid "Search"
|
||||
msgstr "Pesquisar"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:128
|
||||
#: sphinx_rtd_theme/layout.html:114
|
||||
msgid "Copyright"
|
||||
msgstr "Copyright"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
|
||||
msgid "Logo"
|
||||
msgstr "Logo"
|
||||
|
||||
#: sphinx_rtd_theme/search.html:29
|
||||
#. This is an ARIA section label for the main navigation menu
|
||||
#: sphinx_rtd_theme/layout.html:173
|
||||
msgid "Navigation menu"
|
||||
msgstr "Menu de navegação"
|
||||
|
||||
#. This is an ARIA section label for the navigation menu that is visible when
|
||||
#. viewing the page on mobile devices
|
||||
#: sphinx_rtd_theme/layout.html:195
|
||||
msgid "Mobile navigation menu"
|
||||
msgstr "Menu de navegação móvel"
|
||||
|
||||
#: sphinx_rtd_theme/search.html:31
|
||||
msgid "Please activate JavaScript to enable the search functionality."
|
||||
msgstr ""
|
||||
"Por favor, ative JavaScript para habilitar a funcionalidade de pesquisa."
|
||||
|
||||
#. Search is a noun, not a verb
|
||||
#: sphinx_rtd_theme/search.html:37
|
||||
#: sphinx_rtd_theme/search.html:39
|
||||
msgid "Search Results"
|
||||
msgstr "Resultados da pesquisa"
|
||||
|
||||
#: sphinx_rtd_theme/search.html:39
|
||||
#: sphinx_rtd_theme/search.html:41
|
||||
msgid ""
|
||||
"Your search did not match any documents. Please make sure that all words are"
|
||||
" spelled correctly and that you've selected enough categories."
|
||||
@ -131,7 +169,7 @@ msgstr ""
|
||||
msgid "Search docs"
|
||||
msgstr "Pesquisar documentos"
|
||||
|
||||
#: sphinx_rtd_theme/versions.html:11
|
||||
#: sphinx_rtd_theme/versions.html:3 sphinx_rtd_theme/versions.html:11
|
||||
msgid "Versions"
|
||||
msgstr "Versões"
|
||||
|
||||
@ -151,9 +189,3 @@ msgstr "Página inicial"
|
||||
#: sphinx_rtd_theme/versions.html:29
|
||||
msgid "Builds"
|
||||
msgstr "Compilações"
|
||||
|
||||
#~ msgid "Docs"
|
||||
#~ msgstr "Docs"
|
||||
|
||||
#~ msgid "Free document hosting provided by"
|
||||
#~ msgstr "Hospedagem de documentos livres fornecida por"
|
||||
|
||||
Binary file not shown.
@ -5,16 +5,16 @@
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2019.
|
||||
#
|
||||
# Translators:
|
||||
# Dmitry Shachnev <mitya57@gmail.com>, 2019
|
||||
# lvv83 <vlozhkin83@gmail.com>, 2019
|
||||
# Dmitry Shachnev <mitya57@gmail.com>, 2021
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2020-05-06 13:38-0600\n"
|
||||
"POT-Creation-Date: 2021-09-13 13:35-0600\n"
|
||||
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
||||
"Last-Translator: lvv83 <vlozhkin83@gmail.com>, 2019\n"
|
||||
"Last-Translator: Dmitry Shachnev <mitya57@gmail.com>, 2021\n"
|
||||
"Language-Team: Russian (https://www.transifex.com/readthedocs/teams/101354/ru/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@ -23,42 +23,64 @@ msgstr ""
|
||||
"Language: ru\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:43 sphinx_rtd_theme/breadcrumbs.html:45
|
||||
#. This is an ARIA section label for page links, including previous/next page
|
||||
#. link and links to GitHub/GitLab/etc.
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:22
|
||||
msgid "Page navigation"
|
||||
msgstr "Навигация по страницам"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:37 sphinx_rtd_theme/breadcrumbs.html:39
|
||||
msgid "Edit on GitHub"
|
||||
msgstr "Редактировать на GitHub"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:50 sphinx_rtd_theme/breadcrumbs.html:52
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:44 sphinx_rtd_theme/breadcrumbs.html:46
|
||||
msgid "Edit on Bitbucket"
|
||||
msgstr "Редактировать на BitBucket"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:57 sphinx_rtd_theme/breadcrumbs.html:59
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:51 sphinx_rtd_theme/breadcrumbs.html:53
|
||||
msgid "Edit on GitLab"
|
||||
msgstr "Редактировать на GitLab"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:62 sphinx_rtd_theme/breadcrumbs.html:64
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:56 sphinx_rtd_theme/breadcrumbs.html:58
|
||||
msgid "View page source"
|
||||
msgstr "Просмотреть исходный код страницы"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:74 sphinx_rtd_theme/footer.html:5
|
||||
msgid "Next"
|
||||
msgstr "Следующая"
|
||||
#. This is an ARIA section label for sequential page links, such as previous
|
||||
#. and next page links.
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:67
|
||||
msgid "Sequential page navigation"
|
||||
msgstr "Навигация по соседним страницам"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:77 sphinx_rtd_theme/footer.html:8
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:69 sphinx_rtd_theme/footer.html:6
|
||||
msgid "Previous"
|
||||
msgstr "Предыдущая"
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:21 sphinx_rtd_theme/footer.html:24
|
||||
#: sphinx_rtd_theme/layout.html:96
|
||||
msgid "Copyright"
|
||||
msgstr "Авторские права"
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:72 sphinx_rtd_theme/footer.html:9
|
||||
msgid "Next"
|
||||
msgstr "Следующая"
|
||||
|
||||
#. This is an ARIA section label for the footer section of the page.
|
||||
#: sphinx_rtd_theme/footer.html:4
|
||||
msgid "Footer"
|
||||
msgstr "Нижняя область"
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:21
|
||||
#, python-format
|
||||
msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s."
|
||||
msgstr "© <a href=\"%(path)s\">Авторские права</a> %(copyright)s. "
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:23
|
||||
#, python-format
|
||||
msgid "© Copyright %(copyright)s."
|
||||
msgstr "© Авторские права %(copyright)s. "
|
||||
|
||||
#. Build is a noun, not a verb
|
||||
#: sphinx_rtd_theme/footer.html:31
|
||||
#: sphinx_rtd_theme/footer.html:30
|
||||
msgid "Build"
|
||||
msgstr "Сборка"
|
||||
|
||||
#. the phrase "revision" comes from Git, referring to a commit
|
||||
#: sphinx_rtd_theme/footer.html:37
|
||||
#: sphinx_rtd_theme/footer.html:36
|
||||
msgid "Revision"
|
||||
msgstr "Ревизия"
|
||||
|
||||
@ -70,55 +92,70 @@ msgstr "Последний раз обновлено %(last_updated)s."
|
||||
#. the variable "sphinx_web" is a link to the Sphinx project documentation
|
||||
#. with
|
||||
#. the text "Sphinx"
|
||||
#: sphinx_rtd_theme/footer.html:52
|
||||
#: sphinx_rtd_theme/footer.html:53
|
||||
#, python-format
|
||||
msgid "Built with %(sphinx_web)s using a"
|
||||
msgstr "Собрано при помощи %(sphinx_web)s с использованием"
|
||||
|
||||
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
||||
#. generated documenation
|
||||
#: sphinx_rtd_theme/footer.html:54
|
||||
#: sphinx_rtd_theme/footer.html:55
|
||||
msgid "theme"
|
||||
msgstr "темы,"
|
||||
|
||||
#. this is always used as "provided by Read the Docs", and should not imply
|
||||
#. Read the Docs is an author of the generated documentation.
|
||||
#: sphinx_rtd_theme/footer.html:56
|
||||
#: sphinx_rtd_theme/footer.html:57
|
||||
#, python-format
|
||||
msgid "provided by %(readthedocs_web)s"
|
||||
msgstr "предоставленной %(readthedocs_web)s"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:79
|
||||
#: sphinx_rtd_theme/layout.html:97
|
||||
#, python-format
|
||||
msgid "Search within %(docstitle)s"
|
||||
msgstr "Поиск в %(docstitle)s"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:87
|
||||
#: sphinx_rtd_theme/layout.html:105
|
||||
msgid "About these documents"
|
||||
msgstr "Об этих документах"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:90
|
||||
#: sphinx_rtd_theme/layout.html:108
|
||||
msgid "Index"
|
||||
msgstr "Алфавитный указатель"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:93 sphinx_rtd_theme/search.html:11
|
||||
#: sphinx_rtd_theme/layout.html:111 sphinx_rtd_theme/search.html:11
|
||||
msgid "Search"
|
||||
msgstr "Поиск"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:128
|
||||
#: sphinx_rtd_theme/layout.html:114
|
||||
msgid "Copyright"
|
||||
msgstr "Авторские права"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
|
||||
msgid "Logo"
|
||||
msgstr "Логотип"
|
||||
|
||||
#: sphinx_rtd_theme/search.html:29
|
||||
#. This is an ARIA section label for the main navigation menu
|
||||
#: sphinx_rtd_theme/layout.html:173
|
||||
msgid "Navigation menu"
|
||||
msgstr "Меню навигации"
|
||||
|
||||
#. This is an ARIA section label for the navigation menu that is visible when
|
||||
#. viewing the page on mobile devices
|
||||
#: sphinx_rtd_theme/layout.html:195
|
||||
msgid "Mobile navigation menu"
|
||||
msgstr "Меню навигации для мобильных устройств"
|
||||
|
||||
#: sphinx_rtd_theme/search.html:31
|
||||
msgid "Please activate JavaScript to enable the search functionality."
|
||||
msgstr "Активируйте JavaScript, чтобы использовать функционал поиска."
|
||||
|
||||
#. Search is a noun, not a verb
|
||||
#: sphinx_rtd_theme/search.html:37
|
||||
#: sphinx_rtd_theme/search.html:39
|
||||
msgid "Search Results"
|
||||
msgstr "Результаты поиска"
|
||||
|
||||
#: sphinx_rtd_theme/search.html:39
|
||||
#: sphinx_rtd_theme/search.html:41
|
||||
msgid ""
|
||||
"Your search did not match any documents. Please make sure that all words are"
|
||||
" spelled correctly and that you've selected enough categories."
|
||||
@ -130,7 +167,7 @@ msgstr ""
|
||||
msgid "Search docs"
|
||||
msgstr "Поиск в документации"
|
||||
|
||||
#: sphinx_rtd_theme/versions.html:11
|
||||
#: sphinx_rtd_theme/versions.html:3 sphinx_rtd_theme/versions.html:11
|
||||
msgid "Versions"
|
||||
msgstr "Версии"
|
||||
|
||||
@ -150,9 +187,3 @@ msgstr "Домашняя страница проекта"
|
||||
#: sphinx_rtd_theme/versions.html:29
|
||||
msgid "Builds"
|
||||
msgstr "Сборки"
|
||||
|
||||
#~ msgid "Docs"
|
||||
#~ msgstr "Документация"
|
||||
|
||||
#~ msgid "Free document hosting provided by"
|
||||
#~ msgstr "Бесплатный хостинг документов, предоставленный"
|
||||
|
||||
@ -1,15 +1,15 @@
|
||||
# Translations template for sphinx_rtd_theme.
|
||||
# Copyright (C) 2020 ORGANIZATION
|
||||
# Copyright (C) 2021 ORGANIZATION
|
||||
# This file is distributed under the same license as the sphinx_rtd_theme
|
||||
# project.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2020.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2021.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
||||
"Project-Id-Version: sphinx_rtd_theme 1.0.0\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2020-05-06 13:38-0600\n"
|
||||
"POT-Creation-Date: 2021-09-13 13:35-0600\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -18,42 +18,64 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.8.0\n"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:43 sphinx_rtd_theme/breadcrumbs.html:45
|
||||
#. This is an ARIA section label for page links, including previous/next page
|
||||
#. link and links to GitHub/GitLab/etc.
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:22
|
||||
msgid "Page navigation"
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:37 sphinx_rtd_theme/breadcrumbs.html:39
|
||||
msgid "Edit on GitHub"
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:50 sphinx_rtd_theme/breadcrumbs.html:52
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:44 sphinx_rtd_theme/breadcrumbs.html:46
|
||||
msgid "Edit on Bitbucket"
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:57 sphinx_rtd_theme/breadcrumbs.html:59
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:51 sphinx_rtd_theme/breadcrumbs.html:53
|
||||
msgid "Edit on GitLab"
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:62 sphinx_rtd_theme/breadcrumbs.html:64
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:56 sphinx_rtd_theme/breadcrumbs.html:58
|
||||
msgid "View page source"
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:74 sphinx_rtd_theme/footer.html:5
|
||||
msgid "Next"
|
||||
#. This is an ARIA section label for sequential page links, such as previous
|
||||
#. and next page links.
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:67
|
||||
msgid "Sequential page navigation"
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:77 sphinx_rtd_theme/footer.html:8
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:69 sphinx_rtd_theme/footer.html:6
|
||||
msgid "Previous"
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:21 sphinx_rtd_theme/footer.html:24
|
||||
#: sphinx_rtd_theme/layout.html:96
|
||||
msgid "Copyright"
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:72 sphinx_rtd_theme/footer.html:9
|
||||
msgid "Next"
|
||||
msgstr ""
|
||||
|
||||
#. This is an ARIA section label for the footer section of the page.
|
||||
#: sphinx_rtd_theme/footer.html:4
|
||||
msgid "Footer"
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:21
|
||||
#, python-format
|
||||
msgid "© <a href=\"%(path)s\">Copyright</a> %(copyright)s."
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:23
|
||||
#, python-format
|
||||
msgid "© Copyright %(copyright)s."
|
||||
msgstr ""
|
||||
|
||||
#. Build is a noun, not a verb
|
||||
#: sphinx_rtd_theme/footer.html:31
|
||||
#: sphinx_rtd_theme/footer.html:30
|
||||
msgid "Build"
|
||||
msgstr ""
|
||||
|
||||
#. the phrase "revision" comes from Git, referring to a commit
|
||||
#: sphinx_rtd_theme/footer.html:37
|
||||
#: sphinx_rtd_theme/footer.html:36
|
||||
msgid "Revision"
|
||||
msgstr ""
|
||||
|
||||
@ -64,59 +86,70 @@ msgstr ""
|
||||
|
||||
#. the variable "sphinx_web" is a link to the Sphinx project documentation with
|
||||
#. the text "Sphinx"
|
||||
#: sphinx_rtd_theme/footer.html:52
|
||||
#: sphinx_rtd_theme/footer.html:53
|
||||
#, python-format
|
||||
msgid "Built with %(sphinx_web)s using a"
|
||||
msgstr ""
|
||||
|
||||
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
||||
#. generated documenation
|
||||
#: sphinx_rtd_theme/footer.html:54
|
||||
#: sphinx_rtd_theme/footer.html:55
|
||||
msgid "theme"
|
||||
msgstr ""
|
||||
|
||||
#. this is always used as "provided by Read the Docs", and should not imply
|
||||
#. Read the Docs is an author of the generated documentation.
|
||||
#: sphinx_rtd_theme/footer.html:56
|
||||
#: sphinx_rtd_theme/footer.html:57
|
||||
#, python-format
|
||||
msgid "provided by %(readthedocs_web)s"
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:79
|
||||
#: sphinx_rtd_theme/layout.html:97
|
||||
#, python-format
|
||||
msgid "Search within %(docstitle)s"
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:87
|
||||
#: sphinx_rtd_theme/layout.html:105
|
||||
msgid "About these documents"
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:90
|
||||
#: sphinx_rtd_theme/layout.html:108
|
||||
msgid "Index"
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:93 sphinx_rtd_theme/search.html:11
|
||||
#: sphinx_rtd_theme/layout.html:111 sphinx_rtd_theme/search.html:11
|
||||
msgid "Search"
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:121
|
||||
msgid "Documentation Home"
|
||||
#: sphinx_rtd_theme/layout.html:114
|
||||
msgid "Copyright"
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:128
|
||||
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
|
||||
msgid "Logo"
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/search.html:29
|
||||
#. This is an ARIA section label for the main navigation menu
|
||||
#: sphinx_rtd_theme/layout.html:173
|
||||
msgid "Navigation menu"
|
||||
msgstr ""
|
||||
|
||||
#. This is an ARIA section label for the navigation menu that is visible when
|
||||
#. viewing the page on mobile devices
|
||||
#: sphinx_rtd_theme/layout.html:195
|
||||
msgid "Mobile navigation menu"
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/search.html:31
|
||||
msgid "Please activate JavaScript to enable the search functionality."
|
||||
msgstr ""
|
||||
|
||||
#. Search is a noun, not a verb
|
||||
#: sphinx_rtd_theme/search.html:37
|
||||
#: sphinx_rtd_theme/search.html:39
|
||||
msgid "Search Results"
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/search.html:39
|
||||
#: sphinx_rtd_theme/search.html:41
|
||||
msgid ""
|
||||
"Your search did not match any documents. Please make sure that all words "
|
||||
"are spelled correctly and that you've selected enough categories."
|
||||
@ -126,7 +159,7 @@ msgstr ""
|
||||
msgid "Search docs"
|
||||
msgstr ""
|
||||
|
||||
#: sphinx_rtd_theme/versions.html:11
|
||||
#: sphinx_rtd_theme/versions.html:3 sphinx_rtd_theme/versions.html:11
|
||||
msgid "Versions"
|
||||
msgstr ""
|
||||
|
||||
|
||||
Binary file not shown.
@ -11,7 +11,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2020-05-06 13:38-0600\n"
|
||||
"POT-Creation-Date: 2021-09-13 13:35-0600\n"
|
||||
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
||||
"Last-Translator: Daniel Holmberg <daniel.holmberg97@gmail.com>, 2020\n"
|
||||
"Language-Team: Swedish (https://www.transifex.com/readthedocs/teams/101354/sv/)\n"
|
||||
@ -22,42 +22,37 @@ msgstr ""
|
||||
"Language: sv\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:43 sphinx_rtd_theme/breadcrumbs.html:45
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:37 sphinx_rtd_theme/breadcrumbs.html:39
|
||||
msgid "Edit on GitHub"
|
||||
msgstr "Editera på GitHub"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:50 sphinx_rtd_theme/breadcrumbs.html:52
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:44 sphinx_rtd_theme/breadcrumbs.html:46
|
||||
msgid "Edit on Bitbucket"
|
||||
msgstr "Editera på Bitbucket"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:57 sphinx_rtd_theme/breadcrumbs.html:59
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:51 sphinx_rtd_theme/breadcrumbs.html:53
|
||||
msgid "Edit on GitLab"
|
||||
msgstr "Editera på GitLab"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:62 sphinx_rtd_theme/breadcrumbs.html:64
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:56 sphinx_rtd_theme/breadcrumbs.html:58
|
||||
msgid "View page source"
|
||||
msgstr "Visa sidkälla"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:74 sphinx_rtd_theme/footer.html:5
|
||||
msgid "Next"
|
||||
msgstr "Nästa"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:77 sphinx_rtd_theme/footer.html:8
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:69 sphinx_rtd_theme/footer.html:6
|
||||
msgid "Previous"
|
||||
msgstr "Tillbaka"
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:21 sphinx_rtd_theme/footer.html:24
|
||||
#: sphinx_rtd_theme/layout.html:96
|
||||
msgid "Copyright"
|
||||
msgstr "Upphovsrätt"
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:72 sphinx_rtd_theme/footer.html:9
|
||||
msgid "Next"
|
||||
msgstr "Nästa"
|
||||
|
||||
#. Build is a noun, not a verb
|
||||
#: sphinx_rtd_theme/footer.html:31
|
||||
#: sphinx_rtd_theme/footer.html:30
|
||||
msgid "Build"
|
||||
msgstr "Bygg"
|
||||
|
||||
#. the phrase "revision" comes from Git, referring to a commit
|
||||
#: sphinx_rtd_theme/footer.html:37
|
||||
#: sphinx_rtd_theme/footer.html:36
|
||||
msgid "Revision"
|
||||
msgstr "Ändra"
|
||||
|
||||
@ -69,60 +64,60 @@ msgstr "Senast uppdaterad %(last_updated)s."
|
||||
#. the variable "sphinx_web" is a link to the Sphinx project documentation
|
||||
#. with
|
||||
#. the text "Sphinx"
|
||||
#: sphinx_rtd_theme/footer.html:52
|
||||
#: sphinx_rtd_theme/footer.html:53
|
||||
#, python-format
|
||||
msgid "Built with %(sphinx_web)s using a"
|
||||
msgstr "Gjord med %(sphinx_web)s med hjälp av"
|
||||
|
||||
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
||||
#. generated documenation
|
||||
#: sphinx_rtd_theme/footer.html:54
|
||||
#: sphinx_rtd_theme/footer.html:55
|
||||
msgid "theme"
|
||||
msgstr "tema"
|
||||
|
||||
#. this is always used as "provided by Read the Docs", and should not imply
|
||||
#. Read the Docs is an author of the generated documentation.
|
||||
#: sphinx_rtd_theme/footer.html:56
|
||||
#: sphinx_rtd_theme/footer.html:57
|
||||
#, python-format
|
||||
msgid "provided by %(readthedocs_web)s"
|
||||
msgstr "erhållet av %(readthedocs_web)s"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:79
|
||||
#: sphinx_rtd_theme/layout.html:97
|
||||
#, python-format
|
||||
msgid "Search within %(docstitle)s"
|
||||
msgstr "Sök i %(docstitle)s"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:87
|
||||
#: sphinx_rtd_theme/layout.html:105
|
||||
msgid "About these documents"
|
||||
msgstr "Om dessa dokument"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:90
|
||||
#: sphinx_rtd_theme/layout.html:108
|
||||
msgid "Index"
|
||||
msgstr "Index"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:93 sphinx_rtd_theme/search.html:11
|
||||
#: sphinx_rtd_theme/layout.html:111 sphinx_rtd_theme/search.html:11
|
||||
msgid "Search"
|
||||
msgstr "Sök"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:121
|
||||
msgid "Documentation Home"
|
||||
msgstr "Dokumentation Hem"
|
||||
#: sphinx_rtd_theme/layout.html:114
|
||||
msgid "Copyright"
|
||||
msgstr "Upphovsrätt"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:128
|
||||
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
|
||||
msgid "Logo"
|
||||
msgstr "Logo"
|
||||
|
||||
#: sphinx_rtd_theme/search.html:29
|
||||
#: sphinx_rtd_theme/search.html:31
|
||||
msgid "Please activate JavaScript to enable the search functionality."
|
||||
msgstr ""
|
||||
"Var vänlig och aktivera JavaScript för att möjliggöra sökfunktionaliteten."
|
||||
|
||||
#. Search is a noun, not a verb
|
||||
#: sphinx_rtd_theme/search.html:37
|
||||
#: sphinx_rtd_theme/search.html:39
|
||||
msgid "Search Results"
|
||||
msgstr "Sökresultat"
|
||||
|
||||
#: sphinx_rtd_theme/search.html:39
|
||||
#: sphinx_rtd_theme/search.html:41
|
||||
msgid ""
|
||||
"Your search did not match any documents. Please make sure that all words are"
|
||||
" spelled correctly and that you've selected enough categories."
|
||||
@ -134,7 +129,7 @@ msgstr ""
|
||||
msgid "Search docs"
|
||||
msgstr "Sök i dokumentationen"
|
||||
|
||||
#: sphinx_rtd_theme/versions.html:11
|
||||
#: sphinx_rtd_theme/versions.html:3 sphinx_rtd_theme/versions.html:11
|
||||
msgid "Versions"
|
||||
msgstr "Versioner"
|
||||
|
||||
@ -151,8 +146,6 @@ msgstr "På Read the Docs"
|
||||
msgid "Project Home"
|
||||
msgstr "Projekt Hem"
|
||||
|
||||
#~ msgid "Docs"
|
||||
#~ msgstr "Dokumentation"
|
||||
|
||||
#~ msgid "Free document hosting provided by"
|
||||
#~ msgstr "Gratis dokumentations hysning erhållen av"
|
||||
#: sphinx_rtd_theme/versions.html:29
|
||||
msgid "Builds"
|
||||
msgstr "Versioner"
|
||||
|
||||
Binary file not shown.
@ -11,7 +11,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2020-05-06 13:38-0600\n"
|
||||
"POT-Creation-Date: 2021-09-13 13:35-0600\n"
|
||||
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
||||
"Last-Translator: BouRock, 2020\n"
|
||||
"Language-Team: Turkish (https://www.transifex.com/readthedocs/teams/101354/tr/)\n"
|
||||
@ -22,42 +22,37 @@ msgstr ""
|
||||
"Language: tr\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:43 sphinx_rtd_theme/breadcrumbs.html:45
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:37 sphinx_rtd_theme/breadcrumbs.html:39
|
||||
msgid "Edit on GitHub"
|
||||
msgstr "GitHub'da Düzenle"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:50 sphinx_rtd_theme/breadcrumbs.html:52
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:44 sphinx_rtd_theme/breadcrumbs.html:46
|
||||
msgid "Edit on Bitbucket"
|
||||
msgstr "Bitbucket'ta Düzenle"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:57 sphinx_rtd_theme/breadcrumbs.html:59
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:51 sphinx_rtd_theme/breadcrumbs.html:53
|
||||
msgid "Edit on GitLab"
|
||||
msgstr "GitLab'ta Düzenle"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:62 sphinx_rtd_theme/breadcrumbs.html:64
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:56 sphinx_rtd_theme/breadcrumbs.html:58
|
||||
msgid "View page source"
|
||||
msgstr "Sayfa kaynağını görüntüle"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:74 sphinx_rtd_theme/footer.html:5
|
||||
msgid "Next"
|
||||
msgstr "Sonraki"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:77 sphinx_rtd_theme/footer.html:8
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:69 sphinx_rtd_theme/footer.html:6
|
||||
msgid "Previous"
|
||||
msgstr "Önceki"
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:21 sphinx_rtd_theme/footer.html:24
|
||||
#: sphinx_rtd_theme/layout.html:96
|
||||
msgid "Copyright"
|
||||
msgstr "Telif hakkı"
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:72 sphinx_rtd_theme/footer.html:9
|
||||
msgid "Next"
|
||||
msgstr "Sonraki"
|
||||
|
||||
#. Build is a noun, not a verb
|
||||
#: sphinx_rtd_theme/footer.html:31
|
||||
#: sphinx_rtd_theme/footer.html:30
|
||||
msgid "Build"
|
||||
msgstr "Oluşturma"
|
||||
|
||||
#. the phrase "revision" comes from Git, referring to a commit
|
||||
#: sphinx_rtd_theme/footer.html:37
|
||||
#: sphinx_rtd_theme/footer.html:36
|
||||
msgid "Revision"
|
||||
msgstr "Gözden geçirme"
|
||||
|
||||
@ -68,49 +63,53 @@ msgstr "Son olarak %(last_updated)s tarihinde güncellendi."
|
||||
|
||||
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
||||
#. generated documenation
|
||||
#: sphinx_rtd_theme/footer.html:54
|
||||
#: sphinx_rtd_theme/footer.html:55
|
||||
msgid "theme"
|
||||
msgstr "tema"
|
||||
|
||||
#. this is always used as "provided by Read the Docs", and should not imply
|
||||
#. Read the Docs is an author of the generated documentation.
|
||||
#: sphinx_rtd_theme/footer.html:56
|
||||
#: sphinx_rtd_theme/footer.html:57
|
||||
#, python-format
|
||||
msgid "provided by %(readthedocs_web)s"
|
||||
msgstr "kullanılarak %(readthedocs_web)s tarafından sağlanmasıyla oluşturuldu"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:79
|
||||
#: sphinx_rtd_theme/layout.html:97
|
||||
#, python-format
|
||||
msgid "Search within %(docstitle)s"
|
||||
msgstr "%(docstitle)s içinde ara"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:87
|
||||
#: sphinx_rtd_theme/layout.html:105
|
||||
msgid "About these documents"
|
||||
msgstr "Bu belgeler hakkında"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:90
|
||||
#: sphinx_rtd_theme/layout.html:108
|
||||
msgid "Index"
|
||||
msgstr "Dizin"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:93 sphinx_rtd_theme/search.html:11
|
||||
#: sphinx_rtd_theme/layout.html:111 sphinx_rtd_theme/search.html:11
|
||||
msgid "Search"
|
||||
msgstr "Arama"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:128
|
||||
#: sphinx_rtd_theme/layout.html:114
|
||||
msgid "Copyright"
|
||||
msgstr "Telif hakkı"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
|
||||
msgid "Logo"
|
||||
msgstr "Logo"
|
||||
|
||||
#: sphinx_rtd_theme/search.html:29
|
||||
#: sphinx_rtd_theme/search.html:31
|
||||
msgid "Please activate JavaScript to enable the search functionality."
|
||||
msgstr ""
|
||||
"Arama işlevselliğini etkinleştirmek için lütfen JavaScript'i etkinleştirin."
|
||||
|
||||
#. Search is a noun, not a verb
|
||||
#: sphinx_rtd_theme/search.html:37
|
||||
#: sphinx_rtd_theme/search.html:39
|
||||
msgid "Search Results"
|
||||
msgstr "Arama Sonuçları"
|
||||
|
||||
#: sphinx_rtd_theme/search.html:39
|
||||
#: sphinx_rtd_theme/search.html:41
|
||||
msgid ""
|
||||
"Your search did not match any documents. Please make sure that all words are"
|
||||
" spelled correctly and that you've selected enough categories."
|
||||
@ -122,7 +121,7 @@ msgstr ""
|
||||
msgid "Search docs"
|
||||
msgstr "Belgeleri arayın"
|
||||
|
||||
#: sphinx_rtd_theme/versions.html:11
|
||||
#: sphinx_rtd_theme/versions.html:3 sphinx_rtd_theme/versions.html:11
|
||||
msgid "Versions"
|
||||
msgstr "Sürümler"
|
||||
|
||||
@ -142,6 +141,3 @@ msgstr "Proje Ana Sayfa"
|
||||
#: sphinx_rtd_theme/versions.html:29
|
||||
msgid "Builds"
|
||||
msgstr "Oluşturmalar"
|
||||
|
||||
#~ msgid "Free document hosting provided by"
|
||||
#~ msgstr "Ücretsiz belge barındırmayı sağlayan"
|
||||
|
||||
Binary file not shown.
@ -12,7 +12,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sphinx_rtd_theme 0.4.3.dev0\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2020-05-06 13:38-0600\n"
|
||||
"POT-Creation-Date: 2021-09-13 13:35-0600\n"
|
||||
"PO-Revision-Date: 2019-07-16 21:44+0000\n"
|
||||
"Last-Translator: Anthony <aj@ohess.org>, 2020\n"
|
||||
"Language-Team: Chinese (China) (https://www.transifex.com/readthedocs/teams/101354/zh_CN/)\n"
|
||||
@ -23,40 +23,40 @@ msgstr ""
|
||||
"Language: zh_CN\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:43 sphinx_rtd_theme/breadcrumbs.html:45
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:37 sphinx_rtd_theme/breadcrumbs.html:39
|
||||
msgid "Edit on GitHub"
|
||||
msgstr "在 GitHub 上修改"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:50 sphinx_rtd_theme/breadcrumbs.html:52
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:44 sphinx_rtd_theme/breadcrumbs.html:46
|
||||
msgid "Edit on Bitbucket"
|
||||
msgstr "在 Bitbucket 上修改"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:57 sphinx_rtd_theme/breadcrumbs.html:59
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:51 sphinx_rtd_theme/breadcrumbs.html:53
|
||||
msgid "Edit on GitLab"
|
||||
msgstr "在 GitLab 上修改"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:62 sphinx_rtd_theme/breadcrumbs.html:64
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:56 sphinx_rtd_theme/breadcrumbs.html:58
|
||||
msgid "View page source"
|
||||
msgstr "查看页面源码"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:74 sphinx_rtd_theme/footer.html:5
|
||||
msgid "Next"
|
||||
msgstr "下一页"
|
||||
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:77 sphinx_rtd_theme/footer.html:8
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:69 sphinx_rtd_theme/footer.html:6
|
||||
msgid "Previous"
|
||||
msgstr "上一页"
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:21 sphinx_rtd_theme/footer.html:24
|
||||
#: sphinx_rtd_theme/layout.html:96
|
||||
msgid "Copyright"
|
||||
msgstr "版权所有"
|
||||
#: sphinx_rtd_theme/breadcrumbs.html:72 sphinx_rtd_theme/footer.html:9
|
||||
msgid "Next"
|
||||
msgstr "下一页"
|
||||
|
||||
#. Build is a noun, not a verb
|
||||
#: sphinx_rtd_theme/footer.html:31
|
||||
#: sphinx_rtd_theme/footer.html:30
|
||||
msgid "Build"
|
||||
msgstr "构建"
|
||||
|
||||
#. the phrase "revision" comes from Git, referring to a commit
|
||||
#: sphinx_rtd_theme/footer.html:36
|
||||
msgid "Revision"
|
||||
msgstr "修订"
|
||||
|
||||
#: sphinx_rtd_theme/footer.html:41
|
||||
#, python-format
|
||||
msgid "Last updated on %(last_updated)s."
|
||||
@ -65,55 +65,59 @@ msgstr "最后更新时间 %(last_updated)s。"
|
||||
#. the variable "sphinx_web" is a link to the Sphinx project documentation
|
||||
#. with
|
||||
#. the text "Sphinx"
|
||||
#: sphinx_rtd_theme/footer.html:52
|
||||
#: sphinx_rtd_theme/footer.html:53
|
||||
#, python-format
|
||||
msgid "Built with %(sphinx_web)s using a"
|
||||
msgstr "利用 %(sphinx_web)s 构建,使用了 "
|
||||
|
||||
#. "theme" refers to a theme for Sphinx, which alters the appearance of the
|
||||
#. generated documenation
|
||||
#: sphinx_rtd_theme/footer.html:54
|
||||
#: sphinx_rtd_theme/footer.html:55
|
||||
msgid "theme"
|
||||
msgstr "主题"
|
||||
|
||||
#. this is always used as "provided by Read the Docs", and should not imply
|
||||
#. Read the Docs is an author of the generated documentation.
|
||||
#: sphinx_rtd_theme/footer.html:56
|
||||
#: sphinx_rtd_theme/footer.html:57
|
||||
#, python-format
|
||||
msgid "provided by %(readthedocs_web)s"
|
||||
msgstr "由 %(readthedocs_web)s开发"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:79
|
||||
#: sphinx_rtd_theme/layout.html:97
|
||||
#, python-format
|
||||
msgid "Search within %(docstitle)s"
|
||||
msgstr "在 %(docstitle)s中搜索"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:87
|
||||
#: sphinx_rtd_theme/layout.html:105
|
||||
msgid "About these documents"
|
||||
msgstr "关于此文档"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:90
|
||||
#: sphinx_rtd_theme/layout.html:108
|
||||
msgid "Index"
|
||||
msgstr "索引"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:93 sphinx_rtd_theme/search.html:11
|
||||
#: sphinx_rtd_theme/layout.html:111 sphinx_rtd_theme/search.html:11
|
||||
msgid "Search"
|
||||
msgstr "搜索"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:128
|
||||
#: sphinx_rtd_theme/layout.html:114
|
||||
msgid "Copyright"
|
||||
msgstr "版权所有"
|
||||
|
||||
#: sphinx_rtd_theme/layout.html:147 sphinx_rtd_theme/layout.html:149
|
||||
msgid "Logo"
|
||||
msgstr "Logo"
|
||||
|
||||
#: sphinx_rtd_theme/search.html:29
|
||||
#: sphinx_rtd_theme/search.html:31
|
||||
msgid "Please activate JavaScript to enable the search functionality."
|
||||
msgstr "请启用 JavaScript 以便使用搜索功能"
|
||||
|
||||
#. Search is a noun, not a verb
|
||||
#: sphinx_rtd_theme/search.html:37
|
||||
#: sphinx_rtd_theme/search.html:39
|
||||
msgid "Search Results"
|
||||
msgstr "搜索结果"
|
||||
|
||||
#: sphinx_rtd_theme/search.html:39
|
||||
#: sphinx_rtd_theme/search.html:41
|
||||
msgid ""
|
||||
"Your search did not match any documents. Please make sure that all words are"
|
||||
" spelled correctly and that you've selected enough categories."
|
||||
@ -123,7 +127,7 @@ msgstr "您的搜索没有匹配到任何文档。请确保所有单词拼写正
|
||||
msgid "Search docs"
|
||||
msgstr "在文档中搜索"
|
||||
|
||||
#: sphinx_rtd_theme/versions.html:11
|
||||
#: sphinx_rtd_theme/versions.html:3 sphinx_rtd_theme/versions.html:11
|
||||
msgid "Versions"
|
||||
msgstr "版本列表"
|
||||
|
||||
@ -143,9 +147,3 @@ msgstr "项目首页"
|
||||
#: sphinx_rtd_theme/versions.html:29
|
||||
msgid "Builds"
|
||||
msgstr "构建"
|
||||
|
||||
#~ msgid "Docs"
|
||||
#~ msgstr "文档"
|
||||
|
||||
#~ msgid "Free document hosting provided by"
|
||||
#~ msgstr "此文档免费托管于"
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -5,6 +5,7 @@ pygments_style = default
|
||||
|
||||
[options]
|
||||
analytics_id =
|
||||
analytics_anonymize_ip = False
|
||||
collapse_navigation = False
|
||||
sticky_navigation = False
|
||||
navigation_depth = 4
|
||||
@ -15,3 +16,4 @@ display_version = True
|
||||
prev_next_buttons_location = both
|
||||
style_external_links = True
|
||||
style_nav_header_background =
|
||||
vcs_pageview_mode =
|
||||
|
||||
@ -3,6 +3,7 @@ aat
|
||||
abc
|
||||
abf
|
||||
ABI
|
||||
abi
|
||||
abo
|
||||
Abramyan
|
||||
absTol
|
||||
@ -41,6 +42,7 @@ advect
|
||||
advection
|
||||
advects
|
||||
affine
|
||||
Afrasiabian
|
||||
Afshar
|
||||
agilio
|
||||
Agilio
|
||||
@ -1111,6 +1113,7 @@ funcs
|
||||
functionalities
|
||||
functionals
|
||||
funroll
|
||||
Furuholt
|
||||
fx
|
||||
fy
|
||||
fz
|
||||
@ -1593,6 +1596,7 @@ Ki
|
||||
Kikugawa
|
||||
kim
|
||||
kinetostats
|
||||
Kirkwood
|
||||
kJ
|
||||
kk
|
||||
Klahn
|
||||
@ -1923,7 +1927,9 @@ Mayoral
|
||||
mbt
|
||||
MBytes
|
||||
mc
|
||||
mcmoves
|
||||
McLachlan
|
||||
mcmoves
|
||||
md
|
||||
mdf
|
||||
mdi
|
||||
@ -2224,6 +2230,7 @@ Nelement
|
||||
Nelements
|
||||
nelems
|
||||
nemd
|
||||
netapp
|
||||
netcdf
|
||||
netstat
|
||||
Nettleton
|
||||
@ -2288,6 +2295,7 @@ Nmin
|
||||
Nmols
|
||||
nn
|
||||
nnodes
|
||||
npits
|
||||
nO
|
||||
Nocedal
|
||||
nocite
|
||||
@ -2450,6 +2458,7 @@ ortho
|
||||
orthonormal
|
||||
orthorhombic
|
||||
Ortner
|
||||
os
|
||||
oso
|
||||
Otype
|
||||
Ouadfel
|
||||
@ -3315,6 +3324,7 @@ THz
|
||||
Tigran
|
||||
Tij
|
||||
Tildesley
|
||||
timeI
|
||||
timespan
|
||||
timestamp
|
||||
timestamps
|
||||
@ -3616,6 +3626,7 @@ wget
|
||||
Whelan
|
||||
whitesmoke
|
||||
whitespace
|
||||
whl
|
||||
Wi
|
||||
Wicaksono
|
||||
widom
|
||||
@ -3653,6 +3664,7 @@ xcm
|
||||
Xcm
|
||||
Xcode
|
||||
xCORE
|
||||
xdmf
|
||||
Xeon
|
||||
xflag
|
||||
xhi
|
||||
|
||||
@ -6,10 +6,10 @@
|
||||
# 280 x 280 x 101 lattice-Boltzmann grid sites. #
|
||||
# #
|
||||
# This simulation is used to illustrate the simulation time of a realistic #
|
||||
# implementation of the lb_fluid fix. #
|
||||
# implementation of the lb/fluid fix. #
|
||||
# The data file "confinedcolloids.dat" is quite large and so is not #
|
||||
# included here. It can be obtained from: #
|
||||
# http://www.apmaths.uwo.ca/~cdennist/confinedcolloids.dat.gz #
|
||||
# http://publish.uwo.ca/~cdennist/confinedcolloids.dat.gz #
|
||||
# #
|
||||
# Sample output from this run can be found in the file: #
|
||||
# results64.out #
|
||||
@ -19,7 +19,10 @@ units micro
|
||||
dimension 3
|
||||
boundary p p f
|
||||
atom_style molecular
|
||||
read_data confinedcolloids.dat
|
||||
|
||||
# try to download
|
||||
shell test -f confinedcolloids.dat.gz || curl -L -o confinedcolloids.dat.gz http://publish.uwo.ca/~cdennist/confinedcolloids.dat.gz
|
||||
read_data confinedcolloids.dat.gz
|
||||
|
||||
mass * 0.00010287
|
||||
|
||||
@ -62,23 +65,18 @@ pair_coeff * * 0.0 0.0 1.572
|
||||
pair_coeff 1 1 10.0 1.400492785 1.572
|
||||
pair_modify shift yes
|
||||
|
||||
timestep 0.0006
|
||||
timestep 0.001
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Create a lattice-Boltzmann fluid covering the simulation domain.
|
||||
# This fluid feels a force due to the particles specified through FluidAtoms
|
||||
# (however, this fix does not explicitly apply a force back on to these
|
||||
# particles...this is accomplished through the use of the viscous_lb fix).
|
||||
# Use the standard LB integration scheme, a fluid density = 1.0,
|
||||
# fluid viscosity = 1.0, lattice spacing dx=0.06, and mass unit, dm=0.00003.
|
||||
# Use the default method to calculate the interaction force between the
|
||||
# particles and the fluid. This calculation makes use of the surface area
|
||||
# of the composite object represented by each particle node. Since this is
|
||||
# not equal to dx*dx, it is input through the setArea keyword (i.e.
|
||||
# particles of type 2 correspond to a surface area of 0.0018337299).
|
||||
# Implement walls moving at speeds of 20.0 in opposite directions.
|
||||
# particles...this is accomplished through the use of the lb/viscous fix).
|
||||
# Use a fluid density = 1.0, fluid viscosity = 1.0, (water at STP) and a
|
||||
# lattice spacing dx=0.06.
|
||||
# Implement top/bottomw walls moving at speeds of 20.0 in opposite directions
|
||||
#----------------------------------------------------------------------------
|
||||
fix 1 FluidAtoms lb/fluid 1 1 1.0 1.0 dx 0.06 dm 0.00003 setArea 2 0.0018337299 zwall_velocity -20.0 20.0
|
||||
fix 1 FluidAtoms lb/fluid 1 1.0 1.0 dx 0.06 zwall_velocity -20.0 20.0
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
# Apply the force due to the fluid onto the FluidAtoms particles (again,
|
||||
@ -105,4 +103,7 @@ fix walllo ForceAtoms wall/lj126 zlo 0.0 20.0 0.8071542386 0.906 units box
|
||||
|
||||
#dump ParticleTracking ForceAtoms custom 50 test.track id mol x y z vx vy vz
|
||||
|
||||
run 400
|
||||
thermo 50
|
||||
|
||||
#run 400
|
||||
run 100
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user