PetscErrorCode MatPartitioningSetFromOptions_Chaco(MatPartitioning part) { PetscErrorCode ierr; PetscInt i; PetscReal r; PetscBool flag; MatPartitioning_Chaco *chaco = (MatPartitioning_Chaco*)part->data; MPChacoGlobalType global; MPChacoLocalType local; MPChacoEigenType eigen; PetscFunctionBegin; ierr = PetscOptionsHead("Chaco partitioning options");CHKERRQ(ierr); ierr = PetscOptionsEnum("-mat_partitioning_chaco_global","Global method","MatPartitioningChacoSetGlobal",MPChacoGlobalTypes,(PetscEnum)chaco->global_method,(PetscEnum*)&global,&flag);CHKERRQ(ierr); if (flag) { ierr = MatPartitioningChacoSetGlobal(part,global);CHKERRQ(ierr); } ierr = PetscOptionsEnum("-mat_partitioning_chaco_local","Local method","MatPartitioningChacoSetLocal",MPChacoLocalTypes,(PetscEnum)chaco->local_method,(PetscEnum*)&local,&flag);CHKERRQ(ierr); if (flag) { ierr = MatPartitioningChacoSetLocal(part,local);CHKERRQ(ierr); } ierr = PetscOptionsReal("-mat_partitioning_chaco_coarse","Coarse level","MatPartitioningChacoSetCoarseLevel",0.0,&r,&flag);CHKERRQ(ierr); if (flag) { ierr = MatPartitioningChacoSetCoarseLevel(part,r);CHKERRQ(ierr); } ierr = PetscOptionsEnum("-mat_partitioning_chaco_eigen_solver","Eigensolver method","MatPartitioningChacoSetEigenSolver",MPChacoEigenTypes,(PetscEnum)chaco->eigen_method,(PetscEnum*)&eigen,&flag);CHKERRQ(ierr); if (flag) { ierr = MatPartitioningChacoSetEigenSolver(part,eigen);CHKERRQ(ierr); } ierr = PetscOptionsReal("-mat_partitioning_chaco_eigen_tol","Eigensolver tolerance","MatPartitioningChacoSetEigenTol",chaco->eigtol,&r,&flag);CHKERRQ(ierr); if (flag) { ierr = MatPartitioningChacoSetEigenTol(part,r);CHKERRQ(ierr); } ierr = PetscOptionsInt("-mat_partitioning_chaco_eigen_number","Number of eigenvectors: 1, 2, or 3 (bi-, quadri-, or octosection)","MatPartitioningChacoSetEigenNumber",chaco->eignum,&i,&flag);CHKERRQ(ierr); if (flag) { ierr = MatPartitioningChacoSetEigenNumber(part,i);CHKERRQ(ierr); } ierr = PetscOptionsBool("-mat_partitioning_chaco_verbose","Show library output","",chaco->verbose,&chaco->verbose,NULL);CHKERRQ(ierr); ierr = PetscOptionsTail();CHKERRQ(ierr); PetscFunctionReturn(0); }
void PETSC_STDCALL matpartitioningchacosetglobal_(MatPartitioning part,MPChacoGlobalType *method, int *__ierr ){ *__ierr = MatPartitioningChacoSetGlobal( (MatPartitioning)PetscToPointer((part) ),*method); }