def __init__(self, name): self.name = name self.orientation = v3.basis() self.P_ref = np.array([0, 0, 0]).astype(np.double) self.disp_in = dispersion.Vacuum() self.disp_out = dispersion.Vacuum() self.surfaces = [] self.propagator = 'eikonal'
def ConfigureRayOrientation(xp, eikonal, vg, wave_dict_list): '''Uses the first wave dictionary to orient the rays. This implies that superposition waves must be oriented the same way.''' A4 = np.array(wave_dict_list[0]['a0']) K4 = np.array(wave_dict_list[0]['k0']) F4 = np.array(wave_dict_list[0]['focus']) orientation = v3.basis() orientation.Create(A4[1:], K4[1:]) orientation.ExpressRaysInStdBasis(xp, eikonal, vg) xp[:, :, 1:4] += F4[1:4]
def __init__(self, name): self.name = name self.clip = -0.1 # orientation vector w is the surface normal self.orientation = v3.basis() # a reference point somewhere on the surface self.P_ref = np.array([0, 0, 0]).astype(np.double) # dispersion data on either side of surface # the surface normal points toward disp2 self.disp1 = dispersion.Vacuum() self.disp2 = dispersion.Vacuum() self.reflective = False