Skip to content

Commit

Permalink
Joss Paper Update (#55)
Browse files Browse the repository at this point in the history
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
MikeHeiber authored Jan 7, 2019
1 parent db10bc0 commit 06f42d9
Show file tree
Hide file tree
Showing 211 changed files with 1,823 additions and 2,685 deletions.
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,8 @@
*.exe
*.out
*.app

# Visual Studio files
*.vcxproj*
.vs*
*.sln
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright (c) 2017-2018 Michael C. Heiber
# Copyright (c) 2017-2019 Michael C. Heiber
# This source file is part of the KMC_Lattice project, which is subject to the MIT License.
# For more information, see the LICENSE file that accompanies this software.
# The KMC_Lattice project can be found on Github at https://github.com/MikeHeiber/KMC_Lattice
Expand Down
22 changes: 21 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [v2.0.0-rc.2] - 2019-01-07 - Release Candidate 2

### Added
- README.md - Information about the BKL algorithm and the Gillespie first-reaction method implemented in the tools with link to the original papers
- README.md - Information about and link to the KMC_Lattice_example repo
- README.md - Major features list
- README.md - Section heading for the API documentation, citation instructions, and acknowledgements
- papers/v2_paper/paper.md - Initial draft of v2.0 JOSS paper text
- papers/v2_paper/paper.bib - Initial draft of v2.0 JOSS paper references
- .gitignore - Ignore statements for Visual Studio project files

### Changed
- Many files - Copyright statement to show years 2017-2019
- README.md - Rearranged sections and moved the build instructions to the end of the usage instructions sections
- Version.cpp - Version string to v2.0.0
- Doxyfile - project version number to v2.0.0 and brief project description
- docs - Re-generated documentation using latest Doxygen v1.8.15

### Removed
- docs - Repository markdown files from the documentation build

## [v2.0.0-rc.1] - 2018-12-11 - Release Candidate 1

### Added
Expand All @@ -34,7 +55,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- test.cpp (LatticeTests) - Cast return of count_if functions to int to prevent compiler warning
- test.cpp (ObjectTests) - Tests of the new calculateDisplacement function behavior


### Changed
- Doxyfile - Updated the version number to v2.0.0-rc.1
- docs - Generated updated Doxygen documentation
Expand Down
271 changes: 162 additions & 109 deletions Doxyfile

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2018 Michael C. Heiber
Copyright (c) 2017-2019 Michael C. Heiber

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
83 changes: 51 additions & 32 deletions README.md
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 [![GitHub (pre-)release](https://img.shields.io/github/release/MikeHeiber/KMC_Lattice/all.svg?style=flat-square)](https://github.com/MikeHeiber/KMC_Lattice/releases).
Expand All @@ -38,13 +47,45 @@ Code is being tested using [googletest](https://github.com/google/googletest) wi
| Master | [![Coveralls github branch](https://img.shields.io/coveralls/github/MikeHeiber/KMC_Lattice/master.svg?style=for-the-badge)](https://coveralls.io/github/MikeHeiber/KMC_Lattice?branch=master) |
| Development | [![Coveralls github branch](https://img.shields.io/coveralls/github/MikeHeiber/KMC_Lattice/development.svg?style=for-the-badge)](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

Expand Down Expand Up @@ -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 removed docs/Thumbs.db
Binary file not shown.
106 changes: 0 additions & 106 deletions docs/_c_h_a_n_g_e_l_o_g_8md.html

This file was deleted.

106 changes: 0 additions & 106 deletions docs/_c_o_d_e___o_f___c_o_n_d_u_c_t_8md.html

This file was deleted.

Loading

0 comments on commit 06f42d9

Please sign in to comment.