コード例 #1
0
ファイル: cpml.py プロジェクト: wbkifun/fdtd_accelerate
	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)
コード例 #2
0
    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)
コード例 #3
0
ファイル: cpml.py プロジェクト: wbkifun/fdtd_accelerate
	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)
コード例 #4
0
    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)