Lines Matching refs:Na

15   Mat_LRC    *Na = (Mat_LRC *)N->data;  in MatMult_LRC_kernel()  local
20 U = transpose ? Na->V : Na->U; in MatMult_LRC_kernel()
21 V = transpose ? Na->U : Na->V; in MatMult_LRC_kernel()
24 PetscCall(MatMultHermitianTranspose(V, x, Na->work1)); in MatMult_LRC_kernel()
25 if (Na->c) PetscCall(VecPointwiseMult(Na->work1, Na->c, Na->work1)); in MatMult_LRC_kernel()
26 if (Na->A) { in MatMult_LRC_kernel()
28 PetscCall(MatMultTranspose(Na->A, x, y)); in MatMult_LRC_kernel()
30 PetscCall(MatMult(Na->A, x, y)); in MatMult_LRC_kernel()
32 PetscCall(MatMultAdd(U, Na->work1, y, y)); in MatMult_LRC_kernel()
34 PetscCall(MatMult(U, Na->work1, y)); in MatMult_LRC_kernel()
43 xl = transpose ? Na->yl : Na->xl; in MatMult_LRC_kernel()
44 yl = transpose ? Na->xl : Na->yl; in MatMult_LRC_kernel()
51 PetscCall(MatMultHermitianTranspose(Vloc, xl, Na->work1)); in MatMult_LRC_kernel()
56 PetscCall(VecGetArrayRead(Na->work1, &w1)); in MatMult_LRC_kernel()
57 PetscCall(VecGetArrayWrite(Na->work2, &w2)); in MatMult_LRC_kernel()
58 PetscCall(VecGetLocalSize(Na->work1, &nwork)); in MatMult_LRC_kernel()
60 PetscCall(VecRestoreArrayRead(Na->work1, &w1)); in MatMult_LRC_kernel()
61 PetscCall(VecRestoreArrayWrite(Na->work2, &w2)); in MatMult_LRC_kernel()
63 if (Na->c) { /* work2 = C*work2 */ in MatMult_LRC_kernel()
64 PetscCall(VecPointwiseMult(Na->work2, Na->c, Na->work2)); in MatMult_LRC_kernel()
67 if (Na->A) { in MatMult_LRC_kernel()
70 PetscCall(MatMultTranspose(Na->A, x, y)); in MatMult_LRC_kernel()
72 PetscCall(MatMult(Na->A, x, y)); in MatMult_LRC_kernel()
75 PetscCall(MatMultAdd(Uloc, Na->work2, yl, yl)); in MatMult_LRC_kernel()
78 PetscCall(MatMult(Uloc, Na->work2, yl)); in MatMult_LRC_kernel()
102 Mat_LRC *Na = (Mat_LRC *)N->data; in MatDestroy_LRC() local
105 PetscCall(MatDestroy(&Na->A)); in MatDestroy_LRC()
106 PetscCall(MatDestroy(&Na->U)); in MatDestroy_LRC()
107 PetscCall(MatDestroy(&Na->V)); in MatDestroy_LRC()
108 PetscCall(VecDestroy(&Na->c)); in MatDestroy_LRC()
109 PetscCall(VecDestroy(&Na->work1)); in MatDestroy_LRC()
110 PetscCall(VecDestroy(&Na->work2)); in MatDestroy_LRC()
111 PetscCall(VecDestroy(&Na->xl)); in MatDestroy_LRC()
112 PetscCall(VecDestroy(&Na->yl)); in MatDestroy_LRC()
121 Mat_LRC *Na = (Mat_LRC *)N->data; in MatLRCGetMats_LRC() local
124 if (A) *A = Na->A; in MatLRCGetMats_LRC()
125 if (U) *U = Na->U; in MatLRCGetMats_LRC()
126 if (c) *c = Na->c; in MatLRCGetMats_LRC()
127 if (V) *V = Na->V; in MatLRCGetMats_LRC()
133 Mat_LRC *Na = (Mat_LRC *)N->data; in MatLRCSetMats_LRC() local
140 PetscCall(MatDestroy(&Na->A)); in MatLRCSetMats_LRC()
141 PetscCall(MatDestroy(&Na->U)); in MatLRCSetMats_LRC()
142 PetscCall(MatDestroy(&Na->V)); in MatLRCSetMats_LRC()
143 PetscCall(VecDestroy(&Na->c)); in MatLRCSetMats_LRC()
144 Na->A = A; in MatLRCSetMats_LRC()
145 Na->U = U; in MatLRCSetMats_LRC()
146 Na->c = c; in MatLRCSetMats_LRC()
147 Na->V = V; in MatLRCSetMats_LRC()
252 Mat_LRC *Na = (Mat_LRC *)N->data; in MatSetUp_LRC() local
253 Mat A = Na->A; in MatSetUp_LRC()
254 Mat U = Na->U; in MatSetUp_LRC()
255 Mat V = Na->V; in MatSetUp_LRC()
256 Vec c = Na->c; in MatSetUp_LRC()
266 PetscCall(MatDenseGetLocalMatrix(Na->U, &Uloc)); in MatSetUp_LRC()
267 PetscCall(MatCreateVecs(Uloc, &Na->work1, NULL)); in MatSetUp_LRC()
274 if (Na->c && csize != 1) { /* scatter parallel vector to sequential */ in MatSetUp_LRC()
277 PetscCall(VecScatterCreateToAll(Na->c, &sct, &c)); in MatSetUp_LRC()
278 PetscCall(VecScatterBegin(sct, Na->c, c, INSERT_VALUES, SCATTER_FORWARD)); in MatSetUp_LRC()
279 PetscCall(VecScatterEnd(sct, Na->c, c, INSERT_VALUES, SCATTER_FORWARD)); in MatSetUp_LRC()
281 PetscCall(VecDestroy(&Na->c)); in MatSetUp_LRC()
282 Na->c = c; in MatSetUp_LRC()
284 PetscCall(MatDenseGetLocalMatrix(Na->V, &Vloc)); in MatSetUp_LRC()
285 PetscCall(VecDuplicate(Na->work1, &Na->work2)); in MatSetUp_LRC()
286 PetscCall(MatCreateVecs(Vloc, NULL, &Na->xl)); in MatSetUp_LRC()
287 PetscCall(MatCreateVecs(Uloc, NULL, &Na->yl)); in MatSetUp_LRC()
290 if (Na->c) { in MatSetUp_LRC()
294 PetscCall(VecGetRootType_Private(Na->work1, &rt1)); in MatSetUp_LRC()
295 PetscCall(VecGetRootType_Private(Na->c, &rt2)); in MatSetUp_LRC()
298 PetscCall(VecDuplicate(Na->c, &c)); in MatSetUp_LRC()
299 PetscCall(VecCopy(Na->c, c)); in MatSetUp_LRC()
300 PetscCall(VecDestroy(&Na->c)); in MatSetUp_LRC()
301 Na->c = c; in MatSetUp_LRC()
311 Mat_LRC *Na; in MatCreate_LRC() local
315 PetscCall(PetscNew(&Na)); in MatCreate_LRC()
316 N->data = (void *)Na; in MatCreate_LRC()