1Interfacing a QM program and PCMSolver
2======================================
3
4For the impatients: tl;dr
5-------------------------
6
7In these examples, we want to show how *every function* in the API works.
8If your program is written in Fortran, head over to :ref:`fortran-example`
9If your program is written in C/C++, head over to :ref:`C-example`
10
11How PCMSolver handles potentials and charges: surface functions
12---------------------------------------------------------------
13
14Electrostatic potential vectors and the corresponding apparent surface
15charge vectors are handled internally as `surface functions`.
16The actual values are stored into Eigen vectors and saved into a
17map. The mapping is between the name of the surface function, given by
18the programmer writing the interface to the library, and the vector holding
19the values.
20
21What you should care about: API functions
22-----------------------------------------
23
24These are the contents of the ``pcmsolver.h`` file defining
25the public API of the PCMSolver library. The Fortran bindings
26for the API are in the ``pcmsolver.f90`` file.
27The indexing of symmetry operations and their mapping to a bitstring
28is explained in the following Table. This is important when passing
29symmetry information to the :cpp:func:`pcmsolver_new` function.
30
31.. _symmetry-ops:
32.. table:: Symmetry operations indexing within the module
33
34   ===== === ========= ======
35   Index zyx Generator Parity
36   ===== === ========= ======
37     0   000     E       1.0
38     1   001    Oyz     -1.0
39     2   010    Oxz     -1.0
40     3   011    C2z      1.0
41     4   100    Oxy     -1.0
42     5   101    C2y      1.0
43     6   110    C2x      1.0
44     7   111     i      -1.0
45   ===== === ========= ======
46
47
48.. doxygenfile:: mock_pcmsolver.h
49   :project: PCMSolver
50
51Host input forwarding
52---------------------
53
54.. doxygenstruct:: PCMInput
55   :project: PCMSolver
56
57Internal details of the API
58---------------------------
59
60.. doxygenclass:: pcm::Meddle
61   :project: PCMSolver
62   :members:
63   :protected-members:
64   :private-members:
65
66.. doxygenclass:: pcm::Input
67   :project: PCMSolver
68   :members:
69   :protected-members:
70   :private-members:
71