-
Notifications
You must be signed in to change notification settings - Fork 7
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
JOSS Paper, Copyright, and Documentation Update General: -updated CHANGELOG to include these updates -updated README by adding information about the BKL algorithm and FRM implemented in the tool with links to original papers -updated README by adding description of and link to KMC_Lattice_example repo -updated README by adding a list of major features -updated README by rearranging sections and moving the build instruction to the end of the use instructions -updated README by adding sections for the API documentation, citing instructions, and acknowledgements -added initial draft of the v2 JOSS paper.md file and the references paper.bib file -Updated copyright statement on a files to show years 2017-2019 -Updated .gitignore to ignore visual studio files -Updated Doxyfile by changing project version number to v2.0.0, updated project brief description, removed MD files from the documentation -Updated documentation files using latest Doxygen v1.8.15 Version class: -Updated KMC_Lattice namespace Current_version to v2.0.0
- Loading branch information
1 parent
db10bc0
commit 06f42d9
Showing
211 changed files
with
1,823 additions
and
2,685 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -27,3 +27,8 @@ | |
*.exe | ||
*.out | ||
*.app | ||
|
||
# Visual Studio files | ||
*.vcxproj* | ||
.vs* | ||
*.sln |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,19 +1,28 @@ | ||
# KMC_Lattice | ||
|
||
## General Information | ||
This object-oriented C++ software package contains a general framework for lattice kinetic Monte Carlo (KMC) simulations. | ||
|
||
This object-oriented C++ library contains a general framework for lattice kinetic Monte Carlo (KMC) simulations. | ||
This framework consists of a number of utility functions and base classes that must be extended to create a fully operational KMC simulation. | ||
The goal of this package is to be robust, reliable, and flexible so that users can easily develop KMC simulations for a wide variety of different scientific problems without the need to start from scratch. | ||
|
||
This KMC_Lattice package implements several event recalculation options for creating computationally efficient simulations. | ||
KMC_Lattice implements the [BKL algorithm](https://doi.org/10.1016/0021-9991(75)90060-1) and the [Gillespie first-reaction method](https://doi.org/10.1016/0021-9991(76)90041-3) with several event recalculation options for creating computationally efficient simulations. | ||
The package is designed to be usable on a personal computer and on high performance computing clusters. | ||
Check out the [Excimontec](https://github.com/MikeHeiber/Excimontec) software package for an example of a complex tool constructed using KMC_Lattice, which is used for simulating organic semiconductor devices. | ||
For a simple, well-documented example of how to use this library, please see the [KMC_Lattice_example](https://github.com/MikeHeiber/KMC_Lattice_example) repository. | ||
For an example of a more complex and fully functional computational research tool constructed using KMC_Lattice, check out the [Excimontec](https://github.com/MikeHeiber/Excimontec) software package, which is designed for simulating organic semiconductor devices. | ||
|
||
For further reading about kinetic Monte Carlo simulations, nice overviews of the theory and algorithms can be found here: | ||
|
||
- [Introduction to the Kinetic Monte Carlo Method by Arthur Voter, Los Alamos National Lab](http://www.fml.t.u-tokyo.ac.jp/~izumi/CMS/MC/Introduction_kMC.pdf) | ||
- [Monte Carlo and kinetic Monte Carlo methods – a tutorial by Peter Kratzer, University of Duisburg-Essen](https://arxiv.org/pdf/0904.2556.pdf) | ||
|
||
#### Major Features | ||
- Can construct cubic lattice simulation models | ||
- Adjustable periodic boundary conditions in all three directions allow users to perform 1D, 2D, or 3D simulations | ||
- Choose between several KMC algorithms (first reaction method, selective recalculation method, or full recalculation method) | ||
- Can define custom rate constant calculation functions to include particle-particle interactions or particle-environment interactions | ||
- Can utilize MPI to create pleasingly parallel simulations to quickly gather statistics about the simulation model | ||
- Data analysis utility functions can be used to generate and analyze histograms for describing the behavior of the simulation model | ||
|
||
## Current Status | ||
|
||
The current release is KMC_Lattice [](https://github.com/MikeHeiber/KMC_Lattice/releases). | ||
|
@@ -38,13 +47,45 @@ Code is being tested using [googletest](https://github.com/google/googletest) wi | |
| Master | [](https://coveralls.io/github/MikeHeiber/KMC_Lattice?branch=master) | | ||
| Development | [](https://coveralls.io/github/MikeHeiber/KMC_Lattice?branch=development) | | ||
|
||
## Contact | ||
## Contributing | ||
|
||
If you would like to contribute to the development of this project, please see the [contributing instructions](./CONTRIBUTING.md). | ||
If you would like some help in using or customizing the tool for your research, please contact me ([email protected]) to discuss a collaboration. | ||
You can check out my research using this tool and other work on [Researchgate](https://www.researchgate.net/profile/Michael_Heiber). | ||
|
||
## How to try KMC_Lattice? | ||
## Using KMC_Lattice | ||
|
||
#### Package Contents | ||
|
||
Event class - This base class can be extended to represent any process/mechanism/transition that one would like to simulate. | ||
It could represent a hopping motion event, a reaction event, etc. depending on the application. | ||
Typically, derived events are associated with a particular derived object. | ||
The Event class contains the fundamental properties and back-end operations that any given state transition would require. | ||
|
||
Lattice class - This class implements a lattice, its boundary conditions, and keeps track of its occupancy. | ||
|
||
Object class - This base class can be extended to represent any entity that one would like to simulate. | ||
It could represent an electron, atom, molecule, organism, etc. depending on the application. | ||
The Object class contains the fundamental properties and back-end operations that any given entity simulation would require. | ||
|
||
Parameters_Lattice class - This class contains all of the parameters needed to construct a Lattice object. | ||
|
||
Parameters_Simulation class - This class contains all of the parameters needed to construct a Simulation object. | ||
|
||
Simulation class - This base class can be extended to manage all derived objects and their associated events. | ||
The Simulation class contains the fundamental properties and back-end operations that most simulations would require. | ||
|
||
Site class - This base class can be extended to represent the lattice sites that make up the simulation medium/environment. | ||
Added site properties can be used to implement interactions between the simulation environment and the objects, which then affect the events. | ||
For example, site energies can be assigned to derived site classes to account for inhomogeneous systems. | ||
|
||
Utils - This file contains a number of useful utility functions, scientific constants, etc. that can then be used throughout the software package. | ||
|
||
Version class - This class stores a valid software version string and has version comparison operators and can be used to compare different versions of things to check for compatibility. | ||
|
||
#### API Documentation | ||
|
||
Detailed API documentation for these classes and the entire KMC_Lattice package is generated using Doxygen and can be viewed [here](https://mikeheiber.github.io/KMC_Lattice/). | ||
|
||
#### Building and Testing the KMC_Lattice Library | ||
|
||
|
@@ -86,32 +127,10 @@ and | |
|
||
Please report any build or testing errors in the [Issues](https://github.com/MikeHeiber/KMC_Lattice/issues) section. | ||
|
||
## Package Contents | ||
|
||
Event class - This base class can be extended to represent any process/mechanism/transition that one would like to simulate. | ||
It could represent a hopping motion event, a reaction event, etc. depending on the application. | ||
Typically, derived events are associated with a particular derived object. | ||
The Event class contains the fundamental properties and back-end operations that any given state transition would require. | ||
|
||
Lattice class - This class implements a lattice, its boundary conditions, and keeps track of its occupancy. | ||
|
||
Object class - This base class can be extended to represent any entity that one would like to simulate. | ||
It could represent an electron, atom, molecule, organism, etc. depending on the application. | ||
The Object class contains the fundamental properties and back-end operations that any given entity simulation would require. | ||
|
||
Parameters_Lattice class - This class contains all of the parameters needed to construct a Lattice object. | ||
|
||
Parameters_Simulation class - This class contains all of the parameters needed to construct a Simulation object. | ||
|
||
Simulation class - This base class can be extended to manage all derived objects and their associated events. | ||
The Simulation class contains the fundamental properties and back-end operations that most simulations would require. | ||
|
||
Site class - This base class can be extended to represent the lattice sites that make up the simulation medium/environment. | ||
Added site properties can be used to implement interactions between the simulation environment and the objects, which then affect the events. | ||
For example, site energies can be assigned to derived site classes to account for inhomogeneous systems. | ||
## Citing this Work | ||
|
||
Utils - This file contains a number of useful utility functions, scientific constants, etc. that can then be used throughout the software package. | ||
If you find KMC_Lattice to be helpful for your research, please cite the forthcoming publication... | ||
|
||
Version class - This class stores a valid software version string and has version comparison operators and can be used to compare different versions of things to check for compatibility. | ||
## Acknowledgments | ||
|
||
Detailed API documentation for these classes and the entire KMC_Lattice package can be viewed [here](https://mikeheiber.github.io/KMC_Lattice/). | ||
Development of v2.0 is supported by financial assistance award 70NANB14H012 from U.S. Department of Commerce, National Institute of Standards and Technology as part of the Center for Hierarchical Materials Design (CHiMaD). |
Binary file not shown.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.