| 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: [](sec:bv), `SlepcFinalize()`, `BVInitializePackage()` | ||
| 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_slepc()` when using dynamic libraries, and | ||
| 49 | on the first call to `BVCreate()` when using shared or static libraries. | ||
| 50 | |||
| 51 | Note: | ||
| 52 | This function never needs to be called by SLEPc users. | ||
| 53 | |||
| 54 | Level: developer | ||
| 55 | |||
| 56 | .seealso: [](sec:bv), `BV`, `SlepcInitialize()`, `BVFinalizePackage()` | ||
| 57 | @*/ | ||
| 58 | 228245 | PetscErrorCode BVInitializePackage(void) | |
| 59 | { | ||
| 60 | 228245 | char logList[256]; | |
| 61 | 228245 | PetscBool opt,pkg; | |
| 62 | 228245 | PetscClassId classids[1]; | |
| 63 | |||
| 64 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
228245 | PetscFunctionBegin; |
| 65 |
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); |
| 66 | 14752 | BVPackageInitialized = PETSC_TRUE; | |
| 67 | /* Register Classes */ | ||
| 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.
|
14752 | PetscCall(PetscClassIdRegister("Basis Vectors",&BV_CLASSID)); |
| 69 | /* Register Constructors */ | ||
| 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(BVRegisterAll()); |
| 71 | /* Register Events */ | ||
| 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("BVCreate",BV_CLASSID,&BV_Create)); |
| 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("BVCopy",BV_CLASSID,&BV_Copy)); |
| 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("BVMult",BV_CLASSID,&BV_Mult)); |
| 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("BVMultVec",BV_CLASSID,&BV_MultVec)); |
| 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("BVMultInPlace",BV_CLASSID,&BV_MultInPlace)); |
| 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("BVDot",BV_CLASSID,&BV_Dot)); |
| 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("BVDotVec",BV_CLASSID,&BV_DotVec)); |
| 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("BVOrthogonalize",BV_CLASSID,&BV_Orthogonalize)); |
| 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("BVOrthogonalizeV",BV_CLASSID,&BV_OrthogonalizeVec)); |
| 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("BVScale",BV_CLASSID,&BV_Scale)); |
| 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("BVNorm",BV_CLASSID,&BV_Norm)); |
| 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("BVNormVec",BV_CLASSID,&BV_NormVec)); |
| 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("BVNormalize",BV_CLASSID,&BV_Normalize)); |
| 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("BVSetRandom",BV_CLASSID,&BV_SetRandom)); |
| 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("BVMatMult",BV_CLASSID,&BV_MatMult)); |
| 87 |
4/6✓ Branch 0 taken 2 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)); |
| 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.
|
14752 | PetscCall(PetscLogEventRegister("BVMatProject",BV_CLASSID,&BV_MatProject)); |
| 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.
|
14752 | PetscCall(PetscLogEventRegister("BVSVDAndRank",BV_CLASSID,&BV_SVDAndRank)); |
| 90 | /* MPI reduction operation used in BVOrthogonalize */ | ||
| 91 |
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)); |
| 92 |
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)); |
| 93 | /* Process Info */ | ||
| 94 | 14752 | classids[0] = BV_CLASSID; | |
| 95 |
4/6✓ Branch 0 taken 2 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])); |
| 96 | /* Process summary exclusions */ | ||
| 97 |
4/6✓ Branch 0 taken 2 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)); |
| 98 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
14752 | if (opt) { |
| 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.
|
118 | PetscCall(PetscStrInList("bv",logList,',',&pkg)); |
| 100 |
6/8✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 8 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
|
118 | if (pkg) PetscCall(PetscLogEventDeactivateClass(BV_CLASSID)); |
| 101 | } | ||
| 102 | /* Register package finalizer */ | ||
| 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.
|
14752 | PetscCall(PetscRegisterFinalize(BVFinalizePackage)); |
| 104 |
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); |
| 105 | } | ||
| 106 | |||
| 107 | /*@ | ||
| 108 | BVDestroy - Destroys a `BV` context that was created with `BVCreate()`. | ||
| 109 | |||
| 110 | Collective | ||
| 111 | |||
| 112 | Input Parameter: | ||
| 113 | . bv - the basis vectors context | ||
| 114 | |||
| 115 | Level: beginner | ||
| 116 | |||
| 117 | .seealso: [](sec:bv), `BVCreate()` | ||
| 118 | @*/ | ||
| 119 | 635400 | PetscErrorCode BVDestroy(BV *bv) | |
| 120 | { | ||
| 121 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
635400 | PetscFunctionBegin; |
| 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.
|
635400 | if (!*bv) PetscFunctionReturn(PETSC_SUCCESS); |
| 123 |
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); |
| 124 |
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"); |
| 125 |
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); } |
| 126 |
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); |
| 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(PetscLayoutDestroy(&(*bv)->map)); |
| 128 |
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)); |
| 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(MatDestroy(&(*bv)->matrix)); |
| 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(VecDestroy(&(*bv)->Bx)); |
| 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(VecDestroy(&(*bv)->buffer)); |
| 132 |
4/6✓ Branch 0 taken 2 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)); |
| 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(BVDestroy(&(*bv)->L)); |
| 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(BVDestroy(&(*bv)->R)); |
| 135 |
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)); |
| 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(PetscFree2((*bv)->h,(*bv)->c)); |
| 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(VecDestroy(&(*bv)->omega)); |
| 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(MatDestroy(&(*bv)->Acreate)); |
| 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(MatDestroy(&(*bv)->Aget)); |
| 140 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
154440 | PetscCall(MatDestroy(&(*bv)->Abuffer)); |
| 141 |
4/6✓ Branch 0 taken 2 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)); |
| 142 |
4/6✓ Branch 0 taken 2 times.
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 2 times.
|
154440 | PetscCall(PetscHeaderDestroy(bv)); |
| 143 |
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); |
| 144 | } | ||
| 145 | |||
| 146 | /*@ | ||
| 147 | BVCreate - Creates a basis vectors context. | ||
| 148 | |||
| 149 | Collective | ||
| 150 | |||
| 151 | Input Parameter: | ||
| 152 | . comm - MPI communicator | ||
| 153 | |||
| 154 | Output Parameter: | ||
| 155 | . newbv - location to put the basis vectors context | ||
| 156 | |||
| 157 | Note: | ||
| 158 | A basis vectors object of type `BVTENSOR` should be created using | ||
| 159 | the helper function `BVCreateTensor()` instead of this one. | ||
| 160 | |||
| 161 | Level: beginner | ||
| 162 | |||
| 163 | .seealso: [](sec:bv), `BV`, `BVDuplicate()`, `BVDestroy()`, `BVCreateTensor()` , `BVCreateFromMat()` | ||
| 164 | @*/ | ||
| 165 | 154440 | PetscErrorCode BVCreate(MPI_Comm comm,BV *newbv) | |
| 166 | { | ||
| 167 | 154440 | BV bv; | |
| 168 | |||
| 169 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
154440 | PetscFunctionBegin; |
| 170 |
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); |
| 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.
|
154440 | PetscCall(BVInitializePackage()); |
| 172 |
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)); |
| 173 | |||
| 174 | 154440 | bv->map = NULL; | |
| 175 | 154440 | bv->vtype = NULL; | |
| 176 | 154440 | bv->n = -1; | |
| 177 | 154440 | bv->N = -1; | |
| 178 | 154440 | bv->m = 0; | |
| 179 | 154440 | bv->l = 0; | |
| 180 | 154440 | bv->k = 0; | |
| 181 | 154440 | bv->nc = 0; | |
| 182 | 154440 | bv->ld = 0; | |
| 183 | 154440 | bv->orthog_type = BV_ORTHOG_CGS; | |
| 184 | 154440 | bv->orthog_ref = BV_ORTHOG_REFINE_IFNEEDED; | |
| 185 | 154440 | bv->orthog_eta = 0.7071; | |
| 186 | 154440 | bv->orthog_block = BV_ORTHOG_BLOCK_GS; | |
| 187 | 154440 | bv->matrix = NULL; | |
| 188 | 154440 | bv->indef = PETSC_FALSE; | |
| 189 | 154440 | bv->vmm = BV_MATMULT_MAT; | |
| 190 | 154440 | bv->rrandom = PETSC_FALSE; | |
| 191 | 154440 | bv->deftol = 10*PETSC_MACHINE_EPSILON; | |
| 192 | |||
| 193 | 154440 | bv->buffer = NULL; | |
| 194 | 154440 | bv->Abuffer = NULL; | |
| 195 | 154440 | bv->Bx = NULL; | |
| 196 | 154440 | bv->xid = 0; | |
| 197 | 154440 | bv->xstate = 0; | |
| 198 | 154440 | bv->cv[0] = NULL; | |
| 199 | 154440 | bv->cv[1] = NULL; | |
| 200 | 154440 | bv->ci[0] = -1; | |
| 201 | 154440 | bv->ci[1] = -1; | |
| 202 | 154440 | bv->st[0] = -1; | |
| 203 | 154440 | bv->st[1] = -1; | |
| 204 | 154440 | bv->id[0] = 0; | |
| 205 | 154440 | bv->id[1] = 0; | |
| 206 | 154440 | bv->h = NULL; | |
| 207 | 154440 | bv->c = NULL; | |
| 208 | 154440 | bv->omega = NULL; | |
| 209 | 154440 | bv->defersfo = PETSC_FALSE; | |
| 210 | 154440 | bv->cached = NULL; | |
| 211 | 154440 | bv->bvstate = 0; | |
| 212 | 154440 | bv->L = NULL; | |
| 213 | 154440 | bv->R = NULL; | |
| 214 | 154440 | bv->lstate = 0; | |
| 215 | 154440 | bv->rstate = 0; | |
| 216 | 154440 | bv->lsplit = 0; | |
| 217 | 154440 | bv->issplit = 0; | |
| 218 | 154440 | bv->splitparent = NULL; | |
| 219 | 154440 | bv->rand = NULL; | |
| 220 | 154440 | bv->Acreate = NULL; | |
| 221 | 154440 | bv->Aget = NULL; | |
| 222 | 154440 | bv->cuda = PETSC_FALSE; | |
| 223 | 154440 | bv->hip = PETSC_FALSE; | |
| 224 | 154440 | bv->sfocalled = PETSC_FALSE; | |
| 225 | 154440 | bv->work = NULL; | |
| 226 | 154440 | bv->lwork = 0; | |
| 227 | 154440 | bv->data = NULL; | |
| 228 | |||
| 229 | 154440 | *newbv = bv; | |
| 230 |
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); |
| 231 | } | ||
| 232 | |||
| 233 | /*@ | ||
| 234 | BVCreateFromMat - Creates a basis vectors object from a dense `Mat` object. | ||
| 235 | |||
| 236 | Collective | ||
| 237 | |||
| 238 | Input Parameter: | ||
| 239 | . A - a dense tall-skinny matrix | ||
| 240 | |||
| 241 | Output Parameter: | ||
| 242 | . bv - the new basis vectors context | ||
| 243 | |||
| 244 | Notes: | ||
| 245 | The matrix values are copied to the `BV` data storage, memory is not shared. | ||
| 246 | |||
| 247 | The communicator of the `BV` object will be the same as `A`, and so will be | ||
| 248 | the dimensions. | ||
| 249 | |||
| 250 | Level: intermediate | ||
| 251 | |||
| 252 | .seealso: [](sec:bv), `BVCreate()`, `BVDestroy()`, `BVCreateMat()` | ||
| 253 | @*/ | ||
| 254 | 1144 | PetscErrorCode BVCreateFromMat(Mat A,BV *bv) | |
| 255 | { | ||
| 256 | 1144 | PetscInt n,N,k; | |
| 257 | 1144 | VecType vtype; | |
| 258 | |||
| 259 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
1144 | PetscFunctionBegin; |
| 260 |
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); |
| 261 | |||
| 262 |
4/6✓ Branch 0 taken 2 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)); |
| 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(MatGetLocalSize(A,&n,NULL)); |
| 264 |
4/6✓ Branch 0 taken 2 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)); |
| 265 |
4/6✓ Branch 0 taken 2 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)); |
| 266 |
4/6✓ Branch 0 taken 2 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)); |
| 267 |
4/6✓ Branch 0 taken 2 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)); |
| 268 | |||
| 269 | 1144 | (*bv)->Acreate = A; | |
| 270 |
4/6✓ Branch 0 taken 2 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)); |
| 271 |
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); |
| 272 | } | ||
| 273 | |||
| 274 | /*@ | ||
| 275 | BVInsertVec - Insert a vector into the specified column. | ||
| 276 | |||
| 277 | Logically Collective | ||
| 278 | |||
| 279 | Input Parameters: | ||
| 280 | + V - basis vectors | ||
| 281 | . j - the column of `V` to be overwritten | ||
| 282 | - w - the vector to be copied | ||
| 283 | |||
| 284 | Level: intermediate | ||
| 285 | |||
| 286 | .seealso: [](sec:bv), `BVInsertVecs()` | ||
| 287 | @*/ | ||
| 288 | 540781 | PetscErrorCode BVInsertVec(BV V,PetscInt j,Vec w) | |
| 289 | { | ||
| 290 | 540781 | PetscInt n,N; | |
| 291 | 540781 | Vec v; | |
| 292 | |||
| 293 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
540781 | PetscFunctionBegin; |
| 294 |
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); |
| 295 |
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); |
| 296 |
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); |
| 297 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
540781 | PetscValidType(V,1); |
| 298 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
540781 | BVCheckSizes(V,1); |
| 299 |
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); |
| 300 | |||
| 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(VecGetSize(w,&N)); |
| 302 |
4/6✓ Branch 0 taken 2 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)); |
| 303 |
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); |
| 304 |
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); |
| 305 | |||
| 306 |
4/6✓ Branch 0 taken 2 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)); |
| 307 |
4/6✓ Branch 0 taken 2 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)); |
| 308 |
4/6✓ Branch 0 taken 2 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)); |
| 309 |
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)); |
| 310 |
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); |
| 311 | } | ||
| 312 | |||
| 313 | /*@ | ||
| 314 | BVInsertVecs - Insert a set of vectors into the specified columns. | ||
| 315 | |||
| 316 | Collective | ||
| 317 | |||
| 318 | Input Parameters: | ||
| 319 | + V - basis vectors | ||
| 320 | . s - first column of `V` to be overwritten | ||
| 321 | . W - array of vectors to be copied | ||
| 322 | - orth - flag indicating if the vectors must be orthogonalized | ||
| 323 | |||
| 324 | Input/Output Parameter: | ||
| 325 | . m - number of input vectors, on output the number of linearly independent | ||
| 326 | vectors | ||
| 327 | |||
| 328 | Notes: | ||
| 329 | Copies the contents of vectors `W` to `V(:,s:s+n)`. If the orthogonalization | ||
| 330 | flag is set, then the vectors are copied one by one and then orthogonalized | ||
| 331 | against the previous ones. If any of them is linearly dependent then it | ||
| 332 | is discarded and the value of `m` is decreased. | ||
| 333 | |||
| 334 | Level: intermediate | ||
| 335 | |||
| 336 | .seealso: [](sec:bv), `BVInsertVec()`, `BVOrthogonalizeColumn()` | ||
| 337 | @*/ | ||
| 338 | 3707 | PetscErrorCode BVInsertVecs(BV V,PetscInt s,PetscInt *m,Vec W[],PetscBool orth) | |
| 339 | { | ||
| 340 | 3707 | PetscInt n,N,i,ndep; | |
| 341 | 3707 | PetscBool lindep; | |
| 342 | 3707 | PetscReal norm; | |
| 343 | 3707 | Vec v; | |
| 344 | |||
| 345 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
3707 | PetscFunctionBegin; |
| 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(V,BV_CLASSID,1); |
| 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 | PetscValidLogicalCollectiveInt(V,s,2); |
| 348 |
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); |
| 349 |
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); |
| 350 |
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); |
| 351 |
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); |
| 352 |
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); |
| 353 |
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); |
| 354 |
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); |
| 355 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
3707 | PetscValidType(V,1); |
| 356 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
3707 | BVCheckSizes(V,1); |
| 357 |
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); |
| 358 | |||
| 359 |
4/6✓ Branch 0 taken 2 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)); |
| 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.
|
3707 | PetscCall(VecGetLocalSize(*W,&n)); |
| 361 |
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); |
| 362 |
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); |
| 363 |
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); |
| 364 | |||
| 365 | ndep = 0; | ||
| 366 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
8098 | for (i=0;i<*m;i++) { |
| 367 |
4/6✓ Branch 0 taken 2 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)); |
| 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 | PetscCall(VecCopy(W[i],v)); |
| 369 |
4/6✓ Branch 0 taken 2 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)); |
| 370 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
4391 | if (orth) { |
| 371 |
4/6✓ Branch 0 taken 2 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)); |
| 372 |
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) { |
| 373 |
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)); |
| 374 | 12 | ndep++; | |
| 375 |
4/6✓ Branch 0 taken 2 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)); |
| 376 | } | ||
| 377 | } | ||
| 378 | 3707 | *m -= ndep; | |
| 379 |
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)); |
| 380 |
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); |
| 381 | } | ||
| 382 | |||
| 383 | /*@ | ||
| 384 | BVInsertConstraints - Insert a set of vectors as constraints. | ||
| 385 | |||
| 386 | Collective | ||
| 387 | |||
| 388 | Input Parameters: | ||
| 389 | + V - basis vectors | ||
| 390 | - C - set of vectors to be inserted as constraints | ||
| 391 | |||
| 392 | Input/Output Parameter: | ||
| 393 | . nc - number of input vectors, on output the number of linearly independent | ||
| 394 | vectors | ||
| 395 | |||
| 396 | Notes: | ||
| 397 | The constraints are relevant only during orthogonalization. Constraint | ||
| 398 | vectors span a subspace that is deflated in every orthogonalization | ||
| 399 | operation, so they are intended for removing those directions from the | ||
| 400 | orthogonal basis computed in regular `BV` columns. | ||
| 401 | |||
| 402 | Constraints are not stored in regular `BV` columns, but in a special part of | ||
| 403 | the storage. They can be accessed with negative indices in `BVGetColumn()`. | ||
| 404 | |||
| 405 | This operation is DESTRUCTIVE, meaning that all data contained in the | ||
| 406 | columns of `V` is lost. This is typically invoked just after creating the `BV`. | ||
| 407 | Once a set of constraints has been set, it is not allowed to call this | ||
| 408 | function again. | ||
| 409 | |||
| 410 | The vectors are copied one by one and then orthogonalized against the | ||
| 411 | previous ones. If any of them is linearly dependent then it is discarded | ||
| 412 | and the value of `nc` is decreased. The behavior is similar to `BVInsertVecs()`. | ||
| 413 | |||
| 414 | Level: advanced | ||
| 415 | |||
| 416 | .seealso: [](sec:bv), `BVInsertVecs()`, `BVOrthogonalizeColumn()`, `BVGetColumn()`, `BVGetNumConstraints()` | ||
| 417 | @*/ | ||
| 418 | 504 | PetscErrorCode BVInsertConstraints(BV V,PetscInt *nc,Vec C[]) | |
| 419 | { | ||
| 420 | 504 | PetscInt msave; | |
| 421 | |||
| 422 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
504 | PetscFunctionBegin; |
| 423 |
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); |
| 424 |
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); |
| 425 |
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); |
| 426 |
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); |
| 427 |
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); |
| 428 |
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); |
| 429 |
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); |
| 430 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
504 | PetscValidType(V,1); |
| 431 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
504 | BVCheckSizes(V,1); |
| 432 |
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); |
| 433 |
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"); |
| 434 |
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"); |
| 435 |
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"); |
| 436 | |||
| 437 | 504 | msave = V->m; | |
| 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.
|
504 | PetscCall(BVResize(V,*nc+V->m,PETSC_FALSE)); |
| 439 |
4/6✓ Branch 0 taken 2 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)); |
| 440 | 504 | V->nc = *nc; | |
| 441 | 504 | V->m = msave; | |
| 442 | 504 | V->ci[0] = -V->nc-1; | |
| 443 | 504 | V->ci[1] = -V->nc-1; | |
| 444 |
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)); |
| 445 |
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); |
| 446 | } | ||
| 447 | |||
| 448 | /*@ | ||
| 449 | BVSetOptionsPrefix - Sets the prefix used for searching for all | ||
| 450 | `BV` options in the database. | ||
| 451 | |||
| 452 | Logically Collective | ||
| 453 | |||
| 454 | Input Parameters: | ||
| 455 | + bv - the basis vectors context | ||
| 456 | - prefix - the prefix string to prepend to all `BV` option requests | ||
| 457 | |||
| 458 | Notes: | ||
| 459 | A hyphen (-) must NOT be given at the beginning of the prefix name. | ||
| 460 | The first character of all runtime options is AUTOMATICALLY the | ||
| 461 | hyphen. | ||
| 462 | |||
| 463 | Level: advanced | ||
| 464 | |||
| 465 | .seealso: [](sec:bv), `BVAppendOptionsPrefix()`, `BVGetOptionsPrefix()` | ||
| 466 | @*/ | ||
| 467 | 2614 | PetscErrorCode BVSetOptionsPrefix(BV bv,const char prefix[]) | |
| 468 | { | ||
| 469 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
2614 | PetscFunctionBegin; |
| 470 |
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); |
| 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.
|
2614 | PetscCall(PetscObjectSetOptionsPrefix((PetscObject)bv,prefix)); |
| 472 |
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); |
| 473 | } | ||
| 474 | |||
| 475 | /*@ | ||
| 476 | BVAppendOptionsPrefix - Appends to the prefix used for searching for all | ||
| 477 | `BV` options in the database. | ||
| 478 | |||
| 479 | Logically Collective | ||
| 480 | |||
| 481 | Input Parameters: | ||
| 482 | + bv - the basis vectors context | ||
| 483 | - prefix - the prefix string to prepend to all `BV` option requests | ||
| 484 | |||
| 485 | Note: | ||
| 486 | A hyphen (-) must NOT be given at the beginning of the prefix name. | ||
| 487 | The first character of all runtime options is AUTOMATICALLY the | ||
| 488 | hyphen. | ||
| 489 | |||
| 490 | Level: advanced | ||
| 491 | |||
| 492 | .seealso: [](sec:bv), `BVSetOptionsPrefix()`, `BVGetOptionsPrefix()` | ||
| 493 | @*/ | ||
| 494 | 2059 | PetscErrorCode BVAppendOptionsPrefix(BV bv,const char prefix[]) | |
| 495 | { | ||
| 496 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
2059 | PetscFunctionBegin; |
| 497 |
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); |
| 498 |
4/6✓ Branch 0 taken 2 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)); |
| 499 |
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); |
| 500 | } | ||
| 501 | |||
| 502 | /*@ | ||
| 503 | BVGetOptionsPrefix - Gets the prefix used for searching for all | ||
| 504 | `BV` options in the database. | ||
| 505 | |||
| 506 | Not Collective | ||
| 507 | |||
| 508 | Input Parameter: | ||
| 509 | . bv - the basis vectors context | ||
| 510 | |||
| 511 | Output Parameter: | ||
| 512 | . prefix - pointer to the prefix string used is returned | ||
| 513 | |||
| 514 | Level: advanced | ||
| 515 | |||
| 516 | .seealso: [](sec:bv), `BVSetOptionsPrefix()`, `BVAppendOptionsPrefix()` | ||
| 517 | @*/ | ||
| 518 | 21 | PetscErrorCode BVGetOptionsPrefix(BV bv,const char *prefix[]) | |
| 519 | { | ||
| 520 |
0/2✗ Branch 0 not taken.
✗ Branch 1 not taken.
|
21 | PetscFunctionBegin; |
| 521 |
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); |
| 522 |
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); |
| 523 |
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)); |
| 524 | ✗ | PetscFunctionReturn(PETSC_SUCCESS); | |
| 525 | } | ||
| 526 | |||
| 527 | /*@ | ||
| 528 | BVView - Prints the `BV` data structure. | ||
| 529 | |||
| 530 | Collective | ||
| 531 | |||
| 532 | Input Parameters: | ||
| 533 | + bv - the basis vectors context | ||
| 534 | - viewer - optional visualization context | ||
| 535 | |||
| 536 | Notes: | ||
| 537 | The available visualization contexts include | ||
| 538 | + `PETSC_VIEWER_STDOUT_SELF` - standard output (default) | ||
| 539 | - `PETSC_VIEWER_STDOUT_WORLD` - synchronized standard output where only the | ||
| 540 | first process opens the file; all other processes send their data to the | ||
| 541 | first one to print | ||
| 542 | |||
| 543 | The user can open an alternative visualization context with `PetscViewerASCIIOpen()` | ||
| 544 | to output to a specified file. | ||
| 545 | |||
| 546 | Use `BVViewFromOptions()` to allow the user to select many different `PetscViewerType` | ||
| 547 | and formats from the options database. | ||
| 548 | |||
| 549 | Level: beginner | ||
| 550 | |||
| 551 | .seealso: [](sec:bv), `BVCreate()` | ||
| 552 | @*/ | ||
| 553 | 964 | PetscErrorCode BVView(BV bv,PetscViewer viewer) | |
| 554 | { | ||
| 555 | 964 | PetscBool isascii; | |
| 556 | 964 | PetscViewerFormat format; | |
| 557 | 964 | const char *orthname[2] = {"classical","modified"}; | |
| 558 | 964 | const char *refname[3] = {"if needed","never","always"}; | |
| 559 | |||
| 560 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
964 | PetscFunctionBegin; |
| 561 |
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); |
| 562 |
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)); |
| 563 |
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); |
| 564 | |||
| 565 |
4/6✓ Branch 0 taken 2 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)); |
| 566 |
1/2✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
|
964 | if (isascii) { |
| 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.
|
964 | PetscCall(PetscObjectPrintClassNamePrefixType((PetscObject)bv,viewer)); |
| 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.
|
964 | PetscCall(PetscViewerGetFormat(viewer,&format)); |
| 569 |
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) { |
| 570 |
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)":"")); |
| 571 |
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)); |
| 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.
|
404 | PetscCall(PetscViewerASCIIPrintf(viewer," vector orthogonalization method: %s Gram-Schmidt\n",orthname[bv->orthog_type])); |
| 573 |
1/3✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
|
404 | switch (bv->orthog_ref) { |
| 574 | 404 | case BV_ORTHOG_REFINE_IFNEEDED: | |
| 575 |
4/6✓ Branch 0 taken 2 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)); |
| 576 | break; | ||
| 577 | ✗ | case BV_ORTHOG_REFINE_NEVER: | |
| 578 | case BV_ORTHOG_REFINE_ALWAYS: | ||
| 579 | ✗ | PetscCall(PetscViewerASCIIPrintf(viewer," orthogonalization refinement: %s\n",refname[bv->orthog_ref])); | |
| 580 | break; | ||
| 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.
|
404 | PetscCall(PetscViewerASCIIPrintf(viewer," block orthogonalization method: %s\n",BVOrthogBlockTypes[bv->orthog_block])); |
| 583 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
|
404 | if (bv->matrix) { |
| 584 | ✗ | if (bv->indef) PetscCall(PetscViewerASCIIPrintf(viewer," indefinite inner product\n")); | |
| 585 | ✗ | else PetscCall(PetscViewerASCIIPrintf(viewer," non-standard inner product\n")); | |
| 586 | ✗ | PetscCall(PetscViewerASCIIPrintf(viewer," tolerance for definite inner product: %g\n",(double)bv->deftol)); | |
| 587 | ✗ | PetscCall(PetscViewerASCIIPrintf(viewer," inner product matrix:\n")); | |
| 588 | ✗ | PetscCall(PetscViewerPushFormat(viewer,PETSC_VIEWER_ASCII_INFO)); | |
| 589 | ✗ | PetscCall(PetscViewerASCIIPushTab(viewer)); | |
| 590 | ✗ | PetscCall(MatView(bv->matrix,viewer)); | |
| 591 | ✗ | PetscCall(PetscViewerASCIIPopTab(viewer)); | |
| 592 | ✗ | PetscCall(PetscViewerPopFormat(viewer)); | |
| 593 | } | ||
| 594 |
2/4✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
404 | switch (bv->vmm) { |
| 595 | 48 | case BV_MATMULT_VECS: | |
| 596 |
4/6✓ Branch 0 taken 2 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")); |
| 597 | break; | ||
| 598 | 356 | case BV_MATMULT_MAT: | |
| 599 |
4/6✓ Branch 0 taken 2 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")); |
| 600 | break; | ||
| 601 | ✗ | case BV_MATMULT_MAT_SAVE: | |
| 602 | ✗ | PetscCall(PetscViewerASCIIPrintf(viewer," mat_save is deprecated, use mat\n")); | |
| 603 | break; | ||
| 604 | } | ||
| 605 |
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")); |
| 606 | } | ||
| 607 | } | ||
| 608 |
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); |
| 609 |
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); |
| 610 | } | ||
| 611 | |||
| 612 | /*@ | ||
| 613 | BVViewFromOptions - View (print) a `BV` object based on values in the options database. | ||
| 614 | |||
| 615 | Collective | ||
| 616 | |||
| 617 | Input Parameters: | ||
| 618 | + bv - the basis vectors context | ||
| 619 | . obj - optional object that provides the options prefix used to query the options database | ||
| 620 | - name - command line option | ||
| 621 | |||
| 622 | Level: intermediate | ||
| 623 | |||
| 624 | .seealso: [](sec:bv), `BVView()`, `BVCreate()`, `PetscObjectViewFromOptions()` | ||
| 625 | @*/ | ||
| 626 | ✗ | PetscErrorCode BVViewFromOptions(BV bv,PetscObject obj,const char name[]) | |
| 627 | { | ||
| 628 | ✗ | PetscFunctionBegin; | |
| 629 | ✗ | PetscValidHeaderSpecific(bv,BV_CLASSID,1); | |
| 630 | ✗ | PetscCall(PetscObjectViewFromOptions((PetscObject)bv,obj,name)); | |
| 631 | ✗ | PetscFunctionReturn(PETSC_SUCCESS); | |
| 632 | } | ||
| 633 | |||
| 634 | /*@C | ||
| 635 | BVRegister - Adds a new storage format to the `BV` package. | ||
| 636 | |||
| 637 | Not Collective | ||
| 638 | |||
| 639 | Input Parameters: | ||
| 640 | + name - name of a new user-defined `BV` | ||
| 641 | - function - routine to create context | ||
| 642 | |||
| 643 | Notes: | ||
| 644 | `BVRegister()` may be called multiple times to add several user-defined | ||
| 645 | basis vectors. | ||
| 646 | |||
| 647 | Level: advanced | ||
| 648 | |||
| 649 | .seealso: [](sec:bv), `BVRegisterAll()` | ||
| 650 | @*/ | ||
| 651 | 73760 | PetscErrorCode BVRegister(const char *name,PetscErrorCode (*function)(BV)) | |
| 652 | { | ||
| 653 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
73760 | PetscFunctionBegin; |
| 654 |
4/6✓ Branch 0 taken 2 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()); |
| 655 |
4/6✓ Branch 0 taken 2 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)); |
| 656 |
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); |
| 657 | } | ||
| 658 | |||
| 659 | 697298 | PetscErrorCode BVAllocateWork_Private(BV bv,PetscInt s) | |
| 660 | { | ||
| 661 |
1/2✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
|
697298 | PetscFunctionBegin; |
| 662 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 10 times.
|
697298 | if (s>bv->lwork) { |
| 663 |
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)); |
| 664 |
4/6✓ Branch 0 taken 2 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)); |
| 665 | 171537 | bv->lwork = s; | |
| 666 | } | ||
| 667 |
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.
|
134134 | PetscFunctionReturn(PETSC_SUCCESS); |
| 668 | } | ||
| 669 | |||
| 670 | #if defined(PETSC_USE_DEBUG) && !defined(PETSC_CLANG_STATIC_ANALYZER) | ||
| 671 | /* | ||
| 672 | SlepcDebugBVView - partially view a BV object, to be used from within a debugger. | ||
| 673 | |||
| 674 | ini, end: columns to be viewed | ||
| 675 | s: name of Matlab variable | ||
| 676 | filename: optionally write output to a file | ||
| 677 | */ | ||
| 678 | ✗ | PETSC_UNUSED PetscErrorCode SlepcDebugBVView(BV bv,PetscInt ini,PetscInt end,const char *s,const char *filename) | |
| 679 | { | ||
| 680 | ✗ | PetscInt N,m; | |
| 681 | ✗ | PetscScalar *array; | |
| 682 | |||
| 683 | ✗ | PetscFunctionBegin; | |
| 684 | ✗ | PetscCall(BVGetArray(bv,&array)); | |
| 685 | ✗ | PetscCall(BVGetSizes(bv,NULL,&N,&m)); | |
| 686 | ✗ | PetscCall(SlepcDebugViewMatrix(N,end-ini+1,array+ini*N,NULL,bv->ld,s,filename)); | |
| 687 | ✗ | PetscCall(BVRestoreArray(bv,&array)); | |
| 688 | ✗ | PetscFunctionReturn(PETSC_SUCCESS); | |
| 689 | } | ||
| 690 | #endif | ||
| 691 |