diff --git a/.gitmodules b/.gitmodules index 364bfef..d8ea186 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "KMC_Lattice"] path = KMC_Lattice url = https://github.com/MikeHeiber/KMC_Lattice +[submodule "googletest"] + path = googletest + url = https://github.com/google/googletest diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..65cac02 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,47 @@ +# Copyright (c) 2018 Michael C. Heiber +# This source file is part of the Excimontec project, which is subject to the MIT License. +# For more information, see the LICENSE file that accompanies this software. +# The Excimontec project can be found on Github at https://github.com/MikeHeiber/Excimontec +# Travis CI continuous integration build script + +language: cpp +os: linux +dist: trusty +sudo: required + +compiler: + - gcc + +env: + - OPTIONS="GCC_VERSION=5 && MPI=openmpi && TARGET=test_coverage" + - OPTIONS="GCC_VERSION=4.7 && MPI=mpich2 && TARGET=test" + - OPTIONS="GCC_VERSION=4.7 && MPI=openmpi && TARGET=test" + - OPTIONS="GCC_VERSION=4.8 && MPI=mpich2 && TARGET=test" + - OPTIONS="GCC_VERSION=4.8 && MPI=openmpi && TARGET=test" + - OPTIONS="GCC_VERSION=4.9 && MPI=mpich2 && TARGET=test" + - OPTIONS="GCC_VERSION=4.9 && MPI=openmpi && TARGET=test" + - OPTIONS="GCC_VERSION=5 && MPI=mpich2 && TARGET=test" + - OPTIONS="GCC_VERSION=5 && MPI=openmpi && TARGET=test" + - OPTIONS="GCC_VERSION=6 && MPI=mpich2 && TARGET=test" + - OPTIONS="GCC_VERSION=6 && MPI=openmpi && TARGET=test" + - OPTIONS="GCC_VERSION=7 && MPI=mpich2 && TARGET=test" + - OPTIONS="GCC_VERSION=7 && MPI=openmpi && TARGET=test" + - OPTIONS="GCC_VERSION=8 && MPI=mpich2 && TARGET=test" + - OPTIONS="GCC_VERSION=8 && MPI=openmpi && TARGET=test" + +before_install: + - eval "${OPTIONS}" + - sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y + - sudo apt-get update -qq + - sudo apt-get install -qq gcc-$GCC_VERSION g++-$GCC_VERSION -y + - sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-$GCC_VERSION 60 --slave /usr/bin/g++ g++ /usr/bin/g++-$GCC_VERSION + - sudo update-alternatives --config gcc + - gcc --version + - if [[ "$MPI" = mpich2 ]]; then sudo apt-get -y install -qq mpich2 libmpich2-dev; fi + - if [[ "$MPI" = openmpi ]]; then sudo apt-get -y install -qq openmpi-bin libopenmpi-dev; fi + - if [[ "$TARGET" = test_coverage ]]; then pip install --user cpp-coveralls; fi + +script: + - make -j10 $TARGET && travis_wait ./test/Excimontec_tests.exe + - if [[ "$TARGET" = test_coverage ]]; then coveralls --include src --exclude "googletest/*" --gcov-options '\-lp'; fi + - if [[ "$TARGET" = test ]]; then make -j10 && mpiexec -n 4 ./Excimontec.exe parameters_default.txt; fi diff --git a/Doxyfile b/Doxyfile index b41c6c0..73af5fe 100644 --- a/Doxyfile +++ b/Doxyfile @@ -38,13 +38,13 @@ PROJECT_NAME = Excimontec # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = v1.0-beta.3 +PROJECT_NUMBER = v1.0-beta.4 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a # quick idea about the purpose of the project. Keep the description short. -PROJECT_BRIEF = "An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more" +PROJECT_BRIEF = "An open-source KMC simulation software package for modeling the optoelectronic processes in organic semiconductor materials and devices, such as OPVs, OLEDs, and more." # With the PROJECT_LOGO tag one can specify a logo or an icon that is included # in the documentation. The maximum height of the logo should not exceed 55 @@ -58,7 +58,7 @@ PROJECT_LOGO = # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. -OUTPUT_DIRECTORY = Z:\Software_Projects\Local\Excimontec\docs +OUTPUT_DIRECTORY = docs # If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- # directories (in 2 levels) under the output directory of each output format and @@ -790,7 +790,7 @@ WARN_LOGFILE = # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING # Note: If this tag is empty the current directory is searched. -INPUT = Z:\Software_Projects\Local\Excimontec +INPUT = . # This tag can be used to specify the character encoding of the source files # that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses @@ -873,7 +873,9 @@ RECURSIVE = YES # Note that relative paths are relative to the directory from which doxygen is # run. -EXCLUDE = +EXCLUDE = googletest \ + KMC_Lattice \ + test # The EXCLUDE_SYMLINKS tag can be used to select whether or not files or # directories that are symbolic links (a Unix file system feature) are excluded diff --git a/KMC_Lattice b/KMC_Lattice index 488dd05..692836b 160000 --- a/KMC_Lattice +++ b/KMC_Lattice @@ -1 +1 @@ -Subproject commit 488dd056651ca266866b8e1a1fc8a5e607bcdd86 +Subproject commit 692836b51d8c9191a666668ef2156308ed19ca49 diff --git a/README.md b/README.md index c286c7e..02b7c5e 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,17 @@ # Excimontec -The goal of this project is to develop an open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more. -The software is being developed in modern C++ and is optimized for efficient execution on high performance computing clusters using MPI. -This software package uses object-oriented design and extends the [KMC_Lattice](https://github.com/MikeHeiber/KMC_Lattice) framework. + +Kinetic Monte Carlo simulations are a powerful computational tool that have been used in concert with experiments and more detailed theoretical methods to understand and optimize organic semiconductor materials and devices. +However, despite over 30 years of applying KMC tools to organic semiconductors, no widespread or standardized software tools have taken hold in the community. +Instead, many research groups around the world have maintained private codebases of varying complexity, efficiency, and reliability. +As a result, there have been large barriers to entry for new researchers and a lot of repeated effort throughout the community that would be much better off applied to pushing the capabilities of the technique and further refining the physical models. + +Excimontec represents an honest effort to bring the community together around a well-tested, optimized, reliable, and accessible open-source tool for performing KMC simulations of organic electronic devices. The software is being developed in modern C++ and is optimized for efficient execution on high performance computing clusters using MPI. +This software package uses object-oriented design and extends the [KMC_Lattice](https://github.com/MikeHeiber/KMC_Lattice) framework. #### Major Features: - Adjustable periodic boundary conditions in all three directions allow users to perform 1D, 2D, or 3D simulations. - Choose between several film architectures, including a neat film, bilayer film, or random blend film. -- Import bulk heterojunction morphologies generated by [Ising_OPV v3.2 and v4](https://github.com/MikeHeiber/Ising_OPV). +- Import bulk heterojunction morphologies generated by [Ising_OPV](https://github.com/MikeHeiber/Ising_OPV) v3.2 and v4. - Donor and acceptor materials can take on an uncorrelated Gaussian DOS, a correlated Gaussian DOS with different correlation functions, or an uncorrelated exponential DOS model. - Dynamics test simulations can be performed to generate exciton and charge carrier density transients that can be used to model exciton dissociation, charge carrier separation, and charge carrier recombination kinetics. - Time-of-flight charge transport simulations of electrons or holes can be performed on neat, random blend, or bulk heterojunction blend films. @@ -18,7 +23,10 @@ This software package uses object-oriented design and extends the [KMC_Lattice]( - Choose between several KMC algorithms (first reaction method, selective recalculation method, or full recalculation method). ## Current Status -The current release (Excimontec v1.0-beta.3) is built with KMC_Lattice v2.0-beta.3 and allows the user to perform several simulation tests relevant for OPV and OLED devices. + +The current release, Excimontec +[![GitHub (pre-)release](https://img.shields.io/github/release/MikeHeiber/Excimontec/all.svg?style=flat-square)](https://github.com/MikeHeiber/Excimontec/releases) +, is built with 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) and allows the user to perform several simulation tests relevant for OPV and OLED devices. All major planned features that are to be included in v1.0 are now implemented and have undergone preliminary testing. However, this software tool is still under development, and as such, there may still be bugs that need to be squashed. Please report any bugs or submit feature requests in the [Issues](https://github.com/MikeHeiber/Excimontec/issues) section. @@ -26,37 +34,54 @@ Please report any bugs or submit feature requests in the [Issues](https://github Major releases and other significant developments will be announced on the Excimontec: General News mailing list. If you are interested in keeping up to date with the development and application of this tool, please subscribe at the following link: [Subscribe Here](http://eepurl.com/dis9AT) -Travis CI continuous integration status: +#### Continuous Integration and Testing Status: -Excimontec is currently being tested on Ubuntu v14.04 with the GCC compiler (versions 4.7, 4.8, 4.9, 5, 6, and 7) and on both OpenMPI v1.6.5 and MPICH v3.04. +Excimontec is currently being tested on [Ubuntu](https://www.ubuntu.com/) v14.04 with the [GCC compiler](https://gcc.gnu.org/) (versions 4.7, 4.8, 4.9, 5, 6, 7, and 8) and on both [Open MPI](http://www.open-mpi.org/) v1.6.5 and [MPICH](http://www.mpich.org/) v3.04 using [Travis CI](https://travis-ci.com/). -Master branch: [![Build Status](https://travis-ci.org/MikeHeiber/Excimontec.svg?branch=master)](https://travis-ci.org/MikeHeiber/Excimontec) +| Branch | Status | +| :------: | ------ | +| Master | [![Build Status](https://img.shields.io/travis/MikeHeiber/Excimontec/master.svg?style=for-the-badge)](https://travis-ci.org/MikeHeiber/Excimontec) | +| Development | [![Build Status](https://img.shields.io/travis/MikeHeiber/Excimontec/development.svg?style=for-the-badge)](https://travis-ci.org/MikeHeiber/Excimontec) | -Development branch: [![Build Status](https://travis-ci.org/MikeHeiber/Excimontec.svg?branch=development)](https://travis-ci.org/MikeHeiber/Excimontec) +Code is being tested using [googletest](https://github.com/google/googletest) with test coverage assessment by [Coveralls](https://coveralls.io/). -## Work Together +| Branch | Status | +| :------: | ------ | +| Master | [![Coveralls github branch](https://img.shields.io/coveralls/github/MikeHeiber/Excimontec/master.svg?style=for-the-badge)](https://coveralls.io/github/MikeHeiber/Excimontec?branch=master) | +| Development | [![Coveralls github branch](https://img.shields.io/coveralls/github/MikeHeiber/Excimontec/development.svg?style=for-the-badge)](https://coveralls.io/github/MikeHeiber/Excimontec?branch=development) | + +## Contact If you would like to contribute to the development of this project or would like some help in using the tool for your research, please contact me (heiber@mailaps.org) to discuss a collaboration. You can check out my KMC research and other work on [Researchgate](https://www.researchgate.net/profile/Michael_Heiber). -Have a quick question or want to chat about Excimontec? Join the dicussion on Gitter: [![Gitter chat](https://badges.gitter.im/Excimontec.png)](https://gitter.im/Excimontec) +Have a quick question or want to chat about Excimontec? Join the discussion on Gitter: [![Gitter](https://img.shields.io/gitter/room/nwjs/nw.js.svg?style=for-the-badge) +](https://gitter.im/Excimontec) ## How to try Excimontec? -#### Building an Executable +#### Building and Testing the Executable This software tool uses [Message Passing Interface (MPI)](https://computing.llnl.gov/tutorials/mpi/) to utilize parallel computing power. As a result, using Excimontec requires that an MPI library is pre-installed on your system, and the final Excitmontec executable must be built on your specific system. We cannot provide pre-built binaries for your system. Contact your HPC admin to determine the protocols for building MPI applications on your HPC system. -In many cases, the HPC system will already be configured for you, and the package comes with a default makefile that can be used with the [GCC compiler](https://gcc.gnu.org/). +In many cases, the HPC system will already be configured for you, and the package comes with a default makefile that can be used with the [GCC compiler](https://gcc.gnu.org/) or the [PGI compiler](https://www.pgroup.com/). If you wish, you can also install MPI on your own personal workstation and then build Excimontec there as well. For development and preliminary simulation tests, sometimes it is more efficient to run on your own workstation instead of an HPC system. More information about common MPI packages can be found here: -- http://www.open-mpi.org/ -- http://www.mpich.org/ -- http://mvapich.cse.ohio-state.edu/ +- Open MPI, http://www.open-mpi.org/ +- MPICH, http://www.mpich.org/ +- MVAPICH, http://mvapich.cse.ohio-state.edu/ + +Once you have an MPI library installed, to build Excimontec, copy the Excimontec directory to your machine, set it as your working directory, and run `make`. +Compilation flags have been set for GCC and PGI compilers. If you are using another compiler, you will need to edit the makefile and define your own compiler options. +Once the normal build is successful, you should test Excimontec on your own hardware using the unit and system tests provided before you use the tool. +Build the testing executable by running `make test`. +Once the test build is complete, navigate to the testing directory, and run `./Excimontec_tests.exe`. +Please report any build or testing errors in the [Issues](https://github.com/MikeHeiber/Excimontec/issues) section. #### Usage + In most cases, your HPC system will use a job scheduler to manage the computing workload. For performing Excimontec simulations, it is recommended to submit batch jobs where you will request the resources needed to perform the simulation. An example batch script for the [SLURM](https://slurm.schedmd.com/) job scheduling system is provided with this package (slurm_script.sh). @@ -67,11 +92,13 @@ Excimontec.exe takes one required input argument, which is the filename of the i An example parameter file is provided with this package (parameters_default.txt). For example, within the batch script, to create a simulation that runs on 10 processors, an the execution command is: -> mpiexec -n 10 Excimontec.exe parameters_default.txt + +```mpiexec -n 10 Excimontec.exe parameters_default.txt``` In this example, the parameters_default.txt file that is located in the current working directory is loaded into the Excimontec program to determine what simulation to run. #### Output + Excimontec will create a number of different output files depending which test is chosen in the parameter file: - results#.txt -- This text file will contain the results for each processor where the # will be replaced by the processor ID. - analysis_summary.txt -- When MPI is enabled, this text file will contain average final results from all of the processors. @@ -80,10 +107,13 @@ Excimontec will create a number of different output files depending which test i - ToF_transit_time_dist.txt -- When performing a time-of-flight charge transport test, the resulting polaron transit time probability distribution will be output to this file. - ToF_results.txt -- When performing a time-of-flight charge transport test, the resulting quantitative results are put into this parsable delimited results file. - Charge_extraction_map#.txt -- When performing a time-of-flight or IQE test, the x-y locations where charges are extracted from the lattice are saving into this map file. +- DOS_correlation_data#.txt -- When a correlated density of states model is enabled, data showing the statistical correlation of site energies vs. distance is output into this file. #### Data Analysis + For [Igor Pro](https://www.wavemetrics.com/) users, I am developing an open-source procedures package for loading, analyzing, and plotting data from Excimontec simulations called [Excimontec_Analysis](https://github.com/MikeHeiber/Excimontec_Analysis). This is a good starting point for managing the data generated by Excimontec, and the Igor Pro scripting environment provides a nice playground where users can perform more advanced data analysis as needed. ## For Software Developers + Public API documentation for the Excimontec package is still under development and can be viewed [here](https://mikeheiber.github.io/Excimontec/). diff --git a/docs/Thumbs.db b/docs/Thumbs.db index fc645e7..668a12a 100644 Binary files a/docs/Thumbs.db and b/docs/Thumbs.db differ diff --git a/docs/_event_8cpp.html b/docs/_event_8cpp.html deleted file mode 100644 index 657985b..0000000 --- a/docs/_event_8cpp.html +++ /dev/null @@ -1,107 +0,0 @@ - - -
- - - - -
- Excimontec
- v1.0-beta.3
-
- An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
- Excimontec
- v1.0-beta.3
-
- An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
Go to the source code of this file.
--Classes | |
class | Event |
This base class contains the basic properties of a KMC simulation event and the functions needed to interact with it. More... | |
- Excimontec
- v1.0-beta.3
-
- An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
#include "KMC_Lattice/Utils.h"
#include "KMC_Lattice/Object.h"
#include "KMC_Lattice/Event.h"
#include "KMC_Lattice/Simulation.h"
#include "Utils.h"
#include "Object.h"
#include "Event.h"
#include "Simulation.h"
#include <string>
Go to the source code of this file.
@@ -104,28 +104,28 @@#include "KMC_Lattice/Simulation.h"
#include "KMC_Lattice/Site.h"
#include "Simulation.h"
#include "Site.h"
#include "Exciton.h"
#include "Polaron.h"
#include <algorithm>
#include "KMC_Lattice/Utils.h"
#include "KMC_Lattice/Object.h"
#include "KMC_Lattice/Event.h"
#include "Utils.h"
#include "Object.h"
#include "Event.h"
#include <string>
This class extends the Object class to create an exciton object to represent a singlet or triplet exciton in an organic semiconductor. +
This class extends the Object class to create an exciton object to represent a singlet or triplet exciton in an organic semiconductor. More...
#include <Exciton.h>
Public Member Functions | |
Exciton (const double time, const int tag_num, const Coords &coords_start) | |
Exciton (const double time, const int tag_num, const Coords &coords_start) | |
Constructor that creates and initializes an exciton. More... | |
void | flipSpin () |
Flips the spin state of the exciton from singlet to triplet or from triplet to singlet. More... | |
std::string | getObjectType () const |
Gets the object type string that denotes what type of Object class this is. More... | |
Gets the object type string that denotes what type of Object class this is. More... | |
bool | getSpin () const |
Gets the current spin state of the exciton. More... | |
void | setSpin (bool spin_state_new) |
Sets the spin state of the exciton. More... | |
![]() | |
virtual | ~Object () |
Default virtual destructor needed by the base class. More... | |
Object () | |
Default constructor that creates an empty Object object. More... | |
Object (const double time, const int tag_num, const Coords &start_coords) | |
Constructor that creates and initializes a usable Object object. More... | |
double | calculateDisplacement () const |
Calculates the displacement of the object from its starting coordinates in lattice units. More... | |
Coords | getCoords () const |
Gets the current coordinates of the Object. More... | |
double | getCreationTime () const |
Gets the simulation creation time of the Object. More... | |
std::list< Event * >::iterator | getEventIt () const |
Gets the event list iterator for the event that is associated with the object. More... | |
int | getTag () const |
Gets the tag id number of the Object. More... | |
void | incrementDX (const int num) |
Increments the dx parameter, which is to be used when the Object crosses an x-direction periodic boundary. More... | |
void | incrementDY (const int num) |
Increments the dy parameter, which is to be used when the Object crosses a y-direction periodic boundary. More... | |
void | incrementDZ (const int num) |
Increments the dz parameter, which is to be used when the Object crosses a z-direction periodic boundary. More... | |
void | resetInitialCoords (const Coords &input_coords) |
Resets the initial coordinates of the Object. More... | |
void | setCoords (const Coords &input_coords) |
Sets the coordinates of the Object. More... | |
void | setEventIt (const std::list< Event *>::iterator input_it) |
Sets the iterator that points to a specific entry in the events list within the Simulation class. More... | |
Static Public Attributes | |
This class extends the Object class to create an exciton object to represent a singlet or triplet exciton in an organic semiconductor.
+This class extends the Object class to create an exciton object to represent a singlet or triplet exciton in an organic semiconductor.
This is the complete list of members for Exciton_Creation, including all inherited members.
calculateExecutionTime(const double rate) | Event | |
Event() | Event | |
Event(Simulation *sim_ptr) | Event | |
event_type | Exciton_Creation | static |
Exciton_Creation() | Exciton_Creation | inline |
Exciton_Creation(Simulation *simulation_ptr) | Exciton_Creation | inline |
getDestCoords() const | Event | |
getEventType() const | Exciton_Creation | inlinevirtual |
getExecutionTime() const | Event | |
getObjectPtr() const | Event | |
getObjectTargetPtr() const | Event | |
setDestCoords(const Coords &coords) | Event | |
setExecutionTime(const double time) | Event | |
setObjectPtr(Object *input_ptr) | Event | |
setObjectTargetPtr(Object *input_ptr) | Event | |
sim_ptr | Event | protected |
~Event() | Event | virtual |
event_type | Exciton_Creation | static |
Exciton_Creation() | Exciton_Creation | inline |
Exciton_Creation(Simulation *simulation_ptr) | Exciton_Creation | inline |
getEventType() const | Exciton_Creation | inline |
This class extends the Event class to create an specific type of exciton event. +
This class extends the Event class to create an specific type of exciton event. More...
#include <Exciton.h>
Exciton_Creation () | |
Constructs an empty event that is uninitialized. More... | |
Exciton_Creation (Simulation *simulation_ptr) | |
Exciton_Creation (Simulation *simulation_ptr) | |
Constructs and initializes an event. More... | |
std::string | getEventType () const |
Gets the event type string that denotes what type of Event class this is. More... | |
Gets the event type string that denotes what type of Event class this is. More... | |
![]() | |
virtual | ~Event () |
Default virtual destructor needed by the base class. More... | |
Event () | |
The default constructor that creates an empty Event object. More... | |
Event (Simulation *sim_ptr) | |
void | calculateExecutionTime (const double rate) |
Calculates and sets the execution time of the event. More... | |
Coords | getDestCoords () const |
Gets the coordinates of the event destination site. More... | |
Object * | getObjectPtr () const |
Gets a pointer to the Object object that is designated as the subject of the event. More... | |
Object * | getObjectTargetPtr () const |
Gets a pointer to the Object object that is designated as the target of the event. More... | |
double | getExecutionTime () const |
Gets the currently planned execution time of the event. More... | |
void | setDestCoords (const Coords &coords) |
Sets the desination coordinates of the event. More... | |
bool | setExecutionTime (const double time) |
Sets the execution time of the event. More... | |
void | setObjectPtr (Object *input_ptr) |
Sets the pointer to the Object object that is designated as the subject of the event. More... | |
void | setObjectTargetPtr (Object *input_ptr) |
Sets the pointer to the Object object that is designated as the target of the event. More... | |
Static Public Attributes | |
static const std::string | event_type = "Exciton Creation" |
This static member variable holds the name of the event, which is "Exciton_Creation". More... | |
-Additional Inherited Members | |
![]() | |
Simulation * | sim_ptr = nullptr |
The sim_ptr member variable provides a point to the Simulation object that the Event is asociated with. More... | |
This class extends the Event class to create an specific type of exciton event.
+This class extends the Event class to create an specific type of exciton event.
simulation_ptr | is a pointer to the Simulation object that is associated with the event. |
simulation_ptr | is a pointer to the Simulation object that is associated with the event. |
This class extends the Event class to create an specific type of exciton event. +
This class extends the Event class to create an specific type of exciton event. More...
#include <Exciton.h>
Exciton_Dissociation () | |
Constructs an empty event that is uninitialized. More... | |
Exciton_Dissociation (Simulation *simulation_ptr) | |
Exciton_Dissociation (Simulation *simulation_ptr) | |
Constructs and initializes an event. More... | |
void | calculateExecutionTime (const double prefactor, const double localization, const double distance, const double E_delta) |
Calculates and updates the execution time for the exciton dissociation event using the Marcus polaron hopping mechanism. More... | |
std::string | getEventType () const |
Gets the event type string that denotes what type of Event class this is. More... | |
Gets the event type string that denotes what type of Event class this is. More... | |
![]() | |
virtual | ~Event () |
Default virtual destructor needed by the base class. More... | |
Event () | |
The default constructor that creates an empty Event object. More... | |
Event (Simulation *sim_ptr) | |
void | calculateExecutionTime (const double rate) |
Calculates and sets the execution time of the event. More... | |
Coords | getDestCoords () const |
Gets the coordinates of the event destination site. More... | |
Object * | getObjectPtr () const |
Gets a pointer to the Object object that is designated as the subject of the event. More... | |
Object * | getObjectTargetPtr () const |
Gets a pointer to the Object object that is designated as the target of the event. More... | |
double | getExecutionTime () const |
Gets the currently planned execution time of the event. More... | |
void | setDestCoords (const Coords &coords) |
Sets the desination coordinates of the event. More... | |
bool | setExecutionTime (const double time) |
Sets the execution time of the event. More... | |
void | setObjectPtr (Object *input_ptr) |
Sets the pointer to the Object object that is designated as the subject of the event. More... | |
void | setObjectTargetPtr (Object *input_ptr) |
Sets the pointer to the Object object that is designated as the target of the event. More... | |
Static Public Attributes | |
static const std::string | event_type = "Exciton Dissociation" |
This static member variable holds the name of the event, which is "Exciton_Dissociation". More... | |
-Additional Inherited Members | |
![]() | |
Simulation * | sim_ptr = nullptr |
The sim_ptr member variable provides a point to the Simulation object that the Event is asociated with. More... | |
This class extends the Event class to create an specific type of exciton event.
+This class extends the Event class to create an specific type of exciton event.
simulation_ptr | is a pointer to the Simulation object that is associated with the event. |
simulation_ptr | is a pointer to the Simulation object that is associated with the event. |
This class extends the Event class to create an specific type of exciton event. +
This class extends the Event class to create an specific type of exciton event. More...
#include <Exciton.h>
Exciton_Exciton_Annihilation () | |
Constructs an empty event that is uninitialized. More... | |
Exciton_Exciton_Annihilation (Simulation *simulation_ptr) | |
Exciton_Exciton_Annihilation (Simulation *simulation_ptr) | |
Constructs and initializes an event. More... | |
void | calculateExecutionTime (const double prefactor, const double distance) |
Calculates and updates the execution time for the exciton-exciton annihilation event using the Dexter hopping mechanism. More... | |
std::string | getEventType () const |
Gets the event type string that denotes what type of Event class this is. More... | |
Gets the event type string that denotes what type of Event class this is. More... | |
![]() | |
virtual | ~Event () |
Default virtual destructor needed by the base class. More... | |
Event () | |
The default constructor that creates an empty Event object. More... | |
Event (Simulation *sim_ptr) | |
void | calculateExecutionTime (const double rate) |
Calculates and sets the execution time of the event. More... | |
Coords | getDestCoords () const |
Gets the coordinates of the event destination site. More... | |
Object * | getObjectPtr () const |
Gets a pointer to the Object object that is designated as the subject of the event. More... | |
Object * | getObjectTargetPtr () const |
Gets a pointer to the Object object that is designated as the target of the event. More... | |
double | getExecutionTime () const |
Gets the currently planned execution time of the event. More... | |
void | setDestCoords (const Coords &coords) |
Sets the desination coordinates of the event. More... | |
bool | setExecutionTime (const double time) |
Sets the execution time of the event. More... | |
void | setObjectPtr (Object *input_ptr) |
Sets the pointer to the Object object that is designated as the subject of the event. More... | |
void | setObjectTargetPtr (Object *input_ptr) |
Sets the pointer to the Object object that is designated as the target of the event. More... | |
Static Public Attributes | |
static const std::string | event_type = "Exciton-Exciton Annihilation" |
This static member variable holds the name of the event, which is "Exciton_Exciton_Annihilation". More... | |
-Additional Inherited Members | |
![]() | |
Simulation * | sim_ptr = nullptr |
The sim_ptr member variable provides a point to the Simulation object that the Event is asociated with. More... | |
This class extends the Event class to create an specific type of exciton event.
+This class extends the Event class to create an specific type of exciton event.
simulation_ptr | is a pointer to the Simulation object that is associated with the event. |
simulation_ptr | is a pointer to the Simulation object that is associated with the event. |
calculateExecutionTime(const double prefactor, const double distance, const double E_delta) | Exciton_Hop | inline |
calculateExecutionTime(const double prefactor, const double localization, const double distance, const double E_delta) | Exciton_Hop | inline |
Event::calculateExecutionTime(const double rate) | Event | |
Event() | Event | |
Event(Simulation *sim_ptr) | Event | |
event_type | Exciton_Hop | static |
Exciton_Hop() | Exciton_Hop | inline |
Exciton_Hop(Simulation *simulation_ptr) | Exciton_Hop | inline |
getDestCoords() const | Event | |
getEventType() const | Exciton_Hop | inlinevirtual |
getExecutionTime() const | Event | |
getObjectPtr() const | Event | |
getObjectTargetPtr() const | Event | |
setDestCoords(const Coords &coords) | Event | |
setExecutionTime(const double time) | Event | |
setObjectPtr(Object *input_ptr) | Event | |
setObjectTargetPtr(Object *input_ptr) | Event | |
sim_ptr | Event | protected |
~Event() | Event | virtual |
event_type | Exciton_Hop | static |
Exciton_Hop() | Exciton_Hop | inline |
Exciton_Hop(Simulation *simulation_ptr) | Exciton_Hop | inline |
getEventType() const | Exciton_Hop | inline |
This class extends the Event class to create an specific type of exciton event. +
This class extends the Event class to create an specific type of exciton event. More...
#include <Exciton.h>
Exciton_Hop () | |
Constructs an empty event that is uninitialized. More... | |
Exciton_Hop (Simulation *simulation_ptr) | |
Exciton_Hop (Simulation *simulation_ptr) | |
Constructs and initializes an event. More... | |
void | calculateExecutionTime (const double prefactor, const double distance, const double E_delta) |
Calculates and updates the execution time for the exciton hop event using the Dexter hopping mechanism. More... | |
std::string | getEventType () const |
Gets the event type string that denotes what type of Event class this is. More... | |
Gets the event type string that denotes what type of Event class this is. More... | |
![]() | |
virtual | ~Event () |
Default virtual destructor needed by the base class. More... | |
Event () | |
The default constructor that creates an empty Event object. More... | |
Event (Simulation *sim_ptr) | |
void | calculateExecutionTime (const double rate) |
Calculates and sets the execution time of the event. More... | |
Coords | getDestCoords () const |
Gets the coordinates of the event destination site. More... | |
Object * | getObjectPtr () const |
Gets a pointer to the Object object that is designated as the subject of the event. More... | |
Object * | getObjectTargetPtr () const |
Gets a pointer to the Object object that is designated as the target of the event. More... | |
double | getExecutionTime () const |
Gets the currently planned execution time of the event. More... | |
void | setDestCoords (const Coords &coords) |
Sets the desination coordinates of the event. More... | |
bool | setExecutionTime (const double time) |
Sets the execution time of the event. More... | |
void | setObjectPtr (Object *input_ptr) |
Sets the pointer to the Object object that is designated as the subject of the event. More... | |
void | setObjectTargetPtr (Object *input_ptr) |
Sets the pointer to the Object object that is designated as the target of the event. More... | |
Static Public Attributes | |
static const std::string | event_type = "Exciton Hop" |
This static member variable holds the name of the event, which is "Exciton_Hop". More... | |
-Additional Inherited Members | |
![]() | |
Simulation * | sim_ptr = nullptr |
The sim_ptr member variable provides a point to the Simulation object that the Event is asociated with. More... | |
This class extends the Event class to create an specific type of exciton event.
+This class extends the Event class to create an specific type of exciton event.
simulation_ptr | is a pointer to the Simulation object that is associated with the event. |
simulation_ptr | is a pointer to the Simulation object that is associated with the event. |
This is the complete list of members for Exciton_Intersystem_Crossing, including all inherited members.
This class extends the Event class to create an specific type of exciton event. +
This class extends the Event class to create an specific type of exciton event. More...
#include <Exciton.h>
Exciton_Intersystem_Crossing () | |
Constructs an empty event that is uninitialized. More... | |
Exciton_Intersystem_Crossing (Simulation *simulation_ptr) | |
Exciton_Intersystem_Crossing (Simulation *simulation_ptr) | |
Constructs and initializes an event. More... | |
void | calculateExecutionTime (const double prefactor, const double E_delta) |
Calculates and updates the execution time for the exciton intersystem crossing event. More... | |
std::string | getEventType () const |
Gets the event type string that denotes what type of Event class this is. More... | |
Gets the event type string that denotes what type of Event class this is. More... | |
![]() | |
virtual | ~Event () |
Default virtual destructor needed by the base class. More... | |
Event () | |
The default constructor that creates an empty Event object. More... | |
Event (Simulation *sim_ptr) | |
void | calculateExecutionTime (const double rate) |
Calculates and sets the execution time of the event. More... | |
Coords | getDestCoords () const |
Gets the coordinates of the event destination site. More... | |
Object * | getObjectPtr () const |
Gets a pointer to the Object object that is designated as the subject of the event. More... | |
Object * | getObjectTargetPtr () const |
Gets a pointer to the Object object that is designated as the target of the event. More... | |
double | getExecutionTime () const |
Gets the currently planned execution time of the event. More... | |
void | setDestCoords (const Coords &coords) |
Sets the desination coordinates of the event. More... | |
bool | setExecutionTime (const double time) |
Sets the execution time of the event. More... | |
void | setObjectPtr (Object *input_ptr) |
Sets the pointer to the Object object that is designated as the subject of the event. More... | |
void | setObjectTargetPtr (Object *input_ptr) |
Sets the pointer to the Object object that is designated as the target of the event. More... | |
Static Public Attributes | |
static const std::string | event_type = "Exciton Intersystem Crossing" |
This static member variable holds the name of the event, which is "Exciton_Intersystem_Crossing". More... | |
-Additional Inherited Members | |
![]() | |
Simulation * | sim_ptr = nullptr |
The sim_ptr member variable provides a point to the Simulation object that the Event is asociated with. More... | |
This class extends the Event class to create an specific type of exciton event.
+This class extends the Event class to create an specific type of exciton event.
simulation_ptr | is a pointer to the Simulation object that is associated with the event. |
simulation_ptr | is a pointer to the Simulation object that is associated with the event. |
This class extends the Event class to create an specific type of exciton event. +
This class extends the Event class to create an specific type of exciton event. More...
#include <Exciton.h>
Exciton_Polaron_Annihilation () | |
Constructs an empty event that is uninitialized. More... | |
Exciton_Polaron_Annihilation (Simulation *simulation_ptr) | |
Exciton_Polaron_Annihilation (Simulation *simulation_ptr) | |
Constructs and initializes an event. More... | |
void | calculateExecutionTime (const double prefactor, const double distance) |
Calculates and updates the execution time for the exciton-polaron annihilation event using the Dexter hopping mechanism. More... | |
std::string | getEventType () const |
Gets the event type string that denotes what type of Event class this is. More... | |
Gets the event type string that denotes what type of Event class this is. More... | |
![]() | |
virtual | ~Event () |
Default virtual destructor needed by the base class. More... | |
Event () | |
The default constructor that creates an empty Event object. More... | |
Event (Simulation *sim_ptr) | |
void | calculateExecutionTime (const double rate) |
Calculates and sets the execution time of the event. More... | |
Coords | getDestCoords () const |
Gets the coordinates of the event destination site. More... | |
Object * | getObjectPtr () const |
Gets a pointer to the Object object that is designated as the subject of the event. More... | |
Object * | getObjectTargetPtr () const |
Gets a pointer to the Object object that is designated as the target of the event. More... | |
double | getExecutionTime () const |
Gets the currently planned execution time of the event. More... | |
void | setDestCoords (const Coords &coords) |
Sets the desination coordinates of the event. More... | |
bool | setExecutionTime (const double time) |
Sets the execution time of the event. More... | |
void | setObjectPtr (Object *input_ptr) |
Sets the pointer to the Object object that is designated as the subject of the event. More... | |
void | setObjectTargetPtr (Object *input_ptr) |
Sets the pointer to the Object object that is designated as the target of the event. More... | |
Static Public Attributes | |
static const std::string | event_type = "Exciton-Polaron Annihilation" |
This static member variable holds the name of the event, which is "Exciton_Polaron_Annihilation". More... | |
-Additional Inherited Members | |
![]() | |
Simulation * | sim_ptr = nullptr |
The sim_ptr member variable provides a point to the Simulation object that the Event is asociated with. More... | |
This class extends the Event class to create an specific type of exciton event.
+This class extends the Event class to create an specific type of exciton event.
simulation_ptr | is a pointer to the Simulation object that is associated with the event. |
simulation_ptr | is a pointer to the Simulation object that is associated with the event. |
This is the complete list of members for Exciton_Recombination, including all inherited members.
calculateExecutionTime(const double rate) | Event | |
Event() | Event | |
Event(Simulation *sim_ptr) | Event | |
event_type | Exciton_Recombination | static |
Exciton_Recombination() | Exciton_Recombination | inline |
Exciton_Recombination(Simulation *simulation_ptr) | Exciton_Recombination | inline |
getDestCoords() const | Event | |
getEventType() const | Exciton_Recombination | inlinevirtual |
getExecutionTime() const | Event | |
getObjectPtr() const | Event | |
getObjectTargetPtr() const | Event | |
setDestCoords(const Coords &coords) | Event | |
setExecutionTime(const double time) | Event | |
setObjectPtr(Object *input_ptr) | Event | |
setObjectTargetPtr(Object *input_ptr) | Event | |
sim_ptr | Event | protected |
~Event() | Event | virtual |
event_type | Exciton_Recombination | static |
Exciton_Recombination() | Exciton_Recombination | inline |
Exciton_Recombination(Simulation *simulation_ptr) | Exciton_Recombination | inline |
getEventType() const | Exciton_Recombination | inline |
This class extends the Event class to create an specific type of exciton event. +
This class extends the Event class to create an specific type of exciton event. More...
#include <Exciton.h>
Exciton_Recombination () | |
Constructs an empty event that is uninitialized. More... | |
Exciton_Recombination (Simulation *simulation_ptr) | |
Exciton_Recombination (Simulation *simulation_ptr) | |
Constructs and initializes an event. More... | |
std::string | getEventType () const |
Gets the event type string that denotes what type of Event class this is. More... | |
Gets the event type string that denotes what type of Event class this is. More... | |
![]() | |
virtual | ~Event () |
Default virtual destructor needed by the base class. More... | |
Event () | |
The default constructor that creates an empty Event object. More... | |
Event (Simulation *sim_ptr) | |
void | calculateExecutionTime (const double rate) |
Calculates and sets the execution time of the event. More... | |
Coords | getDestCoords () const |
Gets the coordinates of the event destination site. More... | |
Object * | getObjectPtr () const |
Gets a pointer to the Object object that is designated as the subject of the event. More... | |
Object * | getObjectTargetPtr () const |
Gets a pointer to the Object object that is designated as the target of the event. More... | |
double | getExecutionTime () const |
Gets the currently planned execution time of the event. More... | |
void | setDestCoords (const Coords &coords) |
Sets the desination coordinates of the event. More... | |
bool | setExecutionTime (const double time) |
Sets the execution time of the event. More... | |
void | setObjectPtr (Object *input_ptr) |
Sets the pointer to the Object object that is designated as the subject of the event. More... | |
void | setObjectTargetPtr (Object *input_ptr) |
Sets the pointer to the Object object that is designated as the target of the event. More... | |
Static Public Attributes | |
static const std::string | event_type = "Exciton Recombination" |
This static member variable holds the name of the event, which is "Exciton_Recombination". More... | |
-Additional Inherited Members | |
![]() | |
Simulation * | sim_ptr = nullptr |
The sim_ptr member variable provides a point to the Simulation object that the Event is asociated with. More... | |
This class extends the Event class to create an specific type of exciton event.
+This class extends the Event class to create an specific type of exciton event.
simulation_ptr | is a pointer to the Simulation object that is associated with the event. |
simulation_ptr | is a pointer to the Simulation object that is associated with the event. |
- Excimontec
- v1.0-beta.3
-
- An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
This is the complete list of members for Lattice, including all inherited members.
-calculateDestinationCoords(const Coords &coords_initial, const int i, const int j, const int k, Coords &coords_dest) const | Lattice | |
calculateDX(const int x, const int i) const | Lattice | |
calculateDX(const Coords &coords_initial, const Coords &coords_dest) const | Lattice | |
calculateDY(const int y, const int j) const | Lattice | |
calculateDY(const Coords &coords_initial, const Coords &coords_dest) const | Lattice | |
calculateDZ(const int z, const int k) const | Lattice | |
calculateDZ(const Coords &coords_initial, const Coords &coords_dest) const | Lattice | |
calculateLatticeDistanceSquared(const Coords &coords_start, const Coords &coords_dest) const | Lattice | |
checkMoveValidity(const Coords &coords_initial, const int i, const int j, const int k) const | Lattice | |
clearOccupancy(const Coords &coords) | Lattice | |
generateRandomCoords() | Lattice | |
generateRandomX() | Lattice | |
generateRandomY() | Lattice | |
generateRandomZ() | Lattice | |
getHeight() const | Lattice | |
getLength() const | Lattice | |
getNumSites() const | Lattice | |
getSiteCoords(long int site_index) | Lattice | |
getSiteIndex(const Coords &coords) const | Lattice | |
getSiteIt(const Coords &coords) | Lattice | |
getUnitSize() const | Lattice | |
getVolume() const | Lattice | |
getWidth() const | Lattice | |
init(const Parameters_Lattice ¶ms, std::mt19937 *generator_ptr) | Lattice | |
isOccupied(const Coords &coords) const | Lattice | |
isXPeriodic() const | Lattice | |
isYPeriodic() const | Lattice | |
isZPeriodic() const | Lattice | |
Lattice() | Lattice | |
outputLatticeOccupancy() const | Lattice | |
setOccupied(const Coords &coords) | Lattice | |
setSitePointers(const std::vector< Site *> &input_ptrs) | Lattice |
- Excimontec
- v1.0-beta.3
-
- An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
This class contains the properties of a three-dimensional lattice and the functions needed to interact with it. - More...
- -#include <Lattice.h>
-Public Member Functions | |
Lattice () | |
Default constructor that creates an empty Lattice object. More... | |
void | init (const Parameters_Lattice ¶ms, std::mt19937 *generator_ptr) |
Initializes the Lattice object using the provided Parameters_Lattice input parameter struct. More... | |
void | calculateDestinationCoords (const Coords &coords_initial, const int i, const int j, const int k, Coords &coords_dest) const |
Calculates the destination coordinates when given the starting coordinates and the displacement vector (i,j,k). More... | |
int | calculateDX (const int x, const int i) const |
Calculates a coordinate adjustment factor if the x-direction periodic boundary is crossed. More... | |
int | calculateDX (const Coords &coords_initial, const Coords &coords_dest) const |
Calculates a coordinate adjustment factor if the x-direction periodic boundary is crossed. More... | |
int | calculateDY (const int y, const int j) const |
Calculates a coordinate adjustment factor if the y-direction periodic boundary is crossed. More... | |
int | calculateDY (const Coords &coords_initial, const Coords &coords_dest) const |
Calculates a coordinate adjustment factor if the y-direction periodic boundary is crossed. More... | |
int | calculateDZ (const int z, const int k) const |
Calculates a coordinate adjustment factor if the z-direction periodic boundary is crossed. More... | |
int | calculateDZ (const Coords &coords_initial, const Coords &coords_dest) const |
Calculates a coordinate adjustment factor if the z-direction periodic boundary is crossed. More... | |
int | calculateLatticeDistanceSquared (const Coords &coords_start, const Coords &coords_dest) const |
Calculates the shortest distance between a pair of coordinates in squared lattice units. More... | |
bool | checkMoveValidity (const Coords &coords_initial, const int i, const int j, const int k) const |
Checks to see if a generic move operation from the designated initial coordinates to a destination position specified by the displacement vector (i,j,k) is possible. More... | |
void | clearOccupancy (const Coords &coords) |
Clears the occupancy of the site located at the specified coordinates. More... | |
Coords | generateRandomCoords () |
Generates the coordinates for a randomly selected site in the lattice. More... | |
int | generateRandomX () |
Generates a random x coordinate that lies within the x-dimension size of the lattice. More... | |
int | generateRandomY () |
Generates a random y coordinate that lies within the y-dimension size of the lattice. More... | |
int | generateRandomZ () |
Generates a random z coordinate that lies within the z-dimension size of the lattice. More... | |
int | getHeight () const |
Gets the z-direction size of the lattice, the height. More... | |
int | getLength () const |
Gets the x-direction size of the lattice, the length. More... | |
long int | getNumSites () const |
Gets the number of sites contained in the lattice. More... | |
Coords | getSiteCoords (long int site_index) |
Gets the coordinates of the specified site. More... | |
long int | getSiteIndex (const Coords &coords) const |
Gets the vector index for the site corresponding to the input coordinates. More... | |
std::vector< Site * >::iterator | getSiteIt (const Coords &coords) |
Gets the vector iterator for the site corresponding to the input coordinates. More... | |
double | getUnitSize () const |
Gets the lattice unit size, which is used to convert lattice units into real space units. More... | |
double | getVolume () const |
Gets the volume of the lattice in cm^-3. More... | |
int | getWidth () const |
Gets the y-direction size of the lattice, the width. More... | |
bool | isOccupied (const Coords &coords) const |
Checks whether the site located at the input coordinates is occupied or not. More... | |
bool | isXPeriodic () const |
Checks whether the x-direction periodic boundaries are enabled or not. More... | |
bool | isYPeriodic () const |
Checks whether the y-direction periodic boundaries are enabled or not. More... | |
bool | isZPeriodic () const |
Checks whether the z-direction periodic boundaries are enabled or not. More... | |
void | outputLatticeOccupancy () const |
Prints to the command line which sites are occupied. More... | |
void | setOccupied (const Coords &coords) |
Sets the site located at the input coordinates to the occupied state. More... | |
bool | setSitePointers (const std::vector< Site *> &input_ptrs) |
Sets the member site pointer vector to the input site pointer vector. More... | |
This class contains the properties of a three-dimensional lattice and the functions needed to interact with it.
-The class makes use of the Parameters_Lattice struct to load the neccessary input parameters, the Coords struct to record the Cartesian coordinates of each lattice site, and the Site class to assign properties to each site.
Lattice::Lattice | -( | -) | -- |
Default constructor that creates an empty Lattice object.
-void Lattice::calculateDestinationCoords | -( | -const Coords & | -coords_initial, | -
- | - | const int | -i, | -
- | - | const int | -j, | -
- | - | const int | -k, | -
- | - | Coords & | -coords_dest | -
- | ) | -const | -
Calculates the destination coordinates when given the starting coordinates and the displacement vector (i,j,k).
-When the starting coordinates are near one or more of the lattice boundaries and periodic boundary conditions are enabled, the function detemines the destination coordinates across the periodic boundary and assigns the calculated Coords struct to the input coords_dest argument.
coords_initial | is the Coords struct tht designates the starting coordinates. |
i | is the displacement in the x-direction. |
j | is the displacement in the y-direction. |
k | is the displacement in the z-direction. |
coords_dest | is Coords struct that indicates the output destination coordinates. |
int Lattice::calculateDX | -( | -const int | -x, | -
- | - | const int | -i | -
- | ) | -const | -
Calculates a coordinate adjustment factor if the x-direction periodic boundary is crossed.
-x | is the starting x coordinate. |
i | is the displacement in the x-direction. |
int Lattice::calculateDX | -( | -const Coords & | -coords_initial, | -
- | - | const Coords & | -coords_dest | -
- | ) | -const | -
Calculates a coordinate adjustment factor if the x-direction periodic boundary is crossed.
-coords_initial | is the Coords struct that represents the starting coordinates. |
coords_dest | is the Coords struct that represents the destination coordinates. |
int Lattice::calculateDY | -( | -const int | -y, | -
- | - | const int | -j | -
- | ) | -const | -
Calculates a coordinate adjustment factor if the y-direction periodic boundary is crossed.
-y | is the starting y coordinate. |
j | is the displacement in the y-direction. |
int Lattice::calculateDY | -( | -const Coords & | -coords_initial, | -
- | - | const Coords & | -coords_dest | -
- | ) | -const | -
Calculates a coordinate adjustment factor if the y-direction periodic boundary is crossed.
-coords_initial | is the Coords struct that represents the starting coordinates. |
coords_dest | is the Coords struct that represents the destination coordinates. |
int Lattice::calculateDZ | -( | -const int | -z, | -
- | - | const int | -k | -
- | ) | -const | -
Calculates a coordinate adjustment factor if the z-direction periodic boundary is crossed.
-z | is the starting z coordinate. |
k | is the displacement in the z-direction. |
int Lattice::calculateDZ | -( | -const Coords & | -coords_initial, | -
- | - | const Coords & | -coords_dest | -
- | ) | -const | -
Calculates a coordinate adjustment factor if the z-direction periodic boundary is crossed.
-coords_initial | is the Coords struct that represents the starting coordinates. |
coords_dest | is the Coords struct that represents the destination coordinates. |
int Lattice::calculateLatticeDistanceSquared | -( | -const Coords & | -coords_start, | -
- | - | const Coords & | -coords_dest | -
- | ) | -const | -
Calculates the shortest distance between a pair of coordinates in squared lattice units.
-coords_start | is the Coords struct that represents the starting coordinates. |
coords_dest | is the Coords struct that represents the destination coordinates. |
bool Lattice::checkMoveValidity | -( | -const Coords & | -coords_initial, | -
- | - | const int | -i, | -
- | - | const int | -j, | -
- | - | const int | -k | -
- | ) | -const | -
Checks to see if a generic move operation from the designated initial coordinates to a destination position specified by the displacement vector (i,j,k) is possible.
-The main use of this function is used to check if a proposed move event crosses a non-periodic boundary.
coords_initial | is the Coords struct that represents the starting coordinates. |
i | is the displacement in the x-direction. |
j | is the displacement in the y-direction. |
k | is the displacement in the z-direction. |
void Lattice::clearOccupancy | -( | -const Coords & | -coords | ) | -- |
Clears the occupancy of the site located at the specified coordinates.
-coords | is the Coords struct that represents the coordinates of the site to be cleared. |
Coords Lattice::generateRandomCoords | -( | -) | -- |
Generates the coordinates for a randomly selected site in the lattice.
-int Lattice::generateRandomX | -( | -) | -- |
Generates a random x coordinate that lies within the x-dimension size of the lattice.
-int Lattice::generateRandomY | -( | -) | -- |
Generates a random y coordinate that lies within the y-dimension size of the lattice.
-int Lattice::generateRandomZ | -( | -) | -- |
Generates a random z coordinate that lies within the z-dimension size of the lattice.
-int Lattice::getHeight | -( | -) | -const | -
Gets the z-direction size of the lattice, the height.
-int Lattice::getLength | -( | -) | -const | -
Gets the x-direction size of the lattice, the length.
-long int Lattice::getNumSites | -( | -) | -const | -
Gets the number of sites contained in the lattice.
-Coords Lattice::getSiteCoords | -( | -long int | -site_index | ) | -- |
Gets the coordinates of the specified site.
-site_index | is the vector index of the input site |
long int Lattice::getSiteIndex | -( | -const Coords & | -coords | ) | -const | -
Gets the vector index for the site corresponding to the input coordinates.
-coords | is the Coords struct that represents the input coordinates. |
Gets the vector iterator for the site corresponding to the input coordinates.
-coords | is the Coords struct that represents the input coordinates. |
double Lattice::getUnitSize | -( | -) | -const | -
Gets the lattice unit size, which is used to convert lattice units into real space units.
-double Lattice::getVolume | -( | -) | -const | -
Gets the volume of the lattice in cm^-3.
- -int Lattice::getWidth | -( | -) | -const | -
Gets the y-direction size of the lattice, the width.
-void Lattice::init | -( | -const Parameters_Lattice & | -params, | -
- | - | std::mt19937 * | -generator_ptr | -
- | ) | -- |
Initializes the Lattice object using the provided Parameters_Lattice input parameter struct.
-params | is a Parameters_Lattice struct that contains all of the required parameters to initialize the Lattice object. |
generator_ptr | is a pointer to a Mersenne twister number generator. |
bool Lattice::isOccupied | -( | -const Coords & | -coords | ) | -const | -
Checks whether the site located at the input coordinates is occupied or not.
-coords | is a Coords struct that represents the input coordinates. |
bool Lattice::isXPeriodic | -( | -) | -const | -
Checks whether the x-direction periodic boundaries are enabled or not.
-bool Lattice::isYPeriodic | -( | -) | -const | -
Checks whether the y-direction periodic boundaries are enabled or not.
-bool Lattice::isZPeriodic | -( | -) | -const | -
Checks whether the z-direction periodic boundaries are enabled or not.
-void Lattice::outputLatticeOccupancy | -( | -) | -const | -
Prints to the command line which sites are occupied.
- -void Lattice::setOccupied | -( | -const Coords & | -coords | ) | -- |
Sets the site located at the input coordinates to the occupied state.
-coords | is the Coords struct that represents the input coordinates. |
bool Lattice::setSitePointers | -( | -const std::vector< Site *> & | -input_ptrs | ) | -- |
Sets the member site pointer vector to the input site pointer vector.
-input_ptrs | is the input site pointer vector |
This is the complete list of members for OSC_Sim, including all inherited members.
bool | init (const Parameters_OPV ¶ms, const int id) |
double | calculateDiffusionLength_avg () const |
double | calculateDiffusionLength_stdev () const |
std::vector< std::pair< double, double > > | calculateDOSCorrelation (const double cutoff_radius) |
void | calculateAllEvents () |
void | calculateDOSCorrelation () |
void | calculateDOSCorrelation (const double cutoff_radius) |
std::vector< double > | calculateTransitTimeDist (const std::vector< double > &data, const int counts) const |
double | calculateTransitTime_avg () const |
double | calculateTransitTime_stdev () const |
std::vector< double > | calculateMobilities (const std::vector< double > &transit_times) const |
double | calculateMobility_avg () const |
double | calculateMobility_stdev () const |
std::vector< double > | calculateMobilityData (const std::vector< double > &transit_times) const |
bool | checkFinished () const |
Checks whether or not the simulation has finished. More... | |
bool | checkParameters (const Parameters_OPV ¶ms) const |
void | createExciton (const Coords &coords, const bool spin) |
void | createElectron (const Coords &coords) |
void | createHole (const Coords &coords) |
bool | executeNextEvent () |
Executes the next event in the simulation. More... | |
std::vector< double > | getDiffusionData () const |
std::vector< std::pair< double, double > > | getDOSCorrelationData () const |
std::vector< double > | getDynamicsExcitonEnergies () const |
std::vector< double > | getDynamicsHoleMSDV () const |
std::vector< Event > | getEvents () const |
std::vector< double > | getExcitonDiffusionData () const |
std::vector< int > | getExcitonHopLengthData () const |
std::vector< double > | getExcitonLifetimeData () const |
double | getInternalField () const |
std::vector< double > | getSiteEnergies (const short site_type) const |
void | reassignSiteEnergies () |
![]() | |
virtual | ~Simulation () |
Default virtual destructor needed by the base class. More... | |
Simulation () | |
Default constructor that creates an empty Simulation object. More... | |
void | init (const Parameters_Simulation ¶ms, const int id) |
Initializes the Simulation object using the provided Parameters_Simulation struct containing the input parameters. More... | |
std::string | getErrorMessage () const |
Gets the saved error message. More... | |
int | getN_events () const |
Gets the number of events that are currently in the event list. More... | |
long int | getN_events_executed () const |
Gets the number of events that have been executed in the simulation. More... | |
int | getId () const |
Gets the processor ID number for the processor that is running the simulation. More... | |
int | getTemp () const |
Gets the value of the temperature parameter. More... | |
double | getTime () const |
Get the current simulation time in units of seconds. More... | |
double | getVolume () const |
Get the simulation box volume in cm^-3. More... | |
bool | isLoggingEnabled () const |
Checks whether or not logging is enabled. More... | |
double | rand01 () |
Generates a uniform random number from 0 to 1, not including 0. More... | |
void | setGeneratorSeed (const int seed) |
Sets the random number generator seed. More... | |
-Additional Inherited Members | |
![]() | |
std::list< Event * >::const_iterator | addEvent (Event *event_ptr) |
Adds a pointer to an Event object to the event list and returns the iterator to its position in the list. More... | |
void | addObject (Object *object_ptr) |
Adds a pointer to an Object object to the object list. More... | |
std::list< Event * >::const_iterator | chooseNextEvent () |
Searches the event list and determines which event will be executed next. More... | |
std::vector< Object * > | findRecalcObjects (const Coords &coords_start, const Coords &coords_dest) const |
Constructs and returns a vector of pointers to all Object objects that are to have their events recalculated/. More... | |
std::vector< Object * > | getAllObjectPtrs () const |
Returns a vector of pointers to all Object objects in the simulation. More... | |
void | moveObject (Object *object_ptr, const Coords &coords_dest) |
Moves the designated object to the designated destination coordinates. More... | |
void | removeEvent (Event *event_ptr) |
Removes an Event pointer from the event list. More... | |
void | removeObject (Object *object_ptr) |
Removes the Object pointer from the base simulation class. More... | |
void | setErrorMessage (const std::string &input_msg) |
Sets the error_msg member variable to the input string. More... | |
void | setObjectEvent (const Object *object_ptr, Event *event_ptr) |
Overwrites the Event pointer in the event list associated with the indicated Object to the input Event pointer. More... | |
void | setTime (const double input_time) |
Updates the simulation time with the input time. More... | |
![]() | |
std::mt19937 | generator |
Mersenne Twister random number generator. More... | |
std::ofstream * | Logfile |
Pointer to an output file stream that is used to print log messages to a logfile when logging is enabled. More... | |
Lattice | lattice |
The Lattice object represents a three-dimensional lattice, its boundary conditions, and its occupancy. More... | |
bool | Error_found = false |
The Error_found flag indicates whether or not there has been an error during one of the simulation operations. More... | |
std::string | error_msg |
The error_msg string holds a message with information about the error that has occured or is empty otherwise. More... | |
double OSC_Sim::calculateDiffusionLength_avg | +void OSC_Sim::calculateAllEvents | ( | ) | -const | +
double OSC_Sim::calculateDiffusionLength_stdev | +void OSC_Sim::calculateDOSCorrelation | ( | ) | -const | +
vector< pair< double, double > > OSC_Sim::calculateDOSCorrelation | +void OSC_Sim::calculateDOSCorrelation | ( | const double | cutoff_radius | ) | @@ -414,14 +323,14 @@
- Excimontec
- v1.0-beta.3
-
- An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
This is the complete list of members for Simulation, including all inherited members.
-addEvent(Event *event_ptr) | Simulation | protected |
addObject(Object *object_ptr) | Simulation | protected |
checkFinished() const =0 | Simulation | pure virtual |
chooseNextEvent() | Simulation | protected |
Error_found | Simulation | protected |
error_msg | Simulation | protected |
executeNextEvent()=0 | Simulation | pure virtual |
findRecalcObjects(const Coords &coords_start, const Coords &coords_dest) const | Simulation | protected |
generator | Simulation | protected |
getAllObjectPtrs() const | Simulation | protected |
getErrorMessage() const | Simulation | |
getId() const | Simulation | |
getN_events() const | Simulation | |
getN_events_executed() const | Simulation | |
getTemp() const | Simulation | |
getTime() const | Simulation | |
getVolume() const | Simulation | |
init(const Parameters_Simulation ¶ms, const int id) | Simulation | |
isLoggingEnabled() const | Simulation | |
lattice | Simulation | protected |
Logfile | Simulation | protected |
moveObject(Object *object_ptr, const Coords &coords_dest) | Simulation | protected |
rand01() | Simulation | |
removeEvent(Event *event_ptr) | Simulation | protected |
removeObject(Object *object_ptr) | Simulation | protected |
setErrorMessage(const std::string &input_msg) | Simulation | protected |
setGeneratorSeed(const int seed) | Simulation | |
setObjectEvent(const Object *object_ptr, Event *event_ptr) | Simulation | protected |
setTime(const double input_time) | Simulation | protected |
Simulation() | Simulation | |
~Simulation() | Simulation | virtual |
- Excimontec
- v1.0-beta.3
-
- An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
This abstract base class contains the basic properties of a KMC simulation and the functions needed to interact with it. - More...
- -#include <Simulation.h>
-Public Member Functions | |
virtual | ~Simulation () |
Default virtual destructor needed by the base class. More... | |
Simulation () | |
Default constructor that creates an empty Simulation object. More... | |
void | init (const Parameters_Simulation ¶ms, const int id) |
Initializes the Simulation object using the provided Parameters_Simulation struct containing the input parameters. More... | |
virtual bool | checkFinished () const =0 |
Checks whether or not the simulation has finished. More... | |
virtual bool | executeNextEvent ()=0 |
Executes the next event in the simulation. More... | |
std::string | getErrorMessage () const |
Gets the saved error message. More... | |
int | getN_events () const |
Gets the number of events that are currently in the event list. More... | |
long int | getN_events_executed () const |
Gets the number of events that have been executed in the simulation. More... | |
int | getId () const |
Gets the processor ID number for the processor that is running the simulation. More... | |
int | getTemp () const |
Gets the value of the temperature parameter. More... | |
double | getTime () const |
Get the current simulation time in units of seconds. More... | |
double | getVolume () const |
Get the simulation box volume in cm^-3. More... | |
bool | isLoggingEnabled () const |
Checks whether or not logging is enabled. More... | |
double | rand01 () |
Generates a uniform random number from 0 to 1, not including 0. More... | |
void | setGeneratorSeed (const int seed) |
Sets the random number generator seed. More... | |
-Protected Member Functions | |
std::list< Event * >::const_iterator | addEvent (Event *event_ptr) |
Adds a pointer to an Event object to the event list and returns the iterator to its position in the list. More... | |
void | addObject (Object *object_ptr) |
Adds a pointer to an Object object to the object list. More... | |
std::list< Event * >::const_iterator | chooseNextEvent () |
Searches the event list and determines which event will be executed next. More... | |
std::vector< Object * > | findRecalcObjects (const Coords &coords_start, const Coords &coords_dest) const |
Constructs and returns a vector of pointers to all Object objects that are to have their events recalculated/. More... | |
std::vector< Object * > | getAllObjectPtrs () const |
Returns a vector of pointers to all Object objects in the simulation. More... | |
void | moveObject (Object *object_ptr, const Coords &coords_dest) |
Moves the designated object to the designated destination coordinates. More... | |
void | removeEvent (Event *event_ptr) |
Removes an Event pointer from the event list. More... | |
void | removeObject (Object *object_ptr) |
Removes the Object pointer from the base simulation class. More... | |
void | setErrorMessage (const std::string &input_msg) |
Sets the error_msg member variable to the input string. More... | |
void | setObjectEvent (const Object *object_ptr, Event *event_ptr) |
Overwrites the Event pointer in the event list associated with the indicated Object to the input Event pointer. More... | |
void | setTime (const double input_time) |
Updates the simulation time with the input time. More... | |
-Protected Attributes | |
std::mt19937 | generator |
Mersenne Twister random number generator. More... | |
std::ofstream * | Logfile |
Pointer to an output file stream that is used to print log messages to a logfile when logging is enabled. More... | |
Lattice | lattice |
The Lattice object represents a three-dimensional lattice, its boundary conditions, and its occupancy. More... | |
bool | Error_found = false |
The Error_found flag indicates whether or not there has been an error during one of the simulation operations. More... | |
std::string | error_msg |
The error_msg string holds a message with information about the error that has occured or is empty otherwise. More... | |
This abstract base class contains the basic properties of a KMC simulation and the functions needed to interact with it.
-This abstract base class must be extended using a derived simulation class.
-
|
- -virtual | -
Default virtual destructor needed by the base class.
- -Simulation::Simulation | -( | -) | -- |
Default constructor that creates an empty Simulation object.
-
-
|
- -protected | -
-
|
- -pure virtual | -
Checks whether or not the simulation has finished.
-This is a pure virtual function in the base class that must be defined by any derived class.
Implemented in OSC_Sim.
- -
-
|
- -protected | -
Searches the event list and determines which event will be executed next.
-Chooses the event that has the smallest execution time.
-
|
- -pure virtual | -
Executes the next event in the simulation.
-This is a pure virtual function in the base class that must be defined by any derived class.
Implemented in OSC_Sim.
- -
-
|
- -protected | -
Constructs and returns a vector of pointers to all Object objects that are to have their events recalculated/.
-coords_start | is the Coords struct that designates the starting coordinates of an event. |
coords_dest | is the Coords struct that designates the destination coordinates of an event. |
-
|
- -protected | -
Returns a vector of pointers to all Object objects in the simulation.
- -string Simulation::getErrorMessage | -( | -) | -const | -
Gets the saved error message.
-int Simulation::getId | -( | -) | -const | -
Gets the processor ID number for the processor that is running the simulation.
-This is primarly used with MPI to differentiate between different simualtions running on different cores.
- -int Simulation::getN_events | -( | -) | -const | -
Gets the number of events that are currently in the event list.
-long int Simulation::getN_events_executed | -( | -) | -const | -
Gets the number of events that have been executed in the simulation.
- -int Simulation::getTemp | -( | -) | -const | -
Gets the value of the temperature parameter.
- -double Simulation::getTime | -( | -) | -const | -
Get the current simulation time in units of seconds.
- -double Simulation::getVolume | -( | -) | -const | -
Get the simulation box volume in cm^-3.
- -void Simulation::init | -( | -const Parameters_Simulation & | -params, | -
- | - | const int | -id | -
- | ) | -- |
Initializes the Simulation object using the provided Parameters_Simulation struct containing the input parameters.
-params | is a Parameters_Simulation struct that contains all of the required parameters to initialize the Simulation object. |
id | is the processor ID number for the processor that is running the simulation. |
bool Simulation::isLoggingEnabled | -( | -) | -const | -
Checks whether or not logging is enabled.
-This is primarily used for debugging purposes.
double Simulation::rand01 | -( | -) | -- |
Generates a uniform random number from 0 to 1, not including 0.
- -
-
|
- -protected | -
Removes an Event pointer from the event list.
-The Event objects are allocated and maintained by the derived Simulation class and only the Event pointers are stored in the base class. Removing the Event pointer does not delete the Event from the derived class, it only prevents the event from being executed in future simulation iterations.
event_ptr | is the Event pointer to be removed from the simulation. |
-
|
- -protected | -
Removes the Object pointer from the base simulation class.
-The Object objects are allocated and maintained by the derived Simulation class and only the Object pointers are stored in the base class. Removing the Object pointer does not delete the Object from the derived class. This function also calls the removeEvent function to remove the Event pointer associated with the Object and also communites with the Lattice object to clear the occupancy of the Site where the Object was located.
object_ptr | is the Object pointer to be removed from the simulation. |
-
|
- -protected | -
Sets the error_msg member variable to the input string.
-input_msg | is the string variable that will be saved in the error_msg member variable. |
void Simulation::setGeneratorSeed | -( | -const int | -seed | ) | -- |
Sets the random number generator seed.
-This is primarily used for testing with a set starting seed.
- -
-
|
- -protected | -
-
|
- -protected | -
Updates the simulation time with the input time.
-input_time | is the input time that will become the new current simulation time. |
-
|
- -protected | -
The Error_found flag indicates whether or not there has been an error during one of the simulation operations.
- -
-
|
- -protected | -
The error_msg string holds a message with information about the error that has occured or is empty otherwise.
- -
-
|
- -protected | -
Mersenne Twister random number generator.
- -
-
|
- -protected | -
The Lattice object represents a three-dimensional lattice, its boundary conditions, and its occupancy.
- -
-
|
- -protected | -
Pointer to an output file stream that is used to print log messages to a logfile when logging is enabled.
- -
- Excimontec
- v1.0-beta.3
-
- An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
This is the complete list of members for Site, including all inherited members.
-clearOccupancy() | Site | |
getObjectPtr() const | Site | |
isOccupied() const | Site | |
setObjectPtr(Object *input_ptr) | Site | |
setOccupied() | Site | |
Site() | Site | |
~Site() | Site | virtual |
- Excimontec
- v1.0-beta.3
-
- An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
This base class contains the basic properties of a lattice site and the functions needed to interact with it. - More...
- -#include <Site.h>
-Public Member Functions | |
virtual | ~Site () |
Default virtual destructor needed by the base class. More... | |
Site () | |
Default constructor that creates an empty Object object. More... | |
void | clearOccupancy () |
Clears the occupancy of the site. More... | |
Object * | getObjectPtr () const |
Gets the pointer to the Object object that occupies the site. More... | |
bool | isOccupied () const |
Checks whether the site is occupied or not. More... | |
void | setObjectPtr (Object *input_ptr) |
Sets the pointer to the occupying Object. More... | |
void | setOccupied () |
Sets the site to an occupied state. More... | |
This base class contains the basic properties of a lattice site and the functions needed to interact with it.
-This base class is designed to be used by the Lattice class to construct a lattice that will be used by a KMC simulation. This class is designed to for sites to have single occupancy, but multiple occupancy could potentially be implemented in a derived class.
-
|
- -virtual | -
Default virtual destructor needed by the base class.
- -Site::Site | -( | -) | -- |
Default constructor that creates an empty Object object.
- -void Site::clearOccupancy | -( | -) | -- |
Clears the occupancy of the site.
-This function also sets the Object pointer to nullptr.
- -Object * Site::getObjectPtr | -( | -) | -const | -
Gets the pointer to the Object object that occupies the site.
- -bool Site::isOccupied | -( | -) | -const | -
Checks whether the site is occupied or not.
-void Site::setObjectPtr | -( | -Object * | -input_ptr | ) | -- |
Sets the pointer to the occupying Object.
-Also sets the site to an occupied state.
- -void Site::setOccupied | -( | -) | -- |
Sets the site to an occupied state.
- -This is the complete list of members for Site_OSC, including all inherited members.
clearOccupancy() | Site | |
getEnergy() const | Site_OSC | inline |
getObjectPtr() const | Site | |
getEnergy() const | Site_OSC | inline |
getType() const | Site_OSC | inline |
isOccupied() const | Site | |
setEnergy(const double energy) | Site_OSC | inline |
setEnergyIt(const std::vector< double >::iterator it) | Site_OSC | inline |
setObjectPtr(Object *input_ptr) | Site | |
setOccupied() | Site | |
setType(const short site_type) | Site_OSC | inline |
Site() | Site | |
~Site() | Site | virtual |
setEnergy(const double energy) | Site_OSC | inline |
setEnergyIt(const std::vector< double >::iterator it) | Site_OSC | inline |
setType(const short site_type) | Site_OSC | inline |
void | setType (const short site_type) |
![]() | |
virtual | ~Site () |
Default virtual destructor needed by the base class. More... | |
Site () | |
Default constructor that creates an empty Object object. More... | |
void | clearOccupancy () |
Clears the occupancy of the site. More... | |
Object * | getObjectPtr () const |
Gets the pointer to the Object object that occupies the site. More... | |
bool | isOccupied () const |
Checks whether the site is occupied or not. More... | |
void | setObjectPtr (Object *input_ptr) |
Sets the pointer to the occupying Object. More... | |
void | setOccupied () |
Sets the site to an occupied state. More... | |
| Exciton_Dissociation |
| Parameters_OPV | Site | ||||
Exciton_Exciton_Annihilation | Parameters_Simulation | Site_OSC | ||||||
Coords | Exciton_Hop | Object | Polaron | |||||
| Exciton_Intersystem_Crossing | OSC_Sim | Polaron_Extraction | |||||
Exciton_Polaron_Annihilation |
| Exciton_Exciton_Annihilation |
| Parameters_OPV |
| |||
Exciton_Hop | Polaron | |||||||
Exciton | Exciton_Intersystem_Crossing | OSC_Sim | Polaron_Extraction | Site_OSC | ||||
Exciton_Creation | Exciton_Polaron_Annihilation |
| Polaron_Hop | |||||
Event | Exciton_Recombination | Polaron_Recombination | ||||||
Exciton |
| Parameters_Lattice |
| |||||
Exciton_Creation | Parameters_main | |||||||
Lattice | Simulation | |||||||
Exciton_Dissociation | Exciton_Recombination | Polaron_Recombination | ||||||
Parameters_main | ||||||||
Go to the source code of this file.
-Classes | |
struct | Parameters_Lattice |
This struct contains all of the main input parameters needed by the Lattice class. More... | |
+Files | |
file | Exciton.cpp |
file | Exciton.h [code] |
file | main.cpp |
file | OSC_Sim.cpp |
file | OSC_Sim.h [code] |
file | Polaron.cpp |
class | Lattice |
This class contains the properties of a three-dimensional lattice and the functions needed to interact with it. More... | |
file | Polaron.h [code] |
- Excimontec
- v1.0-beta.1
-
- An open-source lattice KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
- Excimontec
- v1.0-beta.3
-
- An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
- Excimontec
- v1.0-beta.3
-
- An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
- Excimontec
- v1.0-beta.3
-
- An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
- Excimontec
- v1.0-beta.3
-
- An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
- Excimontec
- v1.0-beta.3
-
- An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
- Excimontec
- v1.0-beta.3
-
- An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
- Excimontec
- v1.0-beta.3
-
- An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
- Excimontec
- v1.0-beta.3
-
- An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
- Excimontec
- v1.0-beta.3
-
- An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
- Excimontec
- v1.0-beta.3
-
- An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
- Excimontec
- v1.0-beta.3
-
- An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
- Excimontec
- v1.0-beta.3
-
- An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
- Excimontec
- v1.0-beta.3
-
- An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
- Excimontec
- v1.0-beta.3
-
- An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
- Excimontec
- v1.0-beta.3
-
- An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
- Excimontec
- v1.0-beta.3
-
- An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
- Excimontec
- v1.0-beta.3
-
- An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
CCoords | This simple struct contains Cartesian coordinates specified by integers x,y,z |
▼CEvent | This base class contains the basic properties of a KMC simulation event and the functions needed to interact with it |
CExciton_Creation | This class extends the Event class to create an specific type of exciton event |
CExciton_Dissociation | This class extends the Event class to create an specific type of exciton event |
CExciton_Exciton_Annihilation | This class extends the Event class to create an specific type of exciton event |
CExciton_Hop | This class extends the Event class to create an specific type of exciton event |
CExciton_Intersystem_Crossing | This class extends the Event class to create an specific type of exciton event |
CExciton_Polaron_Annihilation | This class extends the Event class to create an specific type of exciton event |
CExciton_Recombination | This class extends the Event class to create an specific type of exciton event |
CPolaron_Extraction | |
CPolaron_Hop | |
CPolaron_Recombination | |
CLattice | This class contains the properties of a three-dimensional lattice and the functions needed to interact with it |
▼CObject | This base class contains the basic properties of a KMC simulation object and the functions needed to interact with it |
CExciton | This class extends the Object class to create an exciton object to represent a singlet or triplet exciton in an organic semiconductor |
CPolaron | |
CParameters_Lattice | This struct contains all of the main input parameters needed by the Lattice class |
CParameters_main | |
▼CParameters_Simulation | This struct contains all of the main input parameters needed by the Simulation class |
CParameters_OPV | |
▼CSimulation | This abstract base class contains the basic properties of a KMC simulation and the functions needed to interact with it |
COSC_Sim | |
▼CSite | This base class contains the basic properties of a lattice site and the functions needed to interact with it |
CSite_OSC | |
▼CEvent | |
CExciton_Creation | This class extends the Event class to create an specific type of exciton event |
CExciton_Dissociation | This class extends the Event class to create an specific type of exciton event |
CExciton_Exciton_Annihilation | This class extends the Event class to create an specific type of exciton event |
CExciton_Hop | This class extends the Event class to create an specific type of exciton event |
CExciton_Intersystem_Crossing | This class extends the Event class to create an specific type of exciton event |
CExciton_Polaron_Annihilation | This class extends the Event class to create an specific type of exciton event |
CExciton_Recombination | This class extends the Event class to create an specific type of exciton event |
CPolaron_Extraction | |
CPolaron_Hop | |
CPolaron_Recombination | |
▼CObject | |
CExciton | This class extends the Object class to create an exciton object to represent a singlet or triplet exciton in an organic semiconductor |
CPolaron | |
CParameters_main | |
▼CParameters_Simulation | |
CParameters_OPV | |
▼CSimulation | |
COSC_Sim | |
▼CSite | |
CSite_OSC |
The goal of this project is to develop an open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more. The software is being developed in modern C++ and is optimized for efficient execution on high performance computing clusters using MPI. This software package uses object-oriented design and extends the KMC_Lattice framework.
+Kinetic Monte Carlo simulations are a powerful computational tool that have been used in concert with experiments and more detailed theoretical methods to understand and optimize organic semiconductor materials and devices. However, despite over 30 years of applying KMC tools to organic semiconductors, no widespread or standardized software tools have taken hold in the community. Instead, many research groups around the world have maintained private codebases of varying complexity, efficiency, and reliability. As a result, there have been large barriers to entry for new researchers and a lot of repeated effort throughout the community that would be much better off applied to pushing the capabilities of the technique and further refining the physical models.
+Excimontec represents an honest effort to bring the community together around a well-tested, optimized, reliable, and accessible open-source tool for performing KMC simulations of organic electronic devices. The software is being developed in modern C++ and is optimized for efficient execution on high performance computing clusters using MPI. This software package uses object-oriented design and extends the KMC_Lattice framework.
The current version (Excimontec v1.0-beta.3) is built with KMC_Lattice v2.0-beta.3 and allows the user to perform several simulation tests relevant for OPV and OLED devices. All major planned features that are to be included in v1.0 are now implemented and have undergone preliminary testing. However, this software tool is still under development, and as such, there may still be bugs that need to be squashed. Please report any bugs or submit feature requests in the Issues section.
-If you would like to contribute to the development of this project or would like some help in using the tool for your research, please contact me to discuss a collaboration. You can check out my KMC research and other work on Researchgate.
+The current release, Excimontec , is built with KMC_Lattice and allows the user to perform several simulation tests relevant for OPV and OLED devices. All major planned features that are to be included in v1.0 are now implemented and have undergone preliminary testing. However, this software tool is still under development, and as such, there may still be bugs that need to be squashed. Please report any bugs or submit feature requests in the Issues section.
+Major releases and other significant developments will be announced on the Excimontec: General News mailing list. If you are interested in keeping up to date with the development and application of this tool, please subscribe at the following link: Subscribe Here
+Excimontec is currently being tested on Ubuntu v14.04 with the GCC compiler (versions 4.7, 4.8, 4.9, 5, 6, 7, and 8) and on both Open MPI v1.6.5 and MPICH v3.04 using Travis CI.
+Branch | Status |
---|---|
Master | |
Development |
Code is being tested using googletest with test coverage assessment by Coveralls.
+Branch | Status |
---|---|
Master | |
Development |
If you would like to contribute to the development of this project or would like some help in using the tool for your research, please contact me (heibe) to discuss a collaboration. You can check out my KMC research and other work on r@ma ilaps .orgResearchgate.
+Have a quick question or want to chat about Excimontec? Join the discussion on Gitter:
This software tool uses Message Passing Interface (MPI) to utilize parallel computing power. As a result, using Excimontec requires that an MPI library is pre-installed on your system, and the final Excitmontec executable must be built on your specific system. We cannot provide pre-built binaries for your system. Contact your HPC admin to determine the protocols for building MPI applications on your HPC system. In many cases, the HPC system will already be configured for you, and the package comes with a default makefile that can be used with the gcc compiler.
+This software tool uses Message Passing Interface (MPI) to utilize parallel computing power. As a result, using Excimontec requires that an MPI library is pre-installed on your system, and the final Excitmontec executable must be built on your specific system. We cannot provide pre-built binaries for your system. Contact your HPC admin to determine the protocols for building MPI applications on your HPC system. In many cases, the HPC system will already be configured for you, and the package comes with a default makefile that can be used with the GCC compiler or the PGI compiler.
If you wish, you can also install MPI on your own personal workstation and then build Excimontec there as well. For development and preliminary simulation tests, sometimes it is more efficient to run on your own workstation instead of an HPC system. More information about common MPI packages can be found here:
Once you have an MPI library installed, to build Excimontec, copy the Excimontec directory to your machine, set it as your working directory, and run make
. Compilation flags have been set for GCC and PGI compilers. If you are using another compiler, you will need to edit the makefile and define your own compiler options. Once the normal build is successful, you should test Excimontec on your own hardware using the unit and system tests provided before you use the tool. Build the testing executable by running make test
. Once the test build is complete, navigate to the testing directory, and run ./Excimontec_tests.exe
. Please report any build or testing errors in the Issues section.
In most cases, your HPC system will use a job scheduler to manage the computing workload. For performing Excimontec simulations, it is recommended to submit batch jobs where you will request the resources needed to perform the simulation. An example batch script for the SLURM job scheduling system is provided with this package (slurm_script.sh). Similar batch scripts can also be written for TORQUE or other job schedulers.
+In most cases, your HPC system will use a job scheduler to manage the computing workload. For performing Excimontec simulations, it is recommended to submit batch jobs where you will request the resources needed to perform the simulation. An example batch script for the SLURM job scheduling system is provided with this package (slurm_script.sh). Similar batch scripts can also be written for other job schedulers.
Regardless of the job scheduler, the program execution command is essentially the same. Excimontec.exe takes one required input argument, which is the filename of the input parameter file. An example parameter file is provided with this package (parameters_default.txt).
-For example, within the batch script, to create a simulation that runs on 10 processors, an the execution command is:
-+mpiexec -n 10 Excimontec.exe parameters_default.txt
-
For example, within the batch script, to create a simulation that runs on 10 processors, an the execution command is:
+mpiexec -n 10 Excimontec.exe parameters_default.txt
In this example, the parameters_default.txt file that is located in the current working directory is loaded into the Excimontec program to determine what simulation to run.
Excimontec will create a number of different output files depending which test is chosen in the parameter file:
For Igor Pro users, I am developing an open-source procedures package for loading, analyzing, and plotting data from Excitmontec simulations called Excimontec_Analysis. This is a good starting point for managing the data generated by Excimontec, and the Igor Pro scripting environment provides a nice playground where users can perform more advanced data analysis as needed.
+For Igor Pro users, I am developing an open-source procedures package for loading, analyzing, and plotting data from Excimontec simulations called Excimontec_Analysis. This is a good starting point for managing the data generated by Excimontec, and the Igor Pro scripting environment provides a nice playground where users can perform more advanced data analysis as needed.
Public API documentation for the Excimontec package is still under development and can be viewed here.
- Excimontec
- v1.0-beta.3
-
- An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
This object-oriented C++ software package 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 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. The package is designed to be usable on a personal computer and on high performance computing clusters. A simple example implementation of this general KMC framework can be found in the KMC_Lattice_example package. To see a more complete implementation for simulating a complex system, check out the Excimontec software package that is used for simulating organic semiconductor materials and devices.
-For further reading about kinetic Monte Carlo simulations, a nice overview of the theory and algorithm can be found here:
-Introduction to the Kinetic Monte Carlo Method by Arthur Voter, Los Alamos National Lab
-If you would like to contribute to the development of this project or would like some help in building an efficient KMC simulation tool for your specific scientific problem, please contact me to discuss a collaboration. You can check out my KMC research and other work on Researchgate.
-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.
-Lattice class - This class implements a lattice, its boundary conditions, and keeps track of its occupancy.
-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.
-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.
-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.
-Utils - This file contain a number of useful utility functions, scientific constants, etc. that can then be used throughout the software package.
-Detailed API documentation for these classes and the entire KMC_Lattice package can be viewed here.
-The goal of this project is to develop an open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more. The software is being developed in modern C++ and is optimized for efficient execution on high performance computing clusters using MPI. This software package uses object-oriented design and extends the KMC_Lattice framework.
+Kinetic Monte Carlo simulations are a powerful computational tool that have been used in concert with experiments and more detailed theoretical methods to understand and optimize organic semiconductor materials and devices. However, despite over 30 years of applying KMC tools to organic semiconductors, no widespread or standardized software tools have taken hold in the community. Instead, many research groups around the world have maintained private codebases of varying complexity, efficiency, and reliability. As a result, there have been large barriers to entry for new researchers and a lot of repeated effort throughout the community that would be much better off applied to pushing the capabilities of the technique and further refining the physical models.
+Excimontec represents an honest effort to bring the community together around a well-tested, optimized, reliable, and accessible open-source tool for performing KMC simulations of organic electronic devices. The software is being developed in modern C++ and is optimized for efficient execution on high performance computing clusters using MPI. This software package uses object-oriented design and extends the KMC_Lattice framework.
The current version (Excimontec v1.0-beta.3) is built with KMC_Lattice v2.0-beta.3 and allows the user to perform several simulation tests relevant for OPV and OLED devices. All major planned features that are to be included in v1.0 are now implemented and have undergone preliminary testing. However, this software tool is still under development, and as such, there may still be bugs that need to be squashed. Please report any bugs or submit feature requests in the Issues section.
-If you would like to contribute to the development of this project or would like some help in using the tool for your research, please contact me to discuss a collaboration. You can check out my KMC research and other work on Researchgate.
+The current release, Excimontec , is built with KMC_Lattice and allows the user to perform several simulation tests relevant for OPV and OLED devices. All major planned features that are to be included in v1.0 are now implemented and have undergone preliminary testing. However, this software tool is still under development, and as such, there may still be bugs that need to be squashed. Please report any bugs or submit feature requests in the Issues section.
+Major releases and other significant developments will be announced on the Excimontec: General News mailing list. If you are interested in keeping up to date with the development and application of this tool, please subscribe at the following link: Subscribe Here
+Excimontec is currently being tested on Ubuntu v14.04 with the GCC compiler (versions 4.7, 4.8, 4.9, 5, 6, 7, and 8) and on both Open MPI v1.6.5 and MPICH v3.04 using Travis CI.
+Branch | Status |
---|---|
Master | |
Development |
Code is being tested using googletest with test coverage assessment by Coveralls.
+Branch | Status |
---|---|
Master | |
Development |
If you would like to contribute to the development of this project or would like some help in using the tool for your research, please contact me (heibe) to discuss a collaboration. You can check out my KMC research and other work on r@ma ilaps .orgResearchgate.
+Have a quick question or want to chat about Excimontec? Join the discussion on Gitter:
This software tool uses Message Passing Interface (MPI) to utilize parallel computing power. As a result, using Excimontec requires that an MPI library is pre-installed on your system, and the final Excitmontec executable must be built on your specific system. We cannot provide pre-built binaries for your system. Contact your HPC admin to determine the protocols for building MPI applications on your HPC system. In many cases, the HPC system will already be configured for you, and the package comes with a default makefile that can be used with the gcc compiler.
+This software tool uses Message Passing Interface (MPI) to utilize parallel computing power. As a result, using Excimontec requires that an MPI library is pre-installed on your system, and the final Excitmontec executable must be built on your specific system. We cannot provide pre-built binaries for your system. Contact your HPC admin to determine the protocols for building MPI applications on your HPC system. In many cases, the HPC system will already be configured for you, and the package comes with a default makefile that can be used with the GCC compiler or the PGI compiler.
If you wish, you can also install MPI on your own personal workstation and then build Excimontec there as well. For development and preliminary simulation tests, sometimes it is more efficient to run on your own workstation instead of an HPC system. More information about common MPI packages can be found here:
Once you have an MPI library installed, to build Excimontec, copy the Excimontec directory to your machine, set it as your working directory, and run make
. Compilation flags have been set for GCC and PGI compilers. If you are using another compiler, you will need to edit the makefile and define your own compiler options. Once the normal build is successful, you should test Excimontec on your own hardware using the unit and system tests provided before you use the tool. Build the testing executable by running make test
. Once the test build is complete, navigate to the testing directory, and run ./Excimontec_tests.exe
. Please report any build or testing errors in the Issues section.
In most cases, your HPC system will use a job scheduler to manage the computing workload. For performing Excimontec simulations, it is recommended to submit batch jobs where you will request the resources needed to perform the simulation. An example batch script for the SLURM job scheduling system is provided with this package (slurm_script.sh). Similar batch scripts can also be written for TORQUE or other job schedulers.
+In most cases, your HPC system will use a job scheduler to manage the computing workload. For performing Excimontec simulations, it is recommended to submit batch jobs where you will request the resources needed to perform the simulation. An example batch script for the SLURM job scheduling system is provided with this package (slurm_script.sh). Similar batch scripts can also be written for other job schedulers.
Regardless of the job scheduler, the program execution command is essentially the same. Excimontec.exe takes one required input argument, which is the filename of the input parameter file. An example parameter file is provided with this package (parameters_default.txt).
-For example, within the batch script, to create a simulation that runs on 10 processors, an the execution command is:
-+mpiexec -n 10 Excimontec.exe parameters_default.txt
-
For example, within the batch script, to create a simulation that runs on 10 processors, an the execution command is:
+mpiexec -n 10 Excimontec.exe parameters_default.txt
In this example, the parameters_default.txt file that is located in the current working directory is loaded into the Excimontec program to determine what simulation to run.
Excimontec will create a number of different output files depending which test is chosen in the parameter file:
For Igor Pro users, I am developing an open-source procedures package for loading, analyzing, and plotting data from Excitmontec simulations called Excimontec_Analysis. This is a good starting point for managing the data generated by Excimontec, and the Igor Pro scripting environment provides a nice playground where users can perform more advanced data analysis as needed.
+For Igor Pro users, I am developing an open-source procedures package for loading, analyzing, and plotting data from Excimontec simulations called Excimontec_Analysis. This is a good starting point for managing the data generated by Excimontec, and the Igor Pro scripting environment provides a nice playground where users can perform more advanced data analysis as needed.
Public API documentation for the Excimontec package is still under development and can be viewed here.
- Excimontec
- v1.0-beta.3
-
- An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
This namespace provides useful constants and utility functions. -More...
--Functions | |
std::vector< std::pair< double, double > > | calculateProbabilityHist (const std::vector< double > &data, int num_bins) |
Calculates the probability histogram for the input data vector using the input number of bins. More... | |
std::vector< std::pair< double, double > > | calculateProbabilityHist (const std::vector< double > &data, double bin_size) |
Calculates the probability histogram for the input data vector using the input bin size. More... | |
std::vector< std::pair< double, double > > | calculateProbabilityHist (const std::vector< double > &data, const double bin_size, const int num_bins) |
Calculates the probability histogram for the input data vector using the input bin size and input number of bins. More... | |
void | createExponentialDOSVector (std::vector< double > &data, const double mode, const double urbach_energy, std::mt19937 &gen) |
Creates a vector of doubles that has a custom asymmetric distribution with an exponential tail. More... | |
void | createGaussianDOSVector (std::vector< double > &data, const double mean, const double stdev, std::mt19937 &gen) |
Creates a vector of doubles that has a Gaussian distribution. More... | |
bool | importBooleanParam (const std::string &input, bool &error_status) |
Extracts a boolean value from a string containing "true" or "false". More... | |
double | integrateData (const std::vector< std::pair< double, double >> &data) |
Numerically integrates a vector of x-y data using the trapezoid rule. More... | |
double | interpolateData (const std::vector< std::pair< double, double >> &data, const double x_val) |
Linearly interpolates an x-y data set to determine the interpolated y-value corresponding to an input x-value. More... | |
std::vector< double > | MPI_calculateVectorAvg (const std::vector< double > &input_vector) |
Uses MPI to calculate the element-wise average vector from separate vectors coming from different processors. More... | |
std::vector< double > | MPI_calculateVectorSum (const std::vector< double > &input_vector) |
Uses MPI to calculate the element-wise sum vector from separate vectors coming from different processors. More... | |
std::vector< int > | MPI_calculateVectorSum (const std::vector< int > &input_vector) |
Uses MPI to calculate the element-wise sum vector from separate vectors coming from different processors. More... | |
std::vector< double > | MPI_gatherVectors (const std::vector< double > &input_vector) |
Uses MPI to gather vectors from separate processors to build one big vector containing all of the data. More... | |
std::string | removeWhitespace (const std::string &str) |
Removes leading and trailing spaces surrounding a string. More... | |
template<typename T > | |
double | array_avg (const T data[], const int array_size) |
This template function calculates and returns the average value in double format when given an array of numerical datatypes. More... | |
template<typename T > | |
double | array_stdev (const T data[], const int array_size) |
This template function calculates and returns the standard deviation in double format when given an array of numerical datatypes. More... | |
template<typename base_type > | |
base_type | intpow (const base_type base, const int exponent) |
This template function calculates and returns the results of an integer power operation on a base numerical datatype. More... | |
template<typename T > | |
void | outputVectorToFile (std::vector< T > &vec, std::string filename) |
This template function outputs the input data vector to a file with the specified filename. More... | |
template<typename T > | |
void | outputVectorToFile (std::vector< std::pair< T, T >> &vec, std::string filename) |
This template function outputs the input data pair vector to a file with the specified filename. More... | |
template<typename T > | |
void | removeDuplicates (std::vector< T > &vec) |
This template function efficienctly removes the duplicate entries from an input vector. More... | |
template<typename T , typename A > | |
double | vector_avg (const std::vector< T, A > &data) |
This template function calculates and returns the average value in double format when given a vector of numerical datatypes. More... | |
template<typename T , typename A > | |
double | vector_stdev (const std::vector< T, A > &data) |
This template function calculates and returns the standard deviation in double format when given a vector of numerical datatypes. More... | |
This namespace provides useful constants and utility functions.
-double Utils::array_avg | -( | -const T | -data[], | -
- | - | const int | -array_size | -
- | ) | -- |
This template function calculates and returns the average value in double format when given an array of numerical datatypes.
-data | is the array of numerical data. |
array_size | is the size of the input data array. |
double Utils::array_stdev | -( | -const T | -data[], | -
- | - | const int | -array_size | -
- | ) | -- |
This template function calculates and returns the standard deviation in double format when given an array of numerical datatypes.
-data | is the array of numerical data. |
array_size | is the size of the input data array. |
std::vector< std::pair< double, double > > Utils::calculateProbabilityHist | -( | -const std::vector< double > & | -data, | -
- | - | int | -num_bins | -
- | ) | -- |
Calculates the probability histogram for the input data vector using the input number of bins.
-Linearly spaced bins are automatically created from the minimum value to the maximum value of the data set. The function outputs bin-centered x values and probability y values in a x-y pair vector.
data | is the input data vector. |
num_bins | is the desired number of bins. |
std::vector< std::pair< double, double > > Utils::calculateProbabilityHist | -( | -const std::vector< double > & | -data, | -
- | - | double | -bin_size | -
- | ) | -- |
Calculates the probability histogram for the input data vector using the input bin size.
-Linearly spaced bins are automatically created from the minimum value to the maximum value of the data set. with the specified bin spacing. The function outputs bin-centered x values and probability y values in a x-y pair vector.
data | is the input data vector. |
bin_size | is the desired bin size. |
std::vector< std::pair< double, double > > Utils::calculateProbabilityHist | -( | -const std::vector< double > & | -data, | -
- | - | const double | -bin_size, | -
- | - | const int | -num_bins | -
- | ) | -- |
Calculates the probability histogram for the input data vector using the input bin size and input number of bins.
-Linearly spaced bins are automatically created starting from the minimum value of the data set. The function outputs bin-centered x values and probability y values in a x-y pair vector.
data | is the input data vector. |
num_bins | is the number of bins that will be created. |
bin_size | is the input bin size. |
void Utils::createExponentialDOSVector | -( | -std::vector< double > & | -data, | -
- | - | const double | -mode, | -
- | - | const double | -urbach_energy, | -
- | - | std::mt19937 & | -gen | -
- | ) | -- |
Creates a vector of doubles that has a custom asymmetric distribution with an exponential tail.
-The created distribution is Gaussian in the positive direction relative to the mode and exponential in the negative direction. On the Gaussian side, the standard deviation is calculated relative to the urbach energy chosen for the exponential side, so that the distribution function is continuous.
data | is the data vector where the random numbers will be placed, which must be preallocated to the desired size. |
mode | is the value of the peak of the distribution. |
urbach_energy | is the parameter that detemines the shape of the exponential tail side of the distribution. |
gen | is a Mersenne twister random number generator used to randomly draw numbers from the distribution. |
void Utils::createGaussianDOSVector | -( | -std::vector< double > & | -data, | -
- | - | const double | -mean, | -
- | - | const double | -stdev, | -
- | - | std::mt19937 & | -gen | -
- | ) | -- |
Creates a vector of doubles that has a Gaussian distribution.
-data | is the data vector where the numbers will be placed, which must be preallocated to the desired size. |
mean | is the position of the peak and center of the distribution. |
stdev | is the standard deviation of the distribution, which defines the width of the peak. |
gen | is a Mersenne twister random number generator used to randomly draw numbers from the distribution. |
bool Utils::importBooleanParam | -( | -const std::string & | -input, | -
- | - | bool & | -error_status | -
- | ) | -- |
Extracts a boolean value from a string containing "true" or "false".
-input | is the input string. |
error_status | is an input boolean that is used to indicate an error with the import process. |
double Utils::integrateData | -( | -const std::vector< std::pair< double, double >> & | -data | ) | -- |
Numerically integrates a vector of x-y data using the trapezoid rule.
-data | is the data vector containing x-y data pairs. |
double Utils::interpolateData | -( | -const std::vector< std::pair< double, double >> & | -data, | -
- | - | const double | -x_val | -
- | ) | -- |
Linearly interpolates an x-y data set to determine the interpolated y-value corresponding to an input x-value.
-data | is the data vector containing x-y data pairs. |
x_val | is the x-value that will be interpolated to. |
base_type Utils::intpow | -( | -const base_type | -base, | -
- | - | const int | -exponent | -
- | ) | -- |
This template function calculates and returns the results of an integer power operation on a base numerical datatype.
-base | is the base of the integer power operation and can be any numerical type. |
exponent | is the integer exponent for the integer power operation. |
std::vector< double > Utils::MPI_calculateVectorAvg | -( | -const std::vector< double > & | -input_vector | ) | -- |
Uses MPI to calculate the element-wise average vector from separate vectors coming from different processors.
-Each processor calls this function and sends an input vector. Upon function return, processor 0 receives the average vector and all of the other processors receive an empty vector.
input_vector | is the input data from the processor calling the function. |
std::vector< double > Utils::MPI_calculateVectorSum | -( | -const std::vector< double > & | -input_vector | ) | -- |
Uses MPI to calculate the element-wise sum vector from separate vectors coming from different processors.
-Each processor calls this function and sends an input vector. Upon function return, processor 0 receives the sum vector and all of the other processors receive an empty vector.
input_vector | is the input data from the processor calling the function. |
std::vector< int > Utils::MPI_calculateVectorSum | -( | -const std::vector< int > & | -input_vector | ) | -- |
Uses MPI to calculate the element-wise sum vector from separate vectors coming from different processors.
-Each processor calls this function and sends an input vector. Upon function return, processor 0 receives the sum vector and all of the other processors receive an empty vector.
input_vector | is the input data from the processor calling the function. |
std::vector< double > Utils::MPI_gatherVectors | -( | -const std::vector< double > & | -input_vector | ) | -- |
Uses MPI to gather vectors from separate processors to build one big vector containing all of the data.
-Each processor calls this function and sends an input vector. Upon function return, processor 0 receives the large data vector and all of the othe rprocessors receive an empty vector.
input_vector | is the input data from the processor calling the function. |
void Utils::outputVectorToFile | -( | -std::vector< T > & | -vec, | -
- | - | std::string | -filename | -
- | ) | -- |
This template function outputs the input data vector to a file with the specified filename.
-vec | is the input data vector. |
filename | is the input file name. |
void Utils::outputVectorToFile | -( | -std::vector< std::pair< T, T >> & | -vec, | -
- | - | std::string | -filename | -
- | ) | -- |
This template function outputs the input data pair vector to a file with the specified filename.
-vec | is the input data pair vector. |
filename | is the input file name. |
void Utils::removeDuplicates | -( | -std::vector< T > & | -vec | ) | -- |
This template function efficienctly removes the duplicate entries from an input vector.
-This algorithm allow efficient removal of duplicate vector objects when > or < comparison operators do not exist.
vec | is the input vector to be operated on. |
std::string Utils::removeWhitespace | -( | -const std::string & | -str | ) | -- |
Removes leading and trailing spaces surrounding a string.
-str | is the input string |
double Utils::vector_avg | -( | -const std::vector< T, A > & | -data | ) | -- |
This template function calculates and returns the average value in double format when given a vector of numerical datatypes.
-data | is the vector of numerical data. |
double Utils::vector_stdev | -( | -const std::vector< T, A > & | -data | ) | -- |
This template function calculates and returns the standard deviation in double format when given a vector of numerical datatypes.
-data | is the vector of numerical data. |
- Excimontec
- v1.0-beta.3
-
- An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
- Excimontec
- v1.0-beta.3
-
- An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
- Excimontec
- v1.0-beta.3
-
- An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
NUtils | This namespace provides useful constants and utility functions |
KMC_Lattice | |
Excimontec | |
Excimontec |
- Excimontec
- v1.0-beta.3
-
- An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
- Excimontec
- v1.0-beta.3
-
- An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
This simple struct contains Cartesian coordinates specified by integers x,y,z. - More...
- -#include <Utils.h>
-Public Member Functions | |
void | setXYZ (const int xval, const int yval, const int zval) |
Sets the x,y,z coordinates using the input values xval, yval, and zval. More... | |
bool | operator== (const Coords &rhs) const |
Defines the conditions when two Coords structs are deemed to be equal. More... | |
bool | operator!= (const Coords &rhs) const |
Defines the conditions when two Coords structs are deemed to be unequal. More... | |
-Public Attributes | |
int | x |
The x Cartesian coordinate. More... | |
int | y |
The y Cartesian coordinate. More... | |
int | z |
The z Cartesian coordinate. More... | |
This simple struct contains Cartesian coordinates specified by integers x,y,z.
-
-
|
- -inline | -
-
|
- -inline | -
-
|
- -inline | -
Sets the x,y,z coordinates using the input values xval, yval, and zval.
-xval | is the input x value. |
yval | is the input y value. |
zval | is the input z value. |
int Coords::x | -
The x Cartesian coordinate.
- -int Coords::y | -
The y Cartesian coordinate.
- -int Coords::z | -
The z Cartesian coordinate.
- -
- Excimontec
- v1.0-beta.3
-
- An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
This is the complete list of members for Parameters_Lattice, including all inherited members.
-Enable_periodic_x | Parameters_Lattice | |
Enable_periodic_y | Parameters_Lattice | |
Enable_periodic_z | Parameters_Lattice | |
Height | Parameters_Lattice | |
Length | Parameters_Lattice | |
Unit_size | Parameters_Lattice | |
Width | Parameters_Lattice |
- Excimontec
- v1.0-beta.3
-
- An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
This struct contains all of the main input parameters needed by the Lattice class. - More...
- -#include <Lattice.h>
-Public Attributes | |
bool | Enable_periodic_x |
Determines whether the x-direction periodic boundaries will be enabled. More... | |
bool | Enable_periodic_y |
Determines whether the y-direction periodic boundaries will be enabled. More... | |
bool | Enable_periodic_z |
Determines whether the z-direction periodic boundaries will be enabled. More... | |
int | Length |
Defines the desired x-direction size of the lattice. More... | |
int | Width |
Defines the desired y-direction size of the lattice. More... | |
int | Height |
Defines the desired z-direction size of the lattice. More... | |
double | Unit_size |
Defines the desired lattice unit size, which is used to convert lattice units into real space units. More... | |
This struct contains all of the main input parameters needed by the Lattice class.
-bool Parameters_Lattice::Enable_periodic_x | -
Determines whether the x-direction periodic boundaries will be enabled.
- -bool Parameters_Lattice::Enable_periodic_y | -
Determines whether the y-direction periodic boundaries will be enabled.
- -bool Parameters_Lattice::Enable_periodic_z | -
Determines whether the z-direction periodic boundaries will be enabled.
- -int Parameters_Lattice::Height | -
Defines the desired z-direction size of the lattice.
- -int Parameters_Lattice::Length | -
Defines the desired x-direction size of the lattice.
- -double Parameters_Lattice::Unit_size | -
Defines the desired lattice unit size, which is used to convert lattice units into real space units.
- -int Parameters_Lattice::Width | -
Defines the desired y-direction size of the lattice.
- -int | ToF_initial_polarons |
bool | Enable_ToF_random_placement |
bool | Enable_ToF_energy_placement |
double | ToF_placement_energy |
double | ToF_transient_start |
double | ToF_transient_end |
int | Coulomb_cutoff |
![]() | |
bool | Enable_logging |
Determines whether logging to a logfile during the simulation will be enabled or not. More... | |
bool | Enable_periodic_x |
Determines whether the x-direction periodic boundary conditions will be enabled or not in the Lattice. More... | |
bool | Enable_periodic_y |
Determines whether the y-direction periodic boundary conditions will be enabled or not in the Lattice. More... | |
bool | Enable_periodic_z |
Determines whether the z-direction periodic boundary conditions will be enabled or not in the Lattice. More... | |
int | Length |
Defines the desired x-direction size of the Lattice. More... | |
int | Width |
Defines the desired y-direction size of the Lattice. More... | |
int | Height |
Defines the desired z-direction size of the Lattice. More... | |
double | Unit_size |
Defines the desired resolution of the Lattice in units of nm. More... | |
int | Temperature |
Defines the desired temperature of the simulation in Kelvin. More... | |
bool | Enable_FRM |
Determines whether the first reaction method will be used or not. More... | |
bool | Enable_selective_recalc |
Determines whether the selective recalculation method will be used or not. More... | |
int | Recalc_cutoff |
Defines the desired event recalculation cutoff radius for the simulation in nm. More... | |
bool | Enable_full_recalc |
Determines whether the full recalculation method will be used or not. More... | |
std::ofstream * | Logfile |
Defines the desired output file stream pointer to the logfile. More... | |
bool Parameters_OPV::Enable_ToF_energy_placement | +
bool Parameters_OPV::Enable_ToF_random_placement | +
double Parameters_OPV::ToF_placement_energy | +
- Excimontec
- v1.0-beta.3
-
- An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
This is the complete list of members for Parameters_Simulation, including all inherited members.
-Enable_FRM | Parameters_Simulation | |
Enable_full_recalc | Parameters_Simulation | |
Enable_logging | Parameters_Simulation | |
Enable_periodic_x | Parameters_Simulation | |
Enable_periodic_y | Parameters_Simulation | |
Enable_periodic_z | Parameters_Simulation | |
Enable_selective_recalc | Parameters_Simulation | |
Height | Parameters_Simulation | |
Length | Parameters_Simulation | |
Logfile | Parameters_Simulation | |
Recalc_cutoff | Parameters_Simulation | |
Temperature | Parameters_Simulation | |
Unit_size | Parameters_Simulation | |
Width | Parameters_Simulation |
- Excimontec
- v1.0-beta.3
-
- An open-source KMC simulation software package for modeling organic semiconductor materials and devices, such as OPVs, OLEDs, and more
- |
-
This struct contains all of the main input parameters needed by the Simulation class. - More...
- -#include <Simulation.h>
-Public Attributes | |
bool | Enable_logging |
Determines whether logging to a logfile during the simulation will be enabled or not. More... | |
bool | Enable_periodic_x |
Determines whether the x-direction periodic boundary conditions will be enabled or not in the Lattice. More... | |
bool | Enable_periodic_y |
Determines whether the y-direction periodic boundary conditions will be enabled or not in the Lattice. More... | |
bool | Enable_periodic_z |
Determines whether the z-direction periodic boundary conditions will be enabled or not in the Lattice. More... | |
int | Length |
Defines the desired x-direction size of the Lattice. More... | |
int | Width |
Defines the desired y-direction size of the Lattice. More... | |
int | Height |
Defines the desired z-direction size of the Lattice. More... | |
double | Unit_size |
Defines the desired resolution of the Lattice in units of nm. More... | |
int | Temperature |
Defines the desired temperature of the simulation in Kelvin. More... | |
bool | Enable_FRM |
Determines whether the first reaction method will be used or not. More... | |
bool | Enable_selective_recalc |
Determines whether the selective recalculation method will be used or not. More... | |
int | Recalc_cutoff |
Defines the desired event recalculation cutoff radius for the simulation in nm. More... | |
bool | Enable_full_recalc |
Determines whether the full recalculation method will be used or not. More... | |
std::ofstream * | Logfile |
Defines the desired output file stream pointer to the logfile. More... | |
This struct contains all of the main input parameters needed by the Simulation class.
-bool Parameters_Simulation::Enable_FRM | -
Determines whether the first reaction method will be used or not.
- -bool Parameters_Simulation::Enable_full_recalc | -
Determines whether the full recalculation method will be used or not.
- -bool Parameters_Simulation::Enable_logging | -
Determines whether logging to a logfile during the simulation will be enabled or not.
- -bool Parameters_Simulation::Enable_periodic_x | -
Determines whether the x-direction periodic boundary conditions will be enabled or not in the Lattice.
- -bool Parameters_Simulation::Enable_periodic_y | -
Determines whether the y-direction periodic boundary conditions will be enabled or not in the Lattice.
- -bool Parameters_Simulation::Enable_periodic_z | -
Determines whether the z-direction periodic boundary conditions will be enabled or not in the Lattice.
- -bool Parameters_Simulation::Enable_selective_recalc | -
Determines whether the selective recalculation method will be used or not.
- -int Parameters_Simulation::Height | -
Defines the desired z-direction size of the Lattice.
- -int Parameters_Simulation::Length | -
Defines the desired x-direction size of the Lattice.
- -std::ofstream* Parameters_Simulation::Logfile | -
Defines the desired output file stream pointer to the logfile.
- -int Parameters_Simulation::Recalc_cutoff | -
Defines the desired event recalculation cutoff radius for the simulation in nm.
- -int Parameters_Simulation::Temperature | -
Defines the desired temperature of the simulation in Kelvin.
- -double Parameters_Simulation::Unit_size | -
Defines the desired resolution of the Lattice in units of nm.
- -int Parameters_Simulation::Width | -
Defines the desired y-direction size of the Lattice.
- -