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 |