| 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 | #include <slepc/private/nepimpl.h> /*I "slepcnep.h" I*/ | ||
| 12 | #include <slepcblaslapack.h> | ||
| 13 | #include "nepdefl.h" | ||
| 14 | |||
| 15 | 694 | PetscErrorCode NEPDeflationGetInvariantPair(NEP_EXT_OP extop,BV *X,Mat *H) | |
| 16 | { | ||
| 17 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
694 | PetscFunctionBegin; |
| 18 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
694 | if (X) *X = extop->X; |
| 19 |
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.
|
694 | if (H) PetscCall(MatCreateSeqDense(PETSC_COMM_SELF,extop->szd+1,extop->szd+1,extop->H,H)); |
| 20 |
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.
|
131 | PetscFunctionReturn(PETSC_SUCCESS); |
| 21 | } | ||
| 22 | |||
| 23 | 1296 | static PetscErrorCode NEPDeflationExtendInvariantPair(NEP_EXT_OP extop,Vec u,PetscScalar lambda,PetscInt k) | |
| 24 | { | ||
| 25 | 1296 | Vec uu; | |
| 26 | 1296 | PetscInt ld,i; | |
| 27 | 1296 | PetscMPIInt np; | |
| 28 | 1296 | PetscReal norm; | |
| 29 | |||
| 30 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1296 | PetscFunctionBegin; |
| 31 |
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.
|
1296 | PetscCall(BVGetColumn(extop->X,k,&uu)); |
| 32 | 1296 | ld = extop->szd+1; | |
| 33 |
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.
|
1296 | PetscCall(NEPDeflationCopyToExtendedVec(extop,uu,extop->H+k*ld,u,PETSC_TRUE)); |
| 34 |
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.
|
1296 | PetscCall(BVRestoreColumn(extop->X,k,&uu)); |
| 35 |
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.
|
1296 | PetscCall(BVNormColumn(extop->X,k,NORM_2,&norm)); |
| 36 |
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.
|
1296 | PetscCall(BVScaleColumn(extop->X,k,1.0/norm)); |
| 37 |
14/28✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
|
1296 | PetscCallMPI(MPI_Comm_size(PetscObjectComm((PetscObject)u),&np)); |
| 38 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
2218 | for (i=0;i<k;i++) extop->H[k*ld+i] *= PetscSqrtReal(np)/norm; |
| 39 | 1296 | extop->H[k*(ld+1)] = lambda; | |
| 40 |
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.
|
1296 | PetscFunctionReturn(PETSC_SUCCESS); |
| 41 | } | ||
| 42 | |||
| 43 | 236 | PetscErrorCode NEPDeflationExtractEigenpair(NEP_EXT_OP extop,PetscInt k,Vec u,PetscScalar lambda,DS ds) | |
| 44 | { | ||
| 45 | 236 | Mat A,H; | |
| 46 | 236 | PetscInt ldh=extop->szd+1,ldds,k1=k+1; | |
| 47 | 236 | PetscScalar *eigr,*eigi,*t,*Z; | |
| 48 | 236 | Vec x; | |
| 49 | |||
| 50 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
236 | PetscFunctionBegin; |
| 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.
|
236 | PetscCall(NEPDeflationExtendInvariantPair(extop,u,lambda,k)); |
| 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.
|
236 | PetscCall(MatCreateSeqDense(PETSC_COMM_SELF,k1,k1,extop->H,&H)); |
| 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.
|
236 | PetscCall(MatDenseSetLDA(H,ldh)); |
| 54 |
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.
|
236 | PetscCall(PetscCalloc3(k1,&eigr,k1,&eigi,extop->szd,&t)); |
| 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.
|
236 | PetscCall(DSReset(ds)); |
| 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.
|
236 | PetscCall(DSSetType(ds,DSNHEP)); |
| 57 |
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.
|
236 | PetscCall(DSAllocate(ds,ldh)); |
| 58 |
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.
|
236 | PetscCall(DSGetLeadingDimension(ds,&ldds)); |
| 59 |
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.
|
236 | PetscCall(DSSetDimensions(ds,k1,0,k1)); |
| 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.
|
236 | PetscCall(DSGetMat(ds,DS_MAT_A,&A)); |
| 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.
|
236 | PetscCall(MatCopy(H,A,SAME_NONZERO_PATTERN)); |
| 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.
|
236 | PetscCall(DSRestoreMat(ds,DS_MAT_A,&A)); |
| 63 |
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.
|
236 | PetscCall(MatDestroy(&H)); |
| 64 |
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.
|
236 | PetscCall(DSSolve(ds,eigr,eigi)); |
| 65 |
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.
|
236 | PetscCall(DSVectors(ds,DS_MAT_X,&k,NULL)); |
| 66 |
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.
|
236 | PetscCall(DSGetArray(ds,DS_MAT_X,&Z)); |
| 67 |
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.
|
236 | PetscCall(BVMultColumn(extop->X,1.0,Z[k*ldds+k],k,Z+k*ldds)); |
| 68 |
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.
|
236 | PetscCall(DSRestoreArray(ds,DS_MAT_X,&Z)); |
| 69 |
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.
|
236 | PetscCall(BVGetColumn(extop->X,k,&x)); |
| 70 |
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.
|
236 | PetscCall(NEPDeflationCopyToExtendedVec(extop,x,t,u,PETSC_FALSE)); |
| 71 |
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.
|
236 | PetscCall(BVRestoreColumn(extop->X,k,&x)); |
| 72 |
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.
|
236 | PetscCall(PetscFree3(eigr,eigi,t)); |
| 73 |
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.
|
43 | PetscFunctionReturn(PETSC_SUCCESS); |
| 74 | } | ||
| 75 | |||
| 76 | 2871 | PetscErrorCode NEPDeflationCopyToExtendedVec(NEP_EXT_OP extop,Vec v,PetscScalar *a,Vec vex,PetscBool back) | |
| 77 | { | ||
| 78 | 2871 | PetscMPIInt np,rk,count; | |
| 79 | 2871 | PetscScalar *array1,*array2; | |
| 80 | 2871 | PetscInt nloc; | |
| 81 | |||
| 82 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
2871 | PetscFunctionBegin; |
| 83 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
2871 | if (extop->szd) { |
| 84 |
14/28✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
|
1871 | PetscCallMPI(MPI_Comm_rank(PetscObjectComm((PetscObject)vex),&rk)); |
| 85 |
14/28✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
|
1871 | PetscCallMPI(MPI_Comm_size(PetscObjectComm((PetscObject)vex),&np)); |
| 86 |
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.
|
1871 | PetscCall(BVGetSizes(extop->nep->V,&nloc,NULL,NULL)); |
| 87 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
1871 | if (v) { |
| 88 |
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.
|
1871 | PetscCall(VecGetArray(v,&array1)); |
| 89 |
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.
|
1871 | PetscCall(VecGetArray(vex,&array2)); |
| 90 |
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.
|
1871 | if (back) PetscCall(PetscArraycpy(array1,array2,nloc)); |
| 91 |
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.
|
430 | else PetscCall(PetscArraycpy(array2,array1,nloc)); |
| 92 |
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.
|
1871 | PetscCall(VecRestoreArray(v,&array1)); |
| 93 |
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.
|
1871 | PetscCall(VecRestoreArray(vex,&array2)); |
| 94 | } | ||
| 95 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1871 | if (a) { |
| 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.
|
1677 | PetscCall(VecGetArray(vex,&array2)); |
| 97 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1677 | if (back) { |
| 98 |
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.
|
1441 | PetscCall(PetscArraycpy(a,array2+nloc,extop->szd)); |
| 99 |
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.
|
1441 | PetscCall(PetscMPIIntCast(extop->szd,&count)); |
| 100 |
15/30✓ 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 taken 8 times.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✓ 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 not taken.
✓ Branch 23 taken 2 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.
|
2882 | PetscCallMPI(MPI_Bcast(a,count,MPIU_SCALAR,np-1,PetscObjectComm((PetscObject)vex))); |
| 101 | } else { | ||
| 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.
|
236 | PetscCall(PetscArraycpy(array2+nloc,a,extop->szd)); |
| 103 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
236 | PetscCall(PetscMPIIntCast(extop->szd,&count)); |
| 104 |
15/30✓ 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 taken 8 times.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✓ 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 not taken.
✓ Branch 23 taken 2 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.
|
472 | PetscCallMPI(MPI_Bcast(array2+nloc,count,MPIU_SCALAR,np-1,PetscObjectComm((PetscObject)vex))); |
| 105 | } | ||
| 106 |
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.
|
1677 | PetscCall(VecRestoreArray(vex,&array2)); |
| 107 | } | ||
| 108 | } else { | ||
| 109 |
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.
|
1000 | if (back) PetscCall(VecCopy(vex,v)); |
| 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.
|
500 | else PetscCall(VecCopy(v,vex)); |
| 111 | } | ||
| 112 |
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.
|
546 | PetscFunctionReturn(PETSC_SUCCESS); |
| 113 | } | ||
| 114 | |||
| 115 | 782 | PetscErrorCode NEPDeflationCreateVec(NEP_EXT_OP extop,Vec *v) | |
| 116 | { | ||
| 117 | 782 | PetscInt nloc; | |
| 118 | 782 | Vec u; | |
| 119 | 782 | VecType type; | |
| 120 | |||
| 121 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
782 | PetscFunctionBegin; |
| 122 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
782 | if (extop->szd) { |
| 123 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
268 | PetscCall(BVGetColumn(extop->nep->V,0,&u)); |
| 124 |
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.
|
268 | PetscCall(VecGetType(u,&type)); |
| 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.
|
268 | PetscCall(BVRestoreColumn(extop->nep->V,0,&u)); |
| 126 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
268 | PetscCall(VecCreate(PetscObjectComm((PetscObject)extop->nep),v)); |
| 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.
|
268 | PetscCall(VecSetType(*v,type)); |
| 128 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
268 | PetscCall(BVGetSizes(extop->nep->V,&nloc,NULL,NULL)); |
| 129 | 268 | nloc += extop->szd; | |
| 130 |
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.
|
268 | PetscCall(VecSetSizes(*v,nloc,PETSC_DECIDE)); |
| 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.
|
514 | } else PetscCall(BVCreateVec(extop->nep->V,v)); |
| 132 |
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.
|
146 | PetscFunctionReturn(PETSC_SUCCESS); |
| 133 | } | ||
| 134 | |||
| 135 | 170 | PetscErrorCode NEPDeflationCreateBV(NEP_EXT_OP extop,PetscInt sz,BV *V) | |
| 136 | { | ||
| 137 | 170 | PetscInt nloc; | |
| 138 | 170 | BVType type; | |
| 139 | 170 | BVOrthogType otype; | |
| 140 | 170 | BVOrthogRefineType oref; | |
| 141 | 170 | PetscReal oeta; | |
| 142 | 170 | BVOrthogBlockType oblock; | |
| 143 | 170 | NEP nep=extop->nep; | |
| 144 | 170 | VecType vtype; | |
| 145 | |||
| 146 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
170 | PetscFunctionBegin; |
| 147 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
170 | if (extop->szd) { |
| 148 |
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.
|
30 | PetscCall(BVGetSizes(nep->V,&nloc,NULL,NULL)); |
| 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.
|
30 | PetscCall(BVCreate(PetscObjectComm((PetscObject)nep),V)); |
| 150 |
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.
|
30 | PetscCall(BVSetSizes(*V,nloc+extop->szd,PETSC_DECIDE,sz)); |
| 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.
|
30 | PetscCall(BVGetType(nep->V,&type)); |
| 152 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
30 | PetscCall(BVSetType(*V,type)); |
| 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.
|
30 | PetscCall(BVGetVecType(nep->V,&vtype)); |
| 154 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
30 | PetscCall(BVSetVecType(*V,vtype)); |
| 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.
|
30 | PetscCall(BVGetOrthogonalization(nep->V,&otype,&oref,&oeta,&oblock)); |
| 156 |
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.
|
30 | PetscCall(BVSetOrthogonalization(*V,otype,oref,oeta,oblock)); |
| 157 |
2/4✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
30 | PetscCall(PetscObjectStateIncrease((PetscObject)*V)); |
| 158 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
140 | } else PetscCall(BVDuplicateResize(nep->V,sz,V)); |
| 159 |
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.
|
34 | PetscFunctionReturn(PETSC_SUCCESS); |
| 160 | } | ||
| 161 | |||
| 162 | 170 | PetscErrorCode NEPDeflationSetRandomVec(NEP_EXT_OP extop,Vec v) | |
| 163 | { | ||
| 164 | 170 | PetscInt n,next,i; | |
| 165 | 170 | PetscRandom rand; | |
| 166 | 170 | PetscScalar *array; | |
| 167 | 170 | PetscMPIInt nn,np; | |
| 168 | |||
| 169 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
170 | PetscFunctionBegin; |
| 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.
|
170 | PetscCall(BVGetRandomContext(extop->nep->V,&rand)); |
| 171 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
170 | PetscCall(VecSetRandom(v,rand)); |
| 172 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
170 | if (extop->szd) { |
| 173 |
14/28✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
|
170 | PetscCallMPI(MPI_Comm_size(PetscObjectComm((PetscObject)v),&np)); |
| 174 |
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.
|
170 | PetscCall(BVGetSizes(extop->nep->V,&n,NULL,NULL)); |
| 175 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
170 | PetscCall(VecGetLocalSize(v,&next)); |
| 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.
|
170 | PetscCall(VecGetArray(v,&array)); |
| 177 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
250 | for (i=n+extop->n;i<next;i++) array[i] = 0.0; |
| 178 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
420 | for (i=n;i<n+extop->n;i++) array[i] /= PetscSqrtReal(np); |
| 179 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
170 | PetscCall(PetscMPIIntCast(extop->n,&nn)); |
| 180 |
15/30✓ 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 taken 8 times.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✓ 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 not taken.
✓ Branch 23 taken 2 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.
|
340 | PetscCallMPI(MPI_Bcast(array+n,nn,MPIU_SCALAR,0,PetscObjectComm((PetscObject)v))); |
| 181 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
170 | PetscCall(VecRestoreArray(v,&array)); |
| 182 | } | ||
| 183 |
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.
|
34 | PetscFunctionReturn(PETSC_SUCCESS); |
| 184 | } | ||
| 185 | |||
| 186 | 366 | static PetscErrorCode NEPDeflationEvaluateBasisMat(NEP_EXT_OP extop,PetscInt idx,PetscBool hat,PetscScalar *bval,PetscScalar *Hj,PetscScalar *Hjprev) | |
| 187 | { | ||
| 188 | 366 | PetscInt i,k,n=extop->n,ldhj=extop->szd,ldh=extop->szd+1; | |
| 189 | 366 | PetscScalar sone=1.0,zero=0.0; | |
| 190 | 366 | PetscBLASInt ldh_,ldhj_,n_; | |
| 191 | |||
| 192 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
366 | PetscFunctionBegin; |
| 193 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
366 | i = (idx<0)?extop->szd*extop->szd*(-idx):extop->szd*extop->szd; |
| 194 |
4/6✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
366 | PetscCall(PetscArrayzero(Hj,i)); |
| 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.
|
366 | PetscCall(PetscBLASIntCast(ldhj+1,&ldh_)); |
| 196 |
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.
|
366 | PetscCall(PetscBLASIntCast(ldhj,&ldhj_)); |
| 197 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
366 | PetscCall(PetscBLASIntCast(n,&n_)); |
| 198 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
366 | if (idx<1) { |
| 199 |
3/4✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
|
922 | if (!hat) for (i=0;i<extop->n;i++) Hj[i+i*ldhj] = 1.0; |
| 200 | ✗ | else for (i=0;i<extop->n;i++) Hj[i+i*ldhj] = 0.0; | |
| 201 | } else { | ||
| 202 | ✗ | for (i=0;i<n;i++) extop->H[i*ldh+i] -= extop->bc[idx-1]; | |
| 203 | ✗ | PetscCallBLAS("BLASgemm",BLASgemm_("N","N",&n_,&n_,&n_,&sone,extop->H,&ldh_,Hjprev,&ldhj_,&zero,Hj,&ldhj_)); | |
| 204 | ✗ | for (i=0;i<n;i++) extop->H[i*ldh+i] += extop->bc[idx-1]; | |
| 205 | ✗ | if (hat) for (i=0;i<n;i++) Hj[i*(ldhj+1)] += bval[idx-1]; | |
| 206 | } | ||
| 207 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
366 | if (idx<0) { |
| 208 | 366 | idx = -idx; | |
| 209 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
366 | for (k=1;k<idx;k++) { |
| 210 | ✗ | for (i=0;i<n;i++) extop->H[i*ldh+i] -= extop->bc[k-1]; | |
| 211 | ✗ | PetscCallBLAS("BLASgemm",BLASgemm_("N","N",&n_,&n_,&n_,&sone,extop->H,&ldh_,Hj+(k-1)*ldhj*ldhj,&ldhj_,&zero,Hj+k*ldhj*ldhj,&ldhj_)); | |
| 212 | ✗ | for (i=0;i<n;i++) extop->H[i*ldh+i] += extop->bc[k-1]; | |
| 213 | ✗ | if (hat) for (i=0;i<n;i++) Hj[i*(ldhj+1)] += bval[k-1]; | |
| 214 | } | ||
| 215 | } | ||
| 216 |
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.
|
69 | PetscFunctionReturn(PETSC_SUCCESS); |
| 217 | } | ||
| 218 | |||
| 219 | 1060 | PetscErrorCode NEPDeflationLocking(NEP_EXT_OP extop,Vec u,PetscScalar lambda) | |
| 220 | { | ||
| 221 | 1060 | PetscInt i; | |
| 222 | |||
| 223 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1060 | PetscFunctionBegin; |
| 224 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1060 | PetscCall(NEPDeflationExtendInvariantPair(extop,u,lambda,extop->n)); |
| 225 | 1060 | extop->n++; | |
| 226 |
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.
|
1060 | PetscCall(BVSetActiveColumns(extop->X,0,extop->n)); |
| 227 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1060 | if (extop->n <= extop->szd) { |
| 228 | /* update XpX */ | ||
| 229 |
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.
|
366 | PetscCall(BVDotColumn(extop->X,extop->n-1,extop->XpX+(extop->n-1)*extop->szd)); |
| 230 | 366 | extop->XpX[(extop->n-1)*(1+extop->szd)] = 1.0; | |
| 231 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
556 | for (i=0;i<extop->n-1;i++) extop->XpX[i*extop->szd+extop->n-1] = PetscConj(extop->XpX[(extop->n-1)*extop->szd+i]); |
| 232 | /* determine minimality index */ | ||
| 233 | 366 | extop->midx = PetscMin(extop->max_midx,extop->n); | |
| 234 | /* polynominal basis coefficients */ | ||
| 235 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
732 | for (i=0;i<extop->midx;i++) extop->bc[i] = extop->nep->target; |
| 236 | /* evaluate the polynomial basis in H */ | ||
| 237 |
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.
|
366 | PetscCall(NEPDeflationEvaluateBasisMat(extop,-extop->midx,PETSC_FALSE,NULL,extop->Hj,NULL)); |
| 238 | } | ||
| 239 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
200 | PetscFunctionReturn(PETSC_SUCCESS); |
| 240 | } | ||
| 241 | |||
| 242 | 7863 | static PetscErrorCode NEPDeflationEvaluateHatFunction(NEP_EXT_OP extop, PetscInt idx,PetscScalar lambda,PetscScalar *y,PetscScalar *hfj,PetscScalar *hfjp,PetscInt ld) | |
| 243 | { | ||
| 244 | 7863 | PetscInt i,j,k,off,ini,fin,sz,ldh,n=extop->n; | |
| 245 | 7863 | Mat A,B; | |
| 246 | 7863 | PetscScalar *array; | |
| 247 | 7863 | const PetscScalar *barray; | |
| 248 | |||
| 249 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
7863 | PetscFunctionBegin; |
| 250 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
7863 | if (idx<0) {ini = 0; fin = extop->nep->nt;} |
| 251 | 4785 | else {ini = idx; fin = idx+1;} | |
| 252 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
7863 | if (y) sz = hfjp?n+2:n+1; |
| 253 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
7863 | else sz = hfjp?3*n:2*n; |
| 254 | 7863 | ldh = extop->szd+1; | |
| 255 |
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.
|
7863 | PetscCall(MatCreateSeqDense(PETSC_COMM_SELF,sz,sz,NULL,&A)); |
| 256 |
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.
|
7863 | PetscCall(MatCreateSeqDense(PETSC_COMM_SELF,sz,sz,NULL,&B)); |
| 257 |
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.
|
7863 | PetscCall(MatDenseGetArray(A,&array)); |
| 258 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
19576 | for (j=0;j<n;j++) |
| 259 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
31234 | for (i=0;i<n;i++) array[j*sz+i] = extop->H[j*ldh+i]; |
| 260 |
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.
|
7863 | PetscCall(MatDenseRestoreArrayWrite(A,&array)); |
| 261 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
7863 | if (y) { |
| 262 | ✗ | PetscCall(MatDenseGetArray(A,&array)); | |
| 263 | ✗ | array[extop->n*(sz+1)] = lambda; | |
| 264 | ✗ | if (hfjp) { array[(n+1)*sz+n] = 1.0; array[(n+1)*sz+n+1] = lambda;} | |
| 265 | ✗ | for (i=0;i<n;i++) array[n*sz+i] = y[i]; | |
| 266 | ✗ | PetscCall(MatDenseRestoreArrayWrite(A,&array)); | |
| 267 | ✗ | for (j=ini;j<fin;j++) { | |
| 268 | ✗ | PetscCall(FNEvaluateFunctionMat(extop->nep->f[j],A,B)); | |
| 269 | ✗ | PetscCall(MatDenseGetArrayRead(B,&barray)); | |
| 270 | ✗ | for (i=0;i<n;i++) hfj[j*ld+i] = barray[n*sz+i]; | |
| 271 | ✗ | if (hfjp) for (i=0;i<n;i++) hfjp[j*ld+i] = barray[(n+1)*sz+i]; | |
| 272 | ✗ | PetscCall(MatDenseRestoreArrayRead(B,&barray)); | |
| 273 | } | ||
| 274 | } else { | ||
| 275 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
7863 | off = idx<0?ld*n:0; |
| 276 |
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.
|
7863 | PetscCall(MatDenseGetArray(A,&array)); |
| 277 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
19576 | for (k=0;k<n;k++) { |
| 278 | 11713 | array[(n+k)*sz+k] = 1.0; | |
| 279 | 11713 | array[(n+k)*sz+n+k] = lambda; | |
| 280 | } | ||
| 281 |
3/4✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
|
19576 | if (hfjp) for (k=0;k<n;k++) { |
| 282 | 11713 | array[(2*n+k)*sz+n+k] = 1.0; | |
| 283 | 11713 | array[(2*n+k)*sz+2*n+k] = lambda; | |
| 284 | } | ||
| 285 |
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.
|
7863 | PetscCall(MatDenseRestoreArray(A,&array)); |
| 286 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
21852 | for (j=ini;j<fin;j++) { |
| 287 |
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.
|
13989 | PetscCall(FNEvaluateFunctionMat(extop->nep->f[j],A,B)); |
| 288 |
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.
|
13989 | PetscCall(MatDenseGetArrayRead(B,&barray)); |
| 289 |
4/4✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
|
69411 | for (i=0;i<n;i++) for (k=0;k<n;k++) hfj[j*off+i*ld+k] = barray[n*sz+i*sz+k]; |
| 290 |
5/6✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
✓ Branch 4 taken 10 times.
✓ Branch 5 taken 10 times.
|
69411 | if (hfjp) for (k=0;k<n;k++) for (i=0;i<n;i++) hfjp[j*off+i*ld+k] = barray[2*n*sz+i*sz+k]; |
| 291 |
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.
|
13989 | PetscCall(MatDenseRestoreArrayRead(B,&barray)); |
| 292 | } | ||
| 293 | } | ||
| 294 |
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.
|
7863 | PetscCall(MatDestroy(&A)); |
| 295 |
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.
|
7863 | PetscCall(MatDestroy(&B)); |
| 296 |
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.
|
1566 | PetscFunctionReturn(PETSC_SUCCESS); |
| 297 | } | ||
| 298 | |||
| 299 | 40702 | static PetscErrorCode MatMult_NEPDeflation(Mat M,Vec x,Vec y) | |
| 300 | { | ||
| 301 | 40702 | NEP_DEF_MATSHELL *matctx; | |
| 302 | 40702 | NEP_EXT_OP extop; | |
| 303 | 40702 | Vec x1,y1; | |
| 304 | 40702 | PetscScalar *yy,sone=1.0,zero=0.0; | |
| 305 | 40702 | const PetscScalar *xx; | |
| 306 | 40702 | PetscInt nloc,i; | |
| 307 | 40702 | PetscMPIInt np; | |
| 308 | 40702 | PetscBLASInt n_,one=1,szd_; | |
| 309 | |||
| 310 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
40702 | PetscFunctionBegin; |
| 311 |
14/28✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
|
40702 | PetscCallMPI(MPI_Comm_size(PetscObjectComm((PetscObject)M),&np)); |
| 312 |
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.
|
40702 | PetscCall(MatShellGetContext(M,&matctx)); |
| 313 | 40702 | extop = matctx->extop; | |
| 314 |
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.
|
40702 | if (extop->ref) PetscCall(VecZeroEntries(y)); |
| 315 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
40702 | if (extop->szd) { |
| 316 | 22218 | x1 = matctx->w[0]; y1 = matctx->w[1]; | |
| 317 |
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.
|
22218 | PetscCall(VecGetArrayRead(x,&xx)); |
| 318 |
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.
|
22218 | PetscCall(VecPlaceArray(x1,xx)); |
| 319 |
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.
|
22218 | PetscCall(VecGetArray(y,&yy)); |
| 320 |
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.
|
22218 | PetscCall(VecPlaceArray(y1,yy)); |
| 321 |
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.
|
22218 | PetscCall(MatMult(matctx->T,x1,y1)); |
| 322 |
4/4✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
|
22218 | if (!extop->ref && extop->n) { |
| 323 |
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.
|
11378 | PetscCall(VecGetLocalSize(x1,&nloc)); |
| 324 | /* copy for avoiding warning of constant array xx */ | ||
| 325 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
27619 | for (i=0;i<extop->n;i++) matctx->work[i] = xx[nloc+i]*PetscSqrtReal(np); |
| 326 |
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.
|
11378 | PetscCall(BVMultVec(matctx->U,1.0,1.0,y1,matctx->work)); |
| 327 |
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.
|
11378 | PetscCall(BVDotVec(extop->X,x1,matctx->work)); |
| 328 |
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.
|
11378 | PetscCall(PetscBLASIntCast(extop->n,&n_)); |
| 329 |
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.
|
11378 | PetscCall(PetscBLASIntCast(extop->szd,&szd_)); |
| 330 |
10/20✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✓ 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 not taken.
|
11378 | PetscCallBLAS("BLASgemv",BLASgemv_("N",&n_,&n_,&sone,matctx->A,&szd_,matctx->work,&one,&zero,yy+nloc,&one)); |
| 331 |
10/20✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✓ 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 not taken.
|
11378 | PetscCallBLAS("BLASgemv",BLASgemv_("N",&n_,&n_,&sone,matctx->B,&szd_,xx+nloc,&one,&sone,yy+nloc,&one)); |
| 332 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
27619 | for (i=0;i<extop->n;i++) yy[nloc+i] /= PetscSqrtReal(np); |
| 333 | } | ||
| 334 |
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.
|
22218 | PetscCall(VecResetArray(x1)); |
| 335 |
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.
|
22218 | PetscCall(VecRestoreArrayRead(x,&xx)); |
| 336 |
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.
|
22218 | PetscCall(VecResetArray(y1)); |
| 337 |
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.
|
22218 | PetscCall(VecRestoreArray(y,&yy)); |
| 338 |
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.
|
18484 | } else PetscCall(MatMult(matctx->T,x,y)); |
| 339 |
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.
|
7769 | PetscFunctionReturn(PETSC_SUCCESS); |
| 340 | } | ||
| 341 | |||
| 342 | ✗ | static PetscErrorCode MatCreateVecs_NEPDeflation(Mat M,Vec *right,Vec *left) | |
| 343 | { | ||
| 344 | ✗ | NEP_DEF_MATSHELL *matctx; | |
| 345 | |||
| 346 | ✗ | PetscFunctionBegin; | |
| 347 | ✗ | PetscCall(MatShellGetContext(M,&matctx)); | |
| 348 | ✗ | if (right) PetscCall(VecDuplicate(matctx->w[0],right)); | |
| 349 | ✗ | if (left) PetscCall(VecDuplicate(matctx->w[0],left)); | |
| 350 | ✗ | PetscFunctionReturn(PETSC_SUCCESS); | |
| 351 | } | ||
| 352 | |||
| 353 | 1654 | static PetscErrorCode MatDestroy_NEPDeflation(Mat M) | |
| 354 | { | ||
| 355 | 1654 | NEP_DEF_MATSHELL *matctx; | |
| 356 | |||
| 357 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1654 | PetscFunctionBegin; |
| 358 |
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.
|
1654 | PetscCall(MatShellGetContext(M,&matctx)); |
| 359 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1654 | if (matctx->extop->szd) { |
| 360 |
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.
|
448 | PetscCall(BVDestroy(&matctx->U)); |
| 361 |
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.
|
448 | PetscCall(PetscFree4(matctx->hfj,matctx->work,matctx->A,matctx->B)); |
| 362 |
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.
|
448 | PetscCall(VecDestroy(&matctx->w[0])); |
| 363 |
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.
|
448 | PetscCall(VecDestroy(&matctx->w[1])); |
| 364 | } | ||
| 365 |
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.
|
1654 | if (matctx->P != matctx->T) PetscCall(MatDestroy(&matctx->P)); |
| 366 |
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.
|
1654 | PetscCall(MatDestroy(&matctx->T)); |
| 367 |
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.
|
1654 | PetscCall(PetscFree(matctx)); |
| 368 |
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.
|
310 | PetscFunctionReturn(PETSC_SUCCESS); |
| 369 | } | ||
| 370 | |||
| 371 | 9538 | static PetscErrorCode NEPDeflationEvaluateBasis(NEP_EXT_OP extop,PetscScalar lambda,PetscInt n,PetscScalar *val,PetscBool jacobian) | |
| 372 | { | ||
| 373 | 9538 | PetscScalar p; | |
| 374 | 9538 | PetscInt i; | |
| 375 | |||
| 376 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
9538 | PetscFunctionBegin; |
| 377 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
9538 | if (!jacobian) { |
| 378 | 5547 | val[0] = 1.0; | |
| 379 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
7989 | for (i=1;i<extop->n;i++) val[i] = val[i-1]*(lambda-extop->bc[i-1]); |
| 380 | } else { | ||
| 381 | 3991 | val[0] = 0.0; | |
| 382 | 3991 | p = 1.0; | |
| 383 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
5658 | for (i=1;i<extop->n;i++) { |
| 384 | 1667 | val[i] = val[i-1]*(lambda-extop->bc[i-1])+p; | |
| 385 | 1667 | p *= (lambda-extop->bc[i-1]); | |
| 386 | } | ||
| 387 | } | ||
| 388 |
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.
|
9538 | PetscFunctionReturn(PETSC_SUCCESS); |
| 389 | } | ||
| 390 | |||
| 391 | 29473 | static PetscErrorCode NEPDeflationComputeShellMat(NEP_EXT_OP extop,PetscScalar lambda,PetscBool jacobian,Mat *M) | |
| 392 | { | ||
| 393 | 29473 | NEP_DEF_MATSHELL *matctx,*matctxC; | |
| 394 | 29473 | PetscInt nloc,mloc,n=extop->n,j,i,szd=extop->szd,ldh=szd+1,k; | |
| 395 | 29473 | Mat F,Mshell,Mcomp; | |
| 396 | 29473 | PetscBool ini=PETSC_FALSE; | |
| 397 | 29473 | PetscScalar *hf,*hfj,*hfjp,sone=1.0,*hH,*hHprev,*pts,*B,*A,*Hj=extop->Hj,*basisv,zero=0.0; | |
| 398 | 29473 | PetscBLASInt n_,info,szd_; | |
| 399 | 29473 | size_t len; | |
| 400 | |||
| 401 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
29473 | PetscFunctionBegin; |
| 402 |
4/4✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
|
29473 | if (!M) Mshell = jacobian?extop->MJ:extop->MF; |
| 403 | 1156 | else Mshell = *M; | |
| 404 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
29473 | Mcomp = jacobian?extop->MF:extop->MJ; |
| 405 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
29473 | if (!Mshell) { |
| 406 | 1654 | ini = PETSC_TRUE; | |
| 407 |
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.
|
1654 | PetscCall(PetscNew(&matctx)); |
| 408 |
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.
|
1654 | PetscCall(MatGetLocalSize(extop->nep->function,&mloc,&nloc)); |
| 409 | 1654 | nloc += szd; mloc += szd; | |
| 410 |
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.
|
1654 | PetscCall(MatCreateShell(PetscObjectComm((PetscObject)extop->nep),nloc,mloc,PETSC_DETERMINE,PETSC_DETERMINE,matctx,&Mshell)); |
| 411 |
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.
|
1654 | PetscCall(MatShellSetOperation(Mshell,MATOP_MULT,(PetscErrorCodeFn*)MatMult_NEPDeflation)); |
| 412 |
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.
|
1654 | PetscCall(MatShellSetOperation(Mshell,MATOP_CREATE_VECS,(PetscErrorCodeFn*)MatCreateVecs_NEPDeflation)); |
| 413 |
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.
|
1654 | PetscCall(MatShellSetOperation(Mshell,MATOP_DESTROY,(PetscErrorCodeFn*)MatDestroy_NEPDeflation)); |
| 414 | 1654 | matctx->nep = extop->nep; | |
| 415 | 1654 | matctx->extop = extop; | |
| 416 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1654 | if (!M) { |
| 417 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1218 | if (jacobian) { matctx->jacob = PETSC_TRUE; matctx->T = extop->nep->jacobian; extop->MJ = Mshell; } |
| 418 | 694 | else { matctx->jacob = PETSC_FALSE; matctx->T = extop->nep->function; extop->MF = Mshell; } | |
| 419 |
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.
|
1218 | PetscCall(PetscObjectReference((PetscObject)matctx->T)); |
| 420 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1218 | if (!jacobian) { |
| 421 |
4/4✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
|
694 | if (extop->nep->function_pre && extop->nep->function_pre != extop->nep->function) { |
| 422 | 20 | matctx->P = extop->nep->function_pre; | |
| 423 |
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.
|
20 | PetscCall(PetscObjectReference((PetscObject)matctx->P)); |
| 424 | 674 | } else matctx->P = matctx->T; | |
| 425 | } | ||
| 426 | } else { | ||
| 427 | 436 | matctx->jacob = jacobian; | |
| 428 |
6/8✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
436 | PetscCall(MatDuplicate(jacobian?extop->nep->jacobian:extop->nep->function,MAT_DO_NOT_COPY_VALUES,&matctx->T)); |
| 429 | 436 | *M = Mshell; | |
| 430 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
436 | if (!jacobian) { |
| 431 |
3/10✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
|
436 | if (extop->nep->function_pre && extop->nep->function_pre != extop->nep->function) PetscCall(MatDuplicate(extop->nep->function_pre,MAT_DO_NOT_COPY_VALUES,&matctx->P)); |
| 432 | 436 | else matctx->P = matctx->T; | |
| 433 | } | ||
| 434 | } | ||
| 435 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1654 | if (szd) { |
| 436 |
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.
|
448 | PetscCall(BVCreateVec(extop->nep->V,matctx->w)); |
| 437 |
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.
|
448 | PetscCall(VecDuplicate(matctx->w[0],matctx->w+1)); |
| 438 |
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.
|
448 | PetscCall(BVDuplicateResize(extop->nep->V,szd,&matctx->U)); |
| 439 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
448 | len = extop->simpU? (size_t)2*szd*szd: (size_t)2*szd*szd*extop->nep->nt; |
| 440 |
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.
|
448 | PetscCall(PetscMalloc4(len,&matctx->hfj,szd,&matctx->work,szd*szd,&matctx->A,szd*szd,&matctx->B)); |
| 441 | } | ||
| 442 |
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.
|
27819 | } else PetscCall(MatShellGetContext(Mshell,&matctx)); |
| 443 |
4/4✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
|
27819 | if (ini || matctx->theta != lambda || matctx->n != extop->n) { |
| 444 |
4/4✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
|
23034 | if (ini || matctx->theta != lambda) { |
| 445 |
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.
|
23931 | if (jacobian) PetscCall(NEPComputeJacobian(extop->nep,lambda,matctx->T)); |
| 446 |
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.
|
13781 | else PetscCall(NEPComputeFunction(extop->nep,lambda,matctx->T,matctx->P)); |
| 447 | } | ||
| 448 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
24001 | if (n) { |
| 449 | 7168 | matctx->hfjset = PETSC_FALSE; | |
| 450 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
7168 | if (!extop->simpU) { |
| 451 | /* likely hfjp has been already computed */ | ||
| 452 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
5362 | if (Mcomp) { |
| 453 |
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.
|
4982 | PetscCall(MatShellGetContext(Mcomp,&matctxC)); |
| 454 |
5/6✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
|
4982 | if (matctxC->hfjset && matctxC->theta == lambda && matctxC->n == extop->n) { |
| 455 |
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.
|
2284 | PetscCall(PetscArraycpy(matctx->hfj,matctxC->hfj,2*extop->szd*extop->szd*extop->nep->nt)); |
| 456 | 2284 | matctx->hfjset = PETSC_TRUE; | |
| 457 | } | ||
| 458 | } | ||
| 459 | 5362 | hfj = matctx->hfj; hfjp = matctx->hfj+extop->szd*extop->szd*extop->nep->nt; | |
| 460 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
5362 | if (!matctx->hfjset) { |
| 461 |
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.
|
3078 | PetscCall(NEPDeflationEvaluateHatFunction(extop,-1,lambda,NULL,hfj,hfjp,n)); |
| 462 | 3078 | matctx->hfjset = PETSC_TRUE; | |
| 463 | } | ||
| 464 |
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.
|
5362 | PetscCall(BVSetActiveColumns(matctx->U,0,n)); |
| 465 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
5362 | hf = jacobian?hfjp:hfj; |
| 466 |
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.
|
5362 | PetscCall(MatCreateSeqDense(PETSC_COMM_SELF,n,n,hf,&F)); |
| 467 |
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.
|
5362 | PetscCall(BVMatMult(extop->X,extop->nep->A[0],matctx->U)); |
| 468 |
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.
|
5362 | PetscCall(BVMultInPlace(matctx->U,F,0,n)); |
| 469 |
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.
|
5362 | PetscCall(BVSetActiveColumns(extop->W,0,extop->n)); |
| 470 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
16036 | for (j=1;j<extop->nep->nt;j++) { |
| 471 |
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.
|
10674 | PetscCall(BVMatMult(extop->X,extop->nep->A[j],extop->W)); |
| 472 |
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.
|
10674 | PetscCall(MatDensePlaceArray(F,hf+j*n*n)); |
| 473 |
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.
|
10674 | PetscCall(BVMult(matctx->U,1.0,1.0,extop->W,F)); |
| 474 |
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.
|
10674 | PetscCall(MatDenseResetArray(F)); |
| 475 | } | ||
| 476 |
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.
|
5362 | PetscCall(MatDestroy(&F)); |
| 477 | } else { | ||
| 478 | 1806 | hfj = matctx->hfj; | |
| 479 |
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.
|
1806 | PetscCall(BVSetActiveColumns(matctx->U,0,n)); |
| 480 |
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.
|
1806 | PetscCall(BVMatMult(extop->X,matctx->T,matctx->U)); |
| 481 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
4075 | for (j=0;j<n;j++) { |
| 482 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
5464 | for (i=0;i<n;i++) hfj[j*n+i] = -extop->H[j*ldh+i]; |
| 483 | 2269 | hfj[j*(n+1)] += lambda; | |
| 484 | } | ||
| 485 |
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.
|
1806 | PetscCall(PetscBLASIntCast(n,&n_)); |
| 486 |
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.
|
1806 | PetscCall(PetscFPTrapPush(PETSC_FP_TRAP_OFF)); |
| 487 |
10/20✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✓ 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 not taken.
|
1806 | PetscCallBLAS("LAPACKtrtri",LAPACKtrtri_("U","N",&n_,hfj,&n_,&info)); |
| 488 |
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.
|
1806 | PetscCall(PetscFPTrapPop()); |
| 489 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
1806 | SlepcCheckLapackInfo("trtri",info); |
| 490 |
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.
|
1806 | PetscCall(MatCreateSeqDense(PETSC_COMM_SELF,n,n,hfj,&F)); |
| 491 |
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.
|
1806 | PetscCall(BVMultInPlace(matctx->U,F,0,n)); |
| 492 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1806 | if (jacobian) { |
| 493 |
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.
|
737 | PetscCall(NEPDeflationComputeFunction(extop,lambda,NULL)); |
| 494 |
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.
|
737 | PetscCall(MatShellGetContext(extop->MF,&matctxC)); |
| 495 |
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.
|
737 | PetscCall(BVMult(matctx->U,-1.0,1.0,matctxC->U,F)); |
| 496 | } | ||
| 497 |
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.
|
1806 | PetscCall(MatDestroy(&F)); |
| 498 | } | ||
| 499 |
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.
|
7168 | PetscCall(PetscCalloc3(n,&basisv,szd*szd,&hH,szd*szd,&hHprev)); |
| 500 |
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.
|
7168 | PetscCall(NEPDeflationEvaluateBasis(extop,lambda,n,basisv,jacobian)); |
| 501 | 7168 | A = matctx->A; | |
| 502 |
4/6✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
7168 | PetscCall(PetscArrayzero(A,szd*szd)); |
| 503 |
4/4✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
|
13082 | if (!jacobian) for (i=0;i<n;i++) A[i*(szd+1)] = 1.0; |
| 504 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
17300 | for (j=0;j<n;j++) |
| 505 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
26372 | for (i=0;i<n;i++) |
| 506 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
16240 | for (k=1;k<extop->midx;k++) A[j*szd+i] += basisv[k]*PetscConj(Hj[k*szd*szd+i*szd+j]); |
| 507 |
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.
|
7168 | PetscCall(PetscBLASIntCast(n,&n_)); |
| 508 |
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.
|
7168 | PetscCall(PetscBLASIntCast(szd,&szd_)); |
| 509 | 7168 | B = matctx->B; | |
| 510 |
4/6✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
7168 | PetscCall(PetscArrayzero(B,szd*szd)); |
| 511 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
7168 | for (i=1;i<extop->midx;i++) { |
| 512 | ✗ | PetscCall(NEPDeflationEvaluateBasisMat(extop,i,PETSC_TRUE,basisv,hH,hHprev)); | |
| 513 | ✗ | PetscCallBLAS("BLASgemm",BLASgemm_("N","N",&n_,&n_,&n_,&sone,extop->XpX,&szd_,hH,&szd_,&zero,hHprev,&szd_)); | |
| 514 | ✗ | PetscCallBLAS("BLASgemm",BLASgemm_("C","N",&n_,&n_,&n_,&sone,extop->Hj+szd*szd*i,&szd_,hHprev,&szd_,&sone,B,&szd_)); | |
| 515 | ✗ | pts = hHprev; hHprev = hH; hH = pts; | |
| 516 | } | ||
| 517 |
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.
|
7168 | PetscCall(PetscFree3(basisv,hH,hHprev)); |
| 518 | } | ||
| 519 | 24001 | matctx->theta = lambda; | |
| 520 | 24001 | matctx->n = extop->n; | |
| 521 | } | ||
| 522 |
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.
|
5628 | PetscFunctionReturn(PETSC_SUCCESS); |
| 523 | } | ||
| 524 | |||
| 525 | 17253 | PetscErrorCode NEPDeflationComputeFunction(NEP_EXT_OP extop,PetscScalar lambda,Mat *F) | |
| 526 | { | ||
| 527 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
17253 | PetscFunctionBegin; |
| 528 |
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.
|
17253 | PetscCall(NEPDeflationComputeShellMat(extop,lambda,PETSC_FALSE,NULL)); |
| 529 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
17253 | if (F) *F = extop->MF; |
| 530 |
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.
|
3299 | PetscFunctionReturn(PETSC_SUCCESS); |
| 531 | } | ||
| 532 | |||
| 533 | 10150 | PetscErrorCode NEPDeflationComputeJacobian(NEP_EXT_OP extop,PetscScalar lambda,Mat *J) | |
| 534 | { | ||
| 535 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
10150 | PetscFunctionBegin; |
| 536 |
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.
|
10150 | PetscCall(NEPDeflationComputeShellMat(extop,lambda,PETSC_TRUE,NULL)); |
| 537 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
10150 | if (J) *J = extop->MJ; |
| 538 |
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.
|
1932 | PetscFunctionReturn(PETSC_SUCCESS); |
| 539 | } | ||
| 540 | |||
| 541 | 2070 | PetscErrorCode NEPDeflationSolveSetUp(NEP_EXT_OP extop,PetscScalar lambda) | |
| 542 | { | ||
| 543 | 2070 | NEP_DEF_MATSHELL *matctx; | |
| 544 | 2070 | NEP_DEF_FUN_SOLVE solve; | |
| 545 | 2070 | PetscInt i,j,n=extop->n; | |
| 546 | 2070 | Vec u,tu; | |
| 547 | 2070 | Mat F; | |
| 548 | 2070 | PetscScalar snone=-1.0,sone=1.0; | |
| 549 | 2070 | PetscBLASInt n_,szd_,ldh_,*p,info; | |
| 550 | 2070 | Mat Mshell; | |
| 551 | |||
| 552 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
2070 | PetscFunctionBegin; |
| 553 | 2070 | solve = extop->solve; | |
| 554 |
3/4✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
|
2070 | if (lambda!=solve->theta || n!=solve->n) { |
| 555 |
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.
|
2070 | PetscCall(NEPDeflationComputeShellMat(extop,lambda,PETSC_FALSE,solve->sincf?NULL:&solve->T)); |
| 556 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
2070 | Mshell = (solve->sincf)?extop->MF:solve->T; |
| 557 |
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.
|
2070 | PetscCall(MatShellGetContext(Mshell,&matctx)); |
| 558 |
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.
|
2070 | PetscCall(NEP_KSPSetOperators(solve->ksp,matctx->T,matctx->P)); |
| 559 |
3/4✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
|
2070 | if (!extop->ref && n) { |
| 560 |
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.
|
706 | PetscCall(PetscBLASIntCast(n,&n_)); |
| 561 |
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.
|
706 | PetscCall(PetscBLASIntCast(extop->szd,&szd_)); |
| 562 |
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.
|
706 | PetscCall(PetscBLASIntCast(extop->szd+1,&ldh_)); |
| 563 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
706 | if (!extop->simpU) { |
| 564 |
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.
|
559 | PetscCall(BVSetActiveColumns(solve->T_1U,0,n)); |
| 565 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1444 | for (i=0;i<n;i++) { |
| 566 |
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.
|
885 | PetscCall(BVGetColumn(matctx->U,i,&u)); |
| 567 |
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.
|
885 | PetscCall(BVGetColumn(solve->T_1U,i,&tu)); |
| 568 |
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.
|
885 | PetscCall(KSPSolve(solve->ksp,u,tu)); |
| 569 |
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.
|
885 | PetscCall(BVRestoreColumn(solve->T_1U,i,&tu)); |
| 570 |
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.
|
885 | PetscCall(BVRestoreColumn(matctx->U,i,&u)); |
| 571 | } | ||
| 572 |
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.
|
559 | PetscCall(MatCreateSeqDense(PETSC_COMM_SELF,n,n,solve->work,&F)); |
| 573 |
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.
|
559 | PetscCall(BVDot(solve->T_1U,extop->X,F)); |
| 574 |
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.
|
559 | PetscCall(MatDestroy(&F)); |
| 575 | } else { | ||
| 576 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
355 | for (j=0;j<n;j++) |
| 577 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
538 | for (i=0;i<n;i++) solve->work[j*n+i] = extop->XpX[j*extop->szd+i]; |
| 578 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
355 | for (i=0;i<n;i++) extop->H[i*ldh_+i] -= lambda; |
| 579 |
10/20✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✓ 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 not taken.
|
147 | PetscCallBLAS("BLAStrsm",BLAStrsm_("R","U","N","N",&n_,&n_,&snone,extop->H,&ldh_,solve->work,&n_)); |
| 580 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
355 | for (i=0;i<n;i++) extop->H[i*ldh_+i] += lambda; |
| 581 | } | ||
| 582 |
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.
|
706 | PetscCall(PetscArraycpy(solve->M,matctx->B,extop->szd*extop->szd)); |
| 583 |
10/20✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✓ 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 not taken.
|
706 | PetscCallBLAS("BLASgemm",BLASgemm_("N","N",&n_,&n_,&n_,&snone,matctx->A,&szd_,solve->work,&n_,&sone,solve->M,&szd_)); |
| 584 |
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.
|
706 | PetscCall(PetscMalloc1(n,&p)); |
| 585 |
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.
|
706 | PetscCall(PetscFPTrapPush(PETSC_FP_TRAP_OFF)); |
| 586 |
10/20✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✓ 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 not taken.
|
706 | PetscCallBLAS("LAPACKgetrf",LAPACKgetrf_(&n_,&n_,solve->M,&szd_,p,&info)); |
| 587 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
706 | SlepcCheckLapackInfo("getrf",info); |
| 588 |
10/20✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✓ 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 not taken.
|
706 | PetscCallBLAS("LAPACKgetri",LAPACKgetri_(&n_,solve->M,&szd_,p,solve->work,&n_,&info)); |
| 589 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
706 | SlepcCheckLapackInfo("getri",info); |
| 590 |
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.
|
706 | PetscCall(PetscFPTrapPop()); |
| 591 |
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.
|
706 | PetscCall(PetscFree(p)); |
| 592 | } | ||
| 593 | 2070 | solve->theta = lambda; | |
| 594 | 2070 | solve->n = n; | |
| 595 | } | ||
| 596 |
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.
|
397 | PetscFunctionReturn(PETSC_SUCCESS); |
| 597 | } | ||
| 598 | |||
| 599 | 33668 | PetscErrorCode NEPDeflationFunctionSolve(NEP_EXT_OP extop,Vec b,Vec x) | |
| 600 | { | ||
| 601 | 33668 | Vec b1,x1; | |
| 602 | 33668 | PetscScalar *xx,*bb,*x2,*b2,*w,*w2,snone=-1.0,sone=1.0,zero=0.0; | |
| 603 | 33668 | NEP_DEF_MATSHELL *matctx; | |
| 604 | 33668 | NEP_DEF_FUN_SOLVE solve=extop->solve; | |
| 605 | 33668 | PetscBLASInt one=1,szd_,n_,ldh_; | |
| 606 | 33668 | PetscInt nloc,i; | |
| 607 | 33668 | PetscMPIInt np,count; | |
| 608 | |||
| 609 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
33668 | PetscFunctionBegin; |
| 610 |
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.
|
33668 | if (extop->ref) PetscCall(VecZeroEntries(x)); |
| 611 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
33668 | if (extop->szd) { |
| 612 | 21126 | x1 = solve->w[0]; b1 = solve->w[1]; | |
| 613 |
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.
|
21126 | PetscCall(VecGetArray(x,&xx)); |
| 614 |
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.
|
21126 | PetscCall(VecPlaceArray(x1,xx)); |
| 615 |
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.
|
21126 | PetscCall(VecGetArray(b,&bb)); |
| 616 |
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.
|
21126 | PetscCall(VecPlaceArray(b1,bb)); |
| 617 | } else { | ||
| 618 | b1 = b; x1 = x; | ||
| 619 | } | ||
| 620 |
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.
|
33668 | PetscCall(KSPSolve(extop->solve->ksp,b1,x1)); |
| 621 |
5/6✓ Branch 0 taken 10 times.
✓ Branch 1 taken 5 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
|
33668 | if (!extop->ref && extop->n && extop->szd) { |
| 622 |
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.
|
10866 | PetscCall(PetscBLASIntCast(extop->szd,&szd_)); |
| 623 |
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.
|
10866 | PetscCall(PetscBLASIntCast(extop->n,&n_)); |
| 624 |
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.
|
10866 | PetscCall(PetscBLASIntCast(extop->szd+1,&ldh_)); |
| 625 |
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.
|
10866 | PetscCall(BVGetSizes(extop->nep->V,&nloc,NULL,NULL)); |
| 626 |
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.
|
10866 | PetscCall(PetscMalloc2(extop->n,&b2,extop->n,&x2)); |
| 627 |
14/28✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
|
10866 | PetscCallMPI(MPI_Comm_size(PetscObjectComm((PetscObject)b),&np)); |
| 628 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
26303 | for (i=0;i<extop->n;i++) b2[i] = bb[nloc+i]*PetscSqrtReal(np); |
| 629 | 10866 | w = solve->work; w2 = solve->work+extop->n; | |
| 630 |
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.
|
10866 | PetscCall(MatShellGetContext(solve->sincf?extop->MF:solve->T,&matctx)); |
| 631 |
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.
|
10866 | PetscCall(PetscArraycpy(w2,b2,extop->n)); |
| 632 |
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.
|
10866 | PetscCall(BVDotVec(extop->X,x1,w)); |
| 633 |
10/20✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✓ 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 not taken.
|
10866 | PetscCallBLAS("BLASgemv",BLASgemv_("N",&n_,&n_,&snone,matctx->A,&szd_,w,&one,&sone,w2,&one)); |
| 634 |
10/20✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✓ 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 not taken.
|
10866 | PetscCallBLAS("BLASgemv",BLASgemv_("N",&n_,&n_,&sone,solve->M,&szd_,w2,&one,&zero,x2,&one)); |
| 635 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
10866 | if (extop->simpU) { |
| 636 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
5740 | for (i=0;i<extop->n;i++) extop->H[i+i*(extop->szd+1)] -= solve->theta; |
| 637 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
5740 | for (i=0;i<extop->n;i++) w[i] = x2[i]; |
| 638 |
10/20✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✓ 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 not taken.
|
2532 | PetscCallBLAS("BLAStrsm",BLAStrsm_("L","U","N","N",&n_,&one,&snone,extop->H,&ldh_,w,&n_)); |
| 639 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
5740 | for (i=0;i<extop->n;i++) extop->H[i+i*(extop->szd+1)] += solve->theta; |
| 640 |
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.
|
2532 | PetscCall(BVMultVec(extop->X,-1.0,1.0,x1,w)); |
| 641 |
5/6✓ Branch 0 taken 9 times.
✓ Branch 1 taken 1 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✓ Branch 5 taken 1 times.
|
8334 | } else PetscCall(BVMultVec(solve->T_1U,-1.0,1.0,x1,x2)); |
| 642 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
26303 | for (i=0;i<extop->n;i++) xx[i+nloc] = x2[i]/PetscSqrtReal(np); |
| 643 |
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.
|
10866 | PetscCall(PetscMPIIntCast(extop->n,&count)); |
| 644 |
15/30✓ 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 taken 8 times.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✓ 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 not taken.
✓ Branch 23 taken 2 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.
|
21732 | PetscCallMPI(MPI_Bcast(xx+nloc,count,MPIU_SCALAR,np-1,PetscObjectComm((PetscObject)b))); |
| 645 | } | ||
| 646 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
33668 | if (extop->szd) { |
| 647 |
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.
|
21126 | PetscCall(VecResetArray(x1)); |
| 648 |
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.
|
21126 | PetscCall(VecRestoreArray(x,&xx)); |
| 649 |
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.
|
21126 | PetscCall(VecResetArray(b1)); |
| 650 |
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.
|
21126 | PetscCall(VecRestoreArray(b,&bb)); |
| 651 |
8/10✓ Branch 0 taken 10 times.
✓ Branch 1 taken 5 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
✓ Branch 4 taken 2 times.
✓ Branch 5 taken 8 times.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
|
21126 | if (!extop->ref && extop->n) PetscCall(PetscFree2(b2,x2)); |
| 652 | } | ||
| 653 |
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.
|
6385 | PetscFunctionReturn(PETSC_SUCCESS); |
| 654 | } | ||
| 655 | |||
| 656 | 1066 | PetscErrorCode NEPDeflationSetRefine(NEP_EXT_OP extop,PetscBool ref) | |
| 657 | { | ||
| 658 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1066 | PetscFunctionBegin; |
| 659 | 1066 | extop->ref = ref; | |
| 660 |
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.
|
1066 | PetscFunctionReturn(PETSC_SUCCESS); |
| 661 | } | ||
| 662 | |||
| 663 | 1388 | PetscErrorCode NEPDeflationReset(NEP_EXT_OP extop) | |
| 664 | { | ||
| 665 | 1388 | PetscInt j; | |
| 666 | 1388 | NEP_DEF_FUN_SOLVE solve; | |
| 667 | |||
| 668 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1388 | PetscFunctionBegin; |
| 669 |
8/14✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
|
1388 | if (!extop) PetscFunctionReturn(PETSC_SUCCESS); |
| 670 |
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.
|
694 | PetscCall(PetscFree(extop->H)); |
| 671 |
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.
|
694 | PetscCall(BVDestroy(&extop->X)); |
| 672 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
694 | if (extop->szd) { |
| 673 |
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.
|
194 | PetscCall(VecDestroy(&extop->w)); |
| 674 |
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.
|
194 | PetscCall(PetscFree3(extop->Hj,extop->XpX,extop->bc)); |
| 675 |
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.
|
194 | PetscCall(BVDestroy(&extop->W)); |
| 676 | } | ||
| 677 |
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.
|
694 | PetscCall(MatDestroy(&extop->MF)); |
| 678 |
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.
|
694 | PetscCall(MatDestroy(&extop->MJ)); |
| 679 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
694 | if (extop->solve) { |
| 680 | 694 | solve = extop->solve; | |
| 681 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
694 | if (extop->szd) { |
| 682 |
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.
|
194 | if (!extop->simpU) PetscCall(BVDestroy(&solve->T_1U)); |
| 683 |
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.
|
194 | PetscCall(PetscFree2(solve->M,solve->work)); |
| 684 |
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.
|
194 | PetscCall(VecDestroy(&solve->w[0])); |
| 685 |
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.
|
194 | PetscCall(VecDestroy(&solve->w[1])); |
| 686 | } | ||
| 687 |
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.
|
694 | if (!solve->sincf) PetscCall(MatDestroy(&solve->T)); |
| 688 |
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.
|
694 | PetscCall(PetscFree(extop->solve)); |
| 689 | } | ||
| 690 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
694 | if (extop->proj) { |
| 691 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
170 | if (extop->szd) { |
| 692 |
7/8✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 8 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✓ Branch 6 taken 2 times.
✓ Branch 7 taken 2 times.
|
120 | for (j=0;j<extop->nep->nt;j++) PetscCall(MatDestroy(&extop->proj->V1pApX[j])); |
| 693 |
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.
|
30 | PetscCall(MatDestroy(&extop->proj->XpV1)); |
| 694 |
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.
|
30 | PetscCall(PetscFree3(extop->proj->V2,extop->proj->V1pApX,extop->proj->work)); |
| 695 |
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.
|
30 | PetscCall(VecDestroy(&extop->proj->w)); |
| 696 |
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.
|
30 | PetscCall(BVDestroy(&extop->proj->V1)); |
| 697 | } | ||
| 698 |
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.
|
170 | PetscCall(PetscFree(extop->proj)); |
| 699 | } | ||
| 700 |
6/8✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
694 | PetscCall(PetscFree(extop)); |
| 701 |
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.
|
131 | PetscFunctionReturn(PETSC_SUCCESS); |
| 702 | } | ||
| 703 | |||
| 704 | 694 | PetscErrorCode NEPDeflationInitialize(NEP nep,BV X,KSP ksp,PetscBool sincfun,PetscInt sz,NEP_EXT_OP *extop) | |
| 705 | { | ||
| 706 | 694 | NEP_EXT_OP op; | |
| 707 | 694 | NEP_DEF_FUN_SOLVE solve; | |
| 708 | 694 | PetscInt szd; | |
| 709 | 694 | Vec x; | |
| 710 | |||
| 711 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
694 | PetscFunctionBegin; |
| 712 |
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.
|
694 | PetscCall(NEPDeflationReset(*extop)); |
| 713 |
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.
|
694 | PetscCall(PetscNew(&op)); |
| 714 | 694 | *extop = op; | |
| 715 | 694 | op->nep = nep; | |
| 716 | 694 | op->n = 0; | |
| 717 | 694 | op->szd = szd = sz-1; | |
| 718 | 694 | op->max_midx = PetscMin(MAX_MINIDX,szd); | |
| 719 | 694 | op->X = X; | |
| 720 |
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.
|
694 | if (!X) PetscCall(BVDuplicateResize(nep->V,sz,&op->X)); |
| 721 |
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.
|
694 | else PetscCall(PetscObjectReference((PetscObject)X)); |
| 722 |
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.
|
694 | PetscCall(PetscCalloc1(sz*sz,&(op)->H)); |
| 723 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
694 | if (op->szd) { |
| 724 |
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.
|
194 | PetscCall(BVGetColumn(op->X,0,&x)); |
| 725 |
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.
|
194 | PetscCall(VecDuplicate(x,&op->w)); |
| 726 |
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.
|
194 | PetscCall(BVRestoreColumn(op->X,0,&x)); |
| 727 | 194 | op->simpU = PETSC_FALSE; | |
| 728 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
194 | if (nep->fui==NEP_USER_INTERFACE_SPLIT) { |
| 729 | /* undocumented option to use the simple expression for U = T*X*inv(lambda-H) */ | ||
| 730 |
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.
|
168 | PetscCall(PetscOptionsGetBool(NULL,NULL,"-nep_deflation_simpleu",&op->simpU,NULL)); |
| 731 | } else { | ||
| 732 | 26 | op->simpU = PETSC_TRUE; | |
| 733 | } | ||
| 734 |
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.
|
194 | PetscCall(PetscCalloc3(szd*szd*op->max_midx,&(op)->Hj,szd*szd,&(op)->XpX,szd,&op->bc)); |
| 735 |
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.
|
194 | PetscCall(BVDuplicateResize(op->X,op->szd,&op->W)); |
| 736 | } | ||
| 737 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
694 | if (ksp) { |
| 738 |
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.
|
694 | PetscCall(PetscNew(&solve)); |
| 739 | 694 | op->solve = solve; | |
| 740 | 694 | solve->ksp = ksp; | |
| 741 | 694 | solve->sincf = sincfun; | |
| 742 | 694 | solve->n = -1; | |
| 743 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
694 | if (op->szd) { |
| 744 |
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.
|
194 | if (!op->simpU) PetscCall(BVDuplicateResize(nep->V,szd,&solve->T_1U)); |
| 745 |
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.
|
194 | PetscCall(PetscMalloc2(szd*szd,&solve->M,2*szd*szd,&solve->work)); |
| 746 |
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.
|
194 | PetscCall(BVCreateVec(nep->V,&solve->w[0])); |
| 747 |
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.
|
194 | PetscCall(VecDuplicate(solve->w[0],&solve->w[1])); |
| 748 | } | ||
| 749 | } | ||
| 750 |
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.
|
131 | PetscFunctionReturn(PETSC_SUCCESS); |
| 751 | } | ||
| 752 | |||
| 753 | 9055 | static PetscErrorCode NEPDeflationDSNEPComputeMatrix(DS ds,PetscScalar lambda,PetscBool deriv,DSMatType mat,void *ctx) | |
| 754 | { | ||
| 755 | 9055 | Mat A,Ei; | |
| 756 | 9055 | PetscScalar *T,*w1,*w2,*w=NULL,*ww,*hH,*hHprev,*pts; | |
| 757 | 9055 | PetscScalar alpha,alpha2,*AB,sone=1.0,zero=0.0,*basisv,s; | |
| 758 | 9055 | const PetscScalar *E; | |
| 759 | 9055 | PetscInt i,ldds,nwork=0,szd,nv,j,k,n; | |
| 760 | 9055 | PetscBLASInt inc=1,nv_,ldds_,dim_,szdk,szd_,n_,ldh_; | |
| 761 | 9055 | PetscMPIInt np; | |
| 762 | 9055 | NEP_DEF_PROJECT proj=(NEP_DEF_PROJECT)ctx; | |
| 763 | 9055 | NEP_EXT_OP extop=proj->extop; | |
| 764 | 9055 | NEP nep=extop->nep; | |
| 765 | |||
| 766 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
9055 | PetscFunctionBegin; |
| 767 |
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.
|
9055 | PetscCall(DSGetDimensions(ds,&nv,NULL,NULL,NULL)); |
| 768 |
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.
|
9055 | PetscCall(DSGetLeadingDimension(ds,&ldds)); |
| 769 |
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.
|
9055 | PetscCall(DSGetMat(ds,mat,&A)); |
| 770 |
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.
|
9055 | PetscCall(MatZeroEntries(A)); |
| 771 | /* mat = V1^*T(lambda)V1 */ | ||
| 772 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
36220 | for (i=0;i<nep->nt;i++) { |
| 773 |
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.
|
27165 | if (deriv) PetscCall(FNEvaluateDerivative(nep->f[i],lambda,&alpha)); |
| 774 |
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.
|
16155 | else PetscCall(FNEvaluateFunction(nep->f[i],lambda,&alpha)); |
| 775 |
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.
|
27165 | PetscCall(DSGetMat(ds,DSMatExtra[i],&Ei)); |
| 776 |
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.
|
27165 | PetscCall(MatAXPY(A,alpha,Ei,SAME_NONZERO_PATTERN)); |
| 777 |
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.
|
27165 | PetscCall(DSRestoreMat(ds,DSMatExtra[i],&Ei)); |
| 778 | } | ||
| 779 |
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.
|
9055 | PetscCall(DSRestoreMat(ds,mat,&A)); |
| 780 |
3/4✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
|
9055 | if (!extop->ref && extop->n) { |
| 781 |
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.
|
2370 | PetscCall(DSGetArray(ds,mat,&T)); |
| 782 | 2370 | n = extop->n; | |
| 783 | 2370 | szd = extop->szd; | |
| 784 |
4/6✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
2370 | PetscCall(PetscArrayzero(proj->work,proj->lwork)); |
| 785 |
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.
|
2370 | PetscCall(PetscBLASIntCast(nv,&nv_)); |
| 786 |
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.
|
2370 | PetscCall(PetscBLASIntCast(n,&n_)); |
| 787 |
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.
|
2370 | PetscCall(PetscBLASIntCast(ldds,&ldds_)); |
| 788 |
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.
|
2370 | PetscCall(PetscBLASIntCast(szd,&szd_)); |
| 789 |
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.
|
2370 | PetscCall(PetscBLASIntCast(proj->dim,&dim_)); |
| 790 |
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.
|
2370 | PetscCall(PetscBLASIntCast(extop->szd+1,&ldh_)); |
| 791 | 2370 | w1 = proj->work; w2 = proj->work+proj->dim*proj->dim; | |
| 792 | 2370 | nwork += 2*proj->dim*proj->dim; | |
| 793 | |||
| 794 | /* mat = mat + V1^*U(lambda)V2 */ | ||
| 795 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
9480 | for (i=0;i<nep->nt;i++) { |
| 796 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
7110 | if (extop->simpU) { |
| 797 |
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.
|
2325 | if (deriv) PetscCall(FNEvaluateDerivative(nep->f[i],lambda,&alpha)); |
| 798 |
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.
|
1395 | else PetscCall(FNEvaluateFunction(nep->f[i],lambda,&alpha)); |
| 799 | 2325 | ww = w1; w = w2; | |
| 800 |
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.
|
2325 | PetscCall(PetscArraycpy(ww,proj->V2,szd*nv)); |
| 801 |
14/28✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
|
2325 | PetscCallMPI(MPI_Comm_size(PetscObjectComm((PetscObject)ds),&np)); |
| 802 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
22875 | for (j=0;j<szd*nv;j++) ww[j] *= PetscSqrtReal(np); |
| 803 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
5700 | for (j=0;j<n;j++) extop->H[j*ldh_+j] -= lambda; |
| 804 | 2325 | alpha = -alpha; | |
| 805 |
10/20✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✓ 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 not taken.
|
2325 | PetscCallBLAS("BLAStrsm",BLAStrsm_("L","U","N","N",&n_,&nv_,&alpha,extop->H,&ldh_,ww,&szd_)); |
| 806 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
2325 | if (deriv) { |
| 807 |
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.
|
930 | PetscCall(PetscBLASIntCast(szd*nv,&szdk)); |
| 808 |
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.
|
930 | PetscCall(FNEvaluateFunction(nep->f[i],lambda,&alpha2)); |
| 809 |
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.
|
930 | PetscCall(PetscArraycpy(w,proj->V2,szd*nv)); |
| 810 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
9150 | for (j=0;j<szd*nv;j++) w[j] *= PetscSqrtReal(np); |
| 811 | 930 | alpha2 = -alpha2; | |
| 812 |
10/20✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✓ 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 not taken.
|
930 | PetscCallBLAS("BLAStrsm",BLAStrsm_("L","U","N","N",&n_,&nv_,&alpha2,extop->H,&ldh_,w,&szd_)); |
| 813 | 930 | alpha2 = 1.0; | |
| 814 |
10/20✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✓ 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 not taken.
|
930 | PetscCallBLAS("BLAStrsm",BLAStrsm_("L","U","N","N",&n_,&nv_,&alpha2,extop->H,&ldh_,w,&szd_)); |
| 815 |
10/20✓ Branch 0 taken 9 times.
✓ Branch 1 taken 1 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✓ 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 not taken.
|
930 | PetscCallBLAS("BLASaxpy",BLASaxpy_(&szdk,&sone,w,&inc,ww,&inc)); |
| 816 | } | ||
| 817 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
5700 | for (j=0;j<n;j++) extop->H[j*ldh_+j] += lambda; |
| 818 | } else { | ||
| 819 |
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.
|
4785 | PetscCall(NEPDeflationEvaluateHatFunction(extop,i,lambda,NULL,w1,w2,szd)); |
| 820 |
4/4✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 2 times.
|
5337 | w = deriv?w2:w1; ww = deriv?w1:w2; |
| 821 |
14/28✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
|
4785 | PetscCallMPI(MPI_Comm_size(PetscObjectComm((PetscObject)ds),&np)); |
| 822 | 4785 | s = PetscSqrtReal(np); | |
| 823 |
10/20✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✓ 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 not taken.
|
4785 | PetscCallBLAS("BLASgemm",BLASgemm_("N","N",&n_,&nv_,&n_,&s,w,&szd_,proj->V2,&szd_,&zero,ww,&szd_)); |
| 824 | } | ||
| 825 |
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.
|
7110 | PetscCall(MatDenseGetArrayRead(proj->V1pApX[i],&E)); |
| 826 |
10/20✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✓ 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 not taken.
|
7110 | PetscCallBLAS("BLASgemm",BLASgemm_("N","N",&nv_,&nv_,&n_,&sone,E,&dim_,ww,&szd_,&sone,T,&ldds_)); |
| 827 |
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.
|
7110 | PetscCall(MatDenseRestoreArrayRead(proj->V1pApX[i],&E)); |
| 828 | } | ||
| 829 | |||
| 830 | /* mat = mat + V2^*A(lambda)V1 */ | ||
| 831 | 2370 | basisv = proj->work+nwork; nwork += szd; | |
| 832 | 2370 | hH = proj->work+nwork; nwork += szd*szd; | |
| 833 | 2370 | hHprev = proj->work+nwork; nwork += szd*szd; | |
| 834 | 2370 | AB = proj->work+nwork; | |
| 835 |
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.
|
2370 | PetscCall(NEPDeflationEvaluateBasis(extop,lambda,n,basisv,deriv)); |
| 836 |
4/4✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 10 times.
|
4445 | if (!deriv) for (i=0;i<n;i++) AB[i*(szd+1)] = 1.0; |
| 837 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
5885 | for (j=0;j<n;j++) |
| 838 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
9320 | for (i=0;i<n;i++) |
| 839 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
5805 | for (k=1;k<extop->midx;k++) AB[j*szd+i] += basisv[k]*PetscConj(extop->Hj[k*szd*szd+i*szd+j]); |
| 840 |
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.
|
2370 | PetscCall(MatDenseGetArrayRead(proj->XpV1,&E)); |
| 841 |
10/20✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✓ 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 not taken.
|
2370 | PetscCallBLAS("BLASgemm",BLASgemm_("N","N",&n_,&nv_,&n_,&sone,AB,&szd_,E,&szd_,&zero,w,&szd_)); |
| 842 |
10/20✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✓ 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 not taken.
|
2370 | PetscCallBLAS("BLASgemm",BLASgemm_("C","N",&nv_,&nv_,&n_,&sone,proj->V2,&szd_,w,&szd_,&sone,T,&ldds_)); |
| 843 |
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.
|
2370 | PetscCall(MatDenseRestoreArrayRead(proj->XpV1,&E)); |
| 844 | |||
| 845 | /* mat = mat + V2^*B(lambda)V2 */ | ||
| 846 |
4/6✓ Branch 0 taken 5 times.
✓ Branch 1 taken 5 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
2370 | PetscCall(PetscArrayzero(AB,szd*szd)); |
| 847 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
2370 | for (i=1;i<extop->midx;i++) { |
| 848 | ✗ | PetscCall(NEPDeflationEvaluateBasisMat(extop,i,PETSC_TRUE,basisv,hH,hHprev)); | |
| 849 | ✗ | PetscCallBLAS("BLASgemm",BLASgemm_("N","N",&n_,&n_,&n_,&sone,extop->XpX,&szd_,hH,&szd_,&zero,hHprev,&szd_)); | |
| 850 | ✗ | PetscCallBLAS("BLASgemm",BLASgemm_("C","N",&n_,&n_,&n_,&sone,extop->Hj+szd*szd*i,&szd_,hHprev,&szd_,&sone,AB,&szd_)); | |
| 851 | ✗ | pts = hHprev; hHprev = hH; hH = pts; | |
| 852 | } | ||
| 853 |
10/20✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✓ 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 not taken.
|
2370 | PetscCallBLAS("BLASgemm",BLASgemm_("N","N",&n_,&nv_,&n_,&sone,AB,&szd_,proj->V2,&szd_,&zero,w,&szd_)); |
| 854 |
10/20✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✓ 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 not taken.
|
2370 | PetscCallBLAS("BLASgemm",BLASgemm_("C","N",&nv_,&nv_,&n_,&sone,proj->V2,&szd_,w,&szd_,&sone,T,&ldds_)); |
| 855 |
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.
|
2370 | PetscCall(DSRestoreArray(ds,mat,&T)); |
| 856 | } | ||
| 857 |
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.
|
1811 | PetscFunctionReturn(PETSC_SUCCESS); |
| 858 | } | ||
| 859 | |||
| 860 | 1715 | PetscErrorCode NEPDeflationProjectOperator(NEP_EXT_OP extop,BV Vext,DS ds,PetscInt j0,PetscInt j1) | |
| 861 | { | ||
| 862 | 1715 | PetscInt k,j,n=extop->n,dim; | |
| 863 | 1715 | Vec v,ve; | |
| 864 | 1715 | BV V1; | |
| 865 | 1715 | Mat G; | |
| 866 | 1715 | NEP nep=extop->nep; | |
| 867 | 1715 | NEP_DEF_PROJECT proj; | |
| 868 | |||
| 869 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1715 | PetscFunctionBegin; |
| 870 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
1715 | NEPCheckSplit(extop->nep,1); |
| 871 | 1715 | proj = extop->proj; | |
| 872 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1715 | if (!proj) { |
| 873 | /* Initialize the projection data structure */ | ||
| 874 |
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.
|
170 | PetscCall(PetscNew(&proj)); |
| 875 | 170 | extop->proj = proj; | |
| 876 | 170 | proj->extop = extop; | |
| 877 |
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.
|
170 | PetscCall(BVGetSizes(Vext,NULL,NULL,&dim)); |
| 878 | 170 | proj->dim = dim; | |
| 879 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
170 | if (extop->szd) { |
| 880 | 30 | proj->lwork = 3*dim*dim+2*extop->szd*extop->szd+extop->szd; | |
| 881 |
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.
|
30 | PetscCall(PetscMalloc3(dim*extop->szd,&proj->V2,nep->nt,&proj->V1pApX,proj->lwork,&proj->work)); |
| 882 |
7/8✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 8 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✓ Branch 6 taken 2 times.
✓ Branch 7 taken 2 times.
|
120 | for (j=0;j<nep->nt;j++) PetscCall(MatCreateSeqDense(PETSC_COMM_SELF,proj->dim,extop->szd,NULL,&proj->V1pApX[j])); |
| 883 |
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.
|
30 | PetscCall(MatCreateSeqDense(PETSC_COMM_SELF,extop->szd,proj->dim,NULL,&proj->XpV1)); |
| 884 |
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.
|
30 | PetscCall(BVCreateVec(extop->X,&proj->w)); |
| 885 |
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.
|
30 | PetscCall(BVDuplicateResize(extop->X,proj->dim,&proj->V1)); |
| 886 | } | ||
| 887 |
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.
|
170 | PetscCall(DSNEPSetComputeMatrixFunction(ds,NEPDeflationDSNEPComputeMatrix,(void*)proj)); |
| 888 | } | ||
| 889 | |||
| 890 | /* Split Vext in V1 and V2 */ | ||
| 891 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1715 | if (extop->szd) { |
| 892 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1290 | for (j=j0;j<j1;j++) { |
| 893 |
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.
|
645 | PetscCall(BVGetColumn(Vext,j,&ve)); |
| 894 |
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.
|
645 | PetscCall(BVGetColumn(proj->V1,j,&v)); |
| 895 |
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.
|
645 | PetscCall(NEPDeflationCopyToExtendedVec(extop,v,proj->V2+j*extop->szd,ve,PETSC_TRUE)); |
| 896 |
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.
|
645 | PetscCall(BVRestoreColumn(proj->V1,j,&v)); |
| 897 |
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.
|
645 | PetscCall(BVRestoreColumn(Vext,j,&ve)); |
| 898 | } | ||
| 899 | 645 | V1 = proj->V1; | |
| 900 | } else V1 = Vext; | ||
| 901 | |||
| 902 | /* Compute matrices V1^* A_i V1 */ | ||
| 903 |
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.
|
1715 | PetscCall(BVSetActiveColumns(V1,j0,j1)); |
| 904 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
6860 | for (k=0;k<nep->nt;k++) { |
| 905 |
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.
|
5145 | PetscCall(DSGetMat(ds,DSMatExtra[k],&G)); |
| 906 |
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.
|
5145 | PetscCall(BVMatProject(V1,nep->A[k],V1,G)); |
| 907 |
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.
|
5145 | PetscCall(DSRestoreMat(ds,DSMatExtra[k],&G)); |
| 908 | } | ||
| 909 | |||
| 910 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1715 | if (extop->n) { |
| 911 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
430 | if (extop->szd) { |
| 912 | /* Compute matrices V1^* A_i X and V1^* X */ | ||
| 913 |
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.
|
430 | PetscCall(BVSetActiveColumns(extop->W,0,n)); |
| 914 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
1720 | for (k=0;k<nep->nt;k++) { |
| 915 |
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.
|
1290 | PetscCall(BVMatMult(extop->X,nep->A[k],extop->W)); |
| 916 |
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.
|
1290 | PetscCall(BVDot(extop->W,V1,proj->V1pApX[k])); |
| 917 | } | ||
| 918 |
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.
|
430 | PetscCall(BVDot(V1,extop->X,proj->XpV1)); |
| 919 | } | ||
| 920 | } | ||
| 921 |
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.
|
343 | PetscFunctionReturn(PETSC_SUCCESS); |
| 922 | } | ||
| 923 |