Giter Site home page Giter Site logo

bgeneto / ising_opv Goto Github PK

View Code? Open in Web Editor NEW

This project forked from mikeheiber/ising_opv

0.0 2.0 0.0 148 KB

This C++ software tool can be used to generate and analyze model bulk heterojunction morphologies in a parallel computing environment

License: MIT License

C++ 99.76% Makefile 0.24%

ising_opv's Introduction

Ising_OPV

This C++ software tool uses an Ising-based model to quickly and efficiently generate three-dimensional bulk heterojunction morphologies on a cubic lattice in a parallel computing environment. Generated or imported morphologies are then rigorously analyzed to determine important morphological features such as the domain size, tortuosity, interfacial area to volume ratio, and more. Development of this tool represents an attempt to standardize the Ising-based morphology model for the reliable creation and analysis of morphologies to be further used in kinetic Monte Carlo simulations of organic photovoltaic devices. If you would like some assistance in customizing this software tool for your particular research interest or application, please contact me to discuss collaboration options or feel free to contribute to the development of this open-source software tool.

Compiling

Compiling requires an MPI library for parallel processing.

More information about these packages can be found here:

Usage

Ising_OPV.exe takes one required input argument, which is the filename of the input parameter file.

An example parameter file is provided with parameters_default.txt

As an example, to create one morphology on a single processor, the command is:

Ising_OPV.exe parameters_default.txt

To run in a parallel processing environment and create 10 morphologies on 10 processors, the command is:

mpiexec -n 10 Ising_OPV.exe parameters_default.txt

An optional second input argument is the path to an existing morphology file for importing a previously created morphology into the program for further modifications.

As an example, to import a compressed morphology that is in current working directory on a single processor, the command is:

Ising_OPV.exe parameters_default.txt ./morphology_0_compressed.txt

To import an entire set of morphologies in a parallel processing environment:

mpiexec -n 10 Ising_OPV.exe parameters_default.txt ./morphology_#_compressed.txt

This command will import 10 morphologies (morphology_0_compressed.txt, morphology_1_compressed.txt, etc) and assign one to each processor.

These statements can be implemented into batch scripts for running Ising_OPV in a supercomputing environment.

Output

Ising_OPV will create several output files:

  • analysis_summary.txt -- This text file will contain statistics about the set of morphologies that has been created.
  • correlation_data_#.txt -- This text file will be created for each morphology when the correlation function calculation is enabled.
  • correlation_data_avg.txt -- This text file will be created when the correlation function calculation is enabled and will contain the average correlation function from all morphologies in the set
  • depth_dependent_data_#.txt -- This text file wll be created for each morphology when the depth dependent calculation is enabled and will contain depth dependent blend composition and domain size data for each site type in the lattice
  • depth_dependent_data_avg.txt -- This text file wll be created for each morphology when the depth dependent calculation is enabled and will contain average depth dependent blend composition and domain size data for each site type in the lattice for the whole morphology set
  • end-to-end_path_data1.txt and end-to-end_path_data2.txt -- These text files will be created when tortuosity calculation is enabled and will contain the lengths of the shortest end-to-end paths through each domain type.
  • interfacial_distance_histograms.txt -- This text file will be created when interfacial distance histogram calculation is enabled and will contain histogram data for each domain type.
  • morphology_#_compressed.txt -- This text file will be created for each morphology generated in the est and stores the data for that morphology.
  • tortuostiy_histograms.txt -- This text file will be created when tortuosity calculation is enabled and contain the overall tortuosity histogram data for each domain type.

Additional Information

Several peer-reviewed publications discuss the development and application of this software tool:

Acknowledgements

Thank you to Dr. Dean DeLongchamp at NIST for providing access to computing resources that support the ongoing development of v4.0. Development of v4.0 is supported by financial assistance award 70NANB14H012 from U.S. Department of Commerce, National Institute of Standards and Technology as part of the Center for Hierarchical Materials Design (CHiMaD).

Thank you to Klaus Kister for contributing to the development of the updated domain smoothing algorithm and the simplified morphology import procedure in v2.0 and help with testing for v3.0.

Thank you to Prof. Ali Dhinojwala and Prof. Mesfin Tsige at The University of Akron for providing access to computing resources that supported development of v1.0.

Thank you to Prof. Vladimir Dyakonov at the University of Würzburg and Prof. Carsten Deibel at Chemitz University of Technology for providing access to computing resources that supported development of v2.0.

Thank you to Prof. Thuc-Quyen Nguyen at the University of California, Santa Barbara for providing access to computing resources that supported development of v3.x. The development of v3.x used the Extreme Science and Engineering Discovery Environment (XSEDE), which is supported by National Science Foundation grant number ACI-1053575.

ising_opv's People

Contributors

mikeheiber avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.