# Sinusoid paramters
H = 2.
L = 40.
phi = 0.

c = 1500
fc = 1e3
fs = 2.25e3 * 2
tau_lim = 30e-3

# vector element formulation used in periodic solution
rsrc = np.array([0., z_src])
rrcr = np.array([x_rcr, z_rcr])

# compute time/frequency domain parameters
faxis, _, sig_FT = initialize_nuttall(fc, fs, c, tau_lim)
tau_img = np.sqrt(x_rcr ** 2 + (z_src + z_rcr) ** 2) / c
p_img = hankel2(0, 2 * np.pi * fc * np.sqrt(x_rcr ** 2 + (z_src + z_rcr) ** 2) / c)
taxis = np.arange((faxis.size - 1) * 2) / (2 * faxis[-1]) + tau_img

# specifications for wn synthesis
eva_range = 0.1
num_eva = 4
numquad = 50000

def p_KA(facous, rANA):
    # periodic KA solution
    tcoarse = make_theta_axis(2000, eva_range, is_half=False)

    r0, q0 = rANA.rfm_1st(tcoarse[0], facous, num_eva)
    rn1, qn1 = rANA.rfm_1st(tcoarse[-1], facous, num_eva)
# sinusoid parameters
H = 2
L = 40
Phi = 0
K = 2 * pi / L

# compute source and receiver ray fans
c0 = 1500
num_rays = 500
theta_max = 0.1 * (pi / 180)

ray_src = IsoSpeedFan(c0, z_src + dz_iso, num_rays, theta_max)
ray_rcr = IsoSpeedFan(c0, z_rcr + dz_iso, num_rays, theta_max)

# compute time/frequency domain parameters
faxis, dx, sig_FT = initialize_nuttall(fc, fs, c0, tau_lim)

# setup xaxis
tau_src_ier = interp1d(ray_src.rho,
                       ray_src.travel_time,
                       fill_value="extrapolate")
tau_rcr_ier = interp1d(ray_rcr.rho,
                       ray_rcr.travel_time,
                       fill_value="extrapolate")
xaxis, yaxis, tau_img = initialize_axes(tau_src_ier, tau_rcr_ier, tau_lim,
                                        x_rcr, dx)

# wave profile
eta = (H / 2) * np.cos(K * xaxis + Phi)
eta_p = -(H * K / 2) * np.sin(K * xaxis + Phi)