From ab54917bceb4943f6750f589ffe6a032b2770fb1 Mon Sep 17 00:00:00 2001 From: Anthony LaTorre Date: Sat, 18 Jun 2011 00:12:09 -0400 Subject: moved class definitions for Solid, Mesh, Material, and Surface into geometry.py and moved instances of these classes into separate folders. the Solid object no longer contains a rotation, displacement, or id variable; instead, they are passed to a geometry object when calling add_solid(). --- materials/__init__.py | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 materials/__init__.py (limited to 'materials/__init__.py') diff --git a/materials/__init__.py b/materials/__init__.py new file mode 100644 index 0000000..d2644ad --- /dev/null +++ b/materials/__init__.py @@ -0,0 +1,57 @@ +import os +import sys +import numpy as np +from ratdb import load + +dir = os.path.split(os.path.realpath(__file__))[0] +sys.path.append(dir + '/..') + +from geometry import Material, Surface + +vacuum = Material('vacuum') +vacuum.set('refractive_index', 1) +vacuum.set('absorption_length', np.finfo(np.float32).max) +vacuum.set('scattering_length', np.finfo(np.float32).max) + +lambertian_surface = Surface('lambertian_surface') +lambertian_surface.set('absorption', 0) +lambertian_surface.set('reflection_specular', 0) +lambertian_surface.set('reflection_diffuse', 1) + +black_surface = Surface('black_surface') +black_surface.set('absorption', 1) +black_surface.set('reflection_specular', 0) +black_surface.set('reflection_diffuse', 0) + +shiny_surface = Surface('shiny_surface') +shiny_surface.set('absorption', 0) +shiny_surface.set('reflection_specular', 1) +shiny_surface.set('reflection_diffuse', 0) + +db = load(open(dir + '/OPTICS.ratdb'))['OPTICS'] + +glass = Material('pmt_glass') +glass.set('refractive_index', db['glass']['RINDEX_value2'], db['glass']['RINDEX_value1']) +glass.set('absorption_length', db['glass']['ABSLENGTH_value2'], db['glass']['ABSLENGTH_value1']) +# convert mm -> m +glass.absorption_length[:,1] /= 1000.0 +# scattering length for glass? +glass.set('scattering_length', np.finfo(np.float32).max) + +lightwater_sno = Material('lightwater_sno') +lightwater_sno.set('refractive_index', db['lightwater_sno']['RINDEX_value2'], db['lightwater_sno']['RINDEX_value1']) +lightwater_sno.set('absorption_length', db['lightwater_sno']['ABSLENGTH_value2'], db['lightwater_sno']['ABSLENGTH_value1']) +# convert mm -> m +lightwater_sno.absorption_length[:,1] /= 1000.0 +lightwater_sno.set('scattering_length', db['lightwater_sno']['RSLENGTH_value2'], db['lightwater_sno']['RSLENGTH_value1']) +# convert mm -> m +lightwater_sno.scattering_length[:,1] /= 1000.0 + +acrylic_sno = Material('acrylic_sno') +acrylic_sno.set('refractive_index', db['acrylic_sno']['RINDEX_value2'], db['lightwater_sno']['RINDEX_value1']) +acrylic_sno.set('absorption_length', db['acrylic_sno']['ABSLENGTH_value2'], db['acrylic_sno']['ABSLENGTH_value1']) +# convert mm -> m +acrylic_sno.absorption_length[:,1] /= 1000.0 +acrylic_sno.set('scattering_length', db['acrylic_sno']['RSLENGTH_value2'], db['acrylic_sno']['RSLENGTH_value1']) +# convert mm -> m +acrylic_sno.scattering_length[:,1] /= 1000.0 -- cgit