Adam,

    I think you must be misunderstanding something. I have modified the program 
to multiply the original matrix by the solution and get back the identity so it 
is finding  the inverse (also got rid of the c++ isms and changed it to match 
petsc-dev). Attached is the new program. 

    Please explain why you think the true inverse is the transpose of what the 
code generates.

   Barry
[see attached file: ex1.c]

Matrix Object: 1 MPI processes
  type: seqaij
row 0: (0, 10)  (1, 4)  (2, 6)  (3, 9)  (4, 9)  (5, 5)  (6, 1)  (7, 7)  (8, 2)  
(9, 2)  (10, 10)  (11, 4) 
row 1: (0, 0)  (1, 2)  (2, 5)  (3, 9)  (4, 3)  (5, 3)  (6, 2)  (7, 9)  (8, 6)  
(9, 1)  (10, 9)  (11, 5) 
row 2: (0, 5)  (1, 9)  (2, 5)  (3, 5)  (4, 9)  (5, 10)  (6, 8)  (7, 0)  (8, 9)  
(9, 3)  (10, 6)  (11, 2) 
row 3: (0, 9)  (1, 7)  (2, 10)  (3, 7)  (4, 6)  (5, 3)  (6, 4)  (7, 6)  (8, 2)  
(9, 1)  (10, 1)  (11, 2) 
row 4: (0, 3)  (1, 3)  (2, 2)  (3, 7)  (4, 3)  (5, 7)  (6, 7)  (7, 3)  (8, 9)  
(9, 9)  (10, 1)  (11, 7) 
row 5: (0, 7)  (1, 3)  (2, 4)  (3, 6)  (4, 4)  (5, 1)  (6, 7)  (7, 8)  (8, 8)  
(9, 4)  (10, 6)  (11, 2) 
row 6: (0, 7)  (1, 6)  (2, 9)  (3, 0)  (4, 10)  (5, 9)  (6, 2)  (7, 2)  (8, 7)  
(9, 6)  (10, 7)  (11, 4) 
row 7: (0, 6)  (1, 0)  (2, 9)  (3, 4)  (4, 8)  (5, 5)  (6, 3)  (7, 1)  (8, 8)  
(9, 9)  (10, 10)  (11, 3) 
row 8: (0, 7)  (1, 5)  (2, 8)  (3, 1)  (4, 0)  (5, 2)  (6, 7)  (7, 9)  (8, 1)  
(9, 8)  (10, 1)  (11, 0) 
row 9: (0, 9)  (1, 9)  (2, 9)  (3, 0)  (4, 8)  (5, 10)  (6, 1)  (7, 10)  (8, 7) 
 (9, 10)  (10, 8)  (11, 10) 
row 10: (0, 0)  (1, 6)  (2, 2)  (3, 1)  (4, 1)  (5, 8)  (6, 4)  (7, 8)  (8, 6)  
(9, 2)  (10, 3)  (11, 9) 
row 11: (0, 4)  (1, 7)  (2, 2)  (3, 0)  (4, 7)  (5, 6)  (6, 0)  (7, 2)  (8, 5)  
(9, 6)  (10, 7)  (11, 1) 
Matrix Object: 1 MPI processes
  type: seqdense
1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 1.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 1.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 1.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 1.0000000000000000e+00 
Matrix Object: 1 MPI processes
  type: seqaij
row 0: (0, 0.1)  (1, 4)  (2, 6)  (3, 9)  (4, 9)  (5, 5)  (6, 1)  (7, 7)  (8, 2) 
 (9, 2)  (10, 10)  (11, 4) 
row 1: (0, 0)  (1, 0.5)  (2, 5)  (3, 9)  (4, 3)  (5, 3)  (6, 2)  (7, 9)  (8, 6) 
 (9, 1)  (10, 9)  (11, 5) 
