@@ -24,12 +24,17 @@ function Base.show(io::IO, ml::MultiLevel)
24
24
op = operator_complexity (ml)
25
25
g = grid_complexity (ml)
26
26
c = ml. coarse_solver
27
- total_nnz = sum (nnz (level. A) for level in ml. levels) + nnz (ml. final_A)
27
+ total_nnz = nnz (ml. final_A)
28
+ if ! isempty (ml. levels)
29
+ total_nnz += sum (nnz (level. A) for level in ml. levels)
30
+ end
28
31
lstr = " "
32
+ if ! isempty (ml. levels)
29
33
for (i, level) in enumerate (ml. levels)
30
34
lstr = lstr *
31
35
@sprintf " %2d %10d %10d [%5.2f%%]\n " i size (level. A, 1 ) nnz (level. A) (100 * nnz (level. A) / total_nnz)
32
36
end
37
+ end
33
38
lstr = lstr *
34
39
@sprintf " %2d %10d %10d [%5.2f%%]" length (ml. levels) + 1 size (ml. final_A, 1 ) nnz (ml. final_A) (100 * nnz (ml. final_A) / total_nnz)
35
40
str = """
@@ -47,13 +52,21 @@ function Base.show(io::IO, ml::MultiLevel)
47
52
end
48
53
49
54
function operator_complexity (ml:: MultiLevel )
50
- (sum (nnz (level. A) for level in ml. levels) +
51
- nnz (ml. final_A)) / nnz (ml. levels[1 ]. A)
55
+ if ! isempty (ml. levels)
56
+ (sum (nnz (level. A) for level in ml. levels) +
57
+ nnz (ml. final_A)) / nnz (ml. levels[1 ]. A)
58
+ else
59
+ 1.
60
+ end
52
61
end
53
62
54
63
function grid_complexity (ml:: MultiLevel )
55
- (sum (size (level. A, 1 ) for level in ml. levels) +
56
- size (ml. final_A, 1 )) / size (ml. levels[1 ]. A, 1 )
64
+ if ! isempty (ml. levels)
65
+ (sum (size (level. A, 1 ) for level in ml. levels) +
66
+ size (ml. final_A, 1 )) / size (ml. levels[1 ]. A, 1 )
67
+ else
68
+ 1.
69
+ end
57
70
end
58
71
59
72
abstract type Cycle end
0 commit comments