On May 9, 2011, at 4:04 AM, Gong Ding wrote: > Hi > I created a flexible AIJ matrix type ?named as FAIJ. It has an extra hash > table for nonzero which do not have pre-allocated position. And the buffered > values in hash table will be flushed to AIJ array at MatAssemblyEnd. Both > sequential and parallel version have been implemented and tested. > > The test results show that for middle size problem ? matrix size around 1M, > FAIJ without any pre-allocation still pretty fast. The shortcoming is memory > overkill exists. Fortunately, modern computers have larger and larger memory. > User with FAIJ matrix only needs to provide approximate nonzero pattern or > even skip this step. > Cool! This is a very nice feature; thanks for writing it.
> However, direct solvers such as mumps and superlu_dist will crash. This is > caused by type compare functions, i.e.: > ierr = PetscTypeCompare((PetscObject)A,MATMPIAIJ,&isAIJ);CHKERRQ(ierr); > FAIJ matrix is derived from AIJ, but it has its own type name, i.e. > MATMPIFAIJ. The above function will assign isAIJ false. > > Is there any function like ?PetscBaseType? exist? FAIJ matrix can hold its > type name as well as its base type name. We don't have a good general mechanism for handling this situation. I'll think about what can be done for this. > > I hope FAIJ can be accepted by petsc 3.2. Please see http://www.mcs.anl.gov/petsc/petsc-as/developers/index.html#Sending_patches_to_update_the_ for how to prepare a patch that we can add to petsc-dev. Barry > Thanks. > > Gong Ding > > > > >
