Skip to content
Snippets Groups Projects
01-intro.ipynb 5.3 KiB
Newer Older
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# B.CTC: Einführung und Tests\n",
    "\n",
    "Dieses Notebook ist ein vereinfachtes Beispiel für die Notebooks, die Sie in den kommenden Wochen zur Veranschaulichung der Inhalte erhalten werden. Jupyter Notebooks bestehen aus Zellen, die entweder Text (wie diese hier) oder ausführbaren Code enthalten können. Sie werden in diesem Modul keine eigenen Programme selbst schreiben, aber Anpassungen an bestehende Zellen machen.\n",
    "\n",
    "Sie können jedes Notebook nach Ihrem Belieben verändern. Machen Sie sich keine Sorgen, dass etwas danach nicht mehr funktioniert; Sie können das ursprüngliche Notebook jederzeit neu herunterladen. Bitte installieren Sie keine neue Software, außer eine Aufgabe fordert Sie explizit dazu auf."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Module laden\n",
moritz.buchhorn's avatar
moritz.buchhorn committed
    "Die folgende Zelle ist eine Code-Zelle, das heißt sie enthält ausführbaren Python-Code. In diesem Fall befinden sich hier die Importbefehle für Module, die in der restlichen Übung benutzt werden. Führen Sie die Zelle aus. Wenn keine Fehlermeldung auftritt, ist alles gut gelaufen und die Module sind jetzt im Notebook verfügbar.\n",
    "\n",
    "Python-Module stellen Funktionen oder Objekte bereit, die wir nicht selbst programmieren wollen. In den nächsten Wochen werden wir einige Module häufiger verwenden, insbesondere Numpy und Plotly."
   ]
  },
  {
   "cell_type": "code",
moritz.buchhorn's avatar
moritz.buchhorn committed
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import plotly.graph_objects as go"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Plotly\n",
    "Plotly ist ein Python-Modul zum Darstellen von Graphen. In der nächsten Zelle werden wir ein paar Datenpunkte für eine einfache Gausskurve erzeugen und diese anschließend mit Plotly plotten."
   ]
  },
  {
   "cell_type": "code",
moritz.buchhorn's avatar
moritz.buchhorn committed
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def gaussian(x, d, a):\n",
    "    \"\"\"Definiert eine Funktion, die den Wert einer Gaußkurve am Punkt x zurückliefert, mit den Parametern d und a\"\"\"\n",
    "    return d * np.exp(-a * x**2)\n",
    "\n",
    "x_values = np.linspace(-5, 5, 100) # np.linspace erzeugt eine Liste von 100 Werten mit gleichem Abstand zwischen -5 und 5\n",
    "y_values_11 = np.array([gaussian(x, 1, 1) for x in x_values]) # erzeugt eine neue Liste mit den Funktionswerten von gaussian an x_values\n",
    "y_values_12 = np.array([gaussian(x, 1, 2) for x in x_values]) # erzeugt eine neue Liste mit den Funktionswerten von gaussian an x_values"
   ]
  },
  {
   "cell_type": "code",
moritz.buchhorn's avatar
moritz.buchhorn committed
   "execution_count": null,
   "metadata": {},
moritz.buchhorn's avatar
moritz.buchhorn committed
   "outputs": [],
   "source": [
    "fig = go.Figure() # erzeugt einen leeren Graphen\n",
    "\n",
moritz.buchhorn's avatar
moritz.buchhorn committed
    "fig.update_layout(title=\"Gaußkurven f(x) = d exp(-a x<sup>2</sup>)\",\n",
    "                  xaxis_title=\"x\",\n",
    "                  yaxis_title=\"y\",\n",
    "                  template=\"simple_white\") # passt die Titel an\n",
    "\n",
    "fig.add_trace(go.Scatter(x=x_values, y=y_values_11, mode='lines', name=\"f(x), d = 1, a = 1\")) # fügt dem Graphen eine Linie hinzu\n",
    "fig.add_trace(go.Scatter(x=x_values, y=y_values_12, mode='lines', name=\"f(x), d = 1, a = 2\")) # eine weitere Linie\n",
    "\n",
    "fig.show() # zeigt den Graphen im Notebook"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
moritz.buchhorn's avatar
moritz.buchhorn committed
    "## ORCA\n",
    "Im Quantenchemie-Teil dieses Moduls werden wir alle quantenchemischen Rechnungen mit ORCA durchführen. ORCA ist eine voll ausgestattete Quantenchemie-Software, die auch in der Forschung verwendet wird. Um eine Rechnung durchzuführen, wird ein _input file_ benötigt, also eine Textdatei, in der wir die Details unserer Rechnung spezifizieren. Sie werden in den nächsten Wochen lernen, welche Informationen benötigt werden, für heute können Sie einfach die beiliegende Datei **h2.inp** benutzen.\n",
    "\n",
moritz.buchhorn's avatar
moritz.buchhorn committed
    "Öffnen Sie einen Terminal-Tab im Jupyterhub und gehen Sie in den Ordner für die Übung (`cd 01-intro`). Sie können sich mit `ls` den Inhalt des aktuellen Ordners anzeigen lassen. Wenn sie im richtigen Ordner sind und die Datei gefunden haben, führen Sie ORCA aus und übergeben das _input file_ als Parameter: `orca h2.inp > h2.out`. Mit dem `>` wird die erzeugte Textausgabe direkt in eine Datei umgeleitet, in dem Fall mit dem Namen **h2.out**. Wenn der Befehl ohne Fehlermeldung lief, können sich diese neue Datei im Editor anschauen. Die Rechnung hat weitere Dateien erzeugt, die für uns zunächst nicht wichtig sind.\n",
    "\n",
    "Sie finden im _output file_ in der Regel alle wichtigen Informationen, wie die elektronische Energie und daraus abgeleitete Größen. Scrollen Sie durch die Datei und versuchen Sie, Ihnen bekannte Größen zu finden."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
moritz.buchhorn's avatar
moritz.buchhorn committed
   "version": "3.10.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}