{ "info": { "author": "Daniel Farrell", "author_email": "dan@excitonlabs.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: BSD License", "Programming Language :: Python :: 3.7", "Topic :: Scientific/Engineering :: Chemistry", "Topic :: Scientific/Engineering :: Physics", "Topic :: Scientific/Engineering :: Visualization" ], "description": "![](https://raw.githubusercontent.com/danieljfarrell/pvtrace/master/docs/logo.png)\n\n> Optical ray tracing for luminescent materials and spectral converter photovoltaic devices \n\n## Introduction\n\npvtrace 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.\n\n## Documentation\n\nInteractive Jupyter notebooks examples and tutorial can be found in the [docs directory](https://github.com/danieljfarrell/pvtrace/tree/master/docs).\n\nStatic versions are included in the project documentation, [https://pvtrace.readthedocs.io](https://pvtrace.readthedocs.io/)\n\n## Capabilities\n\npvtrace 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.\n\nOne 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.\n\npvtrace 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.\n\n![](https://raw.githubusercontent.com/danieljfarrell/pvtrace/master/docs/example.png)\n \nA minimal working example that traces a glass sphere\n\n```python\nfrom pvtrace.scene.node import Node\nfrom pvtrace.scene.scene import Scene\nfrom pvtrace.scene.renderer import MeshcatRenderer\nfrom pvtrace.geometry.sphere import Sphere\nfrom pvtrace.material.dielectric import Dielectric\nfrom pvtrace.light.light import Light\nfrom pvtrace.algorithm import photon_tracer\nimport functools\nimport numpy as np\n\n# Add nodes to the scene graph\nworld = Node(\n name=\"world (air)\",\n geometry=Sphere(\n radius=10.0,\n material=Dielectric.air()\n )\n)\nsphere = Node(\n name=\"sphere (glass)\",\n geometry=Sphere(\n radius=1.0,\n material=Dielectric.glass()\n ),\n parent=world\n)\nsphere.translate((0,0,2))\n\n# Add source of photons\nlight = Node(\n name=\"Light (555nm)\",\n light=Light(\n divergence_delegate=functools.partial(\n Light.cone_divergence, np.radians(20)\n )\n )\n)\n\n# Trace the scene\nscene = Scene(world)\nfor ray in light.emit(100):\n # Do something with this optical path information\n path = photon_tracer.follow(ray, scene)\n```\n## Install\n\nUsing pip\n\n pip install pvtrace\n\n## Dependancies\n\n* python >= 3.7.2\n* trimesh (for mesh shapes)\n* meshcat (for visualisation)\n* numpy\n* anytree", "description_content_type": "text/markdown", "docs_url": null, "download_url": "https://github.com/danieljfarrell/pvtrace/archive/v2.0.4.tar.gz", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/danieljfarrell/pvtrace", "keywords": "optics,simulation,ray tracing,photovoltaics,solar,energy,nonimaging,luminescence,spectroscopy", "license": "", "maintainer": "", "maintainer_email": "", "name": "pvtrace", "package_url": "https://pypi.org/project/pvtrace/", "platform": "", "project_url": "https://pypi.org/project/pvtrace/", "project_urls": { "Download": "https://github.com/danieljfarrell/pvtrace/archive/v2.0.4.tar.gz", "Homepage": "https://github.com/danieljfarrell/pvtrace" }, "release_url": "https://pypi.org/project/pvtrace/2.0.4/", "requires_dist": null, "requires_python": ">=3.7.2", "summary": "Optical ray tracing for luminescent materials and spectral converter photovoltaic devices.", "version": "2.0.4" }, "last_serial": 5465614, "releases": { "2.0.1": [ { "comment_text": "", "digests": { "md5": "b8a2210b9c3637023507fedea43b0708", "sha256": "d3b51cacf5daebca24b5aa1c56473f20351ee8489486f4448e01cbfddc412501" }, "downloads": -1, "filename": "pvtrace-2.0.1.tar.gz", "has_sig": false, "md5_digest": "b8a2210b9c3637023507fedea43b0708", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7.2", "size": 49838, "upload_time": "2019-04-18T18:45:41", "url": "https://files.pythonhosted.org/packages/f3/ea/b20e26feda259bd58b7c8ea4f46b5816d58f5fbfaee0d731c9cd4a1a4a17/pvtrace-2.0.1.tar.gz" } ], "2.0.2": [ { "comment_text": "", "digests": { "md5": "471e5f918ad8b90828fc2d2b0f884594", "sha256": "8971ff8c58d68fe60cbdbbed3e56809b5aefc55cef0f743650f3dc076f0b3c2b" }, "downloads": -1, "filename": "pvtrace-2.0.2.tar.gz", "has_sig": false, "md5_digest": "471e5f918ad8b90828fc2d2b0f884594", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7.2", "size": 52934, "upload_time": "2019-04-22T08:54:14", "url": "https://files.pythonhosted.org/packages/17/cc/b06b29c0db1ce0951ac3193aa7e2d331e9954783a399d4b1bc234effcdb7/pvtrace-2.0.2.tar.gz" } ], "2.0.3": [ { "comment_text": "", "digests": { "md5": "4f3d992e0cb5d21bbe0eae63b98960ce", "sha256": "9b634302acfe84eb2e24d14268f838f2145953ab929668b95ad7505516ded7e0" }, "downloads": -1, "filename": "pvtrace-2.0.3.tar.gz", "has_sig": false, "md5_digest": "4f3d992e0cb5d21bbe0eae63b98960ce", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7.2", "size": 54649, "upload_time": "2019-05-27T18:29:19", "url": "https://files.pythonhosted.org/packages/18/f6/7dcf5d0ac3b1bb2ed0d93b19476d8d054ccf944d8328bae369d5d687d55b/pvtrace-2.0.3.tar.gz" } ], "2.0.4": [ { "comment_text": "", "digests": { "md5": "1a57a1061415dd56f2d902293d62b125", "sha256": "f2505908913e49731565beaf30c9697ca09ea09b30db1c9e4519d5d2a18a76f9" }, "downloads": -1, "filename": "pvtrace-2.0.4.tar.gz", "has_sig": false, "md5_digest": "1a57a1061415dd56f2d902293d62b125", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7.2", "size": 55481, "upload_time": "2019-06-29T14:59:06", "url": "https://files.pythonhosted.org/packages/47/d0/ab311e7bf2fbb817c585cb8236188303ca36edba306248d2bec42732572e/pvtrace-2.0.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1a57a1061415dd56f2d902293d62b125", "sha256": "f2505908913e49731565beaf30c9697ca09ea09b30db1c9e4519d5d2a18a76f9" }, "downloads": -1, "filename": "pvtrace-2.0.4.tar.gz", "has_sig": false, "md5_digest": "1a57a1061415dd56f2d902293d62b125", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7.2", "size": 55481, "upload_time": "2019-06-29T14:59:06", "url": "https://files.pythonhosted.org/packages/47/d0/ab311e7bf2fbb817c585cb8236188303ca36edba306248d2bec42732572e/pvtrace-2.0.4.tar.gz" } ] }