Giter Site home page Giter Site logo

mzszym / oedes Goto Github PK

View Code? Open in Web Editor NEW
14.0 5.0 3.0 5.6 MB

Organic Electronic Device Simulator

Home Page: https://oedes.org/

License: GNU Affero General Public License v3.0

Python 100.00%
device-simulator simulation-modeling python physics electronics chemistry tcad-device-simulator tcad

oedes's Introduction

oedes - organic electronic device simulator

Travis-CI-badge Readthedocs-badge Binder-badge

This is work in progress. See doc/ for documentation, and examples/ for examples of use.

Installation

pip install oedes

It is recommended to run test suite after installing

python -c "import oedes; oedes.test()"

Example simulation

This builds and solves a model of abrupt PN junction:

import oedes
from oedes import models

# Define doping profile
def doping_profile(mesh, ctx, eq):
    Nd = ctx.param(eq, 'Nd')
    Na = ctx.param(eq,'Na')
    return oedes.ad.where(mesh.x<mesh.length*0.5,Nd,-Na)

# Define device model
poisson = models.PoissonEquation()
temperature = models.ConstTemperature()
electron = models.BandTransport(poisson=poisson, name='electron', z=-1, thermal=temperature)
hole = models.BandTransport(poisson=poisson, name='hole', z=1, thermal=temperature)
doping = models.FixedCharge(poisson, density=doping_profile)
semiconductor = models.Electroneutrality([electron, hole, doping],name='semiconductor')
recombination = models.DirectRecombination(semiconductor)
anode = models.OhmicContact(poisson, semiconductor, 'electrode0')
cathode = models.OhmicContact(poisson, semiconductor, 'electrode1')
equations=[ poisson, temperature, electron, hole, 
            doping, semiconductor, anode, cathode,
            recombination ]

# Define device parameters
params={
    'T':300,
    'epsilon_r':12,
    'Na':1e24,
    'Nd':1e24,
    'hole.mu':1,
    'electron.mu':1,
    'hole.energy':-1.1,
    'electron.energy':0,
    'electrode0.voltage':0,
    'electrode1.voltage':0,
    'hole.N0':1e27,
    'electron.N0':1e27,
    'beta':1e-9
}

# Discretize and solve discrete model
mesh = oedes.fvm.mesh1d(100e-9)
model = oedes.fvm.discretize(equations, mesh)
c=oedes.context(model)
c.solve(params)

# Plot bands and quasi Fermi potentials
import matplotlib.pylab as plt
p=c.mpl(plt.gcf(), plt.gca())
p.plot(['electron.Eband'],label='$E_c$')
p.plot(['hole.Eband'],label='$E_v$')
p.plot(['electron.Ef'],linestyle='--',label='$E_{Fn}$')
p.plot(['hole.Ef'],linestyle='-.',label='$E_{Fp}$')
p.apply_settings({'xunit':'n','xlabel':'nm'})
p.ax.legend(loc=0,frameon=False)
plt.show()

image

oedes's People

Contributors

mzszym avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

oedes's Issues

Physical quantities behind absorption() and 'generation.I'

Hallo!

In the photovoltaics steady-state example, to which physical quantities do 'absorption()' and 'generation.I' (part of the loaded standard parameters) prrecisely refere to?
Could it be the number of absorbed photons per volume element and time, and internal quantum efficiency, respectively?

Thanks a lot!

Bilayer photovoltaics

Hello!
I would like to use oedes for the simulation of organic bilayer photovoltaic cells in the steady state. Does oedes already offer a model dedicated to this scenario? If not, which moduls of the software would I have to adopt for such simulations?

In some more detail:
Starting from the (effectively homogeneous) bulkheterojunction PV cell with its boundary conditions as included e.g. in the oedes examples, I would like to "spacially" seperatethe sets of transport equations for electrons and holes into two distinct half spaces (incl. different band gaps / absorption coefficients). As it shouldn’t make a difference in the steady state, I would be pleased incorporating generation and recombination of charge carriers at the domain interface either

Thank you very much in advance!

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.