row 2: (0, 0.5)  (1, 3.5)  (2, -0.0645161)  (3, -31)  (4, -6)  (5, -3)  (6, 
0.5)  (7, -35)  (8, -13)  (9, -1.5)  (10, -30.5)  (11, -17.5) 
row 3: (0, 0.9)  (1, 1.7)  (2, 0.251613)  (3, -0.116279)  (4, -5.69032)  (5, 
-5.84516)  (6, -0.425806)  (7, -6.79355)  (8, -6.72903)  (9, -2.12258)  (10, 
-15.6258)  (11, -5.69677) 
row 4: (0, 0.3)  (1, 0.9)  (2, 0.277419)  (3, -0.55814)  (4, -0.255658)  (5, 
0.369842)  (6, 4.52363)  (7, -1.28207)  (8, 2.85071)  (9, 6.73143)  (10, 
-10.3601)  (11, 2.97524) 
row 5: (0, 0.7)  (1, 0.1)  (2, 0.0451613)  (3, -0.0232558)  (4, 0.629267)  (5, 
-0.329687)  (6, 3.22094)  (7, 4.42942)  (8, 4.63675)  (9, -1.71749)  (10, 
5.63329)  (11, -2.51438) 
row 6: (0, 0.7)  (1, 1.6)  (2, 0.206452)  (3, 1.66279)  (4, -2.45445)  (5, 
-3.93857)  (6, 0.0444568)  (7, 15.5209)  (8, 35.1319)  (9, 16.5966)  (10, 
14.638)  (11, 3.68495) 
row 7: (0, 0.6)  (1, -1.2)  (2, -0.735484)  (3, 1.55814)  (4, -2.72363)  (5, 
-4.45356)  (6, 1.44469)  (7, -0.0727551)  (8, -7.41708)  (9, -2.08795)  (10, 
-7.56138)  (11, -5.81272) 
row 8: (0, 0.7)  (1, 1.1)  (2, 0.109677)  (3, 1.37209)  (4, 0.289988)  (5, 
-1.13475)  (6, 0.309978)  (7, -0.578186)  (8, -0.141142)  (9, -1.67585)  (10, 
9.37253)  (11, -6.7832) 
row 9: (0, 0.9)  (1, 2.7)  (2, 0.63871)  (3, 1.46512)  (4, -1.01477)  (5, 
-2.72166)  (6, 0.371714)  (7, -1.21452)  (8, -0.0857132)  (9, 0.347749)  (10, 
8.07184)  (11, -0.411052) 
row 10: (0, 0)  (1, 3)  (2, 0.83871)  (3, 4.13106e-16)  (4, 0.758727)  (5, 
-0.407335)  (6, -0.201814)  (7, -1.1833)  (8, 0.431543)  (9, -1.37252)  (10, 
0.0782676)  (11, 1.62437) 
row 11: (0, 0.4)  (1, 2.7)  (2, 0.896774)  (3, 0.0116279)  (4, -0.190928)  (5, 
0.419064)  (6, -0.299173)  (7, -0.648141)  (8, -0.570316)  (9, 2.96665)  (10, 
-1.34839)  (11, 6.34192) 
Matrix Object: 1 MPI processes
  type: seqdense
-9.6555301489395196e-01 5.2560254734804284e+00 7.1846440184462583e+00 
-6.1331699956450372e+00 6.4983079560540347e-01 3.4596941129901471e-01 
1.0107504375266285e+00 -6.8628221518606729e+00 7.5964800479384031e-01 
9.9409527390937242e+00 -1.1538273684377408e+01 -8.7812172713296324e+00 
2.0776013031269080e-02 -6.2847383863353556e-01 -6.6052840736344010e-01 
8.0956641284817366e-01 -1.6685804755341449e-01 -6.9558502635303610e-02 
-4.7043374819017370e-01 8.8565458307188294e-01 -1.4371117297291947e-01 
-9.3869998563905455e-01 1.2914077666714618e+00 1.0574136681100246e+00 
-2.3457711527316882e-01 9.1412301356649039e-01 1.1920152012252558e+00 
-9.3204325120013032e-01 6.1684149677475715e-02 -5.5669152161757513e-03 
1.5331009643936852e-01 -1.0495531120351829e+00 1.3707009393529770e-01 
1.6438364660096838e+00 -1.8889315346051050e+00 -1.4754676224028302e+00 
-2.7270521239062756e-01 1.5893219146430135e+00 2.0634754873336365e+00 
-1.7209959749076202e+00 2.5337782971752582e-01 2.9994338843454111e-02 
2.5534077638214847e-01 -1.9835560388079614e+00 2.1919306261832680e-01 
2.8264140536952880e+00 -3.3585356810562166e+00 -2.4823956307658124e+00 
1.7809631276633557e+00 -9.1417366043401938e+00 -1.2382493173582191e+01 
1.0476797534295141e+01 -1.0702242259054311e+00 -4.4257528541486152e-01 
-1.5514634845537427e+00 1.1648521003544433e+01 -1.3496709122035624e+00 
-1.7047888183523145e+01 1.9724452609789598e+01 1.4992041216496093e+01 
-9.8718243165411523e-01 5.8306164576852701e+00 7.6462462368614474e+00 
-6.7409300641732255e+00 8.2470796373523481e-01 2.4183044407138940e-01 
1.5018770736493510e+00 -7.5966352267475976e+00 9.5172226504897151e-01 
1.0477013653074360e+01 -1.2424746738008650e+01 -9.4366200444961059e+00 
1.0136311908130891e+00 -5.2691310897505188e+00 -6.8579746975031277e+00 
5.9224590762975922e+00 -6.9910423550554868e-01 -2.6032159562560986e-01 
-1.1422819623877292e+00 6.7605747527325546e+00 -7.2292745381698886e-01 
-9.5958819114572318e+00 1.1268446709048680e+01 8.4067370921887932e+00 
2.2091262060824907e-01 -8.3435384842300975e-01 -1.3941401244916276e+00 
9.8039662735021815e-01 -3.8000873314291278e-02 8.9523733294413765e-03 
1.4913622793099915e-01 9.8067426906640520e-01 -5.9946728984266576e-02 
-1.8517463266334733e+00 1.9784368072815006e+00 1.5366714023840424e+00 
-1.0121118595265313e+00 4.8899231637686178e+00 6.4363614363996273e+00 
-5.5352594765178100e+00 6.3588032578740750e-01 3.6692073791888746e-01 
1.0886795922616135e+00 -6.2890108659346788e+00 6.4878885440659029e-01 
8.9338546663354137e+00 -1.0480724683245333e+01 -7.8880863422387675e+00 
3.4828232494328459e-01 -1.8956049209699504e+00 -2.5686607685099623e+00 
2.1723348669813345e+00 -1.8046993568519984e-01 -1.4627336724353771e-01 
-4.3324999763575017e-01 2.4726324401858575e+00 -2.4110495922156525e-01 
-3.4910576517078957e+00 4.0543680896562346e+00 3.1697497725756127e+00 
-7.9100624200083347e-02 4.5467040831090605e-01 7.8405305146143733e-01 
-5.8064262143845780e-01 -6.7175618016896713e-02 1.8327382703008988e-03 
-1.7759194277182197e-01 -4.5740681002782790e-01 6.1885044052317102e-02 
1.0071945338473738e+00 -1.0089198716799244e+00 -8.0628484740612849e-01 
7.2503137134149309e-01 -4.0345450207039040e+00 -5.1688665129699460e+00 
4.5837925160863282e+00 -5.6171429205502965e-01 -2.2648736352508647e-01 
-1.1066305876267444e+00 5.2407359063046410e+00 -6.8000756820565422e-01 
-7.0772451277993547e+00 8.5513959650299824e+00 6.3419246076729259e+00 
anlextwls002-241:Downloads barrysmith$ ./ex1 
Matrix Object: 1 MPI processes
  type: seqaij
