Skip to content

Commit 35ef05d

Browse files
authored
Merge branch 'master' into patch-1
2 parents a1a82cc + 4a4372e commit 35ef05d

File tree

7 files changed

+42
-32
lines changed

7 files changed

+42
-32
lines changed

README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
# Algebraic Multigrid (AMG)
22

3-
[![Build Status](https://travis-ci.org/ranjanan/AlgebraicMultigrid.jl.svg?branch=master)](https://travis-ci.org/ranjanan/AlgebraicMultigrid.jl)
4-
[![Coverage Status](https://coveralls.io/repos/ranjanan/AlgebraicMultigrid.jl/badge.svg?branch=master&service=github)](https://coveralls.io/github/ranjanan/AlgebraicMultigrid.jl?branch=master)
5-
[![codecov.io](http://codecov.io/github/ranjanan/AlgebraicMultigrid.jl/coverage.svg?branch=master)](http://codecov.io/github/ranjanan/AlgebraicMultigrid.jl?branch=master)
3+
[![Build Status](https://travis-ci.org/JuliaLinearAlgebra/AlgebraicMultigrid.jl.svg?branch=master)](https://travis-ci.org/JuliaLinearAlgebra/AlgebraicMultigrid.jl)
4+
[![Coverage Status](https://coveralls.io/repos/JuliaLinearAlgebra/AlgebraicMultigrid.jl/badge.svg?branch=master&service=github)](https://coveralls.io/github/JuliaLinearAlgebra/AlgebraicMultigrid.jl?branch=master)
5+
[![codecov.io](http://codecov.io/github/JuliaLinearAlgebra/AlgebraicMultigrid.jl/coverage.svg?branch=master)](http://codecov.io/github/JuliaLinearAlgebra/AlgebraicMultigrid.jl?branch=master)
6+
[![Build status](https://ci.appveyor.com/api/projects/status/0wnj4lhk1rvl5pjp?svg=true)](https://ci.appveyor.com/project/ranjanan/algebraicmultigrid-jl)
67

78
This package lets you solve sparse linear systems using Algebraic Multigrid (AMG). This works especially well for symmetric positive definite matrices.
89

appveyor.yml

Lines changed: 16 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
environment:
22
matrix:
3-
- JULIA_URL: "https://julialang-s3.julialang.org/bin/winnt/x86/0.6/julia-0.6-latest-win32.exe"
4-
- JULIA_URL: "https://julialang-s3.julialang.org/bin/winnt/x64/0.6/julia-0.6-latest-win64.exe"
5-
- JULIA_URL: "https://julialangnightlies-s3.julialang.org/bin/winnt/x86/julia-latest-win32.exe"
6-
- JULIA_URL: "https://julialangnightlies-s3.julialang.org/bin/winnt/x64/julia-latest-win64.exe"
3+
- julia_version: 1
4+
- julia_version: 0.6
75

8-
## uncomment the following lines to allow failures on nightly julia
9-
## (tests will run but not make your overall status red)
10-
#matrix:
11-
# allow_failures:
12-
# - JULIA_URL: "https://julialangnightlies-s3.julialang.org/bin/winnt/x86/julia-latest-win32.exe"
13-
# - JULIA_URL: "https://julialangnightlies-s3.julialang.org/bin/winnt/x64/julia-latest-win64.exe"
6+
platform:
7+
- x86 # 32-bit
8+
- x64 # 64-bit
9+
10+
# # Uncomment the following lines to allow failures on nightly julia
11+
# # (tests will run but not make your overall status red)
12+
# matrix:
13+
# allow_failures:
14+
# - julia_version: latest
1415

1516
branches:
1617
only:
@@ -24,24 +25,12 @@ notifications:
2425
on_build_status_changed: false
2526

2627
install:
27-
- ps: "[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::Tls12"
28-
# If there's a newer build queued for the same PR, cancel this one
29-
- ps: if ($env:APPVEYOR_PULL_REQUEST_NUMBER -and $env:APPVEYOR_BUILD_NUMBER -ne ((Invoke-RestMethod `
30-
https://ci.appveyor.com/api/projects/$env:APPVEYOR_ACCOUNT_NAME/$env:APPVEYOR_PROJECT_SLUG/history?recordsNumber=50).builds | `
31-
Where-Object pullRequestId -eq $env:APPVEYOR_PULL_REQUEST_NUMBER)[0].buildNumber) { `
32-
throw "There are newer queued builds for this pull request, failing early." }
33-
# Download most recent Julia Windows binary
34-
- ps: (new-object net.webclient).DownloadFile(
35-
$env:JULIA_URL,
36-
"C:\projects\julia-binary.exe")
37-
# Run installer silently, output to C:\projects\julia
38-
- C:\projects\julia-binary.exe /S /D=C:\projects\julia
28+
- ps: iex ((new-object net.webclient).DownloadString("https://raw.githubusercontent.com/JuliaCI/Appveyor.jl/version-1/bin/install.ps1"))
3929

4030
build_script:
41-
# Need to convert from shallow to complete for Pkg.clone to work
42-
- IF EXIST .git\shallow (git fetch --unshallow)
43-
- C:\projects\julia\bin\julia -e "versioninfo();
44-
Pkg.clone(pwd(), \"AMG\"); Pkg.build(\"AMG\")"
31+
- echo "%JL_BUILD_SCRIPT%"
32+
- C:\julia\bin\julia -e "%JL_BUILD_SCRIPT%"
4533

4634
test_script:
47-
- C:\projects\julia\bin\julia -e "Pkg.test(\"AMG\")"
35+
- echo "%JL_TEST_SCRIPT%"
36+
- C:\julia\bin\julia -e "%JL_TEST_SCRIPT%"

src/aggregation.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@ function smoothed_aggregation(A::TA,
3535
end
3636
bsr_flag = false
3737
w = MultiLevelWorkspace(Val{bs}, eltype(A))
38+
residual!(w, size(A, 1))
3839

3940
while length(levels) + 1 < max_levels && size(A, 1) > max_coarse
40-
residual!(w, size(A, 1))
4141
A, B, bsr_flag = extend_hierarchy!(levels, strength, aggregate, smooth,
4242
improve_candidates, diagonal_dominance,
4343
keep, A, B, symmetry, bsr_flag)
@@ -46,6 +46,7 @@ function smoothed_aggregation(A::TA,
4646
#=if size(A, 1) <= max_coarse
4747
break
4848
end=#
49+
residual!(w, size(A, 1))
4950
end
5051
#=A, B = extend_hierarchy!(levels, strength, aggregate, smooth,
5152
improve_candidates, diagonal_dominance,

src/classical.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,13 @@ function ruge_stuben(_A::Union{TA, Symmetric{Ti, TA}, Hermitian{Ti, TA}},
4040
end
4141
end
4242
w = MultiLevelWorkspace(Val{bs}, eltype(A))
43+
residual!(w, size(A, 1))
4344

4445
while length(levels) + 1 < max_levels && size(A, 1) > max_coarse
45-
residual!(w, size(A, 1))
4646
A = extend_heirarchy!(levels, strength, CF, A, symmetric)
4747
coarse_x!(w, size(A, 1))
4848
coarse_b!(w, size(A, 1))
49+
residual!(w, size(A, 1))
4950
end
5051

5152
MultiLevel(levels, A, coarse_solver(A), presmoother, postsmoother, w)

test/REQUIRE

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
JLD2
2+
FileIO

test/bug.jld2

5.78 KB
Binary file not shown.

test/runtests.jl

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ using Compat, Compat.Test, Compat.LinearAlgebra
22
using Compat.SparseArrays, Compat.DelimitedFiles, Compat.Random
33
using IterativeSolvers, AlgebraicMultigrid
44
import AlgebraicMultigrid: Pinv, Classical
5+
using JLD2
6+
using FileIO
57

68
if VERSION < v"0.7-"
79
const seed! = srand
@@ -304,4 +306,18 @@ for sz in [10, 5, 2]
304306
@test AlgebraicMultigrid.grid_complexity(ml) == 1
305307
end
306308

309+
# Issue #46
310+
for f in (smoothed_aggregation, ruge_stuben)
311+
312+
a = load("bug.jld2")["G"]
313+
ml = f(a)
314+
p = aspreconditioner(ml)
315+
b = zeros(size(a,1))
316+
b[1] = 1
317+
b[2] = -1
318+
@test sum(abs2, a * solve(ml, b) - b) < 1e-10
319+
@test sum(abs2, a * cg(a, b, Pl = p, maxiter = 1000) - b) < 1e-10
320+
321+
end
322+
307323
end

0 commit comments

Comments
 (0)