Головна Приклади Знімки екрана Інструкція користувача Логотип Bluesky. YouTube ☰
OghmaNano Мультифізична платформа для моделювання оптоелектронних пристроїв і фотонних систем. ЗАВАНТАЖИТИ Короткий посібник зі швидкого старту

ПіОгма

Ви можете досягти значних результатів, безпосередньо маніпулюючи файлами конфігурації JSON OghmaNano з використанням Python (редагуючи sim.json на диску та запускаючи oghma_core.exe). Однак, якщо вам потрібно запустити багато симуляцій паралельно для створення великих наборів даних, ви швидко зрозумієте, що вам потрібен рівень оркестрації: створення каталогів для запуску, копіювання вхідних файлів, запуск кількох екземплярів вирішувача та керування чергою завдань на різних ядрах процесора.

Крім того, безпосередня робота з необробленими даними JSON у Python не завжди зручна: легко допустити помилки, і код може стати надмірно громіздким порівняно з інтерфейсом вищого рівня, який знає про загальні об’єкти моделювання. З цієї причини Кай Вільямс створив API під назвою PyOghma, який можна використовувати для обробки файлів OghmaNano JSON і запуску моделювань. 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 змінюється шляхом зміни значень параметрів рухливості, щільності пасток, швидкості захоплення та енергії Урбаха. Оригінальний файл копіюється за допомогою наступного рядка:

Oghma.clone('NewExperiment0')

Потім в кінці коду додайте наступні два рядки. Перший додає завдання до списку завдань PyOghma, а другий дає PyOghma команду виконати всі завдання. Якщо завдань більше одного, PyOghma виконуватиме їх паралельно на всіх процесорах, доки вони не будуть завершені. Якщо ви хочете провести моделювання з різними значеннями рухливості, додайте кожне моделювання до списку завдань, а потім один раз викличте \(run\_jobs\), щоб ефективно запустити завдання на всіх ядрах.

Oghma.add_job(experiment_name)
Oghma.run_jobs()

Більше інформації про PyOghma можна знайти на сторінці GitHub.