Lines Matching refs:ctx
56 Vec Y_loc, OperatorApplyContext *ctx) { in OperatorApplyContextCreate() argument
100 PetscCall(PetscNew(ctx)); in OperatorApplyContextCreate()
104 (*ctx)->dm_x = dm_x; in OperatorApplyContextCreate()
106 (*ctx)->dm_y = dm_y; in OperatorApplyContextCreate()
109 (*ctx)->X_loc = X_loc; in OperatorApplyContextCreate()
111 (*ctx)->Y_loc = Y_loc; in OperatorApplyContextCreate()
114 if (x_ceed) PetscCallCeed(ceed, CeedVectorReferenceCopy(x_ceed, &(*ctx)->x_ceed)); in OperatorApplyContextCreate()
115 else PetscCallCeed(ceed, CeedVectorCreate(ceed, x_size, &(*ctx)->x_ceed)); in OperatorApplyContextCreate()
117 if (y_ceed) PetscCallCeed(ceed, CeedVectorReferenceCopy(y_ceed, &(*ctx)->y_ceed)); in OperatorApplyContextCreate()
118 else PetscCallCeed(ceed, CeedVectorCreate(ceed, y_size, &(*ctx)->y_ceed)); in OperatorApplyContextCreate()
120 PetscCallCeed(ceed, CeedOperatorReferenceCopy(op_apply, &(*ctx)->op)); in OperatorApplyContextCreate()
121 PetscCallCeed(ceed, CeedReferenceCopy(ceed, &(*ctx)->ceed)); in OperatorApplyContextCreate()
130 PetscErrorCode OperatorApplyContextDestroy(OperatorApplyContext ctx) { in OperatorApplyContextDestroy() argument
132 if (!ctx) PetscFunctionReturn(PETSC_SUCCESS); in OperatorApplyContextDestroy()
133 Ceed ceed = ctx->ceed; in OperatorApplyContextDestroy()
136 PetscCall(DMDestroy(&ctx->dm_x)); in OperatorApplyContextDestroy()
137 PetscCall(DMDestroy(&ctx->dm_y)); in OperatorApplyContextDestroy()
138 PetscCall(VecDestroy(&ctx->X_loc)); in OperatorApplyContextDestroy()
139 PetscCall(VecDestroy(&ctx->Y_loc)); in OperatorApplyContextDestroy()
142 PetscCallCeed(ceed, CeedVectorDestroy(&ctx->x_ceed)); in OperatorApplyContextDestroy()
143 PetscCallCeed(ceed, CeedVectorDestroy(&ctx->y_ceed)); in OperatorApplyContextDestroy()
144 PetscCallCeed(ceed, CeedOperatorDestroy(&ctx->op)); in OperatorApplyContextDestroy()
145 PetscCallCeed(ceed, CeedDestroy(&ctx->ceed)); in OperatorApplyContextDestroy()
147 PetscCall(PetscFree(ctx)); in OperatorApplyContextDestroy()
208 …Vec X, Vec X_loc, CeedVector x_ceed, CeedVector y_ceed, Vec Y_loc, Vec Y, OperatorApplyContext ctx, in ApplyCeedOperator_Core() argument
211 Ceed ceed = ctx->ceed; in ApplyCeedOperator_Core()
214 if (X) PetscCall(DMGlobalToLocal(ctx->dm_x, X, INSERT_VALUES, X_loc)); in ApplyCeedOperator_Core()
221 …if (use_apply_add) PetscCallCeed(ceed, CeedOperatorApplyAdd(ctx->op, x_ceed, y_ceed, CEED_REQUEST_… in ApplyCeedOperator_Core()
222 else PetscCallCeed(ceed, CeedOperatorApply(ctx->op, x_ceed, y_ceed, CEED_REQUEST_IMMEDIATE)); in ApplyCeedOperator_Core()
226 if (X_loc) PetscCall(VecReadCeedToPetsc(ctx->x_ceed, x_mem_type, X_loc)); in ApplyCeedOperator_Core()
228 if (Y_loc) PetscCall(VecCeedToPetsc(ctx->y_ceed, y_mem_type, Y_loc)); in ApplyCeedOperator_Core()
229 if (Y) PetscCall(DMLocalToGlobal(ctx->dm_y, Y_loc, ADD_VALUES, Y)); in ApplyCeedOperator_Core()
233 PetscErrorCode ApplyCeedOperatorGlobalToGlobal(Vec X, Vec Y, OperatorApplyContext ctx) { in ApplyCeedOperatorGlobalToGlobal() argument
234 Vec X_loc = ctx->X_loc, Y_loc = ctx->Y_loc; in ApplyCeedOperatorGlobalToGlobal()
240 if (!ctx->X_loc) PetscCall(DMGetLocalVector(ctx->dm_x, &X_loc)); in ApplyCeedOperatorGlobalToGlobal()
241 if (!ctx->Y_loc) PetscCall(DMGetLocalVector(ctx->dm_y, &Y_loc)); in ApplyCeedOperatorGlobalToGlobal()
243 PetscCall(ApplyCeedOperator_Core(X, X_loc, ctx->x_ceed, ctx->y_ceed, Y_loc, Y, ctx, false)); in ApplyCeedOperatorGlobalToGlobal()
246 if (!ctx->X_loc) PetscCall(DMRestoreLocalVector(ctx->dm_x, &X_loc)); in ApplyCeedOperatorGlobalToGlobal()
247 if (!ctx->Y_loc) PetscCall(DMRestoreLocalVector(ctx->dm_y, &Y_loc)); in ApplyCeedOperatorGlobalToGlobal()
251 PetscErrorCode ApplyCeedOperatorLocalToGlobal(Vec X_loc, Vec Y, OperatorApplyContext ctx) { in ApplyCeedOperatorLocalToGlobal() argument
252 Vec Y_loc = ctx->Y_loc; in ApplyCeedOperatorLocalToGlobal()
258 if (!ctx->Y_loc) PetscCall(DMGetLocalVector(ctx->dm_y, &Y_loc)); in ApplyCeedOperatorLocalToGlobal()
260 PetscCall(ApplyCeedOperator_Core(NULL, X_loc, ctx->x_ceed, ctx->y_ceed, Y_loc, Y, ctx, false)); in ApplyCeedOperatorLocalToGlobal()
263 if (!ctx->Y_loc) PetscCall(DMRestoreLocalVector(ctx->dm_y, &Y_loc)); in ApplyCeedOperatorLocalToGlobal()
267 PetscErrorCode ApplyCeedOperatorGlobalToLocal(Vec X, Vec Y_loc, OperatorApplyContext ctx) { in ApplyCeedOperatorGlobalToLocal() argument
268 Vec X_loc = ctx->X_loc; in ApplyCeedOperatorGlobalToLocal()
272 if (!ctx->X_loc) PetscCall(DMGetLocalVector(ctx->dm_x, &X_loc)); in ApplyCeedOperatorGlobalToLocal()
274 PetscCall(ApplyCeedOperator_Core(X, X_loc, ctx->x_ceed, ctx->y_ceed, Y_loc, NULL, ctx, false)); in ApplyCeedOperatorGlobalToLocal()
277 if (!ctx->X_loc) PetscCall(DMRestoreLocalVector(ctx->dm_x, &X_loc)); in ApplyCeedOperatorGlobalToLocal()
281 PetscErrorCode ApplyCeedOperatorLocalToLocal(Vec X_loc, Vec Y_loc, OperatorApplyContext ctx) { in ApplyCeedOperatorLocalToLocal() argument
283 PetscCall(ApplyCeedOperator_Core(NULL, X_loc, ctx->x_ceed, ctx->y_ceed, Y_loc, NULL, ctx, false)); in ApplyCeedOperatorLocalToLocal()
287 PetscErrorCode ApplyAddCeedOperatorLocalToLocal(Vec X_loc, Vec Y_loc, OperatorApplyContext ctx) { in ApplyAddCeedOperatorLocalToLocal() argument
289 PetscCall(ApplyCeedOperator_Core(NULL, X_loc, ctx->x_ceed, ctx->y_ceed, Y_loc, NULL, ctx, true)); in ApplyAddCeedOperatorLocalToLocal()