Lines Matching refs:ctx
60 Vec Y_loc, OperatorApplyContext *ctx) { in OperatorApplyContextCreate() argument
108 PetscCall(PetscNew(ctx)); in OperatorApplyContextCreate()
112 (*ctx)->dm_x = dm_x; in OperatorApplyContextCreate()
114 (*ctx)->dm_y = dm_y; in OperatorApplyContextCreate()
117 (*ctx)->X_loc = X_loc; in OperatorApplyContextCreate()
119 (*ctx)->Y_loc = Y_loc; in OperatorApplyContextCreate()
122 if (x_ceed) PetscCallCeed(ceed, CeedVectorReferenceCopy(x_ceed, &(*ctx)->x_ceed)); in OperatorApplyContextCreate()
123 else PetscCallCeed(ceed, CeedVectorCreate(ceed, x_size, &(*ctx)->x_ceed)); in OperatorApplyContextCreate()
125 if (y_ceed) PetscCallCeed(ceed, CeedVectorReferenceCopy(y_ceed, &(*ctx)->y_ceed)); in OperatorApplyContextCreate()
126 else PetscCallCeed(ceed, CeedVectorCreate(ceed, y_size, &(*ctx)->y_ceed)); in OperatorApplyContextCreate()
128 PetscCallCeed(ceed, CeedOperatorReferenceCopy(op_apply, &(*ctx)->op)); in OperatorApplyContextCreate()
129 PetscCallCeed(ceed, CeedReferenceCopy(ceed, &(*ctx)->ceed)); in OperatorApplyContextCreate()
138 PetscErrorCode OperatorApplyContextDestroy(OperatorApplyContext ctx) { in OperatorApplyContextDestroy() argument
140 if (!ctx) PetscFunctionReturn(PETSC_SUCCESS); in OperatorApplyContextDestroy()
141 Ceed ceed = ctx->ceed; in OperatorApplyContextDestroy()
144 PetscCall(DMDestroy(&ctx->dm_x)); in OperatorApplyContextDestroy()
145 PetscCall(DMDestroy(&ctx->dm_y)); in OperatorApplyContextDestroy()
146 PetscCall(VecDestroy(&ctx->X_loc)); in OperatorApplyContextDestroy()
147 PetscCall(VecDestroy(&ctx->Y_loc)); in OperatorApplyContextDestroy()
150 PetscCallCeed(ceed, CeedVectorDestroy(&ctx->x_ceed)); in OperatorApplyContextDestroy()
151 PetscCallCeed(ceed, CeedVectorDestroy(&ctx->y_ceed)); in OperatorApplyContextDestroy()
152 PetscCallCeed(ceed, CeedOperatorDestroy(&ctx->op)); in OperatorApplyContextDestroy()
153 PetscCallCeed(ceed, CeedDestroy(&ctx->ceed)); in OperatorApplyContextDestroy()
155 PetscCall(PetscFree(ctx)); in OperatorApplyContextDestroy()
216 …Vec X, Vec X_loc, CeedVector x_ceed, CeedVector y_ceed, Vec Y_loc, Vec Y, OperatorApplyContext ctx, in ApplyCeedOperator_Core() argument
219 Ceed ceed = ctx->ceed; in ApplyCeedOperator_Core()
222 if (X) PetscCall(DMGlobalToLocal(ctx->dm_x, X, INSERT_VALUES, X_loc)); in ApplyCeedOperator_Core()
229 …if (use_apply_add) PetscCallCeed(ceed, CeedOperatorApplyAdd(ctx->op, x_ceed, y_ceed, CEED_REQUEST_… in ApplyCeedOperator_Core()
230 else PetscCallCeed(ceed, CeedOperatorApply(ctx->op, x_ceed, y_ceed, CEED_REQUEST_IMMEDIATE)); in ApplyCeedOperator_Core()
234 if (X_loc) PetscCall(VecReadCeedToPetsc(ctx->x_ceed, x_mem_type, X_loc)); in ApplyCeedOperator_Core()
236 if (Y_loc) PetscCall(VecCeedToPetsc(ctx->y_ceed, y_mem_type, Y_loc)); in ApplyCeedOperator_Core()
237 if (Y) PetscCall(DMLocalToGlobal(ctx->dm_y, Y_loc, ADD_VALUES, Y)); in ApplyCeedOperator_Core()
241 PetscErrorCode ApplyCeedOperatorGlobalToGlobal(Vec X, Vec Y, OperatorApplyContext ctx) { in ApplyCeedOperatorGlobalToGlobal() argument
242 Vec X_loc = ctx->X_loc, Y_loc = ctx->Y_loc; in ApplyCeedOperatorGlobalToGlobal()
248 if (!ctx->X_loc) PetscCall(DMGetLocalVector(ctx->dm_x, &X_loc)); in ApplyCeedOperatorGlobalToGlobal()
249 if (!ctx->Y_loc) PetscCall(DMGetLocalVector(ctx->dm_y, &Y_loc)); in ApplyCeedOperatorGlobalToGlobal()
251 PetscCall(ApplyCeedOperator_Core(X, X_loc, ctx->x_ceed, ctx->y_ceed, Y_loc, Y, ctx, false)); in ApplyCeedOperatorGlobalToGlobal()
254 if (!ctx->X_loc) PetscCall(DMRestoreLocalVector(ctx->dm_x, &X_loc)); in ApplyCeedOperatorGlobalToGlobal()
255 if (!ctx->Y_loc) PetscCall(DMRestoreLocalVector(ctx->dm_y, &Y_loc)); in ApplyCeedOperatorGlobalToGlobal()
259 PetscErrorCode ApplyCeedOperatorLocalToGlobal(Vec X_loc, Vec Y, OperatorApplyContext ctx) { in ApplyCeedOperatorLocalToGlobal() argument
260 Vec Y_loc = ctx->Y_loc; in ApplyCeedOperatorLocalToGlobal()
266 if (!ctx->Y_loc) PetscCall(DMGetLocalVector(ctx->dm_y, &Y_loc)); in ApplyCeedOperatorLocalToGlobal()
268 PetscCall(ApplyCeedOperator_Core(NULL, X_loc, ctx->x_ceed, ctx->y_ceed, Y_loc, Y, ctx, false)); in ApplyCeedOperatorLocalToGlobal()
271 if (!ctx->Y_loc) PetscCall(DMRestoreLocalVector(ctx->dm_y, &Y_loc)); in ApplyCeedOperatorLocalToGlobal()
275 PetscErrorCode ApplyCeedOperatorGlobalToLocal(Vec X, Vec Y_loc, OperatorApplyContext ctx) { in ApplyCeedOperatorGlobalToLocal() argument
276 Vec X_loc = ctx->X_loc; in ApplyCeedOperatorGlobalToLocal()
280 if (!ctx->X_loc) PetscCall(DMGetLocalVector(ctx->dm_x, &X_loc)); in ApplyCeedOperatorGlobalToLocal()
282 PetscCall(ApplyCeedOperator_Core(X, X_loc, ctx->x_ceed, ctx->y_ceed, Y_loc, NULL, ctx, false)); in ApplyCeedOperatorGlobalToLocal()
285 if (!ctx->X_loc) PetscCall(DMRestoreLocalVector(ctx->dm_x, &X_loc)); in ApplyCeedOperatorGlobalToLocal()
289 PetscErrorCode ApplyCeedOperatorLocalToLocal(Vec X_loc, Vec Y_loc, OperatorApplyContext ctx) { in ApplyCeedOperatorLocalToLocal() argument
291 PetscCall(ApplyCeedOperator_Core(NULL, X_loc, ctx->x_ceed, ctx->y_ceed, Y_loc, NULL, ctx, false)); in ApplyCeedOperatorLocalToLocal()
295 PetscErrorCode ApplyAddCeedOperatorLocalToLocal(Vec X_loc, Vec Y_loc, OperatorApplyContext ctx) { in ApplyAddCeedOperatorLocalToLocal() argument
297 PetscCall(ApplyCeedOperator_Core(NULL, X_loc, ctx->x_ceed, ctx->y_ceed, Y_loc, NULL, ctx, true)); in ApplyAddCeedOperatorLocalToLocal()