| Line 110... |
Line 110... |
PetscValidHeaderSpecific(svd,SVD_CLASSID,1);
|
PetscValidHeaderSpecific(svd,SVD_CLASSID,1);
|
if (svd->setupcalled) PetscFunctionReturn(0);
|
if (svd->setupcalled) PetscFunctionReturn(0);
|
ierr = PetscLogEventBegin(SVD_SetUp,svd,0,0,0);CHKERRQ(ierr);
|
ierr = PetscLogEventBegin(SVD_SetUp,svd,0,0,0);CHKERRQ(ierr);
|
if (!svd->ip) { ierr = SVDGetIP(svd,&svd->ip);CHKERRQ(ierr); }
|
if (!svd->ip) { ierr = SVDGetIP(svd,&svd->ip);CHKERRQ(ierr); }
|
|
|
/* Set default solver type */
|
/* Set default solver type (SVDSetFromOptions was not called) */
|
if (!((PetscObject)svd)->type_name) {
|
if (!((PetscObject)svd)->type_name) {
|
ierr = SVDSetType(svd,SVDCROSS);CHKERRQ(ierr);
|
ierr = SVDSetType(svd,SVDCROSS);CHKERRQ(ierr);
|
|
}
|
|
if (!svd->ip) { ierr = SVDGetIP(svd,&svd->ip);CHKERRQ(ierr); }
|
|
if (!((PetscObject)svd->ip)->type_name) {
|
|
ierr = IPSetDefaultType_Private(svd->ip);CHKERRQ(ierr);
|
}
|
}
|
|
|
/* check matrix */
|
/* check matrix */
|
if (!svd->OP) SETERRQ(((PetscObject)svd)->comm,PETSC_ERR_ARG_WRONGSTATE,"SVDSetOperator must be called first");
|
if (!svd->OP) SETERRQ(((PetscObject)svd)->comm,PETSC_ERR_ARG_WRONGSTATE,"SVDSetOperator must be called first");
|
|
|