**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