diff --git a/.gitignore b/.gitignore index ec0c699b894813436349ed7062d642b7dd8554a6..3f31d183b87b61f6e60874a76330981b60b864b3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -*__pycache__ +*__pycache__ .vscode/ \ No newline at end of file diff --git a/__main__.py b/__main__.py index 5f4eb69063d440fccdaceda7142f0e1e49b1420b..f21af91b2d9bac533992c0f35e09d136583e2732 100644 --- a/__main__.py +++ b/__main__.py @@ -8,10 +8,11 @@ import matrices print("Hi World!") ## Tests +print("###------ Portes anticommutantes ------") +source = elements.Source(initial_vector = np.array([1. + 0j, 0.])) -source = elements.Source(initial_vector = np.array([1.+0j, 0.])) +BS1 = elements.BeamSplitter(previous = {"left": None, "right": (source, "left")}, matrix=matrices.HALF_MIRROR_LEFT_ACTIVE) -BS1 = elements.BeamSplitter(previous = {"left": (source, "left"), "right": None}, matrix=matrices.HALF_MIRROR_LEFT_INACTIVE) X_left_1 = elements.Plate(previous = (BS1, "left"), jones_matrix=matrices.X) Z_left_2 = elements.Plate(previous = (X_left_1, "left"), jones_matrix = matrices.Z) @@ -20,10 +21,31 @@ Z_left_2 = elements.Plate(previous = (X_left_1, "left"), jones_matrix = matrices Z_right_1 = elements.Plate(previous = (BS1, "right"), jones_matrix = matrices.Z) X_right_2 = elements.Plate(previous = (Z_right_1, "left"), jones_matrix = matrices.X) -BS2 = elements.BeamSplitter(previous = {"left": (Z_left_2, "left"), "right": (X_right_2, "left")}, matrix = matrices.HALF_MIRROR_RIGHT_INACTIVE) +BS2 = elements.BeamSplitter(previous = {"left": (Z_left_2, "left"), "right": (X_right_2, "left")}, matrix = matrices.HALF_MIRROR_RIGHT_ACTIVE) screen_right = elements.Screen(previous = (BS2, "right")) screen_left = elements.Screen(previous = (BS2, "left")) -screen_right.show("right") screen_left.show("left") +screen_right.show("right") + +print("### ------ Portes commutantes ------") + +source2 = elements.Source(initial_vector = np.array([1.+0j, 0.])) + +BS12 = elements.BeamSplitter(previous = {"left": (source2, "left"), "right": None}, matrix=matrices.SYM_BS_INACTIVE) + +Phase_left_12 = elements.Plate(previous = (BS12, "left"), jones_matrix=matrices.PHASE(np.pi/5)) +Z_left_22 = elements.Plate(previous = (Phase_left_12, "left"), jones_matrix = matrices.Z) + + +Z_right_12 = elements.Plate(previous = (BS12, "right"), jones_matrix = matrices.Z) +Phase_right_22 = elements.Plate(previous = (Z_right_12, "left"), jones_matrix = matrices.PHASE(np.pi/5)) + +BS22 = elements.BeamSplitter(previous = {"left": (Z_left_22, "left"), "right": (Phase_right_22, "left")}, matrix = matrices.SYM_BS_INACTIVE) + +screen_right2 = elements.Screen(previous = (BS22, "right")) +screen_left2 = elements.Screen(previous = (BS22, "left")) + +screen_left2.show("left") +screen_right2.show("right") diff --git a/matrices.py b/matrices.py index bbd647400f1edb182260b6db27714966431e00cb..6662709505efd4b1c7466d70c844c5fd34284a97 100644 --- a/matrices.py +++ b/matrices.py @@ -59,10 +59,10 @@ SYM_BS_INACTIVE = np.kron(SYM_BS_AMPLITUDE_MATRIX, np.eye(2)) HALF_MIRROR_LEFT_INACTIVE = np.kron(HALF_MIRROR_LEFT_PLATE_AMPLITUDE_MATRIX, np.eye(2)) HALF_MIRROR_RIGHT_INACTIVE = np.kron(HALF_MIRROR_RIGHT_PLATE_AMPLITUDE_MATRIX, np.eye(2)) -SYM_BS_INACTIVE = (1/np.sqrt(2))*np.array([[1j, 0, 1, 0], - [0, -1j, 0, 1], - [1, 0, 1j, 0], - [0, 1, 0, -1j]], dtype='complex') +SYM_BS_ACTIVE = (1/np.sqrt(2))*np.array([[-1j, 0, 1, 0], + [0, 1j, 0, 1], + [1, 0, -1j, 0], + [0, 1, 0, 1j]], dtype='complex') HALF_MIRROR_LEFT_ACTIVE = (1/np.sqrt(2))*np.array([[-1, 0, 1, 0], [0, 1, 0, 1],