CAVIAR, Charged pArticles in enVironments surrounded by conductIve boundARies, is an open source
software for molecular simulation of ionic-liquids or charged colloids inside conductive boundaries. CAVIAR imports
computer-aided-design (CAD) geometries and use them to simulate boundary walls. Then base on this geometry, a finite-element
mesh is generated and utilized for solving the Poisson equation.
CAVIAR, is a new, multipurpose and platform-independent scientific software package. CAVIAR
originally developed as a molecular dynamics (MD) simulation code for charged particles near conductive boundaries with nontrivial geometries.
It’s obvious it can be used to simulate problems with less complexity such as a simple MD. CAVIAR
has been developed in C++ with an extensible design.
Methodology
In order to deal with the complexity of solving the Poisson's equation \( \nabla^2 \varphi = \rho / \epsilon_0\)
we developed Poisson to Laplace transformation (PLT) algorithm
which use the superposition theorem and divide the electric potential into two singular (\( \varphi_{si}\)) and smooth
(\(\varphi_{sm}\)) parts \(\varphi ( \vec {x}) = \varphi_{si} ( \vec {x}) + \varphi_{sm} ( \vec {x})\), where the
smooth part is the solution of the Laplace equation with modified boundary conditions:
\[
\nabla^2 \varphi_{sm} ( \vec {x}) = 0,
\]
whereas \(\varphi_{si}\) in each point is simply
\[
\varphi_{si} ( \vec {x}) = \sum_{i=1}^{N} \frac{q_i}{4\pi \epsilon_0 |\vec {x}-\vec {x_i}|}.
\]
The modified boundary condition for the \(\varphi_{sm}\) is given by
$$
\varphi_{sm} |_{\vec {x}_{bc}} = \varphi |_{ \vec {x}_{bc}} - \varphi_{si} |_{ \vec {x}_{bc}},
$$
where \(\varphi |_{ \vec {x}_{bc}}\) is the original electrical potential on the boundaries. In order to clarifying the PLT algorithm,
consider a spherical conductive shell with some point charges inside, as schematically is skectched in the folloing figure;
The above original setup will be replaced by the following one in the PLT algorithm where the point charges are removed and
new boundary conditions are replaced;
CAVIAR is a software with a script interpreter. It is being developed with object-oriented programming paradigm. We
have used modern C++ with C++11 standard42 . In developing CAVIAR , it was tried to use as few external libraries as
possible. This results in an easy building and updating CAVIAR without much dependency problems. CAVIAR
uses CMake for its cross-platform configuration tool. The main CMake script file is in the root of CAVIAR main directory.
about CAVIAR objects and interpreter. All the physical and mathematical tools of CAVIAR are called ’objects’.
The users of CAVIAR only need to know about objects’ headers and source files. Adding any new feature, for example a
force-field, to the objects is as easy as copy-pasting and renaming the files. This object addition will be taught in
the package developer’s guide. CAVIAR is equipped with an interpreter which has different tasks. It is a mixture of 10
classes. It handles the creation, calling and deletion of the objects. It makes meaningful runtime warnings and errors.
It interprets CAVIAR scripting language (CASL). This language has been created for the initial development of
CAVIAR. It supports conditions and loops.
CAVIAR is an open source package, for more information and downloading the CAVIAR, click on the
following link;
caviar-md.org