This directory contains a varity of matrices and vectors that are useful for performance debugging with PETSc. Each file contains a matrix (A), immediately followed by a right-hand-side vector (b), which together define a linear system of the form Ax=b. As shown in petsc/sles/examples/ex6.c, these objects should be loaded into PETSc programs with the routines MatLoad() and VecLoad(). The standard matrix storage format is: int MAT_COOKIE = 1211216 int number of rows int number of columns int total number of nonzeros int *number nonzeros in each row int *column indices of all nonzeros (starting index is zero) Scalar *values of all nonzeros The standard vector storage format is: int VEC_COOKIE = 1211214 int number of elements Scalar *values of all elements Each binary file has an optional .info file that contains more information about the matrices in a simple ASCII format. They are currently. -matload_block_size m indicates the natural blocksize of the problem. --------------------------------------------------------------------------- CONTENTS The following matrices are simple test examples: * tiny - 5 by 5 diagonal matrix * small - 5 point stencil on a 5 by 5 grid * medium - 181 x 181 submatrix extracted from arco1 The following matrices come from Rick Dean, Arco E&P Technology, rhd@arco.com. They arise from multiphase flow modeling of oil reservoirs, some with IMPESS (implicit pressure, explicit saturations - this means the linear system only involves the pressures), others fully implicit (all the variables are solved in the linear systems) (three degrees of freedom per node, the ones with a block size of three). These matrices have all been forced to be structurally symmetric, since BlockSolve's ILU requires this property. * arco1 - NUNKNS = 1501 NCOEFF = 26131, implicit * arco2 - same as arco1 at a later time-step * arco3 - NUNKNS = 38194 NCOEFF = 240308, IMPES * arco4 - NUNKNS = 27007 NCOEFF = 543103, implicit * arco5 - NUNKNS = 35338 NCOEFF = 153900, IMPES * arco6 - NUNKNS = 108009 NCOEFF = 2204937 The following matrices are same as the above, with zero entries, and values <1.0e-15are eliminated. This subsequently may destroy the structural symmetry of the matrices. * arco1_ns - NUNKNS = 1501 NCOEFF = 17779 * arco2_ns - NUNKNS = 1501 NCOEFF = 18844 * arco3_ns - NUNKNS = 38194 NCOEFF = 232073 * arco4_ns - NUNKNS = 27007 NCOEFF = 375541 * arco5_ns - NUNKNS = 35338 NCOEFF = 151314 * arco6_ns - NUNKNS = 108009 NCOEFF = 1522337 The following matrices arise from modeling 3-dimensional, compressible flow, where each grid point has 5 unknowns. Mapped structured grids are employed using sizes 48x8x8 (cfd.1.X) and 96x16x16 (cfd.2.X). * cfd.1.10 - dim = 15360, nonzeros = 496000, CFL number = 10 * cfd.2.10 - dim = 122880, nonzeros = 4134400, CFL number = 10 * cfd.2.100 - dim = 122880, nonzeros = 4134400, CFL number = 100 The following matrix comes from UT Austin PE department, Kamy Sepehrnoori. * ut1 - dim = 2400, implicit The following matrix is from Mark Adams * madams.mat - dim = 22032, nonzeros = 1467720 BlockSize - 3 The following matrix is from Lois' Helmholtz code, which requires the use of complex numbers (k=4,m_ang = 120,m_rad=21) * helmholtz1 The following matrix is contributed by Farzad Taghaddosi as a preconditioner. It requires use of complex numbers * farzad_B_rhs The following matrices are obtained from Harwell-Boeing Sparse Matrix Collection from MatrixMarket, and are made symmetric (How?). Google search on each of these matrices (without the .sym sufix) should take you to its web page. - real symmetric positive definite, from the structural engineering code. * bcsstk15.sym - dim = 3948, nonzeros = 117816 * bcsstk18.sym - dim = 11948, nonzeros = 149090 * nos5.sym - dim = 468, nonzeros = 5172 (3 story building with attached tower) * nos7.sym - dim = 729, nonzeros = 4617 (Finite difference approximation to diffusion equation with varying diffusivity in a 3D unit cube with Dirichlet boundary) - real symmetric indefinite, Structural Engineering Matrices * bcsstk24.sym - dim = 3562, nonzeros = 159910 (Calgary Olympic Saddledome arena) * bcsstk28.sym - dim = 4410, nonzeros = 219024 (Solid element model, linear statics) The following matrix comes from Toshiro K. Ohsumi through petsc-maint. It is very close to symmetric structure. * ohsumi.gz - dim = 8140, nonzeros=1456140. Some additional matrice files * poisson1 - dim = 50, nonzeros=708 * poisson2 - dim = 962, nonzeros=19908 * poisson3 - dim = 16130, nonzeros=361668 The following matrix comes from Sylvain Rabier through petsc-maint. It is very close to symmetric structure and is ill conditioned. * sylvain - dim = 13122, nonzeros=397540. These are NIMROD matrices converted from AZTEC's DVBR format to PETSc BAIJ (bs = 3, complex, Hermitian) format. The nimrod-ldt matrix has worse conditioning than nimrod-sdt * nimrod-sdt - dim = 21507, nonzeros=1882377 * nimrod-sdt - dim = 21507, nonzeros=1882377 This matrix was provided by Gerhard Venter Vanderplaats Research and Development, Inc. k_matrix.dat - dim = 855504, nonzeros=23337184, some inodes This matrix is contributed by Harald Pfeiffer which revealed a nasty bug in the symbolic LU factorization of petsc-2.3.0. Finite-difference approximation of the 2D-Laplacian in a spectral element code (four elements with order 13^2 each, arranged in a 2x2 grid). In the interior of each element, the matrix just contains 5-point stencils of the Laplacian on an unequally spaced grid. On internal boundaries, the matrix contains equations enforcing continuity of function value and first derivative across the boundary. Row 130 corresponds approximately to the first elements of internal interface matching, which mess up the nice banded structure. * hpfeiffer type=aij, dim=676, nonzeros=2924 The following matrix is singular, used to test -pc_factor_shift_type/amount, e.g., ./ex10 -f0 test_t-0.000000.mat -rhs 0 -pc_type lu -pc_factor_shift_type nonzero Contributed by Matt. * test_t-0.000000.mat - dim = 16, nonzeros = 114 The Matrix AhmedHassan has condition number 1.e+9 (./ex10 -f0 ~/tmp/binaryoutput -pc_type lu -pc_factor_mat_solver_package superlu -ksp_type preonly -mat_superlu_conditionnumber) In this case, '-mat_superlu_equil' does not reduce conditioner number. Contributed by Ahmed M. Hassan [petsc-maint #46322] * AhmedHassan - dim 202500 nonzeros=1011600 underworld32.gz : From Jed: It contains 4 matrices and 2 vectors, src/ksp/ksp/examples/tests/ex11.c puts them together and solves a system. Contributed by Jed Brown, Sep 21, 2017, for testing MatTransposeMatMult() (see petsc/src/mat/examples/tests/ex209.c). It comes from a bundle adjustment problem: solving for camera "poses" (position and orientation) as well as "landmark" positions. The matrix is measuring misfits between the modeled and actual location of landmarks in a bunch of images. It seems every entry is connected to the last few entries, in the sense that images contain many landmarks. * ceres_solver_iteration_001_A.petsc - dim = rows=574902, cols=184446