| 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 | This file implements a wrapper to the ARPACK package | ||
| 12 | */ | ||
| 13 | |||
| 14 | #include <slepc/private/epsimpl.h> | ||
| 15 | #include "arpack.h" | ||
| 16 | |||
| 17 | 38 | static PetscErrorCode EPSSetUp_ARPACK(EPS eps) | |
| 18 | { | ||
| 19 | 38 | PetscInt ncv; | |
| 20 | 38 | EPS_ARPACK *ar = (EPS_ARPACK*)eps->data; | |
| 21 | |||
| 22 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
38 | PetscFunctionBegin; |
| 23 |
3/8✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 5 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
38 | EPSCheckDefinite(eps); |
| 24 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
38 | EPSCheckNotStructured(eps); |
| 25 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 5 times.
|
38 | if (eps->nev==0) eps->nev = 1; |
| 26 |
2/2✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
|
38 | if (eps->ncv!=PETSC_DETERMINE) { |
| 27 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
15 | PetscCheck(eps->ncv>=eps->nev+2,PetscObjectComm((PetscObject)eps),PETSC_ERR_ARG_OUTOFRANGE,"The value of ncv must be at least nev+2"); |
| 28 |
3/4✗ Branch 0 not taken.
✓ Branch 1 taken 5 times.
✓ Branch 2 taken 5 times.
✓ Branch 3 taken 3 times.
|
23 | } else eps->ncv = PetscMin(PetscMax(20,2*eps->nev+1),eps->n); /* set default value of ncv */ |
| 29 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 5 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.
|
38 | if (eps->mpd!=PETSC_DETERMINE) PetscCall(PetscInfo(eps,"Warning: parameter mpd ignored\n")); |
| 30 |
2/2✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
|
38 | if (eps->max_it==PETSC_DETERMINE) eps->max_it = PetscMax(300,(PetscInt)(2*eps->n/eps->ncv)); |
| 31 |
6/8✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 3 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
38 | if (!eps->which) PetscCall(EPSSetWhichEigenpairs_Default(eps)); |
| 32 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
38 | PetscCheck(eps->which!=EPS_ALL,PetscObjectComm((PetscObject)eps),PETSC_ERR_SUP,"This solver does not support computing all eigenvalues"); |
| 33 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
38 | PetscCheck(eps->which!=EPS_WHICH_USER,PetscObjectComm((PetscObject)eps),PETSC_ERR_SUP,"This solver does not support user-defined ordering of eigenvalues"); |
| 34 |
11/30✗ Branch 0 not taken.
✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 5 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✓ Branch 9 taken 3 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 3 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 5 times.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 5 times.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 5 times.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
|
38 | EPSCheckUnsupported(eps,EPS_FEATURE_BALANCE | EPS_FEATURE_ARBITRARY | EPS_FEATURE_REGION | EPS_FEATURE_CONVERGENCE | EPS_FEATURE_STOPPING | EPS_FEATURE_TWOSIDED); |
| 35 |
1/8✗ Branch 0 not taken.
✓ Branch 1 taken 5 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.
|
38 | EPSCheckIgnored(eps,EPS_FEATURE_EXTRACTION); |
| 36 | |||
| 37 | 38 | ncv = eps->ncv; | |
| 38 | #if defined(PETSC_USE_COMPLEX) | ||
| 39 |
5/8✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 1 times.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
|
14 | PetscCall(PetscFree(ar->rwork)); |
| 40 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 1 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
14 | PetscCall(PetscMalloc1(ncv,&ar->rwork)); |
| 41 | 14 | ar->lworkl = 3*ncv*ncv+5*ncv; | |
| 42 |
5/8✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 1 times.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
|
14 | PetscCall(PetscFree(ar->workev)); |
| 43 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 1 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
14 | PetscCall(PetscMalloc1(3*ncv,&ar->workev)); |
| 44 | #else | ||
| 45 |
2/2✓ Branch 0 taken 3 times.
✓ Branch 1 taken 3 times.
|
24 | if (eps->ishermitian) { |
| 46 | 18 | ar->lworkl = ncv*(ncv+8); | |
| 47 | } else { | ||
| 48 | 6 | ar->lworkl = 3*ncv*ncv+6*ncv; | |
| 49 |
5/8✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
|
6 | PetscCall(PetscFree(ar->workev)); |
| 50 |
4/6✓ Branch 0 taken 1 times.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
|
6 | PetscCall(PetscMalloc1(3*ncv,&ar->workev)); |
| 51 | } | ||
| 52 | #endif | ||
| 53 |
5/8✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 3 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
38 | PetscCall(PetscFree(ar->workl)); |
| 54 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
38 | PetscCall(PetscMalloc1(ar->lworkl,&ar->workl)); |
| 55 |
5/8✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 3 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
38 | PetscCall(PetscFree(ar->select)); |
| 56 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
38 | PetscCall(PetscMalloc1(ncv,&ar->select)); |
| 57 |
5/8✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 3 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
38 | PetscCall(PetscFree(ar->workd)); |
| 58 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
38 | PetscCall(PetscMalloc1(3*eps->nloc,&ar->workd)); |
| 59 | |||
| 60 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
38 | PetscCall(EPSAllocateSolution(eps,0)); |
| 61 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
38 | PetscCall(EPS_SetInnerProduct(eps)); |
| 62 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
38 | PetscCall(EPSSetWorkVecs(eps,2)); |
| 63 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
15 | PetscFunctionReturn(PETSC_SUCCESS); |
| 64 | } | ||
| 65 | |||
| 66 | 38 | static PetscErrorCode EPSSolve_ARPACK(EPS eps) | |
| 67 | { | ||
| 68 | 38 | EPS_ARPACK *ar = (EPS_ARPACK*)eps->data; | |
| 69 | 38 | char bmat[1],howmny[] = "A"; | |
| 70 | 38 | const char *which; | |
| 71 | 38 | PetscInt n,ld,iparam[11],ipntr[14],ido,info,nev,ncv,rvec; | |
| 72 | #if !defined(PETSC_HAVE_MPIUNI) && !defined(PETSC_HAVE_MSMPI) | ||
| 73 | 38 | MPI_Fint fcomm; | |
| 74 | #endif | ||
| 75 | 38 | PetscScalar sigmar,*pV,*resid; | |
| 76 | 38 | Vec x,y,w = eps->work[0]; | |
| 77 | 38 | Mat A; | |
| 78 | 38 | PetscBool isSinv,isShift; | |
| 79 | #if !defined(PETSC_USE_COMPLEX) | ||
| 80 | 24 | PetscScalar sigmai = 0.0; | |
| 81 | #endif | ||
| 82 | |||
| 83 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
38 | PetscFunctionBegin; |
| 84 | 38 | nev = eps->nev; | |
| 85 | 38 | ncv = eps->ncv; | |
| 86 | #if !defined(PETSC_HAVE_MPIUNI) && !defined(PETSC_HAVE_MSMPI) | ||
| 87 | 38 | fcomm = MPI_Comm_c2f(PetscObjectComm((PetscObject)eps)); | |
| 88 | #endif | ||
| 89 | 38 | n = eps->nloc; | |
| 90 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
38 | PetscCall(EPSGetStartVector(eps,0,NULL)); |
| 91 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
38 | PetscCall(BVSetActiveColumns(eps->V,0,0)); /* just for deflation space */ |
| 92 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
38 | PetscCall(BVCopyVec(eps->V,0,eps->work[1])); |
| 93 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
38 | PetscCall(BVGetLeadingDimension(eps->V,&ld)); |
| 94 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
38 | PetscCall(BVGetArray(eps->V,&pV)); |
| 95 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
38 | PetscCall(VecGetArray(eps->work[1],&resid)); |
| 96 | |||
| 97 | 38 | ido = 0; /* first call to reverse communication interface */ | |
| 98 | 38 | info = 1; /* indicates an initial vector is provided */ | |
| 99 | 38 | iparam[0] = 1; /* use exact shifts */ | |
| 100 | 38 | iparam[2] = eps->max_it; /* max Arnoldi iterations */ | |
| 101 | 38 | iparam[3] = 1; /* blocksize */ | |
| 102 | 38 | iparam[4] = 0; /* number of converged Ritz values */ | |
| 103 | |||
| 104 | /* | ||
| 105 | Computational modes ([]=not supported): | ||
| 106 | symmetric non-symmetric complex | ||
| 107 | 1 1 'I' 1 'I' 1 'I' | ||
| 108 | 2 3 'I' 3 'I' 3 'I' | ||
| 109 | 3 2 'G' 2 'G' 2 'G' | ||
| 110 | 4 3 'G' 3 'G' 3 'G' | ||
| 111 | 5 [ 4 'G' ] [ 3 'G' ] | ||
| 112 | 6 [ 5 'G' ] [ 4 'G' ] | ||
| 113 | */ | ||
| 114 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
38 | PetscCall(PetscObjectTypeCompare((PetscObject)eps->st,STSINVERT,&isSinv)); |
| 115 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
38 | PetscCall(PetscObjectTypeCompare((PetscObject)eps->st,STSHIFT,&isShift)); |
| 116 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
38 | PetscCall(STGetShift(eps->st,&sigmar)); |
| 117 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
38 | PetscCall(STGetMatrix(eps->st,0,&A)); |
| 118 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
38 | PetscCall(MatCreateVecsEmpty(A,&x,&y)); |
| 119 | |||
| 120 |
2/2✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
|
38 | if (isSinv) { |
| 121 | /* shift-and-invert mode */ | ||
| 122 | 5 | iparam[6] = 3; | |
| 123 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 5 times.
|
5 | if (eps->ispositive) bmat[0] = 'G'; |
| 124 | 5 | else bmat[0] = 'I'; | |
| 125 |
3/4✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 5 times.
✓ Branch 3 taken 5 times.
|
33 | } else if (isShift && eps->ispositive) { |
| 126 | /* generalized shift mode with B positive definite */ | ||
| 127 | 5 | iparam[6] = 2; | |
| 128 | 5 | bmat[0] = 'G'; | |
| 129 | } else { | ||
| 130 | /* regular mode */ | ||
| 131 |
2/6✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 5 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
|
28 | PetscCheck(!eps->ishermitian || !eps->isgeneralized,PetscObjectComm((PetscObject)eps),PETSC_ERR_SUP,"Spectral transformation not supported by ARPACK hermitian solver"); |
| 132 | 28 | iparam[6] = 1; | |
| 133 | 28 | bmat[0] = 'I'; | |
| 134 | } | ||
| 135 | |||
| 136 | #if !defined(PETSC_USE_COMPLEX) | ||
| 137 |
2/2✓ Branch 0 taken 3 times.
✓ Branch 1 taken 3 times.
|
24 | if (eps->ishermitian) { |
| 138 |
2/5✗ Branch 0 not taken.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
|
18 | switch (eps->which) { |
| 139 | case EPS_TARGET_MAGNITUDE: | ||
| 140 | 24 | case EPS_LARGEST_MAGNITUDE: which = "LM"; break; | |
| 141 | ✗ | case EPS_SMALLEST_MAGNITUDE: which = "SM"; break; | |
| 142 | ✗ | case EPS_TARGET_REAL: | |
| 143 | ✗ | case EPS_LARGEST_REAL: which = "LA"; break; | |
| 144 | 6 | case EPS_SMALLEST_REAL: which = "SA"; break; | |
| 145 | ✗ | default: SETERRQ(PetscObjectComm((PetscObject)eps),PETSC_ERR_ARG_WRONG,"Wrong value of eps->which"); | |
| 146 | } | ||
| 147 | } else { | ||
| 148 | #endif | ||
| 149 |
3/7✗ Branch 0 not taken.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 5 times.
|
20 | switch (eps->which) { |
| 150 | case EPS_TARGET_MAGNITUDE: | ||
| 151 | 14 | case EPS_LARGEST_MAGNITUDE: which = "LM"; break; | |
| 152 | ✗ | case EPS_SMALLEST_MAGNITUDE: which = "SM"; break; | |
| 153 | 3 | case EPS_TARGET_REAL: | |
| 154 | 3 | case EPS_LARGEST_REAL: which = "LR"; break; | |
| 155 | 4 | case EPS_SMALLEST_REAL: which = "SR"; break; | |
| 156 | ✗ | case EPS_TARGET_IMAGINARY: | |
| 157 | ✗ | case EPS_LARGEST_IMAGINARY: which = "LI"; break; | |
| 158 | ✗ | case EPS_SMALLEST_IMAGINARY: which = "SI"; break; | |
| 159 | ✗ | default: SETERRQ(PetscObjectComm((PetscObject)eps),PETSC_ERR_ARG_WRONG,"Wrong value of eps->which"); | |
| 160 | } | ||
| 161 | #if !defined(PETSC_USE_COMPLEX) | ||
| 162 | } | ||
| 163 | #endif | ||
| 164 | |||
| 165 | 7163 | do { | |
| 166 | |||
| 167 | #if !defined(PETSC_USE_COMPLEX) | ||
| 168 |
2/2✓ Branch 0 taken 3 times.
✓ Branch 1 taken 3 times.
|
4403 | if (eps->ishermitian) { |
| 169 |
10/20✓ Branch 0 taken 1 times.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 times.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
|
2024 | PetscStackCallExternalVoid("ARPACKsaupd",ARPACKsaupd_(&fcomm,&ido,bmat,&n,which,&nev,&eps->tol,resid,&ncv,pV,&ld,iparam,ipntr,ar->workd,ar->workl,&ar->lworkl,&info)); |
| 170 | } else { | ||
| 171 |
10/20✓ Branch 0 taken 1 times.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 times.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
|
2379 | PetscStackCallExternalVoid("ARPACKnaupd",ARPACKnaupd_(&fcomm,&ido,bmat,&n,which,&nev,&eps->tol,resid,&ncv,pV,&ld,iparam,ipntr,ar->workd,ar->workl,&ar->lworkl,&info)); |
| 172 | } | ||
| 173 | #else | ||
| 174 |
10/20✓ Branch 0 taken 1 times.
✓ Branch 1 taken 1 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 times.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
|
2760 | PetscStackCallExternalVoid("ARPACKnaupd",ARPACKnaupd_(&fcomm,&ido,bmat,&n,which,&nev,&eps->tol,resid,&ncv,pV,&ld,iparam,ipntr,ar->workd,ar->workl,&ar->lworkl,ar->rwork,&info)); |
| 175 | #endif | ||
| 176 | |||
| 177 |
4/4✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
✓ Branch 2 taken 5 times.
✓ Branch 3 taken 5 times.
|
7163 | if (ido == -1 || ido == 1 || ido == 2) { |
| 178 |
5/12✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
✓ Branch 2 taken 5 times.
✓ Branch 3 taken 5 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 5 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
|
7125 | if (ido == 1 && iparam[6] == 3 && bmat[0] == 'G') PetscCall(VecPlaceArray(x,&ar->workd[ipntr[2]-1])); /* special case for shift-and-invert with B semi-positive definite*/ |
| 179 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
7125 | else PetscCall(VecPlaceArray(x,&ar->workd[ipntr[0]-1])); |
| 180 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
7125 | PetscCall(VecPlaceArray(y,&ar->workd[ipntr[1]-1])); |
| 181 | |||
| 182 |
2/2✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
|
7125 | if (ido == -1) { |
| 183 | /* Y = OP * X for the initialization phase to | ||
| 184 | force the starting vector into the range of OP */ | ||
| 185 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
5 | PetscCall(STApply(eps->st,x,y)); |
| 186 |
2/2✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
|
7120 | } else if (ido == 2) { |
| 187 | /* Y = B * X */ | ||
| 188 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
2773 | PetscCall(BVApplyMatrix(eps->V,x,y)); |
| 189 | } else { /* ido == 1 */ | ||
| 190 |
3/4✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 5 times.
|
4347 | if (iparam[6] == 3 && bmat[0] == 'G') { |
| 191 | /* Y = OP * X for shift-and-invert with B semi-positive definite */ | ||
| 192 | ✗ | PetscCall(STMatSolve(eps->st,x,y)); | |
| 193 |
2/2✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
|
4347 | } else if (iparam[6] == 2) { |
| 194 | /* X=A*X Y=B^-1*X for shift with B positive definite */ | ||
| 195 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
925 | PetscCall(MatMult(A,x,y)); |
| 196 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 5 times.
|
925 | if (sigmar != 0.0) { |
| 197 | ✗ | PetscCall(BVApplyMatrix(eps->V,x,w)); | |
| 198 | ✗ | PetscCall(VecAXPY(y,sigmar,w)); | |
| 199 | } | ||
| 200 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
925 | PetscCall(VecCopy(y,x)); |
| 201 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
925 | PetscCall(STMatSolve(eps->st,x,y)); |
| 202 | } else { | ||
| 203 | /* Y = OP * X */ | ||
| 204 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
3422 | PetscCall(STApply(eps->st,x,y)); |
| 205 | } | ||
| 206 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
4347 | PetscCall(BVOrthogonalizeVec(eps->V,y,NULL,NULL,NULL)); |
| 207 | } | ||
| 208 | |||
| 209 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
7125 | PetscCall(VecResetArray(x)); |
| 210 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
7125 | PetscCall(VecResetArray(y)); |
| 211 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
38 | } else PetscCheck(ido==99,PetscObjectComm((PetscObject)eps),PETSC_ERR_LIB,"Internal error in ARPACK reverse communication interface (ido=%" PetscInt_FMT ")",ido); |
| 212 | |||
| 213 |
2/2✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
|
7163 | } while (ido != 99); |
| 214 | |||
| 215 | 38 | eps->nconv = iparam[4]; | |
| 216 | 38 | eps->its = iparam[2]; | |
| 217 | |||
| 218 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
38 | PetscCheck(info!=3,PetscObjectComm((PetscObject)eps),PETSC_ERR_LIB,"No shift could be applied in xxAUPD. Try increasing the size of NCV relative to NEV"); |
| 219 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
38 | PetscCheck(info==0 || info==1,PetscObjectComm((PetscObject)eps),PETSC_ERR_LIB,"Error reported by ARPACK subroutine xxAUPD (%" PetscInt_FMT ")",info); |
| 220 | |||
| 221 | 38 | rvec = PETSC_TRUE; | |
| 222 | |||
| 223 |
1/2✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
|
38 | if (eps->nconv > 0) { |
| 224 | #if !defined(PETSC_USE_COMPLEX) | ||
| 225 |
2/2✓ Branch 0 taken 3 times.
✓ Branch 1 taken 3 times.
|
24 | if (eps->ishermitian) { |
| 226 |
10/20✓ Branch 0 taken 1 times.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 times.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
|
18 | PetscStackCallExternalVoid("ARPACKseupd",ARPACKseupd_(&fcomm,&rvec,howmny,ar->select,eps->eigr,pV,&ld,&sigmar,bmat,&n,which,&nev,&eps->tol,resid,&ncv,pV,&ld,iparam,ipntr,ar->workd,ar->workl,&ar->lworkl,&info)); |
| 227 | } else { | ||
| 228 |
10/20✓ Branch 0 taken 1 times.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 times.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
|
6 | PetscStackCallExternalVoid("ARPACKneupd",ARPACKneupd_(&fcomm,&rvec,howmny,ar->select,eps->eigr,eps->eigi,pV,&ld,&sigmar,&sigmai,ar->workev,bmat,&n,which,&nev,&eps->tol,resid,&ncv,pV,&ld,iparam,ipntr,ar->workd,ar->workl,&ar->lworkl,&info)); |
| 229 | } | ||
| 230 | #else | ||
| 231 |
10/20✓ Branch 0 taken 1 times.
✓ Branch 1 taken 1 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 times.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
|
14 | PetscStackCallExternalVoid("ARPACKneupd",ARPACKneupd_(&fcomm,&rvec,howmny,ar->select,eps->eigr,pV,&ld,&sigmar,ar->workev,bmat,&n,which,&nev,&eps->tol,resid,&ncv,pV,&ld,iparam,ipntr,ar->workd,ar->workl,&ar->lworkl,ar->rwork,&info)); |
| 232 | #endif | ||
| 233 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
38 | PetscCheck(info==0,PetscObjectComm((PetscObject)eps),PETSC_ERR_LIB,"Error reported by ARPACK subroutine xxEUPD (%" PetscInt_FMT ")",info); |
| 234 | } | ||
| 235 | |||
| 236 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
38 | PetscCall(BVRestoreArray(eps->V,&pV)); |
| 237 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
38 | PetscCall(VecRestoreArray(eps->work[1],&resid)); |
| 238 |
1/2✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
|
38 | if (eps->nconv >= eps->nev) eps->reason = EPS_CONVERGED_TOL; |
| 239 | ✗ | else eps->reason = EPS_DIVERGED_ITS; | |
| 240 | |||
| 241 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
38 | PetscCall(VecDestroy(&x)); |
| 242 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
38 | PetscCall(VecDestroy(&y)); |
| 243 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
15 | PetscFunctionReturn(PETSC_SUCCESS); |
| 244 | } | ||
| 245 | |||
| 246 | 38 | static PetscErrorCode EPSBackTransform_ARPACK(EPS eps) | |
| 247 | { | ||
| 248 | 38 | PetscBool isSinv; | |
| 249 | |||
| 250 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
38 | PetscFunctionBegin; |
| 251 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
38 | PetscCall(PetscObjectTypeCompare((PetscObject)eps->st,STSINVERT,&isSinv)); |
| 252 |
6/8✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 3 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
38 | if (!isSinv) PetscCall(EPSBackTransform_Default(eps)); |
| 253 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
15 | PetscFunctionReturn(PETSC_SUCCESS); |
| 254 | } | ||
| 255 | |||
| 256 | 33 | static PetscErrorCode EPSReset_ARPACK(EPS eps) | |
| 257 | { | ||
| 258 | 33 | EPS_ARPACK *ar = (EPS_ARPACK*)eps->data; | |
| 259 | |||
| 260 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
33 | PetscFunctionBegin; |
| 261 |
5/8✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 3 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
33 | PetscCall(PetscFree(ar->workev)); |
| 262 |
5/8✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 3 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
33 | PetscCall(PetscFree(ar->workl)); |
| 263 |
5/8✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 3 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
33 | PetscCall(PetscFree(ar->select)); |
| 264 |
5/8✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 3 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
33 | PetscCall(PetscFree(ar->workd)); |
| 265 | #if defined(PETSC_USE_COMPLEX) | ||
| 266 |
5/8✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 1 times.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
|
12 | PetscCall(PetscFree(ar->rwork)); |
| 267 | #endif | ||
| 268 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
13 | PetscFunctionReturn(PETSC_SUCCESS); |
| 269 | } | ||
| 270 | |||
| 271 | 33 | static PetscErrorCode EPSDestroy_ARPACK(EPS eps) | |
| 272 | { | ||
| 273 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
33 | PetscFunctionBegin; |
| 274 |
5/8✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 3 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
33 | PetscCall(PetscFree(eps->data)); |
| 275 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
13 | PetscFunctionReturn(PETSC_SUCCESS); |
| 276 | } | ||
| 277 | |||
| 278 | /*MC | ||
| 279 | EPSARPACK - EPSARPACK = "arpack" - A wrapper to ARPACK {cite:p}`Leh98`. | ||
| 280 | |||
| 281 | Note: | ||
| 282 | We recommend using `EPSKRYLOVSCHUR` instead of this one, because both | ||
| 283 | methods are mathematically equivalent and Krylov-Schur may be more robust. | ||
| 284 | |||
| 285 | Level: beginner | ||
| 286 | |||
| 287 | .seealso: [](ch:eps), `EPS`, `EPSType`, `EPSSetType()` | ||
| 288 | M*/ | ||
| 289 | 33 | SLEPC_EXTERN PetscErrorCode EPSCreate_ARPACK(EPS eps) | |
| 290 | { | ||
| 291 | 33 | EPS_ARPACK *ctx; | |
| 292 | |||
| 293 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
33 | PetscFunctionBegin; |
| 294 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 3 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
33 | PetscCall(PetscNew(&ctx)); |
| 295 | 33 | eps->data = (void*)ctx; | |
| 296 | |||
| 297 | 33 | eps->ops->solve = EPSSolve_ARPACK; | |
| 298 | 33 | eps->ops->setup = EPSSetUp_ARPACK; | |
| 299 | 33 | eps->ops->setupsort = EPSSetUpSort_Basic; | |
| 300 | 33 | eps->ops->destroy = EPSDestroy_ARPACK; | |
| 301 | 33 | eps->ops->reset = EPSReset_ARPACK; | |
| 302 | 33 | eps->ops->backtransform = EPSBackTransform_ARPACK; | |
| 303 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
33 | PetscFunctionReturn(PETSC_SUCCESS); |
| 304 | } | ||
| 305 |