File: test_integrated_source.py

package info (click to toggle)
meep-openmpi 1.25.0-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 64,556 kB
  • sloc: cpp: 32,214; python: 27,958; lisp: 1,225; makefile: 505; sh: 249; ansic: 131; javascript: 5
file content (41 lines) | stat: -rw-r--r-- 1,297 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import unittest

import numpy as np

import meep as mp

# Test that is_integrated=True source correctly generates planewaves
# for sources extending into the PML, as in this tutorial:
#      https://meep.readthedocs.io/en/latest/Perfectly_Matched_Layer/#planewave-sources-extending-into-pml
# Regression test for issue #2043.


class TestIntegratedSource(unittest.TestCase):
    def test_integrated_source(self):
        sources = [
            mp.Source(
                mp.ContinuousSource(1, is_integrated=True),
                center=mp.Vector3(-2),
                size=mp.Vector3(y=6),
                component=mp.Ez,
            )
        ]
        sim = mp.Simulation(
            resolution=20,
            cell_size=(6, 6),
            boundary_layers=[mp.PML(thickness=1)],
            sources=sources,
            k_point=mp.Vector3(),
        )
        sim.run(until=30)

        # field in mid-plane should be nearly constant,
        # so compute its normalized std. dev. and check << 1
        ez = sim.get_array(mp.Ez, center=mp.Vector3(2), size=mp.Vector3(y=6))
        std = np.std(ez) / np.sqrt(np.mean(ez**2))
        print("std = ", std)
        self.assertAlmostEqual(std, 0.0, places=4 if mp.is_single_precision() else 8)


if __name__ == "__main__":
    unittest.main()