Skip to content

Ground state charge configuration finding of atomic silicon quantum dot assemblies using a custom simulated annealing algorithm.

License

Notifications You must be signed in to change notification settings

siqad/simanneal-sidb

Repository files navigation

SimAnneal for SiQAD

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.

Compilation

Compiling C++ Binaries with CMake

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.

Compiling SWIG Python Wrapper

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.

Usage

Invoking from Command Line

./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 SiQAD
  • OUT_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 the POT_FILE contains more than 1 clocking step, specify the clock step to use here. Defaults to 0 if not specified.

Using Python Wrapper

Read swig/py_demo_script.py for usage in Python.

About

Ground state charge configuration finding of atomic silicon quantum dot assemblies using a custom simulated annealing algorithm.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages