Skip to content

Commit

Permalink
✨ New SiDB simulator QuickExact and simulation of atomic defects. (
Browse files Browse the repository at this point in the history
…#203)

* 🎨 ClangFormat changes

Signed-off-by: ClangFormat <[email protected]>

* 🎨 copy enum class to try to solve Windows build issue.

* 🎨 tiny change in docu.

* 🎨 ClangFormat changes

Signed-off-by: ClangFormat <[email protected]>

* 🎨 ClangFormat changes

Signed-off-by: ClangFormat <[email protected]>

* 🔥 remove file from git.

* ✅ add additional test.

* 🐛 add ``recompute_energy`` and test which failed before.

* 🎨 change to scoped enumerator.

* 🎨 ClangFormat changes

Signed-off-by: ClangFormat <[email protected]>

* 🎨 use enum struct.

* 🔥 remove ``enum class``due to windows CI issue.

* 🎨 ClangFormat changes

Signed-off-by: ClangFormat <[email protected]>

* 🎨 replace reference.

* ✨ code to generate unique random layouts.

* ✨ Temperature-aware simulation can be conducted with ``exgs`` or ``quicksim``. All simulation engines use ``sidb_simulation_result`` now to collect results.

* 🎨 ClangFormat changes

Signed-off-by: ClangFormat <[email protected]>

* 🎨 rename struct member.

* 🎨 activate automatic state count detection.

* 🎨 update after review (main change: replace stats_pointer as input for simulators).

* 🎨 ClangFormat changes

Signed-off-by: ClangFormat <[email protected]>

* 🎨 introduce impl_class for quickexact.

* 🎨 remove ``const``keyword.

* 🎨 add ``const``keyword.

* 🎨 split into several smaller functions.

* 🎨 rename some functions.

* 📝 add docu.

* ✨ automatic base number detection can be turned ``on`` and ``off``.

* 📝 add more documentation.

* 🔥 remove files to shift them to separate PR.

* 🎨 change order of ``const``keyword and type.

* 📝 add RST.

* 📝 add documentation.

* 💚 add ``const`` keyword.

* 🎨 smaller changes to try to fix test issues.

* ✅ small change to avoid Windows issue.

* 📝 add documentation.

* 📝 add documentation.

* 🔀 merge with temperature-branch.

* 🎨 small changes here and there (documentation, remove header, etc.)

* 🔥 remove additional function.

* 🎨 reformat code.

* 🎨 add equal sign.

* 🎨 clang-tidy suggestions.

* 🎨 fix a few typos.

* 🎨 renaming and put ``stats`` as last.

* 🎨 implement Marcel's first comments.

* 🎨 add enum classes to make use of functions friendlier.

* 🎨 add an enum class for both exhaustive simulators.

* 🔥 remove ``this``.

* 🎨 only one enum class in enum_class_exhaustive_algorithm.hpp

* 🎨 simulation_result is added as an attribute.

* 🎨 replace keyword ``set`` by ``assign`` to be consistent.

* 🎨 take order of member function from the ``pyml`` branch.

* ✨ add the equality and inequality operator.

* ✅ add test for the equality and inequality operator.

* 🎨 use ``sidb_surface`` to store defects.

* 🎨 add test.

* 🎨 reformat code.

* 🐛 correct wrong unit test.

* 🎨 change unit test.

* ✨ added avoidance distance simulation.

* ✨ bounding box for siqad layout.

* ✨ function to determine the defect influence distance.

* 🎨 more defect places added.

* 🎨 sort SiDBs in the charge distribution surface at the initialization.

* 🎨 add parameter struct.

* ✅ add tests for the defect_influence_distance function.

* 🎨 add a new type.

* 🐛 add WithinAbs in unit test.

* 🐛 delete Check for negative indices.

* 🐛 minor bug fix.

* 🐛 add previously deleted cells to the layout.

* ✨ Multithreading for defect avoidance simulation.

* 🎨 add lambda caption.

* 🔀 merge ``main``. The unit library is new.

* 🎨 adapting code for the unit library.

* 🎨 adapt SiDB defects to the unit library.

* 🎨 adapt SiDB defects to the unit library.

* 🎨 implement the unit library to code.

* 🎨 integrate unit library.

* 🎨 all unit tests run successfully.

* 🎨 small changes, trying to improve performance.

* ➖ Remove ``unit`` library due to increasing simulation runtimes.

* 🎨 implement Marcel's suggestions.

* ✅ add a few more tests.

* ✅ remove ``unit library``.

* 📝 more documentation (add physical unit information).

* 📝 add docu.

* ✅ All tests run successfully.

* 🐛 add time_to_solution unit test again, issue caused by GitHub merge conflict.

* 🎨 remove redundant unit test case.

* 🎨 change ``CHECK`` for defect position due to symmetry.

* 🐛 wrong cell where ``get_local_potential`` is applied.

* 🎨 reformat code.

* ✅ add unit test.

* 🎨 Structural improvements and consistency fixes for the code of the QuickExact algorithm

* 🎨 rename function.

* 🔀 merge ``main``.

* ✅ add more unit tests.

* ✅ add more unit tests to cover different physical parameters.

* 🎨 delete redundant line of code.

* ✨ function to determine whether positive charges can occur in a given SiDB layout for given physical parameters.

* 🎨 add pre-mature break.

* ✨ finish function to detect if SiDBs can be positively charged.

* 🎨 more generic description.

* 🎨 code cleaning.

* 🎨 code cleanup.

* 🎨 code cleanup.

* ✅ correct bug in test.

* 🎨 if statement over several statements.

* 🐛 Wrong cell whose local potential is accessed.

* 🐛 remove runtime test due to issues in debug mode.

* 🎨 delete cout.

* 🐛 make sure that defects, if any, are included in the simulation results layouts.

* ✅ add test to check if defects are included in the simulation result layout.

* ✅ Gray code iterator to iterate from a start integer to an end integer in Gray code order.

* 📝 add docu.

* 🎨 add postfix increment operator.

* 🎨 remove ambiguous operators.

* 🎨 use ``QuickExact`` for temperature simulation.

* 🎨 implement suggestions and add docu.

* 🎨 implement suggestions.

* 🎨 use pair for additional_scanning_area.

* 🎨 remove unnecessary ``if`` statement and add tests.

* 🎨 add atomic header.

* 🎨 remove atomic again.

* 🎨 wrong data type.

* 📝 add more docu.

* ✅ add test.

* ✅ implement ``clang-tidy``.

* ✅ add more test.

* 🎨 implement ``clang-tidy`` suggestions.

* ✅ add more tests.

* 🐛 wrong function call.

* ✅ add more tests.

* ✅ add more test.

* 🎨 add test and fix inconsistency.

* 🎨 split ``maximal_defect_influence_distance`` into smaller functions and use a separate class.

* 📝 add ``maximal_defect_influence_distance`` to docu.

* 🎨 replace wrong function and add unit test.

* 📝 update docu.

* 🎨 reformat code, simplify code, and add more unit tests.

* 🎨 solve ``bitwise '|' with boolean operands`` warning.

* 🎨 compare float with ``CHECK_THAT``.

* 🎨 fix inconsistency.

* 🎨 fix inconsistency and add test.

* 🎨 fix inconsistency.

* 🎨 reformat code.

* 🎨 reformat code.

* 🎨 implement Marcel's suggestions.

* 🎨 implement Marcel's suggestions and reformat code.

* 🎨 implement Marcel's suggestions and reformat code.

* 🎨 implement Marcel's suggestions and reformat code.

* 🎨 implement Marcel's suggestions and reformat code.

* 🎨 rename ``maximal`` to ``maximum``.

* 📝 rename ``maximal`` to ``maximum``.

* 🎨 implement ``clang-tidy``suggestions and use ``std::for_each`` instead of ``threads``.

* 🎨 reformat code.

* 🎨 implement cppcheck warnings.

* 🎨 implement Marcel's suggestions.

* 🎨 update sidb_simulation.rst

* 🎨 use template again.

* 🎨 implement clang-tidy suggestions.

* 🎨 remove ``std::move``

* 🎨 implement ``clang-tidy`` suggestions.

* 🎨 Implement ``clang-tidy`` suggestions.

---------

Signed-off-by: ClangFormat <[email protected]>
Co-authored-by: ClangFormat <[email protected]>
Co-authored-by: Marcel Walter <[email protected]>
  • Loading branch information
3 people committed Sep 12, 2023
1 parent d80d647 commit c5812a1
Show file tree
Hide file tree
Showing 26 changed files with 6,112 additions and 347 deletions.
9 changes: 9 additions & 0 deletions docs/algorithms/iterators.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,12 @@ Aspect Ratio Iterator

.. doxygenclass:: fiction::aspect_ratio_iterator
:members:


Gray Code Iterator
------------------

**Header:** ``fiction/algorithms/iter/gray_code_iterator.hpp``

.. doxygenclass:: fiction::gray_code_iterator
:members:
26 changes: 22 additions & 4 deletions docs/algorithms/sidb_simulation.rst
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
SiDB Electrostatic Ground State Simulation
------------------------------------------
Physical Simulation of Silicon Dangling Bond Logic
--------------------------------------------------

These headers provide functions for physically simulating the *ground state* of an SiDB layout. Ground state simulations
are a crucial step in the physical design flow of SiDB layouts, as they are used to validate their functionality.
These headers provide functions for physically simulating an SiDB layout, which is a crucial step in the physical design flow of SiDB layouts, as they are used to validate their functionality.


Physical Parameters
Expand Down Expand Up @@ -39,6 +38,13 @@ Heuristic Ground State Simulation
Exhaustive Ground State Simulation
##################################

**Header:** ``fiction/algorithms/simulation/sidb/quickexact.hpp``

.. doxygenenum:: fiction::automatic_base_number_detection
.. doxygenstruct:: fiction::quickexact_params
:members:
.. doxygenfunction:: fiction::quickexact

**Header:** ``fiction/algorithms/simulation/sidb/exhaustive_ground_state_simulation.hpp``

.. doxygenfunction:: fiction::exhaustive_ground_state_simulation
Expand Down Expand Up @@ -87,12 +93,24 @@ Temperature Behavior
.. doxygenfunction:: fiction::calculate_energy_and_state_type


Maximum Defect Influence Distance
#################################

**Header:** ``fiction/algorithms/simulation/sidb/maximum_defect_influence_position_and_distance.hpp``

.. doxygenstruct:: fiction::maximum_defect_influence_distance_params
:members:
.. doxygenfunction:: fiction::maximum_defect_influence_position_and_distance


Time-to-Solution (TTS) Statistics
#################################

**Header:** ``fiction/algorithms/simulation/sidb/time_to_solution.hpp``

.. doxygenenum:: fiction::exhaustive_algorithm
.. doxygenstruct:: fiction::time_to_solution_params
:members:
.. doxygenfunction:: fiction::sim_acc_tts


Expand Down
Loading

0 comments on commit c5812a1

Please sign in to comment.