| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | /* | ||
| 2 | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
| 3 | SLEPc - Scalable Library for Eigenvalue Problem Computations | ||
| 4 | Copyright (c) 2002-, Universitat Politecnica de Valencia, Spain | ||
| 5 | |||
| 6 | This file is part of SLEPc. | ||
| 7 | SLEPc is distributed under a 2-clause BSD license (see LICENSE). | ||
| 8 | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
| 9 | */ | ||
| 10 | /* | ||
| 11 | PEP routines related to options that can be set via the command-line | ||
| 12 | or procedurally | ||
| 13 | */ | ||
| 14 | |||
| 15 | #include <slepc/private/pepimpl.h> /*I "slepcpep.h" I*/ | ||
| 16 | #include <petscdraw.h> | ||
| 17 | |||
| 18 | /*@C | ||
| 19 | PEPMonitorSetFromOptions - Sets a monitor function and viewer appropriate for the type | ||
| 20 | indicated by the user. | ||
| 21 | |||
| 22 | Collective | ||
| 23 | |||
| 24 | Input Parameters: | ||
| 25 | + pep - the polynomial eigensolver context | ||
| 26 | . opt - the command line option for this monitor | ||
| 27 | . name - the monitor type one is seeking | ||
| 28 | . ctx - an optional user context for the monitor, or `NULL` | ||
| 29 | - trackall - whether this monitor tracks all eigenvalues or not | ||
| 30 | |||
| 31 | Level: developer | ||
| 32 | |||
| 33 | .seealso: [](ch:pep), `PEPMonitorSet()`, `PEPSetTrackAll()` | ||
| 34 | @*/ | ||
| 35 | 5526 | PetscErrorCode PEPMonitorSetFromOptions(PEP pep,const char opt[],const char name[],void *ctx,PetscBool trackall) | |
| 36 | { | ||
| 37 | 5526 | PetscErrorCode (*mfunc)(PEP,PetscInt,PetscInt,PetscScalar*,PetscScalar*,PetscReal*,PetscInt,void*); | |
| 38 | 5526 | PetscErrorCode (*cfunc)(PetscViewer,PetscViewerFormat,void*,PetscViewerAndFormat**); | |
| 39 | 5526 | PetscErrorCode (*dfunc)(PetscViewerAndFormat**); | |
| 40 | 5526 | PetscViewerAndFormat *vf; | |
| 41 | 5526 | PetscViewer viewer; | |
| 42 | 5526 | PetscViewerFormat format; | |
| 43 | 5526 | PetscViewerType vtype; | |
| 44 | 5526 | char key[PETSC_MAX_PATH_LEN]; | |
| 45 | 5526 | PetscBool flg; | |
| 46 | |||
| 47 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
5526 | PetscFunctionBegin; |
| 48 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
5526 | PetscCall(PetscOptionsCreateViewer(PetscObjectComm((PetscObject)pep),((PetscObject)pep)->options,((PetscObject)pep)->prefix,opt,&viewer,&format,&flg)); |
| 49 |
8/14✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
|
5526 | if (!flg) PetscFunctionReturn(PETSC_SUCCESS); |
| 50 | |||
| 51 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
59 | PetscCall(PetscViewerGetType(viewer,&vtype)); |
| 52 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
59 | PetscCall(SlepcMonitorMakeKey_Internal(name,vtype,format,key)); |
| 53 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
59 | PetscCall(PetscFunctionListFind(PEPMonitorList,key,&mfunc)); |
| 54 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
59 | PetscCheck(mfunc,PetscObjectComm((PetscObject)pep),PETSC_ERR_SUP,"Specified viewer and format not supported"); |
| 55 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
59 | PetscCall(PetscFunctionListFind(PEPMonitorCreateList,key,&cfunc)); |
| 56 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
59 | PetscCall(PetscFunctionListFind(PEPMonitorDestroyList,key,&dfunc)); |
| 57 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
59 | if (!cfunc) cfunc = PetscViewerAndFormatCreate_Internal; |
| 58 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
59 | if (!dfunc) dfunc = PetscViewerAndFormatDestroy; |
| 59 | |||
| 60 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
59 | PetscCall((*cfunc)(viewer,format,ctx,&vf)); |
| 61 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
59 | PetscCall(PetscViewerDestroy(&viewer)); |
| 62 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
59 | PetscCall(PEPMonitorSet(pep,mfunc,vf,(PetscCtxDestroyFn*)dfunc)); |
| 63 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
59 | if (trackall) PetscCall(PEPSetTrackAll(pep,PETSC_TRUE)); |
| 64 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
10 | PetscFunctionReturn(PETSC_SUCCESS); |
| 65 | } | ||
| 66 | |||
| 67 | /*@ | ||
| 68 | PEPSetFromOptions - Sets `PEP` options from the options database. | ||
| 69 | This routine must be called before `PEPSetUp()` if the user is to be | ||
| 70 | allowed to configure the solver. | ||
| 71 | |||
| 72 | Collective | ||
| 73 | |||
| 74 | Input Parameter: | ||
| 75 | . pep - the polynomial eigensolver context | ||
| 76 | |||
| 77 | Note: | ||
| 78 | To see all options, run your program with the `-help` option. | ||
| 79 | |||
| 80 | Level: beginner | ||
| 81 | |||
| 82 | .seealso: [](ch:pep), `PEPSetOptionsPrefix()` | ||
| 83 | @*/ | ||
| 84 | 1842 | PetscErrorCode PEPSetFromOptions(PEP pep) | |
| 85 | { | ||
| 86 | 1842 | char type[256]; | |
| 87 | 1842 | PetscBool set,flg,flg1,flg2,flg3,flg4,flg5; | |
| 88 | 1842 | PetscReal r,t,array[2]={0,0}; | |
| 89 | 1842 | PetscScalar s; | |
| 90 | 1842 | PetscInt i,j,k; | |
| 91 | 1842 | PEPScale scale; | |
| 92 | 1842 | PEPRefine refine; | |
| 93 | 1842 | PEPRefineScheme scheme; | |
| 94 | |||
| 95 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1842 | PetscFunctionBegin; |
| 96 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
1842 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
| 97 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PEPRegisterAll()); |
| 98 |
8/10✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 10 times.
✓ Branch 5 taken 8 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✓ Branch 8 taken 2 times.
✓ Branch 9 taken 2 times.
|
5526 | PetscObjectOptionsBegin((PetscObject)pep); |
| 99 |
7/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
1977 | PetscCall(PetscOptionsFList("-pep_type","Polynomial eigensolver method","PEPSetType",PEPList,(char*)(((PetscObject)pep)->type_name?((PetscObject)pep)->type_name:PEPTOAR),type,sizeof(type),&flg)); |
| 100 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
1842 | if (flg) PetscCall(PEPSetType(pep,type)); |
| 101 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
746 | else if (!((PetscObject)pep)->type_name) PetscCall(PEPSetType(pep,PEPTOAR)); |
| 102 | |||
| 103 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroupBegin("-pep_general","General polynomial eigenvalue problem","PEPSetProblemType",&flg)); |
| 104 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
1842 | if (flg) PetscCall(PEPSetProblemType(pep,PEP_GENERAL)); |
| 105 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroup("-pep_hermitian","Hermitian polynomial eigenvalue problem","PEPSetProblemType",&flg)); |
| 106 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
1842 | if (flg) PetscCall(PEPSetProblemType(pep,PEP_HERMITIAN)); |
| 107 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroup("-pep_hyperbolic","Hyperbolic polynomial eigenvalue problem","PEPSetProblemType",&flg)); |
| 108 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
1842 | if (flg) PetscCall(PEPSetProblemType(pep,PEP_HYPERBOLIC)); |
| 109 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroupEnd("-pep_gyroscopic","Gyroscopic polynomial eigenvalue problem","PEPSetProblemType",&flg)); |
| 110 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
1842 | if (flg) PetscCall(PEPSetProblemType(pep,PEP_GYROSCOPIC)); |
| 111 | |||
| 112 | 1842 | scale = pep->scale; | |
| 113 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsEnum("-pep_scale","Scaling strategy","PEPSetScale",PEPScaleTypes,(PetscEnum)scale,(PetscEnum*)&scale,&flg1)); |
| 114 | 1842 | r = pep->sfactor; | |
| 115 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsReal("-pep_scale_factor","Scale factor","PEPSetScale",pep->sfactor,&r,&flg2)); |
| 116 |
3/4✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
|
1842 | if (!flg2 && r==1.0) r = PETSC_DETERMINE; |
| 117 | 1842 | j = pep->sits; | |
| 118 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsInt("-pep_scale_its","Number of iterations in diagonal scaling","PEPSetScale",pep->sits,&j,&flg3)); |
| 119 | 1842 | t = pep->slambda; | |
| 120 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsReal("-pep_scale_lambda","Estimate of eigenvalue (modulus) for diagonal scaling","PEPSetScale",pep->slambda,&t,&flg4)); |
| 121 |
9/14✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 10 times.
✓ Branch 8 taken 2 times.
✓ Branch 9 taken 8 times.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
|
1842 | if (flg1 || flg2 || flg3 || flg4) PetscCall(PEPSetScale(pep,scale,r,NULL,NULL,j,t)); |
| 122 | |||
| 123 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsEnum("-pep_extract","Extraction method","PEPSetExtract",PEPExtractTypes,(PetscEnum)pep->extract,(PetscEnum*)&pep->extract,NULL)); |
| 124 | |||
| 125 | 1842 | refine = pep->refine; | |
| 126 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsEnum("-pep_refine","Iterative refinement method","PEPSetRefine",PEPRefineTypes,(PetscEnum)refine,(PetscEnum*)&refine,&flg1)); |
| 127 | 1842 | i = pep->npart; | |
| 128 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsInt("-pep_refine_partitions","Number of partitions of the communicator for iterative refinement","PEPSetRefine",pep->npart,&i,&flg2)); |
| 129 | 1842 | r = pep->rtol; | |
| 130 |
7/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
1858 | PetscCall(PetscOptionsReal("-pep_refine_tol","Tolerance for iterative refinement","PEPSetRefine",pep->rtol==(PetscReal)PETSC_DETERMINE?SLEPC_DEFAULT_TOL/1000:pep->rtol,&r,&flg3)); |
| 131 | 1842 | j = pep->rits; | |
| 132 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsInt("-pep_refine_its","Maximum number of iterations for iterative refinement","PEPSetRefine",pep->rits,&j,&flg4)); |
| 133 | 1842 | scheme = pep->scheme; | |
| 134 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsEnum("-pep_refine_scheme","Scheme used for linear systems within iterative refinement","PEPSetRefine",PEPRefineSchemes,(PetscEnum)scheme,(PetscEnum*)&scheme,&flg5)); |
| 135 |
10/16✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 10 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 10 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 8 times.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
|
1842 | if (flg1 || flg2 || flg3 || flg4 || flg5) PetscCall(PEPSetRefine(pep,refine,i,r,j,scheme)); |
| 136 | |||
| 137 | 1842 | i = pep->max_it; | |
| 138 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsInt("-pep_max_it","Maximum number of iterations","PEPSetTolerances",pep->max_it,&i,&flg1)); |
| 139 | 1842 | r = pep->tol; | |
| 140 |
7/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
3009 | PetscCall(PetscOptionsReal("-pep_tol","Tolerance","PEPSetTolerances",SlepcDefaultTol(pep->tol),&r,&flg2)); |
| 141 |
8/10✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
✓ Branch 4 taken 2 times.
✓ Branch 5 taken 8 times.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
|
1842 | if (flg1 || flg2) PetscCall(PEPSetTolerances(pep,r,i)); |
| 142 | |||
| 143 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroupBegin("-pep_conv_rel","Relative error convergence test","PEPSetConvergenceTest",&flg)); |
| 144 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
1842 | if (flg) PetscCall(PEPSetConvergenceTest(pep,PEP_CONV_REL)); |
| 145 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroup("-pep_conv_norm","Convergence test relative to the matrix norms","PEPSetConvergenceTest",&flg)); |
| 146 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
1842 | if (flg) PetscCall(PEPSetConvergenceTest(pep,PEP_CONV_NORM)); |
| 147 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroup("-pep_conv_abs","Absolute error convergence test","PEPSetConvergenceTest",&flg)); |
| 148 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
1842 | if (flg) PetscCall(PEPSetConvergenceTest(pep,PEP_CONV_ABS)); |
| 149 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroupEnd("-pep_conv_user","User-defined convergence test","PEPSetConvergenceTest",&flg)); |
| 150 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
1842 | if (flg) PetscCall(PEPSetConvergenceTest(pep,PEP_CONV_USER)); |
| 151 | |||
| 152 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroupBegin("-pep_stop_basic","Stop iteration if all eigenvalues converged or max_it reached","PEPSetStoppingTest",&flg)); |
| 153 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
1842 | if (flg) PetscCall(PEPSetStoppingTest(pep,PEP_STOP_BASIC)); |
| 154 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroupEnd("-pep_stop_user","User-defined stopping test","PEPSetStoppingTest",&flg)); |
| 155 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
1842 | if (flg) PetscCall(PEPSetStoppingTest(pep,PEP_STOP_USER)); |
| 156 | |||
| 157 | 1842 | i = pep->nev; | |
| 158 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsInt("-pep_nev","Number of eigenvalues to compute","PEPSetDimensions",pep->nev,&i,&flg1)); |
| 159 | 1842 | j = pep->ncv; | |
| 160 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsInt("-pep_ncv","Number of basis vectors","PEPSetDimensions",pep->ncv,&j,&flg2)); |
| 161 | 1842 | k = pep->mpd; | |
| 162 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsInt("-pep_mpd","Maximum dimension of projected problem","PEPSetDimensions",pep->mpd,&k,&flg3)); |
| 163 |
9/12✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 10 times.
✓ Branch 6 taken 2 times.
✓ Branch 7 taken 8 times.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
1842 | if (flg1 || flg2 || flg3) PetscCall(PEPSetDimensions(pep,i,j,k)); |
| 164 | |||
| 165 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsEnum("-pep_basis","Polynomial basis","PEPSetBasis",PEPBasisTypes,(PetscEnum)pep->basis,(PetscEnum*)&pep->basis,NULL)); |
| 166 | |||
| 167 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroupBegin("-pep_largest_magnitude","Compute largest eigenvalues in magnitude","PEPSetWhichEigenpairs",&flg)); |
| 168 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
1842 | if (flg) PetscCall(PEPSetWhichEigenpairs(pep,PEP_LARGEST_MAGNITUDE)); |
| 169 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroup("-pep_smallest_magnitude","Compute smallest eigenvalues in magnitude","PEPSetWhichEigenpairs",&flg)); |
| 170 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
1842 | if (flg) PetscCall(PEPSetWhichEigenpairs(pep,PEP_SMALLEST_MAGNITUDE)); |
| 171 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroup("-pep_largest_real","Compute eigenvalues with largest real parts","PEPSetWhichEigenpairs",&flg)); |
| 172 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
1842 | if (flg) PetscCall(PEPSetWhichEigenpairs(pep,PEP_LARGEST_REAL)); |
| 173 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroup("-pep_smallest_real","Compute eigenvalues with smallest real parts","PEPSetWhichEigenpairs",&flg)); |
| 174 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
1842 | if (flg) PetscCall(PEPSetWhichEigenpairs(pep,PEP_SMALLEST_REAL)); |
| 175 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroup("-pep_largest_imaginary","Compute eigenvalues with largest imaginary parts","PEPSetWhichEigenpairs",&flg)); |
| 176 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
1842 | if (flg) PetscCall(PEPSetWhichEigenpairs(pep,PEP_LARGEST_IMAGINARY)); |
| 177 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroup("-pep_smallest_imaginary","Compute eigenvalues with smallest imaginary parts","PEPSetWhichEigenpairs",&flg)); |
| 178 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
1842 | if (flg) PetscCall(PEPSetWhichEigenpairs(pep,PEP_SMALLEST_IMAGINARY)); |
| 179 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroup("-pep_target_magnitude","Compute eigenvalues closest to target","PEPSetWhichEigenpairs",&flg)); |
| 180 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
1842 | if (flg) PetscCall(PEPSetWhichEigenpairs(pep,PEP_TARGET_MAGNITUDE)); |
| 181 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroup("-pep_target_real","Compute eigenvalues with real parts closest to target","PEPSetWhichEigenpairs",&flg)); |
| 182 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
1842 | if (flg) PetscCall(PEPSetWhichEigenpairs(pep,PEP_TARGET_REAL)); |
| 183 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroup("-pep_target_imaginary","Compute eigenvalues with imaginary parts closest to target","PEPSetWhichEigenpairs",&flg)); |
| 184 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
1842 | if (flg) PetscCall(PEPSetWhichEigenpairs(pep,PEP_TARGET_IMAGINARY)); |
| 185 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroup("-pep_all","Compute all eigenvalues in an interval or a region","PEPSetWhichEigenpairs",&flg)); |
| 186 |
6/8✓ Branch 0 taken 5 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 4 times.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
|
1842 | if (flg) PetscCall(PEPSetWhichEigenpairs(pep,PEP_ALL)); |
| 187 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBoolGroupEnd("-pep_which_user","Select the user-defined selection criterion","PEPSetWhichEigenpairs",&flg)); |
| 188 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
1842 | if (flg) PetscCall(PEPSetWhichEigenpairs(pep,PEP_WHICH_USER)); |
| 189 | |||
| 190 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsScalar("-pep_target","Value of the target","PEPSetTarget",pep->target,&s,&flg)); |
| 191 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1842 | if (flg) { |
| 192 |
5/8✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
584 | if (pep->which!=PEP_TARGET_REAL && pep->which!=PEP_TARGET_IMAGINARY) PetscCall(PEPSetWhichEigenpairs(pep,PEP_TARGET_MAGNITUDE)); |
| 193 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
584 | PetscCall(PEPSetTarget(pep,s)); |
| 194 | } | ||
| 195 | |||
| 196 | 1842 | k = 2; | |
| 197 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsRealArray("-pep_interval","Computational interval (two real values separated with a comma without spaces)","PEPSetInterval",array,&k,&flg)); |
| 198 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1842 | if (flg) { |
| 199 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
60 | PetscCheck(k>1,PetscObjectComm((PetscObject)pep),PETSC_ERR_ARG_SIZ,"Must pass two values in -pep_interval (comma-separated without spaces)"); |
| 200 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
60 | PetscCall(PEPSetWhichEigenpairs(pep,PEP_ALL)); |
| 201 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
60 | PetscCall(PEPSetInterval(pep,array[0],array[1])); |
| 202 | } | ||
| 203 | |||
| 204 | /* -----------------------------------------------------------------------*/ | ||
| 205 | /* | ||
| 206 | Cancels all monitors hardwired into code before call to PEPSetFromOptions() | ||
| 207 | */ | ||
| 208 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsBool("-pep_monitor_cancel","Remove any hardwired monitor routines","PEPMonitorCancel",PETSC_FALSE,&flg,&set)); |
| 209 |
7/10✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✓ Branch 5 taken 8 times.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
|
1842 | if (set && flg) PetscCall(PEPMonitorCancel(pep)); |
| 210 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PEPMonitorSetFromOptions(pep,"-pep_monitor","first_approximation",NULL,PETSC_FALSE)); |
| 211 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PEPMonitorSetFromOptions(pep,"-pep_monitor_all","all_approximations",NULL,PETSC_TRUE)); |
| 212 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PEPMonitorSetFromOptions(pep,"-pep_monitor_conv","convergence_history",NULL,PETSC_FALSE)); |
| 213 | |||
| 214 | /* -----------------------------------------------------------------------*/ | ||
| 215 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsName("-pep_view","Print detailed information on solver used","PEPView",&set)); |
| 216 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsName("-pep_view_vectors","View computed eigenvectors","PEPVectorsView",&set)); |
| 217 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsName("-pep_view_values","View computed eigenvalues","PEPValuesView",&set)); |
| 218 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsName("-pep_converged_reason","Print reason for convergence, and number of iterations","PEPConvergedReasonView",&set)); |
| 219 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsName("-pep_error_absolute","Print absolute errors of each eigenpair","PEPErrorView",&set)); |
| 220 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsName("-pep_error_relative","Print relative errors of each eigenpair","PEPErrorView",&set)); |
| 221 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscOptionsName("-pep_error_backward","Print backward errors of each eigenpair","PEPErrorView",&set)); |
| 222 | |||
| 223 |
5/8✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
1842 | PetscTryTypeMethod(pep,setfromoptions,PetscOptionsObject); |
| 224 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PetscObjectProcessOptionsHandlers((PetscObject)pep,PetscOptionsObject)); |
| 225 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscOptionsEnd(); |
| 226 | |||
| 227 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
1842 | if (!pep->V) PetscCall(PEPGetBV(pep,&pep->V)); |
| 228 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(BVSetFromOptions(pep->V)); |
| 229 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
1842 | if (!pep->rg) PetscCall(PEPGetRG(pep,&pep->rg)); |
| 230 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(RGSetFromOptions(pep->rg)); |
| 231 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
1842 | if (!pep->ds) PetscCall(PEPGetDS(pep,&pep->ds)); |
| 232 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PEPSetDSType(pep)); |
| 233 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(DSSetFromOptions(pep->ds)); |
| 234 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
1842 | if (!pep->st) PetscCall(PEPGetST(pep,&pep->st)); |
| 235 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(PEPSetDefaultST(pep)); |
| 236 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(STSetFromOptions(pep->st)); |
| 237 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
1842 | if (!pep->refineksp) PetscCall(PEPRefineGetKSP(pep,&pep->refineksp)); |
| 238 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1842 | PetscCall(KSPSetFromOptions(pep->refineksp)); |
| 239 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
355 | PetscFunctionReturn(PETSC_SUCCESS); |
| 240 | } | ||
| 241 | |||
| 242 | /*@ | ||
| 243 | PEPGetTolerances - Gets the tolerance and maximum iteration count used | ||
| 244 | by the `PEP` convergence tests. | ||
| 245 | |||
| 246 | Not Collective | ||
| 247 | |||
| 248 | Input Parameter: | ||
| 249 | . pep - the polynomial eigensolver context | ||
| 250 | |||
| 251 | Output Parameters: | ||
| 252 | + tol - the convergence tolerance | ||
| 253 | - maxits - maximum number of iterations | ||
| 254 | |||
| 255 | Note: | ||
| 256 | The user can specify `NULL` for any parameter that is not needed. | ||
| 257 | |||
| 258 | Level: intermediate | ||
| 259 | |||
| 260 | .seealso: [](ch:pep), `PEPSetTolerances()` | ||
| 261 | @*/ | ||
| 262 | 283 | PetscErrorCode PEPGetTolerances(PEP pep,PetscReal *tol,PetscInt *maxits) | |
| 263 | { | ||
| 264 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
283 | PetscFunctionBegin; |
| 265 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
283 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
| 266 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
283 | if (tol) *tol = pep->tol; |
| 267 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
283 | if (maxits) *maxits = pep->max_it; |
| 268 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
283 | PetscFunctionReturn(PETSC_SUCCESS); |
| 269 | } | ||
| 270 | |||
| 271 | /*@ | ||
| 272 | PEPSetTolerances - Sets the tolerance and maximum iteration count used | ||
| 273 | by the `PEP` convergence tests. | ||
| 274 | |||
| 275 | Logically Collective | ||
| 276 | |||
| 277 | Input Parameters: | ||
| 278 | + pep - the polynomial eigensolver context | ||
| 279 | . tol - the convergence tolerance | ||
| 280 | - maxits - maximum number of iterations to use | ||
| 281 | |||
| 282 | Options Database Keys: | ||
| 283 | + -pep_tol \<tol\> - sets the convergence tolerance | ||
| 284 | - -pep_max_it \<maxits\> - sets the maximum number of iterations allowed | ||
| 285 | |||
| 286 | Note: | ||
| 287 | Use `PETSC_CURRENT` to retain the current value of any of the parameters. | ||
| 288 | Use `PETSC_DETERMINE` for either argument to assign a default value computed | ||
| 289 | internally (may be different in each solver). | ||
| 290 | For `maxits` use `PETSC_UNLIMITED` to indicate there is no upper bound on this value. | ||
| 291 | |||
| 292 | Level: intermediate | ||
| 293 | |||
| 294 | .seealso: [](ch:pep), `PEPGetTolerances()` | ||
| 295 | @*/ | ||
| 296 | 1141 | PetscErrorCode PEPSetTolerances(PEP pep,PetscReal tol,PetscInt maxits) | |
| 297 | { | ||
| 298 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1141 | PetscFunctionBegin; |
| 299 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
1141 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
| 300 |
29/66✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 2 times.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✓ Branch 22 taken 2 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✓ Branch 26 taken 2 times.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
✓ Branch 30 taken 2 times.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 2 times.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✓ Branch 36 taken 2 times.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✓ Branch 39 taken 2 times.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✓ Branch 43 taken 2 times.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✓ Branch 47 taken 2 times.
✓ Branch 48 taken 2 times.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✓ Branch 51 taken 2 times.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✓ Branch 54 taken 2 times.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✓ Branch 57 taken 2 times.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✓ Branch 60 taken 2 times.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✓ Branch 63 taken 2 times.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
|
1141 | PetscValidLogicalCollectiveReal(pep,tol,2); |
| 301 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
1141 | PetscValidLogicalCollectiveInt(pep,maxits,3); |
| 302 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
1141 | if (tol == (PetscReal)PETSC_DETERMINE) { |
| 303 | ✗ | pep->tol = PETSC_DETERMINE; | |
| 304 | ✗ | pep->state = PEP_STATE_INITIAL; | |
| 305 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1141 | } else if (tol != (PetscReal)PETSC_CURRENT) { |
| 306 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
1101 | PetscCheck(tol>0.0,PetscObjectComm((PetscObject)pep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of tol. Must be > 0"); |
| 307 | 1101 | pep->tol = tol; | |
| 308 | } | ||
| 309 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1141 | if (maxits == PETSC_DETERMINE) { |
| 310 | 110 | pep->max_it = PETSC_DETERMINE; | |
| 311 | 110 | pep->state = PEP_STATE_INITIAL; | |
| 312 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
1031 | } else if (maxits == PETSC_UNLIMITED) { |
| 313 | ✗ | pep->max_it = PETSC_INT_MAX; | |
| 314 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1031 | } else if (maxits != PETSC_CURRENT) { |
| 315 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
342 | PetscCheck(maxits>0,PetscObjectComm((PetscObject)pep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of maxits. Must be > 0"); |
| 316 | 342 | pep->max_it = maxits; | |
| 317 | } | ||
| 318 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
220 | PetscFunctionReturn(PETSC_SUCCESS); |
| 319 | } | ||
| 320 | |||
| 321 | /*@ | ||
| 322 | PEPGetDimensions - Gets the number of eigenvalues to compute | ||
| 323 | and the dimension of the subspace. | ||
| 324 | |||
| 325 | Not Collective | ||
| 326 | |||
| 327 | Input Parameter: | ||
| 328 | . pep - the polynomial eigensolver context | ||
| 329 | |||
| 330 | Output Parameters: | ||
| 331 | + nev - number of eigenvalues to compute | ||
| 332 | . ncv - the maximum dimension of the subspace to be used by the solver | ||
| 333 | - mpd - the maximum dimension allowed for the projected problem | ||
| 334 | |||
| 335 | Notes: | ||
| 336 | The user can specify `NULL` for any parameter that is not needed. | ||
| 337 | |||
| 338 | Level: intermediate | ||
| 339 | |||
| 340 | .seealso: [](ch:pep), `PEPSetDimensions()` | ||
| 341 | @*/ | ||
| 342 | 824 | PetscErrorCode PEPGetDimensions(PEP pep,PetscInt *nev,PetscInt *ncv,PetscInt *mpd) | |
| 343 | { | ||
| 344 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
824 | PetscFunctionBegin; |
| 345 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
824 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
| 346 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
824 | if (nev) *nev = pep->nev; |
| 347 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
824 | if (ncv) *ncv = pep->ncv; |
| 348 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
824 | if (mpd) *mpd = pep->mpd; |
| 349 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
824 | PetscFunctionReturn(PETSC_SUCCESS); |
| 350 | } | ||
| 351 | |||
| 352 | /*@ | ||
| 353 | PEPSetDimensions - Sets the number of eigenvalues to compute | ||
| 354 | and the dimension of the subspace. | ||
| 355 | |||
| 356 | Logically Collective | ||
| 357 | |||
| 358 | Input Parameters: | ||
| 359 | + pep - the polynomial eigensolver context | ||
| 360 | . nev - number of eigenvalues to compute | ||
| 361 | . ncv - the maximum dimension of the subspace to be used by the solver | ||
| 362 | - mpd - the maximum dimension allowed for the projected problem | ||
| 363 | |||
| 364 | Options Database Keys: | ||
| 365 | + -pep_nev \<nev\> - sets the number of eigenvalues | ||
| 366 | . -pep_ncv \<ncv\> - sets the dimension of the subspace | ||
| 367 | - -pep_mpd \<mpd\> - sets the maximum projected dimension | ||
| 368 | |||
| 369 | Notes: | ||
| 370 | Use `PETSC_DETERMINE` for `ncv` and `mpd` to assign a reasonably good value, which is | ||
| 371 | dependent on the solution method. For any of the arguments, use `PETSC_CURRENT` | ||
| 372 | to preserve the current value. | ||
| 373 | |||
| 374 | The parameters `ncv` and `mpd` are intimately related, so that the user is advised | ||
| 375 | to set one of them at most. Normal usage is\: | ||
| 376 | |||
| 377 | 1. in cases where `nev` is small, the user sets `ncv` (a reasonable default is `2*nev`). | ||
| 378 | 2. in cases where `nev` is large, the user sets `mpd`. | ||
| 379 | |||
| 380 | The value of `ncv` should always be between `nev` and `(nev+mpd)`, typically | ||
| 381 | `ncv=nev+mpd`. If `nev` is not too large, `mpd=nev` is a reasonable choice, otherwise | ||
| 382 | a smaller value should be used. | ||
| 383 | |||
| 384 | When computing all eigenvalues in an interval, see `PEPSetInterval()`, these | ||
| 385 | parameters lose relevance, and tuning must be done with | ||
| 386 | `PEPSTOARSetDimensions()`. | ||
| 387 | |||
| 388 | Level: intermediate | ||
| 389 | |||
| 390 | .seealso: [](ch:pep), `PEPGetDimensions()`, `PEPSetInterval()`, `PEPSTOARSetDimensions()` | ||
| 391 | @*/ | ||
| 392 | 1724 | PetscErrorCode PEPSetDimensions(PEP pep,PetscInt nev,PetscInt ncv,PetscInt mpd) | |
| 393 | { | ||
| 394 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1724 | PetscFunctionBegin; |
| 395 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
1724 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
| 396 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
1724 | PetscValidLogicalCollectiveInt(pep,nev,2); |
| 397 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
1724 | PetscValidLogicalCollectiveInt(pep,ncv,3); |
| 398 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
1724 | PetscValidLogicalCollectiveInt(pep,mpd,4); |
| 399 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
1724 | if (nev != PETSC_CURRENT) { |
| 400 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
1724 | PetscCheck(nev>0,PetscObjectComm((PetscObject)pep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of nev. Must be > 0"); |
| 401 | 1724 | pep->nev = nev; | |
| 402 | } | ||
| 403 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1724 | if (ncv == PETSC_DETERMINE) { |
| 404 | 865 | pep->ncv = PETSC_DETERMINE; | |
| 405 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 2 times.
|
859 | } else if (ncv != PETSC_CURRENT) { |
| 406 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
857 | PetscCheck(ncv>0,PetscObjectComm((PetscObject)pep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of ncv. Must be > 0"); |
| 407 | 857 | pep->ncv = ncv; | |
| 408 | } | ||
| 409 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1724 | if (mpd == PETSC_DETERMINE) { |
| 410 | 1462 | pep->mpd = PETSC_DETERMINE; | |
| 411 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 2 times.
|
262 | } else if (mpd != PETSC_CURRENT) { |
| 412 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
260 | PetscCheck(mpd>0,PetscObjectComm((PetscObject)pep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of mpd. Must be > 0"); |
| 413 | 260 | pep->mpd = mpd; | |
| 414 | } | ||
| 415 | 1724 | pep->state = PEP_STATE_INITIAL; | |
| 416 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
1724 | PetscFunctionReturn(PETSC_SUCCESS); |
| 417 | } | ||
| 418 | |||
| 419 | /*@ | ||
| 420 | PEPSetWhichEigenpairs - Specifies which portion of the spectrum is | ||
| 421 | to be sought. | ||
| 422 | |||
| 423 | Logically Collective | ||
| 424 | |||
| 425 | Input Parameters: | ||
| 426 | + pep - the polynomial eigensolver context | ||
| 427 | - which - the portion of the spectrum to be sought, see `PEPWhich` for possible values | ||
| 428 | |||
| 429 | Options Database Keys: | ||
| 430 | + -pep_largest_magnitude - sets largest eigenvalues in magnitude | ||
| 431 | . -pep_smallest_magnitude - sets smallest eigenvalues in magnitude | ||
| 432 | . -pep_largest_real - sets largest real parts | ||
| 433 | . -pep_smallest_real - sets smallest real parts | ||
| 434 | . -pep_largest_imaginary - sets largest imaginary parts | ||
| 435 | . -pep_smallest_imaginary - sets smallest imaginary parts | ||
| 436 | . -pep_target_magnitude - sets eigenvalues closest to target | ||
| 437 | . -pep_target_real - sets real parts closest to target | ||
| 438 | . -pep_target_imaginary - sets imaginary parts closest to target | ||
| 439 | . -pep_all - sets all eigenvalues in an interval or region | ||
| 440 | - -pep_which_user - select the user-defined selection criterion | ||
| 441 | |||
| 442 | Notes: | ||
| 443 | Not all eigensolvers implemented in `PEP` account for all the possible values | ||
| 444 | of `which`. Also, some values make sense only for certain types of | ||
| 445 | problems. If SLEPc is compiled for real numbers `PEP_LARGEST_IMAGINARY` | ||
| 446 | and `PEP_SMALLEST_IMAGINARY` use the absolute value of the imaginary part | ||
| 447 | for eigenvalue selection. | ||
| 448 | |||
| 449 | The target is a scalar value provided with `PEPSetTarget()`. | ||
| 450 | |||
| 451 | The criterion `PEP_TARGET_IMAGINARY` is available only in case PETSc and | ||
| 452 | SLEPc have been built with complex scalars. | ||
| 453 | |||
| 454 | `PEP_ALL` is intended for use in combination with an interval (see | ||
| 455 | `PEPSetInterval()`), when all eigenvalues within the interval are requested, | ||
| 456 | and also for computing all eigenvalues in a region with the `PEPCISS` solver. | ||
| 457 | |||
| 458 | Level: intermediate | ||
| 459 | |||
| 460 | .seealso: [](ch:pep), `PEPGetWhichEigenpairs()`, `PEPSetTarget()`, `PEPSetInterval()`, `PEPSetDimensions()`, `PEPSetEigenvalueComparison()`, `PEPWhich` | ||
| 461 | @*/ | ||
| 462 | 1078 | PetscErrorCode PEPSetWhichEigenpairs(PEP pep,PEPWhich which) | |
| 463 | { | ||
| 464 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1078 | PetscFunctionBegin; |
| 465 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
1078 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
| 466 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
1078 | PetscValidLogicalCollectiveEnum(pep,which,2); |
| 467 |
1/3✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
|
1078 | switch (which) { |
| 468 | 1078 | case PEP_LARGEST_MAGNITUDE: | |
| 469 | case PEP_SMALLEST_MAGNITUDE: | ||
| 470 | case PEP_LARGEST_REAL: | ||
| 471 | case PEP_SMALLEST_REAL: | ||
| 472 | case PEP_LARGEST_IMAGINARY: | ||
| 473 | case PEP_SMALLEST_IMAGINARY: | ||
| 474 | case PEP_TARGET_MAGNITUDE: | ||
| 475 | case PEP_TARGET_REAL: | ||
| 476 | #if defined(PETSC_USE_COMPLEX) | ||
| 477 | case PEP_TARGET_IMAGINARY: | ||
| 478 | #endif | ||
| 479 | case PEP_ALL: | ||
| 480 | case PEP_WHICH_USER: | ||
| 481 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1078 | if (pep->which != which) { |
| 482 | 1038 | pep->state = PEP_STATE_INITIAL; | |
| 483 | 1038 | pep->which = which; | |
| 484 | } | ||
| 485 | 211 | break; | |
| 486 | #if !defined(PETSC_USE_COMPLEX) | ||
| 487 | ✗ | case PEP_TARGET_IMAGINARY: | |
| 488 | ✗ | SETERRQ(PetscObjectComm((PetscObject)pep),PETSC_ERR_SUP,"PEP_TARGET_IMAGINARY can be used only with complex scalars"); | |
| 489 | #endif | ||
| 490 | ✗ | default: | |
| 491 | ✗ | SETERRQ(PetscObjectComm((PetscObject)pep),PETSC_ERR_ARG_OUTOFRANGE,"Invalid 'which' value"); | |
| 492 | } | ||
| 493 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
211 | PetscFunctionReturn(PETSC_SUCCESS); |
| 494 | } | ||
| 495 | |||
| 496 | /*@ | ||
| 497 | PEPGetWhichEigenpairs - Returns which portion of the spectrum is to be | ||
| 498 | sought. | ||
| 499 | |||
| 500 | Not Collective | ||
| 501 | |||
| 502 | Input Parameter: | ||
| 503 | . pep - the polynomial eigensolver context | ||
| 504 | |||
| 505 | Output Parameter: | ||
| 506 | . which - the portion of the spectrum to be sought | ||
| 507 | |||
| 508 | Level: intermediate | ||
| 509 | |||
| 510 | .seealso: [](ch:pep), `PEPSetWhichEigenpairs()`, `PEPWhich` | ||
| 511 | @*/ | ||
| 512 | 16 | PetscErrorCode PEPGetWhichEigenpairs(PEP pep,PEPWhich *which) | |
| 513 | { | ||
| 514 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
16 | PetscFunctionBegin; |
| 515 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
16 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
| 516 |
2/8✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
16 | PetscAssertPointer(which,2); |
| 517 | 16 | *which = pep->which; | |
| 518 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
16 | PetscFunctionReturn(PETSC_SUCCESS); |
| 519 | } | ||
| 520 | |||
| 521 | /*@C | ||
| 522 | PEPSetEigenvalueComparison - Specifies the eigenvalue comparison function | ||
| 523 | when `PEPSetWhichEigenpairs()` is set to `PEP_WHICH_USER`. | ||
| 524 | |||
| 525 | Logically Collective | ||
| 526 | |||
| 527 | Input Parameters: | ||
| 528 | + pep - the polynomial eigensolver context | ||
| 529 | . comp - the comparison function, see `SlepcEigenvalueComparisonFn` for the calling sequence | ||
| 530 | - ctx - a context pointer (the last parameter to the comparison function) | ||
| 531 | |||
| 532 | Level: advanced | ||
| 533 | |||
| 534 | .seealso: [](ch:pep), `PEPSetWhichEigenpairs()`, `PEPWhich` | ||
| 535 | @*/ | ||
| 536 | 25 | PetscErrorCode PEPSetEigenvalueComparison(PEP pep,SlepcEigenvalueComparisonFn *comp,void *ctx) | |
| 537 | { | ||
| 538 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
25 | PetscFunctionBegin; |
| 539 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
25 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
| 540 | 25 | pep->sc->comparison = comp; | |
| 541 | 25 | pep->sc->comparisonctx = ctx; | |
| 542 | 25 | pep->which = PEP_WHICH_USER; | |
| 543 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
25 | PetscFunctionReturn(PETSC_SUCCESS); |
| 544 | } | ||
| 545 | |||
| 546 | /*@ | ||
| 547 | PEPSetProblemType - Specifies the type of the polynomial eigenvalue problem. | ||
| 548 | |||
| 549 | Logically Collective | ||
| 550 | |||
| 551 | Input Parameters: | ||
| 552 | + pep - the polynomial eigensolver context | ||
| 553 | - type - a known type of polynomial eigenvalue problem | ||
| 554 | |||
| 555 | Options Database Keys: | ||
| 556 | + -pep_general - general problem with no particular structure | ||
| 557 | . -pep_hermitian - problem whose coefficient matrices are Hermitian | ||
| 558 | . -pep_hyperbolic - Hermitian problem that satisfies the definition of hyperbolic | ||
| 559 | - -pep_gyroscopic - problem with gyroscopic structure | ||
| 560 | |||
| 561 | Notes: | ||
| 562 | See `PEPProblemType` for possible problem types. | ||
| 563 | |||
| 564 | This function is used to instruct SLEPc to exploit certain structure in | ||
| 565 | the polynomial eigenproblem. By default, no particular structure is assumed. | ||
| 566 | |||
| 567 | If the problem matrices are Hermitian (symmetric in the real case) or | ||
| 568 | Hermitian/skew-Hermitian then the solver can exploit this fact to perform | ||
| 569 | less operations or provide better stability. Hyperbolic problems are a | ||
| 570 | particular case of Hermitian problems, some solvers may treat them simply as | ||
| 571 | Hermitian. | ||
| 572 | |||
| 573 | Level: intermediate | ||
| 574 | |||
| 575 | .seealso: [](ch:pep), `PEPSetOperators()`, `PEPSetType()`, `PEPGetProblemType()`, `PEPProblemType` | ||
| 576 | @*/ | ||
| 577 | 1986 | PetscErrorCode PEPSetProblemType(PEP pep,PEPProblemType type) | |
| 578 | { | ||
| 579 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1986 | PetscFunctionBegin; |
| 580 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
1986 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
| 581 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
1986 | PetscValidLogicalCollectiveEnum(pep,type,2); |
| 582 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
1986 | PetscCheck(type==PEP_GENERAL || type==PEP_HERMITIAN || type==PEP_HYPERBOLIC || type==PEP_GYROSCOPIC,PetscObjectComm((PetscObject)pep),PETSC_ERR_ARG_WRONG,"Unknown eigenvalue problem type"); |
| 583 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1986 | if (type != pep->problem_type) { |
| 584 | 1966 | pep->problem_type = type; | |
| 585 | 1966 | pep->state = PEP_STATE_INITIAL; | |
| 586 | } | ||
| 587 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
388 | PetscFunctionReturn(PETSC_SUCCESS); |
| 588 | } | ||
| 589 | |||
| 590 | /*@ | ||
| 591 | PEPGetProblemType - Gets the problem type from the `PEP` object. | ||
| 592 | |||
| 593 | Not Collective | ||
| 594 | |||
| 595 | Input Parameter: | ||
| 596 | . pep - the polynomial eigensolver context | ||
| 597 | |||
| 598 | Output Parameter: | ||
| 599 | . type - the problem type | ||
| 600 | |||
| 601 | Level: intermediate | ||
| 602 | |||
| 603 | .seealso: [](ch:pep), `PEPSetProblemType()`, `PEPProblemType` | ||
| 604 | @*/ | ||
| 605 | 42 | PetscErrorCode PEPGetProblemType(PEP pep,PEPProblemType *type) | |
| 606 | { | ||
| 607 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
42 | PetscFunctionBegin; |
| 608 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
42 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
| 609 |
2/8✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
42 | PetscAssertPointer(type,2); |
| 610 | 42 | *type = pep->problem_type; | |
| 611 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
42 | PetscFunctionReturn(PETSC_SUCCESS); |
| 612 | } | ||
| 613 | |||
| 614 | /*@ | ||
| 615 | PEPSetBasis - Specifies the type of polynomial basis used to describe the | ||
| 616 | polynomial eigenvalue problem. | ||
| 617 | |||
| 618 | Logically Collective | ||
| 619 | |||
| 620 | Input Parameters: | ||
| 621 | + pep - the polynomial eigensolver context | ||
| 622 | - basis - the type of polynomial basis, see `PEPBasis` for possible values | ||
| 623 | |||
| 624 | Options Database Key: | ||
| 625 | . -pep_basis \<basis\> - Select the basis type | ||
| 626 | |||
| 627 | Note: | ||
| 628 | By default, the coefficient matrices passed via `PEPSetOperators()` are | ||
| 629 | expressed in the monomial basis, i.e. | ||
| 630 | $P(\lambda) = A_0 + \lambda A_1 + \lambda^2 A_2 + \dots + \lambda^d A_d$. | ||
| 631 | Other polynomial bases may have better numerical behavior, but the user | ||
| 632 | must then pass the coefficient matrices accordingly. | ||
| 633 | |||
| 634 | Level: intermediate | ||
| 635 | |||
| 636 | .seealso: [](ch:pep), `PEPSetOperators()`, `PEPGetBasis()`, `PEPBasis` | ||
| 637 | @*/ | ||
| 638 | 266 | PetscErrorCode PEPSetBasis(PEP pep,PEPBasis basis) | |
| 639 | { | ||
| 640 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
266 | PetscFunctionBegin; |
| 641 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
266 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
| 642 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
266 | PetscValidLogicalCollectiveEnum(pep,basis,2); |
| 643 | 266 | pep->basis = basis; | |
| 644 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
266 | PetscFunctionReturn(PETSC_SUCCESS); |
| 645 | } | ||
| 646 | |||
| 647 | /*@ | ||
| 648 | PEPGetBasis - Gets the type of polynomial basis from the `PEP` object. | ||
| 649 | |||
| 650 | Not Collective | ||
| 651 | |||
| 652 | Input Parameter: | ||
| 653 | . pep - the polynomial eigensolver context | ||
| 654 | |||
| 655 | Output Parameter: | ||
| 656 | . basis - the polynomial basis | ||
| 657 | |||
| 658 | Level: intermediate | ||
| 659 | |||
| 660 | .seealso: [](ch:pep), `PEPSetBasis()`, `PEPBasis` | ||
| 661 | @*/ | ||
| 662 | 121 | PetscErrorCode PEPGetBasis(PEP pep,PEPBasis *basis) | |
| 663 | { | ||
| 664 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
121 | PetscFunctionBegin; |
| 665 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
121 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
| 666 |
2/8✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
121 | PetscAssertPointer(basis,2); |
| 667 | 121 | *basis = pep->basis; | |
| 668 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
121 | PetscFunctionReturn(PETSC_SUCCESS); |
| 669 | } | ||
| 670 | |||
| 671 | /*@ | ||
| 672 | PEPSetTrackAll - Specifies if the solver must compute the residual of all | ||
| 673 | approximate eigenpairs or not. | ||
| 674 | |||
| 675 | Logically Collective | ||
| 676 | |||
| 677 | Input Parameters: | ||
| 678 | + pep - the polynomial eigensolver context | ||
| 679 | - trackall - whether compute all residuals or not | ||
| 680 | |||
| 681 | Notes: | ||
| 682 | If the user sets `trackall`=`PETSC_TRUE` then the solver explicitly computes | ||
| 683 | the residual for each eigenpair approximation. Computing the residual is | ||
| 684 | usually an expensive operation and solvers commonly compute the associated | ||
| 685 | residual to the first unconverged eigenpair. | ||
| 686 | |||
| 687 | The option `-pep_monitor_all` automatically activates this option. | ||
| 688 | |||
| 689 | Level: developer | ||
| 690 | |||
| 691 | .seealso: [](ch:pep), `PEPGetTrackAll()` | ||
| 692 | @*/ | ||
| 693 | 268 | PetscErrorCode PEPSetTrackAll(PEP pep,PetscBool trackall) | |
| 694 | { | ||
| 695 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
268 | PetscFunctionBegin; |
| 696 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
268 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
| 697 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
268 | PetscValidLogicalCollectiveBool(pep,trackall,2); |
| 698 | 268 | pep->trackall = trackall; | |
| 699 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
268 | PetscFunctionReturn(PETSC_SUCCESS); |
| 700 | } | ||
| 701 | |||
| 702 | /*@ | ||
| 703 | PEPGetTrackAll - Returns the flag indicating whether all residual norms must | ||
| 704 | be computed or not. | ||
| 705 | |||
| 706 | Not Collective | ||
| 707 | |||
| 708 | Input Parameter: | ||
| 709 | . pep - the polynomial eigensolver context | ||
| 710 | |||
| 711 | Output Parameter: | ||
| 712 | . trackall - the returned flag | ||
| 713 | |||
| 714 | Level: developer | ||
| 715 | |||
| 716 | .seealso: [](ch:pep), `PEPSetTrackAll()` | ||
| 717 | @*/ | ||
| 718 | 413 | PetscErrorCode PEPGetTrackAll(PEP pep,PetscBool *trackall) | |
| 719 | { | ||
| 720 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
413 | PetscFunctionBegin; |
| 721 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
413 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
| 722 |
2/8✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
413 | PetscAssertPointer(trackall,2); |
| 723 | 413 | *trackall = pep->trackall; | |
| 724 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
413 | PetscFunctionReturn(PETSC_SUCCESS); |
| 725 | } | ||
| 726 | |||
| 727 | /*@C | ||
| 728 | PEPSetConvergenceTestFunction - Sets a function to compute the error estimate | ||
| 729 | used in the convergence test. | ||
| 730 | |||
| 731 | Logically Collective | ||
| 732 | |||
| 733 | Input Parameters: | ||
| 734 | + pep - the polynomial eigensolver context | ||
| 735 | . conv - convergence test function, see `PEPConvergenceTestFn` for the calling sequence | ||
| 736 | . ctx - context for private data for the convergence routine (may be `NULL`) | ||
| 737 | - destroy - a routine for destroying the context (may be `NULL`), see `PetscCtxDestroyFn` | ||
| 738 | for the calling sequence | ||
| 739 | |||
| 740 | Notes: | ||
| 741 | When this is called with a user-defined function, then the convergence | ||
| 742 | criterion is set to `PEP_CONV_USER`, see `PEPSetConvergenceTest()`. | ||
| 743 | |||
| 744 | If the error estimate returned by the convergence test function is less than | ||
| 745 | the tolerance, then the eigenvalue is accepted as converged. | ||
| 746 | |||
| 747 | Level: advanced | ||
| 748 | |||
| 749 | .seealso: [](ch:pep), `PEPSetConvergenceTest()`, `PEPSetTolerances()` | ||
| 750 | @*/ | ||
| 751 | 10 | PetscErrorCode PEPSetConvergenceTestFunction(PEP pep,PEPConvergenceTestFn *conv,void *ctx,PetscCtxDestroyFn *destroy) | |
| 752 | { | ||
| 753 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
10 | PetscFunctionBegin; |
| 754 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
10 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
| 755 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
10 | if (pep->convergeddestroy) PetscCall((*pep->convergeddestroy)(&pep->convergedctx)); |
| 756 | 10 | pep->convergeduser = conv; | |
| 757 | 10 | pep->convergeddestroy = destroy; | |
| 758 | 10 | pep->convergedctx = ctx; | |
| 759 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
10 | if (conv == PEPConvergedRelative) pep->conv = PEP_CONV_REL; |
| 760 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
10 | else if (conv == PEPConvergedNorm) pep->conv = PEP_CONV_NORM; |
| 761 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
10 | else if (conv == PEPConvergedAbsolute) pep->conv = PEP_CONV_ABS; |
| 762 | else { | ||
| 763 | 10 | pep->conv = PEP_CONV_USER; | |
| 764 | 10 | pep->converged = pep->convergeduser; | |
| 765 | } | ||
| 766 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
2 | PetscFunctionReturn(PETSC_SUCCESS); |
| 767 | } | ||
| 768 | |||
| 769 | /*@ | ||
| 770 | PEPSetConvergenceTest - Specifies how to compute the error estimate | ||
| 771 | used in the convergence test. | ||
| 772 | |||
| 773 | Logically Collective | ||
| 774 | |||
| 775 | Input Parameters: | ||
| 776 | + pep - the polynomial eigensolver context | ||
| 777 | - conv - the type of convergence test, see `PEPConv` for possible values | ||
| 778 | |||
| 779 | Options Database Keys: | ||
| 780 | + -pep_conv_abs - sets the absolute convergence test | ||
| 781 | . -pep_conv_rel - sets the convergence test relative to the eigenvalue | ||
| 782 | . -pep_conv_norm - sets the convergence test relative to the matrix norms | ||
| 783 | - -pep_conv_user - selects the user-defined convergence test | ||
| 784 | |||
| 785 | Level: intermediate | ||
| 786 | |||
| 787 | .seealso: [](ch:pep), `PEPGetConvergenceTest()`, `PEPSetConvergenceTestFunction()`, `PEPSetStoppingTest()`, `PEPConv` | ||
| 788 | @*/ | ||
| 789 | 71 | PetscErrorCode PEPSetConvergenceTest(PEP pep,PEPConv conv) | |
| 790 | { | ||
| 791 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
71 | PetscFunctionBegin; |
| 792 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
71 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
| 793 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
71 | PetscValidLogicalCollectiveEnum(pep,conv,2); |
| 794 |
3/5✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
|
71 | switch (conv) { |
| 795 | 26 | case PEP_CONV_ABS: pep->converged = PEPConvergedAbsolute; break; | |
| 796 | 20 | case PEP_CONV_REL: pep->converged = PEPConvergedRelative; break; | |
| 797 | 25 | case PEP_CONV_NORM: pep->converged = PEPConvergedNorm; break; | |
| 798 | ✗ | case PEP_CONV_USER: | |
| 799 | ✗ | PetscCheck(pep->convergeduser,PetscObjectComm((PetscObject)pep),PETSC_ERR_ORDER,"Must call PEPSetConvergenceTestFunction() first"); | |
| 800 | ✗ | pep->converged = pep->convergeduser; | |
| 801 | ✗ | break; | |
| 802 | ✗ | default: | |
| 803 | ✗ | SETERRQ(PetscObjectComm((PetscObject)pep),PETSC_ERR_ARG_OUTOFRANGE,"Invalid 'conv' value"); | |
| 804 | } | ||
| 805 | 71 | pep->conv = conv; | |
| 806 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
71 | PetscFunctionReturn(PETSC_SUCCESS); |
| 807 | } | ||
| 808 | |||
| 809 | /*@ | ||
| 810 | PEPGetConvergenceTest - Gets the method used to compute the error estimate | ||
| 811 | used in the convergence test. | ||
| 812 | |||
| 813 | Not Collective | ||
| 814 | |||
| 815 | Input Parameter: | ||
| 816 | . pep - the polynomial eigensolver context | ||
| 817 | |||
| 818 | Output Parameter: | ||
| 819 | . conv - the type of convergence test | ||
| 820 | |||
| 821 | Level: intermediate | ||
| 822 | |||
| 823 | .seealso: [](ch:pep), `PEPSetConvergenceTest()`, `PEPConv` | ||
| 824 | @*/ | ||
| 825 | 16 | PetscErrorCode PEPGetConvergenceTest(PEP pep,PEPConv *conv) | |
| 826 | { | ||
| 827 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
16 | PetscFunctionBegin; |
| 828 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
16 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
| 829 |
2/8✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
16 | PetscAssertPointer(conv,2); |
| 830 | 16 | *conv = pep->conv; | |
| 831 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
16 | PetscFunctionReturn(PETSC_SUCCESS); |
| 832 | } | ||
| 833 | |||
| 834 | /*@C | ||
| 835 | PEPSetStoppingTestFunction - Sets a function to decide when to stop the outer | ||
| 836 | iteration of the eigensolver. | ||
| 837 | |||
| 838 | Logically Collective | ||
| 839 | |||
| 840 | Input Parameters: | ||
| 841 | + pep - the polynomial eigensolver context | ||
| 842 | . stop - stopping test function, see `PEPStoppingTestFn` for the calling sequence | ||
| 843 | . ctx - context for private data for the stopping routine (may be `NULL`) | ||
| 844 | - destroy - a routine for destroying the context (may be `NULL`), see `PetscCtxDestroyFn` | ||
| 845 | for the calling sequence | ||
| 846 | |||
| 847 | Note: | ||
| 848 | When implementing a function for this, normal usage is to first call the | ||
| 849 | default routine `PEPStoppingBasic()` and then set `reason` to `PEP_CONVERGED_USER` | ||
| 850 | if some user-defined conditions have been met. To let the eigensolver continue | ||
| 851 | iterating, the result must be left as `PEP_CONVERGED_ITERATING`. | ||
| 852 | |||
| 853 | Level: advanced | ||
| 854 | |||
| 855 | .seealso: [](ch:pep), `PEPSetStoppingTest()`, `PEPStoppingBasic()` | ||
| 856 | @*/ | ||
| 857 | 10 | PetscErrorCode PEPSetStoppingTestFunction(PEP pep,PEPStoppingTestFn *stop,void *ctx,PetscCtxDestroyFn *destroy) | |
| 858 | { | ||
| 859 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
10 | PetscFunctionBegin; |
| 860 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
10 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
| 861 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
10 | if (pep->stoppingdestroy) PetscCall((*pep->stoppingdestroy)(&pep->stoppingctx)); |
| 862 | 10 | pep->stoppinguser = stop; | |
| 863 | 10 | pep->stoppingdestroy = destroy; | |
| 864 | 10 | pep->stoppingctx = ctx; | |
| 865 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
10 | if (stop == PEPStoppingBasic) pep->stop = PEP_STOP_BASIC; |
| 866 | else { | ||
| 867 | 10 | pep->stop = PEP_STOP_USER; | |
| 868 | 10 | pep->stopping = pep->stoppinguser; | |
| 869 | } | ||
| 870 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
2 | PetscFunctionReturn(PETSC_SUCCESS); |
| 871 | } | ||
| 872 | |||
| 873 | /*@ | ||
| 874 | PEPSetStoppingTest - Specifies how to decide the termination of the outer | ||
| 875 | loop of the eigensolver. | ||
| 876 | |||
| 877 | Logically Collective | ||
| 878 | |||
| 879 | Input Parameters: | ||
| 880 | + pep - the polynomial eigensolver context | ||
| 881 | - stop - the type of stopping test, see `PEPStop` | ||
| 882 | |||
| 883 | Options Database Keys: | ||
| 884 | + -pep_stop_basic - sets the default stopping test | ||
| 885 | - -pep_stop_user - selects the user-defined stopping test | ||
| 886 | |||
| 887 | Level: advanced | ||
| 888 | |||
| 889 | .seealso: [](ch:pep), `PEPGetStoppingTest()`, `PEPSetStoppingTestFunction()`, `PEPSetConvergenceTest()`, `PEPStop` | ||
| 890 | @*/ | ||
| 891 | 16 | PetscErrorCode PEPSetStoppingTest(PEP pep,PEPStop stop) | |
| 892 | { | ||
| 893 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
16 | PetscFunctionBegin; |
| 894 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
16 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
| 895 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
16 | PetscValidLogicalCollectiveEnum(pep,stop,2); |
| 896 |
1/3✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
|
16 | switch (stop) { |
| 897 | 16 | case PEP_STOP_BASIC: pep->stopping = PEPStoppingBasic; break; | |
| 898 | ✗ | case PEP_STOP_USER: | |
| 899 | ✗ | PetscCheck(pep->stoppinguser,PetscObjectComm((PetscObject)pep),PETSC_ERR_ORDER,"Must call PEPSetStoppingTestFunction() first"); | |
| 900 | ✗ | pep->stopping = pep->stoppinguser; | |
| 901 | ✗ | break; | |
| 902 | ✗ | default: | |
| 903 | ✗ | SETERRQ(PetscObjectComm((PetscObject)pep),PETSC_ERR_ARG_OUTOFRANGE,"Invalid 'stop' value"); | |
| 904 | } | ||
| 905 | 16 | pep->stop = stop; | |
| 906 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
16 | PetscFunctionReturn(PETSC_SUCCESS); |
| 907 | } | ||
| 908 | |||
| 909 | /*@ | ||
| 910 | PEPGetStoppingTest - Gets the method used to decide the termination of the outer | ||
| 911 | loop of the eigensolver. | ||
| 912 | |||
| 913 | Not Collective | ||
| 914 | |||
| 915 | Input Parameter: | ||
| 916 | . pep - the polynomial eigensolver context | ||
| 917 | |||
| 918 | Output Parameter: | ||
| 919 | . stop - the type of stopping test | ||
| 920 | |||
| 921 | Level: advanced | ||
| 922 | |||
| 923 | .seealso: [](ch:pep), `PEPSetStoppingTest()`, `PEPStop` | ||
| 924 | @*/ | ||
| 925 | 16 | PetscErrorCode PEPGetStoppingTest(PEP pep,PEPStop *stop) | |
| 926 | { | ||
| 927 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
16 | PetscFunctionBegin; |
| 928 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
16 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
| 929 |
2/8✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
16 | PetscAssertPointer(stop,2); |
| 930 | 16 | *stop = pep->stop; | |
| 931 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
16 | PetscFunctionReturn(PETSC_SUCCESS); |
| 932 | } | ||
| 933 | |||
| 934 | /*@ | ||
| 935 | PEPSetScale - Specifies the scaling strategy to be used. | ||
| 936 | |||
| 937 | Collective | ||
| 938 | |||
| 939 | Input Parameters: | ||
| 940 | + pep - the polynomial eigensolver context | ||
| 941 | . scale - scaling strategy, see `PEPScale` for possible values | ||
| 942 | . alpha - the scaling factor used in the scalar strategy | ||
| 943 | . Dl - the left diagonal matrix of the diagonal scaling algorithm | ||
| 944 | . Dr - the right diagonal matrix of the diagonal scaling algorithm | ||
| 945 | . its - number of iterations of the diagonal scaling algorithm | ||
| 946 | - lambda - approximation to wanted eigenvalues (modulus) | ||
| 947 | |||
| 948 | Options Database Keys: | ||
| 949 | + -pep_scale \<scale\> - set the scaling type, one of `none`,`scalar`,`diagonal`,`both` | ||
| 950 | . -pep_scale_factor \<alpha\> - set the scaling factor | ||
| 951 | . -pep_scale_its \<its\> - set the number of iterations | ||
| 952 | - -pep_scale_lambda \<lambda\> - set the approximation to eigenvalues | ||
| 953 | |||
| 954 | Notes: | ||
| 955 | There are two non-exclusive scaling strategies, scalar and diagonal. | ||
| 956 | See discussion in section [](#sec:scaling). | ||
| 957 | |||
| 958 | In the scalar strategy, scaling is applied to the eigenvalue, that is, | ||
| 959 | $\mu = \lambda/\alpha$ is the new eigenvalue and all matrices are scaled | ||
| 960 | accordingly. After solving the scaled problem, the original $\lambda$ is | ||
| 961 | recovered. Parameter `alpha` must be positive. Use `PETSC_DETERMINE` to let | ||
| 962 | the solver compute a reasonable scaling factor, and `PETSC_CURRENT` to | ||
| 963 | retain a previously set value. | ||
| 964 | |||
| 965 | In the diagonal strategy, the solver works implicitly with matrix $D_\ell P(\lambda)D_r$, | ||
| 966 | where $D_\ell$ and $D_r$ are appropriate diagonal matrices. This improves the accuracy | ||
| 967 | of the computed results in some cases. The user may provide the `Dl` and `Dr` | ||
| 968 | matrices represented as `Vec` objects storing diagonal elements. If not | ||
| 969 | provided, these matrices are computed internally. This option requires | ||
| 970 | that the polynomial coefficient matrices are of `MATAIJ` type. | ||
| 971 | The parameter `its` is the number of iterations performed by the method. | ||
| 972 | Parameter `lambda` must be positive. Use `PETSC_DETERMINE` or set `lambda` = 1.0 | ||
| 973 | if no information about eigenvalues is available. `PETSC_CURRENT` can also | ||
| 974 | be used to leave `its` and `lambda` unchanged. | ||
| 975 | |||
| 976 | Level: intermediate | ||
| 977 | |||
| 978 | .seealso: [](ch:pep), [](#sec:scaling), `PEPGetScale()` | ||
| 979 | @*/ | ||
| 980 | 270 | PetscErrorCode PEPSetScale(PEP pep,PEPScale scale,PetscReal alpha,Vec Dl,Vec Dr,PetscInt its,PetscReal lambda) | |
| 981 | { | ||
| 982 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
270 | PetscFunctionBegin; |
| 983 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
270 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
| 984 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
270 | PetscValidLogicalCollectiveEnum(pep,scale,2); |
| 985 | 270 | pep->scale = scale; | |
| 986 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
270 | if (scale==PEP_SCALE_SCALAR || scale==PEP_SCALE_BOTH) { |
| 987 |
29/66✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 2 times.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✓ Branch 22 taken 2 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✓ Branch 26 taken 2 times.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
✓ Branch 30 taken 2 times.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 2 times.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✓ Branch 36 taken 2 times.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✓ Branch 39 taken 2 times.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✓ Branch 43 taken 2 times.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✓ Branch 47 taken 2 times.
✓ Branch 48 taken 2 times.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✓ Branch 51 taken 2 times.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✓ Branch 54 taken 2 times.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✓ Branch 57 taken 2 times.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✓ Branch 60 taken 2 times.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✓ Branch 63 taken 2 times.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
|
106 | PetscValidLogicalCollectiveReal(pep,alpha,3); |
| 988 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
106 | if (alpha == (PetscReal)PETSC_DETERMINE) { |
| 989 | 90 | pep->sfactor = 0.0; | |
| 990 | 90 | pep->sfactor_set = PETSC_FALSE; | |
| 991 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
16 | } else if (alpha != (PetscReal)PETSC_CURRENT) { |
| 992 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
16 | PetscCheck(alpha>0.0,PetscObjectComm((PetscObject)pep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of alpha. Must be > 0"); |
| 993 | 16 | pep->sfactor = alpha; | |
| 994 | 16 | pep->sfactor_set = PETSC_TRUE; | |
| 995 | } | ||
| 996 | } | ||
| 997 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
270 | if (scale==PEP_SCALE_DIAGONAL || scale==PEP_SCALE_BOTH) { |
| 998 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
184 | if (Dl) { |
| 999 |
2/12✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
|
10 | PetscValidHeaderSpecific(Dl,VEC_CLASSID,4); |
| 1000 |
13/32✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
|
10 | PetscCheckSameComm(pep,1,Dl,4); |
| 1001 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(PetscObjectReference((PetscObject)Dl)); |
| 1002 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(VecDestroy(&pep->Dl)); |
| 1003 | 10 | pep->Dl = Dl; | |
| 1004 | } | ||
| 1005 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
184 | if (Dr) { |
| 1006 |
2/12✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
|
10 | PetscValidHeaderSpecific(Dr,VEC_CLASSID,5); |
| 1007 |
13/32✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
|
10 | PetscCheckSameComm(pep,1,Dr,5); |
| 1008 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(PetscObjectReference((PetscObject)Dr)); |
| 1009 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
10 | PetscCall(VecDestroy(&pep->Dr)); |
| 1010 | 10 | pep->Dr = Dr; | |
| 1011 | } | ||
| 1012 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
184 | PetscValidLogicalCollectiveInt(pep,its,6); |
| 1013 |
29/66✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 2 times.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✓ Branch 22 taken 2 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✓ Branch 26 taken 2 times.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
✓ Branch 30 taken 2 times.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 2 times.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✓ Branch 36 taken 2 times.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✓ Branch 39 taken 2 times.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✓ Branch 43 taken 2 times.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✓ Branch 47 taken 2 times.
✓ Branch 48 taken 2 times.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✓ Branch 51 taken 2 times.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✓ Branch 54 taken 2 times.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✓ Branch 57 taken 2 times.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✓ Branch 60 taken 2 times.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✓ Branch 63 taken 2 times.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
|
184 | PetscValidLogicalCollectiveReal(pep,lambda,7); |
| 1014 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
184 | if (its==PETSC_DETERMINE) pep->sits = 5; |
| 1015 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
184 | else if (its!=PETSC_CURRENT) { |
| 1016 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
184 | PetscCheck(its>0,PetscObjectComm((PetscObject)pep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of its. Must be > 0"); |
| 1017 | 184 | pep->sits = its; | |
| 1018 | } | ||
| 1019 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
184 | if (lambda == (PetscReal)PETSC_DETERMINE) pep->slambda = 1.0; |
| 1020 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
184 | else if (lambda != (PetscReal)PETSC_CURRENT) { |
| 1021 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
184 | PetscCheck(lambda>0.0,PetscObjectComm((PetscObject)pep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of lambda. Must be > 0"); |
| 1022 | 184 | pep->slambda = lambda; | |
| 1023 | } | ||
| 1024 | } | ||
| 1025 | 270 | pep->state = PEP_STATE_INITIAL; | |
| 1026 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
270 | PetscFunctionReturn(PETSC_SUCCESS); |
| 1027 | } | ||
| 1028 | |||
| 1029 | /*@ | ||
| 1030 | PEPGetScale - Gets the scaling strategy used by the `PEP` object, and the | ||
| 1031 | associated parameters. | ||
| 1032 | |||
| 1033 | Not Collective | ||
| 1034 | |||
| 1035 | Input Parameter: | ||
| 1036 | . pep - the polynomial eigensolver context | ||
| 1037 | |||
| 1038 | Output Parameters: | ||
| 1039 | + scale - scaling strategy | ||
| 1040 | . alpha - the scaling factor used in the scalar strategy | ||
| 1041 | . Dl - the left diagonal matrix of the diagonal scaling algorithm | ||
| 1042 | . Dr - the right diagonal matrix of the diagonal scaling algorithm | ||
| 1043 | . its - number of iterations of the diagonal scaling algorithm | ||
| 1044 | - lambda - approximation to wanted eigenvalues (modulus) | ||
| 1045 | |||
| 1046 | Notes: | ||
| 1047 | The user can specify `NULL` for any parameter that is not needed. | ||
| 1048 | |||
| 1049 | If `Dl` or `Dr` were not set by the user, then the ones computed internally are | ||
| 1050 | returned (or a `NULL` pointer if called before `PEPSetUp()`). | ||
| 1051 | |||
| 1052 | Level: intermediate | ||
| 1053 | |||
| 1054 | .seealso: [](ch:pep), `PEPSetScale()`, `PEPSetUp()` | ||
| 1055 | @*/ | ||
| 1056 | 16 | PetscErrorCode PEPGetScale(PEP pep,PEPScale *scale,PetscReal *alpha,Vec *Dl,Vec *Dr,PetscInt *its,PetscReal *lambda) | |
| 1057 | { | ||
| 1058 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
16 | PetscFunctionBegin; |
| 1059 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
16 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
| 1060 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
16 | if (scale) *scale = pep->scale; |
| 1061 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
16 | if (alpha) *alpha = pep->sfactor; |
| 1062 |
2/2✓ Branch 0 taken 6 times.
✓ Branch 1 taken 10 times.
|
16 | if (Dl) *Dl = pep->Dl; |
| 1063 |
2/2✓ Branch 0 taken 6 times.
✓ Branch 1 taken 10 times.
|
16 | if (Dr) *Dr = pep->Dr; |
| 1064 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
16 | if (its) *its = pep->sits; |
| 1065 |
2/2✓ Branch 0 taken 6 times.
✓ Branch 1 taken 10 times.
|
16 | if (lambda) *lambda = pep->slambda; |
| 1066 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
16 | PetscFunctionReturn(PETSC_SUCCESS); |
| 1067 | } | ||
| 1068 | |||
| 1069 | /*@ | ||
| 1070 | PEPSetExtract - Specifies the extraction strategy to be used. | ||
| 1071 | |||
| 1072 | Logically Collective | ||
| 1073 | |||
| 1074 | Input Parameters: | ||
| 1075 | + pep - the polynomial eigensolver context | ||
| 1076 | - extract - extraction strategy, see `PEPExtract` for possible values | ||
| 1077 | |||
| 1078 | Options Database Key: | ||
| 1079 | . -pep_extract \<extract\> - extraction type, one of `none`,`norm`,`residual`,`structured` | ||
| 1080 | |||
| 1081 | Note: | ||
| 1082 | This is relevant for solvers based on linearization. Once the solver has | ||
| 1083 | converged, the polynomial eigenvectors can be extracted from the | ||
| 1084 | eigenvectors of the linearized problem in different ways. See the | ||
| 1085 | discussion in section [](#sec:pepextr). | ||
| 1086 | |||
| 1087 | Level: intermediate | ||
| 1088 | |||
| 1089 | .seealso: [](ch:pep), [](#sec:pepextr), `PEPExtract`, `PEPGetExtract()` | ||
| 1090 | @*/ | ||
| 1091 | 16 | PetscErrorCode PEPSetExtract(PEP pep,PEPExtract extract) | |
| 1092 | { | ||
| 1093 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
16 | PetscFunctionBegin; |
| 1094 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
16 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
| 1095 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
16 | PetscValidLogicalCollectiveEnum(pep,extract,2); |
| 1096 | 16 | pep->extract = extract; | |
| 1097 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
16 | PetscFunctionReturn(PETSC_SUCCESS); |
| 1098 | } | ||
| 1099 | |||
| 1100 | /*@ | ||
| 1101 | PEPGetExtract - Gets the extraction strategy used by the `PEP` object. | ||
| 1102 | |||
| 1103 | Not Collective | ||
| 1104 | |||
| 1105 | Input Parameter: | ||
| 1106 | . pep - the polynomial eigensolver context | ||
| 1107 | |||
| 1108 | Output Parameter: | ||
| 1109 | . extract - extraction strategy | ||
| 1110 | |||
| 1111 | Level: intermediate | ||
| 1112 | |||
| 1113 | .seealso: [](ch:pep), `PEPSetExtract()`, `PEPExtract` | ||
| 1114 | @*/ | ||
| 1115 | 32 | PetscErrorCode PEPGetExtract(PEP pep,PEPExtract *extract) | |
| 1116 | { | ||
| 1117 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
32 | PetscFunctionBegin; |
| 1118 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
32 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
| 1119 |
2/8✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
32 | PetscAssertPointer(extract,2); |
| 1120 | 32 | *extract = pep->extract; | |
| 1121 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
32 | PetscFunctionReturn(PETSC_SUCCESS); |
| 1122 | } | ||
| 1123 | |||
| 1124 | /*@ | ||
| 1125 | PEPSetRefine - Specifies the refinement type (and options) to be used | ||
| 1126 | after the solve. | ||
| 1127 | |||
| 1128 | Logically Collective | ||
| 1129 | |||
| 1130 | Input Parameters: | ||
| 1131 | + pep - the polynomial eigensolver context | ||
| 1132 | . refine - refinement type, see `PEPRefine` for possible values | ||
| 1133 | . npart - number of partitions of the communicator | ||
| 1134 | . tol - the convergence tolerance | ||
| 1135 | . its - maximum number of refinement iterations | ||
| 1136 | - scheme - the scheme for solving the involved linear systems, see `PEPRefineScheme` | ||
| 1137 | for possible values | ||
| 1138 | |||
| 1139 | Options Database Keys: | ||
| 1140 | + -pep_refine \<refine\> - set the refinement type, one of `none`,`simple`,`multiple` | ||
| 1141 | . -pep_refine_partitions \<npart\> - set the number of partitions | ||
| 1142 | . -pep_refine_tol \<tol\> - set the tolerance | ||
| 1143 | . -pep_refine_its \<its\> - set the number of iterations | ||
| 1144 | - -pep_refine_scheme \<scheme\> - set the scheme for the linear solves, `schur`,`mbe`, or `explicit` | ||
| 1145 | |||
| 1146 | Notes: | ||
| 1147 | This function configures the parameters of Newton iterative refinement, | ||
| 1148 | see section [](#sec:refine) for a discussion of the different strategies. | ||
| 1149 | |||
| 1150 | By default, iterative refinement is disabled, since it may be very | ||
| 1151 | costly. There are two possible refinement strategies, simple and multiple. | ||
| 1152 | The simple approach performs iterative refinement on each of the | ||
| 1153 | converged eigenpairs individually, whereas the multiple strategy works | ||
| 1154 | with the invariant pair as a whole, refining all eigenpairs simultaneously. | ||
| 1155 | The latter may be required for the case of multiple eigenvalues. | ||
| 1156 | |||
| 1157 | In some cases, especially when using direct solvers within the | ||
| 1158 | iterative refinement method, it may be helpful for improved scalability | ||
| 1159 | to split the communicator in several partitions. The `npart` parameter | ||
| 1160 | indicates how many partitions to use (defaults to 1). | ||
| 1161 | |||
| 1162 | The `tol` and `its` parameters specify the stopping criterion. In the simple | ||
| 1163 | method, refinement continues until the residual of each eigenpair is | ||
| 1164 | below the tolerance (`tol` defaults to the `PEP` tolerance, but may be set to a | ||
| 1165 | different value). In contrast, the multiple method simply performs its | ||
| 1166 | refinement iterations (just one by default). | ||
| 1167 | |||
| 1168 | The `scheme` argument is used to change the way in which linear systems are | ||
| 1169 | solved. Possible choices are explicit, mixed block elimination (MBE), | ||
| 1170 | and Schur complement. | ||
| 1171 | |||
| 1172 | Use `PETSC_CURRENT` to retain the current value of `npart`, `tol` or `its`. Use | ||
| 1173 | `PETSC_DETERMINE` to assign a default value. | ||
| 1174 | |||
| 1175 | Level: intermediate | ||
| 1176 | |||
| 1177 | .seealso: [](ch:pep), [](#sec:refine), `PEPGetRefine()` | ||
| 1178 | @*/ | ||
| 1179 | 301 | PetscErrorCode PEPSetRefine(PEP pep,PEPRefine refine,PetscInt npart,PetscReal tol,PetscInt its,PEPRefineScheme scheme) | |
| 1180 | { | ||
| 1181 | 301 | PetscMPIInt size; | |
| 1182 | |||
| 1183 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
301 | PetscFunctionBegin; |
| 1184 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
301 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
| 1185 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
301 | PetscValidLogicalCollectiveEnum(pep,refine,2); |
| 1186 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
301 | PetscValidLogicalCollectiveInt(pep,npart,3); |
| 1187 |
29/66✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 2 times.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✓ Branch 22 taken 2 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✓ Branch 26 taken 2 times.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
✓ Branch 30 taken 2 times.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 2 times.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✓ Branch 36 taken 2 times.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✓ Branch 39 taken 2 times.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✓ Branch 43 taken 2 times.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✓ Branch 47 taken 2 times.
✓ Branch 48 taken 2 times.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✓ Branch 51 taken 2 times.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✓ Branch 54 taken 2 times.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✓ Branch 57 taken 2 times.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✓ Branch 60 taken 2 times.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✓ Branch 63 taken 2 times.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
|
301 | PetscValidLogicalCollectiveReal(pep,tol,4); |
| 1188 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
301 | PetscValidLogicalCollectiveInt(pep,its,5); |
| 1189 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
301 | PetscValidLogicalCollectiveEnum(pep,scheme,6); |
| 1190 | 301 | pep->refine = refine; | |
| 1191 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 5 times.
|
301 | if (refine) { /* process parameters only if not REFINE_NONE */ |
| 1192 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
296 | if (npart!=pep->npart) { |
| 1193 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
120 | PetscCall(PetscSubcommDestroy(&pep->refinesubc)); |
| 1194 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
120 | PetscCall(KSPDestroy(&pep->refineksp)); |
| 1195 | } | ||
| 1196 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
296 | if (npart == PETSC_DETERMINE) { |
| 1197 | ✗ | pep->npart = 1; | |
| 1198 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
296 | } else if (npart != PETSC_CURRENT) { |
| 1199 |
14/28✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
|
296 | PetscCallMPI(MPI_Comm_size(PetscObjectComm((PetscObject)pep),&size)); |
| 1200 |
2/6✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
|
296 | PetscCheck(npart>0 && npart<=size,PetscObjectComm((PetscObject)pep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of npart"); |
| 1201 | 296 | pep->npart = npart; | |
| 1202 | } | ||
| 1203 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
296 | if (tol == (PetscReal)PETSC_DETERMINE) { |
| 1204 | 280 | pep->rtol = PETSC_DETERMINE; | |
| 1205 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
16 | } else if (tol != (PetscReal)PETSC_CURRENT) { |
| 1206 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
16 | PetscCheck(tol>0.0,PetscObjectComm((PetscObject)pep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of tol. Must be > 0"); |
| 1207 | 16 | pep->rtol = tol; | |
| 1208 | } | ||
| 1209 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
296 | if (its==PETSC_DETERMINE) { |
| 1210 | 280 | pep->rits = PETSC_DETERMINE; | |
| 1211 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
16 | } else if (its != PETSC_CURRENT) { |
| 1212 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
16 | PetscCheck(its>=0,PetscObjectComm((PetscObject)pep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of its. Must be >= 0"); |
| 1213 | 16 | pep->rits = its; | |
| 1214 | } | ||
| 1215 | 296 | pep->scheme = scheme; | |
| 1216 | } | ||
| 1217 | 301 | pep->state = PEP_STATE_INITIAL; | |
| 1218 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
301 | PetscFunctionReturn(PETSC_SUCCESS); |
| 1219 | } | ||
| 1220 | |||
| 1221 | /*@ | ||
| 1222 | PEPGetRefine - Gets the refinement strategy used by the `PEP` object, and the | ||
| 1223 | associated parameters. | ||
| 1224 | |||
| 1225 | Not Collective | ||
| 1226 | |||
| 1227 | Input Parameter: | ||
| 1228 | . pep - the polynomial eigensolver context | ||
| 1229 | |||
| 1230 | Output Parameters: | ||
| 1231 | + refine - refinement type | ||
| 1232 | . npart - number of partitions of the communicator | ||
| 1233 | . tol - the convergence tolerance | ||
| 1234 | . its - maximum number of refinement iterations | ||
| 1235 | - scheme - the scheme used for solving linear systems | ||
| 1236 | |||
| 1237 | Note: | ||
| 1238 | The user can specify `NULL` for any parameter that is not needed. | ||
| 1239 | |||
| 1240 | Level: intermediate | ||
| 1241 | |||
| 1242 | .seealso: [](ch:pep), `PEPSetRefine()` | ||
| 1243 | @*/ | ||
| 1244 | 16 | PetscErrorCode PEPGetRefine(PEP pep,PEPRefine *refine,PetscInt *npart,PetscReal *tol,PetscInt *its,PEPRefineScheme *scheme) | |
| 1245 | { | ||
| 1246 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
16 | PetscFunctionBegin; |
| 1247 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
16 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
| 1248 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
16 | if (refine) *refine = pep->refine; |
| 1249 |
2/2✓ Branch 0 taken 6 times.
✓ Branch 1 taken 10 times.
|
16 | if (npart) *npart = pep->npart; |
| 1250 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
16 | if (tol) *tol = pep->rtol; |
| 1251 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
16 | if (its) *its = pep->rits; |
| 1252 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
16 | if (scheme) *scheme = pep->scheme; |
| 1253 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
16 | PetscFunctionReturn(PETSC_SUCCESS); |
| 1254 | } | ||
| 1255 | |||
| 1256 | /*@ | ||
| 1257 | PEPSetOptionsPrefix - Sets the prefix used for searching for all | ||
| 1258 | `PEP` options in the database. | ||
| 1259 | |||
| 1260 | Logically Collective | ||
| 1261 | |||
| 1262 | Input Parameters: | ||
| 1263 | + pep - the polynomial eigensolver context | ||
| 1264 | - prefix - the prefix string to prepend to all `PEP` option requests | ||
| 1265 | |||
| 1266 | Notes: | ||
| 1267 | A hyphen (-) must NOT be given at the beginning of the prefix name. | ||
| 1268 | The first character of all runtime options is AUTOMATICALLY the | ||
| 1269 | hyphen. | ||
| 1270 | |||
| 1271 | For example, to distinguish between the runtime options for two | ||
| 1272 | different `PEP` contexts, one could call | ||
| 1273 | .vb | ||
| 1274 | PEPSetOptionsPrefix(pep1,"qeig1_") | ||
| 1275 | PEPSetOptionsPrefix(pep2,"qeig2_") | ||
| 1276 | .ve | ||
| 1277 | |||
| 1278 | Level: advanced | ||
| 1279 | |||
| 1280 | .seealso: [](ch:pep), `PEPAppendOptionsPrefix()`, `PEPGetOptionsPrefix()` | ||
| 1281 | @*/ | ||
| 1282 | 262 | PetscErrorCode PEPSetOptionsPrefix(PEP pep,const char prefix[]) | |
| 1283 | { | ||
| 1284 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
262 | PetscFunctionBegin; |
| 1285 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
262 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
| 1286 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
262 | if (!pep->st) PetscCall(PEPGetST(pep,&pep->st)); |
| 1287 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
262 | PetscCall(STSetOptionsPrefix(pep->st,prefix)); |
| 1288 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
262 | if (!pep->V) PetscCall(PEPGetBV(pep,&pep->V)); |
| 1289 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
262 | PetscCall(BVSetOptionsPrefix(pep->V,prefix)); |
| 1290 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
262 | if (!pep->ds) PetscCall(PEPGetDS(pep,&pep->ds)); |
| 1291 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
262 | PetscCall(DSSetOptionsPrefix(pep->ds,prefix)); |
| 1292 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
262 | if (!pep->rg) PetscCall(PEPGetRG(pep,&pep->rg)); |
| 1293 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
262 | PetscCall(RGSetOptionsPrefix(pep->rg,prefix)); |
| 1294 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
262 | PetscCall(PetscObjectSetOptionsPrefix((PetscObject)pep,prefix)); |
| 1295 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
49 | PetscFunctionReturn(PETSC_SUCCESS); |
| 1296 | } | ||
| 1297 | |||
| 1298 | /*@ | ||
| 1299 | PEPAppendOptionsPrefix - Appends to the prefix used for searching for all | ||
| 1300 | `PEP` options in the database. | ||
| 1301 | |||
| 1302 | Logically Collective | ||
| 1303 | |||
| 1304 | Input Parameters: | ||
| 1305 | + pep - the polynomial eigensolver context | ||
| 1306 | - prefix - the prefix string to prepend to all `PEP` option requests | ||
| 1307 | |||
| 1308 | Notes: | ||
| 1309 | A hyphen (-) must NOT be given at the beginning of the prefix name. | ||
| 1310 | The first character of all runtime options is AUTOMATICALLY the hyphen. | ||
| 1311 | |||
| 1312 | Level: advanced | ||
| 1313 | |||
| 1314 | .seealso: [](ch:pep), `PEPSetOptionsPrefix()`, `PEPGetOptionsPrefix()` | ||
| 1315 | @*/ | ||
| 1316 | 248 | PetscErrorCode PEPAppendOptionsPrefix(PEP pep,const char prefix[]) | |
| 1317 | { | ||
| 1318 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
248 | PetscFunctionBegin; |
| 1319 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
248 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
| 1320 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
248 | if (!pep->st) PetscCall(PEPGetST(pep,&pep->st)); |
| 1321 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
248 | PetscCall(STAppendOptionsPrefix(pep->st,prefix)); |
| 1322 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
248 | if (!pep->V) PetscCall(PEPGetBV(pep,&pep->V)); |
| 1323 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
248 | PetscCall(BVAppendOptionsPrefix(pep->V,prefix)); |
| 1324 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
248 | if (!pep->ds) PetscCall(PEPGetDS(pep,&pep->ds)); |
| 1325 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
248 | PetscCall(DSAppendOptionsPrefix(pep->ds,prefix)); |
| 1326 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
248 | if (!pep->rg) PetscCall(PEPGetRG(pep,&pep->rg)); |
| 1327 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
248 | PetscCall(RGAppendOptionsPrefix(pep->rg,prefix)); |
| 1328 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
248 | PetscCall(PetscObjectAppendOptionsPrefix((PetscObject)pep,prefix)); |
| 1329 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
49 | PetscFunctionReturn(PETSC_SUCCESS); |
| 1330 | } | ||
| 1331 | |||
| 1332 | /*@ | ||
| 1333 | PEPGetOptionsPrefix - Gets the prefix used for searching for all | ||
| 1334 | `PEP` options in the database. | ||
| 1335 | |||
| 1336 | Not Collective | ||
| 1337 | |||
| 1338 | Input Parameter: | ||
| 1339 | . pep - the polynomial eigensolver context | ||
| 1340 | |||
| 1341 | Output Parameter: | ||
| 1342 | . prefix - pointer to the prefix string used is returned | ||
| 1343 | |||
| 1344 | Level: advanced | ||
| 1345 | |||
| 1346 | .seealso: [](ch:pep), `PEPSetOptionsPrefix()`, `PEPAppendOptionsPrefix()` | ||
| 1347 | @*/ | ||
| 1348 | 31 | PetscErrorCode PEPGetOptionsPrefix(PEP pep,const char *prefix[]) | |
| 1349 | { | ||
| 1350 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
31 | PetscFunctionBegin; |
| 1351 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
31 | PetscValidHeaderSpecific(pep,PEP_CLASSID,1); |
| 1352 |
2/8✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
31 | PetscAssertPointer(prefix,2); |
| 1353 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
31 | PetscCall(PetscObjectGetOptionsPrefix((PetscObject)pep,prefix)); |
| 1354 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
2 | PetscFunctionReturn(PETSC_SUCCESS); |
| 1355 | } | ||
| 1356 |