Lines Matching full:user

23 PetscErrorCode ApplyLocalCeedOp(Vec X, Vec Y, UserMult user) {  in ApplyLocalCeedOp()  argument
30 PetscCall(DMGlobalToLocal(user->dm, X, INSERT_VALUES, user->X_loc)); in ApplyLocalCeedOp()
31 PetscCall(VecZeroEntries(user->Y_loc)); in ApplyLocalCeedOp()
34 PetscCall(VecGetArrayReadAndMemType(user->X_loc, (const PetscScalar **)&x, &x_mem_type)); in ApplyLocalCeedOp()
35 PetscCall(VecGetArrayAndMemType(user->Y_loc, &y, &y_mem_type)); in ApplyLocalCeedOp()
36 CeedVectorSetArray(user->x_ceed, MemTypeP2C(x_mem_type), CEED_USE_POINTER, x); in ApplyLocalCeedOp()
37 CeedVectorSetArray(user->y_ceed, MemTypeP2C(y_mem_type), CEED_USE_POINTER, y); in ApplyLocalCeedOp()
40 CeedOperatorApply(user->op, user->x_ceed, user->y_ceed, CEED_REQUEST_IMMEDIATE); in ApplyLocalCeedOp()
43 CeedVectorTakeArray(user->x_ceed, MemTypeP2C(x_mem_type), NULL); in ApplyLocalCeedOp()
44 CeedVectorTakeArray(user->y_ceed, MemTypeP2C(y_mem_type), NULL); in ApplyLocalCeedOp()
45 PetscCall(VecRestoreArrayReadAndMemType(user->X_loc, (const PetscScalar **)&x)); in ApplyLocalCeedOp()
46 PetscCall(VecRestoreArrayAndMemType(user->Y_loc, &y)); in ApplyLocalCeedOp()
50 PetscCall(DMLocalToGlobal(user->dm, user->Y_loc, ADD_VALUES, Y)); in ApplyLocalCeedOp()
57 UserMult user = (UserMult)ctx; in FormResidual_Ceed() local
62 PetscCall(VecZeroEntries(user->X_loc)); in FormResidual_Ceed()
63 …PetscCall(DMPlexInsertBoundaryValues(user->dm, PETSC_TRUE, user->X_loc, user->load_increment, NULL… in FormResidual_Ceed()
66 PetscCall(ApplyLocalCeedOp(X, Y, user)); in FormResidual_Ceed()
69 if (user->neumann_bcs) { in FormResidual_Ceed()
70 PetscCall(VecAXPY(Y, -user->load_increment, user->neumann_bcs)); in FormResidual_Ceed()
78 UserMult user = (UserMult)ctx; in ApplyJacobianCoarse_Ceed() local
83 PetscCall(VecZeroEntries(user->X_loc)); in ApplyJacobianCoarse_Ceed()
86 PetscCall(ApplyLocalCeedOp(X, Y, user)); in ApplyJacobianCoarse_Ceed()
93 UserMult user; in ApplyJacobian_Ceed() local
98 PetscCall(MatShellGetContext(A, &user)); in ApplyJacobian_Ceed()
99 PetscCall(VecZeroEntries(user->X_loc)); in ApplyJacobian_Ceed()
102 PetscCall(ApplyLocalCeedOp(X, Y, user)); in ApplyJacobian_Ceed()
109 UserMultProlongRestr user; in Prolong_Ceed() local
115 PetscCall(MatShellGetContext(A, &user)); in Prolong_Ceed()
118 PetscCall(VecZeroEntries(user->loc_vec_c)); in Prolong_Ceed()
119 PetscCall(DMGlobalToLocal(user->dm_c, X, INSERT_VALUES, user->loc_vec_c)); in Prolong_Ceed()
120 PetscCall(VecZeroEntries(user->loc_vec_f)); in Prolong_Ceed()
123 PetscCall(VecGetArrayReadAndMemType(user->loc_vec_c, (const PetscScalar **)&c, &c_mem_type)); in Prolong_Ceed()
124 PetscCall(VecGetArrayAndMemType(user->loc_vec_f, &f, &f_mem_type)); in Prolong_Ceed()
125 CeedVectorSetArray(user->ceed_vec_c, MemTypeP2C(c_mem_type), CEED_USE_POINTER, c); in Prolong_Ceed()
126 CeedVectorSetArray(user->ceed_vec_f, MemTypeP2C(f_mem_type), CEED_USE_POINTER, f); in Prolong_Ceed()
129 CeedOperatorApply(user->op_prolong, user->ceed_vec_c, user->ceed_vec_f, CEED_REQUEST_IMMEDIATE); in Prolong_Ceed()
132 CeedVectorTakeArray(user->ceed_vec_c, MemTypeP2C(c_mem_type), NULL); in Prolong_Ceed()
133 CeedVectorTakeArray(user->ceed_vec_f, MemTypeP2C(f_mem_type), NULL); in Prolong_Ceed()
134 PetscCall(VecRestoreArrayReadAndMemType(user->loc_vec_c, (const PetscScalar **)&c)); in Prolong_Ceed()
135 PetscCall(VecRestoreArrayAndMemType(user->loc_vec_f, &f)); in Prolong_Ceed()
139 PetscCall(DMLocalToGlobal(user->dm_f, user->loc_vec_f, ADD_VALUES, Y)); in Prolong_Ceed()
146 UserMultProlongRestr user; in Restrict_Ceed() local
152 PetscCall(MatShellGetContext(A, &user)); in Restrict_Ceed()
155 PetscCall(VecZeroEntries(user->loc_vec_f)); in Restrict_Ceed()
156 PetscCall(DMGlobalToLocal(user->dm_f, X, INSERT_VALUES, user->loc_vec_f)); in Restrict_Ceed()
157 PetscCall(VecZeroEntries(user->loc_vec_c)); in Restrict_Ceed()
160 PetscCall(VecGetArrayReadAndMemType(user->loc_vec_f, (const PetscScalar **)&f, &f_mem_type)); in Restrict_Ceed()
161 PetscCall(VecGetArrayAndMemType(user->loc_vec_c, &c, &c_mem_type)); in Restrict_Ceed()
162 CeedVectorSetArray(user->ceed_vec_f, MemTypeP2C(f_mem_type), CEED_USE_POINTER, f); in Restrict_Ceed()
163 CeedVectorSetArray(user->ceed_vec_c, MemTypeP2C(c_mem_type), CEED_USE_POINTER, c); in Restrict_Ceed()
166 CeedOperatorApply(user->op_restrict, user->ceed_vec_f, user->ceed_vec_c, CEED_REQUEST_IMMEDIATE); in Restrict_Ceed()
169 CeedVectorTakeArray(user->ceed_vec_f, MemTypeP2C(f_mem_type), NULL); in Restrict_Ceed()
170 CeedVectorTakeArray(user->ceed_vec_c, MemTypeP2C(c_mem_type), NULL); in Restrict_Ceed()
171 PetscCall(VecRestoreArrayReadAndMemType(user->loc_vec_f, (const PetscScalar **)&f)); in Restrict_Ceed()
172 PetscCall(VecRestoreArrayAndMemType(user->loc_vec_c, &c)); in Restrict_Ceed()
176 PetscCall(DMLocalToGlobal(user->dm_c, user->loc_vec_c, ADD_VALUES, Y)); in Restrict_Ceed()
183 UserMult user; in GetDiag_Ceed() local
187 PetscCall(MatShellGetContext(A, &user)); in GetDiag_Ceed()
190 if (user->ctx_phys_smoother) CeedQFunctionSetContext(user->qf, user->ctx_phys_smoother); in GetDiag_Ceed()
197 PetscCall(VecGetArrayAndMemType(user->X_loc, &x, &x_mem_type)); in GetDiag_Ceed()
198 CeedVectorSetArray(user->x_ceed, MemTypeP2C(x_mem_type), CEED_USE_POINTER, x); in GetDiag_Ceed()
201 CeedOperatorLinearAssembleDiagonal(user->op, user->x_ceed, CEED_REQUEST_IMMEDIATE); in GetDiag_Ceed()
204 if (user->ctx_phys_smoother) CeedQFunctionSetContext(user->qf, user->ctx_phys); in GetDiag_Ceed()
207 CeedVectorTakeArray(user->x_ceed, MemTypeP2C(x_mem_type), NULL); in GetDiag_Ceed()
208 PetscCall(VecRestoreArrayAndMemType(user->X_loc, &x)); in GetDiag_Ceed()
210 PetscCall(DMLocalToGlobal(user->dm, user->X_loc, ADD_VALUES, D)); in GetDiag_Ceed()
213 PetscCall(VecZeroEntries(user->X_loc)); in GetDiag_Ceed()
219 PetscErrorCode ComputeStrainEnergy(DM dmEnergy, UserMult user, CeedOperator op_energy, Vec X, Petsc… in ComputeStrainEnergy() argument
227 PetscCall(VecZeroEntries(user->X_loc)); in ComputeStrainEnergy()
228 PetscCall(DMGlobalToLocal(user->dm, X, INSERT_VALUES, user->X_loc)); in ComputeStrainEnergy()
229 …PetscCall(DMPlexInsertBoundaryValues(user->dm, PETSC_TRUE, user->X_loc, user->load_increment, NULL… in ComputeStrainEnergy()
232 PetscCall(VecGetArrayReadAndMemType(user->X_loc, (const PetscScalar **)&x, &x_mem_type)); in ComputeStrainEnergy()
233 CeedVectorSetArray(user->x_ceed, MemTypeP2C(x_mem_type), CEED_USE_POINTER, x); in ComputeStrainEnergy()
242 CeedVectorCreate(user->ceed, length, &e_loc); in ComputeStrainEnergy()
245 CeedOperatorApply(op_energy, user->x_ceed, e_loc, CEED_REQUEST_IMMEDIATE); in ComputeStrainEnergy()
248 CeedVectorTakeArray(user->x_ceed, MemTypeP2C(x_mem_type), NULL); in ComputeStrainEnergy()
249 PetscCall(VecRestoreArrayRead(user->X_loc, (const PetscScalar **)&x)); in ComputeStrainEnergy()
259 PetscCall(MPI_Allreduce(MPI_IN_PLACE, energy, 1, MPIU_REAL, MPIU_SUM, user->comm)); in ComputeStrainEnergy()