Skip to main content

Optical ray tracing for luminescent materials and spectral converter photovoltaic devices.

Project description

Optical ray tracing for luminescent materials and spectral converter photovoltaic devices

Introduction

pvtrace is a statistical photon path tracer written in Python. It follows photons through a 3D scene and records their interactions with objects to build up statistical information about energy flow. This approach is particularly useful in photovoltaics and non-imaging optics where the goal is to design systems which efficiently transport light to target locations.

Documentation

Interactive Jupyter notebooks examples and tutorial can be found in the docs directory.

Static versions are included in the project documentation, https://pvtrace.readthedocs.io

Capabilities

pvtrace was originally written to characterise the performance of Luminescent Solar Concentrators (LSC) and takes a Monte-Carlo approach to ray-tracing. Each ray is independent and can interact with objects in the scene via reflection and refraction. Objects can have different optical properties: refractive index, absorption coefficient, emission spectrum and quantum yield.

One of the key features of pvtrace is the ability to simulate re-absorption of photons in luminescent materials. This requires following thousands of rays to build intensity profiles and spectra of incoming and outgoing photons because these process cannot be approximated in a continuous way.

pvtrace may also be useful to researches or designers interested in ray-optics simulations but will be slower at running these simulations compared to other software packages because it follows each ray individually.

A minimal working example that traces a glass sphere

from pvtrace.scene.node import Node
from pvtrace.scene.scene import Scene
from pvtrace.scene.renderer import MeshcatRenderer
from pvtrace.geometry.sphere import Sphere
from pvtrace.material.dielectric import Dielectric
from pvtrace.light.light import Light
from pvtrace.algorithm import photon_tracer
import functools
import numpy as np

# Add nodes to the scene graph
world = Node(
    name="world (air)",
    geometry=Sphere(
        radius=10.0,
        material=Dielectric.air()
    )
)
sphere = Node(
    name="sphere (glass)",
    geometry=Sphere(
        radius=1.0,
        material=Dielectric.glass()
    ),
    parent=world
)
sphere.translate((0,0,2))

# Add source of photons
light = Node(
    name="Light (555nm)",
    light=Light(
        divergence_delegate=functools.partial(
            Light.cone_divergence, np.radians(20)
        )
    )
)

# Trace the scene
scene = Scene(world)
for ray in light.emit(100):
    # Do something with this optical path information
    path = photon_tracer.follow(ray, scene)

Install

Using pip

pip install pvtrace

Dependancies

  • python >= 3.7.2
  • trimesh (for mesh shapes)
  • meshcat (for visualisation)
  • numpy
  • anytree

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pvtrace-2.0.3.tar.gz (54.6 kB view details)

Uploaded Source

File details

Details for the file pvtrace-2.0.3.tar.gz.

File metadata

  • Download URL: pvtrace-2.0.3.tar.gz
  • Upload date:
  • Size: 54.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.2

File hashes

Hashes for pvtrace-2.0.3.tar.gz
Algorithm Hash digest
SHA256 9b634302acfe84eb2e24d14268f838f2145953ab929668b95ad7505516ded7e0
MD5 4f3d992e0cb5d21bbe0eae63b98960ce
BLAKE2b-256 18f67dcf5d0ac3b1bb2ed0d93b19476d8d054ccf944d8328bae369d5d687d55b

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page