Changed the rhs in several TEST_sstruct/periodic runs (#291)

The previous -rhsone option on tests 80-95 resulted in CG solving the problem exactly in 4 or 5 iterations.  This required the code to be bitwise accurate to pass the tests, which is not reasonable here.  The new cosine-based rhs produces more typical convergence for CG on a Laplacian problem.
This commit is contained in:
Rob Falgout 2021-03-01 06:13:53 -08:00 committed by GitHub
parent 5122196348
commit 7859aeee34
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 60 additions and 82 deletions

View File

@ -8,95 +8,65 @@
# Check SetNeighborBox for periodic problems (2D)
#=============================================================================
mpirun -np 1 ./sstruct -in sstruct.in.periodic.2D -r 20 20 1 \
-solver 11 > periodic.out.20
mpirun -np 2 ./sstruct -in sstruct.in.periodic.2D -r 20 10 1 -P 1 2 1 \
-solver 11 > periodic.out.21
mpirun -np 1 ./sstruct -in sstruct.in.periodic.2D -r 20 20 1 -solver 11 > periodic.out.20
mpirun -np 2 ./sstruct -in sstruct.in.periodic.2D -r 20 10 1 -P 1 2 1 -solver 11 > periodic.out.21
#=============================================================================
# Check SetNeighborBox for periodic problems (3D)
#=============================================================================
mpirun -np 1 ./sstruct -in sstruct.in.periodic -r 20 20 20 \
-solver 11 > periodic.out.30
mpirun -np 2 ./sstruct -in sstruct.in.periodic -r 20 20 10 -P 1 1 2 \
-solver 11 > periodic.out.31
mpirun -np 1 ./sstruct -in sstruct.in.periodic -r 20 20 20 -solver 11 > periodic.out.30
mpirun -np 2 ./sstruct -in sstruct.in.periodic -r 20 20 10 -P 1 1 2 -solver 11 > periodic.out.31
#=============================================================================
# Check SysPFMG for power-of-two and non-power-of-two systems
#=============================================================================
# power-of-two
mpirun -np 1 ./sstruct -in sstruct.in.laps.periodic -r 16 16 1 -P 1 1 1 -solver 3 \
> periodic.out.40
mpirun -np 2 ./sstruct -in sstruct.in.laps.periodic -r 8 16 1 -P 2 1 1 -solver 3 \
> periodic.out.41
mpirun -np 2 ./sstruct -in sstruct.in.laps.periodic -r 16 8 1 -P 1 2 1 -solver 3 \
> periodic.out.42
mpirun -np 1 ./sstruct -in sstruct.in.laps.periodic -r 16 16 1 -P 1 1 1 -solver 3 > periodic.out.40
mpirun -np 2 ./sstruct -in sstruct.in.laps.periodic -r 8 16 1 -P 2 1 1 -solver 3 > periodic.out.41
mpirun -np 2 ./sstruct -in sstruct.in.laps.periodic -r 16 8 1 -P 1 2 1 -solver 3 > periodic.out.42
# non-power-of-two
mpirun -np 1 ./sstruct -in sstruct.in.laps.periodic -r 22 22 1 -P 1 1 1 -solver 3 \
> periodic.out.50
mpirun -np 2 ./sstruct -in sstruct.in.laps.periodic -r 11 22 1 -P 2 1 1 -solver 3 \
> periodic.out.51
mpirun -np 2 ./sstruct -in sstruct.in.laps.periodic -r 22 11 1 -P 1 2 1 -solver 3 \
> periodic.out.52
mpirun -np 1 ./sstruct -in sstruct.in.laps.periodic -r 22 22 1 -P 1 1 1 -solver 3 > periodic.out.50
mpirun -np 2 ./sstruct -in sstruct.in.laps.periodic -r 11 22 1 -P 2 1 1 -solver 3 > periodic.out.51
mpirun -np 2 ./sstruct -in sstruct.in.laps.periodic -r 22 11 1 -P 1 2 1 -solver 3 > periodic.out.52
#=============================================================================
# Check PFMG, SMG, and SysPFMG for problems with period larger than the grid
#=============================================================================
# First check that sstruct and struct are the same here
mpirun -np 2 ./struct -d 2 -n 8 16 1 -P 2 1 1 -p 16 0 0 -istart 0 0 0 \
-solver 0 > periodic.out.60
mpirun -np 2 ./sstruct -in sstruct.in.periodic.bigA -r 1 2 1 -P 2 1 1 -rhsone \
-solver 200 > periodic.out.61
mpirun -np 2 ./struct -d 2 -n 8 16 1 -P 2 1 1 -p 16 0 0 -istart 0 0 0 \
-solver 1 > periodic.out.62
mpirun -np 2 ./sstruct -in sstruct.in.periodic.bigA -r 1 2 1 -P 2 1 1 -rhsone \
-solver 201 > periodic.out.63
mpirun -np 2 ./struct -d 2 -n 8 16 1 -P 2 1 1 -p 16 0 0 -istart 0 0 0 -solver 0 > periodic.out.60
mpirun -np 2 ./sstruct -in sstruct.in.periodic.bigA -r 1 2 1 -P 2 1 1 -rhsone -solver 200 > periodic.out.61
mpirun -np 2 ./struct -d 2 -n 8 16 1 -P 2 1 1 -p 16 0 0 -istart 0 0 0 -solver 1 > periodic.out.62
mpirun -np 2 ./sstruct -in sstruct.in.periodic.bigA -r 1 2 1 -P 2 1 1 -rhsone -solver 201 > periodic.out.63
mpirun -np 2 ./sstruct -in sstruct.in.periodic.bigB -r 3 6 1 -P 2 1 1 -rhsone \
-solver 200 > periodic.out.65
mpirun -np 2 ./sstruct -in sstruct.in.periodic.bigB -r 3 6 1 -P 2 1 1 -rhsone \
-solver 201 > periodic.out.66
mpirun -np 2 ./sstruct -in sstruct.in.periodic.bigB -r 3 6 1 -P 2 1 1 -rhsone \
-solver 3 > periodic.out.67
mpirun -np 2 ./sstruct -in sstruct.in.periodic.bigB -r 3 6 1 -P 2 1 1 -rhsone -solver 200 > periodic.out.65
mpirun -np 2 ./sstruct -in sstruct.in.periodic.bigB -r 3 6 1 -P 2 1 1 -rhsone -solver 201 > periodic.out.66
mpirun -np 2 ./sstruct -in sstruct.in.periodic.bigB -r 3 6 1 -P 2 1 1 -rhsone -solver 3 > periodic.out.67
#=============================================================================
# Check that reverse communication used to AddValues still works
#=============================================================================
mpirun -np 2 ./sstruct -in sstruct.in.periodic.add -solver 218 -P 1 1 2 \
> periodic.out.70
mpirun -np 2 ./sstruct -in sstruct.in.periodic.add -solver 218 -P 1 1 2 > periodic.out.70
#=============================================================================
# Check SetPeriodic for node/cell problems and STRUCT, SSTRUCT, PARCSR types
#=============================================================================
mpirun -np 6 ./sstruct -in sstruct.in.periodic.cellA -P 1 6 1 -solver 218 -rhsone \
> periodic.out.80
mpirun -np 6 ./sstruct -in sstruct.in.periodic.cellA -P 1 6 1 -solver 18 -rhsone \
> periodic.out.81
mpirun -np 6 ./sstruct -in sstruct.in.periodic.cellA -P 1 6 1 -solver 28 -rhsone \
> periodic.out.82
mpirun -np 6 ./sstruct -in sstruct.in.periodic.cellB -P 1 6 1 -solver 218 -rhsone \
> periodic.out.83
mpirun -np 6 ./sstruct -in sstruct.in.periodic.cellB -P 1 6 1 -solver 18 -rhsone \
> periodic.out.84
mpirun -np 6 ./sstruct -in sstruct.in.periodic.cellB -P 1 6 1 -solver 28 -rhsone \
> periodic.out.85
mpirun -np 6 ./sstruct -in sstruct.in.periodic.cellA -P 1 6 1 -solver 218 > periodic.out.80
mpirun -np 6 ./sstruct -in sstruct.in.periodic.cellA -P 1 6 1 -solver 18 > periodic.out.81
mpirun -np 6 ./sstruct -in sstruct.in.periodic.cellA -P 1 6 1 -solver 28 > periodic.out.82
mpirun -np 6 ./sstruct -in sstruct.in.periodic.cellB -P 1 6 1 -solver 218 > periodic.out.83
mpirun -np 6 ./sstruct -in sstruct.in.periodic.cellB -P 1 6 1 -solver 18 > periodic.out.84
mpirun -np 6 ./sstruct -in sstruct.in.periodic.cellB -P 1 6 1 -solver 28 > periodic.out.85
mpirun -np 6 ./sstruct -in sstruct.in.periodic.nodeA -P 1 6 1 -solver 218 -rhsone \
> periodic.out.90
mpirun -np 6 ./sstruct -in sstruct.in.periodic.nodeA -P 1 6 1 -solver 18 -rhsone \
> periodic.out.91
mpirun -np 6 ./sstruct -in sstruct.in.periodic.nodeA -P 1 6 1 -solver 28 -rhsone \
> periodic.out.92
mpirun -np 6 ./sstruct -in sstruct.in.periodic.nodeB -P 1 6 1 -solver 218 -rhsone \
> periodic.out.93
mpirun -np 6 ./sstruct -in sstruct.in.periodic.nodeB -P 1 6 1 -solver 18 -rhsone \
> periodic.out.94
mpirun -np 6 ./sstruct -in sstruct.in.periodic.nodeB -P 1 6 1 -solver 28 -rhsone \
> periodic.out.95
mpirun -np 6 ./sstruct -in sstruct.in.periodic.nodeA -P 1 6 1 -solver 218 > periodic.out.90
mpirun -np 6 ./sstruct -in sstruct.in.periodic.nodeA -P 1 6 1 -solver 18 > periodic.out.91
mpirun -np 6 ./sstruct -in sstruct.in.periodic.nodeA -P 1 6 1 -solver 28 > periodic.out.92
mpirun -np 6 ./sstruct -in sstruct.in.periodic.nodeB -P 1 6 1 -solver 218 > periodic.out.93
mpirun -np 6 ./sstruct -in sstruct.in.periodic.nodeB -P 1 6 1 -solver 18 > periodic.out.94
mpirun -np 6 ./sstruct -in sstruct.in.periodic.nodeB -P 1 6 1 -solver 28 > periodic.out.95

View File

@ -71,42 +71,50 @@ Iterations = 69
Final Relative Residual Norm = 8.673863e-07
# Output file: periodic.out.80
Iterations = 4
Final Relative Residual Norm = 0.000000e+00
Iterations = 46
Final Relative Residual Norm = 7.750679e-07
# Output file: periodic.out.81
Iterations = 4
Final Relative Residual Norm = 0.000000e+00
Iterations = 46
Final Relative Residual Norm = 7.750679e-07
# Output file: periodic.out.82
Iterations = 4
Final Relative Residual Norm = 0.000000e+00
Iterations = 46
Final Relative Residual Norm = 7.750679e-07
# Output file: periodic.out.83
Iterations = 4
Final Relative Residual Norm = 0.000000e+00
Iterations = 46
Final Relative Residual Norm = 7.750679e-07
# Output file: periodic.out.84
Iterations = 46
Final Relative Residual Norm = 7.750679e-07
# Output file: periodic.out.85
Iterations = 4
Final Relative Residual Norm = 0.000000e+00
Iterations = 46
Final Relative Residual Norm = 7.750679e-07
# Output file: periodic.out.90
Iterations = 5
Final Relative Residual Norm = 0.000000e+00
Iterations = 48
Final Relative Residual Norm = 8.594333e-07
# Output file: periodic.out.91
Iterations = 5
Final Relative Residual Norm = 0.000000e+00
Iterations = 48
Final Relative Residual Norm = 8.594333e-07
# Output file: periodic.out.92
Iterations = 5
Final Relative Residual Norm = 0.000000e+00
Iterations = 48
Final Relative Residual Norm = 8.594333e-07
# Output file: periodic.out.93
Iterations = 5
Final Relative Residual Norm = 0.000000e+00
Iterations = 48
Final Relative Residual Norm = 8.594333e-07
# Output file: periodic.out.94
Iterations = 48
Final Relative Residual Norm = 8.594333e-07
# Output file: periodic.out.95
Iterations = 5
Final Relative Residual Norm = 0.000000e+00
Iterations = 48
Final Relative Residual Norm = 8.594333e-07

View File

@ -92,8 +92,8 @@ TNUM="\
50 51 52\
60 61 62 63 65 66 67\
70\
80 81 82 83 85\
90 91 92 93 95\
80 81 82 83 84 85\
90 91 92 93 94 95\
"
for i in $TNUM