func main() { mpi.Start(false) defer func() { mpi.Stop(false) }() myrank := mpi.Rank() if myrank == 0 { chk.PrintTitle("Test MUMPS Sol 01a") } var t la.Triplet switch mpi.Size() { case 1: t.Init(5, 5, 13) t.Put(0, 0, 1.0) t.Put(0, 0, 1.0) t.Put(1, 0, 3.0) t.Put(0, 1, 3.0) t.Put(2, 1, -1.0) t.Put(4, 1, 4.0) t.Put(1, 2, 4.0) t.Put(2, 2, -3.0) t.Put(3, 2, 1.0) t.Put(4, 2, 2.0) t.Put(2, 3, 2.0) t.Put(1, 4, 6.0) t.Put(4, 4, 1.0) case 2: if myrank == 0 { t.Init(5, 5, 6) t.Put(0, 0, 1.0) t.Put(0, 0, 1.0) t.Put(1, 0, 3.0) t.Put(0, 1, 3.0) t.Put(2, 1, -1.0) t.Put(4, 1, 4.0) } else { t.Init(5, 5, 7) t.Put(1, 2, 4.0) t.Put(2, 2, -3.0) t.Put(3, 2, 1.0) t.Put(4, 2, 2.0) t.Put(2, 3, 2.0) t.Put(1, 4, 6.0) t.Put(4, 4, 1.0) } default: chk.Panic("this test needs 1 or 2 procs") } b := []float64{8.0, 45.0, -3.0, 3.0, 19.0} x_correct := []float64{1, 2, 3, 4, 5} sum_b_to_root := false la.RunMumpsTestR(&t, 1e-14, b, x_correct, sum_b_to_root) }
func main() { mpi.Start(false) defer func() { mpi.Stop(false) }() myrank := mpi.Rank() if myrank == 0 { chk.PrintTitle("Test MUMPS Sol 02") } ndim := 10 id, sz := mpi.Rank(), mpi.Size() start, endp1 := (id*ndim)/sz, ((id+1)*ndim)/sz if mpi.Size() > ndim { chk.Panic("the number of processors must be smaller than or equal to %d", ndim) } b := make([]float64, ndim) var t la.Triplet t.Init(ndim, ndim, ndim*ndim) for i := start; i < endp1; i++ { j := i if i > 0 { j = i - 1 } for ; j < ndim; j++ { val := 10.0 - float64(j) if i > j { val -= 1.0 } t.Put(i, j, val) } b[i] = float64(i + 1) } x_correct := []float64{-1, 8, -65, 454, -2725, 13624, -54497, 163490, -326981, 326991} sum_b_to_root := true la.RunMumpsTestR(&t, 1e-4, b, x_correct, sum_b_to_root) }
func main() { mpi.Start(false) defer func() { mpi.Stop(false) }() myrank := mpi.Rank() if myrank == 0 { chk.PrintTitle("Test MUMPS Sol 01b") } var t la.Triplet b := []float64{8.0, 45.0, -3.0, 3.0, 19.0} switch mpi.Size() { case 1: t.Init(5, 5, 13) t.Put(0, 0, 1.0) t.Put(0, 0, 1.0) t.Put(1, 0, 3.0) t.Put(0, 1, 3.0) t.Put(2, 1, -1.0) t.Put(4, 1, 4.0) t.Put(1, 2, 4.0) t.Put(2, 2, -3.0) t.Put(3, 2, 1.0) t.Put(4, 2, 2.0) t.Put(2, 3, 2.0) t.Put(1, 4, 6.0) t.Put(4, 4, 1.0) case 2: la.VecFill(b, 0) if myrank == 0 { t.Init(5, 5, 8) t.Put(0, 0, 1.0) t.Put(0, 0, 1.0) t.Put(1, 0, 3.0) t.Put(0, 1, 3.0) t.Put(2, 1, -1.0) t.Put(4, 1, 1.0) t.Put(4, 1, 1.5) t.Put(4, 1, 1.5) b[0] = 8.0 b[1] = 40.0 b[2] = 1.5 } else { t.Init(5, 5, 8) t.Put(1, 2, 4.0) t.Put(2, 2, -3.0) t.Put(3, 2, 1.0) t.Put(4, 2, 2.0) t.Put(2, 3, 2.0) t.Put(1, 4, 6.0) t.Put(4, 4, 0.5) t.Put(4, 4, 0.5) b[1] = 5.0 b[2] = -4.5 b[3] = 3.0 b[4] = 19.0 } default: chk.Panic("this test needs 1 or 2 procs") } x_correct := []float64{1, 2, 3, 4, 5} sum_b_to_root := true la.RunMumpsTestR(&t, 1e-14, b, x_correct, sum_b_to_root) }