Lines Matching +full:- +full:j
12 Mat_SeqBAIJ *a = (Mat_SeqBAIJ *)A->data, *b = (Mat_SeqBAIJ *)C->data; in MatILUFactorNumeric_SeqBAIJ_3_inplace()
13 IS isrow = b->row, isicol = b->icol; in MatILUFactorNumeric_SeqBAIJ_3_inplace()
15 PetscInt i, j, n = a->mbs, *bi = b->i, *bj = b->j; in MatILUFactorNumeric_SeqBAIJ_3_inplace() local
16 PetscInt *ajtmpold, *ajtmp, nz, row, *ai = a->i, *aj = a->j; in MatILUFactorNumeric_SeqBAIJ_3_inplace()
22 MatScalar *ba = b->a, *aa = a->a; in MatILUFactorNumeric_SeqBAIJ_3_inplace()
23 PetscReal shift = info->shiftamount; in MatILUFactorNumeric_SeqBAIJ_3_inplace()
28 A->factortype = MAT_FACTOR_NONE; in MatILUFactorNumeric_SeqBAIJ_3_inplace()
30 A->factortype = MAT_FACTOR_ILU; in MatILUFactorNumeric_SeqBAIJ_3_inplace()
34 allowzeropivot = PetscNot(A->erroriffailure); in MatILUFactorNumeric_SeqBAIJ_3_inplace()
37 nz = bi[i + 1] - bi[i]; in MatILUFactorNumeric_SeqBAIJ_3_inplace()
39 for (j = 0; j < nz; j++) { in MatILUFactorNumeric_SeqBAIJ_3_inplace()
40 x = rtmp + 9 * ajtmp[j]; in MatILUFactorNumeric_SeqBAIJ_3_inplace()
45 nz = ai[idx + 1] - ai[idx]; in MatILUFactorNumeric_SeqBAIJ_3_inplace()
48 for (j = 0; j < nz; j++) { in MatILUFactorNumeric_SeqBAIJ_3_inplace()
49 x = rtmp + 9 * ic[ajtmpold[j]]; in MatILUFactorNumeric_SeqBAIJ_3_inplace()
96 nz = bi[row + 1] - diag_offset[row] - 1; in MatILUFactorNumeric_SeqBAIJ_3_inplace()
98 for (j = 0; j < nz; j++) { in MatILUFactorNumeric_SeqBAIJ_3_inplace()
108 x = rtmp + 9 * pj[j]; in MatILUFactorNumeric_SeqBAIJ_3_inplace()
109 x[0] -= m1 * x1 + m4 * x2 + m7 * x3; in MatILUFactorNumeric_SeqBAIJ_3_inplace()
110 x[1] -= m2 * x1 + m5 * x2 + m8 * x3; in MatILUFactorNumeric_SeqBAIJ_3_inplace()
111 x[2] -= m3 * x1 + m6 * x2 + m9 * x3; in MatILUFactorNumeric_SeqBAIJ_3_inplace()
113 x[3] -= m1 * x4 + m4 * x5 + m7 * x6; in MatILUFactorNumeric_SeqBAIJ_3_inplace()
114 x[4] -= m2 * x4 + m5 * x5 + m8 * x6; in MatILUFactorNumeric_SeqBAIJ_3_inplace()
115 x[5] -= m3 * x4 + m6 * x5 + m9 * x6; in MatILUFactorNumeric_SeqBAIJ_3_inplace()
117 x[6] -= m1 * x7 + m4 * x8 + m7 * x9; in MatILUFactorNumeric_SeqBAIJ_3_inplace()
118 x[7] -= m2 * x7 + m5 * x8 + m8 * x9; in MatILUFactorNumeric_SeqBAIJ_3_inplace()
119 x[8] -= m3 * x7 + m6 * x8 + m9 * x9; in MatILUFactorNumeric_SeqBAIJ_3_inplace()
126 /* finished row so stick it into b->a */ in MatILUFactorNumeric_SeqBAIJ_3_inplace()
129 nz = bi[i + 1] - bi[i]; in MatILUFactorNumeric_SeqBAIJ_3_inplace()
130 for (j = 0; j < nz; j++) { in MatILUFactorNumeric_SeqBAIJ_3_inplace()
131 x = rtmp + 9 * pj[j]; in MatILUFactorNumeric_SeqBAIJ_3_inplace()
146 if (zeropivotdetected) C->factorerrortype = MAT_FACTOR_NUMERIC_ZEROPIVOT; in MatILUFactorNumeric_SeqBAIJ_3_inplace()
153 C->ops->solve = MatSolve_SeqBAIJ_3_inplace; in MatILUFactorNumeric_SeqBAIJ_3_inplace()
154 C->ops->solvetranspose = MatSolveTranspose_SeqBAIJ_3_inplace; in MatILUFactorNumeric_SeqBAIJ_3_inplace()
155 C->assembled = PETSC_TRUE; in MatILUFactorNumeric_SeqBAIJ_3_inplace()
157 …PetscCall(PetscLogFlops(1.333333333333 * 3 * 3 * 3 * b->mbs)); /* from inverting diagonal blocks */ in MatILUFactorNumeric_SeqBAIJ_3_inplace()
161 /* MatLUFactorNumeric_SeqBAIJ_3 -
162 copied from MatLUFactorNumeric_SeqBAIJ_N_inplace() and manually re-implemented
170 Mat_SeqBAIJ *a = (Mat_SeqBAIJ *)A->data, *b = (Mat_SeqBAIJ *)C->data; in MatLUFactorNumeric_SeqBAIJ_3()
171 IS isrow = b->row, isicol = b->icol; in MatLUFactorNumeric_SeqBAIJ_3()
173 PetscInt i, j, k, nz, nzL, row; in MatLUFactorNumeric_SeqBAIJ_3() local
174 const PetscInt n = a->mbs, *ai = a->i, *aj = a->j, *bi = b->i, *bj = b->j; in MatLUFactorNumeric_SeqBAIJ_3()
175 const PetscInt *ajtmp, *bjtmp, *bdiag = b->diag, *pj, bs2 = a->bs2; in MatLUFactorNumeric_SeqBAIJ_3()
176 MatScalar *rtmp, *pc, *mwork, *v, *pv, *aa = a->a; in MatLUFactorNumeric_SeqBAIJ_3()
178 PetscReal shift = info->shiftamount; in MatLUFactorNumeric_SeqBAIJ_3()
184 allowzeropivot = PetscNot(A->erroriffailure); in MatLUFactorNumeric_SeqBAIJ_3()
193 nz = bi[i + 1] - bi[i]; in MatLUFactorNumeric_SeqBAIJ_3()
195 for (j = 0; j < nz; j++) PetscCall(PetscArrayzero(rtmp + bs2 * bjtmp[j], bs2)); in MatLUFactorNumeric_SeqBAIJ_3()
198 nz = bdiag[i] - bdiag[i + 1]; in MatLUFactorNumeric_SeqBAIJ_3()
200 for (j = 0; j < nz; j++) PetscCall(PetscArrayzero(rtmp + bs2 * bjtmp[j], bs2)); in MatLUFactorNumeric_SeqBAIJ_3()
203 nz = ai[r[i] + 1] - ai[r[i]]; in MatLUFactorNumeric_SeqBAIJ_3()
206 for (j = 0; j < nz; j++) PetscCall(PetscArraycpy(rtmp + bs2 * ic[ajtmp[j]], v + bs2 * j, bs2)); in MatLUFactorNumeric_SeqBAIJ_3()
210 nzL = bi[i + 1] - bi[i]; in MatLUFactorNumeric_SeqBAIJ_3()
214 for (flg = 0, j = 0; j < bs2; j++) { in MatLUFactorNumeric_SeqBAIJ_3()
215 if (pc[j] != 0.0) { in MatLUFactorNumeric_SeqBAIJ_3()
221 pv = b->a + bs2 * bdiag[row]; in MatLUFactorNumeric_SeqBAIJ_3()
225 pj = b->j + bdiag[row + 1] + 1; /* beginning of U(row,:) */ in MatLUFactorNumeric_SeqBAIJ_3()
226 pv = b->a + bs2 * (bdiag[row + 1] + 1); in MatLUFactorNumeric_SeqBAIJ_3()
227 nz = bdiag[row] - bdiag[row + 1] - 1; /* num of entries in U(row,:) excluding diag */ in MatLUFactorNumeric_SeqBAIJ_3()
228 for (j = 0; j < nz; j++) { in MatLUFactorNumeric_SeqBAIJ_3()
229 /* PetscKernel_A_gets_A_minus_B_times_C(bs,rtmp+bs2*pj[j],pc,pv+bs2*j); */ in MatLUFactorNumeric_SeqBAIJ_3()
230 /* rtmp+bs2*pj[j] = rtmp+bs2*pj[j] - (*pc)*(pv+bs2*j) */ in MatLUFactorNumeric_SeqBAIJ_3()
231 v = rtmp + bs2 * pj[j]; in MatLUFactorNumeric_SeqBAIJ_3()
235 PetscCall(PetscLogFlops(54.0 * nz + 45)); /* flops = 2*bs^3*nz + 2*bs^3 - bs2) */ in MatLUFactorNumeric_SeqBAIJ_3()
239 /* finished row so stick it into b->a */ in MatLUFactorNumeric_SeqBAIJ_3()
241 pv = b->a + bs2 * bi[i]; in MatLUFactorNumeric_SeqBAIJ_3()
242 pj = b->j + bi[i]; in MatLUFactorNumeric_SeqBAIJ_3()
243 nz = bi[i + 1] - bi[i]; in MatLUFactorNumeric_SeqBAIJ_3()
244 for (j = 0; j < nz; j++) PetscCall(PetscArraycpy(pv + bs2 * j, rtmp + bs2 * pj[j], bs2)); in MatLUFactorNumeric_SeqBAIJ_3()
247 pv = b->a + bs2 * bdiag[i]; in MatLUFactorNumeric_SeqBAIJ_3()
248 pj = b->j + bdiag[i]; in MatLUFactorNumeric_SeqBAIJ_3()
251 if (zeropivotdetected) B->factorerrortype = MAT_FACTOR_NUMERIC_ZEROPIVOT; in MatLUFactorNumeric_SeqBAIJ_3()
254 pj = b->j + bdiag[i + 1] + 1; in MatLUFactorNumeric_SeqBAIJ_3()
255 pv = b->a + bs2 * (bdiag[i + 1] + 1); in MatLUFactorNumeric_SeqBAIJ_3()
256 nz = bdiag[i] - bdiag[i + 1] - 1; in MatLUFactorNumeric_SeqBAIJ_3()
257 for (j = 0; j < nz; j++) PetscCall(PetscArraycpy(pv + bs2 * j, rtmp + bs2 * pj[j], bs2)); in MatLUFactorNumeric_SeqBAIJ_3()
264 C->ops->solve = MatSolve_SeqBAIJ_3; in MatLUFactorNumeric_SeqBAIJ_3()
265 C->ops->solvetranspose = MatSolveTranspose_SeqBAIJ_3; in MatLUFactorNumeric_SeqBAIJ_3()
266 C->assembled = PETSC_TRUE; in MatLUFactorNumeric_SeqBAIJ_3()
274 Mat_SeqBAIJ *a = (Mat_SeqBAIJ *)A->data, *b = (Mat_SeqBAIJ *)C->data; in MatILUFactorNumeric_SeqBAIJ_3_NaturalOrdering_inplace()
275 PetscInt i, j, n = a->mbs, *bi = b->i, *bj = b->j; in MatILUFactorNumeric_SeqBAIJ_3_NaturalOrdering_inplace() local
278 PetscInt *ai = a->i, *aj = a->j, *pj; in MatILUFactorNumeric_SeqBAIJ_3_NaturalOrdering_inplace()
282 MatScalar *ba = b->a, *aa = a->a; in MatILUFactorNumeric_SeqBAIJ_3_NaturalOrdering_inplace()
283 PetscReal shift = info->shiftamount; in MatILUFactorNumeric_SeqBAIJ_3_NaturalOrdering_inplace()
288 A->factortype = MAT_FACTOR_NONE; in MatILUFactorNumeric_SeqBAIJ_3_NaturalOrdering_inplace()
290 A->factortype = MAT_FACTOR_ILU; in MatILUFactorNumeric_SeqBAIJ_3_NaturalOrdering_inplace()
292 allowzeropivot = PetscNot(A->erroriffailure); in MatILUFactorNumeric_SeqBAIJ_3_NaturalOrdering_inplace()
295 nz = bi[i + 1] - bi[i]; in MatILUFactorNumeric_SeqBAIJ_3_NaturalOrdering_inplace()
297 for (j = 0; j < nz; j++) { in MatILUFactorNumeric_SeqBAIJ_3_NaturalOrdering_inplace()
298 x = rtmp + 9 * ajtmp[j]; in MatILUFactorNumeric_SeqBAIJ_3_NaturalOrdering_inplace()
302 nz = ai[i + 1] - ai[i]; in MatILUFactorNumeric_SeqBAIJ_3_NaturalOrdering_inplace()
305 for (j = 0; j < nz; j++) { in MatILUFactorNumeric_SeqBAIJ_3_NaturalOrdering_inplace()
306 x = rtmp + 9 * ajtmpold[j]; in MatILUFactorNumeric_SeqBAIJ_3_NaturalOrdering_inplace()
354 nz = bi[row + 1] - diag_offset[row] - 1; in MatILUFactorNumeric_SeqBAIJ_3_NaturalOrdering_inplace()
356 for (j = 0; j < nz; j++) { in MatILUFactorNumeric_SeqBAIJ_3_NaturalOrdering_inplace()
366 x = rtmp + 9 * pj[j]; in MatILUFactorNumeric_SeqBAIJ_3_NaturalOrdering_inplace()
367 x[0] -= m1 * x1 + m4 * x2 + m7 * x3; in MatILUFactorNumeric_SeqBAIJ_3_NaturalOrdering_inplace()
368 x[1] -= m2 * x1 + m5 * x2 + m8 * x3; in MatILUFactorNumeric_SeqBAIJ_3_NaturalOrdering_inplace()
369 x[2] -= m3 * x1 + m6 * x2 + m9 * x3; in MatILUFactorNumeric_SeqBAIJ_3_NaturalOrdering_inplace()
371 x[3] -= m1 * x4 + m4 * x5 + m7 * x6; in MatILUFactorNumeric_SeqBAIJ_3_NaturalOrdering_inplace()
372 x[4] -= m2 * x4 + m5 * x5 + m8 * x6; in MatILUFactorNumeric_SeqBAIJ_3_NaturalOrdering_inplace()
373 x[5] -= m3 * x4 + m6 * x5 + m9 * x6; in MatILUFactorNumeric_SeqBAIJ_3_NaturalOrdering_inplace()
375 x[6] -= m1 * x7 + m4 * x8 + m7 * x9; in MatILUFactorNumeric_SeqBAIJ_3_NaturalOrdering_inplace()
376 x[7] -= m2 * x7 + m5 * x8 + m8 * x9; in MatILUFactorNumeric_SeqBAIJ_3_NaturalOrdering_inplace()
377 x[8] -= m3 * x7 + m6 * x8 + m9 * x9; in MatILUFactorNumeric_SeqBAIJ_3_NaturalOrdering_inplace()
384 /* finished row so stick it into b->a */ in MatILUFactorNumeric_SeqBAIJ_3_NaturalOrdering_inplace()
387 nz = bi[i + 1] - bi[i]; in MatILUFactorNumeric_SeqBAIJ_3_NaturalOrdering_inplace()
388 for (j = 0; j < nz; j++) { in MatILUFactorNumeric_SeqBAIJ_3_NaturalOrdering_inplace()
389 x = rtmp + 9 * pj[j]; in MatILUFactorNumeric_SeqBAIJ_3_NaturalOrdering_inplace()
404 if (zeropivotdetected) C->factorerrortype = MAT_FACTOR_NUMERIC_ZEROPIVOT; in MatILUFactorNumeric_SeqBAIJ_3_NaturalOrdering_inplace()
409 C->ops->solve = MatSolve_SeqBAIJ_3_NaturalOrdering_inplace; in MatILUFactorNumeric_SeqBAIJ_3_NaturalOrdering_inplace()
410 C->ops->solvetranspose = MatSolveTranspose_SeqBAIJ_3_NaturalOrdering_inplace; in MatILUFactorNumeric_SeqBAIJ_3_NaturalOrdering_inplace()
411 C->assembled = PETSC_TRUE; in MatILUFactorNumeric_SeqBAIJ_3_NaturalOrdering_inplace()
413 …PetscCall(PetscLogFlops(1.333333333333 * 3 * 3 * 3 * b->mbs)); /* from inverting diagonal blocks */ in MatILUFactorNumeric_SeqBAIJ_3_NaturalOrdering_inplace()
418 MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering -
424 Mat_SeqBAIJ *a = (Mat_SeqBAIJ *)A->data, *b = (Mat_SeqBAIJ *)C->data; in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
425 PetscInt i, j, k, nz, nzL, row; in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering() local
426 const PetscInt n = a->mbs, *ai = a->i, *aj = a->j, *bi = b->i, *bj = b->j; in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
427 const PetscInt *ajtmp, *bjtmp, *bdiag = b->diag, *pj, bs2 = a->bs2; in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
428 MatScalar *rtmp, *pc, *mwork, *v, *pv, *aa = a->a; in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
430 PetscReal shift = info->shiftamount; in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
434 allowzeropivot = PetscNot(A->erroriffailure); in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
443 nz = bi[i + 1] - bi[i]; in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
445 for (j = 0; j < nz; j++) PetscCall(PetscArrayzero(rtmp + bs2 * bjtmp[j], bs2)); in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
448 nz = bdiag[i] - bdiag[i + 1]; in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
450 for (j = 0; j < nz; j++) PetscCall(PetscArrayzero(rtmp + bs2 * bjtmp[j], bs2)); in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
453 nz = ai[i + 1] - ai[i]; in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
456 for (j = 0; j < nz; j++) PetscCall(PetscArraycpy(rtmp + bs2 * ajtmp[j], v + bs2 * j, bs2)); in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
460 nzL = bi[i + 1] - bi[i]; in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
464 for (flg = 0, j = 0; j < bs2; j++) { in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
465 if (pc[j] != 0.0) { in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
471 pv = b->a + bs2 * bdiag[row]; in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
475 pj = b->j + bdiag[row + 1] + 1; /* beginning of U(row,:) */ in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
476 pv = b->a + bs2 * (bdiag[row + 1] + 1); in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
477 nz = bdiag[row] - bdiag[row + 1] - 1; /* num of entries in U(row,:) excluding diag */ in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
478 for (j = 0; j < nz; j++) { in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
479 /* PetscKernel_A_gets_A_minus_B_times_C(bs,rtmp+bs2*pj[j],pc,pv+bs2*j); */ in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
480 /* rtmp+bs2*pj[j] = rtmp+bs2*pj[j] - (*pc)*(pv+bs2*j) */ in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
481 v = rtmp + bs2 * pj[j]; in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
485 PetscCall(PetscLogFlops(54.0 * nz + 45)); /* flops = 2*bs^3*nz + 2*bs^3 - bs2) */ in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
489 /* finished row so stick it into b->a */ in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
491 pv = b->a + bs2 * bi[i]; in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
492 pj = b->j + bi[i]; in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
493 nz = bi[i + 1] - bi[i]; in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
494 for (j = 0; j < nz; j++) PetscCall(PetscArraycpy(pv + bs2 * j, rtmp + bs2 * pj[j], bs2)); in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
497 pv = b->a + bs2 * bdiag[i]; in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
498 pj = b->j + bdiag[i]; in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
501 if (zeropivotdetected) B->factorerrortype = MAT_FACTOR_NUMERIC_ZEROPIVOT; in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
504 pv = b->a + bs2 * (bdiag[i + 1] + 1); in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
505 pj = b->j + bdiag[i + 1] + 1; in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
506 nz = bdiag[i] - bdiag[i + 1] - 1; in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
507 for (j = 0; j < nz; j++) PetscCall(PetscArraycpy(pv + bs2 * j, rtmp + bs2 * pj[j], bs2)); in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
511 C->ops->solve = MatSolve_SeqBAIJ_3_NaturalOrdering; in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
512 C->ops->forwardsolve = MatForwardSolve_SeqBAIJ_3_NaturalOrdering; in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
513 C->ops->backwardsolve = MatBackwardSolve_SeqBAIJ_3_NaturalOrdering; in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
514 C->ops->solvetranspose = MatSolveTranspose_SeqBAIJ_3_NaturalOrdering; in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()
515 C->assembled = PETSC_TRUE; in MatLUFactorNumeric_SeqBAIJ_3_NaturalOrdering()