# HG changeset patch
# User paugier <pierre.augier@univ-grenoble-alpes.fr>
# Date 1592059062 -7200
#      Sat Jun 13 16:37:42 2020 +0200
# Node ID 8e3d68a5178dba4899674d569e19cd69247a8abb
# Parent  446db5ab7736c3cd36c909caf1d24c47445f30a0
Fix transonic block in _get_phase_shift_random for 1d

diff --git a/fluidsim/base/time_stepping/pseudo_spect.py b/fluidsim/base/time_stepping/pseudo_spect.py
--- a/fluidsim/base/time_stepping/pseudo_spect.py
+++ b/fluidsim/base/time_stepping/pseudo_spect.py
@@ -32,9 +32,12 @@
 
 N = NDim(2, 3, 4)
 A = Array[np.complex128, N, "C"]
-Af = Array[np.float64, N, "C"]
 Am1 = Array[np.complex128, N - 1, "C"]
 
+N123 = NDim(1, 2, 3)
+A123c = Array[np.complex128, N123, "C"]
+A123f = Array[np.float64, N123, "C"]
+
 T = Type(np.float64, np.complex128)
 A1 = Array[T, N, "C"]
 A2 = Array[T, N - 1, "C"]
@@ -277,8 +280,8 @@
             ts.use_block("phase_shift_random")
         else:
             # transonic block (
-            #     A phase_shift_alpha, phase_shift_beta;
-            #     Af phase_alpha, phase_beta;
+            #     A123c phase_shift_alpha, phase_shift_beta;
+            #     A123f phase_alpha, phase_beta;
             # )
             phase_shift_alpha[:] = np.exp(1j * phase_alpha)
             phase_shift_beta[:] = np.exp(1j * phase_beta)
@@ -609,10 +612,7 @@
         state_spect_1 = self._state_spect_tmp
         step_Euler(state_spect, dt, tendencies_0, diss, output=state_spect_1)
 
-        tendencies_1_shift = (
-            compute_tendencies(phase_shift_beta * state_spect_1)
-            / phase_shift_beta
-        )
+        tendencies_1_shift = compute_tendencies(phase_shift_beta * state_spect_1)
 
         tendencies_d = self._state_spect_tmp
         if ts.is_transpiled:
diff --git a/fluidsim/solvers/nl1d/test_solver.py b/fluidsim/solvers/nl1d/test_solver.py
--- a/fluidsim/solvers/nl1d/test_solver.py
+++ b/fluidsim/solvers/nl1d/test_solver.py
@@ -111,7 +111,9 @@
         sim.time_stepping.main_loop()
 
         s_fft = sim.state.get_var("s_fft")
-        assert np.allclose(s_fft, self.s_exact2_fft)
+        assert np.allclose(s_fft, self.s_exact2_fft), abs(
+            s_fft - self.s_exact2_fft
+        ).max()
 
     def test_Euler(self):
         self._test_type_time_scheme("Euler")