def thin_bladed_receiver(width, height, absorptivity, blades): """ Constructs lambertian receiver consisting of thin blades. """ front = Surface(RectPlateGM(width, height),opt.LambertianReceiver(absorptivity),location=r_[0.,width/-2.,0.],rotation=general_axis_rotation(r_[1,0,0],N.pi/2)) n = 0 front.axis = [1,0,0] front.tilt = N.pi/2 crit_ls = [] crit_ls.append(front) while n < blades: blade = Surface(RectPlateGM(width, height),opt.LambertianReceiver(absorptivity),location=r_[width/2-(n*width/(blades-1)),0.,0.],rotation=general_axis_rotation(r_[0,1,0],N.pi/-2)) blade.number = n+1 blade.axis = [0,1,0] blade.tilt = N.pi/2 crit_ls.append(blade) n += 1 rec_obj = AssembledObject(surfs=crit_ls) #obj.surfaces_for_next_iteration = types.MethodType(surfaces_for_next_iteration, obj, obj.__class__) return rec_obj, obj_ls, crit_ls