Skip to content

Commit 0341389

Browse files
committed
Make number of levels accurate
1 parent 5fa0e59 commit 0341389

File tree

4 files changed

+14
-8
lines changed

4 files changed

+14
-8
lines changed

src/aggregation.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,13 @@ function smoothed_aggregation{Tv,Ti}(A::SparseMatrixCSC{Tv,Ti},
3131
levels = Vector{Level{Tv,Ti}}()
3232
bsr_flag = false
3333

34-
while length(levels) < max_levels # && size(A, 1) > max_coarse
34+
while length(levels) + 1 < max_levels && size(A, 1) > max_coarse
3535
A, B, bsr_flag = extend_hierarchy!(levels, strength, aggregate, smooth,
3636
improve_candidates, diagonal_dominance,
3737
keep, A, B, symmetry, bsr_flag)
38-
if size(A, 1) <= max_coarse
38+
#=if size(A, 1) <= max_coarse
3939
break
40-
end
40+
end=#
4141
end
4242
#=A, B = extend_hierarchy!(levels, strength, aggregate, smooth,
4343
improve_candidates, diagonal_dominance,

src/classical.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@ function ruge_stuben{Ti,Tv}(A::SparseMatrixCSC{Ti,Tv};
2020

2121
levels = Vector{Level{Ti,Tv}}()
2222

23-
while length(levels) < max_levels #&& size(A, 1) < max_coarse
23+
while length(levels) + 1 < max_levels && size(A, 1) < max_coarse
2424
A = extend_heirarchy!(levels, strength, CF, A)
25-
if size(A, 1) <= max_coarse
26-
break
27-
end
25+
#if size(A, 1) <= max_coarse
26+
# break
27+
#end
2828
end
2929
MultiLevel(levels, A, presmoother, postsmoother)
3030
end

src/multilevel.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ function solve{T}(ml::MultiLevel, b::Vector{T},
6868
log = false)
6969
x = zeros(T, size(b))
7070
residuals = Vector{T}()
71-
A = ml.levels[1].A
71+
A = length(ml) == 1 ? ml.final_A : ml.levels[1].A
7272
normb = norm(b)
7373
if normb != 0
7474
tol *= normb

test/runtests.jl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,11 @@ end
9797
@test round(AMG.operator_complexity(ml), 3) 1.142
9898
@test round(AMG.grid_complexity(ml), 3) 1.190
9999

100+
include("gmg.jl")
101+
102+
A = float.(poisson(10^6))
103+
ml = multigrid(A)
104+
@test length(ml) == 10
100105

101106
end
102107

@@ -210,4 +215,5 @@ diff = x - [0.775725, -0.571202, -0.290989, -0.157001, -0.106981, 0.622652,
210215

211216

212217
end
218+
213219
end

0 commit comments

Comments
 (0)