有机电子器件模拟器

oedes的Python项目详细描述


Travis-CI-badgeReadthedocs-badgeBinder-badge

这是正在进行的工作。有关文档,请参见doc/,有关使用示例,请参见examples/

安装

pip install oedes

建议在安装之后运行测试套件

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

示例模拟

建立并求解了pn结突变的模型:

importoedesfromoedesimportmodels# Define doping profiledefdoping_profile(mesh,ctx,eq):Nd=ctx.param(eq,'Nd')Na=ctx.param(eq,'Na')returnoedes.ad.where(mesh.x<mesh.length*0.5,Nd,-Na)# Define device modelpoisson=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 parametersparams={'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 modelmesh=oedes.fvm.mesh1d(100e-9)model=oedes.fvm.discretize(equations,mesh)c=oedes.context(model)c.solve(params)# Plot bands and quasi Fermi potentialsimportmatplotlib.pylabaspltp=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()
doc/fig/tutorial-pn.png

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java允许具有不同父类的类扩展类,而无需多重继承   java如何创建动态化的JScrollPane w/JPanel作为客户端?   java如何组织和命名包   在Java中读取属性文件   java无法解释的Android意图行为   在Java中动态执行多个BPEL文件的部署   ssl Java 6 SNI(服务器名称指示)?   java我们可以使用Robot框架自动化web和移动应用程序来执行并行执行   java for star pettern的循环   java为什么BinaryReader在线程中,从netty读取错误的数据包?   在java中将华氏度转换为摄氏度   使用Spark和java处理空值和引号编写CSV文件   Java中已排序日期到块的列表   visual studio代码VSCode Java不是linting或自动完成局部变量,而是自动完成Java快捷方式,如“sysout”