summaryrefslogtreecommitdiff
path: root/materials/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'materials/__init__.py')
-rw-r--r--materials/__init__.py57
1 files changed, 57 insertions, 0 deletions
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