row 0: (0, 10)  (1, 4)  (2, 6)  (3, 9)  (4, 9)  (5, 5)  (6, 1)  (7, 7)  (8, 2)  
(9, 2)  (10, 10)  (11, 4) 
row 1: (0, 0)  (1, 2)  (2, 5)  (3, 9)  (4, 3)  (5, 3)  (6, 2)  (7, 9)  (8, 6)  
(9, 1)  (10, 9)  (11, 5) 
row 2: (0, 5)  (1, 9)  (2, 5)  (3, 5)  (4, 9)  (5, 10)  (6, 8)  (7, 0)  (8, 9)  
(9, 3)  (10, 6)  (11, 2) 
row 3: (0, 9)  (1, 7)  (2, 10)  (3, 7)  (4, 6)  (5, 3)  (6, 4)  (7, 6)  (8, 2)  
(9, 1)  (10, 1)  (11, 2) 
row 4: (0, 3)  (1, 3)  (2, 2)  (3, 7)  (4, 3)  (5, 7)  (6, 7)  (7, 3)  (8, 9)  
(9, 9)  (10, 1)  (11, 7) 
row 5: (0, 7)  (1, 3)  (2, 4)  (3, 6)  (4, 4)  (5, 1)  (6, 7)  (7, 8)  (8, 8)  
(9, 4)  (10, 6)  (11, 2) 
row 6: (0, 7)  (1, 6)  (2, 9)  (3, 0)  (4, 10)  (5, 9)  (6, 2)  (7, 2)  (8, 7)  
(9, 6)  (10, 7)  (11, 4) 
row 7: (0, 6)  (1, 0)  (2, 9)  (3, 4)  (4, 8)  (5, 5)  (6, 3)  (7, 1)  (8, 8)  
(9, 9)  (10, 10)  (11, 3) 
row 8: (0, 7)  (1, 5)  (2, 8)  (3, 1)  (4, 0)  (5, 2)  (6, 7)  (7, 9)  (8, 1)  
(9, 8)  (10, 1)  (11, 0) 
row 9: (0, 9)  (1, 9)  (2, 9)  (3, 0)  (4, 8)  (5, 10)  (6, 1)  (7, 10)  (8, 7) 
 (9, 10)  (10, 8)  (11, 10) 
row 10: (0, 0)  (1, 6)  (2, 2)  (3, 1)  (4, 1)  (5, 8)  (6, 4)  (7, 8)  (8, 6)  
(9, 2)  (10, 3)  (11, 9) 
row 11: (0, 4)  (1, 7)  (2, 2)  (3, 0)  (4, 7)  (5, 6)  (6, 0)  (7, 2)  (8, 5)  
(9, 6)  (10, 7)  (11, 1) 
Matrix Object: 1 MPI processes
  type: seqdense
1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 1.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 1.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 1.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
1.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 1.0000000000000000e+00 
Matrix Object: 1 MPI processes
  type: seqaij
row 0: (0, 0.1)  (1, 4)  (2, 6)  (3, 9)  (4, 9)  (5, 5)  (6, 1)  (7, 7)  (8, 2) 
 (9, 2)  (10, 10)  (11, 4) 
row 1: (0, 0)  (1, 0.5)  (2, 5)  (3, 9)  (4, 3)  (5, 3)  (6, 2)  (7, 9)  (8, 6) 
 (9, 1)  (10, 9)  (11, 5) 
