@@ -49,7 +49,7 @@ def _wfs_point(omega, x0, n0, xs, c=None):
49
49
wfs_2d_point = _wfs_point
50
50
51
51
52
- def wfs_25d_point (omega , x0 , n0 , xs , xref = [0 , 0 , 0 ], c = None ):
52
+ def wfs_25d_point (omega , x0 , n0 , xs , xref = [0 , 0 , 0 ], c = None , omalias = None ):
53
53
"""Point source by 2.5-dimensional WFS.
54
54
55
55
::
@@ -66,7 +66,9 @@ def wfs_25d_point(omega, x0, n0, xs, xref=[0, 0, 0], c=None):
66
66
k = util .wavenumber (omega , c )
67
67
ds = x0 - xs
68
68
r = np .linalg .norm (ds , axis = 1 )
69
- return np .sqrt (1j * k * np .linalg .norm (xref - x0 )) * inner1d (ds , n0 ) / \
69
+
70
+ return wfs_25d_preeq (omega , omalias , c ) * \
71
+ np .sqrt (np .linalg .norm (xref - x0 )) * inner1d (ds , n0 ) / \
70
72
r ** (3 / 2 ) * np .exp (- 1j * k * r )
71
73
72
74
@@ -91,7 +93,8 @@ def _wfs_plane(omega, x0, n0, n=[0, 1, 0], c=None):
91
93
wfs_2d_plane = _wfs_plane
92
94
93
95
94
- def wfs_25d_plane (omega , x0 , n0 , n = [0 , 1 , 0 ], xref = [0 , 0 , 0 ], c = None ):
96
+ def wfs_25d_plane (omega , x0 , n0 , n = [0 , 1 , 0 ], xref = [0 , 0 , 0 ], c = None ,
97
+ omalias = None ):
95
98
"""Plane wave by 2.5-dimensional WFS.
96
99
97
100
::
@@ -105,13 +108,25 @@ def wfs_25d_plane(omega, x0, n0, n=[0, 1, 0], xref=[0, 0, 0], c=None):
105
108
n = np .squeeze (np .asarray (n ))
106
109
xref = np .squeeze (np .asarray (xref ))
107
110
k = util .wavenumber (omega , c )
108
- return np .sqrt (2 * np .pi * 1j * k * np .linalg .norm (xref - x0 )) * \
111
+ return wfs_25d_preeq (omega , omalias , c ) * \
112
+ np .sqrt (2 * np .pi * np .linalg .norm (xref - x0 )) * \
109
113
np .inner (n , n0 ) * np .exp (- 1j * k * np .inner (n , x0 ))
110
114
111
115
112
116
wfs_3d_plane = _wfs_plane
113
117
114
118
119
+ def wfs_25d_preeq (omega , omalias , c ):
120
+ """Preqeualization for 2.5D WFS"""
121
+ if omalias is None :
122
+ return np .sqrt (1j * util .wavenumber (omega , c ))
123
+ else :
124
+ if omega <= omalias :
125
+ return np .sqrt (1j * util .wavenumber (omega , c ))
126
+ else :
127
+ return np .sqrt (1j * util .wavenumber (omalias , c ))
128
+
129
+
115
130
def delay_3d_plane (omega , x0 , n0 , n = [0 , 1 , 0 ], c = None ):
116
131
"""Plane wave by simple delay of secondary sources."""
117
132
x0 = np .asarray (x0 )
0 commit comments