@@ -6,19 +6,22 @@ testnz(g, nz) = isapprox(g.nz, nz)
6
6
function testdx (dev, g:: Union{OneDGrid{T}, TwoDGrid{T}, ThreeDGrid{T}} ) where T
7
7
dxgrid = @. g. x[2 : end ] - g. x[1 : end - 1 ]
8
8
dxones = ArrayType (dev)(g. dx* ones (T, size (dxgrid)))
9
- isapprox (dxgrid, dxones)
9
+
10
+ return isapprox (dxgrid, dxones)
10
11
end
11
12
12
13
function testdy (dev, g:: Union{TwoDGrid{T}, ThreeDGrid{T}} ) where T
13
14
dygrid = @. g. y[2 : end ] - g. y[1 : end - 1 ]
14
15
dyones = ArrayType (dev)(g. dy* ones (T, size (dygrid)))
15
- isapprox (dygrid, dyones)
16
+
17
+ return isapprox (dygrid, dyones)
16
18
end
17
19
18
20
function testdz (dev, g:: ThreeDGrid{T} ) where T
19
21
dzgrid = @. g. z[2 : end ] - g. z[1 : end - 1 ]
20
22
dzones = ArrayType (dev)(g. dz* ones (T, size (dzgrid)))
21
- isapprox (dzgrid, dzones)
23
+
24
+ return isapprox (dzgrid, dzones)
22
25
end
23
26
24
27
testx (g) = isapprox (g. x[end ]- g. x[1 ], g. Lx- g. dx)
@@ -35,7 +38,8 @@ function testwavenumberalignment(k, nx)
35
38
mid = Int (nx/ 2 )
36
39
positives = k[2 : mid]
37
40
negatives = flippednegatives (k, mid)
38
- isapprox (reshape (positives, mid- 1 ), reshape (negatives, mid- 1 ))
41
+
42
+ return isapprox (reshape (positives, mid- 1 ), reshape (negatives, mid- 1 ))
39
43
end
40
44
41
45
testk (g) = testwavenumberalignment (g. k, g. nx)
@@ -49,7 +53,8 @@ function testgridpoints(dev::Device, g::TwoDGrid{T}) where T
49
53
dYgrid = @. Y[:, 2 : end ] - Y[:, 1 : end - 1 ]
50
54
dXones = ArrayType (dev)(g. dx* ones (T, size (dXgrid)))
51
55
dYones = ArrayType (dev)(g. dy* ones (T, size (dYgrid)))
52
- isapprox (dXgrid, dXones) && isapprox (dYgrid, dYones)
56
+
57
+ return isapprox (dXgrid, dXones) && isapprox (dYgrid, dYones)
53
58
end
54
59
55
60
function testgridpoints (dev:: Device , g:: ThreeDGrid{T} ) where T
@@ -60,63 +65,70 @@ function testgridpoints(dev::Device, g::ThreeDGrid{T}) where T
60
65
dXones = ArrayType (dev)(g. dx* ones (T, size (dXgrid)))
61
66
dYones = ArrayType (dev)(g. dy* ones (T, size (dYgrid)))
62
67
dZones = ArrayType (dev)(g. dz* ones (T, size (dZgrid)))
63
- isapprox (dXgrid, dXones) && isapprox (dYgrid, dYones) && isapprox (dZgrid, dZones)
68
+
69
+ return isapprox (dXgrid, dXones) && isapprox (dYgrid, dYones) && isapprox (dZgrid, dZones)
64
70
end
65
71
66
- function testdealias (g :: OneDGrid )
67
- T = typeof (g . Lx )
68
- fh = ones (Complex{T}, size (g . kr) )
69
- dealias! (fh, g )
70
- kmax = round ( maximum (g . kr) * 2 / 3 )
71
- CUDA. @allowscalar isapprox (sum (abs .(fh[g . kr .>= kmax])), 0 )
72
+ function testdealias (grid :: OneDGrid )
73
+ fh = ones (Complex{ eltype (grid)}, size (grid . kr) )
74
+ dealias! (fh, grid )
75
+ kmax = round ( maximum (grid . kr) * 2 / 3 )
76
+
77
+ return CUDA. @allowscalar isapprox (sum (abs .(fh[grid . kr .>= kmax])), 0 )
72
78
end
73
79
74
- function testdealias (g:: TwoDGrid )
75
- T = typeof (g. Lx)
76
- fh = ones (Complex{T}, size (g. Krsq))
77
- dealias! (fh, g)
78
- kmax = round (maximum (g. kr)* 2 / 3 )
79
- lmax = floor (maximum (g. l)* 2 / 3 )
80
+ function testdealias (grid:: TwoDGrid )
81
+ fh = ones (Complex{eltype (grid)}, size (grid. Krsq))
82
+ dealias! (fh, grid)
83
+ kmax = round (maximum (grid. kr)* 2 / 3 )
84
+ lmax = floor (maximum (grid. l)* 2 / 3 )
80
85
81
- temp = 0.0
82
- for j = 1 : g. nl, i = 1 : g. nkr
83
- if (CUDA. @allowscalar g. kr[i] >= kmax) & (CUDA. @allowscalar g. l[j] >= lmax || CUDA. @allowscalar g. l[j] < - lmax)
86
+ temp = 0
87
+ for j = 1 : grid. nl, i = 1 : grid. nkr
88
+ if ((CUDA. @allowscalar grid. kr[i] >= kmax) ||
89
+ (CUDA. @allowscalar grid. l[j] >= lmax || CUDA. @allowscalar grid. l[j] < - lmax))
84
90
temp += abs .(fh[i, j]) # temp = sum of |fh| for aliased wavenumbers
85
91
end
86
92
end
87
- isapprox (temp, 0 )
93
+
94
+ return isapprox (temp, 0 )
88
95
end
89
96
90
- function testdealias (g:: ThreeDGrid )
91
- T = typeof (g. Lx)
92
- fh = ones (Complex{T}, size (g. Krsq))
93
- dealias! (fh, g)
94
- kmax = round (maximum (g. kr)* 2 / 3 )
95
- lmax = floor (maximum (g. l)* 2 / 3 )
96
- mmax = floor (maximum (g. m)* 2 / 3 )
97
-
98
- temp = 0.0
99
- for k = 1 : g. nm, j = 1 : g. nl, i = 1 : g. nkr
100
- if (CUDA. @allowscalar g. kr[i] >= kmax ) & (CUDA. @allowscalar g. l[j] >= lmax || CUDA. @allowscalar g. l[j] < - lmax) & (CUDA. @allowscalar g. m[k] >= mmax || CUDA. @allowscalar g. m[k] < - mmax)
97
+ function testdealias (grid:: ThreeDGrid )
98
+ fh = ones (Complex{eltype (grid)}, size (grid. Krsq))
99
+ dealias! (fh, grid)
100
+ kmax = round (maximum (grid. kr)* 2 / 3 )
101
+ lmax = floor (maximum (grid. l)* 2 / 3 )
102
+ mmax = floor (maximum (grid. m)* 2 / 3 )
103
+
104
+ temp = 0
105
+ for k = 1 : grid. nm, j = 1 : grid. nl, i = 1 : grid. nkr
106
+ if ((CUDA. @allowscalar grid. kr[i] >= kmax ) ||
107
+ (CUDA. @allowscalar grid. l[j] >= lmax || CUDA. @allowscalar grid. l[j] < - lmax) ||
108
+ (CUDA. @allowscalar grid. m[k] >= mmax || CUDA. @allowscalar grid. m[k] < - mmax))
101
109
temp += abs .(fh[i, j, k]) # temp = sum of |fh| for aliased wavenumbers
102
110
end
103
111
end
104
- isapprox (temp, 0 )
112
+
113
+ return isapprox (temp, 0 )
105
114
end
106
115
107
116
function testtypedonedgrid (dev:: Device , nx, Lx; T= Float64)
108
- gr = OneDGrid (nx, Lx, T= T)
109
- typeof (gr. dx)== T && typeof (gr. x[1 ])== T && typeof (gr. Lx)== T && eltype (gr) == T
117
+ grid = OneDGrid (nx, Lx, T= T)
118
+
119
+ return typeof (grid. dx)== T && typeof (grid. x[1 ])== T && typeof (grid. Lx)== T && eltype (grid) == T
110
120
end
111
121
112
122
function testtypedtwodgrid (dev:: Device , nx, Lx, ny= Lx, Ly= Lx; T= Float64)
113
- gr = TwoDGrid (nx, Lx, ny, Ly, T= T)
114
- typeof (gr. dx)== T && typeof (gr. dy)== T && typeof (gr. x[1 ])== T && typeof (gr. y[1 ])== T && typeof (gr. Lx)== T && typeof (gr. Ly)== T && eltype (gr) == T
123
+ grid = TwoDGrid (nx, Lx, ny, Ly, T= T)
124
+
125
+ return typeof (grid. dx)== T && typeof (grid. dy)== T && typeof (grid. x[1 ])== T && typeof (grid. y[1 ])== T && typeof (grid. Lx)== T && typeof (grid. Ly)== T && eltype (grid) == T
115
126
end
116
127
117
128
function testtypedthreedgrid (dev:: Device , nx, Lx, ny= nx, Ly= Lx, nz= nx, Lz= Lx; T= Float64)
118
- gr = ThreeDGrid (nx, Lx, ny, Ly, nz, Lz, T= T)
119
- typeof (gr. dx)== T && typeof (gr. dy)== T && typeof (gr. dz)== T && typeof (gr. x[1 ])== T && typeof (gr. y[1 ])== T && typeof (gr. z[1 ])== T && typeof (gr. Lx)== T && typeof (gr. Ly)== T && typeof (gr. Lz)== T && eltype (gr) == T
129
+ grid = ThreeDGrid (nx, Lx, ny, Ly, nz, Lz, T= T)
130
+
131
+ return typeof (grid. dx)== T && typeof (grid. dy)== T && typeof (grid. dz)== T && typeof (grid. x[1 ])== T && typeof (grid. y[1 ])== T && typeof (grid. z[1 ])== T && typeof (grid. Lx)== T && typeof (grid. Ly)== T && typeof (grid. Lz)== T && eltype (grid) == T
120
132
end
121
133
122
134
function testmakefilter (dev:: Device , g:: AbstractGrid )
@@ -125,7 +137,8 @@ function testmakefilter(dev::Device, g::AbstractGrid)
125
137
G = typeof (g)
126
138
nofilter = G<: OneDGrid ? filter[@. g. kr* g. dx/ π < 0.65 ] : ( G<: TwoDGrid ? filter[@. sqrt ((g. kr* g. dx/ π)^ 2 + (g. l* g. dy/ π)^ 2 ) < 0.65 ] : filter[@. sqrt ((g. kr* g. dx/ π)^ 2 + (g. l* g. dy/ π)^ 2 + (g. m* g. dz/ π)^ 2 ) < 0.65 ] )
127
139
fullfilter = G<: OneDGrid ? filter[@. g. kr* g. dx/ π > 0.999 ] : ( G<: TwoDGrid ? filter[@. sqrt ((g. kr* g. dx/ π)^ 2 + (g. l* g. dy/ π)^ 2 ) > 0.999 ] : filter[@. sqrt ((g. kr* g. dx/ π)^ 2 + (g. l* g. dy/ π)^ 2 + (g. m* g. dz/ π)^ 2 ) > 0.999 ] )
128
- nofilter== zeros (dev, T, size (nofilter)) .+ 1 && isapprox (fullfilter, zeros (dev, T, size (fullfilter)), atol= 1e-12 )
140
+
141
+ return nofilter== zeros (dev, T, size (nofilter)) .+ 1 && isapprox (fullfilter, zeros (dev, T, size (fullfilter)), atol= 1e-12 )
129
142
end
130
143
131
144
function test_plan_flows_fftrfft (:: CPU ; T= Float64)
@@ -137,7 +150,8 @@ function test_plan_flows_fftrfft(::CPU; T=Float64)
137
150
typeof (FourierFlows. plan_flows_rfft (A (rand (T, (4 ,))))) <: FFTW.rFFTWPlan{T,-1,false,1} &&
138
151
typeof (FourierFlows. plan_flows_rfft (A (rand (T, (4 , 6 ))))) <: FFTW.rFFTWPlan{T,-1,false,2} &&
139
152
typeof (FourierFlows. plan_flows_rfft (A (rand (T, (4 , 6 , 8 ))))) <: FFTW.rFFTWPlan{T,-1,false,3} &&
140
- FourierFlows. plan_flows_rfft (A (rand (T, (4 , 6 , 8 ))), [1 , 2 ]). region == [1 , 2 ])
153
+
154
+ return FourierFlows. plan_flows_rfft (A (rand (T, (4 , 6 , 8 ))), [1 , 2 ]). region == [1 , 2 ])
141
155
end
142
156
143
157
function test_plan_flows_fftrfft (:: GPU ; T= Float64)
@@ -149,5 +163,6 @@ function test_plan_flows_fftrfft(::GPU; T=Float64)
149
163
typeof (FourierFlows. plan_flows_rfft (A (rand (T, (4 ,))))) == CUDA. CUFFT. rCuFFTPlan{T,- 1 ,false ,1 } &&
150
164
typeof (FourierFlows. plan_flows_rfft (A (rand (T, (4 , 6 ))))) == CUDA. CUFFT. rCuFFTPlan{T,- 1 ,false ,2 } &&
151
165
typeof (FourierFlows. plan_flows_rfft (A (rand (T, (4 , 6 , 8 ))))) == CUDA. CUFFT. rCuFFTPlan{T,- 1 ,false ,3 } &&
152
- FourierFlows. plan_flows_rfft (A (rand (T, (4 , 6 , 8 ))), [1 , 2 ]). region == [1 , 2 ])
166
+
167
+ return FourierFlows. plan_flows_rfft (A (rand (T, (4 , 6 , 8 ))), [1 , 2 ]). region == [1 , 2 ])
153
168
end
0 commit comments