(self, sim)
| 637 | return abs(amp) ** 2 |
| 638 | |
| 639 | def add_source(self, sim): |
| 640 | where = mp.Volume( |
| 641 | self.center, |
| 642 | self.size, |
| 643 | dims=sim.dimensions, |
| 644 | is_cylindrical=sim.is_cylindrical, |
| 645 | ).swigobj |
| 646 | if self.direction < 0: |
| 647 | direction = sim.fields.normal_direction(where) |
| 648 | else: |
| 649 | direction = self.direction |
| 650 | |
| 651 | if self.eig_vol is None: |
| 652 | self.eig_vol = mp.Volume( |
| 653 | self.eig_lattice_center, |
| 654 | self.eig_lattice_size, |
| 655 | sim.dimensions, |
| 656 | is_cylindrical=sim.is_cylindrical, |
| 657 | ) |
| 658 | |
| 659 | if isinstance(self.eig_band, mp.DiffractedPlanewave): |
| 660 | eig_band = 1 |
| 661 | diffractedplanewave = mp.simulation.bands_to_diffractedplanewave( |
| 662 | where, self.eig_band |
| 663 | ) |
| 664 | elif isinstance(self.eig_band, int): |
| 665 | eig_band = self.eig_band |
| 666 | |
| 667 | add_eig_src_args = [ |
| 668 | self.component, |
| 669 | self.src.swigobj, |
| 670 | direction, |
| 671 | where, |
| 672 | self.eig_vol.swigobj, |
| 673 | eig_band, |
| 674 | mp.py_v3_to_vec( |
| 675 | sim.dimensions, self.eig_kpoint, is_cylindrical=sim.is_cylindrical |
| 676 | ), |
| 677 | self.eig_match_freq, |
| 678 | self.eig_parity, |
| 679 | self.eig_resolution, |
| 680 | self.eig_tolerance, |
| 681 | self.amplitude, |
| 682 | ] |
| 683 | add_eig_src = functools.partial( |
| 684 | sim.fields.add_eigenmode_source, *add_eig_src_args |
| 685 | ) |
| 686 | |
| 687 | if isinstance(self.eig_band, mp.DiffractedPlanewave): |
| 688 | add_eig_src(self.amp_func, diffractedplanewave) |
| 689 | else: |
| 690 | add_eig_src(self.amp_func) |
| 691 | |
| 692 | |
| 693 | class GaussianBeam3DSource(Source): |
nothing calls this directly
no test coverage detected