SimAnneal is a ground state charge configuration finder for the SiQAD silicon dangling bond CAD tool suite. It is a physically-inspired custom simulated annealing algorithm which finds low energy charge configurations for 3-state silicon dangling bond quantum dots. Please read Section IV.A. on the SiQAD paper on IEEE Transactions on Nanotechnology for more details.
Pre-compiled binaries for SimAnneal are bundled with binary distributions of SiQAD. For now, only pre-compiled Windows binaries are distributed; Linux and macOS users need to compile from source. If you follow the Linux compilation instructions for SiQAD, SimAnneal would already have been compiled within those steps. If you decide to compile SimAnneal separately or create a Python-wrapped version, please follow this README.
TODO apt dependencies including cmake, boost, etc.
Create a build directory and enter it:
mkdir build && cd build
Run CMake:
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=./release ..
To keep debug symbols, change CMAKE_BUILD_TYPE
to Debug
at the8 cost of runtime performance. Change CMAKE_INSTALL_PREFIX
to a directory of your choosing.
Compile with make
. After compilation, you should already find the simanneal
binary in the build
directory. If you would like it to be copied to the CMAKE_INSTALL_PREFIX
, also run make install
.
TODO apt dependencies including cmake, swig, boost, etc.
Make sure that you have scikit-build available on your system, which is available on PIP. Scikit-build reads CMakeLists.txt
which provides instructions on creating the SWIG wrapper as well as binary compilation. Run the following to build the project:
python3 setup.py build
which will deposit __init__.py
, simanneal.py
, and _simanneal.so
in _skbuild/[dir-name-indicating-your-build-system]/cmake-install/pysimanneal/
. You can copy the pysimanneal
directory to your project and include SimAnneal by from pysimanneal import simanneal
from your project.
./simanneal IN_FILE OUT_FILE [--ext-pots POT_FILE] [--ext-pots-step POT_STEP] [--debug]
IN_FILE
: input problem file name, problem files are generated by SiQADOUT_FILE
: output result file name intended for SiQAD to read[--ext-pots POT_FILE]
: import external potentials generated by PoisSolver for SiQAD.[--ext-pots-step POT_STEP]
: if thePOT_FILE
contains more than 1 clocking step, specify the clock step to use here. Defaults to 0 if not specified.
Read swig/py_demo_script.py
for usage in Python.