| QEP_QARNOLDI *ctx; |
| PetscFunctionBegin; |
| ierr = PetscNew(QEP_QARNOLDI,&ctx);CHKERRQ(ierr); |
| PetscLogObjectMemory(qep,sizeof(QEP_QARNOLDI)); |
| ierr = PetscNewLog(qep,QEP_QARNOLDI,&ctx);CHKERRQ(ierr); |
| qep->data = ctx; |
| qep->ops->solve = QEPSolve_QArnoldi; |
| qep->ops->setup = QEPSetUp_QArnoldi; |
| QEP_LINEAR *ctx; |
| PetscFunctionBegin; |
| ierr = PetscNew(QEP_LINEAR,&ctx);CHKERRQ(ierr); |
| PetscLogObjectMemory(qep,sizeof(QEP_LINEAR)); |
| ierr = PetscNewLog(qep,QEP_LINEAR,&ctx);CHKERRQ(ierr); |
| qep->data = (void *)ctx; |
| qep->ops->solve = QEPSolve_Linear; |
| qep->ops->setup = QEPSetUp_Linear; |
| PetscErrorCode STCreate_Fold(ST st) |
| { |
| PetscErrorCode ierr; |
| ST_FOLD *ctx; |
| PetscFunctionBegin; |
| ierr = PetscNew(ST_FOLD,&ctx); CHKERRQ(ierr); |
| PetscLogObjectMemory(st,sizeof(ST_FOLD)); |
| st->data = (void *) ctx; |
| ierr = PetscNewLog(st,ST_FOLD,&st->data); CHKERRQ(ierr); |
| st->ops->apply = STApply_Fold; |
| st->ops->getbilinearform = STGetBilinearForm_Default; |
| st->ops->applytrans = STApplyTranspose_Fold; |
| PetscErrorCode STCreate_Cayley(ST st) |
| { |
| PetscErrorCode ierr; |
| ST_CAYLEY *ctx; |
| PetscFunctionBegin; |
| ierr = PetscNew(ST_CAYLEY,&ctx); CHKERRQ(ierr); |
| PetscLogObjectMemory(st,sizeof(ST_CAYLEY)); |
| st->data = (void *) ctx; |
| ierr = PetscNewLog(st,ST_CAYLEY,&st->data);CHKERRQ(ierr); |
| st->ops->apply = STApply_Cayley; |
| st->ops->getbilinearform = STGetBilinearForm_Cayley; |
| st->ops->applytrans = STApplyTranspose_Cayley; |
| st->ops->setshift = STSetShift_Cayley; |
| st->ops->destroy = STDestroy_Cayley; |
| st->ops->view = STView_Cayley; |
| st->checknullspace = STCheckNullSpace_Default; |
| ctx->nu = 0.0; |
| ctx->nu_set = PETSC_FALSE; |
| ierr = PetscObjectComposeFunctionDynamic((PetscObject)st,"STCayleySetAntishift_C","STCayleySetAntishift_Cayley",STCayleySetAntishift_Cayley);CHKERRQ(ierr); |
| PetscFunctionReturn(0); |
| } |
| PetscErrorCode STCreate_Shell(ST st) |
| { |
| PetscErrorCode ierr; |
| ST_Shell *shell; |
| PetscFunctionBegin; |
| st->ops->destroy = STDestroy_Shell; |
| ierr = PetscNew(ST_Shell,&shell);CHKERRQ(ierr); |
| ierr = PetscLogObjectMemory(st,sizeof(ST_Shell));CHKERRQ(ierr); |
| st->data = (void *) shell; |
| ierr = PetscNewLog(st,ST_Shell,&st->data);CHKERRQ(ierr); |
| st->ops->apply = STApply_Shell; |
| st->ops->applytrans = STApplyTranspose_Shell; |
| st->ops->backtr = STBackTransform_Shell; |
| st->ops->view = PETSC_NULL; |
| st->ops->setfromoptions = STSetFromOptions_Shell; |
| shell->apply = 0; |
| shell->applytrans = 0; |
| shell->backtr = 0; |
| shell->ctx = 0; |
| st->ops->destroy = STDestroy_Shell; |
| ierr = PetscObjectComposeFunctionDynamic((PetscObject)st,"STShellSetApply_C","STShellSetApply_Shell",STShellSetApply_Shell);CHKERRQ(ierr); |
| ierr = PetscObjectComposeFunctionDynamic((PetscObject)st,"STShellSetApplyTranspose_C","STShellSetApplyTranspose_Shell",STShellSetApplyTranspose_Shell);CHKERRQ(ierr); |
| ierr = PetscObjectComposeFunctionDynamic((PetscObject)st,"STShellSetBackTransform_C","STShellSetBackTransform_Shell",STShellSetBackTransform_Shell);CHKERRQ(ierr); |
| PetscErrorCode STCreate_Precond(ST st) |
| { |
| PetscErrorCode ierr; |
| ST_PRECOND *data; |
| PetscFunctionBegin; |
| ierr = PetscNew(ST_PRECOND, &data); CHKERRQ(ierr); |
| st->data = data; |
| ierr = PetscNewLog(st,ST_PRECOND,&st->data);CHKERRQ(ierr); |
| st->ops->getbilinearform = STGetBilinearForm_Default; |
| st->ops->postsolve = PETSC_NULL; |
| st->ops->backtr = PETSC_NULL; |
| st->ops->view = STView_Default; |
| st->ops->destroy = STDestroy_Precond; |
| st->ops->setfromoptions = STSetFromOptions_Precond; |
| st->checknullspace = PETSC_NULL; |
| ierr = PetscObjectComposeFunctionDynamic((PetscObject)st,"STPrecondGetMatForPC_C","STPrecondGetMatForPC_Precond",STPrecondGetMatForPC_Precond);CHKERRQ(ierr); |
| ierr = PetscObjectComposeFunctionDynamic((PetscObject)st,"STPrecondGetKSPHasMat_C","STPrecondGetKSPHasMat_Precond",STPrecondGetKSPHasMat_Precond);CHKERRQ(ierr); |
| ierr = PetscObjectComposeFunctionDynamic((PetscObject)st,"STPrecondSetKSPHasMat_C","STPrecondSetKSPHasMat_Precond",STPrecondSetKSPHasMat_Precond);CHKERRQ(ierr); |
| ierr = STPrecondSetKSPHasMat_Precond(st, PETSC_TRUE); CHKERRQ(ierr); |
| ierr = KSPSetType(st->ksp, KSPPREONLY); CHKERRQ(ierr); |
| ierr = STPrecondSetKSPHasMat_Precond(st,PETSC_TRUE);CHKERRQ(ierr); |
| ierr = KSPSetType(st->ksp,KSPPREONLY);CHKERRQ(ierr); |
| PetscFunctionReturn(0); |
| } |
| EXTERN_C_END |
| PetscErrorCode EPSCreate_TRLAN(EPS eps) |
| { |
| PetscErrorCode ierr; |
| EPS_TRLAN *trlan; |
| PetscFunctionBegin; |
| ierr = PetscNew(EPS_TRLAN,&trlan);CHKERRQ(ierr); |
| PetscLogObjectMemory(eps,sizeof(EPS_TRLAN)); |
| eps->data = (void *) trlan; |
| ierr = PetscNewLog(eps,EPS_TRLAN,&eps->data);CHKERRQ(ierr); |
| eps->ops->setup = EPSSetUp_TRLAN; |
| eps->ops->destroy = EPSDestroy_TRLAN; |
| eps->ops->backtransform = EPSBackTransform_Default; |
| PetscErrorCode EPSCreate_ARPACK(EPS eps) |
| { |
| PetscErrorCode ierr; |
| EPS_ARPACK *arpack; |
| PetscFunctionBegin; |
| ierr = PetscNew(EPS_ARPACK,&arpack);CHKERRQ(ierr); |
| PetscLogObjectMemory(eps,sizeof(EPS_ARPACK)); |
| eps->data = (void *) arpack; |
| ierr = PetscNewLog(eps,EPS_ARPACK,&eps->data);CHKERRQ(ierr); |
| eps->ops->setup = EPSSetUp_ARPACK; |
| eps->ops->destroy = EPSDestroy_ARPACK; |
| eps->ops->backtransform = EPSBackTransform_ARPACK; |
| EPS_BLZPACK *blzpack; |
| PetscFunctionBegin; |
| ierr = PetscNew(EPS_BLZPACK,&blzpack);CHKERRQ(ierr); |
| PetscLogObjectMemory(eps,sizeof(EPS_BLZPACK)); |
| ierr = PetscNewLog(eps,EPS_BLZPACK,&blzpack);CHKERRQ(ierr); |
| eps->data = (void *) blzpack; |
| eps->ops->setup = EPSSetUp_BLZPACK; |
| eps->ops->setfromoptions = EPSSetFromOptions_BLZPACK; |
| ierr = STSetType(eps->OP, STPRECOND); CHKERRQ(ierr); |
| ierr = STPrecondSetKSPHasMat(eps->OP, PETSC_TRUE); CHKERRQ(ierr); |
| ierr = PetscNew(EPS_BLOPEX,&blopex);CHKERRQ(ierr); |
| PetscLogObjectMemory(eps,sizeof(EPS_BLOPEX)); |
| ierr = PetscNewLog(eps,EPS_BLOPEX,&blopex);CHKERRQ(ierr); |
| ierr = KSPCreate(((PetscObject)eps)->comm,&blopex->ksp);CHKERRQ(ierr); |
| ierr = EPSGetOptionsPrefix(eps,&prefix);CHKERRQ(ierr); |
| ierr = KSPSetOptionsPrefix(blopex->ksp,prefix);CHKERRQ(ierr); |
| ierr = STSetType(eps->OP, STPRECOND); CHKERRQ(ierr); |
| ierr = STPrecondSetKSPHasMat(eps->OP, PETSC_TRUE); CHKERRQ(ierr); |
| ierr = PetscNew(EPS_PRIMME,&primme);CHKERRQ(ierr); |
| PetscLogObjectMemory(eps,sizeof(EPS_PRIMME)); |
| ierr = PetscNewLog(eps,EPS_PRIMME,&primme);CHKERRQ(ierr); |
| eps->data = (void *) primme; |
| eps->ops->setup = EPSSetUp_PRIMME; |
| eps->ops->setfromoptions = EPSSetFromOptions_PRIMME; |
| PetscErrorCode EPSCreate_Subspace(EPS eps) |
| { |
| PetscErrorCode ierr; |
| EPS_SUBSPACE *ctx; |
| PetscFunctionBegin; |
| ierr = PetscNew(EPS_SUBSPACE,&ctx);CHKERRQ(ierr); |
| PetscLogObjectMemory(eps,sizeof(EPS_SUBSPACE)); |
| eps->data = (void *) ctx; |
| ierr = PetscNewLog(eps,EPS_SUBSPACE,&eps->data);CHKERRQ(ierr); |
| eps->ops->setup = EPSSetUp_Subspace; |
| eps->ops->destroy = EPSDestroy_Subspace; |
| eps->ops->backtransform = EPSBackTransform_Default; |
| PetscErrorCode EPSCreate_Arnoldi(EPS eps) |
| { |
| PetscErrorCode ierr; |
| EPS_ARNOLDI *arnoldi; |
| PetscFunctionBegin; |
| ierr = PetscNew(EPS_ARNOLDI,&arnoldi);CHKERRQ(ierr); |
| PetscLogObjectMemory(eps,sizeof(EPS_ARNOLDI)); |
| eps->data = (void *)arnoldi; |
| ierr = PetscNewLog(eps,EPS_ARNOLDI,&eps->data);CHKERRQ(ierr); |
| eps->ops->setup = EPSSetUp_Arnoldi; |
| eps->ops->setfromoptions = EPSSetFromOptions_Arnoldi; |
| eps->ops->destroy = EPSDestroy_Arnoldi; |
| eps->ops->view = EPSView_Arnoldi; |
| eps->ops->backtransform = EPSBackTransform_Default; |
| eps->ops->computevectors = EPSComputeVectors_Schur; |
| arnoldi->delayed = PETSC_FALSE; |
| ierr = PetscObjectComposeFunctionDynamic((PetscObject)eps,"EPSArnoldiSetDelayed_C","EPSArnoldiSetDelayed_Arnoldi",EPSArnoldiSetDelayed_Arnoldi);CHKERRQ(ierr); |
| ierr = PetscObjectComposeFunctionDynamic((PetscObject)eps,"EPSArnoldiGetDelayed_C","EPSArnoldiGetDelayed_Arnoldi",EPSArnoldiGetDelayed_Arnoldi);CHKERRQ(ierr); |
| PetscFunctionReturn(0); |
| PetscErrorCode EPSCreate_Lanczos(EPS eps) |
| { |
| PetscErrorCode ierr; |
| EPS_LANCZOS *lanczos; |
| PetscFunctionBegin; |
| ierr = PetscNew(EPS_LANCZOS,&lanczos);CHKERRQ(ierr); |
| PetscLogObjectMemory(eps,sizeof(EPS_LANCZOS)); |
| eps->data = (void *) lanczos; |
| ierr = PetscNewLog(eps,EPS_LANCZOS,&eps->data);CHKERRQ(ierr); |
| eps->ops->setup = EPSSetUp_Lanczos; |
| eps->ops->setfromoptions = EPSSetFromOptions_Lanczos; |
| eps->ops->destroy = EPSDestroy_Lanczos; |
| eps->ops->view = EPSView_Lanczos; |
| eps->ops->backtransform = EPSBackTransform_Default; |
| eps->ops->computevectors = EPSComputeVectors_Hermitian; |
| lanczos->reorthog = EPS_LANCZOS_REORTHOG_LOCAL; |
| ierr = PetscObjectComposeFunctionDynamic((PetscObject)eps,"EPSLanczosSetReorthog_C","EPSLanczosSetReorthog_Lanczos",EPSLanczosSetReorthog_Lanczos);CHKERRQ(ierr); |
| ierr = PetscObjectComposeFunctionDynamic((PetscObject)eps,"EPSLanczosGetReorthog_C","EPSLanczosGetReorthog_Lanczos",EPSLanczosGetReorthog_Lanczos);CHKERRQ(ierr); |
| PetscFunctionReturn(0); |
| PetscErrorCode EPSCreate_LAPACK(EPS eps) |
| { |
| PetscErrorCode ierr; |
| EPS_LAPACK *la; |
| PetscFunctionBegin; |
| ierr = PetscNew(EPS_LAPACK,&la);CHKERRQ(ierr); |
| PetscLogObjectMemory(eps,sizeof(EPS_LAPACK)); |
| eps->data = (void *) la; |
| ierr = PetscNewLog(eps,EPS_LAPACK,&eps->data);CHKERRQ(ierr); |
| eps->ops->solve = EPSSolve_LAPACK; |
| eps->ops->setup = EPSSetUp_LAPACK; |
| eps->ops->destroy = EPSDestroy_LAPACK; |
| PetscErrorCode EPSCreate_Power(EPS eps) |
| { |
| PetscErrorCode ierr; |
| EPS_POWER *power; |
| PetscFunctionBegin; |
| ierr = PetscNew(EPS_POWER,&power);CHKERRQ(ierr); |
| PetscLogObjectMemory(eps,sizeof(EPS_POWER)); |
| eps->data = (void *) power; |
| ierr = PetscNewLog(eps,EPS_POWER,&eps->data);CHKERRQ(ierr); |
| eps->ops->setup = EPSSetUp_Power; |
| eps->ops->setfromoptions = EPSSetFromOptions_Power; |
| eps->ops->destroy = EPSDestroy_Power; |
| eps->ops->view = EPSView_Power; |
| eps->ops->backtransform = EPSBackTransform_Power; |
| eps->ops->computevectors = EPSComputeVectors_Default; |
| power->shift_type = EPS_POWER_SHIFT_CONSTANT; |
| ierr = PetscObjectComposeFunctionDynamic((PetscObject)eps,"EPSPowerSetShiftType_C","EPSPowerSetShiftType_Power",EPSPowerSetShiftType_Power);CHKERRQ(ierr); |
| ierr = PetscObjectComposeFunctionDynamic((PetscObject)eps,"EPSPowerGetShiftType_C","EPSPowerGetShiftType_Power",EPSPowerGetShiftType_Power);CHKERRQ(ierr); |
| PetscFunctionReturn(0); |
| PetscErrorCode SVDCreate_TRLanczos(SVD svd) |
| { |
| PetscErrorCode ierr; |
| SVD_TRLANCZOS *lanczos; |
| PetscFunctionBegin; |
| ierr = PetscNew(SVD_TRLANCZOS,&lanczos);CHKERRQ(ierr); |
| PetscLogObjectMemory(svd,sizeof(SVD_TRLANCZOS)); |
| svd->data = (void *)lanczos; |
| ierr = PetscNewLog(svd,SVD_TRLANCZOS,&svd->data);CHKERRQ(ierr); |
| svd->ops->setup = SVDSetUp_TRLanczos; |
| svd->ops->solve = SVDSolve_TRLanczos; |
| svd->ops->destroy = SVDDestroy_TRLanczos; |
| svd->ops->setfromoptions = SVDSetFromOptions_TRLanczos; |
| svd->ops->view = SVDView_TRLanczos; |
| lanczos->oneside = PETSC_FALSE; |
| ierr = PetscObjectComposeFunctionDynamic((PetscObject)svd,"SVDTRLanczosSetOneSide_C","SVDTRLanczosSetOneSide_TRLanczos",SVDTRLanczosSetOneSide_TRLanczos);CHKERRQ(ierr); |
| ierr = PetscObjectComposeFunctionDynamic((PetscObject)svd,"SVDTRLanczosGetOneSide_C","SVDTRLanczosGetOneSide_TRLanczos",SVDTRLanczosGetOneSide_TRLanczos);CHKERRQ(ierr); |
| PetscFunctionReturn(0); |
| SVD_CYCLIC *cyclic; |
| PetscFunctionBegin; |
| ierr = PetscNew(SVD_CYCLIC,&cyclic);CHKERRQ(ierr); |
| PetscLogObjectMemory(svd,sizeof(SVD_CYCLIC)); |
| ierr = PetscNewLog(svd,SVD_CYCLIC,&cyclic);CHKERRQ(ierr); |
| svd->data = (void *)cyclic; |
| svd->ops->solve = SVDSolve_Cyclic; |
| svd->ops->setup = SVDSetUp_Cyclic; |
| ST st; |
| PetscFunctionBegin; |
| ierr = PetscNew(SVD_CROSS,&cross);CHKERRQ(ierr); |
| PetscLogObjectMemory(svd,sizeof(SVD_CROSS)); |
| ierr = PetscNewLog(svd,SVD_CROSS,&cross);CHKERRQ(ierr); |
| svd->data = (void *)cross; |
| svd->ops->solve = SVDSolve_Cross; |
| svd->ops->setup = SVDSetUp_Cross; |
| PetscErrorCode SVDCreate_Lanczos(SVD svd) |
| { |
| PetscErrorCode ierr; |
| SVD_LANCZOS *lanczos; |
| PetscFunctionBegin; |
| ierr = PetscNew(SVD_LANCZOS,&lanczos);CHKERRQ(ierr); |
| PetscLogObjectMemory(svd,sizeof(SVD_LANCZOS)); |
| svd->data = (void *)lanczos; |
| ierr = PetscNewLog(svd,SVD_LANCZOS,&svd->data);CHKERRQ(ierr); |
| svd->ops->setup = SVDSetUp_Lanczos; |
| svd->ops->solve = SVDSolve_Lanczos; |
| svd->ops->destroy = SVDDestroy_Lanczos; |
| svd->ops->setfromoptions = SVDSetFromOptions_Lanczos; |
| svd->ops->view = SVDView_Lanczos; |
| lanczos->oneside = PETSC_FALSE; |
| ierr = PetscObjectComposeFunctionDynamic((PetscObject)svd,"SVDLanczosSetOneSide_C","SVDLanczosSetOneSide_Lanczos",SVDLanczosSetOneSide_Lanczos);CHKERRQ(ierr); |
| ierr = PetscObjectComposeFunctionDynamic((PetscObject)svd,"SVDLanczosGetOneSide_C","SVDLanczosGetOneSide_Lanczos",SVDLanczosGetOneSide_Lanczos);CHKERRQ(ierr); |
| PetscFunctionReturn(0); |