row 2: (0, 0.5)  (1, 3.5)  (2, -0.0645161)  (3, -31)  (4, -6)  (5, -3)  (6, 
0.5)  (7, -35)  (8, -13)  (9, -1.5)  (10, -30.5)  (11, -17.5) 
row 3: (0, 0.9)  (1, 1.7)  (2, 0.251613)  (3, -0.116279)  (4, -5.69032)  (5, 
-5.84516)  (6, -0.425806)  (7, -6.79355)  (8, -6.72903)  (9, -2.12258)  (10, 
-15.6258)  (11, -5.69677) 
row 4: (0, 0.3)  (1, 0.9)  (2, 0.277419)  (3, -0.55814)  (4, -0.255658)  (5, 
0.369842)  (6, 4.52363)  (7, -1.28207)  (8, 2.85071)  (9, 6.73143)  (10, 
-10.3601)  (11, 2.97524) 
row 5: (0, 0.7)  (1, 0.1)  (2, 0.0451613)  (3, -0.0232558)  (4, 0.629267)  (5, 
-0.329687)  (6, 3.22094)  (7, 4.42942)  (8, 4.63675)  (9, -1.71749)  (10, 
5.63329)  (11, -2.51438) 
row 6: (0, 0.7)  (1, 1.6)  (2, 0.206452)  (3, 1.66279)  (4, -2.45445)  (5, 
-3.93857)  (6, 0.0444568)  (7, 15.5209)  (8, 35.1319)  (9, 16.5966)  (10, 
14.638)  (11, 3.68495) 
row 7: (0, 0.6)  (1, -1.2)  (2, -0.735484)  (3, 1.55814)  (4, -2.72363)  (5, 
-4.45356)  (6, 1.44469)  (7, -0.0727551)  (8, -7.41708)  (9, -2.08795)  (10, 
-7.56138)  (11, -5.81272) 
row 8: (0, 0.7)  (1, 1.1)  (2, 0.109677)  (3, 1.37209)  (4, 0.289988)  (5, 
-1.13475)  (6, 0.309978)  (7, -0.578186)  (8, -0.141142)  (9, -1.67585)  (10, 
9.37253)  (11, -6.7832) 
row 9: (0, 0.9)  (1, 2.7)  (2, 0.63871)  (3, 1.46512)  (4, -1.01477)  (5, 
-2.72166)  (6, 0.371714)  (7, -1.21452)  (8, -0.0857132)  (9, 0.347749)  (10, 
8.07184)  (11, -0.411052) 
row 10: (0, 0)  (1, 3)  (2, 0.83871)  (3, 4.13106e-16)  (4, 0.758727)  (5, 
-0.407335)  (6, -0.201814)  (7, -1.1833)  (8, 0.431543)  (9, -1.37252)  (10, 
0.0782676)  (11, 1.62437) 
row 11: (0, 0.4)  (1, 2.7)  (2, 0.896774)  (3, 0.0116279)  (4, -0.190928)  (5, 
0.419064)  (6, -0.299173)  (7, -0.648141)  (8, -0.570316)  (9, 2.96665)  (10, 
-1.34839)  (11, 6.34192) 
Matrix Object: 1 MPI processes
  type: seqdense
