boundary.py : inner/outer materials and surfaces

Boundaries are composed of four parts:

  • outer material
  • outer surface, relevant to incoming photons
  • inner surface, relevant to outgoing photons
  • inner material

Boundaries are created from a specification string of form “omat/osur/isur/imat” where outer and inner materials are required but surfaces are optional. For example:

In [2]: b1 = Boundary("Vacuum///GlassSchottF2")

In [3]: wl = np.linspace(100.,730.,10, dtype=np.float32)

In [4]: ri = b1.imat.refractive_index(wl)

In [8]: al = b1.imat.absorption_length(wl)

In [9]: sl = b1.imat.scattering_length(wl)

In [10]: rp = b1.imat.reemission_prob(wl)

In [11]: np.dstack([wl,ri,al,sl,rp])
Out[11]:
array([[[     100.   ,        1.685,  1000000.   ,  1000000.   ,        0.   ],
        [     170.   ,        1.685,  1000000.   ,  1000000.   ,        0.   ],
        [     240.   ,        1.685,  1000000.   ,  1000000.   ,        0.   ],
        [     310.   ,        1.685,  1000000.   ,  1000000.   ,        0.   ],
        [     380.   ,        1.658,  1000000.   ,  1000000.   ,        0.   ],
        [     450.   ,        1.638,  1000000.   ,  1000000.   ,        0.   ],
        [     520.   ,        1.626,  1000000.   ,  1000000.   ,        0.   ],
        [     590.   ,        1.619,  1000000.   ,  1000000.   ,        0.   ],
        [     660.   ,        1.614,  1000000.   ,  1000000.   ,        0.   ],
        [     730.   ,        1.611,  1000000.   ,  1000000.   ,        0.   ]]])