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. If you would like to contribute to the development of this project, please see the contributing instructions.
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 latest developments, please subscribe at the following link: Subscribe Here
- 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.
- Donor and acceptor materials can take on an uncorrelated Gaussian density of states, a correlated Gaussian density of states with different correlation functions, or an uncorrelated exponential density of states model.
- Site energies at the donor-acceptor interface or in mixed regions can be modified using an interfacial energy shift model to generate an energy cascade.
- Custom site energies can also be imported from a text file to allow more exotic DOS distributions or implement the electrostatic potential due to fixed ionic dopants.
- 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.
- Steady state charge transport simulations of holes can be performed on neat, random blend, or bulk heterojunction blends films with 3D periodic boundaries to estimate quasi-equilibrium properties including the steady state mobility, transport energy, and equilibration energy under different test conditions. Output of density of states and density of occupied states data can also be used to calculate the Fermi energy. The Fermi energy and transport energy can then be used to calculate the Seebeck coefficient to investigate thermoelectric properties.
- Exciton diffusion simulations can be performed on any film architecture.
- Internal quantum efficiency simulations can be performed on bilayer, random blend, or bulk heterojunction blend films.
- Simulate complex exciton dynamics with events for intersystem crossing between singlet and triplet states as well as exciton-exciton and exciton-polaron annihilation events.
- Choose between Miller-Abrahams or Marcus models for polaron hopping.
- Charge carrier delocalization can be modeled with a spherical Gaussian delocalization model.
- Choose between several KMC algorithms (first reaction method, selective recalculation method, or full recalculation method).
For more details and examples of each type of simulation test, please see the User Manual
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 Excimontec 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 Excimontec comes with a default makefile that can be used with the GCC compiler, the PGI compiler, or the clang compiler. If your system uses another compiler, you will need to edit the makefile and define your own compiler options.
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.
For detailed installation instructions, please see the User Manual.
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 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, 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 which simulation to run.
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.
- dynamics_average_transients.txt -- When performing a dynamics test, calculated exciton, electron, and hole transients will be output to this file.
- ToF_average_transients.txt -- When performing a time-of-flight charge transport test, calculated current transients, mobility relaxation transients, and energy relaxation transients will be output to this file.
- ToF_transit_time_hist.txt -- When performing a time-of-flight charge transport test, the resulting polaron transit time probability histogram 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 saved 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.
- DOS_data.txt - When performing a steady state charge transport test, the density of states distribution is calculated and output to this file.
- DOS_Coulomb_data.txt - When performing a steady state charge transport test, the density of states distribution, where the site energies include the Coulomb potential from the polarons, is calculated and output to this file.
- DOOS_data.txt - When performing a steady state charge transport test, the density of occupied states distribution is calculated and output to this file.
- DOOS_Coulomb_data.txt - When performing a steady state charge transport test, the density of occupied states distribution, where the site energies include the Coulomb potential from the polarons, is calculated and output to this file.
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.
If you would like some help in using or customizing the tool for your research, please contact me (heiber@mailaps.org) to discuss a collaboration. You can check out my research using this tool and other work on Researchgate.
Have a quick question or want to chat about Excimontec? Join the discussion on Gitter:
M. C. Heiber, J. Open Source Software 5, 2307 (2020). [ResearchGate]
In addition, please also cite the DOI for the specific version that you used from Zenodo.org.
Below are some recommended resources for starting to learn about KMC modeling of organic electronic devices:
M. C. Heiber, A. Wagenpfahl, and C. Deibel, "Advances in Modeling the Physics of Disordered Organic Electronic Devices" In Handbook of Organic Materials for Electronic and Photonic Devices, Woodhead Publishing Series in Electronic and Optical Materials, edited by O. Ostroverkhova (Woodhead Publishing, 2019) 2nd Ed., Chap. 10. [ResearchGate]
C. Groves, "Simulating Charge Transport in Organic Semiconductors and Devices: A Review" Rep. Prog. Phys. 80, 026502 (2017).[ResearchGate]
C. Groves, "Developing Understanding of Organic Photovoltaic Devices: Kinetic Monte Carlo Models of Geminate and Non-geminate Recombination, Charge Transport and Charge Extraction" Energy Environ. Sci. 6, 32020 (2013).[ResearchGate]
The current release, Excimontec v1.0.0, is built with KMC_Lattice v2.1 and allows the user to perform several simulation tests relevant for OPV and OLED devices. Please report any bugs or submit feature requests in the Issues section. Please see the Changelog for a detailed listing of previous and upcoming changes.
Excimontec is currently being tested on Ubuntu (v16.04 and v18.04) with the GCC compiler (v5, v6, v7, v8, and v9) the clang compiler (v7) and on both Open MPI (v1.10.2) and MPICH (v3.2 and v3.3) using Travis CI.
Branch | Status |
---|---|
Master | |
Development |
Code is being tested using googletest with test coverage assessment by Coveralls.
Branch | Status |
---|---|
Master | |
Development |
Public API documentation for the Excimontec package can be viewed here.
Thank you to Dr. Dean M. DeLongchamp at NIST for providing access to computing resources that have supported the development of v1.0. Development of v1.0 has been primarily supported by financial assistance award 70NANB14H012 from U.S. Department of Commerce, National Institute of Standards and Technology as part of the Center for Hierarchical Materials Design (CHiMaD).