-9.6555301489395196e-01 5.2560254734804284e+00 7.1846440184462583e+00 
-6.1331699956450372e+00 6.4983079560540347e-01 3.4596941129901471e-01 
1.0107504375266285e+00 -6.8628221518606729e+00 7.5964800479384031e-01 
9.9409527390937242e+00 -1.1538273684377408e+01 -8.7812172713296324e+00 
2.0776013031269080e-02 -6.2847383863353556e-01 -6.6052840736344010e-01 
8.0956641284817366e-01 -1.6685804755341449e-01 -6.9558502635303610e-02 
-4.7043374819017370e-01 8.8565458307188294e-01 -1.4371117297291947e-01 
-9.3869998563905455e-01 1.2914077666714618e+00 1.0574136681100246e+00 
-2.3457711527316882e-01 9.1412301356649039e-01 1.1920152012252558e+00 
-9.3204325120013032e-01 6.1684149677475715e-02 -5.5669152161757513e-03 
1.5331009643936852e-01 -1.0495531120351829e+00 1.3707009393529770e-01 
1.6438364660096838e+00 -1.8889315346051050e+00 -1.4754676224028302e+00 
-2.7270521239062756e-01 1.5893219146430135e+00 2.0634754873336365e+00 
-1.7209959749076202e+00 2.5337782971752582e-01 2.9994338843454111e-02 
2.5534077638214847e-01 -1.9835560388079614e+00 2.1919306261832680e-01 
2.8264140536952880e+00 -3.3585356810562166e+00 -2.4823956307658124e+00 
1.7809631276633557e+00 -9.1417366043401938e+00 -1.2382493173582191e+01 
1.0476797534295141e+01 -1.0702242259054311e+00 -4.4257528541486152e-01 
-1.5514634845537427e+00 1.1648521003544433e+01 -1.3496709122035624e+00 
-1.7047888183523145e+01 1.9724452609789598e+01 1.4992041216496093e+01 
-9.8718243165411523e-01 5.8306164576852701e+00 7.6462462368614474e+00 
-6.7409300641732255e+00 8.2470796373523481e-01 2.4183044407138940e-01 
1.5018770736493510e+00 -7.5966352267475976e+00 9.5172226504897151e-01 
1.0477013653074360e+01 -1.2424746738008650e+01 -9.4366200444961059e+00 
1.0136311908130891e+00 -5.2691310897505188e+00 -6.8579746975031277e+00 
5.9224590762975922e+00 -6.9910423550554868e-01 -2.6032159562560986e-01 
-1.1422819623877292e+00 6.7605747527325546e+00 -7.2292745381698886e-01 
-9.5958819114572318e+00 1.1268446709048680e+01 8.4067370921887932e+00 
2.2091262060824907e-01 -8.3435384842300975e-01 -1.3941401244916276e+00 
9.8039662735021815e-01 -3.8000873314291278e-02 8.9523733294413765e-03 
1.4913622793099915e-01 9.8067426906640520e-01 -5.9946728984266576e-02 
-1.8517463266334733e+00 1.9784368072815006e+00 1.5366714023840424e+00 
-1.0121118595265313e+00 4.8899231637686178e+00 6.4363614363996273e+00 
-5.5352594765178100e+00 6.3588032578740750e-01 3.6692073791888746e-01 
1.0886795922616135e+00 -6.2890108659346788e+00 6.4878885440659029e-01 
8.9338546663354137e+00 -1.0480724683245333e+01 -7.8880863422387675e+00 
3.4828232494328459e-01 -1.8956049209699504e+00 -2.5686607685099623e+00 
2.1723348669813345e+00 -1.8046993568519984e-01 -1.4627336724353771e-01 
-4.3324999763575017e-01 2.4726324401858575e+00 -2.4110495922156525e-01 
-3.4910576517078957e+00 4.0543680896562346e+00 3.1697497725756127e+00 
-7.9100624200083347e-02 4.5467040831090605e-01 7.8405305146143733e-01 
-5.8064262143845780e-01 -6.7175618016896713e-02 1.8327382703008988e-03 
-1.7759194277182197e-01 -4.5740681002782790e-01 6.1885044052317102e-02 
1.0071945338473738e+00 -1.0089198716799244e+00 -8.0628484740612849e-01 
7.2503137134149309e-01 -4.0345450207039040e+00 -5.1688665129699460e+00 
4.5837925160863282e+00 -5.6171429205502965e-01 -2.2648736352508647e-01 
-1.1066305876267444e+00 5.2407359063046410e+00 -6.8000756820565422e-01 
-7.0772451277993547e+00 8.5513959650299824e+00 6.3419246076729259e+00 
Matrix Object: 1 MPI processes
  type: seqdense
9.9999999999999889e-01 7.1054273576010019e-15 -3.5527136788005009e-15 
1.4210854715202004e-14 -1.3322676295501878e-15 2.2204460492503131e-16 
8.8817841970012523e-16 1.0658141036401503e-14 -1.3322676295501878e-15 
-1.4210854715202004e-14 2.1316282072803006e-14 -2.1316282072803006e-14 
0.0000000000000000e+00 1.0000000000000000e+00 0.0000000000000000e+00 
0.0000000000000000e+00 0.0000000000000000e+00 2.2204460492503131e-16 
8.8817841970012523e-16 0.0000000000000000e+00 4.4408920985006262e-16 
0.0000000000000000e+00 0.0000000000000000e+00 3.5527136788005009e-15 
4.4408920985006262e-16 -1.9539925233402755e-14 1.0000000000000160e+00 
-1.7763568394002505e-15 2.2204460492503131e-15 2.7755575615628914e-16 
5.7731597280508140e-15 5.3290705182007514e-15 3.9968028886505635e-15 
-3.0198066269804258e-14 -3.5527136788005009e-14 -2.8421709430404007e-14 
1.5543122344752192e-15 1.0658141036401503e-14 3.7303493627405260e-14 
1.0000000000000107e+00 2.4424906541753444e-15 1.4988010832439613e-15 
6.6613381477509392e-15 -2.3092638912203256e-14 6.6613381477509392e-16 
2.1316282072803006e-14 -3.5527136788005009e-15 -4.2632564145606011e-14 
1.7763568394002505e-15 -7.1054273576010019e-15 1.4210854715202004e-14 
1.4210854715202004e-14 9.9999999999999956e-01 4.4408920985006262e-16 
8.8817841970012523e-16 1.4210854715202004e-14 0.0000000000000000e+00 
-3.5527136788005009e-14 2.8421709430404007e-14 2.8421709430404007e-14 
8.8817841970012523e-16 -1.2434497875801753e-14 -3.5527136788005009e-15 
5.3290705182007514e-15 4.4408920985006262e-16 1.0000000000000009e+00 
-4.4408920985006262e-16 7.1054273576010019e-15 -2.2204460492503131e-15 
7.1054273576010019e-15 2.1316282072803006e-14 0.0000000000000000e+00 
3.5527136788005009e-15 -2.1316282072803006e-14 -3.1974423109204508e-14 
5.6843418860808015e-14 -1.3322676295501878e-15 -1.2212453270876722e-15 
1.0000000000000062e+00 -2.8421709430404007e-14 -2.6645352591003757e-15 
1.0658141036401503e-14 -2.8421709430404007e-14 0.0000000000000000e+00 
1.7763568394002505e-15 8.8817841970012523e-15 -1.7763568394002505e-15 
5.6843418860808015e-14 -8.8817841970012523e-16 -1.1102230246251565e-16 
9.7699626167013776e-15 9.9999999999995204e-01 -2.2204460492503131e-15 
3.9079850466805510e-14 -4.2632564145606011e-14 -1.0658141036401503e-14 
2.2204460492503131e-16 -6.2727600891321345e-15 6.5503158452884236e-15 
2.9976021664879227e-15 3.5943470422239443e-15 1.9485281443909486e-15 
7.5772721430666934e-15 -3.6637359812630166e-14 1.0000000000000007e+00 
1.2656542480726785e-14 -1.6875389974302379e-14 -2.4313884239290928e-14 
-3.5527136788005009e-15 2.1316282072803006e-14 1.4210854715202004e-14 
-2.1316282072803006e-14 3.5527136788005009e-15 1.3322676295501878e-15 
1.4210854715202004e-14 -3.5527136788005009e-14 3.5527136788005009e-15 
1.0000000000000000e+00 -5.6843418860808015e-14 -6.3948846218409017e-14 
1.7763568394002505e-15 -2.1316282072803006e-14 -7.1054273576010019e-15 
0.0000000000000000e+00 8.8817841970012523e-16 0.0000000000000000e+00 
0.0000000000000000e+00 7.1054273576010019e-15 2.6645352591003757e-15 
-3.5527136788005009e-14 1.0000000000000000e+00 7.1054273576010019e-15 
-2.4424906541753444e-15 1.2434497875801753e-14 4.5297099404706387e-14 
-4.6185277824406512e-14 4.1078251911130792e-15 1.5265566588595902e-15 
8.4376949871511897e-15 -2.5757174171303632e-14 5.2180482157382357e-15 
3.9079850466805510e-14 -7.8159700933611020e-14 9.9999999999994316e-01 



