DA_gather_blocks(da, dfdx, dfdx_global)
DA_gather_blocks(da, dfdx_true, dfdx_true_global)

if comm.Get_rank() == 0:
    plt.plot(np.linspace(0, 2 * np.pi, 32), dfdx_global[8, 32, :], 'o-')
    plt.plot(np.linspace(0, 2 * np.pi, 32), dfdx_true_global[8, 32, :])

dfdy = cfd.dfdy(f, dy)
dfdy_global = np.zeros([16, 64, 32], dtype=np.float64)
dfdy_true_global = np.zeros([16, 64, 32], dtype=np.float64)

DA_gather_blocks(da, dfdy, dfdy_global)
DA_gather_blocks(da, dfdy_true, dfdy_true_global)

if comm.Get_rank() == 0:
    plt.plot(np.linspace(0, 2 * np.pi, 64), dfdy_global[8, :, 16], 'o-')
    plt.plot(np.linspace(0, 2 * np.pi, 64), dfdy_true_global[8, :, 16])

dfdz = cfd.dfdz(f, dz)
dfdz_global = np.zeros([16, 64, 32], dtype=np.float64)
dfdz_true_global = np.zeros([16, 64, 32], dtype=np.float64)

DA_gather_blocks(da, dfdz, dfdz_global)
DA_gather_blocks(da, dfdz_true, dfdz_true_global)

if comm.Get_rank() == 0:
    plt.plot(np.linspace(0, 2 * np.pi, 16), dfdz_global[:, 32, 8], 'o-')
    plt.plot(np.linspace(0, 2 * np.pi, 16), dfdz_true_global[:, 32, 8])
    plt.savefig('demo.svg')
DA_gather_blocks(da, dfdx, dfdx_global)
DA_gather_blocks(da, dfdx_true, dfdx_true_global)

if comm.Get_rank() == 0:
    plt.plot(np.linspace(0, 2*np.pi, 32), dfdx_global[8, 32, :], 'o-')
    plt.plot(np.linspace(0, 2*np.pi, 32), dfdx_true_global[8, 32, :])

dfdy = cfd.dfdy(f, dy)
dfdy_global = np.zeros([16, 64, 32], dtype=np.float64)
dfdy_true_global = np.zeros([16, 64, 32], dtype=np.float64)

DA_gather_blocks(da, dfdy, dfdy_global)
DA_gather_blocks(da, dfdy_true, dfdy_true_global)

if comm.Get_rank() == 0:
    plt.plot(np.linspace(0, 2*np.pi, 64), dfdy_global[8, :, 16], 'o-')
    plt.plot(np.linspace(0, 2*np.pi, 64), dfdy_true_global[8, :, 16])

dfdz = cfd.dfdz(f, dz)
dfdz_global = np.zeros([16, 64, 32], dtype=np.float64)
dfdz_true_global = np.zeros([16, 64, 32], dtype=np.float64)

DA_gather_blocks(da, dfdz, dfdz_global)
DA_gather_blocks(da, dfdz_true, dfdz_true_global)

if comm.Get_rank() == 0:
    plt.plot(np.linspace(0, 2*np.pi, 16), dfdz_global[:, 32, 8], 'o-')
    plt.plot(np.linspace(0, 2*np.pi, 16), dfdz_true_global[:, 32, 8])
    plt.savefig('demo.svg')