def do_collect(self, item, **kwargs): import inspect items = self.filter(item) if len(items) == 1: item = items[0] else: item = items T = type(item) if inspect.isclass(T): collect_method = self.__collect_method_dict__.get(T, None) if collect_method is None: for M in inspect.getmro(T): collect_method_name = "collect_%s" % M.__name__ if hasattr(self, collect_method_name): collect_method = getattr(self, collect_method_name) self.__collect_method_dict__[T] = collect_method break if collect_method is None: LOG.warn("No collect method found for object of type %s" % T) else: collect_method(item, **kwargs) return
def initialize(self): ## standard gratings 1550nm def STANDARD_GRATING_1550_TE(): from picazzo.fibcoup.uniform import UniformLineGrating as _ULG from ipkiss.plugins.photonics.wg.basic import WgElDefinition std1550_grating_trench = 0.315 std1550_grating_period = 0.630 std1550_grating_n_o_periods = 25 std_lin_grating_wg_def = WgElDefinition(wg_width=10.0) G = _ULG(name="std_grating_1550", origin=(0.0, 0.0), period=std1550_grating_period, line_width=std1550_grating_trench, n_o_periods=std1550_grating_n_o_periods, wg_definition=std_lin_grating_wg_def, process=TECH.PROCESS.FC) return G ## standard gratings 1550nm TM polarization def STANDARD_GRATING_1550_TM(): from picazzo.fibcoup.uniform import UniformLineGrating as _ULG from ipkiss.plugins.photonics.wg.basic import WgElDefinition std1550_grating_trench = 0.540 std1550_grating_period = 1.080 std1550_grating_n_o_periods = 16 std_lin_grating_wg_def = WgElDefinition(wg_width=10.0) G = _ULG(name="std_grating_1550_tm", origin=(0.0, 0.0), period=std1550_grating_period, line_width=std1550_grating_trench, n_o_periods=std1550_grating_n_o_periods, wg_definition=std_lin_grating_wg_def, process=TECH.PROCESS.FC) return G def STANDARD_2DGRATING_1550_TE(): from picazzo.fibcoup.uniform_2d import SymmetricUniformRect2dGrating as _UG2D from ipkiss.plugins.photonics.wg.basic import WgElDefinition std1550_2dgrating_period = 0.605 std1550_2dgrating_hole_diameter = 0.390 # desired after litho: 370 std1550_2dgrating_n_o_periods = 19 std1550_2dgrating_wg_def = WgElDefinition(wg_width=12.0) std1550_2dgrating_wg_length = 11 # length of trench before the taper starts std1550_2dgrating_trench_overlap = 4 # length of overlap between taper and fiber coupler trench std1550_2dgrating_dev_angle = 3.1 # angle deviation w/respect to 90 degrees. G = _UG2D(name="std_2dgrating_1550", period=std1550_2dgrating_period, hole_diameter=std1550_2dgrating_hole_diameter, n_o_periods=std1550_2dgrating_n_o_periods, wg_definition=std1550_2dgrating_wg_def, wg_length=std1550_2dgrating_wg_length, dev_angle=std1550_2dgrating_dev_angle, process=TECH.PROCESS.WG) return G self.DEFAULT_GRATING_TE = STANDARD_GRATING_1550_TE() self.DEFAULT_GRATING_TM = STANDARD_GRATING_1550_TM() self.DEFAULT_GRATING = self.DEFAULT_GRATING_TE try: self.DEFAULT_2D_GRATING = STANDARD_2DGRATING_1550_TE() except Exception, exc: LOG.warn("TECH.IO.FIBCOUP.DEFAULT_2D_GRATING will not be set : " + str(exc))