I’m trying to make my package (`FourierFlows.jl`

) compatible with v0.7.0. I have some trouble planning the fft’s. I can plan the ffts and do in-place ffts in both 0.7.0 and 0.6.3. However, I don’t know how to code it up in a manner that would work in both versions. I looked up `Compat.jl`

but I couldn’t find FFTW modules included in it.

I attach here two minimal examples of what I’m trying to do. Both examples work in the corresponding julia versions.

In julia 0.6.3

```
export AbstractGrid
abstract type AbstractGrid end
export OneDGrid
struct OneDGrid{T} <: AbstractGrid
nx::Int
nk::Int
nkr::Int
Lx::T
dx::T
x::Array{T,1}
kr::Array{T,1}
rfftplan::FFTW.rFFTWPlan{T,-1,false,1}
irfftplan::Base.DFT.ScaledPlan{Complex{T},Base.DFT.FFTW.rFFTWPlan{Complex{T},1,false, 1},T}
end
function OneDGrid(nx, Lx; x0=-0.5*Lx)
T = typeof(Lx)
dx = Lx/nx
x = Array{T}(linspace(x0, x0+Lx-dx, nx))
nk = nx
nkr = Int(nx/2+1)
kr = Array{T}(2π/Lx*cat(1, 0:Int(nx/2)))
rfftplan = plan_rfft(Array{T,1}(nx))
irfftplan = plan_irfft(Array{Complex{T},1}(nkr), nx)
OneDGrid(nx, nk, nkr, Lx, dx, x, kr, rfftplan, irfftplan)
end
n, L = 2^8, 2π
g = OneDGrid(n, L)
freal = rand(n)
fhr1 = rfft(freal)
fhr2 = deepcopy(0*fhr1)
A_mul_B!(fhr2, g.rfftplan, freal)
freal1 = irfft(fhr1, n)
freal2 = deepcopy(0*freal1)
A_mul_B!(freal2, g.irfftplan, fhr2)
println("tests for rfft")
println(vecnorm(fhr1-fhr2))
println(" ")
println("tests for irfft")
println(vecnorm(freal-freal1))
println(vecnorm(freal-freal2))
```

while in julia 0.7.0

```
using FFTW
if VERSION > v"0.6.3-"
using LinearAlgebra
end
export AbstractGrid
abstract type AbstractGrid end
export OneDGrid
struct OneDGrid{T} <: AbstractGrid
nx::Int
nk::Int
nkr::Int
Lx::T
dx::T
x::Array{T,1}
kr::Array{T,1}
rfftplan::FFTW.rFFTWPlan{T,-1,false,1}
end
function OneDGrid(nx, Lx; x0=-0.5*Lx)
T = typeof(Lx)
dx = Lx/nx
x = Array{T}(range(x0, stop=x0+Lx-dx, length=nx))
nk = nx
nkr = Int(nx/2+1)
kr = Array{T}(2π/Lx*cat(0:Int(nx/2); dims = 1))
rfftplan = plan_rfft(Array{Float64, 1}(undef, nx))
OneDGrid(nx, nk, nkr, Lx, dx, x, kr, rfftplan)
end
n, L = 2^8, 2π
g = OneDGrid(n, L)
freal = rand(n)
fhr1 = rfft(freal)
fhr2 = deepcopy(0*fhr1)
mul!(fhr2, g.rfftplan, freal)
freal1 = irfft(fhr1, n)
freal2 = deepcopy(0*freal1)
ldiv!(freal2, g.rfftplan, fhr2)
println("tests for rfft")
println(vecnorm(fhr1-fhr2))
println(" ")
println("tests for irfft")
println(vecnorm(freal-freal1))
println(vecnorm(freal-freal2))
```