Startseite Beispiele Screenshots Benutzerhandbuch Bluesky-Logo YouTube ☰
OghmaNano Simulation von organischen/Perowskit-Solarzellen, OFETs und OLEDs DOWNLOAD Quick Start guide

PyOghma

Sie können OghmaNanos JSON-Konfigurationsdateien direkt aus Python heraus bearbeiten und so einiges erreichen (durch das Ändern von sim.json auf der Festplatte und das Ausführen von oghma_core.exe). Wenn Sie jedoch viele Simulationen parallel ausführen möchten, um große Datensätze zu erstellen, benötigen Sie schnell eine Orchestrierungsschicht: das Erstellen von Ausführungsverzeichnissen, das Klonen von Eingabedateien, das Starten mehrerer Solver-Instanzen und die Verwaltung einer Warteschlange von Aufgaben über verschiedene CPU-Kerne hinweg.

Darüber hinaus ist die direkte Bearbeitung von JSON-Daten in Python nicht immer einfach: Es ist leicht, Fehler zu machen, und der Code kann im Vergleich zu einer höherwertigen Schnittstelle, die mit gängigen Simulationsobjekten vertraut ist, sehr umfangreich werden. Aus diesem Grund hat Cai Williams eine API namens PyOghma entwickelt, mit der OghmaNano-JSON-Dateien bearbeitet und Simulationen ausgeführt werden können. PyOghma ist ein eigenständiges Projekt. Bitte richten Sie Fragen, Fehlerberichte und Anfragen zu neuen Funktionen an den Autor von PyOghma.

PyOghma ist auf GitHub verfügbar und kann auch über pip bezogen werden.

python -m pip install PyOghma

Ein Beispiel für die Verwendung von PyOghma finden Sie unten. [Python-Beispiel 3]:

 import PyOghma as po

       Oghma = po.OghmaNano()
       Results = po.Results()


       source_simulation = "\exapmle\pm6y6\"

      Oghma.set_source_simulation(source_simulation)

    experiment_name = 'NewExperiment'

    Oghma.set_experiment_name(experiment_name)

    mobility = 1e-5
    trap_desnsity = 1e-18
    trapping_crosssection = 1e-20
    recombination_crosssection = 1e-20
    urbach_energy = 40e-3
    temperature = 300
    intensity = 0.5


    experiment_name = 'NewExperiment' + str(1)
    Oghma.clone('NewExperiment0')

    Oghma.Optical.Light.set_light_Intensity(intensity)
    Oghma.Optical.Light.update()

    Oghma.Thermal.set_temperature(temperature)
    Oghma.Thermal.update()

    Oghma.Epitaxy.load_existing()
    Oghma.Epitaxy.pm6y6.dos.mobility('both', mobility)
    Oghma.Epitaxy.pm6y6.dos.trap_density('both', trap_desnsity)
    Oghma.Epitaxy.pm6y6.dos.trapping_rate('both', 'free to trap',..
    trapping_crosssection)
    Oghma.Epitaxy.pm6y6.dos.trapping_rate('both', 'trap to free',..
    recombination_crosssection)
    Oghma.Epitaxy.pm6y6.dos.urbach_energy('both', urbach_energy)
    Oghma.Epitaxy.update()

    Oghma.add_job(experiment_name)
    Oghma.run_jobs()

In diesem Beispiel wird PyOghma als po importiert, und eine OghmaNano-JSON-Quelldatei wird bearbeitet, indem die Werte für Mobilität, Fallenkonzentration, Einfangrate und Urbach-Energie geändert werden. Die ursprüngliche Datei wird mit folgender Zeile dupliziert:

Oghma.clone('NewExperiment0')

Am Ende des Codes folgen dann die folgenden beiden Zeilen. Die erste Zeile fügt den Job zur PyOghma-Jobliste hinzu, und die zweite Zeile weist PyOghma an, alle Jobs auszuführen. Wenn es mehr als einen Job gibt, würde PyOghma mehrere Jobs auf allen CPUs ausführen, bis diese abgeschlossen sind. Wenn Sie Simulationen mit unterschiedlichen Mobilitätswerten durchführen möchten, fügen Sie jede Simulation zur Jobliste hinzu und rufen dann \(run\_jobs\) einmal auf, um die Jobs effizient auf allen Kernen auszuführen.

Oghma.add_job(experiment_name)
Oghma.run_jobs()

Weitere Informationen zu PyOghma finden Sie auf der GitHub-Seite.