matops.c (77ad9f2917358ad654845919921e911aaeeffe6e) matops.c (d99fa3c5cd91a1690aedf0679cbf290d44fec74c)
1// Copyright (c) 2017, Lawrence Livermore National Security, LLC. Produced at
2// the Lawrence Livermore National Laboratory. LLNL-CODE-734707. All Rights
3// reserved. See files LICENSE and NOTICE for details.
4//
5// This file is part of CEED, a collection of benchmarks, miniapps, software
6// libraries and APIs for efficient high-order finite element and spectral
7// element discretizations for exascale applications. For more information and
8// source code availability see http://github.com/ceed.

--- 131 unchanged lines hidden (view full) ---

140
141 // Restore PETSc vectors
142 CeedVectorTakeArray(user->ceedVecC, user->memType, NULL);
143 CeedVectorTakeArray(user->ceedVecF, user->memType, NULL);
144 ierr = user->VecRestoreArrayRead(user->locVecC, (const PetscScalar **)&c);
145 CHKERRQ(ierr);
146 ierr = user->VecRestoreArray(user->locVecF, &f); CHKERRQ(ierr);
147
1// Copyright (c) 2017, Lawrence Livermore National Security, LLC. Produced at
2// the Lawrence Livermore National Laboratory. LLNL-CODE-734707. All Rights
3// reserved. See files LICENSE and NOTICE for details.
4//
5// This file is part of CEED, a collection of benchmarks, miniapps, software
6// libraries and APIs for efficient high-order finite element and spectral
7// element discretizations for exascale applications. For more information and
8// source code availability see http://github.com/ceed.

--- 131 unchanged lines hidden (view full) ---

140
141 // Restore PETSc vectors
142 CeedVectorTakeArray(user->ceedVecC, user->memType, NULL);
143 CeedVectorTakeArray(user->ceedVecF, user->memType, NULL);
144 ierr = user->VecRestoreArrayRead(user->locVecC, (const PetscScalar **)&c);
145 CHKERRQ(ierr);
146 ierr = user->VecRestoreArray(user->locVecF, &f); CHKERRQ(ierr);
147
148 // Multiplicity
149 ierr = VecPointwiseMult(user->locVecF, user->locVecF, user->multVec);
150
151 // Local-to-global
152 ierr = VecZeroEntries(Y); CHKERRQ(ierr);
153 ierr = DMLocalToGlobal(user->dmF, user->locVecF, ADD_VALUES, Y);
154 CHKERRQ(ierr);
155
156 PetscFunctionReturn(0);
157}
158

--- 8 unchanged lines hidden (view full) ---

167 ierr = MatShellGetContext(A, &user); CHKERRQ(ierr);
168
169 // Global-to-local
170 ierr = VecZeroEntries(user->locVecF); CHKERRQ(ierr);
171 ierr = DMGlobalToLocal(user->dmF, X, INSERT_VALUES, user->locVecF);
172 CHKERRQ(ierr);
173 ierr = VecZeroEntries(user->locVecC); CHKERRQ(ierr);
174
148 // Local-to-global
149 ierr = VecZeroEntries(Y); CHKERRQ(ierr);
150 ierr = DMLocalToGlobal(user->dmF, user->locVecF, ADD_VALUES, Y);
151 CHKERRQ(ierr);
152
153 PetscFunctionReturn(0);
154}
155

--- 8 unchanged lines hidden (view full) ---

164 ierr = MatShellGetContext(A, &user); CHKERRQ(ierr);
165
166 // Global-to-local
167 ierr = VecZeroEntries(user->locVecF); CHKERRQ(ierr);
168 ierr = DMGlobalToLocal(user->dmF, X, INSERT_VALUES, user->locVecF);
169 CHKERRQ(ierr);
170 ierr = VecZeroEntries(user->locVecC); CHKERRQ(ierr);
171
175 // Multiplicity
176 ierr = VecPointwiseMult(user->locVecF, user->locVecF, user->multVec);
177 CHKERRQ(ierr);
178
179 // Setup CEED vectors
180 ierr = user->VecGetArrayRead(user->locVecF, (const PetscScalar **)&f);
181 CHKERRQ(ierr);
182 ierr = user->VecGetArray(user->locVecC, &c); CHKERRQ(ierr);
183 CeedVectorSetArray(user->ceedVecF, user->memType, CEED_USE_POINTER, f);
184 CeedVectorSetArray(user->ceedVecC, user->memType, CEED_USE_POINTER, c);
185
186 // Apply CEED operator

--- 110 unchanged lines hidden ---
172 // Setup CEED vectors
173 ierr = user->VecGetArrayRead(user->locVecF, (const PetscScalar **)&f);
174 CHKERRQ(ierr);
175 ierr = user->VecGetArray(user->locVecC, &c); CHKERRQ(ierr);
176 CeedVectorSetArray(user->ceedVecF, user->memType, CEED_USE_POINTER, f);
177 CeedVectorSetArray(user->ceedVecC, user->memType, CEED_USE_POINTER, c);
178
179 // Apply CEED operator

--- 110 unchanged lines hidden ---