コード例 #1
0
PETSC_EXTERN PetscErrorCode PCCreate_ILU(PC pc)
{
  PetscErrorCode ierr;
  PC_ILU         *ilu;

  PetscFunctionBegin;
  ierr     = PetscNewLog(pc,&ilu);CHKERRQ(ierr);
  pc->data = (void*)ilu;
  ierr     = PCFactorInitialize(pc);CHKERRQ(ierr);

  ((PC_Factor*)ilu)->factortype         = MAT_FACTOR_ILU;
  ((PC_Factor*)ilu)->info.levels        = 0.;
  ((PC_Factor*)ilu)->info.fill          = 1.0;
  ilu->col                              = 0;
  ilu->row                              = 0;
  ierr                                  = PetscStrallocpy(MATORDERINGNATURAL,(char**)&((PC_Factor*)ilu)->ordering);CHKERRQ(ierr);
  ((PC_Factor*)ilu)->info.dt            = PETSC_DEFAULT;
  ((PC_Factor*)ilu)->info.dtcount       = PETSC_DEFAULT;
  ((PC_Factor*)ilu)->info.dtcol         = PETSC_DEFAULT;

  pc->ops->reset               = PCReset_ILU;
  pc->ops->destroy             = PCDestroy_ILU;
  pc->ops->apply               = PCApply_ILU;
  pc->ops->applytranspose      = PCApplyTranspose_ILU;
  pc->ops->setup               = PCSetUp_ILU;
  pc->ops->setfromoptions      = PCSetFromOptions_ILU;
  pc->ops->view                = PCView_ILU;
  pc->ops->applysymmetricleft  = PCApplySymmetricLeft_ILU;
  pc->ops->applysymmetricright = PCApplySymmetricRight_ILU;
  pc->ops->applyrichardson     = 0;
  ierr = PetscObjectComposeFunction((PetscObject)pc,"PCFactorSetDropTolerance_C",PCFactorSetDropTolerance_ILU);CHKERRQ(ierr);
  ierr = PetscObjectComposeFunction((PetscObject)pc,"PCFactorReorderForNonzeroDiagonal_C",PCFactorReorderForNonzeroDiagonal_ILU);CHKERRQ(ierr);
  PetscFunctionReturn(0);
}
コード例 #2
0
ファイル: cholesky.c プロジェクト: petsc/petsc
PETSC_EXTERN PetscErrorCode PCCreate_Cholesky(PC pc)
{
    PetscErrorCode ierr;
    PC_Cholesky    *dir;

    PetscFunctionBegin;
    ierr     = PetscNewLog(pc,&dir);
    CHKERRQ(ierr);
    pc->data = (void*)dir;
    ierr     = PCFactorInitialize(pc);
    CHKERRQ(ierr);

    ((PC_Factor*)dir)->factortype         = MAT_FACTOR_CHOLESKY;
    ((PC_Factor*)dir)->info.fill          = 5.0;

    dir->col = 0;
    dir->row = 0;

    ierr = PetscStrallocpy(MATORDERINGNATURAL,(char**)&((PC_Factor*)dir)->ordering);
    CHKERRQ(ierr);

    pc->ops->destroy           = PCDestroy_Cholesky;
    pc->ops->reset             = PCReset_Cholesky;
    pc->ops->apply             = PCApply_Cholesky;
    pc->ops->applytranspose    = PCApplyTranspose_Cholesky;
    pc->ops->setup             = PCSetUp_Cholesky;
    pc->ops->setfromoptions    = PCSetFromOptions_Cholesky;
    pc->ops->view              = PCView_Cholesky;
    pc->ops->applyrichardson   = 0;
    PetscFunctionReturn(0);
}