Program for NP Jonction

parent 129293ef
...@@ -2,37 +2,92 @@ ...@@ -2,37 +2,92 @@
"cells": [ "cells": [
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": 1,
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1.7822008619773912\n"
]
},
{
"data": {
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [ "source": [
"import os\n", "# Mon program\n",
"import math\n",
"import numpy as np\n",
"import scipy as sp\n",
"import matplotlib as mpl\n",
"import matplotlib.pyplot as pl\n",
"\n", "\n",
"__version__ = '0.3.0'\n", "kT = 0.0258 # 0.0258 eV à température ambiante\n",
"eps0 = 8.85e-10 # permittivité du vide en F/cm\n",
"q = 1.602e-19 # charge élementaire en C\n",
"\n", "\n",
"# remplacer les valeur par celles de l'AlGaAs/GaAs\n",
"# à rechercher... par exemple ici:\n",
"# http://www.ioffe.ru/SVA/NSM/Semicond/AlGaAs/index.html\n",
"# http://www.ioffe.ru/SVA/NSM/Semicond/GaAs/index.html\n",
"NE = 1e19 # dopage de l'émetteur 1/cm3\n",
"NB = 1e19 # densité d'états dans la BC dans la base (1/cm3)\n",
"niE = niB = 1e4 # densités intrinsèques dans l'émetteur et la base resp. (1/cm3)\n",
"NCB = 1e19 # densité d'états dans la BC dans la base (1/cm3)\n",
"NVB = 1e19 # densité d'états dans la BV dans la base (1/cm3)\n",
"NCE = 1e19 # densité d'états dans la BC dans l'émetteur (1/cm3)\n",
"NVE = 1e19 # densité d'états dans la BV dans l'émetteur (1/cm3)\n",
"DEV = 0. # discontinuité de la BV (eV)\n",
"DEC = 0. # discontinuité de la BC (eV)\n",
"DEg = 0. # discontinuité du gap (eV)\n",
"DnB = 200. # constante de diffusion dans la base (cm2/s)\n",
"LnB = 10. # longueur de diffusion dans la base (um)\n",
"vsat = 1e7 # vitesse de saturation (cm/s)\n",
"epsE = epsB = 10. # permittivité relative\n",
"\n", "\n",
"def _jupyter_nbextension_paths():\n", "# tension de diffusion (V)\n",
" # src & dest are os paths, and so must use os.path.sep to work correctly on Windows.\n", "Phi = kT * math.log(NE * NB / (niE * niB)) + 0.5 * kT * math.log(NCB * NVE / (NCE * NVB)) + 0.5 * (0.5 * DEg - DEV)\n",
" # In contrast, require is a requirejs path, and thus must use `/` as the path separator.\n", "print (Phi)\n",
" return [dict(\n", "Va = 1. # tension appliquée (volts)\n",
" section='notebook',\n",
" # src is relative to current module\n",
" src='jupytemplate',\n",
" # dest directory is in the `nbextensions/` namespace\n",
" dest='jupytemplate',\n",
" # require is also in the `nbextensions/` namespace\n",
" # must use / as path.sep\n",
" require='jupytemplate/main',\n",
" )]\n",
"\n", "\n",
"# largeur de la ZCE dans la base (um)\n",
"\n", "\n",
"def get_template_path():\n", "JC0 = (q * DnB / LnB) * NE\n",
" \"\"\"\n", "V = np.linspace(0.4, 1.5, 100)\n",
" Get absolute path of template notebook.\n", "XB = 1e4 * np.sqrt(2. * epsE * epsB * eps0 * NE * (Phi - V) / (q * NB * (NE * epsB + NB * epsE)))\n",
" :return: the path if the template notebook\n", "JC = JC0 * np.exp(-(Phi - V) / kT) * (1. / (XB + (DnB / vsat)))\n",
" \"\"\"\n", "aB = 1./np.cosh(XB/LnB)\n",
" return os.path.abspath(os.path.join(os.path.dirname(__file__), 'jupytemplate', 'template.ipynb'))" "JB = JC * (1. - aB) / aB\n",
"Beta = JC / JB\n",
"pl.semilogy(V, JC)\n",
"pl.semilogy(V, JB)\n",
"pl.legend([\"JB, JC\"])\n",
"pl.xlabel(\"Tension (volts)\")\n",
"pl.ylabel(\"Courant (A/cm2)\")\n",
"pl.show()"
] ]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
} }
], ],
"metadata": { "metadata": {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment