def create_wavepacket(self, description): wp_type = description["type"] if wp_type == "HagedornWavepacket": from HagedornWavepacket import HagedornWavepacket # Initialize a packet WP = HagedornWavepacket(description["dimension"], description["ncomponents"], description["eps"]) # Set parameters if description.has_key("Pi"): Pi = description["Pi"] WP.set_parameters(Pi) # Configure basis shapes if description.has_key("basis_shapes"): for component, shapedescr in enumerate(description["basis_shapes"]): BS = self.create_basis_shape(shapedescr) WP.set_basis_shapes(BS, component=component) # Set coefficients if description.has_key("coefficients"): for component, data in enumerate(description["coefficients"]): BS = WP.get_basis_shapes(component=component) for index, value in data: if BS.contains(index): WP.set_coefficient(component, index, value) else: print("Warning: dropped coefficient with index "+str(index)) # And the inner product if description.has_key("innerproduct"): IP = self.create_inner_product(description["innerproduct"]) WP.set_innerproduct(IP) else: print("Warning: no inner product specified!") elif wp_type == "HagedornWavepacketInhomogeneous": from HagedornWavepacketInhomogeneous import HagedornWavepacketInhomogeneous # Initialize a packet WP = HagedornWavepacketInhomogeneous(description["dimension"], description["ncomponents"], description["eps"]) # Set parameters if description.has_key("Pi"): Pi = description["Pi"] WP.set_parameters(Pi) # Configure basis shapes if description.has_key("basis_shapes"): for component, shapedescr in enumerate(description["basis_shapes"]): BS = self.create_basis_shape(shapedescr) WP.set_basis_shapes(BS, component=component) # Set coefficients if description.has_key("coefficients"): for component, data in enumerate(description["coefficients"]): for index, value in data: WP.set_coefficient(component, index, value) # And the quadrature if description.has_key("innerproduct"): IP = self.create_inner_product(description["innerproduct"]) WP.set_innerproduct(IP) else: print("Warning: no inner product specified!") else: raise ValueError("Unknown wavepacket type "+str(wp_type)) return WP