Lines Matching +full:- +full:b

7   Mat_SeqAIJ     *a = (Mat_SeqAIJ *)A->data;  in MatICCFactorSymbolic_SeqAIJ_Bas()
8 Mat_SeqSBAIJ *b; in MatICCFactorSymbolic_SeqAIJ_Bas() local
10 PetscInt reallocs = 0, i, *ai = a->i, *aj = a->j, am = A->rmap->n, *ui; in MatICCFactorSymbolic_SeqAIJ_Bas()
14 PetscReal fill = info->fill, levels = info->levels; in MatICCFactorSymbolic_SeqAIJ_Bas()
19->rmap->n == A->cmap->n, PETSC_COMM_SELF, PETSC_ERR_ARG_WRONG, "Must be square matrix, rows %" Pet… in MatICCFactorSymbolic_SeqAIJ_Bas()
30 for (i = 0; i < am; i++) ui[i + 1] = ui[i] + ai[i + 1] - adiag[i]; in MatICCFactorSymbolic_SeqAIJ_Bas()
34 aj = a->j + adiag[i]; in MatICCFactorSymbolic_SeqAIJ_Bas()
35 ncols = ui[i + 1] - ui[i]; in MatICCFactorSymbolic_SeqAIJ_Bas()
62 b = (Mat_SeqSBAIJ *)fact->data; in MatICCFactorSymbolic_SeqAIJ_Bas()
63 PetscCall(PetscMalloc1(ui[am], &b->a)); in MatICCFactorSymbolic_SeqAIJ_Bas()
65 b->j = uj; in MatICCFactorSymbolic_SeqAIJ_Bas()
66 b->i = ui; in MatICCFactorSymbolic_SeqAIJ_Bas()
67 b->diag = NULL; in MatICCFactorSymbolic_SeqAIJ_Bas()
68 b->ilen = NULL; in MatICCFactorSymbolic_SeqAIJ_Bas()
69 b->imax = NULL; in MatICCFactorSymbolic_SeqAIJ_Bas()
70 b->row = perm; in MatICCFactorSymbolic_SeqAIJ_Bas()
71 b->col = perm; in MatICCFactorSymbolic_SeqAIJ_Bas()
76 b->icol = iperm; in MatICCFactorSymbolic_SeqAIJ_Bas()
77 b->pivotinblocks = PETSC_FALSE; /* need to get from MatFactorInfo */ in MatICCFactorSymbolic_SeqAIJ_Bas()
78 PetscCall(PetscMalloc1(am, &b->solve_work)); in MatICCFactorSymbolic_SeqAIJ_Bas()
79 b->maxnz = b->nz = ui[am]; in MatICCFactorSymbolic_SeqAIJ_Bas()
80 b->free_a = PETSC_TRUE; in MatICCFactorSymbolic_SeqAIJ_Bas()
81 b->free_ij = PETSC_TRUE; in MatICCFactorSymbolic_SeqAIJ_Bas()
83 fact->info.factor_mallocs = reallocs; in MatICCFactorSymbolic_SeqAIJ_Bas()
84 fact->info.fill_ratio_given = fill; in MatICCFactorSymbolic_SeqAIJ_Bas()
86 fact->info.fill_ratio_needed = (PetscReal)ui[am] / (PetscReal)ai[am]; in MatICCFactorSymbolic_SeqAIJ_Bas()
88 fact->info.fill_ratio_needed = 0.0; in MatICCFactorSymbolic_SeqAIJ_Bas()
90 /* fact->ops->choleskyfactornumeric = MatCholeskyFactorNumeric_SeqAIJ_inplace; */ in MatICCFactorSymbolic_SeqAIJ_Bas()
94 static PetscErrorCode MatCholeskyFactorNumeric_SeqAIJ_Bas(Mat B, Mat A, const MatFactorInfo *info) in MatCholeskyFactorNumeric_SeqAIJ_Bas() argument
96 Mat C = B; in MatCholeskyFactorNumeric_SeqAIJ_Bas()
97 Mat_SeqSBAIJ *b = (Mat_SeqSBAIJ *)C->data; in MatCholeskyFactorNumeric_SeqAIJ_Bas() local
98 IS ip = b->row, iip = b->icol; in MatCholeskyFactorNumeric_SeqAIJ_Bas()
100 PetscInt mbs = A->rmap->n, *bi = b->i, *bj = b->j; in MatCholeskyFactorNumeric_SeqAIJ_Bas()
101 MatScalar *ba = b->a; in MatCholeskyFactorNumeric_SeqAIJ_Bas()
102 PetscReal shiftnz = info->shiftamount; in MatCholeskyFactorNumeric_SeqAIJ_Bas()
103 PetscReal droptol = -1; in MatCholeskyFactorNumeric_SeqAIJ_Bas()
109 /* Reduce memory requirements: erase values of B-matrix */ in MatCholeskyFactorNumeric_SeqAIJ_Bas()
111 /* Compress (maximum) sparseness pattern of B-matrix */ in MatCholeskyFactorNumeric_SeqAIJ_Bas()
122 if (info->usedt) droptol = info->dt; in MatCholeskyFactorNumeric_SeqAIJ_Bas()
130 if (shiftnz < 1e-5) shiftnz = 1e-5; in MatCholeskyFactorNumeric_SeqAIJ_Bas()
145 b->i = bi; in MatCholeskyFactorNumeric_SeqAIJ_Bas()
146 b->j = bj; in MatCholeskyFactorNumeric_SeqAIJ_Bas()
147 b->a = ba; in MatCholeskyFactorNumeric_SeqAIJ_Bas()
153 B->ops->solve = MatSolve_SeqSBAIJ_1_NaturalOrdering_inplace; in MatCholeskyFactorNumeric_SeqAIJ_Bas()
154 B->ops->solvetranspose = MatSolve_SeqSBAIJ_1_NaturalOrdering_inplace; in MatCholeskyFactorNumeric_SeqAIJ_Bas()
155 B->ops->forwardsolve = MatForwardSolve_SeqSBAIJ_1_NaturalOrdering_inplace; in MatCholeskyFactorNumeric_SeqAIJ_Bas()
156 B->ops->backwardsolve = MatBackwardSolve_SeqSBAIJ_1_NaturalOrdering_inplace; in MatCholeskyFactorNumeric_SeqAIJ_Bas()
158 B->ops->solve = MatSolve_SeqSBAIJ_1_inplace; in MatCholeskyFactorNumeric_SeqAIJ_Bas()
159 B->ops->solvetranspose = MatSolve_SeqSBAIJ_1_inplace; in MatCholeskyFactorNumeric_SeqAIJ_Bas()
160 B->ops->forwardsolve = MatForwardSolve_SeqSBAIJ_1_inplace; in MatCholeskyFactorNumeric_SeqAIJ_Bas()
161 B->ops->backwardsolve = MatBackwardSolve_SeqSBAIJ_1_inplace; in MatCholeskyFactorNumeric_SeqAIJ_Bas()
164 C->assembled = PETSC_TRUE; in MatCholeskyFactorNumeric_SeqAIJ_Bas()
165 C->preallocated = PETSC_TRUE; in MatCholeskyFactorNumeric_SeqAIJ_Bas()
167 PetscCall(PetscLogFlops(C->rmap->n)); in MatCholeskyFactorNumeric_SeqAIJ_Bas()
178 PETSC_INTERN PetscErrorCode MatGetFactor_seqaij_bas(Mat A, MatFactorType ftype, Mat *B) in MatGetFactor_seqaij_bas() argument
180 PetscInt n = A->rmap->n; in MatGetFactor_seqaij_bas()
183 PetscCall(MatCreate(PetscObjectComm((PetscObject)A), B)); in MatGetFactor_seqaij_bas()
184 PetscCall(MatSetSizes(*B, n, n, n, n)); in MatGetFactor_seqaij_bas()
186 PetscCall(MatSetType(*B, MATSEQSBAIJ)); in MatGetFactor_seqaij_bas()
187 PetscCall(MatSeqSBAIJSetPreallocation(*B, 1, MAT_SKIP_ALLOCATION, NULL)); in MatGetFactor_seqaij_bas()
189 (*B)->ops->iccfactorsymbolic = MatICCFactorSymbolic_SeqAIJ_Bas; in MatGetFactor_seqaij_bas()
190 (*B)->ops->choleskyfactornumeric = MatCholeskyFactorNumeric_SeqAIJ_Bas; in MatGetFactor_seqaij_bas()
191 …PetscCall(PetscObjectComposeFunction((PetscObject)*B, "MatFactorGetSolverType_C", MatFactorGetSolv… in MatGetFactor_seqaij_bas()
192 PetscCall(PetscStrallocpy(MATORDERINGND, (char **)&(*B)->preferredordering[MAT_FACTOR_LU])); in MatGetFactor_seqaij_bas()
193 PetscCall(PetscStrallocpy(MATORDERINGND, (char **)&(*B)->preferredordering[MAT_FACTOR_CHOLESKY])); in MatGetFactor_seqaij_bas()
194 (*B)->factortype = ftype; in MatGetFactor_seqaij_bas()
196 PetscCall(PetscFree((*B)->solvertype)); in MatGetFactor_seqaij_bas()
197 PetscCall(PetscStrallocpy(MATSOLVERBAS, &(*B)->solvertype)); in MatGetFactor_seqaij_bas()
198 (*B)->canuseordering = PETSC_TRUE; in MatGetFactor_seqaij_bas()
199 PetscCall(PetscStrallocpy(MATORDERINGNATURAL, (char **)&(*B)->preferredordering[MAT_FACTOR_ICC])); in MatGetFactor_seqaij_bas()