In ex59 which is about pcbddc;
there is a code block for applying dirichlet boundaries;
if (dd.DBC_zerorows) {
ierr = ComputeSpecialBoundaryIndices(dd,&dirichletIS,NULL);CHKERRQ(ierr);
ierr =
MatSetOption(local_mat,MAT_KEEP_NONZERO_PATTERN,PETSC_TRUE);CHKERRQ(ierr);
ierr = MatZeroRowsLocalIS(*A,dirichletIS,1.0,NULL,NULL);CHKERRQ(ierr);
ierr = ISDestroy(&dirichletIS);CHKERRQ(ierr);
}
I replaced MatZeroRowsLocalIS function with MatZeroRowsColumnsLocalIS, but
got following error;
"Need to provide local to global mapping to matrix first" from this line of
code in MatZeroRowsColumnsLocal;
if (!mat->cmap->mapping)
SETERRQ(PetscObjectComm((PetscObject)mat),PETSC_ERR_ARG_WRONGSTATE,"Need to
provide local to global mapping to matrix first");
As you know MatIS object is created by suppliying an ISLocalToGlobalMapping
so it has this info.
I think MatIS should be revised in order to be used for
MatZeroRowsColumnsLocalIS, I am a newby so dont know how to fix this.
Regards,
Alp