| 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 | NEP routines related to options that can be set via the command-line | ||
| 12 | or procedurally | ||
| 13 | */ | ||
| 14 | |||
| 15 | #include <slepc/private/nepimpl.h> /*I "slepcnep.h" I*/ | ||
| 16 | #include <petscdraw.h> | ||
| 17 | |||
| 18 | /*@ | ||
| 19 | NEPMonitorSetFromOptions - Sets a monitor function and viewer appropriate for the type | ||
| 20 | indicated by the user. | ||
| 21 | |||
| 22 | Collective | ||
| 23 | |||
| 24 | Input Parameters: | ||
| 25 | + nep - the nonlinear 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:nep), `NEPMonitorSet()`, `NEPSetTrackAll()` | ||
| 34 | @*/ | ||
| 35 | 3975 | PetscErrorCode NEPMonitorSetFromOptions(NEP nep,const char opt[],const char name[],PetscCtx ctx,PetscBool trackall) | |
| 36 | { | ||
| 37 | 3975 | PetscErrorCode (*mfunc)(NEP,PetscInt,PetscInt,PetscScalar*,PetscScalar*,PetscReal*,PetscInt,void*); | |
| 38 | 3975 | PetscErrorCode (*cfunc)(PetscViewer,PetscViewerFormat,void*,PetscViewerAndFormat**); | |
| 39 | 3975 | PetscErrorCode (*dfunc)(PetscViewerAndFormat**); | |
| 40 | 3975 | PetscViewerAndFormat *vf; | |
| 41 | 3975 | PetscViewer viewer; | |
| 42 | 3975 | PetscViewerFormat format; | |
| 43 | 3975 | PetscViewerType vtype; | |
| 44 | 3975 | char key[PETSC_MAX_PATH_LEN]; | |
| 45 | 3975 | PetscBool flg; | |
| 46 | |||
| 47 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
3975 | 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.
|
3975 | PetscCall(PetscOptionsCreateViewer(PetscObjectComm((PetscObject)nep),((PetscObject)nep)->options,((PetscObject)nep)->prefix,opt,&viewer,&format,&flg)); |
| 49 |
9/16✓ 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 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
|
3975 | 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.
|
60 | 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.
|
60 | 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.
|
60 | PetscCall(PetscFunctionListFind(NEPMonitorList,key,&mfunc)); |
| 54 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
60 | PetscCheck(mfunc,PetscObjectComm((PetscObject)nep),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.
|
60 | PetscCall(PetscFunctionListFind(NEPMonitorCreateList,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.
|
60 | PetscCall(PetscFunctionListFind(NEPMonitorDestroyList,key,&dfunc)); |
| 57 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
60 | if (!cfunc) cfunc = PetscViewerAndFormatCreate_Internal; |
| 58 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
60 | 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.
|
60 | 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.
|
60 | 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.
|
60 | PetscCall(NEPMonitorSet(nep,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.
|
60 | if (trackall) PetscCall(NEPSetTrackAll(nep,PETSC_TRUE)); |
| 64 |
7/14✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
|
12 | PetscFunctionReturn(PETSC_SUCCESS); |
| 65 | } | ||
| 66 | |||
| 67 | /*@ | ||
| 68 | NEPSetFromOptions - Sets `NEP` options from the options database. | ||
| 69 | This routine must be called before `NEPSetUp()` if the user is to be | ||
| 70 | allowed to configure the solver. | ||
| 71 | |||
| 72 | Collective | ||
| 73 | |||
| 74 | Input Parameter: | ||
| 75 | . nep - the nonlinear 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:nep), `NEPSetOptionsPrefix()` | ||
| 83 | @*/ | ||
| 84 | 1325 | PetscErrorCode NEPSetFromOptions(NEP nep) | |
| 85 | { | ||
| 86 | 1325 | char type[256]; | |
| 87 | 1325 | PetscBool set,flg,flg1,flg2,flg3,flg4,flg5,bval; | |
| 88 | 1325 | PetscReal r; | |
| 89 | 1325 | PetscScalar s; | |
| 90 | 1325 | PetscInt i,j,k; | |
| 91 | 1325 | NEPRefine refine; | |
| 92 | 1325 | NEPRefineScheme scheme; | |
| 93 | |||
| 94 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
1325 | PetscFunctionBegin; |
| 95 |
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.
|
1325 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
| 96 |
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.
|
1325 | PetscCall(NEPRegisterAll()); |
| 97 |
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.
|
3975 | PetscObjectOptionsBegin((PetscObject)nep); |
| 98 |
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.
|
1777 | PetscCall(PetscOptionsFList("-nep_type","Nonlinear eigensolver method","NEPSetType",NEPList,(char*)(((PetscObject)nep)->type_name?((PetscObject)nep)->type_name:NEPRII),type,sizeof(type),&flg)); |
| 99 |
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.
|
1325 | if (flg) PetscCall(NEPSetType(nep,type)); |
| 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.
|
371 | else if (!((PetscObject)nep)->type_name) PetscCall(NEPSetType(nep,NEPRII)); |
| 101 | |||
| 102 |
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.
|
1325 | PetscCall(PetscOptionsBoolGroupBegin("-nep_general","General nonlinear eigenvalue problem","NEPSetProblemType",&flg)); |
| 103 |
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.
|
1325 | if (flg) PetscCall(NEPSetProblemType(nep,NEP_GENERAL)); |
| 104 |
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.
|
1325 | PetscCall(PetscOptionsBoolGroupEnd("-nep_rational","Rational eigenvalue problem","NEPSetProblemType",&flg)); |
| 105 |
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.
|
1325 | if (flg) PetscCall(NEPSetProblemType(nep,NEP_RATIONAL)); |
| 106 | |||
| 107 | 1325 | refine = nep->refine; | |
| 108 |
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.
|
1325 | PetscCall(PetscOptionsEnum("-nep_refine","Iterative refinement method","NEPSetRefine",NEPRefineTypes,(PetscEnum)refine,(PetscEnum*)&refine,&flg1)); |
| 109 | 1325 | i = nep->npart; | |
| 110 |
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.
|
1325 | PetscCall(PetscOptionsInt("-nep_refine_partitions","Number of partitions of the communicator for iterative refinement","NEPSetRefine",nep->npart,&i,&flg2)); |
| 111 | 1325 | r = nep->rtol; | |
| 112 |
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.
|
1341 | PetscCall(PetscOptionsReal("-nep_refine_tol","Tolerance for iterative refinement","NEPSetRefine",nep->rtol==(PetscReal)PETSC_DETERMINE?SLEPC_DEFAULT_TOL/1000:nep->rtol,&r,&flg3)); |
| 113 | 1325 | j = nep->rits; | |
| 114 |
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.
|
1325 | PetscCall(PetscOptionsInt("-nep_refine_its","Maximum number of iterations for iterative refinement","NEPSetRefine",nep->rits,&j,&flg4)); |
| 115 | 1325 | scheme = nep->scheme; | |
| 116 |
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.
|
1325 | PetscCall(PetscOptionsEnum("-nep_refine_scheme","Scheme used for linear systems within iterative refinement","NEPSetRefine",NEPRefineSchemes,(PetscEnum)scheme,(PetscEnum*)&scheme,&flg5)); |
| 117 |
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.
|
1325 | if (flg1 || flg2 || flg3 || flg4 || flg5) PetscCall(NEPSetRefine(nep,refine,i,r,j,scheme)); |
| 118 | |||
| 119 | 1325 | i = nep->max_it; | |
| 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.
|
1325 | PetscCall(PetscOptionsInt("-nep_max_it","Maximum number of iterations","NEPSetTolerances",nep->max_it,&i,&flg1)); |
| 121 | 1325 | r = nep->tol; | |
| 122 |
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.
|
2132 | PetscCall(PetscOptionsReal("-nep_tol","Tolerance","NEPSetTolerances",SlepcDefaultTol(nep->tol),&r,&flg2)); |
| 123 |
7/10✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ 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.
|
1325 | if (flg1 || flg2) PetscCall(NEPSetTolerances(nep,r,i)); |
| 124 | |||
| 125 |
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.
|
1325 | PetscCall(PetscOptionsBoolGroupBegin("-nep_conv_rel","Relative error convergence test","NEPSetConvergenceTest",&flg)); |
| 126 |
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.
|
1325 | if (flg) PetscCall(NEPSetConvergenceTest(nep,NEP_CONV_REL)); |
| 127 |
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.
|
1325 | PetscCall(PetscOptionsBoolGroup("-nep_conv_norm","Convergence test relative to the matrix norms","NEPSetConvergenceTest",&flg)); |
| 128 |
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.
|
1325 | if (flg) PetscCall(NEPSetConvergenceTest(nep,NEP_CONV_NORM)); |
| 129 |
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.
|
1325 | PetscCall(PetscOptionsBoolGroup("-nep_conv_abs","Absolute error convergence test","NEPSetConvergenceTest",&flg)); |
| 130 |
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.
|
1325 | if (flg) PetscCall(NEPSetConvergenceTest(nep,NEP_CONV_ABS)); |
| 131 |
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.
|
1325 | PetscCall(PetscOptionsBoolGroupEnd("-nep_conv_user","User-defined convergence test","NEPSetConvergenceTest",&flg)); |
| 132 |
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.
|
1325 | if (flg) PetscCall(NEPSetConvergenceTest(nep,NEP_CONV_USER)); |
| 133 | |||
| 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.
|
1325 | PetscCall(PetscOptionsBoolGroupBegin("-nep_stop_basic","Stop iteration if all eigenvalues converged or max_it reached","NEPSetStoppingTest",&flg)); |
| 135 |
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.
|
1325 | if (flg) PetscCall(NEPSetStoppingTest(nep,NEP_STOP_BASIC)); |
| 136 |
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.
|
1325 | PetscCall(PetscOptionsBoolGroupEnd("-nep_stop_user","User-defined stopping test","NEPSetStoppingTest",&flg)); |
| 137 |
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.
|
1325 | if (flg) PetscCall(NEPSetStoppingTest(nep,NEP_STOP_USER)); |
| 138 | |||
| 139 | 1325 | i = nep->nev; | |
| 140 |
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.
|
1325 | PetscCall(PetscOptionsInt("-nep_nev","Number of eigenvalues to compute","NEPSetDimensions",nep->nev,&i,&flg1)); |
| 141 | 1325 | j = nep->ncv; | |
| 142 |
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.
|
1325 | PetscCall(PetscOptionsInt("-nep_ncv","Number of basis vectors","NEPSetDimensions",nep->ncv,&j,&flg2)); |
| 143 | 1325 | k = nep->mpd; | |
| 144 |
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.
|
1325 | PetscCall(PetscOptionsInt("-nep_mpd","Maximum dimension of projected problem","NEPSetDimensions",nep->mpd,&k,&flg3)); |
| 145 |
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.
|
1325 | if (flg1 || flg2 || flg3) PetscCall(NEPSetDimensions(nep,i,j,k)); |
| 146 | |||
| 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.
|
1325 | PetscCall(PetscOptionsBoolGroupBegin("-nep_largest_magnitude","Compute largest eigenvalues in magnitude","NEPSetWhichEigenpairs",&flg)); |
| 148 |
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.
|
1325 | if (flg) PetscCall(NEPSetWhichEigenpairs(nep,NEP_LARGEST_MAGNITUDE)); |
| 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.
|
1325 | PetscCall(PetscOptionsBoolGroup("-nep_smallest_magnitude","Compute smallest eigenvalues in magnitude","NEPSetWhichEigenpairs",&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.
|
1325 | if (flg) PetscCall(NEPSetWhichEigenpairs(nep,NEP_SMALLEST_MAGNITUDE)); |
| 151 |
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.
|
1325 | PetscCall(PetscOptionsBoolGroup("-nep_largest_real","Compute eigenvalues with largest real parts","NEPSetWhichEigenpairs",&flg)); |
| 152 |
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.
|
1325 | if (flg) PetscCall(NEPSetWhichEigenpairs(nep,NEP_LARGEST_REAL)); |
| 153 |
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.
|
1325 | PetscCall(PetscOptionsBoolGroup("-nep_smallest_real","Compute eigenvalues with smallest real parts","NEPSetWhichEigenpairs",&flg)); |
| 154 |
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.
|
1325 | if (flg) PetscCall(NEPSetWhichEigenpairs(nep,NEP_SMALLEST_REAL)); |
| 155 |
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.
|
1325 | PetscCall(PetscOptionsBoolGroup("-nep_largest_imaginary","Compute eigenvalues with largest imaginary parts","NEPSetWhichEigenpairs",&flg)); |
| 156 |
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.
|
1325 | if (flg) PetscCall(NEPSetWhichEigenpairs(nep,NEP_LARGEST_IMAGINARY)); |
| 157 |
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.
|
1325 | PetscCall(PetscOptionsBoolGroup("-nep_smallest_imaginary","Compute eigenvalues with smallest imaginary parts","NEPSetWhichEigenpairs",&flg)); |
| 158 |
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.
|
1325 | if (flg) PetscCall(NEPSetWhichEigenpairs(nep,NEP_SMALLEST_IMAGINARY)); |
| 159 |
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.
|
1325 | PetscCall(PetscOptionsBoolGroup("-nep_target_magnitude","Compute eigenvalues closest to target","NEPSetWhichEigenpairs",&flg)); |
| 160 |
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.
|
1325 | if (flg) PetscCall(NEPSetWhichEigenpairs(nep,NEP_TARGET_MAGNITUDE)); |
| 161 |
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.
|
1325 | PetscCall(PetscOptionsBoolGroup("-nep_target_real","Compute eigenvalues with real parts closest to target","NEPSetWhichEigenpairs",&flg)); |
| 162 |
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.
|
1325 | if (flg) PetscCall(NEPSetWhichEigenpairs(nep,NEP_TARGET_REAL)); |
| 163 |
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.
|
1325 | PetscCall(PetscOptionsBoolGroup("-nep_target_imaginary","Compute eigenvalues with imaginary parts closest to target","NEPSetWhichEigenpairs",&flg)); |
| 164 |
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.
|
1325 | if (flg) PetscCall(NEPSetWhichEigenpairs(nep,NEP_TARGET_IMAGINARY)); |
| 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.
|
1325 | PetscCall(PetscOptionsBoolGroup("-nep_all","Compute all eigenvalues in a region","NEPSetWhichEigenpairs",&flg)); |
| 166 |
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.
|
1325 | if (flg) PetscCall(NEPSetWhichEigenpairs(nep,NEP_ALL)); |
| 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.
|
1325 | PetscCall(PetscOptionsBoolGroupEnd("-nep_which_user","Select the user-defined selection criterion","NEPSetWhichEigenpairs",&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.
|
1325 | if (flg) PetscCall(NEPSetWhichEigenpairs(nep,NEP_WHICH_USER)); |
| 169 | |||
| 170 |
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.
|
1325 | PetscCall(PetscOptionsScalar("-nep_target","Value of the target","NEPSetTarget",nep->target,&s,&flg)); |
| 171 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1325 | if (flg) { |
| 172 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 5 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.
|
731 | if (nep->which!=NEP_TARGET_REAL && nep->which!=NEP_TARGET_IMAGINARY) PetscCall(NEPSetWhichEigenpairs(nep,NEP_TARGET_MAGNITUDE)); |
| 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.
|
731 | PetscCall(NEPSetTarget(nep,s)); |
| 174 | } | ||
| 175 | |||
| 176 |
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.
|
1325 | PetscCall(PetscOptionsBool("-nep_two_sided","Use two-sided variant (to compute left eigenvectors)","NEPSetTwoSided",nep->twosided,&bval,&flg)); |
| 177 |
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.
|
1325 | if (flg) PetscCall(NEPSetTwoSided(nep,bval)); |
| 178 | |||
| 179 | /* -----------------------------------------------------------------------*/ | ||
| 180 | /* | ||
| 181 | Cancels all monitors hardwired into code before call to NEPSetFromOptions() | ||
| 182 | */ | ||
| 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.
|
1325 | PetscCall(PetscOptionsBool("-nep_monitor_cancel","Remove any hardwired monitor routines","NEPMonitorCancel",PETSC_FALSE,&flg,&set)); |
| 184 |
1/10✗ 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.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
|
1325 | if (set && flg) PetscCall(NEPMonitorCancel(nep)); |
| 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.
|
1325 | PetscCall(NEPMonitorSetFromOptions(nep,"-nep_monitor","first_approximation",NULL,PETSC_FALSE)); |
| 186 |
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.
|
1325 | PetscCall(NEPMonitorSetFromOptions(nep,"-nep_monitor_all","all_approximations",NULL,PETSC_TRUE)); |
| 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.
|
1325 | PetscCall(NEPMonitorSetFromOptions(nep,"-nep_monitor_conv","convergence_history",NULL,PETSC_FALSE)); |
| 188 | |||
| 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.
|
1325 | PetscCall(PetscOptionsName("-nep_view","Print detailed information on solver used","NEPView",&set)); |
| 191 |
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.
|
1325 | PetscCall(PetscOptionsName("-nep_view_vectors","View computed eigenvectors","NEPVectorsView",&set)); |
| 192 |
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.
|
1325 | PetscCall(PetscOptionsName("-nep_view_values","View computed eigenvalues","NEPValuesView",&set)); |
| 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.
|
1325 | PetscCall(PetscOptionsName("-nep_converged_reason","Print reason for convergence, and number of iterations","NEPConvergedReasonView",&set)); |
| 194 |
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.
|
1325 | PetscCall(PetscOptionsName("-nep_error_absolute","Print absolute errors of each eigenpair","NEPErrorView",&set)); |
| 195 |
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.
|
1325 | PetscCall(PetscOptionsName("-nep_error_relative","Print relative errors of each eigenpair","NEPErrorView",&set)); |
| 196 | |||
| 197 |
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.
|
1325 | PetscTryTypeMethod(nep,setfromoptions,PetscOptionsObject); |
| 198 |
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.
|
1325 | PetscCall(PetscObjectProcessOptionsHandlers((PetscObject)nep,PetscOptionsObject)); |
| 199 |
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.
|
1325 | PetscOptionsEnd(); |
| 200 | |||
| 201 |
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.
|
1325 | if (!nep->V) PetscCall(NEPGetBV(nep,&nep->V)); |
| 202 |
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.
|
1325 | PetscCall(BVSetFromOptions(nep->V)); |
| 203 |
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.
|
1325 | if (!nep->rg) PetscCall(NEPGetRG(nep,&nep->rg)); |
| 204 |
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.
|
1325 | PetscCall(RGSetFromOptions(nep->rg)); |
| 205 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1325 | if (nep->useds) { |
| 206 |
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.
|
1071 | if (!nep->ds) PetscCall(NEPGetDS(nep,&nep->ds)); |
| 207 |
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.
|
1071 | PetscCall(NEPSetDSType(nep)); |
| 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.
|
1071 | PetscCall(DSSetFromOptions(nep->ds)); |
| 209 | } | ||
| 210 |
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.
|
1325 | if (!nep->refineksp) PetscCall(NEPRefineGetKSP(nep,&nep->refineksp)); |
| 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.
|
1325 | PetscCall(KSPSetFromOptions(nep->refineksp)); |
| 212 |
9/10✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ 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.
|
3942 | if (nep->fui==NEP_USER_INTERFACE_SPLIT) for (i=0;i<nep->nt;i++) PetscCall(FNSetFromOptions(nep->f[i])); |
| 213 | 1325 | nep->setfromoptionscalled++; | |
| 214 |
7/14✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
|
1325 | PetscFunctionReturn(PETSC_SUCCESS); |
| 215 | } | ||
| 216 | |||
| 217 | /*@ | ||
| 218 | NEPGetTolerances - Gets the tolerance and maximum iteration count used | ||
| 219 | by the `NEP` convergence tests. | ||
| 220 | |||
| 221 | Not Collective | ||
| 222 | |||
| 223 | Input Parameter: | ||
| 224 | . nep - the nonlinear eigensolver context | ||
| 225 | |||
| 226 | Output Parameters: | ||
| 227 | + tol - the convergence tolerance | ||
| 228 | - maxits - maximum number of iterations | ||
| 229 | |||
| 230 | Notes: | ||
| 231 | The user can specify `NULL` for any parameter that is not needed. | ||
| 232 | |||
| 233 | Level: intermediate | ||
| 234 | |||
| 235 | .seealso: [](ch:nep), `NEPSetTolerances()` | ||
| 236 | @*/ | ||
| 237 | 87 | PetscErrorCode NEPGetTolerances(NEP nep,PetscReal *tol,PetscInt *maxits) | |
| 238 | { | ||
| 239 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
87 | PetscFunctionBegin; |
| 240 |
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.
|
87 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
| 241 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
87 | if (tol) *tol = nep->tol; |
| 242 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
87 | if (maxits) *maxits = nep->max_it; |
| 243 |
7/14✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
|
87 | PetscFunctionReturn(PETSC_SUCCESS); |
| 244 | } | ||
| 245 | |||
| 246 | /*@ | ||
| 247 | NEPSetTolerances - Sets the tolerance and maximum iteration count used | ||
| 248 | by the `NEP` convergence tests. | ||
| 249 | |||
| 250 | Logically Collective | ||
| 251 | |||
| 252 | Input Parameters: | ||
| 253 | + nep - the nonlinear eigensolver context | ||
| 254 | . tol - the convergence tolerance | ||
| 255 | - maxits - maximum number of iterations to use | ||
| 256 | |||
| 257 | Options Database Keys: | ||
| 258 | + -nep_tol tol - sets the convergence tolerance | ||
| 259 | - -nep_max_it maxits - sets the maximum number of iterations allowed | ||
| 260 | |||
| 261 | Note: | ||
| 262 | Use `PETSC_CURRENT` to retain the current value of any of the parameters. | ||
| 263 | Use `PETSC_DETERMINE` for either argument to assign a default value computed | ||
| 264 | internally (may be different in each solver). | ||
| 265 | For `maxits` use `PETSC_UNLIMITED` to indicate there is no upper bound on this value. | ||
| 266 | |||
| 267 | Level: intermediate | ||
| 268 | |||
| 269 | .seealso: [](ch:nep), `NEPGetTolerances()` | ||
| 270 | @*/ | ||
| 271 | 688 | PetscErrorCode NEPSetTolerances(NEP nep,PetscReal tol,PetscInt maxits) | |
| 272 | { | ||
| 273 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
688 | PetscFunctionBegin; |
| 274 |
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.
|
688 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
| 275 |
33/74✗ 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 not taken.
✓ Branch 11 taken 2 times.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✓ Branch 14 taken 2 times.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✓ Branch 17 taken 2 times.
✗ 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 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 not taken.
✓ Branch 37 taken 2 times.
✓ Branch 38 taken 2 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 2 times.
✗ Branch 41 not taken.
✓ Branch 42 taken 2 times.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✗ Branch 50 not taken.
✗ Branch 51 not taken.
✗ Branch 52 not taken.
✓ Branch 53 taken 2 times.
✓ Branch 54 taken 2 times.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✓ Branch 57 taken 2 times.
✓ Branch 58 taken 2 times.
✗ Branch 59 not taken.
✓ Branch 60 taken 2 times.
✗ Branch 61 not taken.
✓ Branch 62 taken 2 times.
✗ Branch 63 not taken.
✗ Branch 64 not taken.
✓ Branch 65 taken 2 times.
✗ Branch 66 not taken.
✗ Branch 67 not taken.
✓ Branch 68 taken 2 times.
✗ Branch 69 not taken.
✗ Branch 70 not taken.
✓ Branch 71 taken 2 times.
✗ Branch 72 not taken.
✗ Branch 73 not taken.
|
688 | PetscValidLogicalCollectiveReal(nep,tol,2); |
| 276 |
31/70✓ 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 not taken.
✓ Branch 9 taken 2 times.
✓ 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 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 not taken.
✓ Branch 35 taken 2 times.
✓ Branch 36 taken 2 times.
✗ Branch 37 not taken.
✓ Branch 38 taken 2 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 2 times.
✗ 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 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✓ Branch 51 taken 2 times.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✓ Branch 56 taken 2 times.
✗ Branch 57 not taken.
✓ Branch 58 taken 2 times.
✗ 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.
✗ Branch 66 not taken.
✓ Branch 67 taken 2 times.
✗ Branch 68 not taken.
✗ Branch 69 not taken.
|
688 | PetscValidLogicalCollectiveInt(nep,maxits,3); |
| 277 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
688 | if (tol == (PetscReal)PETSC_DETERMINE) { |
| 278 | ✗ | nep->tol = PETSC_DETERMINE; | |
| 279 | ✗ | nep->state = NEP_STATE_INITIAL; | |
| 280 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
688 | } else if (tol != (PetscReal)PETSC_CURRENT) { |
| 281 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
678 | PetscCheck(tol>0.0,PetscObjectComm((PetscObject)nep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of tol. Must be > 0"); |
| 282 | 678 | nep->tol = tol; | |
| 283 | } | ||
| 284 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
688 | if (maxits == PETSC_DETERMINE) { |
| 285 | 160 | nep->max_it = PETSC_DETERMINE; | |
| 286 | 160 | nep->state = NEP_STATE_INITIAL; | |
| 287 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
528 | } else if (maxits == PETSC_UNLIMITED) { |
| 288 | ✗ | nep->max_it = PETSC_INT_MAX; | |
| 289 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
528 | } else if (maxits != PETSC_CURRENT) { |
| 290 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
26 | PetscCheck(maxits>0,PetscObjectComm((PetscObject)nep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of maxits. Must be > 0"); |
| 291 | 26 | nep->max_it = maxits; | |
| 292 | } | ||
| 293 |
7/14✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
|
133 | PetscFunctionReturn(PETSC_SUCCESS); |
| 294 | } | ||
| 295 | |||
| 296 | /*@ | ||
| 297 | NEPGetDimensions - Gets the number of eigenvalues to compute | ||
| 298 | and the dimension of the subspace. | ||
| 299 | |||
| 300 | Not Collective | ||
| 301 | |||
| 302 | Input Parameter: | ||
| 303 | . nep - the nonlinear eigensolver context | ||
| 304 | |||
| 305 | Output Parameters: | ||
| 306 | + nev - number of eigenvalues to compute | ||
| 307 | . ncv - the maximum dimension of the subspace to be used by the solver | ||
| 308 | - mpd - the maximum dimension allowed for the projected problem | ||
| 309 | |||
| 310 | Note: | ||
| 311 | The user can specify `NULL` for any parameter that is not needed. | ||
| 312 | |||
| 313 | Level: intermediate | ||
| 314 | |||
| 315 | .seealso: [](ch:nep), `NEPSetDimensions()` | ||
| 316 | @*/ | ||
| 317 | 543 | PetscErrorCode NEPGetDimensions(NEP nep,PetscInt *nev,PetscInt *ncv,PetscInt *mpd) | |
| 318 | { | ||
| 319 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
543 | PetscFunctionBegin; |
| 320 |
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.
|
543 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
| 321 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
543 | if (nev) *nev = nep->nev; |
| 322 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
543 | if (ncv) *ncv = nep->ncv; |
| 323 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
543 | if (mpd) *mpd = nep->mpd; |
| 324 |
7/14✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
|
543 | PetscFunctionReturn(PETSC_SUCCESS); |
| 325 | } | ||
| 326 | |||
| 327 | /*@ | ||
| 328 | NEPSetDimensions - Sets the number of eigenvalues to compute | ||
| 329 | and the dimension of the subspace. | ||
| 330 | |||
| 331 | Logically Collective | ||
| 332 | |||
| 333 | Input Parameters: | ||
| 334 | + nep - the nonlinear eigensolver context | ||
| 335 | . nev - number of eigenvalues to compute | ||
| 336 | . ncv - the maximum dimension of the subspace to be used by the solver | ||
| 337 | - mpd - the maximum dimension allowed for the projected problem | ||
| 338 | |||
| 339 | Options Database Keys: | ||
| 340 | + -nep_nev nev - sets the number of eigenvalues | ||
| 341 | . -nep_ncv ncv - sets the dimension of the subspace | ||
| 342 | - -nep_mpd mpd - sets the maximum projected dimension | ||
| 343 | |||
| 344 | Notes: | ||
| 345 | Use `PETSC_DETERMINE` for `ncv` and `mpd` to assign a reasonably good value, which is | ||
| 346 | dependent on the solution method. For any of the arguments, use `PETSC_CURRENT` | ||
| 347 | to preserve the current value. | ||
| 348 | |||
| 349 | The parameters `ncv` and `mpd` are intimately related, so that the user is advised | ||
| 350 | to set one of them at most. Normal usage is\: | ||
| 351 | |||
| 352 | 1. in cases where `nev` is small, the user sets `ncv` (a reasonable default is `2*nev`). | ||
| 353 | 2. in cases where `nev` is large, the user sets `mpd`. | ||
| 354 | |||
| 355 | The value of `ncv` should always be between `nev` and `(nev+mpd)`, typically | ||
| 356 | `ncv=nev+mpd`. If `nev` is not too large, `mpd=nev` is a reasonable choice, otherwise | ||
| 357 | a smaller value should be used. | ||
| 358 | |||
| 359 | Level: intermediate | ||
| 360 | |||
| 361 | .seealso: [](ch:nep), `NEPGetDimensions()` | ||
| 362 | @*/ | ||
| 363 | 1052 | PetscErrorCode NEPSetDimensions(NEP nep,PetscInt nev,PetscInt ncv,PetscInt mpd) | |
| 364 | { | ||
| 365 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
1052 | PetscFunctionBegin; |
| 366 |
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.
|
1052 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
| 367 |
31/70✓ 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 not taken.
✓ Branch 9 taken 2 times.
✓ 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 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 not taken.
✓ Branch 35 taken 2 times.
✓ Branch 36 taken 2 times.
✗ Branch 37 not taken.
✓ Branch 38 taken 2 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 2 times.
✗ 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 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✓ Branch 51 taken 2 times.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✓ Branch 56 taken 2 times.
✗ Branch 57 not taken.
✓ Branch 58 taken 2 times.
✗ 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.
✗ Branch 66 not taken.
✓ Branch 67 taken 2 times.
✗ Branch 68 not taken.
✗ Branch 69 not taken.
|
1052 | PetscValidLogicalCollectiveInt(nep,nev,2); |
| 368 |
31/70✓ 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 not taken.
✓ Branch 9 taken 2 times.
✓ 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 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 not taken.
✓ Branch 35 taken 2 times.
✓ Branch 36 taken 2 times.
✗ Branch 37 not taken.
✓ Branch 38 taken 2 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 2 times.
✗ 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 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✓ Branch 51 taken 2 times.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✓ Branch 56 taken 2 times.
✗ Branch 57 not taken.
✓ Branch 58 taken 2 times.
✗ 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.
✗ Branch 66 not taken.
✓ Branch 67 taken 2 times.
✗ Branch 68 not taken.
✗ Branch 69 not taken.
|
1052 | PetscValidLogicalCollectiveInt(nep,ncv,3); |
| 369 |
31/70✓ 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 not taken.
✓ Branch 9 taken 2 times.
✓ 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 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 not taken.
✓ Branch 35 taken 2 times.
✓ Branch 36 taken 2 times.
✗ Branch 37 not taken.
✓ Branch 38 taken 2 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 2 times.
✗ 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 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✓ Branch 51 taken 2 times.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✓ Branch 56 taken 2 times.
✗ Branch 57 not taken.
✓ Branch 58 taken 2 times.
✗ 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.
✗ Branch 66 not taken.
✓ Branch 67 taken 2 times.
✗ Branch 68 not taken.
✗ Branch 69 not taken.
|
1052 | PetscValidLogicalCollectiveInt(nep,mpd,4); |
| 370 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
1052 | if (nev != PETSC_CURRENT) { |
| 371 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
1052 | PetscCheck(nev>0,PetscObjectComm((PetscObject)nep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of nev. Must be > 0"); |
| 372 | 1052 | nep->nev = nev; | |
| 373 | } | ||
| 374 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1052 | if (ncv == PETSC_DETERMINE) { |
| 375 | 896 | nep->ncv = PETSC_DETERMINE; | |
| 376 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 2 times.
|
156 | } else if (ncv != PETSC_CURRENT) { |
| 377 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
151 | PetscCheck(ncv>0,PetscObjectComm((PetscObject)nep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of ncv. Must be > 0"); |
| 378 | 151 | nep->ncv = ncv; | |
| 379 | } | ||
| 380 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1052 | if (mpd == PETSC_DETERMINE) { |
| 381 | 1027 | nep->mpd = PETSC_DETERMINE; | |
| 382 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
25 | } else if (mpd != PETSC_CURRENT) { |
| 383 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
10 | PetscCheck(mpd>0,PetscObjectComm((PetscObject)nep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of mpd. Must be > 0"); |
| 384 | 10 | nep->mpd = mpd; | |
| 385 | } | ||
| 386 | 1052 | nep->state = NEP_STATE_INITIAL; | |
| 387 |
7/14✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
|
1052 | PetscFunctionReturn(PETSC_SUCCESS); |
| 388 | } | ||
| 389 | |||
| 390 | /*@ | ||
| 391 | NEPSetWhichEigenpairs - Specifies which portion of the spectrum is | ||
| 392 | to be sought. | ||
| 393 | |||
| 394 | Logically Collective | ||
| 395 | |||
| 396 | Input Parameters: | ||
| 397 | + nep - the nonlinear eigensolver context | ||
| 398 | - which - the portion of the spectrum to be sought, see `NEPWhich` for possible values | ||
| 399 | |||
| 400 | Options Database Keys: | ||
| 401 | + -nep_largest_magnitude - sets largest eigenvalues in magnitude | ||
| 402 | . -nep_smallest_magnitude - sets smallest eigenvalues in magnitude | ||
| 403 | . -nep_largest_real - sets largest real parts | ||
| 404 | . -nep_smallest_real - sets smallest real parts | ||
| 405 | . -nep_largest_imaginary - sets largest imaginary parts | ||
| 406 | . -nep_smallest_imaginary - sets smallest imaginary parts | ||
| 407 | . -nep_target_magnitude - sets eigenvalues closest to target | ||
| 408 | . -nep_target_real - sets real parts closest to target | ||
| 409 | . -nep_target_imaginary - sets imaginary parts closest to target | ||
| 410 | . -nep_all - sets all eigenvalues in a region | ||
| 411 | - -nep_which_user - select the user-defined selection criterion | ||
| 412 | |||
| 413 | Notes: | ||
| 414 | Not all eigensolvers implemented in `NEP` account for all the possible values | ||
| 415 | of `which`. Also, some values make sense only for certain types of | ||
| 416 | problems. If SLEPc is compiled for real numbers `NEP_LARGEST_IMAGINARY` | ||
| 417 | and `NEP_SMALLEST_IMAGINARY` use the absolute value of the imaginary part | ||
| 418 | for eigenvalue selection. | ||
| 419 | |||
| 420 | The target is a scalar value provided with `NEPSetTarget()`. | ||
| 421 | |||
| 422 | The criterion `NEP_TARGET_IMAGINARY` is available only in case PETSc and | ||
| 423 | SLEPc have been built with complex scalars. | ||
| 424 | |||
| 425 | `NEP_ALL` is intended for use in the context of the `NEPCISS` solver for | ||
| 426 | computing all eigenvalues in a region. | ||
| 427 | |||
| 428 | Level: intermediate | ||
| 429 | |||
| 430 | .seealso: [](ch:nep), `NEPGetWhichEigenpairs()`, `NEPSetTarget()`, `NEPSetDimensions()`, `NEPSetEigenvalueComparison()`, `NEPWhich` | ||
| 431 | @*/ | ||
| 432 | 797 | PetscErrorCode NEPSetWhichEigenpairs(NEP nep,NEPWhich which) | |
| 433 | { | ||
| 434 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
797 | PetscFunctionBegin; |
| 435 |
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.
|
797 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
| 436 |
31/70✓ 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 not taken.
✓ Branch 9 taken 2 times.
✓ 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 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 not taken.
✓ Branch 35 taken 2 times.
✓ Branch 36 taken 2 times.
✗ Branch 37 not taken.
✓ Branch 38 taken 2 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 2 times.
✗ 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 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✓ Branch 51 taken 2 times.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✓ Branch 56 taken 2 times.
✗ Branch 57 not taken.
✓ Branch 58 taken 2 times.
✗ 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.
✗ Branch 66 not taken.
✓ Branch 67 taken 2 times.
✗ Branch 68 not taken.
✗ Branch 69 not taken.
|
797 | PetscValidLogicalCollectiveEnum(nep,which,2); |
| 437 |
1/3✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
|
797 | switch (which) { |
| 438 | 797 | case NEP_LARGEST_MAGNITUDE: | |
| 439 | case NEP_SMALLEST_MAGNITUDE: | ||
| 440 | case NEP_LARGEST_REAL: | ||
| 441 | case NEP_SMALLEST_REAL: | ||
| 442 | case NEP_LARGEST_IMAGINARY: | ||
| 443 | case NEP_SMALLEST_IMAGINARY: | ||
| 444 | case NEP_TARGET_MAGNITUDE: | ||
| 445 | case NEP_TARGET_REAL: | ||
| 446 | #if PetscDefined(USE_COMPLEX) | ||
| 447 | case NEP_TARGET_IMAGINARY: | ||
| 448 | #endif | ||
| 449 | case NEP_ALL: | ||
| 450 | case NEP_WHICH_USER: | ||
| 451 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
797 | if (nep->which != which) { |
| 452 | 777 | nep->state = NEP_STATE_INITIAL; | |
| 453 | 777 | nep->which = which; | |
| 454 | } | ||
| 455 | 155 | break; | |
| 456 | #if !PetscDefined(USE_COMPLEX) | ||
| 457 | ✗ | case NEP_TARGET_IMAGINARY: | |
| 458 | − | SETERRQ(PetscObjectComm((PetscObject)nep),PETSC_ERR_SUP,"NEP_TARGET_IMAGINARY can be used only with complex scalars"); | |
| 459 | #endif | ||
| 460 | ✗ | default: | |
| 461 | − | SETERRQ(PetscObjectComm((PetscObject)nep),PETSC_ERR_ARG_OUTOFRANGE,"Invalid 'which' value"); | |
| 462 | } | ||
| 463 |
7/14✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
|
155 | PetscFunctionReturn(PETSC_SUCCESS); |
| 464 | } | ||
| 465 | |||
| 466 | /*@ | ||
| 467 | NEPGetWhichEigenpairs - Returns which portion of the spectrum is to be | ||
| 468 | sought. | ||
| 469 | |||
| 470 | Not Collective | ||
| 471 | |||
| 472 | Input Parameter: | ||
| 473 | . nep - the nonlinear eigensolver context | ||
| 474 | |||
| 475 | Output Parameter: | ||
| 476 | . which - the portion of the spectrum to be sought | ||
| 477 | |||
| 478 | Level: intermediate | ||
| 479 | |||
| 480 | .seealso: [](ch:nep), `NEPSetWhichEigenpairs()`, `NEPWhich` | ||
| 481 | @*/ | ||
| 482 | 16 | PetscErrorCode NEPGetWhichEigenpairs(NEP nep,NEPWhich *which) | |
| 483 | { | ||
| 484 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
16 | PetscFunctionBegin; |
| 485 |
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(nep,NEP_CLASSID,1); |
| 486 |
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); |
| 487 | 16 | *which = nep->which; | |
| 488 |
7/14✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
|
16 | PetscFunctionReturn(PETSC_SUCCESS); |
| 489 | } | ||
| 490 | |||
| 491 | /*@ | ||
| 492 | NEPSetEigenvalueComparison - Specifies the eigenvalue comparison function | ||
| 493 | when `NEPSetWhichEigenpairs()` is set to `NEP_WHICH_USER`. | ||
| 494 | |||
| 495 | Logically Collective | ||
| 496 | |||
| 497 | Input Parameters: | ||
| 498 | + nep - the nonlinear eigensolver context | ||
| 499 | . comp - a pointer to the comparison function, see `SlepcEigenvalueComparisonFn` for the calling sequence | ||
| 500 | - ctx - a context pointer (the last parameter to the comparison function) | ||
| 501 | |||
| 502 | Level: advanced | ||
| 503 | |||
| 504 | .seealso: [](ch:nep), `NEPSetWhichEigenpairs()`, `NEPWhich` | ||
| 505 | @*/ | ||
| 506 | 5 | PetscErrorCode NEPSetEigenvalueComparison(NEP nep,SlepcEigenvalueComparisonFn *comp,PetscCtx ctx) | |
| 507 | { | ||
| 508 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
5 | PetscFunctionBegin; |
| 509 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 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.
|
5 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
| 510 | 5 | nep->sc->comparison = comp; | |
| 511 | 5 | nep->sc->comparisonctx = ctx; | |
| 512 | 5 | nep->which = NEP_WHICH_USER; | |
| 513 |
7/14✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 times.
|
5 | PetscFunctionReturn(PETSC_SUCCESS); |
| 514 | } | ||
| 515 | |||
| 516 | /*@ | ||
| 517 | NEPSetProblemType - Specifies the type of the nonlinear eigenvalue problem. | ||
| 518 | |||
| 519 | Logically Collective | ||
| 520 | |||
| 521 | Input Parameters: | ||
| 522 | + nep - the nonlinear eigensolver context | ||
| 523 | - type - a known type of nonlinear eigenvalue problem | ||
| 524 | |||
| 525 | Options Database Keys: | ||
| 526 | + -nep_general - general problem with no particular structure | ||
| 527 | - -nep_rational - a rational eigenvalue problem defined in split form with all $f_i$ rational | ||
| 528 | |||
| 529 | Notes: | ||
| 530 | See `NEPProblemType` for possible problem types. | ||
| 531 | |||
| 532 | This function is used to provide a hint to the `NEP` solver to exploit certain | ||
| 533 | properties of the nonlinear eigenproblem. This hint may be used or not, | ||
| 534 | depending on the solver. By default, no particular structure is assumed. | ||
| 535 | |||
| 536 | Level: intermediate | ||
| 537 | |||
| 538 | .seealso: [](ch:nep), `NEPSetType()`, `NEPGetProblemType()`, `NEPProblemType` | ||
| 539 | @*/ | ||
| 540 | 1321 | PetscErrorCode NEPSetProblemType(NEP nep,NEPProblemType type) | |
| 541 | { | ||
| 542 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
1321 | PetscFunctionBegin; |
| 543 |
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.
|
1321 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
| 544 |
31/70✓ 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 not taken.
✓ Branch 9 taken 2 times.
✓ 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 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 not taken.
✓ Branch 35 taken 2 times.
✓ Branch 36 taken 2 times.
✗ Branch 37 not taken.
✓ Branch 38 taken 2 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 2 times.
✗ 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 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✓ Branch 51 taken 2 times.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✓ Branch 56 taken 2 times.
✗ Branch 57 not taken.
✓ Branch 58 taken 2 times.
✗ 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.
✗ Branch 66 not taken.
✓ Branch 67 taken 2 times.
✗ Branch 68 not taken.
✗ Branch 69 not taken.
|
1321 | PetscValidLogicalCollectiveEnum(nep,type,2); |
| 545 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
1321 | PetscCheck(type==NEP_GENERAL || type==NEP_RATIONAL,PetscObjectComm((PetscObject)nep),PETSC_ERR_ARG_WRONG,"Unknown eigenvalue problem type"); |
| 546 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
1321 | if (type != nep->problem_type) { |
| 547 | 1321 | nep->problem_type = type; | |
| 548 | 1321 | nep->state = NEP_STATE_INITIAL; | |
| 549 | } | ||
| 550 |
7/14✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
|
252 | PetscFunctionReturn(PETSC_SUCCESS); |
| 551 | } | ||
| 552 | |||
| 553 | /*@ | ||
| 554 | NEPGetProblemType - Gets the problem type from the `NEP` object. | ||
| 555 | |||
| 556 | Not Collective | ||
| 557 | |||
| 558 | Input Parameter: | ||
| 559 | . nep - the nonlinear eigensolver context | ||
| 560 | |||
| 561 | Output Parameter: | ||
| 562 | . type - the problem type | ||
| 563 | |||
| 564 | Level: intermediate | ||
| 565 | |||
| 566 | .seealso: [](ch:nep), `NEPSetProblemType()`, `NEPProblemType` | ||
| 567 | @*/ | ||
| 568 | 32 | PetscErrorCode NEPGetProblemType(NEP nep,NEPProblemType *type) | |
| 569 | { | ||
| 570 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
32 | PetscFunctionBegin; |
| 571 |
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(nep,NEP_CLASSID,1); |
| 572 |
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(type,2); |
| 573 | 32 | *type = nep->problem_type; | |
| 574 |
7/14✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
|
32 | PetscFunctionReturn(PETSC_SUCCESS); |
| 575 | } | ||
| 576 | |||
| 577 | /*@ | ||
| 578 | NEPSetTwoSided - Sets the solver to use a two-sided variant so that left | ||
| 579 | eigenvectors are also computed. | ||
| 580 | |||
| 581 | Logically Collective | ||
| 582 | |||
| 583 | Input Parameters: | ||
| 584 | + nep - the nonlinear eigensolver context | ||
| 585 | - twosided - whether the two-sided variant is to be used or not | ||
| 586 | |||
| 587 | Options Database Key: | ||
| 588 | . -nep_two_sided (true|false) - toggles the twosided flag | ||
| 589 | |||
| 590 | Notes: | ||
| 591 | If the user sets `twosided`=`PETSC_TRUE` then the solver uses a variant of | ||
| 592 | the algorithm that computes both right and left eigenvectors. This is | ||
| 593 | usually much more costly. This option is not available in all solvers, | ||
| 594 | see table [](#tab:solversn). | ||
| 595 | |||
| 596 | When using two-sided solvers, the problem matrices must have both the | ||
| 597 | `MATOP_MULT` and `MATOP_MULT_TRANSPOSE` operations defined. | ||
| 598 | |||
| 599 | Level: advanced | ||
| 600 | |||
| 601 | .seealso: [](ch:nep), `NEPGetTwoSided()`, `NEPGetLeftEigenvector()` | ||
| 602 | @*/ | ||
| 603 | 100 | PetscErrorCode NEPSetTwoSided(NEP nep,PetscBool twosided) | |
| 604 | { | ||
| 605 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
100 | PetscFunctionBegin; |
| 606 |
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.
|
100 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
| 607 |
31/70✓ 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 not taken.
✓ Branch 9 taken 2 times.
✓ 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 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 not taken.
✓ Branch 35 taken 2 times.
✓ Branch 36 taken 2 times.
✗ Branch 37 not taken.
✓ Branch 38 taken 2 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 2 times.
✗ 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 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✓ Branch 51 taken 2 times.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✓ Branch 56 taken 2 times.
✗ Branch 57 not taken.
✓ Branch 58 taken 2 times.
✗ 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.
✗ Branch 66 not taken.
✓ Branch 67 taken 2 times.
✗ Branch 68 not taken.
✗ Branch 69 not taken.
|
100 | PetscValidLogicalCollectiveBool(nep,twosided,2); |
| 608 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
100 | if (twosided!=nep->twosided) { |
| 609 | 70 | nep->twosided = twosided; | |
| 610 | 70 | nep->state = NEP_STATE_INITIAL; | |
| 611 | } | ||
| 612 |
7/14✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
|
100 | PetscFunctionReturn(PETSC_SUCCESS); |
| 613 | } | ||
| 614 | |||
| 615 | /*@ | ||
| 616 | NEPGetTwoSided - Returns the flag indicating whether a two-sided variant | ||
| 617 | of the algorithm is being used or not. | ||
| 618 | |||
| 619 | Not Collective | ||
| 620 | |||
| 621 | Input Parameter: | ||
| 622 | . nep - the nonlinear eigensolver context | ||
| 623 | |||
| 624 | Output Parameter: | ||
| 625 | . twosided - the returned flag | ||
| 626 | |||
| 627 | Level: advanced | ||
| 628 | |||
| 629 | .seealso: [](ch:nep), `NEPSetTwoSided()` | ||
| 630 | @*/ | ||
| 631 | 30 | PetscErrorCode NEPGetTwoSided(NEP nep,PetscBool *twosided) | |
| 632 | { | ||
| 633 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
30 | PetscFunctionBegin; |
| 634 |
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.
|
30 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
| 635 |
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.
|
30 | PetscAssertPointer(twosided,2); |
| 636 | 30 | *twosided = nep->twosided; | |
| 637 |
7/14✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
|
30 | PetscFunctionReturn(PETSC_SUCCESS); |
| 638 | } | ||
| 639 | |||
| 640 | /*@ | ||
| 641 | NEPSetConvergenceTestFunction - Sets a function to compute the error estimate | ||
| 642 | used in the convergence test. | ||
| 643 | |||
| 644 | Logically Collective | ||
| 645 | |||
| 646 | Input Parameters: | ||
| 647 | + nep - the nonlinear eigensolver context | ||
| 648 | . conv - convergence test function, see `NEPConvergenceTestFn` for the calling sequence | ||
| 649 | . ctx - context for private data for the convergence routine (may be `NULL`) | ||
| 650 | - destroy - a routine for destroying the context (may be `NULL`), see `PetscCtxDestroyFn` | ||
| 651 | for the calling sequence | ||
| 652 | |||
| 653 | Notes: | ||
| 654 | When this is called with a user-defined function, then the convergence | ||
| 655 | criterion is set to `NEP_CONV_USER`, see `NEPSetConvergenceTest()`. | ||
| 656 | |||
| 657 | If the error estimate returned by the convergence test function is less than | ||
| 658 | the tolerance, then the eigenvalue is accepted as converged. | ||
| 659 | |||
| 660 | Level: advanced | ||
| 661 | |||
| 662 | .seealso: [](ch:nep), `NEPSetConvergenceTest()`, `NEPSetTolerances()` | ||
| 663 | @*/ | ||
| 664 | 20 | PetscErrorCode NEPSetConvergenceTestFunction(NEP nep,NEPConvergenceTestFn *conv,PetscCtx ctx,PetscCtxDestroyFn *destroy) | |
| 665 | { | ||
| 666 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
20 | PetscFunctionBegin; |
| 667 |
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.
|
20 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
| 668 |
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.
|
20 | if (nep->convergeddestroy) PetscCall((*nep->convergeddestroy)(&nep->convergedctx)); |
| 669 | 20 | nep->convergeduser = conv; | |
| 670 | 20 | nep->convergeddestroy = destroy; | |
| 671 | 20 | nep->convergedctx = ctx; | |
| 672 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
20 | if (conv == NEPConvergedRelative) nep->conv = NEP_CONV_REL; |
| 673 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
20 | else if (conv == NEPConvergedNorm) nep->conv = NEP_CONV_NORM; |
| 674 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
20 | else if (conv == NEPConvergedAbsolute) nep->conv = NEP_CONV_ABS; |
| 675 | else { | ||
| 676 | 20 | nep->conv = NEP_CONV_USER; | |
| 677 | 20 | nep->converged = nep->convergeduser; | |
| 678 | } | ||
| 679 |
7/14✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
|
4 | PetscFunctionReturn(PETSC_SUCCESS); |
| 680 | } | ||
| 681 | |||
| 682 | /*@ | ||
| 683 | NEPSetConvergenceTest - Specifies how to compute the error estimate | ||
| 684 | used in the convergence test. | ||
| 685 | |||
| 686 | Logically Collective | ||
| 687 | |||
| 688 | Input Parameters: | ||
| 689 | + nep - the nonlinear eigensolver context | ||
| 690 | - conv - the type of convergence test, see `NEPConv` for possible values | ||
| 691 | |||
| 692 | Options Database Keys: | ||
| 693 | + -nep_conv_abs - sets the absolute convergence test | ||
| 694 | . -nep_conv_rel - sets the convergence test relative to the eigenvalue | ||
| 695 | . -nep_conv_norm - sets the convergence test relative to the matrix norms | ||
| 696 | - -nep_conv_user - selects the user-defined convergence test | ||
| 697 | |||
| 698 | Level: intermediate | ||
| 699 | |||
| 700 | .seealso: [](ch:nep), `NEPGetConvergenceTest()`, `NEPSetConvergenceTestFunction()`, `NEPSetStoppingTest()`, `NEPConv` | ||
| 701 | @*/ | ||
| 702 | 36 | PetscErrorCode NEPSetConvergenceTest(NEP nep,NEPConv conv) | |
| 703 | { | ||
| 704 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
36 | PetscFunctionBegin; |
| 705 |
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.
|
36 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
| 706 |
31/70✓ 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 not taken.
✓ Branch 9 taken 2 times.
✓ 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 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 not taken.
✓ Branch 35 taken 2 times.
✓ Branch 36 taken 2 times.
✗ Branch 37 not taken.
✓ Branch 38 taken 2 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 2 times.
✗ 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 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✓ Branch 51 taken 2 times.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✓ Branch 56 taken 2 times.
✗ Branch 57 not taken.
✓ Branch 58 taken 2 times.
✗ 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.
✗ Branch 66 not taken.
✓ Branch 67 taken 2 times.
✗ Branch 68 not taken.
✗ Branch 69 not taken.
|
36 | PetscValidLogicalCollectiveEnum(nep,conv,2); |
| 707 |
2/5✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
|
36 | switch (conv) { |
| 708 | 16 | case NEP_CONV_ABS: nep->converged = NEPConvergedAbsolute; break; | |
| 709 | ✗ | case NEP_CONV_REL: nep->converged = NEPConvergedRelative; break; | |
| 710 | 20 | case NEP_CONV_NORM: nep->converged = NEPConvergedNorm; break; | |
| 711 | ✗ | case NEP_CONV_USER: | |
| 712 | ✗ | PetscCheck(nep->convergeduser,PetscObjectComm((PetscObject)nep),PETSC_ERR_ORDER,"Must call NEPSetConvergenceTestFunction() first"); | |
| 713 | ✗ | nep->converged = nep->convergeduser; | |
| 714 | ✗ | break; | |
| 715 | ✗ | default: | |
| 716 | − | SETERRQ(PetscObjectComm((PetscObject)nep),PETSC_ERR_ARG_OUTOFRANGE,"Invalid 'conv' value"); | |
| 717 | } | ||
| 718 | 36 | nep->conv = conv; | |
| 719 |
7/14✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
|
36 | PetscFunctionReturn(PETSC_SUCCESS); |
| 720 | } | ||
| 721 | |||
| 722 | /*@ | ||
| 723 | NEPGetConvergenceTest - Gets the method used to compute the error estimate | ||
| 724 | used in the convergence test. | ||
| 725 | |||
| 726 | Not Collective | ||
| 727 | |||
| 728 | Input Parameter: | ||
| 729 | . nep - the nonlinear eigensolver context | ||
| 730 | |||
| 731 | Output Parameter: | ||
| 732 | . conv - the type of convergence test | ||
| 733 | |||
| 734 | Level: intermediate | ||
| 735 | |||
| 736 | .seealso: [](ch:nep), `NEPSetConvergenceTest()`, `NEPConv` | ||
| 737 | @*/ | ||
| 738 | 16 | PetscErrorCode NEPGetConvergenceTest(NEP nep,NEPConv *conv) | |
| 739 | { | ||
| 740 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
16 | PetscFunctionBegin; |
| 741 |
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(nep,NEP_CLASSID,1); |
| 742 |
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); |
| 743 | 16 | *conv = nep->conv; | |
| 744 |
7/14✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
|
16 | PetscFunctionReturn(PETSC_SUCCESS); |
| 745 | } | ||
| 746 | |||
| 747 | /*@ | ||
| 748 | NEPSetStoppingTestFunction - Sets a function to decide when to stop the outer | ||
| 749 | iteration of the eigensolver. | ||
| 750 | |||
| 751 | Logically Collective | ||
| 752 | |||
| 753 | Input Parameters: | ||
| 754 | + nep - the nonlinear eigensolver context | ||
| 755 | . stop - the stopping test function, see `NEPStoppingTestFn` for the calling sequence | ||
| 756 | . ctx - context for private data for the stopping routine (may be `NULL`) | ||
| 757 | - destroy - a routine for destroying the context (may be `NULL`), see `PetscCtxDestroyFn` | ||
| 758 | for the calling sequence | ||
| 759 | |||
| 760 | Note: | ||
| 761 | When implementing a function for this, normal usage is to first call the | ||
| 762 | default routine `NEPStoppingBasic()` and then set `reason` to `NEP_CONVERGED_USER` | ||
| 763 | if some user-defined conditions have been met. To let the eigensolver continue | ||
| 764 | iterating, the result must be left as `NEP_CONVERGED_ITERATING`. | ||
| 765 | |||
| 766 | Level: advanced | ||
| 767 | |||
| 768 | .seealso: [](ch:nep), `NEPSetStoppingTest()`, `NEPStoppingBasic()` | ||
| 769 | @*/ | ||
| 770 | 10 | PetscErrorCode NEPSetStoppingTestFunction(NEP nep,NEPStoppingTestFn *stop,PetscCtx ctx,PetscCtxDestroyFn *destroy) | |
| 771 | { | ||
| 772 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
10 | PetscFunctionBegin; |
| 773 |
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(nep,NEP_CLASSID,1); |
| 774 |
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 (nep->stoppingdestroy) PetscCall((*nep->stoppingdestroy)(&nep->stoppingctx)); |
| 775 | 10 | nep->stoppinguser = stop; | |
| 776 | 10 | nep->stoppingdestroy = destroy; | |
| 777 | 10 | nep->stoppingctx = ctx; | |
| 778 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
10 | if (stop == NEPStoppingBasic) nep->stop = NEP_STOP_BASIC; |
| 779 | else { | ||
| 780 | 10 | nep->stop = NEP_STOP_USER; | |
| 781 | 10 | nep->stopping = nep->stoppinguser; | |
| 782 | } | ||
| 783 |
7/14✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
|
2 | PetscFunctionReturn(PETSC_SUCCESS); |
| 784 | } | ||
| 785 | |||
| 786 | /*@ | ||
| 787 | NEPSetStoppingTest - Specifies how to decide the termination of the outer | ||
| 788 | loop of the eigensolver. | ||
| 789 | |||
| 790 | Logically Collective | ||
| 791 | |||
| 792 | Input Parameters: | ||
| 793 | + nep - the nonlinear eigensolver context | ||
| 794 | - stop - the type of stopping test, see `NEPStop` | ||
| 795 | |||
| 796 | Options Database Keys: | ||
| 797 | + -nep_stop_basic - sets the default stopping test | ||
| 798 | - -nep_stop_user - selects the user-defined stopping test | ||
| 799 | |||
| 800 | Level: advanced | ||
| 801 | |||
| 802 | .seealso: [](ch:nep), `NEPGetStoppingTest()`, `NEPSetStoppingTestFunction()`, `NEPSetConvergenceTest()`, `NEPStop` | ||
| 803 | @*/ | ||
| 804 | 16 | PetscErrorCode NEPSetStoppingTest(NEP nep,NEPStop stop) | |
| 805 | { | ||
| 806 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
16 | PetscFunctionBegin; |
| 807 |
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(nep,NEP_CLASSID,1); |
| 808 |
31/70✓ 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 not taken.
✓ Branch 9 taken 2 times.
✓ 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 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 not taken.
✓ Branch 35 taken 2 times.
✓ Branch 36 taken 2 times.
✗ Branch 37 not taken.
✓ Branch 38 taken 2 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 2 times.
✗ 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 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✓ Branch 51 taken 2 times.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✓ Branch 56 taken 2 times.
✗ Branch 57 not taken.
✓ Branch 58 taken 2 times.
✗ 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.
✗ Branch 66 not taken.
✓ Branch 67 taken 2 times.
✗ Branch 68 not taken.
✗ Branch 69 not taken.
|
16 | PetscValidLogicalCollectiveEnum(nep,stop,2); |
| 809 |
1/3✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
|
16 | switch (stop) { |
| 810 | 16 | case NEP_STOP_BASIC: nep->stopping = NEPStoppingBasic; break; | |
| 811 | ✗ | case NEP_STOP_USER: | |
| 812 | ✗ | PetscCheck(nep->stoppinguser,PetscObjectComm((PetscObject)nep),PETSC_ERR_ORDER,"Must call NEPSetStoppingTestFunction() first"); | |
| 813 | ✗ | nep->stopping = nep->stoppinguser; | |
| 814 | ✗ | break; | |
| 815 | ✗ | default: | |
| 816 | − | SETERRQ(PetscObjectComm((PetscObject)nep),PETSC_ERR_ARG_OUTOFRANGE,"Invalid 'stop' value"); | |
| 817 | } | ||
| 818 | 16 | nep->stop = stop; | |
| 819 |
7/14✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
|
16 | PetscFunctionReturn(PETSC_SUCCESS); |
| 820 | } | ||
| 821 | |||
| 822 | /*@ | ||
| 823 | NEPGetStoppingTest - Gets the method used to decide the termination of the outer | ||
| 824 | loop of the eigensolver. | ||
| 825 | |||
| 826 | Not Collective | ||
| 827 | |||
| 828 | Input Parameter: | ||
| 829 | . nep - the nonlinear eigensolver context | ||
| 830 | |||
| 831 | Output Parameter: | ||
| 832 | . stop - the type of stopping test | ||
| 833 | |||
| 834 | Level: advanced | ||
| 835 | |||
| 836 | .seealso: [](ch:nep), `NEPSetStoppingTest()`, `NEPStop` | ||
| 837 | @*/ | ||
| 838 | 16 | PetscErrorCode NEPGetStoppingTest(NEP nep,NEPStop *stop) | |
| 839 | { | ||
| 840 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
16 | PetscFunctionBegin; |
| 841 |
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(nep,NEP_CLASSID,1); |
| 842 |
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); |
| 843 | 16 | *stop = nep->stop; | |
| 844 |
7/14✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
|
16 | PetscFunctionReturn(PETSC_SUCCESS); |
| 845 | } | ||
| 846 | |||
| 847 | /*@ | ||
| 848 | NEPSetTrackAll - Specifies if the solver must compute the residual of all | ||
| 849 | approximate eigenpairs or not. | ||
| 850 | |||
| 851 | Logically Collective | ||
| 852 | |||
| 853 | Input Parameters: | ||
| 854 | + nep - the nonlinear eigensolver context | ||
| 855 | - trackall - whether compute all residuals or not | ||
| 856 | |||
| 857 | Notes: | ||
| 858 | If the user sets `trackall`=`PETSC_TRUE` then the solver explicitly computes | ||
| 859 | the residual for each eigenpair approximation. Computing the residual is | ||
| 860 | usually an expensive operation and solvers commonly compute the associated | ||
| 861 | residual to the first unconverged eigenpair. | ||
| 862 | |||
| 863 | The option `-nep_monitor_all` automatically activates this option. | ||
| 864 | |||
| 865 | Level: developer | ||
| 866 | |||
| 867 | .seealso: [](ch:nep), `NEPGetTrackAll()` | ||
| 868 | @*/ | ||
| 869 | 20 | PetscErrorCode NEPSetTrackAll(NEP nep,PetscBool trackall) | |
| 870 | { | ||
| 871 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
20 | PetscFunctionBegin; |
| 872 |
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.
|
20 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
| 873 |
31/70✓ 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 not taken.
✓ Branch 9 taken 2 times.
✓ 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 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 not taken.
✓ Branch 35 taken 2 times.
✓ Branch 36 taken 2 times.
✗ Branch 37 not taken.
✓ Branch 38 taken 2 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 2 times.
✗ 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 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✓ Branch 51 taken 2 times.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✓ Branch 56 taken 2 times.
✗ Branch 57 not taken.
✓ Branch 58 taken 2 times.
✗ 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.
✗ Branch 66 not taken.
✓ Branch 67 taken 2 times.
✗ Branch 68 not taken.
✗ Branch 69 not taken.
|
20 | PetscValidLogicalCollectiveBool(nep,trackall,2); |
| 874 | 20 | nep->trackall = trackall; | |
| 875 |
7/14✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
|
20 | PetscFunctionReturn(PETSC_SUCCESS); |
| 876 | } | ||
| 877 | |||
| 878 | /*@ | ||
| 879 | NEPGetTrackAll - Returns the flag indicating whether all residual norms must | ||
| 880 | be computed or not. | ||
| 881 | |||
| 882 | Not Collective | ||
| 883 | |||
| 884 | Input Parameter: | ||
| 885 | . nep - the nonlinear eigensolver context | ||
| 886 | |||
| 887 | Output Parameter: | ||
| 888 | . trackall - the returned flag | ||
| 889 | |||
| 890 | Level: developer | ||
| 891 | |||
| 892 | .seealso: [](ch:nep), `NEPSetTrackAll()` | ||
| 893 | @*/ | ||
| 894 | 284 | PetscErrorCode NEPGetTrackAll(NEP nep,PetscBool *trackall) | |
| 895 | { | ||
| 896 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
284 | PetscFunctionBegin; |
| 897 |
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.
|
284 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
| 898 |
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.
|
284 | PetscAssertPointer(trackall,2); |
| 899 | 284 | *trackall = nep->trackall; | |
| 900 |
7/14✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
|
284 | PetscFunctionReturn(PETSC_SUCCESS); |
| 901 | } | ||
| 902 | |||
| 903 | /*@ | ||
| 904 | NEPSetRefine - Specifies the refinement type (and options) to be used | ||
| 905 | after the solve. | ||
| 906 | |||
| 907 | Logically Collective | ||
| 908 | |||
| 909 | Input Parameters: | ||
| 910 | + nep - the nonlinear eigensolver context | ||
| 911 | . refine - refinement type, see `NEPRefine` for possible values | ||
| 912 | . npart - number of partitions of the communicator | ||
| 913 | . tol - the convergence tolerance | ||
| 914 | . its - maximum number of refinement iterations | ||
| 915 | - scheme - which scheme to be used for solving the involved linear systems, see `NEPRefineScheme` | ||
| 916 | for possible values | ||
| 917 | |||
| 918 | Options Database Keys: | ||
| 919 | + -nep_refine (none|simple|multiple) - set the refinement type | ||
| 920 | . -nep_refine_partitions npart - set the number of partitions | ||
| 921 | . -nep_refine_tol tol - set the tolerance | ||
| 922 | . -nep_refine_its its - set the number of iterations | ||
| 923 | - -nep_refine_scheme (schur|mbe|explicit) - set the scheme for the linear solves | ||
| 924 | |||
| 925 | Notes: | ||
| 926 | This function configures the parameters of Newton iterative refinement, | ||
| 927 | see section [](#sec:refine) for a discussion of the different strategies | ||
| 928 | in the context of polynomial eigenproblems. | ||
| 929 | |||
| 930 | By default, iterative refinement is disabled, since it may be very | ||
| 931 | costly. There are two possible refinement strategies, simple and multiple. | ||
| 932 | The simple approach performs iterative refinement on each of the | ||
| 933 | converged eigenpairs individually, whereas the multiple strategy works | ||
| 934 | with the invariant pair as a whole, refining all eigenpairs simultaneously. | ||
| 935 | The latter may be required for the case of multiple eigenvalues. | ||
| 936 | |||
| 937 | In some cases, especially when using direct solvers within the | ||
| 938 | iterative refinement method, it may be helpful for improved scalability | ||
| 939 | to split the communicator in several partitions. The `npart` parameter | ||
| 940 | indicates how many partitions to use (defaults to 1). | ||
| 941 | |||
| 942 | The `tol` and `its` parameters specify the stopping criterion. In the simple | ||
| 943 | method, refinement continues until the residual of each eigenpair is | ||
| 944 | below the tolerance (`tol` defaults to the `NEP` tolerance, but may be set to a | ||
| 945 | different value). In contrast, the multiple method simply performs its | ||
| 946 | refinement iterations (just one by default). | ||
| 947 | |||
| 948 | The `scheme` argument is used to change the way in which linear systems are | ||
| 949 | solved. Possible choices are explicit, mixed block elimination (MBE), | ||
| 950 | and Schur complement. | ||
| 951 | |||
| 952 | Use `PETSC_CURRENT` to retain the current value of `npart`, `tol` or `its`. Use | ||
| 953 | `PETSC_DETERMINE` to assign a default value. | ||
| 954 | |||
| 955 | Level: intermediate | ||
| 956 | |||
| 957 | .seealso: [](ch:nep), [](#sec:refine), `NEPGetRefine()` | ||
| 958 | @*/ | ||
| 959 | 136 | PetscErrorCode NEPSetRefine(NEP nep,NEPRefine refine,PetscInt npart,PetscReal tol,PetscInt its,NEPRefineScheme scheme) | |
| 960 | { | ||
| 961 | 136 | PetscMPIInt size; | |
| 962 | |||
| 963 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
136 | PetscFunctionBegin; |
| 964 |
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.
|
136 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
| 965 |
31/70✓ 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 not taken.
✓ Branch 9 taken 2 times.
✓ 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 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 not taken.
✓ Branch 35 taken 2 times.
✓ Branch 36 taken 2 times.
✗ Branch 37 not taken.
✓ Branch 38 taken 2 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 2 times.
✗ 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 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✓ Branch 51 taken 2 times.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✓ Branch 56 taken 2 times.
✗ Branch 57 not taken.
✓ Branch 58 taken 2 times.
✗ 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.
✗ Branch 66 not taken.
✓ Branch 67 taken 2 times.
✗ Branch 68 not taken.
✗ Branch 69 not taken.
|
136 | PetscValidLogicalCollectiveEnum(nep,refine,2); |
| 966 |
31/70✓ 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 not taken.
✓ Branch 9 taken 2 times.
✓ 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 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 not taken.
✓ Branch 35 taken 2 times.
✓ Branch 36 taken 2 times.
✗ Branch 37 not taken.
✓ Branch 38 taken 2 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 2 times.
✗ 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 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✓ Branch 51 taken 2 times.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✓ Branch 56 taken 2 times.
✗ Branch 57 not taken.
✓ Branch 58 taken 2 times.
✗ 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.
✗ Branch 66 not taken.
✓ Branch 67 taken 2 times.
✗ Branch 68 not taken.
✗ Branch 69 not taken.
|
136 | PetscValidLogicalCollectiveInt(nep,npart,3); |
| 967 |
33/74✗ 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 not taken.
✓ Branch 11 taken 2 times.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✓ Branch 14 taken 2 times.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✓ Branch 17 taken 2 times.
✗ 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 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 not taken.
✓ Branch 37 taken 2 times.
✓ Branch 38 taken 2 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 2 times.
✗ Branch 41 not taken.
✓ Branch 42 taken 2 times.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✗ Branch 50 not taken.
✗ Branch 51 not taken.
✗ Branch 52 not taken.
✓ Branch 53 taken 2 times.
✓ Branch 54 taken 2 times.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✓ Branch 57 taken 2 times.
✓ Branch 58 taken 2 times.
✗ Branch 59 not taken.
✓ Branch 60 taken 2 times.
✗ Branch 61 not taken.
✓ Branch 62 taken 2 times.
✗ Branch 63 not taken.
✗ Branch 64 not taken.
✓ Branch 65 taken 2 times.
✗ Branch 66 not taken.
✗ Branch 67 not taken.
✓ Branch 68 taken 2 times.
✗ Branch 69 not taken.
✗ Branch 70 not taken.
✓ Branch 71 taken 2 times.
✗ Branch 72 not taken.
✗ Branch 73 not taken.
|
136 | PetscValidLogicalCollectiveReal(nep,tol,4); |
| 968 |
31/70✓ 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 not taken.
✓ Branch 9 taken 2 times.
✓ 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 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 not taken.
✓ Branch 35 taken 2 times.
✓ Branch 36 taken 2 times.
✗ Branch 37 not taken.
✓ Branch 38 taken 2 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 2 times.
✗ 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 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✓ Branch 51 taken 2 times.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✓ Branch 56 taken 2 times.
✗ Branch 57 not taken.
✓ Branch 58 taken 2 times.
✗ 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.
✗ Branch 66 not taken.
✓ Branch 67 taken 2 times.
✗ Branch 68 not taken.
✗ Branch 69 not taken.
|
136 | PetscValidLogicalCollectiveInt(nep,its,5); |
| 969 |
31/70✓ 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 not taken.
✓ Branch 9 taken 2 times.
✓ 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 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 not taken.
✓ Branch 35 taken 2 times.
✓ Branch 36 taken 2 times.
✗ Branch 37 not taken.
✓ Branch 38 taken 2 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 2 times.
✗ 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 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✓ Branch 51 taken 2 times.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✓ Branch 56 taken 2 times.
✗ Branch 57 not taken.
✓ Branch 58 taken 2 times.
✗ 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.
✗ Branch 66 not taken.
✓ Branch 67 taken 2 times.
✗ Branch 68 not taken.
✗ Branch 69 not taken.
|
136 | PetscValidLogicalCollectiveEnum(nep,scheme,6); |
| 970 | 136 | nep->refine = refine; | |
| 971 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
136 | if (refine) { /* process parameters only if not REFINE_NONE */ |
| 972 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
136 | if (npart!=nep->npart) { |
| 973 |
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.
|
80 | PetscCall(PetscSubcommDestroy(&nep->refinesubc)); |
| 974 |
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.
|
80 | PetscCall(KSPDestroy(&nep->refineksp)); |
| 975 | } | ||
| 976 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
136 | if (npart == PETSC_DETERMINE) { |
| 977 | ✗ | nep->npart = 1; | |
| 978 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
136 | } else if (npart != PETSC_CURRENT) { |
| 979 |
16/32✓ 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 not taken.
✓ Branch 9 taken 2 times.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✓ Branch 14 taken 2 times.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✓ Branch 17 taken 2 times.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 2 times.
✗ 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.
|
136 | PetscCallMPI(MPI_Comm_size(PetscObjectComm((PetscObject)nep),&size)); |
| 980 |
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.
|
136 | PetscCheck(npart>0 && npart<=size,PetscObjectComm((PetscObject)nep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of npart"); |
| 981 | 136 | nep->npart = npart; | |
| 982 | } | ||
| 983 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
136 | if (tol == (PetscReal)PETSC_DETERMINE) { |
| 984 | 120 | nep->rtol = PETSC_DETERMINE; | |
| 985 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
16 | } else if (tol != (PetscReal)PETSC_CURRENT) { |
| 986 |
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)nep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of tol. Must be > 0"); |
| 987 | 16 | nep->rtol = tol; | |
| 988 | } | ||
| 989 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
136 | if (its==PETSC_DETERMINE) { |
| 990 | 110 | nep->rits = PETSC_DETERMINE; | |
| 991 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
26 | } else if (its != PETSC_CURRENT) { |
| 992 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
26 | PetscCheck(its>=0,PetscObjectComm((PetscObject)nep),PETSC_ERR_ARG_OUTOFRANGE,"Illegal value of its. Must be >= 0"); |
| 993 | 26 | nep->rits = its; | |
| 994 | } | ||
| 995 | 136 | nep->scheme = scheme; | |
| 996 | } | ||
| 997 | 136 | nep->state = NEP_STATE_INITIAL; | |
| 998 |
7/14✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
|
136 | PetscFunctionReturn(PETSC_SUCCESS); |
| 999 | } | ||
| 1000 | |||
| 1001 | /*@ | ||
| 1002 | NEPGetRefine - Gets the refinement strategy used by the `NEP` object, and the | ||
| 1003 | associated parameters. | ||
| 1004 | |||
| 1005 | Not Collective | ||
| 1006 | |||
| 1007 | Input Parameter: | ||
| 1008 | . nep - the nonlinear eigensolver context | ||
| 1009 | |||
| 1010 | Output Parameters: | ||
| 1011 | + refine - refinement type | ||
| 1012 | . npart - number of partitions of the communicator | ||
| 1013 | . tol - the convergence tolerance | ||
| 1014 | . its - maximum number of refinement iterations | ||
| 1015 | - scheme - the scheme used for solving linear systems | ||
| 1016 | |||
| 1017 | Level: intermediate | ||
| 1018 | |||
| 1019 | Note: | ||
| 1020 | The user can specify `NULL` for any parameter that is not needed. | ||
| 1021 | |||
| 1022 | .seealso: [](ch:nep), `NEPSetRefine()` | ||
| 1023 | @*/ | ||
| 1024 | 16 | PetscErrorCode NEPGetRefine(NEP nep,NEPRefine *refine,PetscInt *npart,PetscReal *tol,PetscInt *its,NEPRefineScheme *scheme) | |
| 1025 | { | ||
| 1026 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
16 | PetscFunctionBegin; |
| 1027 |
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(nep,NEP_CLASSID,1); |
| 1028 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
16 | if (refine) *refine = nep->refine; |
| 1029 |
2/2✓ Branch 0 taken 6 times.
✓ Branch 1 taken 10 times.
|
16 | if (npart) *npart = nep->npart; |
| 1030 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
16 | if (tol) *tol = nep->rtol; |
| 1031 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
16 | if (its) *its = nep->rits; |
| 1032 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
16 | if (scheme) *scheme = nep->scheme; |
| 1033 |
7/14✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
|
16 | PetscFunctionReturn(PETSC_SUCCESS); |
| 1034 | } | ||
| 1035 | |||
| 1036 | /*@ | ||
| 1037 | NEPSetOptionsPrefix - Sets the prefix used for searching for all | ||
| 1038 | `NEP` options in the database. | ||
| 1039 | |||
| 1040 | Logically Collective | ||
| 1041 | |||
| 1042 | Input Parameters: | ||
| 1043 | + nep - the nonlinear eigensolver context | ||
| 1044 | - prefix - the prefix string to prepend to all `NEP` option requests | ||
| 1045 | |||
| 1046 | Notes: | ||
| 1047 | A hyphen (-) must NOT be given at the beginning of the prefix name. | ||
| 1048 | The first character of all runtime options is AUTOMATICALLY the | ||
| 1049 | hyphen. | ||
| 1050 | |||
| 1051 | For example, to distinguish between the runtime options for two | ||
| 1052 | different `NEP` contexts, one could call | ||
| 1053 | .vb | ||
| 1054 | NEPSetOptionsPrefix(nep1,"neig1_") | ||
| 1055 | NEPSetOptionsPrefix(nep2,"neig2_") | ||
| 1056 | .ve | ||
| 1057 | |||
| 1058 | Level: advanced | ||
| 1059 | |||
| 1060 | .seealso: [](ch:nep), `NEPAppendOptionsPrefix()`, `NEPGetOptionsPrefix()` | ||
| 1061 | @*/ | ||
| 1062 | 24 | PetscErrorCode NEPSetOptionsPrefix(NEP nep,const char prefix[]) | |
| 1063 | { | ||
| 1064 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
24 | PetscFunctionBegin; |
| 1065 |
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.
|
24 | PetscValidHeaderSpecific(nep,NEP_CLASSID,1); |
| 1066 |
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.
|
24 | if (!nep->V) PetscCall(NEPGetBV(nep,&nep->V)); |
| 1067 |
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.
|
24 | PetscCall(BVSetOptionsPrefix(nep->V,prefix)); |
| 1068 |
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.
|
24 | if (!nep->ds) PetscCall(NEPGetDS(nep,&nep->ds)); |
| 1069 |
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.
|
24 | PetscCall(DSSetOptionsPrefix(nep->ds,prefix)); |
| 1070 |
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.
|
24 | if (!nep->rg) PetscCall(NEPGetRG(nep,&nep->rg)); |
| 1071 |
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.
|
24 | PetscCall(RGSetOptionsPrefix(nep->rg,prefix)); |
| 1072 |
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.
|
24 | PetscCall(PetscObjectSetOptionsPrefix((PetscObject)nep,prefix)); |
| 1073 |
7/14✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
|
2 | PetscFunctionReturn(PETSC_SUCCESS); |
| 1074 | } | ||
| 1075 | |||
| 1076 | /*@ | ||
| 1077 | NEPAppendOptionsPrefix - Appends to the prefix used for searching for all | ||
| 1078 | `NEP` options in the database. | ||
| 1079 | |||
| 1080 | Logically Collective | ||
| 1081 | |||
| 1082 | Input Parameters: | ||
| 1083 | + nep - the nonlinear eigensolver context | ||
| 1084 | - prefix - the prefix string to prepend to all `NEP` option requests | ||
| 1085 | |||
| 1086 | Notes: | ||
| 1087 | A hyphen (-) must NOT be given at the beginning of the prefix name. | ||
| 1088 | The first character of all runtime options is AUTOMATICALLY the hyphen. | ||
| 1089 | |||
| 1090 | Level: advanced | ||
| 1091 | |||
| 1092 | .seealso: [](ch:nep), `NEPSetOptionsPrefix()`, `NEPGetOptionsPrefix()` | ||
| 1093 | @*/ | ||
| 1094 | 10 | PetscErrorCode NEPAppendOptionsPrefix(NEP nep,const char prefix[]) | |
| 1095 | { | ||
| 1096 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
10 | PetscFunctionBegin; |
| 1097 |
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(nep,NEP_CLASSID,1); |
| 1098 |
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 (!nep->V) PetscCall(NEPGetBV(nep,&nep->V)); |
| 1099 |
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(BVAppendOptionsPrefix(nep->V,prefix)); |
| 1100 |
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 (!nep->ds) PetscCall(NEPGetDS(nep,&nep->ds)); |
| 1101 |
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(DSAppendOptionsPrefix(nep->ds,prefix)); |
| 1102 |
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 (!nep->rg) PetscCall(NEPGetRG(nep,&nep->rg)); |
| 1103 |
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(RGAppendOptionsPrefix(nep->rg,prefix)); |
| 1104 |
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(PetscObjectAppendOptionsPrefix((PetscObject)nep,prefix)); |
| 1105 |
7/14✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
|
2 | PetscFunctionReturn(PETSC_SUCCESS); |
| 1106 | } | ||
| 1107 | |||
| 1108 | /*@ | ||
| 1109 | NEPGetOptionsPrefix - Gets the prefix used for searching for all | ||
| 1110 | `NEP` options in the database. | ||
| 1111 | |||
| 1112 | Not Collective | ||
| 1113 | |||
| 1114 | Input Parameter: | ||
| 1115 | . nep - the nonlinear eigensolver context | ||
| 1116 | |||
| 1117 | Output Parameter: | ||
| 1118 | . prefix - pointer to the prefix string used is returned | ||
| 1119 | |||
| 1120 | Level: advanced | ||
| 1121 | |||
| 1122 | .seealso: [](ch:nep), `NEPSetOptionsPrefix()`, `NEPAppendOptionsPrefix()` | ||
| 1123 | @*/ | ||
| 1124 | 31 | PetscErrorCode NEPGetOptionsPrefix(NEP nep,const char *prefix[]) | |
| 1125 | { | ||
| 1126 |
2/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
31 | PetscFunctionBegin; |
| 1127 |
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(nep,NEP_CLASSID,1); |
| 1128 |
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); |
| 1129 |
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)nep,prefix)); |
| 1130 |
7/14✓ 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 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
|
2 | PetscFunctionReturn(PETSC_SUCCESS); |
| 1131 | } | ||
| 1132 |