| Line 90... |
Line 90... |
PetscErrorCode SVDView(SVD svd,PetscViewer viewer)
|
PetscErrorCode SVDView(SVD svd,PetscViewer viewer)
|
{
|
{
|
PetscErrorCode ierr;
|
PetscErrorCode ierr;
|
const char *type;
|
const char *type;
|
PetscTruth isascii;
|
PetscTruth isascii;
|
|
const char *mode_list[3] = { "default" , "explicit", "user" };
|
|
|
PetscFunctionBegin;
|
PetscFunctionBegin;
|
PetscValidHeaderSpecific(svd,SVD_COOKIE,1);
|
PetscValidHeaderSpecific(svd,SVD_COOKIE,1);
|
if (!viewer) viewer = PETSC_VIEWER_STDOUT_(svd->comm);
|
if (!viewer) viewer = PETSC_VIEWER_STDOUT_(svd->comm);
|
PetscValidHeaderSpecific(viewer,PETSC_VIEWER_COOKIE,2);
|
PetscValidHeaderSpecific(viewer,PETSC_VIEWER_COOKIE,2);
|
| Line 102... |
Line 103... |
ierr = PetscTypeCompare((PetscObject)viewer,PETSC_VIEWER_ASCII,&isascii);CHKERRQ(ierr);
|
ierr = PetscTypeCompare((PetscObject)viewer,PETSC_VIEWER_ASCII,&isascii);CHKERRQ(ierr);
|
if (isascii) {
|
if (isascii) {
|
ierr = PetscViewerASCIIPrintf(viewer,"SVD Object:\n");CHKERRQ(ierr);
|
ierr = PetscViewerASCIIPrintf(viewer,"SVD Object:\n");CHKERRQ(ierr);
|
ierr = SVDGetType(svd,&type);CHKERRQ(ierr);
|
ierr = SVDGetType(svd,&type);CHKERRQ(ierr);
|
if (type) {
|
if (type) {
|
ierr = PetscViewerASCIIPrintf(viewer," method: %s",type);CHKERRQ(ierr);
|
ierr = PetscViewerASCIIPrintf(viewer," method: %s\n",type);CHKERRQ(ierr);
|
} else {
|
} else {
|
ierr = PetscViewerASCIIPrintf(viewer," method: not yet set\n");CHKERRQ(ierr);
|
ierr = PetscViewerASCIIPrintf(viewer," method: not yet set\n");CHKERRQ(ierr);
|
}
|
}
|
|
ierr = PetscViewerASCIIPrintf(viewer," transpose mode: %s\n",mode_list[svd->transmode]);CHKERRQ(ierr);
|
if (svd->ops->view) {
|
if (svd->ops->view) {
|
ierr = PetscViewerASCIIPushTab(viewer);CHKERRQ(ierr);
|
ierr = PetscViewerASCIIPushTab(viewer);CHKERRQ(ierr);
|
ierr = (*svd->ops->view)(svd,viewer);CHKERRQ(ierr);
|
ierr = (*svd->ops->view)(svd,viewer);CHKERRQ(ierr);
|
ierr = PetscViewerASCIIPopTab(viewer);CHKERRQ(ierr);
|
ierr = PetscViewerASCIIPopTab(viewer);CHKERRQ(ierr);
|
}
|
}
|
| Line 151... |
Line 153... |
@*/
|
@*/
|
PetscErrorCode SVDCreate(MPI_Comm comm,SVD *outsvd)
|
PetscErrorCode SVDCreate(MPI_Comm comm,SVD *outsvd)
|
{
|
{
|
PetscErrorCode ierr;
|
PetscErrorCode ierr;
|
SVD svd;
|
SVD svd;
|
PetscMPIInt size;
|
|
|
|
|
|
PetscFunctionBegin;
|
PetscFunctionBegin;
|
PetscValidPointer(outsvd,2);
|
PetscValidPointer(outsvd,2);
|
ierr = MPI_Comm_size(comm,&size);CHKERRQ(ierr);
|
|
|
|
PetscHeaderCreate(svd,_p_SVD,struct _SVDOps,SVD_COOKIE,-1,"SVD",comm,SVDDestroy,SVDView);
|
PetscHeaderCreate(svd,_p_SVD,struct _SVDOps,SVD_COOKIE,-1,"SVD",comm,SVDDestroy,SVDView);
|
PetscLogObjectCreate(svd);
|
PetscLogObjectCreate(svd);
|
*outsvd = svd;
|
*outsvd = svd;
|
|
|
| Line 168... |
Line 167... |
ierr = PetscMemzero(svd->ops,sizeof(struct _SVDOps));CHKERRQ(ierr);
|
ierr = PetscMemzero(svd->ops,sizeof(struct _SVDOps));CHKERRQ(ierr);
|
|
|
svd->type_name = PETSC_NULL;
|
svd->type_name = PETSC_NULL;
|
svd->A = PETSC_NULL;
|
svd->A = PETSC_NULL;
|
svd->AT = PETSC_NULL;
|
svd->AT = PETSC_NULL;
|
svd->transmode = size == 1 ? SVD_TRANSPOSE_DEFAULT : SVD_TRANSPOSE_EXPLICIT;
|
svd->transmode = SVD_TRANSPOSE_EXPLICIT;
|
svd->sigma = PETSC_NULL;
|
svd->sigma = PETSC_NULL;
|
svd->U = PETSC_NULL;
|
svd->U = PETSC_NULL;
|
svd->V = PETSC_NULL;
|
svd->V = PETSC_NULL;
|
svd->nconv = -1;
|
svd->nconv = -1;
|
svd->data = PETSC_NULL;
|
svd->data = PETSC_NULL;
|