On Tue, Dec 2, 2008 at 2:06 PM, Matthew Knepley <knepley at gmail.com> wrote: > This is strange. I just tried KSP ex2 and after MatSetType() the type_name > is > set. What does *.setType() call?
It's a plain call to {Vec|Mat}SetType() . Matt, look at the actual functions in core PETSc. If the sizes are not set, the create rutine is "saved" in the ops table. Then the create rutine is acutally called when VecSetSizes() is called. > Matt > > On Tue, Dec 2, 2008 at 9:12 AM, Lisandro Dalcin <dalcinl at gmail.com> wrote: >> >> Other (really nice!) change I've noticed is that now we can call >> {Vec|Mat}Create() and next {Vec|Mat}SetType() and it works! >> >> However, see this. >> >> In [1]: from petsc4py import PETSc >> >> In [2]: x = PETSc.Vec().create() >> >> In [3]: x.setType('seq') >> >> In [4]: print x.getType() >> >> None >> >> In [5]: A = PETSc.Mat().create() >> >> In [6]: A.setType('seqaij') >> >> In [7]: print A.getType() >> >> None >> >> >> Internally, the "type_name" field is never set, it still is NULL (then >> petsc4y returns None). >> The problem is that forcing the "type_name" to be set will be really >> dangerous (rmember PetscValidType macro). >> Any comments? >> >> >> >> -- >> Lisandro Dalc?n >> --------------- >> Centro Internacional de M?todos Computacionales en Ingenier?a (CIMEC) >> Instituto de Desarrollo Tecnol?gico para la Industria Qu?mica (INTEC) >> Consejo Nacional de Investigaciones Cient?ficas y T?cnicas (CONICET) >> PTLC - G?emes 3450, (3000) Santa Fe, Argentina >> Tel/Fax: +54-(0)342-451.1594 >> > > > > -- > 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 > -- Lisandro Dalc?n --------------- Centro Internacional de M?todos Computacionales en Ingenier?a (CIMEC) Instituto de Desarrollo Tecnol?gico para la Industria Qu?mica (INTEC) Consejo Nacional de Investigaciones Cient?ficas y T?cnicas (CONICET) PTLC - G?emes 3450, (3000) Santa Fe, Argentina Tel/Fax: +54-(0)342-451.1594