def update_cpml_e(self, pml_apply_opt): if self.space.grid_opt == 'efaced': in_out_field = "out_field" elif self.space.grid_opt == 'hfaced': in_out_field = "in_field" for pml_direction, position in enumerate(pml_apply_opt): #print 'pml_direction=%d' % pml_direction for fb in position: if fb == 'f': pml_position = "front" elif fb == 'b': pml_position = "back" if self.space.dimension == '3D': update_cpml_3d( in_out_field, self.space.number_cells, self.space.efield, # update_field self.space.hfield, # base_field self.space.ceb, self.space.ds, self.number_pml_cells, self.pml_coefficient_e, self.psi_e, pml_direction, pml_position) elif self.space.dimension == '2DEz': update_cpml_1update_2base( in_out_field, self.space.number_cells, self.space.efield, # update_field self.space.hfield, # base_field self.space.ceb, self.space.ds, self.number_pml_cells, self.pml_coefficient_e, self.psi_e, pml_direction, pml_position) elif self.space.dimension == '2DHz': #print 'in update_cpml_e...' update_cpml_2update_1base( in_out_field, self.space.number_cells, self.space.efield, # update_field self.space.hfield, # base_field self.space.ceb, self.space.ds, self.number_pml_cells, self.pml_coefficient_e, self.psi_e, pml_direction, pml_position)
def update_cpml_h(self, pml_apply_opt): if self.space.grid_opt == 'efaced': in_out_field = "in_field" elif self.space.grid_opt == 'hfaced': in_out_field = "out_field" for pml_direction, position in enumerate(pml_apply_opt): for fb in position: if fb == 'f': pml_position = 'front' elif fb == 'b': pml_position = 'back' if self.space.dimension == '3D': update_cpml_3d( in_out_field, self.space.number_cells, self.space.hfield, # update_field self.space.efield, # base_field self.space.chb, self.space.ds*self.space.unit_factor, self.number_pml_cells, self.pml_coefficient_h, self.psi_h, pml_direction, pml_position) elif self.space.dimension == '2DEz': update_cpml_2update_1base( in_out_field, self.space.number_cells, self.space.hfield, # update_field self.space.efield, # base_field self.space.chb, self.space.ds*self.space.unit_factor, self.number_pml_cells, self.pml_coefficient_h, self.psi_h, pml_direction, pml_position) elif self.space.dimension == '2DHz': update_cpml_1update_2base( in_out_field, self.space.number_cells, self.space.hfield, # update_field self.space.efield, # base_field self.space.chb, self.space.ds*self.space.unit_factor, self.number_pml_cells, self.pml_coefficient_h, self.psi_h, pml_direction, pml_position)
def update_cpml_h(self, pml_apply_opt): if self.space.grid_opt == 'efaced': in_out_field = "in_field" elif self.space.grid_opt == 'hfaced': in_out_field = "out_field" for pml_direction, position in enumerate(pml_apply_opt): for fb in position: if fb == 'f': pml_position = 'front' elif fb == 'b': pml_position = 'back' if self.space.dimension == '3D': update_cpml_3d( in_out_field, self.space.number_cells, self.space.hfield, # update_field self.space.efield, # base_field self.space.chb, self.space.ds * self.space.unit_factor, self.number_pml_cells, self.pml_coefficient_h, self.psi_h, pml_direction, pml_position) elif self.space.dimension == '2DEz': update_cpml_2update_1base( in_out_field, self.space.number_cells, self.space.hfield, # update_field self.space.efield, # base_field self.space.chb, self.space.ds * self.space.unit_factor, self.number_pml_cells, self.pml_coefficient_h, self.psi_h, pml_direction, pml_position) elif self.space.dimension == '2DHz': update_cpml_1update_2base( in_out_field, self.space.number_cells, self.space.hfield, # update_field self.space.efield, # base_field self.space.chb, self.space.ds * self.space.unit_factor, self.number_pml_cells, self.pml_coefficient_h, self.psi_h, pml_direction, pml_position)