diff --git a/module2/exo1/toy_notebook_fr.ipynb b/module2/exo1/toy_notebook_fr.ipynb index e44b30337c08fe82c2773039582f964653222a25..2cb1b1fb585a21ca9d01c3314f2c02b25263c4df 100644 --- a/module2/exo1/toy_notebook_fr.ipynb +++ b/module2/exo1/toy_notebook_fr.ipynb @@ -2,37 +2,92 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.7822008619773912\n" + ] + }, + { + "data": { + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "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", - "__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", + "# 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", - "def _jupyter_nbextension_paths():\n", - " # src & dest are os paths, and so must use os.path.sep to work correctly on Windows.\n", - " # In contrast, require is a requirejs path, and thus must use `/` as the path separator.\n", - " return [dict(\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", + "# tension de diffusion (V)\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", + "print (Phi)\n", + "Va = 1. # tension appliquée (volts)\n", "\n", + "# largeur de la ZCE dans la base (um)\n", "\n", - "def get_template_path():\n", - " \"\"\"\n", - " Get absolute path of template notebook.\n", - " :return: the path if the template notebook\n", - " \"\"\"\n", - " return os.path.abspath(os.path.join(os.path.dirname(__file__), 'jupytemplate', 'template.ipynb'))" + "JC0 = (q * DnB / LnB) * NE\n", + "V = np.linspace(0.4, 1.5, 100)\n", + "XB = 1e4 * np.sqrt(2. * epsE * epsB * eps0 * NE * (Phi - V) / (q * NB * (NE * epsB + NB * epsE)))\n", + "JC = JC0 * np.exp(-(Phi - V) / kT) * (1. / (XB + (DnB / vsat)))\n", + "aB = 1./np.cosh(XB/LnB)\n", + "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": {