Σπίτι Παραδείγματα Στιγμιότυπα οθόνης Εγχειρίδιο χρήστη Λογότυπο της Bluesky YouTube ☰
OghmaNano Πλατφόρμα προσομοίωσης πολλαπλών φυσικών πεδίων για οπτοηλεκτρονικές συσκευές και φωτονικά συστήματα. Λήψη Οδηγός γρήγορης εκκίνησης

PyOghma

Μπορείτε να πετύχετε πολλά τροποποιώντας απευθείας τα αρχεία διαμόρφωσης JSON του OghmaNano από την Python (επεξεργασία του sim.json στον δίσκο και εκτέλεση του oghma_core.exe). Ωστόσο, εάν θέλετε να εκτελέσετε πολλές προσομοιώσεις παράλληλα για να δημιουργήσετε μεγάλα σύνολα δεδομένων, σύντομα θα διαπιστώσετε ότι χρειάζεστε ένα επίπεδο ενορχήστρωσης: δημιουργία καταλόγων εκτέλεσης, κλωνοποίηση αρχείων εισόδου, εκκίνηση πολλαπλών περιπτώσεων του solver και διαχείριση μιας ουράς εργασιών σε πολλούς πυρήνες CPU.

Επιπλέον, η άμεση επεξεργασία αρχείων JSON στην Python δεν είναι πάντα εύκολη: είναι εύκολο να γίνουν λάθη και ο κώδικας μπορεί να γίνει υπερβολικά μεγάλος σε σύγκριση με μια διεπαφή υψηλότερου επιπέδου που γνωρίζει τα κοινά αντικείμενα προσομοίωσης. Για αυτόν τον λόγο, ο Cai Williams δημιούργησε ένα API που ονομάζεται PyOghma, το οποίο μπορεί να χρησιμοποιηθεί για την επεξεργασία αρχείων JSON του OghmaNano και την εκτέλεση προσομοιώσεων. Το PyOghma είναι ένα αυτόνομο έργο, επομένως παρακαλούμε να απευθύνετε ερωτήσεις, αναφορές σφαλμάτων και αιτήματα για νέες λειτουργίες στον δημιουργό του PyOghma.

Το PyOghma είναι διαθέσιμο στο GitHub και επίσης μέσω pip:

python -m pip install PyOghma

Ακολουθεί ένα παράδειγμα χρήσης του PyOghma. [παράδειγμα Python 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()

Σε αυτό το παράδειγμα, η PyOghma εισάγεται ως po και ένα αρχείο JSON OghmaNano τροποποιείται αλλάζοντας τις τιμές της κινητικότητας, της πυκνότητας των παγίδων, του ρυθμού παγίδευσης και της ενέργειας Urbach. Το αρχικό αρχείο αντιγράφεται με την ακόλουθη εντολή:

Oghma.clone('NewExperiment0')

Στη συνέχεια, στο τέλος του κώδικα, προσθέστε τις ακόλουθες δύο γραμμές. Η πρώτη προσθέτει την εργασία στη λίστα εργασιών του PyOghma και η δεύτερη λέει στο PyOghma να εκτελέσει όλες τις εργασίες. Εάν υπήρχαν περισσότερες από μία εργασίες, το PyOghma θα εκτελούσε πολλές εργασίες σε όλους τους επεξεργαστές μέχρι να ολοκληρωθούν. Εάν θέλατε να εκτελέσετε προσομοιώσεις με διαφορετικές τιμές κινητικότητας, θα προσθέτατε κάθε προσομοίωση στη λίστα εργασιών και, στη συνέχεια, θα καλούσατε τη συνάρτηση \(run\_jobs\) μία φορά για να εκτελέσετε τις εργασίες σε όλους τους πυρήνες αποτελεσματικά.

Oghma.add_job(experiment_name)
Oghma.run_jobs()

Περισσότερες πληροφορίες σχετικά με το PyOghma είναι διαθέσιμες στη σελίδα του GitHub.