خانه نمونه‌ها اسکرین‌شات‌ها راهنمای کاربر لوگوی Bluesky YouTube
OghmaNano شبیه‌سازی سلول‌های خورشیدی آلی/پروسکایتی، OFETها و OLEDها دانلود

PyOghma

با دست‌کاری مستقیم فایل‌های پیکربندی JSON مربوط به OghmaNano از Python می‌توانید کارهای زیادی انجام دهید (ویرایش sim.json روی دیسک و اجرای oghma_core.exe). با این حال، اگر بخواهید تعداد زیادی شبیه‌سازی را به‌صورت موازی اجرا کنید تا مجموعه‌داده‌های بزرگی تولید شوند، خیلی زود به یک لایه orchestration نیاز پیدا می‌کنید: ایجاد دایرکتوری‌های اجرا، clone کردن فایل‌های ورودی، راه‌اندازی چندین نمونه از حل‌گر، و مدیریت یک صف از jobها روی هسته‌های CPU.

افزون بر این، دست‌کاری مستقیم JSON در Python همیشه خوشایند نیست: به‌راحتی ممکن است اشتباه رخ دهد، و کد می‌تواند در مقایسه با یک رابط سطح‌بالا که اشیای متداول شبیه‌سازی را می‌شناسد، طولانی و پرجزئیات شود. به همین دلیل، Cai Williams یک API با نام PyOghma ایجاد کرده است که می‌توان از آن برای دست‌کاری فایل‌های JSON مربوط به OghmaNano و اجرای شبیه‌سازی‌ها استفاده کرد. PyOghma یک پروژه مستقل است، بنابراین لطفاً پرسش‌ها، گزارش‌های خطا، و درخواست‌های ویژگی را به نویسنده PyOghma ارجاع دهید.

PyOghma در GitHub و همچنین از طریق pip در دسترس است:

python -m pip install PyOghma

نمونه‌ای از استفاده از PyOghma در زیر در [python-example3] آمده است:

 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 import می‌شود، و یک فایل JSON منبع مربوط به OghmaNano با تغییر مقادیر تحرک، چگالی تله، نرخ تله‌گذاری و انرژی Urbach دست‌کاری می‌شود. فایل اصلی با این خط clone می‌شود:

Oghma.clone('NewExperiment0')

سپس در انتهای کد، دو خط زیر قرار دارند. خط اول job را به فهرست jobهای PyOghma اضافه می‌کند و خط دوم به PyOghma دستور می‌دهد همه jobها را اجرا کند. اگر بیش از یک job وجود داشت، PyOghma چندین job را روی همه CPUها اجرا می‌کرد تا به پایان برسند. اگر می‌خواستید شبیه‌سازی‌ها را با مقادیر متفاوت تحرک اجرا کنید، هر شبیه‌سازی را به فهرست jobها اضافه می‌کردید، سپس \(run\_jobs\) را یک بار فراخوانی می‌کردید تا jobها به‌صورت کارآمد روی همه هسته‌ها اجرا شوند.

Oghma.add_job(experiment_name)
Oghma.run_jobs()

اطلاعات بیشتر درباره PyOghma در صفحه GitHub در دسترس است.