예제 스크린샷 사용자 매뉴얼 Bluesky 로고 YouTube
OghmaNano 유기/페로브스카이트 태양전지, OFET 및 OLED 시뮬레이션 다운로드

PyOghma

Python에서 OghmaNano의 JSON 설정 파일을 직접 조작하는 것만으로도 많은 작업을 수행할 수 있습니다( 디스크의 sim.json을 편집하고 oghma_core.exe를 실행). 그러나 대규모 데이터셋을 생성하기 위해 많은 시뮬레이션을 병렬로 실행하려면, 곧 오케스트레이션 계층이 필요하게 됩니다. 즉, 실행 디렉터리 생성, 입력 파일 복제, 여러 솔버 인스턴스 실행, CPU 코어 전반에 걸친 작업 대기열 관리가 필요합니다.

또한 Python에서 원시 JSON을 조작하는 것은 항상 편리하지는 않습니다. 실수하기 쉽고, 일반적인 시뮬레이션 객체를 알고 있는 더 높은 수준의 인터페이스에 비해 코드가 장황해질 수 있습니다. 이러한 이유로 Cai Williams는 OghmaNano JSON 파일을 조작하고 시뮬레이션을 실행하는 데 사용할 수 있는 PyOghma라는 API를 만들었습니다. PyOghma는 독립형 프로젝트이므로, 질문, 버그 보고 및 기능 요청은 PyOghma 작성자에게 직접 보내십시오.

PyOghma는 GitHubpip를 통해 제공됩니다:

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로 가져오고, 소스 OghmaNano JSON 파일을 이동도, 트랩 밀도, 트래핑 속도 및 Urbach 에너지 값을 변경하여 조작합니다. 원본 파일은 다음 줄로 복제됩니다:

Oghma.clone('NewExperiment0')

그런 다음 코드의 마지막에 다음 두 줄이 나옵니다. 첫 번째는 작업을 PyOghma 작업 목록에 추가하고, 두 번째는 PyOghma에 모든 작업을 실행하라고 지시합니다. 작업이 하나보다 많다면, PyOghma는 완료될 때까지 모든 CPU에 걸쳐 여러 작업을 실행합니다. 서로 다른 이동도 값으로 시뮬레이션을 실행하려면, 각 시뮬레이션을 작업 목록에 추가한 다음 모든 코어에서 작업을 효율적으로 실행하기 위해 \(run\_jobs\)를 한 번 호출하면 됩니다.

Oghma.add_job(experiment_name)
Oghma.run_jobs()

PyOghma에 대한 자세한 정보는 GitHub 페이지에서 확인할 수 있습니다.