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 | BV (basis vectors) interface routines, callable by users | ||
12 | */ | ||
13 | |||
14 | #include <slepc/private/bvimpl.h> /*I "slepcbv.h" I*/ | ||
15 | |||
16 | PetscClassId BV_CLASSID = 0; | ||
17 | PetscLogEvent BV_Create = 0,BV_Copy = 0,BV_Mult = 0,BV_MultVec = 0,BV_MultInPlace = 0,BV_Dot = 0,BV_DotVec = 0,BV_Orthogonalize = 0,BV_OrthogonalizeVec = 0,BV_Scale = 0,BV_Norm = 0,BV_NormVec = 0,BV_Normalize = 0,BV_SetRandom = 0,BV_MatMult = 0,BV_MatMultVec = 0,BV_MatProject = 0,BV_SVDAndRank = 0; | ||
18 | static PetscBool BVPackageInitialized = PETSC_FALSE; | ||
19 | MPI_Op MPIU_TSQR = 0,MPIU_LAPY2; | ||
20 | |||
21 | const char *BVOrthogTypes[] = {"CGS","MGS","BVOrthogType","BV_ORTHOG_",NULL}; | ||
22 | const char *BVOrthogRefineTypes[] = {"IFNEEDED","NEVER","ALWAYS","BVOrthogRefineType","BV_ORTHOG_REFINE_",NULL}; | ||
23 | const char *BVOrthogBlockTypes[] = {"GS","CHOL","TSQR","TSQRCHOL","SVQB","BVOrthogBlockType","BV_ORTHOG_BLOCK_",NULL}; | ||
24 | const char *BVMatMultTypes[] = {"VECS","MAT","MAT_SAVE","BVMatMultType","BV_MATMULT_",NULL}; | ||
25 | const char *BVSVDMethods[] = {"REFINE","QR","QR_CAA","BVSVDMethod","BV_SVD_METHOD_",NULL}; | ||
26 | |||
27 | /*@C | ||
28 | BVFinalizePackage - This function destroys everything in the Slepc interface | ||
29 | to the BV package. It is called from SlepcFinalize(). | ||
30 | |||
31 | Level: developer | ||
32 | |||
33 | .seealso: SlepcFinalize() | ||
34 | @*/ | ||
35 | 14752 | PetscErrorCode BVFinalizePackage(void) | |
36 | { | ||
37 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
14752 | PetscFunctionBegin; |
38 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
14752 | PetscCall(PetscFunctionListDestroy(&BVList)); |
39 |
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.
|
14752 | PetscCallMPI(MPI_Op_free(&MPIU_TSQR)); |
40 |
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.
|
14752 | PetscCallMPI(MPI_Op_free(&MPIU_LAPY2)); |
41 | 14752 | BVPackageInitialized = PETSC_FALSE; | |
42 | 14752 | BVRegisterAllCalled = PETSC_FALSE; | |
43 |
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.
|
14752 | PetscFunctionReturn(PETSC_SUCCESS); |
44 | } | ||
45 | |||
46 | /*@C | ||
47 | BVInitializePackage - This function initializes everything in the BV package. | ||
48 | It is called from PetscDLLibraryRegister() when using dynamic libraries, and | ||
49 | on the first call to BVCreate() when using static libraries. | ||
50 | |||
51 | Level: developer | ||
52 | |||
53 | .seealso: SlepcInitialize() | ||
54 | @*/ | ||
55 | 228245 | PetscErrorCode BVInitializePackage(void) | |
56 | { | ||
57 | 228245 | char logList[256]; | |
58 | 228245 | PetscBool opt,pkg; | |
59 | 228245 | PetscClassId classids[1]; | |
60 | |||
61 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
228245 | PetscFunctionBegin; |
62 |
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.
|
228245 | if (BVPackageInitialized) PetscFunctionReturn(PETSC_SUCCESS); |
63 | 14752 | BVPackageInitialized = PETSC_TRUE; | |
64 | /* Register Classes */ | ||
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.
|
14752 | PetscCall(PetscClassIdRegister("Basis Vectors",&BV_CLASSID)); |
66 | /* Register Constructors */ | ||
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.
|
14752 | PetscCall(BVRegisterAll()); |
68 | /* Register Events */ | ||
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.
|
14752 | PetscCall(PetscLogEventRegister("BVCreate",BV_CLASSID,&BV_Create)); |
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.
|
14752 | PetscCall(PetscLogEventRegister("BVCopy",BV_CLASSID,&BV_Copy)); |
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.
|
14752 | PetscCall(PetscLogEventRegister("BVMult",BV_CLASSID,&BV_Mult)); |
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.
|
14752 | PetscCall(PetscLogEventRegister("BVMultVec",BV_CLASSID,&BV_MultVec)); |
73 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
14752 | PetscCall(PetscLogEventRegister("BVMultInPlace",BV_CLASSID,&BV_MultInPlace)); |
74 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
14752 | PetscCall(PetscLogEventRegister("BVDot",BV_CLASSID,&BV_Dot)); |
75 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
14752 | PetscCall(PetscLogEventRegister("BVDotVec",BV_CLASSID,&BV_DotVec)); |
76 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
14752 | PetscCall(PetscLogEventRegister("BVOrthogonalize",BV_CLASSID,&BV_Orthogonalize)); |
77 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
14752 | PetscCall(PetscLogEventRegister("BVOrthogonalizeV",BV_CLASSID,&BV_OrthogonalizeVec)); |
78 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
14752 | PetscCall(PetscLogEventRegister("BVScale",BV_CLASSID,&BV_Scale)); |
79 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
14752 | PetscCall(PetscLogEventRegister("BVNorm",BV_CLASSID,&BV_Norm)); |
80 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
14752 | PetscCall(PetscLogEventRegister("BVNormVec",BV_CLASSID,&BV_NormVec)); |
81 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
14752 | PetscCall(PetscLogEventRegister("BVNormalize",BV_CLASSID,&BV_Normalize)); |
82 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
14752 | PetscCall(PetscLogEventRegister("BVSetRandom",BV_CLASSID,&BV_SetRandom)); |
83 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
14752 | PetscCall(PetscLogEventRegister("BVMatMult",BV_CLASSID,&BV_MatMult)); |
84 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
14752 | PetscCall(PetscLogEventRegister("BVMatMultVec",BV_CLASSID,&BV_MatMultVec)); |
85 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
14752 | PetscCall(PetscLogEventRegister("BVMatProject",BV_CLASSID,&BV_MatProject)); |
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.
|
14752 | PetscCall(PetscLogEventRegister("BVSVDAndRank",BV_CLASSID,&BV_SVDAndRank)); |
87 | /* MPI reduction operation used in BVOrthogonalize */ | ||
88 |
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.
|
14752 | PetscCallMPI(MPI_Op_create(SlepcGivensPacked,PETSC_FALSE,&MPIU_TSQR)); |
89 |
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.
|
14752 | PetscCallMPI(MPI_Op_create(SlepcPythag,PETSC_TRUE,&MPIU_LAPY2)); |
90 | /* Process Info */ | ||
91 | 14752 | classids[0] = BV_CLASSID; | |
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.
|
14752 | PetscCall(PetscInfoProcessClass("bv",1,&classids[0])); |
93 | /* Process summary exclusions */ | ||
94 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
14752 | PetscCall(PetscOptionsGetString(NULL,NULL,"-log_exclude",logList,sizeof(logList),&opt)); |
95 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
14752 | if (opt) { |
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.
|
118 | PetscCall(PetscStrInList("bv",logList,',',&pkg)); |
97 |
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.
|
118 | if (pkg) PetscCall(PetscLogEventDeactivateClass(BV_CLASSID)); |
98 | } | ||
99 | /* Register package finalizer */ | ||
100 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
14752 | PetscCall(PetscRegisterFinalize(BVFinalizePackage)); |
101 |
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.
|
2776 | PetscFunctionReturn(PETSC_SUCCESS); |
102 | } | ||
103 | |||
104 | /*@ | ||
105 | BVDestroy - Destroys BV context that was created with BVCreate(). | ||
106 | |||
107 | Collective | ||
108 | |||
109 | Input Parameter: | ||
110 | . bv - the basis vectors context | ||
111 | |||
112 | Level: beginner | ||
113 | |||
114 | .seealso: BVCreate() | ||
115 | @*/ | ||
116 | 635400 | PetscErrorCode BVDestroy(BV *bv) | |
117 | { | ||
118 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
635400 | PetscFunctionBegin; |
119 |
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.
|
635400 | if (!*bv) PetscFunctionReturn(PETSC_SUCCESS); |
120 |
2/12✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
|
157010 | PetscValidHeaderSpecific(*bv,BV_CLASSID,1); |
121 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
157010 | PetscCheck(!(*bv)->lsplit,PetscObjectComm((PetscObject)*bv),PETSC_ERR_ARG_WRONGSTATE,"Must call BVRestoreSplit before destroying the BV"); |
122 |
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.
|
157010 | if (--((PetscObject)*bv)->refct > 0) { *bv = NULL; PetscFunctionReturn(PETSC_SUCCESS); } |
123 |
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.
|
154440 | PetscTryTypeMethod(*bv,destroy); |
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.
|
154440 | PetscCall(PetscLayoutDestroy(&(*bv)->map)); |
125 |
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.
|
154440 | PetscCall(PetscFree((*bv)->vtype)); |
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.
|
154440 | PetscCall(MatDestroy(&(*bv)->matrix)); |
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.
|
154440 | PetscCall(VecDestroy(&(*bv)->Bx)); |
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.
|
154440 | PetscCall(VecDestroy(&(*bv)->buffer)); |
129 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
154440 | PetscCall(BVDestroy(&(*bv)->cached)); |
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.
|
154440 | PetscCall(BVDestroy(&(*bv)->L)); |
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.
|
154440 | PetscCall(BVDestroy(&(*bv)->R)); |
132 |
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.
|
154440 | PetscCall(PetscFree((*bv)->work)); |
133 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
154440 | PetscCall(PetscFree2((*bv)->h,(*bv)->c)); |
134 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
154440 | PetscCall(VecDestroy(&(*bv)->omega)); |
135 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
154440 | PetscCall(MatDestroy(&(*bv)->Acreate)); |
136 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
154440 | PetscCall(MatDestroy(&(*bv)->Aget)); |
137 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
154440 | PetscCall(MatDestroy(&(*bv)->Abuffer)); |
138 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
154440 | PetscCall(PetscRandomDestroy(&(*bv)->rand)); |
139 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
154440 | PetscCall(PetscHeaderDestroy(bv)); |
140 |
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.
|
29891 | PetscFunctionReturn(PETSC_SUCCESS); |
141 | } | ||
142 | |||
143 | /*@ | ||
144 | BVCreate - Creates a basis vectors context. | ||
145 | |||
146 | Collective | ||
147 | |||
148 | Input Parameter: | ||
149 | . comm - MPI communicator | ||
150 | |||
151 | Output Parameter: | ||
152 | . newbv - location to put the basis vectors context | ||
153 | |||
154 | Level: beginner | ||
155 | |||
156 | .seealso: BVSetUp(), BVDestroy(), BV | ||
157 | @*/ | ||
158 | 154440 | PetscErrorCode BVCreate(MPI_Comm comm,BV *newbv) | |
159 | { | ||
160 | 154440 | BV bv; | |
161 | |||
162 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
154440 | PetscFunctionBegin; |
163 |
2/8✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
154440 | PetscAssertPointer(newbv,2); |
164 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
154440 | PetscCall(BVInitializePackage()); |
165 |
7/12✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 10 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 8 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
154440 | PetscCall(SlepcHeaderCreate(bv,BV_CLASSID,"BV","Basis Vectors","BV",comm,BVDestroy,BVView)); |
166 | |||
167 | 154440 | bv->map = NULL; | |
168 | 154440 | bv->vtype = NULL; | |
169 | 154440 | bv->n = -1; | |
170 | 154440 | bv->N = -1; | |
171 | 154440 | bv->m = 0; | |
172 | 154440 | bv->l = 0; | |
173 | 154440 | bv->k = 0; | |
174 | 154440 | bv->nc = 0; | |
175 | 154440 | bv->ld = 0; | |
176 | 154440 | bv->orthog_type = BV_ORTHOG_CGS; | |
177 | 154440 | bv->orthog_ref = BV_ORTHOG_REFINE_IFNEEDED; | |
178 | 154440 | bv->orthog_eta = 0.7071; | |
179 | 154440 | bv->orthog_block = BV_ORTHOG_BLOCK_GS; | |
180 | 154440 | bv->matrix = NULL; | |
181 | 154440 | bv->indef = PETSC_FALSE; | |
182 | 154440 | bv->vmm = BV_MATMULT_MAT; | |
183 | 154440 | bv->rrandom = PETSC_FALSE; | |
184 | 154440 | bv->deftol = 10*PETSC_MACHINE_EPSILON; | |
185 | |||
186 | 154440 | bv->buffer = NULL; | |
187 | 154440 | bv->Abuffer = NULL; | |
188 | 154440 | bv->Bx = NULL; | |
189 | 154440 | bv->xid = 0; | |
190 | 154440 | bv->xstate = 0; | |
191 | 154440 | bv->cv[0] = NULL; | |
192 | 154440 | bv->cv[1] = NULL; | |
193 | 154440 | bv->ci[0] = -1; | |
194 | 154440 | bv->ci[1] = -1; | |
195 | 154440 | bv->st[0] = -1; | |
196 | 154440 | bv->st[1] = -1; | |
197 | 154440 | bv->id[0] = 0; | |
198 | 154440 | bv->id[1] = 0; | |
199 | 154440 | bv->h = NULL; | |
200 | 154440 | bv->c = NULL; | |
201 | 154440 | bv->omega = NULL; | |
202 | 154440 | bv->defersfo = PETSC_FALSE; | |
203 | 154440 | bv->cached = NULL; | |
204 | 154440 | bv->bvstate = 0; | |
205 | 154440 | bv->L = NULL; | |
206 | 154440 | bv->R = NULL; | |
207 | 154440 | bv->lstate = 0; | |
208 | 154440 | bv->rstate = 0; | |
209 | 154440 | bv->lsplit = 0; | |
210 | 154440 | bv->issplit = 0; | |
211 | 154440 | bv->splitparent = NULL; | |
212 | 154440 | bv->rand = NULL; | |
213 | 154440 | bv->Acreate = NULL; | |
214 | 154440 | bv->Aget = NULL; | |
215 | 154440 | bv->cuda = PETSC_FALSE; | |
216 | 154440 | bv->hip = PETSC_FALSE; | |
217 | 154440 | bv->sfocalled = PETSC_FALSE; | |
218 | 154440 | bv->work = NULL; | |
219 | 154440 | bv->lwork = 0; | |
220 | 154440 | bv->data = NULL; | |
221 | |||
222 | 154440 | *newbv = bv; | |
223 |
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.
|
154440 | PetscFunctionReturn(PETSC_SUCCESS); |
224 | } | ||
225 | |||
226 | /*@ | ||
227 | BVCreateFromMat - Creates a basis vectors object from a dense Mat object. | ||
228 | |||
229 | Collective | ||
230 | |||
231 | Input Parameter: | ||
232 | . A - a dense tall-skinny matrix | ||
233 | |||
234 | Output Parameter: | ||
235 | . bv - the new basis vectors context | ||
236 | |||
237 | Notes: | ||
238 | The matrix values are copied to the BV data storage, memory is not shared. | ||
239 | |||
240 | The communicator of the BV object will be the same as A, and so will be | ||
241 | the dimensions. | ||
242 | |||
243 | Level: intermediate | ||
244 | |||
245 | .seealso: BVCreate(), BVDestroy(), BVCreateMat() | ||
246 | @*/ | ||
247 | 1144 | PetscErrorCode BVCreateFromMat(Mat A,BV *bv) | |
248 | { | ||
249 | 1144 | PetscInt n,N,k; | |
250 | 1144 | VecType vtype; | |
251 | |||
252 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1144 | PetscFunctionBegin; |
253 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
1144 | PetscValidHeaderSpecific(A,MAT_CLASSID,1); |
254 | |||
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.
|
1144 | PetscCall(MatGetSize(A,&N,&k)); |
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.
|
1144 | PetscCall(MatGetLocalSize(A,&n,NULL)); |
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.
|
1144 | PetscCall(MatGetVecType(A,&vtype)); |
258 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1144 | PetscCall(BVCreate(PetscObjectComm((PetscObject)A),bv)); |
259 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1144 | PetscCall(BVSetSizes(*bv,n,N,k)); |
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.
|
1144 | PetscCall(BVSetVecType(*bv,vtype)); |
261 | |||
262 | 1144 | (*bv)->Acreate = A; | |
263 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
1144 | PetscCall(PetscObjectReference((PetscObject)A)); |
264 |
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.
|
171 | PetscFunctionReturn(PETSC_SUCCESS); |
265 | } | ||
266 | |||
267 | /*@ | ||
268 | BVInsertVec - Insert a vector into the specified column. | ||
269 | |||
270 | Logically Collective | ||
271 | |||
272 | Input Parameters: | ||
273 | + V - basis vectors | ||
274 | . j - the column of V to be overwritten | ||
275 | - w - the vector to be copied | ||
276 | |||
277 | Level: intermediate | ||
278 | |||
279 | .seealso: BVInsertVecs() | ||
280 | @*/ | ||
281 | 540781 | PetscErrorCode BVInsertVec(BV V,PetscInt j,Vec w) | |
282 | { | ||
283 | 540781 | PetscInt n,N; | |
284 | 540781 | Vec v; | |
285 | |||
286 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
540781 | PetscFunctionBegin; |
287 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
540781 | PetscValidHeaderSpecific(V,BV_CLASSID,1); |
288 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
540781 | PetscValidLogicalCollectiveInt(V,j,2); |
289 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
540781 | PetscValidHeaderSpecific(w,VEC_CLASSID,3); |
290 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
540781 | PetscValidType(V,1); |
291 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
540781 | BVCheckSizes(V,1); |
292 |
13/32✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
|
540781 | PetscCheckSameComm(V,1,w,3); |
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.
|
540781 | PetscCall(VecGetSize(w,&N)); |
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.
|
540781 | PetscCall(VecGetLocalSize(w,&n)); |
296 |
2/6✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
|
540781 | PetscCheck(N==V->N && n==V->n,PetscObjectComm((PetscObject)V),PETSC_ERR_ARG_INCOMP,"Vec sizes (global %" PetscInt_FMT ", local %" PetscInt_FMT ") do not match BV sizes (global %" PetscInt_FMT ", local %" PetscInt_FMT ")",N,n,V->N,V->n); |
297 |
2/6✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
|
540781 | PetscCheck(j>=-V->nc && j<V->m,PetscObjectComm((PetscObject)V),PETSC_ERR_ARG_OUTOFRANGE,"Argument j has wrong value %" PetscInt_FMT ", should be between %" PetscInt_FMT " and %" PetscInt_FMT,j,-V->nc,V->m-1); |
298 | |||
299 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
540781 | PetscCall(BVGetColumn(V,j,&v)); |
300 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
540781 | PetscCall(VecCopy(w,v)); |
301 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
540781 | PetscCall(BVRestoreColumn(V,j,&v)); |
302 |
2/4✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
540781 | PetscCall(PetscObjectStateIncrease((PetscObject)V)); |
303 |
6/12✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
|
540781 | PetscFunctionReturn(PETSC_SUCCESS); |
304 | } | ||
305 | |||
306 | /*@ | ||
307 | BVInsertVecs - Insert a set of vectors into the specified columns. | ||
308 | |||
309 | Collective | ||
310 | |||
311 | Input Parameters: | ||
312 | + V - basis vectors | ||
313 | . s - first column of V to be overwritten | ||
314 | . W - set of vectors to be copied | ||
315 | - orth - flag indicating if the vectors must be orthogonalized | ||
316 | |||
317 | Input/Output Parameter: | ||
318 | . m - number of input vectors, on output the number of linearly independent | ||
319 | vectors | ||
320 | |||
321 | Notes: | ||
322 | Copies the contents of vectors W to V(:,s:s+n). If the orthogonalization | ||
323 | flag is set, then the vectors are copied one by one and then orthogonalized | ||
324 | against the previous ones. If any of them is linearly dependent then it | ||
325 | is discarded and the value of m is decreased. | ||
326 | |||
327 | Level: intermediate | ||
328 | |||
329 | .seealso: BVInsertVec(), BVOrthogonalizeColumn() | ||
330 | @*/ | ||
331 | 3707 | PetscErrorCode BVInsertVecs(BV V,PetscInt s,PetscInt *m,Vec *W,PetscBool orth) | |
332 | { | ||
333 | 3707 | PetscInt n,N,i,ndep; | |
334 | 3707 | PetscBool lindep; | |
335 | 3707 | PetscReal norm; | |
336 | 3707 | Vec v; | |
337 | |||
338 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
3707 | PetscFunctionBegin; |
339 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
3707 | PetscValidHeaderSpecific(V,BV_CLASSID,1); |
340 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
3707 | PetscValidLogicalCollectiveInt(V,s,2); |
341 |
2/8✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
3707 | PetscAssertPointer(m,3); |
342 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
3707 | PetscValidLogicalCollectiveInt(V,*m,3); |
343 |
2/14✓ Branch 0 taken 8 times.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
|
3707 | if (!*m) PetscFunctionReturn(PETSC_SUCCESS); |
344 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
3707 | PetscCheck(*m>0,PetscObjectComm((PetscObject)V),PETSC_ERR_ARG_OUTOFRANGE,"Number of vectors (given %" PetscInt_FMT ") cannot be negative",*m); |
345 |
2/8✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
3707 | PetscAssertPointer(W,4); |
346 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
3707 | PetscValidHeaderSpecific(*W,VEC_CLASSID,4); |
347 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
3707 | PetscValidLogicalCollectiveBool(V,orth,5); |
348 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
3707 | PetscValidType(V,1); |
349 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
3707 | BVCheckSizes(V,1); |
350 |
13/32✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
|
3707 | PetscCheckSameComm(V,1,*W,4); |
351 | |||
352 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
3707 | PetscCall(VecGetSize(*W,&N)); |
353 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
3707 | PetscCall(VecGetLocalSize(*W,&n)); |
354 |
2/6✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
|
3707 | PetscCheck(N==V->N && n==V->n,PetscObjectComm((PetscObject)V),PETSC_ERR_ARG_INCOMP,"Vec sizes (global %" PetscInt_FMT ", local %" PetscInt_FMT ") do not match BV sizes (global %" PetscInt_FMT ", local %" PetscInt_FMT ")",N,n,V->N,V->n); |
355 |
2/6✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
|
3707 | PetscCheck(s>=0 && s<V->m,PetscObjectComm((PetscObject)V),PETSC_ERR_ARG_OUTOFRANGE,"Argument s has wrong value %" PetscInt_FMT ", should be between 0 and %" PetscInt_FMT,s,V->m-1); |
356 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
3707 | PetscCheck(s+(*m)<=V->m,PetscObjectComm((PetscObject)V),PETSC_ERR_ARG_OUTOFRANGE,"Too many vectors provided, there is only room for %" PetscInt_FMT,V->m); |
357 | |||
358 | ndep = 0; | ||
359 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
8098 | for (i=0;i<*m;i++) { |
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.
|
4391 | PetscCall(BVGetColumn(V,s+i-ndep,&v)); |
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.
|
4391 | PetscCall(VecCopy(W[i],v)); |
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.
|
4391 | PetscCall(BVRestoreColumn(V,s+i-ndep,&v)); |
363 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
4391 | if (orth) { |
364 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
4391 | PetscCall(BVOrthogonalizeColumn(V,s+i-ndep,NULL,&norm,&lindep)); |
365 |
3/4✓ Branch 0 taken 10 times.
✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 10 times.
|
4391 | if (norm==0.0 || lindep) { |
366 |
1/6✗ Branch 0 not taken.
✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
|
12 | PetscCall(PetscInfo(V,"Removing linearly dependent vector %" PetscInt_FMT "\n",i)); |
367 | 12 | ndep++; | |
368 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
4391 | } else PetscCall(BVScaleColumn(V,s+i-ndep,1.0/norm)); |
369 | } | ||
370 | } | ||
371 | 3707 | *m -= ndep; | |
372 |
2/4✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
3707 | PetscCall(PetscObjectStateIncrease((PetscObject)V)); |
373 |
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.
|
3707 | PetscFunctionReturn(PETSC_SUCCESS); |
374 | } | ||
375 | |||
376 | /*@ | ||
377 | BVInsertConstraints - Insert a set of vectors as constraints. | ||
378 | |||
379 | Collective | ||
380 | |||
381 | Input Parameters: | ||
382 | + V - basis vectors | ||
383 | - C - set of vectors to be inserted as constraints | ||
384 | |||
385 | Input/Output Parameter: | ||
386 | . nc - number of input vectors, on output the number of linearly independent | ||
387 | vectors | ||
388 | |||
389 | Notes: | ||
390 | The constraints are relevant only during orthogonalization. Constraint | ||
391 | vectors span a subspace that is deflated in every orthogonalization | ||
392 | operation, so they are intended for removing those directions from the | ||
393 | orthogonal basis computed in regular BV columns. | ||
394 | |||
395 | Constraints are not stored in regular BV columns, but in a special part of | ||
396 | the storage. They can be accessed with negative indices in BVGetColumn(). | ||
397 | |||
398 | This operation is DESTRUCTIVE, meaning that all data contained in the | ||
399 | columns of V is lost. This is typically invoked just after creating the BV. | ||
400 | Once a set of constraints has been set, it is not allowed to call this | ||
401 | function again. | ||
402 | |||
403 | The vectors are copied one by one and then orthogonalized against the | ||
404 | previous ones. If any of them is linearly dependent then it is discarded | ||
405 | and the value of nc is decreased. The behaviour is similar to BVInsertVecs(). | ||
406 | |||
407 | Level: advanced | ||
408 | |||
409 | .seealso: BVInsertVecs(), BVOrthogonalizeColumn(), BVGetColumn(), BVGetNumConstraints() | ||
410 | @*/ | ||
411 | 504 | PetscErrorCode BVInsertConstraints(BV V,PetscInt *nc,Vec *C) | |
412 | { | ||
413 | 504 | PetscInt msave; | |
414 | |||
415 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
504 | PetscFunctionBegin; |
416 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
504 | PetscValidHeaderSpecific(V,BV_CLASSID,1); |
417 |
2/8✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
504 | PetscAssertPointer(nc,2); |
418 |
27/62✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✓ Branch 20 taken 2 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 2 times.
✓ Branch 24 taken 2 times.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✓ Branch 27 taken 2 times.
✓ Branch 28 taken 2 times.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 32 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 2 times.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 2 times.
✓ Branch 46 taken 2 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✓ Branch 49 taken 2 times.
✓ Branch 50 taken 2 times.
✗ Branch 51 not taken.
✓ Branch 52 taken 2 times.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 2 times.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 2 times.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
|
504 | PetscValidLogicalCollectiveInt(V,*nc,2); |
419 |
2/14✓ Branch 0 taken 8 times.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
|
504 | if (!*nc) PetscFunctionReturn(PETSC_SUCCESS); |
420 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
504 | PetscCheck(*nc>0,PetscObjectComm((PetscObject)V),PETSC_ERR_ARG_OUTOFRANGE,"Number of constraints (given %" PetscInt_FMT ") cannot be negative",*nc); |
421 |
2/8✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
504 | PetscAssertPointer(C,3); |
422 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
504 | PetscValidHeaderSpecific(*C,VEC_CLASSID,3); |
423 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
504 | PetscValidType(V,1); |
424 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
504 | BVCheckSizes(V,1); |
425 |
13/32✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
✓ Branch 12 taken 2 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 2 times.
✓ Branch 16 taken 2 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 2 times.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 2 times.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 2 times.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
|
504 | PetscCheckSameComm(V,1,*C,3); |
426 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
504 | PetscCheck(!V->issplit,PetscObjectComm((PetscObject)V),PETSC_ERR_ARG_WRONGSTATE,"Operation not permitted for a BV obtained from BVGetSplit"); |
427 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
504 | PetscCheck(!V->nc,PetscObjectComm((PetscObject)V),PETSC_ERR_ARG_WRONGSTATE,"Constraints already present in this BV object"); |
428 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
504 | PetscCheck(V->ci[0]==-1 && V->ci[1]==-1,PetscObjectComm((PetscObject)V),PETSC_ERR_SUP,"Cannot call BVInsertConstraints after BVGetColumn"); |
429 | |||
430 | 504 | msave = V->m; | |
431 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
504 | PetscCall(BVResize(V,*nc+V->m,PETSC_FALSE)); |
432 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
504 | PetscCall(BVInsertVecs(V,0,nc,C,PETSC_TRUE)); |
433 | 504 | V->nc = *nc; | |
434 | 504 | V->m = msave; | |
435 | 504 | V->ci[0] = -V->nc-1; | |
436 | 504 | V->ci[1] = -V->nc-1; | |
437 |
2/4✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
|
504 | PetscCall(PetscObjectStateIncrease((PetscObject)V)); |
438 |
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.
|
504 | PetscFunctionReturn(PETSC_SUCCESS); |
439 | } | ||
440 | |||
441 | /*@ | ||
442 | BVSetOptionsPrefix - Sets the prefix used for searching for all | ||
443 | BV options in the database. | ||
444 | |||
445 | Logically Collective | ||
446 | |||
447 | Input Parameters: | ||
448 | + bv - the basis vectors context | ||
449 | - prefix - the prefix string to prepend to all BV option requests | ||
450 | |||
451 | Notes: | ||
452 | A hyphen (-) must NOT be given at the beginning of the prefix name. | ||
453 | The first character of all runtime options is AUTOMATICALLY the | ||
454 | hyphen. | ||
455 | |||
456 | Level: advanced | ||
457 | |||
458 | .seealso: BVAppendOptionsPrefix(), BVGetOptionsPrefix() | ||
459 | @*/ | ||
460 | 2614 | PetscErrorCode BVSetOptionsPrefix(BV bv,const char *prefix) | |
461 | { | ||
462 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
2614 | PetscFunctionBegin; |
463 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
2614 | PetscValidHeaderSpecific(bv,BV_CLASSID,1); |
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.
|
2614 | PetscCall(PetscObjectSetOptionsPrefix((PetscObject)bv,prefix)); |
465 |
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.
|
489 | PetscFunctionReturn(PETSC_SUCCESS); |
466 | } | ||
467 | |||
468 | /*@ | ||
469 | BVAppendOptionsPrefix - Appends to the prefix used for searching for all | ||
470 | BV options in the database. | ||
471 | |||
472 | Logically Collective | ||
473 | |||
474 | Input Parameters: | ||
475 | + bv - the basis vectors context | ||
476 | - prefix - the prefix string to prepend to all BV option requests | ||
477 | |||
478 | Notes: | ||
479 | A hyphen (-) must NOT be given at the beginning of the prefix name. | ||
480 | The first character of all runtime options is AUTOMATICALLY the | ||
481 | hyphen. | ||
482 | |||
483 | Level: advanced | ||
484 | |||
485 | .seealso: BVSetOptionsPrefix(), BVGetOptionsPrefix() | ||
486 | @*/ | ||
487 | 2059 | PetscErrorCode BVAppendOptionsPrefix(BV bv,const char *prefix) | |
488 | { | ||
489 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
2059 | PetscFunctionBegin; |
490 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
2059 | PetscValidHeaderSpecific(bv,BV_CLASSID,1); |
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.
|
2059 | PetscCall(PetscObjectAppendOptionsPrefix((PetscObject)bv,prefix)); |
492 |
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.
|
407 | PetscFunctionReturn(PETSC_SUCCESS); |
493 | } | ||
494 | |||
495 | /*@ | ||
496 | BVGetOptionsPrefix - Gets the prefix used for searching for all | ||
497 | BV options in the database. | ||
498 | |||
499 | Not Collective | ||
500 | |||
501 | Input Parameters: | ||
502 | . bv - the basis vectors context | ||
503 | |||
504 | Output Parameters: | ||
505 | . prefix - pointer to the prefix string used, is returned | ||
506 | |||
507 | Note: | ||
508 | On the Fortran side, the user should pass in a string 'prefix' of | ||
509 | sufficient length to hold the prefix. | ||
510 | |||
511 | Level: advanced | ||
512 | |||
513 | .seealso: BVSetOptionsPrefix(), BVAppendOptionsPrefix() | ||
514 | @*/ | ||
515 | 21 | PetscErrorCode BVGetOptionsPrefix(BV bv,const char *prefix[]) | |
516 | { | ||
517 |
0/2✗ Branch 0 not taken.
✗ Branch 1 not taken.
|
21 | PetscFunctionBegin; |
518 |
0/16✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
21 | PetscValidHeaderSpecific(bv,BV_CLASSID,1); |
519 |
0/8✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
21 | PetscAssertPointer(prefix,2); |
520 |
1/6✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
|
21 | PetscCall(PetscObjectGetOptionsPrefix((PetscObject)bv,prefix)); |
521 | ✗ | PetscFunctionReturn(PETSC_SUCCESS); | |
522 | } | ||
523 | |||
524 | /*@ | ||
525 | BVView - Prints the BV data structure. | ||
526 | |||
527 | Collective | ||
528 | |||
529 | Input Parameters: | ||
530 | + bv - the BV context | ||
531 | - viewer - optional visualization context | ||
532 | |||
533 | Note: | ||
534 | The available visualization contexts include | ||
535 | + PETSC_VIEWER_STDOUT_SELF - standard output (default) | ||
536 | - PETSC_VIEWER_STDOUT_WORLD - synchronized standard | ||
537 | output where only the first processor opens | ||
538 | the file. All other processors send their | ||
539 | data to the first processor to print. | ||
540 | |||
541 | The user can open an alternative visualization contexts with | ||
542 | PetscViewerASCIIOpen() (output to a specified file). | ||
543 | |||
544 | Level: beginner | ||
545 | |||
546 | .seealso: BVCreate() | ||
547 | @*/ | ||
548 | 964 | PetscErrorCode BVView(BV bv,PetscViewer viewer) | |
549 | { | ||
550 | 964 | PetscBool isascii; | |
551 | 964 | PetscViewerFormat format; | |
552 | 964 | const char *orthname[2] = {"classical","modified"}; | |
553 | 964 | const char *refname[3] = {"if needed","never","always"}; | |
554 | |||
555 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
964 | PetscFunctionBegin; |
556 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
964 | PetscValidHeaderSpecific(bv,BV_CLASSID,1); |
557 |
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.
|
964 | if (!viewer) PetscCall(PetscViewerASCIIGetStdout(PetscObjectComm((PetscObject)bv),&viewer)); |
558 |
3/16✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
|
964 | PetscValidHeaderSpecific(viewer,PETSC_VIEWER_CLASSID,2); |
559 | |||
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.
|
964 | PetscCall(PetscObjectTypeCompare((PetscObject)viewer,PETSCVIEWERASCII,&isascii)); |
561 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
964 | if (isascii) { |
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.
|
964 | PetscCall(PetscObjectPrintClassNamePrefixType((PetscObject)bv,viewer)); |
563 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
964 | PetscCall(PetscViewerGetFormat(viewer,&format)); |
564 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
964 | if (format == PETSC_VIEWER_ASCII_INFO || format == PETSC_VIEWER_ASCII_INFO_DETAIL) { |
565 |
8/10✓ Branch 0 taken 10 times.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 2 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.
|
776 | PetscCall(PetscViewerASCIIPrintf(viewer," %" PetscInt_FMT " columns of global length %" PetscInt_FMT "%s\n",bv->m,bv->N,bv->cuda?" (CUDA)":bv->hip?" (HIP)":"")); |
566 |
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.
|
404 | if (bv->nc>0) PetscCall(PetscViewerASCIIPrintf(viewer," number of constraints: %" PetscInt_FMT "\n",bv->nc)); |
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.
|
404 | PetscCall(PetscViewerASCIIPrintf(viewer," vector orthogonalization method: %s Gram-Schmidt\n",orthname[bv->orthog_type])); |
568 |
1/3✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
|
404 | switch (bv->orthog_ref) { |
569 | 404 | case BV_ORTHOG_REFINE_IFNEEDED: | |
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.
|
404 | PetscCall(PetscViewerASCIIPrintf(viewer," orthogonalization refinement: %s (eta: %g)\n",refname[bv->orthog_ref],(double)bv->orthog_eta)); |
571 | break; | ||
572 | ✗ | case BV_ORTHOG_REFINE_NEVER: | |
573 | case BV_ORTHOG_REFINE_ALWAYS: | ||
574 | ✗ | PetscCall(PetscViewerASCIIPrintf(viewer," orthogonalization refinement: %s\n",refname[bv->orthog_ref])); | |
575 | break; | ||
576 | } | ||
577 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
404 | PetscCall(PetscViewerASCIIPrintf(viewer," block orthogonalization method: %s\n",BVOrthogBlockTypes[bv->orthog_block])); |
578 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
404 | if (bv->matrix) { |
579 | ✗ | if (bv->indef) PetscCall(PetscViewerASCIIPrintf(viewer," indefinite inner product\n")); | |
580 | ✗ | else PetscCall(PetscViewerASCIIPrintf(viewer," non-standard inner product\n")); | |
581 | ✗ | PetscCall(PetscViewerASCIIPrintf(viewer," tolerance for definite inner product: %g\n",(double)bv->deftol)); | |
582 | ✗ | PetscCall(PetscViewerASCIIPrintf(viewer," inner product matrix:\n")); | |
583 | ✗ | PetscCall(PetscViewerPushFormat(viewer,PETSC_VIEWER_ASCII_INFO)); | |
584 | ✗ | PetscCall(PetscViewerASCIIPushTab(viewer)); | |
585 | ✗ | PetscCall(MatView(bv->matrix,viewer)); | |
586 | ✗ | PetscCall(PetscViewerASCIIPopTab(viewer)); | |
587 | ✗ | PetscCall(PetscViewerPopFormat(viewer)); | |
588 | } | ||
589 |
2/4✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
404 | switch (bv->vmm) { |
590 | 48 | case BV_MATMULT_VECS: | |
591 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
48 | PetscCall(PetscViewerASCIIPrintf(viewer," doing matmult as matrix-vector products\n")); |
592 | break; | ||
593 | 356 | case BV_MATMULT_MAT: | |
594 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
356 | PetscCall(PetscViewerASCIIPrintf(viewer," doing matmult as a single matrix-matrix product\n")); |
595 | break; | ||
596 | ✗ | case BV_MATMULT_MAT_SAVE: | |
597 | ✗ | PetscCall(PetscViewerASCIIPrintf(viewer," mat_save is deprecated, use mat\n")); | |
598 | break; | ||
599 | } | ||
600 |
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.
|
404 | if (bv->rrandom) PetscCall(PetscViewerASCIIPrintf(viewer," generating random vectors independent of the number of processes\n")); |
601 | } | ||
602 | } | ||
603 |
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.
|
964 | PetscTryTypeMethod(bv,view,viewer); |
604 |
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.
|
149 | PetscFunctionReturn(PETSC_SUCCESS); |
605 | } | ||
606 | |||
607 | /*@ | ||
608 | BVViewFromOptions - View from options | ||
609 | |||
610 | Collective | ||
611 | |||
612 | Input Parameters: | ||
613 | + bv - the basis vectors context | ||
614 | . obj - optional object | ||
615 | - name - command line option | ||
616 | |||
617 | Level: intermediate | ||
618 | |||
619 | .seealso: BVView(), BVCreate() | ||
620 | @*/ | ||
621 | ✗ | PetscErrorCode BVViewFromOptions(BV bv,PetscObject obj,const char name[]) | |
622 | { | ||
623 | ✗ | PetscFunctionBegin; | |
624 | ✗ | PetscValidHeaderSpecific(bv,BV_CLASSID,1); | |
625 | ✗ | PetscCall(PetscObjectViewFromOptions((PetscObject)bv,obj,name)); | |
626 | ✗ | PetscFunctionReturn(PETSC_SUCCESS); | |
627 | } | ||
628 | |||
629 | /*@C | ||
630 | BVRegister - Adds a new storage format to the BV package. | ||
631 | |||
632 | Not Collective | ||
633 | |||
634 | Input Parameters: | ||
635 | + name - name of a new user-defined BV | ||
636 | - function - routine to create context | ||
637 | |||
638 | Notes: | ||
639 | BVRegister() may be called multiple times to add several user-defined | ||
640 | basis vectors. | ||
641 | |||
642 | Level: advanced | ||
643 | |||
644 | .seealso: BVRegisterAll() | ||
645 | @*/ | ||
646 | 73760 | PetscErrorCode BVRegister(const char *name,PetscErrorCode (*function)(BV)) | |
647 | { | ||
648 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
73760 | PetscFunctionBegin; |
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.
|
73760 | PetscCall(BVInitializePackage()); |
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.
|
73760 | PetscCall(PetscFunctionListAdd(&BVList,name,function)); |
651 |
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.
|
13880 | PetscFunctionReturn(PETSC_SUCCESS); |
652 | } | ||
653 | |||
654 | 697611 | PetscErrorCode BVAllocateWork_Private(BV bv,PetscInt s) | |
655 | { | ||
656 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
697611 | PetscFunctionBegin; |
657 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
697611 | if (s>bv->lwork) { |
658 |
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.
|
171537 | PetscCall(PetscFree(bv->work)); |
659 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
171537 | PetscCall(PetscMalloc1(s,&bv->work)); |
660 | 171537 | bv->lwork = s; | |
661 | } | ||
662 |
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.
|
134005 | PetscFunctionReturn(PETSC_SUCCESS); |
663 | } | ||
664 | |||
665 | #if defined(PETSC_USE_DEBUG) && !defined(PETSC_CLANG_STATIC_ANALYZER) | ||
666 | /* | ||
667 | SlepcDebugBVView - partially view a BV object, to be used from within a debugger. | ||
668 | |||
669 | ini, end: columns to be viewed | ||
670 | s: name of Matlab variable | ||
671 | filename: optionally write output to a file | ||
672 | */ | ||
673 | ✗ | PETSC_UNUSED PetscErrorCode SlepcDebugBVView(BV bv,PetscInt ini,PetscInt end,const char *s,const char *filename) | |
674 | { | ||
675 | ✗ | PetscInt N,m; | |
676 | ✗ | PetscScalar *array; | |
677 | |||
678 | ✗ | PetscFunctionBegin; | |
679 | ✗ | PetscCall(BVGetArray(bv,&array)); | |
680 | ✗ | PetscCall(BVGetSizes(bv,NULL,&N,&m)); | |
681 | ✗ | PetscCall(SlepcDebugViewMatrix(N,end-ini+1,array+ini*N,NULL,bv->ld,s,filename)); | |
682 | ✗ | PetscCall(BVRestoreArray(bv,&array)); | |
683 | ✗ | PetscFunctionReturn(PETSC_SUCCESS); | |
684 | } | ||
685 | #endif | ||
686 |