On Jul 6, 2011, at 9:53 AM, Adam Byrd wrote:

> I do not want the transpose, but that is what is coming out as the solution. 
> Both my tests show the correct original matrix, and both yield the transpose 
> of the solution verified against Mathematica and the website from which I 
> pulled the 4x4 matrix in test.cpp. Could it be related to the factoring?
> 
> On Tue, Jul 5, 2011 at 4:39 PM, Barry Smith <bsmith at mcs.anl.gov> wrote:
> 
>  MatSolve() and MatMatSolve() will not return the transpose of the solution, 
> they will return the solution. If you want the transpose solve you can use 
> MatSolveTranspose() for a single Vec or use MatMatSolve() for the matrix case 
> after transposing the original matrix if you want the transpose.
> 
>   Barry
> 
> 
> On Jul 5, 2011, at 12:17 PM, Adam Byrd wrote:
> 
> > I have working code that produces the correct answer now, thank you. One 
> > (hopefully) final question, though. The solution is actually transposed. 
> > What causes this? Presumably I can use MatMatSolveTranspose to get around 
> > this, but there's no man page and I want to be sure of what will happen in 
> > all cases.
> >
> > Respectfully,
> > Adam
> >
> > On Thu, Jun 30, 2011 at 4:18 PM, Hong Zhang <hzhang at mcs.anl.gov> wrote:
> > Add
> >  ierr = MatGetOrdering(testMat,MATORDERING_ND,&isrow,&iscol);CHKERRQ(ierr);
> > before the line
> >        ierr = MatFactorInfoInitialize(&luinfo);CHKERRQ(ierr);
> >
> > Somehow, your matrix is numerically singular. With
> > MATORDERING_NATURAL
> > I get
> > [0]PETSC ERROR: Detected zero pivot in LU factorization
> >
> > even using MATDENSE matrix format, which calls lapack.
> > With MATORDERING_ND, I get useless inverseMat.
> >
> > The modified code I used is attached.
> >
> > Hong
> >
> > On Thu, Jun 30, 2011 at 2:30 PM, Adam Byrd <adam1.byrd at gmail.com> wrote:
> > > I'm trying to work through what I need to do, again by practicing with a
> > > small scale random problem. The general order of events seems to be: 
> > > create
> > > a matrix, fill it, assemble it, factor it, then one can use solvers with 
> > > it.
> > > When I use MatLUFactor on my matrix before using it with a solver I get 
> > > this
> > > error:
> > > [0]PETSC ERROR: --------------------- Error Message
> > > ------------------------------------
> > > [0]PETSC ERROR: Null argument, when expecting valid pointer!
> > > [0]PETSC ERROR: Null Object: Parameter # 1!
> > > [0]PETSC ERROR:
> > > ------------------------------------------------------------------------
> > > [0]PETSC ERROR: Petsc Release Version 3.1.0, Patch 8, Thu Mar 17 13:37:48
> > > CDT 2011
> > > [0]PETSC ERROR: See docs/changes/index.html for recent updates.
> > > [0]PETSC ERROR: See docs/faq.html for hints about trouble shooting.
> > > [0]PETSC ERROR: See docs/index.html for manual pages.
> > > [0]PETSC ERROR:
> > > ------------------------------------------------------------------------
> > > [0]PETSC ERROR: ./test on a osx-gnu-c named Macintosh-3.local by adambyrd
> > > Thu Jun 30 15:27:30 2011
> > > [0]PETSC ERROR: Libraries linked from
> > > /Users/adambyrd/soft/petsc-3.1-p8/osx-gnu-cpp/lib
> > > [0]PETSC ERROR: Configure run at Tue Jun 28 12:56:55 2011
> > > [0]PETSC ERROR: Configure options PETSC_ARCH=osx-gnu-cpp 
> > > --with-fc=gfortran
> > > -download-f-blas-lapack=1 --download-mpich=1 --with-scalar-type=complex
> > > --with-clanguage=c++
> > > [0]PETSC ERROR:
> > > ------------------------------------------------------------------------
> > > [0]PETSC ERROR: ISInvertPermutation() line 209 in
> > > src/vec/is/interface/index.c
> > > [0]PETSC ERROR: MatLUFactorSymbolic_SeqAIJ() line 306 in
> > > src/mat/impls/aij/seq/aijfact.c
> > > [0]PETSC ERROR: MatLUFactorSymbolic() line 2534 in
> > > src/mat/interface/matrix.c
> > > [0]PETSC ERROR: MatLUFactor_SeqAIJ() line 945 in
> > > src/mat/impls/aij/seq/aijfact.c
> > > [0]PETSC ERROR: MatLUFactor() line 2417 in src/mat/interface/matrix.c
> > > [0]PETSC ERROR: main() line 62 in WDtest.cpp
> > > application called MPI_Abort(MPI_COMM_WORLD, 85) - process 0[unset]:
> > > aborting job:
> > > application called MPI_Abort(MPI_COMM_WORLD, 85) - process 0
> > > I don't understand what I'm doing wrong.
> > > Respectfully,
> > > Adam
> > > On Wed, Jun 29, 2011 at 1:26 AM, Matthew Knepley <knepley at gmail.com> 
> > > wrote:
> > >>
> > >> On Tue, Jun 28, 2011 at 10:20 PM, Adam Byrd <adam1.byrd at gmail.com> 
> > >> wrote:
> > >>>
> > >>> Matt,
> > >>>
> > >>> Alright, that means I need to continue learning how to use
> > >>> MatSetValues(). With my 6x6 example I tried filling it with four 3x3 sub
> > >>> matrices, but when I do that I get the error 'sum of local sizes 12 
> > >>> does not
> > >>> equal global size.' I had 4 processors each calling MatSetValues for 
> > >>> their
> > >>> own 3x3. Graphically, I arranged the nodes 0 1
> > >>>
> > >>>                                                                        
> > >>> 2 3
> > >>> where process 0 had global rows 0-2 and global columns 0-2; process 1 
> > >>> had
> > >>> 0-2, 3-5; process 2 had 3-5, 0-2; and process 3 had 3-5, 3-5. >From the
> > >>> documentation, I think this should be correct, but I'm not sure. Also, 
> > >>> which
> > >>> format would you recommend for storing the matrix?
> > >>
> > >> 1) With any error, send the Entire error message.
> > >> 2) PETSc matrices are divided by rows, not rows and columns, see the
> > >> manual section. Rows & columns only makes sense for dense matrices
> > >> 3) You can still set arbitrary blocks no matter how the matrix is divided
> > >> 4) The error means you tried to set both local and global dimensions, and
> > >> they do not add up correctly. Just set the global dimensions
> > >>    Matt
> > >>
> > >>>
> > >>> Jack,
> > >>>
> > >>> I'm a summer intern just getting started with this project, so I don't
> > >>> know all the details yet (I can ask though). I know I need to find the
> > >>> Green's function which will involve the trace of the inverted 
> > >>> Hamiltonian,
> > >>> as well as the rest of the matrix. I have inquired about avoiding the
> > >>> inversion altogether, but my instructor doesn't believe there is a way
> > >>> around it. Once I've worked through the math I want to explore other 
> > >>> options
> > >>> though.
> > >>>
> > >>> Respectfully,
> > >>> Adam
> > >>>
> > >>> On Tue, Jun 28, 2011 at 6:08 PM, Matthew Knepley <knepley at gmail.com>
> > >>> wrote:
> > >>>>
> > >>>> On Tue, Jun 28, 2011 at 5:01 PM, Adam Byrd <adam1.byrd at gmail.com> 
> > >>>> wrote:
> > >>>>>
> > >>>>> Actually, it's quite sparse. In the 3600x3600 there are only just 4
> > >>>>> nonzero entries in each row. This means it's 99.9% empty. My smaller 
> > >>>>> 6x6
> > >>>>> example is dense, but it's only practice building and manipulating 
> > >>>>> matrices.
> > >>>>
> > >>>> Ah, then its easy. Just call MatSetValues() with each block. Then use
> > >>>> MUMPS to do a sparse direct solve.
> > >>>>   Matt
> > >>>>
> > >>>>>
> > >>>>> Respectfully,
> > >>>>> Adam
> > >>>>>
> > >>>>> On Tue, Jun 28, 2011 at 5:55 PM, Matthew Knepley <knepley at 
> > >>>>> gmail.com>
> > >>>>> wrote:
> > >>>>>>
> > >>>>>> It sounds like you have a dense matrix (from your example). Is this
> > >>>>>> true? If so, you should use Elemental (on Google Code).
> > >>>>>>   Thanks,
> > >>>>>>      Matt
> > >>>>>>
> > >>>>>> On Tue, Jun 28, 2011 at 8:55 AM, Adam Byrd <adam1.byrd at gmail.com>
> > >>>>>> wrote:
> > >>>>>>>
> > >>>>>>> Hi,
> > >>>>>>> I'm rather new to PETSc and trying to work out the best way to 
> > >>>>>>> create
> > >>>>>>> and fill a large sparse matrix distributed over many processors. 
> > >>>>>>> Currently,
> > >>>>>>> my goal is to create a 3600x3600 matrix in units of 12x12 blocks 
> > >>>>>>> with
> > >>>>>>> several blocks on any given node. I'd like to create the matrix in 
> > >>>>>>> such a
> > >>>>>>> way that each node only holds the information in it's handful of 
> > >>>>>>> blocks and
> > >>>>>>> not the entire matrix. Eventually, this matrix is to be inverted (I 
> > >>>>>>> know,
> > >>>>>>> inversion should be avoided, but as this is a Hamiltonian matrix 
> > >>>>>>> from which
> > >>>>>>> I need the Green's function, I'm unaware of a way to forgo carrying 
> > >>>>>>> out the
> > >>>>>>> inversion). Additionally, the values will be changed slightly and 
> > >>>>>>> the matrix
> > >>>>>>> will be repeatedly inverted. It's structure will remain the same. 
> > >>>>>>> In order
> > >>>>>>> to learn how to do this is I am starting with a small 6x6 matrix 
> > >>>>>>> broken into
> > >>>>>>> four 3x3 blocks and distributed one block per node. I've been able 
> > >>>>>>> to create
> > >>>>>>> a local 3x3 matrix on each node, with it's own values, and with the 
> > >>>>>>> global
> > >>>>>>> row/column IDs correctly set to [0, 1, 2] or [3, 4, 5] depending on 
> > >>>>>>> where
> > >>>>>>> the block is in the matrix. My problem manifests when I try to 
> > >>>>>>> create the
> > >>>>>>> larger matrix from the individual smaller ones. When the matrix is
> > >>>>>>> constructed I'm trying to use MatSetValues and having each node 
> > >>>>>>> pass in it's
> > >>>>>>> 3x3 block. I end up with an error that the sum of local lengths 
> > >>>>>>> 12x12 does
> > >>>>>>> not match the global length 6x6. It appears as though this is from 
> > >>>>>>> passing
> > >>>>>>> in four 3x3s and the program interpreting that as a 12x12 instead 
> > >>>>>>> of as a
> > >>>>>>> 6x6 with the blocks in a grid.
> > >>>>>>> My question is then: is it possible to fill a matrix as a grid of
> > >>>>>>> blocks, or can I only fill it in groups of rows or columns? Also, 
> > >>>>>>> am I
> > >>>>>>> approaching this problem the correct way, or are there more 
> > >>>>>>> efficient ways
> > >>>>>>> of building this matrix with the ultimate goal of inverting it?
> > >>>>>>> I have included my copy of a modified example if it helps. I do
> > >>>>>>> apologize if this is answered somewhere in the documentation, I 
> > >>>>>>> have been
> > >>>>>>> unable to find a solution.
> > >>>>>>> Respectfully,
> > >>>>>>> Adam
> > >>>>>>
> > >>>>>>
> > >>>>>> --
> > >>>>>> What most experimenters take for granted before they begin their
> > >>>>>> experiments is infinitely more interesting than any results to which 
> > >>>>>> their
> > >>>>>> experiments lead.
> > >>>>>> -- Norbert Wiener
> > >>>>>
> > >>>>
> > >>>>
> > >>>>
> > >>>> --
> > >>>> What most experimenters take for granted before they begin their
> > >>>> experiments is infinitely more interesting than any results to which 
> > >>>> their
> > >>>> experiments lead.
> > >>>> -- Norbert Wiener
> > >>>
> > >>
> > >>
> > >>
> > >> --
> > >> What most experimenters take for granted before they begin their
> > >> experiments is infinitely more interesting than any results to which 
> > >> their
> > >> experiments lead.
> > >> -- Norbert Wiener
> > >
> > >
> >
> 
> 
> <test.cpp><test2.cpp>

-------------- next part --------------
A non-text attachment was scrubbed...
Name: ex1.c
Type: application/octet-stream
Size: 4036 bytes
Desc: not available
URL: 
<http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20110706/a9a39fba/attachment-0001.obj>

Reply via email to