diff options
author | Anthony LaTorre <telatorre@gmail.com> | 2011-06-03 18:18:35 -0400 |
---|---|---|
committer | Anthony LaTorre <telatorre@gmail.com> | 2011-06-03 18:18:35 -0400 |
commit | 4118c62895ac2f011146b4233dad86ff8dc179e3 (patch) | |
tree | 364eb1596fae99bd9444dcf2689da62c205b65dc /materials.py | |
parent | 7a2b0f7ce547186acb87d13e7ba9d5184cb93d1f (diff) | |
download | chroma-4118c62895ac2f011146b4233dad86ff8dc179e3.tar.gz chroma-4118c62895ac2f011146b4233dad86ff8dc179e3.tar.bz2 chroma-4118c62895ac2f011146b4233dad86ff8dc179e3.zip |
load materials/surfaces onto the gpu
Diffstat (limited to 'materials.py')
-rw-r--r-- | materials.py | 73 |
1 files changed, 66 insertions, 7 deletions
diff --git a/materials.py b/materials.py index f71a583..dc28a8b 100644 --- a/materials.py +++ b/materials.py @@ -1,9 +1,12 @@ +import numpy as np + +wavelengths = np.arange(200, 810, 20) + class Material(object): """Material optical properties.""" def __init__(self, name='none'): self.name = name - self.wavelengths = None self.refractive_index = None self.absorption_length = None self.scattering_length = None @@ -13,15 +16,71 @@ class Surface(object): def __init__(self, name='none'): self.name = name - self.wavelengths = None - self.transmission = None - self.reflection = None self.absorption = None + self.reflection_diffuse = None + self.reflection_specular = None air = Material('air') +air.refractive_index = \ + np.array([(200.0, 1.0003236),(300.0, 1.0002914999999999), (500.0, 1.0002792), (700.0, 1.0002762999999999), (800.0, 1.0002755999999999)]) + +air.absorption_length = \ + np.array([(200.0, 1000000.0), (300.0, 1000000.0), (330.0, 1000000.0), (500.0, 1000000.0), (600.0, 1000000.0), (770.0, 1000000.0), (800.0, 1000000.0)]) + +air.scattering_length = \ + np.array(zip(wavelengths, [np.finfo(np.float32).max]*len(wavelengths))) + h2o = Material('h2o') -glass = Material('glass') -vacuum = Material('vacuum') -photocathode = Surface('photocathode') +h2o.refractive_index = \ + np.array([(200.0, 1.41615), (220.0, 1.39727), (240.0, 1.38395), (260.0, 1.3741399999999999), (280.0, 1.3666700000000001), (300.0, 1.3608199999999999), (320.0, 1.35615), (340.0, 1.35233), (360.0, 1.3491599999999999), (380.0, 1.3465), (400.0, 1.34423), (420.0, 1.3422700000000001), (440.0, 1.3405800000000001), (460.0, 1.3390899999999999), (480.0, 1.33778), (500.0, 1.3366100000000001), (520.0, 1.3355699999999999), (540.0, 1.33463), (560.0, 1.33378), (580.0, 1.33301), (600.0, 1.3323100000000001), (620.0, 1.3316699999999999), (640.0, 1.33108), (660.0, 1.3305400000000001), (680.0, 1.3300399999999999), (700.0, 1.3295699999999999), (720.0, 1.32914), (740.0, 1.32874), (760.0, 1.32836), (780.0, 1.3280099999999999), (800.0, 1.32768)]) + +h2o.absorption_length = \ + np.array([(200.0, 57515.400000000001), (220.0, 64222.199999999997), (240.0, 72699.699999999997), (260.0, 83755.600000000006), (280.0, 98777.300000000003), (300.0, 120365.0), (320.0, 154027.0), (340.0, 213829.0), (360.0, 349537.0), (380.0, 105878.0), (400.0, 50359.900000000001), (420.0, 32562.700000000001), (440.0, 26704.099999999999), (460.0, 22632.099999999999), (480.0, 19637.700000000001), (500.0, 17343.0), (520.0, 11843.700000000001), (540.0, 8992.2700000000004), (560.0, 7247.4300000000003), (580.0, 6069.6800000000003), (600.0, 5221.21), (620.0, 4580.8500000000004), (640.0, 4080.4099999999999), (660.0, 3678.54), (680.0, 3348.7399999999998), (700.0, 3073.1999999999998), (720.0, 2839.5599999999999), (740.0, 2638.9400000000001), (760.0, 2464.79), (780.0, 2312.21), (800.0, 2177.4200000000001)]) + +h2o.scattering_length = \ + np.array([(200.0, 11360.299999999999), (220.0, 16632.799999999999), (240.0, 23557.200000000001), (260.0, 32447.099999999999), (280.0, 43643.099999999999), (300.0, 57513.5), (320.0, 74453.600000000006), (340.0, 94886.0), (360.0, 119261.0), (380.0, 148055.0), (400.0, 181772.0), (420.0, 220945.0), (440.0, 266133.0), (460.0, 317921.0), (480.0, 376923.0), (500.0, 443781.0), (520.0, 519161.0), (540.0, 603759.0), (560.0, 698298.0), (580.0, 803527.0), (600.0, 920224.0), (620.0, 1049190.0), (640.0, 1191270.0), (660.0, 1347300.0), (680.0, 1518180.0), (700.0, 1704830.0), (720.0, 1908180.0), (740.0, 2129200.0), (760.0, 2368880.0), (780.0, 2628250.0), (800.0, 2908360.0)]) + +pmt_glass = Material('pmt_glass') + +pmt_glass.refractive_index = \ + np.array([(200.0, 1.49), (210.0, 1.49), (220.0, 1.49), (230.0, 1.49), (240.0, 1.49), (250.0, 1.49), (260.0, 1.49), (270.0, 1.49), (280.0, 1.49), (290.0, 1.49), (300.0, 1.49), (310.0, 1.49), (320.0, 1.49), (330.0, 1.49), (340.0, 1.49), (350.0, 1.49), (360.0, 1.49), (370.0, 1.49), (380.0, 1.49), (390.0, 1.49), (400.0, 1.49), (410.0, 1.49), (420.0, 1.49), (430.0, 1.49), (440.0, 1.49), (450.0, 1.49), (460.0, 1.49), (470.0, 1.49), (480.0, 1.49), (490.0, 1.49), (500.0, 1.49), (510.0, 1.49), (520.0, 1.49), (530.0, 1.49), (540.0, 1.49), (550.0, 1.49), (560.0, 1.49), (570.0, 1.49), (580.0, 1.49), (590.0, 1.49), (600.0, 1.49), (610.0, 1.49), (620.0, 1.49), (630.0, 1.49), (640.0, 1.49), (650.0, 1.49), (660.0, 1.49), (670.0, 1.49), (680.0, 1.49), (690.0, 1.49), (700.0, 1.49), (710.0, 1.49), (720.0, 1.49), (730.0, 1.49), (740.0, 1.49), (750.0, 1.49), (760.0, 1.49), (770.0, 1.49), (780.0, 1.49), (790.0, 1.49), (800.0, 1.49)]) + +pmt_glass.absorption_length = \ + np.array([(200.0, 0.0001), (300.0, 0.0001), (330.0, 1000.0), (500.0, 2000.0), (600.0, 1000.0), (770.0, 500.0), (800.0, 0.0001)]) + +pmt_glass.scattering_length = \ + np.array(zip(wavelengths, [np.finfo(np.float32).max]*len(wavelengths))) + +pmt_vacuum = Material('pmt_vacuum') + +pmt_vacuum.refractive_index = \ + np.array(zip(wavelengths, np.ones(len(wavelengths)))) + +pmt_vacuum.absorption_length = \ + np.array(zip(wavelengths, [np.finfo(np.float32).max]*len(wavelengths))) + +pmt_vacuum.scattering_length = \ + np.array(zip(wavelengths, [np.finfo(np.float32).max]*len(wavelengths))) + +r1408_photocathode = Surface('photocathode') + +r1408_photocathode.absorption = \ + np.array([(60.0, 0.0), (200.0, 0.0), (230.0, 0.0), (231.0, 0.0), (232.0, 0.0), (233.0, 0.0), (234.0, 0.0), (235.0, 0.0), (236.0, 0.0), (237.0, 0.0), (238.0, 0.0), (239.0, 0.0), (240.0, 0.0), (241.0, 0.00049089999999999995), (242.0, 0.0009817999999999999), (243.0, 0.0014729999999999999), (244.0, 0.001964), (245.0, 0.002454), (246.0, 0.0029450000000000001), (247.0, 0.0034359999999999998), (248.0, 0.0039269999999999999), (249.0, 0.0044180000000000001), (250.0, 0.0049090000000000002), (251.0, 0.0055100000000000001), (252.0, 0.0061110000000000001), (253.0, 0.0067130000000000002), (254.0, 0.0073140000000000002), (255.0, 0.0079150000000000002), (256.0, 0.0085159999999999993), (257.0, 0.0091170000000000001), (258.0, 0.0097190000000000002), (259.0, 0.010319999999999999), (260.0, 0.010919999999999999), (261.0, 0.01269), (262.0, 0.014460000000000001), (263.0, 0.016219999999999998), (264.0, 0.017989999999999999), (265.0, 0.01976), (266.0, 0.021530000000000001), (267.0, 0.023290000000000002), (268.0, 0.025059999999999999), (269.0, 0.02683), (270.0, 0.0286), (271.0, 0.031690000000000003), (272.0, 0.034779999999999998), (273.0, 0.037879999999999997), (274.0, 0.040969999999999999), (275.0, 0.044060000000000002), (276.0, 0.047160000000000001), (277.0, 0.050250000000000003), (278.0, 0.053339999999999999), (279.0, 0.056439999999999997), (280.0, 0.05953), (281.0, 0.062950000000000006), (282.0, 0.066360000000000002), (283.0, 0.069779999999999995), (284.0, 0.073200000000000001), (285.0, 0.076609999999999998), (286.0, 0.080030000000000004), (287.0, 0.08344), (288.0, 0.086860000000000007), (289.0, 0.090279999999999999), (290.0, 0.093689999999999996), (291.0, 0.096799999999999997), (292.0, 0.099909999999999999), (293.0, 0.10299999999999999), (294.0, 0.1061), (295.0, 0.10920000000000001), (296.0, 0.1123), (297.0, 0.1154), (298.0, 0.11849999999999999), (299.0, 0.1217), (300.0, 0.12479999999999999), (301.0, 0.1275), (302.0, 0.13020000000000001), (303.0, 0.13300000000000001), (304.0, 0.13569999999999999), (305.0, 0.13850000000000001), (306.0, 0.14119999999999999), (307.0, 0.1439), (308.0, 0.1467), (309.0, 0.14940000000000001), (310.0, 0.1522), (311.0, 0.15409999999999999), (312.0, 0.15609999999999999), (313.0, 0.158), (314.0, 0.16), (315.0, 0.16189999999999999), (316.0, 0.16389999999999999), (317.0, 0.1658), (318.0, 0.1678), (319.0, 0.16969999999999999), (320.0, 0.17169999999999999), (321.0, 0.17249999999999999), (322.0, 0.1734), (323.0, 0.17419999999999999), (324.0, 0.17510000000000001), (325.0, 0.1759), (326.0, 0.1767), (327.0, 0.17760000000000001), (328.0, 0.1784), (329.0, 0.17929999999999999), (330.0, 0.18010000000000001), (331.0, 0.18099999999999999), (332.0, 0.18190000000000001), (333.0, 0.1827), (334.0, 0.18360000000000001), (335.0, 0.18440000000000001), (336.0, 0.18529999999999999), (337.0, 0.1862), (338.0, 0.187), (339.0, 0.18790000000000001), (340.0, 0.1888), (341.0, 0.189), (342.0, 0.1893), (343.0, 0.18959999999999999), (344.0, 0.1898), (345.0, 0.19009999999999999), (346.0, 0.1903), (347.0, 0.19059999999999999), (348.0, 0.19089999999999999), (349.0, 0.19109999999999999), (350.0, 0.19139999999999999), (351.0, 0.19170000000000001), (352.0, 0.19209999999999999), (353.0, 0.19239999999999999), (354.0, 0.1928), (355.0, 0.19309999999999999), (356.0, 0.19350000000000001), (357.0, 0.1938), (358.0, 0.19420000000000001), (359.0, 0.19450000000000001), (360.0, 0.19489999999999999), (361.0, 0.19520000000000001), (362.0, 0.19539999999999999), (363.0, 0.19570000000000001), (364.0, 0.19600000000000001), (365.0, 0.1963), (366.0, 0.1966), (367.0, 0.19689999999999999), (368.0, 0.19719999999999999), (369.0, 0.19750000000000001), (370.0, 0.1978), (371.0, 0.1978), (372.0, 0.1978), (373.0, 0.1978), (374.0, 0.19789999999999999), (375.0, 0.19789999999999999), (376.0, 0.19789999999999999), (377.0, 0.19789999999999999), (378.0, 0.19800000000000001), (379.0, 0.19800000000000001), (380.0, 0.19800000000000001), (381.0, 0.1983), (382.0, 0.19850000000000001), (383.0, 0.1988), (384.0, 0.19900000000000001), (385.0, 0.1993), (386.0, 0.1996), (387.0, 0.19980000000000001), (388.0, 0.2001), (389.0, 0.20030000000000001), (390.0, 0.2006), (391.0, 0.20080000000000001), (392.0, 0.20100000000000001), (393.0, 0.20130000000000001), (394.0, 0.20150000000000001), (395.0, 0.20169999999999999), (396.0, 0.2019), (397.0, 0.20219999999999999), (398.0, 0.2024), (399.0, 0.2026), (400.0, 0.2029), (401.0, 0.20330000000000001), (402.0, 0.20380000000000001), (403.0, 0.20419999999999999), (404.0, 0.20469999999999999), (405.0, 0.20519999999999999), (406.0, 0.2056), (407.0, 0.20610000000000001), (408.0, 0.20649999999999999), (409.0, 0.20699999999999999), (410.0, 0.20749999999999999), (411.0, 0.20780000000000001), (412.0, 0.2082), (413.0, 0.20849999999999999), (414.0, 0.2089), (415.0, 0.2092), (416.0, 0.20960000000000001), (417.0, 0.2099), (418.0, 0.21029999999999999), (419.0, 0.21060000000000001), (420.0, 0.21099999999999999), (421.0, 0.21129999999999999), (422.0, 0.21160000000000001), (423.0, 0.21190000000000001), (424.0, 0.21229999999999999), (425.0, 0.21260000000000001), (426.0, 0.21290000000000001), (427.0, 0.2132), (428.0, 0.2135), (429.0, 0.21390000000000001), (430.0, 0.2142), (431.0, 0.2142), (432.0, 0.21429999999999999), (433.0, 0.21440000000000001), (434.0, 0.21440000000000001), (435.0, 0.2145), (436.0, 0.21460000000000001), (437.0, 0.21460000000000001), (438.0, 0.2147), (439.0, 0.21479999999999999), (440.0, 0.21479999999999999), (441.0, 0.2147), (442.0, 0.2145), (443.0, 0.21440000000000001), (444.0, 0.2142), (445.0, 0.21410000000000001), (446.0, 0.21390000000000001), (447.0, 0.21379999999999999), (448.0, 0.21360000000000001), (449.0, 0.2135), (450.0, 0.21329999999999999), (451.0, 0.21310000000000001), (452.0, 0.21279999999999999), (453.0, 0.21260000000000001), (454.0, 0.21240000000000001), (455.0, 0.21210000000000001), (456.0, 0.21190000000000001), (457.0, 0.2117), (458.0, 0.2114), (459.0, 0.2112), (460.0, 0.21099999999999999), (461.0, 0.21029999999999999), (462.0, 0.2097), (463.0, 0.20899999999999999), (464.0, 0.2084), (465.0, 0.2077), (466.0, 0.20710000000000001), (467.0, 0.2064), (468.0, 0.20580000000000001), (469.0, 0.2051), (470.0, 0.20449999999999999), (471.0, 0.20380000000000001), (472.0, 0.20319999999999999), (473.0, 0.20250000000000001), (474.0, 0.20180000000000001), (475.0, 0.20119999999999999), (476.0, 0.20050000000000001), (477.0, 0.19989999999999999), (478.0, 0.19919999999999999), (479.0, 0.1986), (480.0, 0.19789999999999999), (481.0, 0.19750000000000001), (482.0, 0.1971), (483.0, 0.19670000000000001), (484.0, 0.19620000000000001), (485.0, 0.1958), (486.0, 0.19539999999999999), (487.0, 0.19500000000000001), (488.0, 0.1946), (489.0, 0.19409999999999999), (490.0, 0.19370000000000001), (491.0, 0.1933), (492.0, 0.19289999999999999), (493.0, 0.1925), (494.0, 0.19209999999999999), (495.0, 0.19170000000000001), (496.0, 0.1913), (497.0, 0.1908), (498.0, 0.19040000000000001), (499.0, 0.19), (500.0, 0.18959999999999999), (501.0, 0.18920000000000001), (502.0, 0.18870000000000001), (503.0, 0.1883), (504.0, 0.18790000000000001), (505.0, 0.18740000000000001), (506.0, 0.187), (507.0, 0.18659999999999999), (508.0, 0.18609999999999999), (509.0, 0.1857), (510.0, 0.1852), (511.0, 0.1835), (512.0, 0.18179999999999999), (513.0, 0.18010000000000001), (514.0, 0.1784), (515.0, 0.17660000000000001), (516.0, 0.1749), (517.0, 0.17319999999999999), (518.0, 0.17150000000000001), (519.0, 0.16980000000000001), (520.0, 0.1681), (521.0, 0.1651), (522.0, 0.16220000000000001), (523.0, 0.1593), (524.0, 0.15640000000000001), (525.0, 0.1535), (526.0, 0.15060000000000001), (527.0, 0.1477), (528.0, 0.14480000000000001), (529.0, 0.1419), (530.0, 0.13900000000000001), (531.0, 0.1366), (532.0, 0.13420000000000001), (533.0, 0.1318), (534.0, 0.12939999999999999), (535.0, 0.127), (536.0, 0.1246), (537.0, 0.1222), (538.0, 0.1198), (539.0, 0.1174), (540.0, 0.115), (541.0, 0.1143), (542.0, 0.11360000000000001), (543.0, 0.1129), (544.0, 0.11219999999999999), (545.0, 0.1115), (546.0, 0.11070000000000001), (547.0, 0.11), (548.0, 0.10929999999999999), (549.0, 0.1086), (550.0, 0.1079), (551.0, 0.1062), (552.0, 0.1046), (553.0, 0.10290000000000001), (554.0, 0.1013), (555.0, 0.099650000000000002), (556.0, 0.09801), (557.0, 0.096360000000000001), (558.0, 0.094719999999999999), (559.0, 0.093079999999999996), (560.0, 0.091429999999999997), (561.0, 0.0906), (562.0, 0.089770000000000003), (563.0, 0.088950000000000001), (564.0, 0.088120000000000004), (565.0, 0.087290000000000006), (566.0, 0.086459999999999995), (567.0, 0.085629999999999998), (568.0, 0.0848), (569.0, 0.083979999999999999), (570.0, 0.083150000000000002), (571.0, 0.082239999999999994), (572.0, 0.08133), (573.0, 0.080409999999999995), (574.0, 0.079500000000000001), (575.0, 0.078589999999999993), (576.0, 0.077679999999999999), (577.0, 0.076770000000000005), (578.0, 0.075859999999999997), (579.0, 0.074950000000000003), (580.0, 0.074039999999999995), (581.0, 0.072969999999999993), (582.0, 0.071900000000000006), (583.0, 0.070830000000000004), (584.0, 0.069760000000000003), (585.0, 0.068690000000000001), (586.0, 0.06762), (587.0, 0.066549999999999998), (588.0, 0.065479999999999997), (589.0, 0.064409999999999995), (590.0, 0.063339999999999994), (591.0, 0.062230000000000001), (592.0, 0.061109999999999998), (593.0, 0.059990000000000002), (594.0, 0.058869999999999999), (595.0, 0.057750000000000003), (596.0, 0.05663), (597.0, 0.05552), (598.0, 0.054399999999999997), (599.0, 0.053280000000000001), (600.0, 0.052159999999999998), (601.0, 0.05092), (602.0, 0.049669999999999999), (603.0, 0.048430000000000001), (604.0, 0.047190000000000003), (605.0, 0.045940000000000002), (606.0, 0.044699999999999997), (607.0, 0.043450000000000003), (608.0, 0.042209999999999998), (609.0, 0.040969999999999999), (610.0, 0.039719999999999998), (611.0, 0.03884), (612.0, 0.037949999999999998), (613.0, 0.037069999999999999), (614.0, 0.036179999999999997), (615.0, 0.035299999999999998), (616.0, 0.034410000000000003), (617.0, 0.033529999999999997), (618.0, 0.032640000000000002), (619.0, 0.031759999999999997), (620.0, 0.030870000000000002), (621.0, 0.029960000000000001), (622.0, 0.029059999999999999), (623.0, 0.028150000000000001), (624.0, 0.02724), (625.0, 0.026339999999999999), (626.0, 0.025430000000000001), (627.0, 0.02452), (628.0, 0.023609999999999999), (629.0, 0.022710000000000001), (630.0, 0.0218), (631.0, 0.021090000000000001), (632.0, 0.020379999999999999), (633.0, 0.01967), (634.0, 0.018970000000000001), (635.0, 0.018259999999999998), (636.0, 0.01755), (637.0, 0.016840000000000001), (638.0, 0.016129999999999999), (639.0, 0.01542), (640.0, 0.014710000000000001), (641.0, 0.014120000000000001), (642.0, 0.01353), (643.0, 0.012930000000000001), (644.0, 0.01234), (645.0, 0.01175), (646.0, 0.01115), (647.0, 0.01056), (648.0, 0.0099670000000000002), (649.0, 0.0093740000000000004), (650.0, 0.0087810000000000006), (651.0, 0.0084159999999999999), (652.0, 0.0080520000000000001), (653.0, 0.0076870000000000003), (654.0, 0.0073229999999999996), (655.0, 0.0069579999999999998), (656.0, 0.006594), (657.0, 0.0062290000000000002), (658.0, 0.0058650000000000004), (659.0, 0.0054999999999999997), (660.0, 0.0051359999999999999), (661.0, 0.0048989999999999997), (662.0, 0.0046629999999999996), (663.0, 0.0044270000000000004), (664.0, 0.0041910000000000003), (665.0, 0.0039550000000000002), (666.0, 0.003718), (667.0, 0.0034819999999999999), (668.0, 0.0032460000000000002), (669.0, 0.0030100000000000001), (670.0, 0.002774), (671.0, 0.00265), (672.0, 0.0025270000000000002), (673.0, 0.0024039999999999999), (674.0, 0.002281), (675.0, 0.0021570000000000001), (676.0, 0.0020339999999999998), (677.0, 0.0019109999999999999), (678.0, 0.0017880000000000001), (679.0, 0.001665), (680.0, 0.0015410000000000001), (681.0, 0.001459), (682.0, 0.001377), (683.0, 0.0012949999999999999), (684.0, 0.0012130000000000001), (685.0, 0.0011310000000000001), (686.0, 0.001049), (687.0, 0.00096650000000000002), (688.0, 0.00088440000000000003), (689.0, 0.00080230000000000004), (690.0, 0.00072009999999999999), (691.0, 0.00069439999999999997), (692.0, 0.00066859999999999999), (693.0, 0.00064289999999999996), (694.0, 0.00061709999999999998), (695.0, 0.00059139999999999996), (696.0, 0.00056559999999999998), (697.0, 0.00053989999999999995), (698.0, 0.00051409999999999997), (699.0, 0.00048840000000000005), (700.0, 0.00046260000000000002), (800.0, 0.0)]) + +r1408_photocathode.specular_reflection = \ + np.array(zip(wavelengths, np.zeros(len(wavelengths)))) + +r1408_photocathode.diffuse_reflection = \ + np.array(zip(wavelengths, np.zeros(len(wavelengths)))) + aluminum = Surface('aluminum') + +aluminum.absorption = \ + np.array(zip(wavelengths, np.zeros(len(wavelengths)))) + +aluminum.specular_reflection = \ + np.array(zip(wavelengths, np.ones(len(wavelengths)))) + +aluminum.diffuse_reflection = \ + np.array(zip(wavelengths, np.zeros(len(wavelengths)))) |