Lines Matching refs:diff_flux_proj
23 DivDiffFluxProjectionData *diff_flux_proj) { in DivDiffFluxProjectionCreate() argument
30 *diff_flux_proj = NULL; in DivDiffFluxProjectionCreate()
93 *diff_flux_proj = diff_flux_proj_; in DivDiffFluxProjectionCreate()
106 PetscErrorCode DivDiffFluxProjectionGetOperatorFieldData(DivDiffFluxProjectionData diff_flux_proj, … in DivDiffFluxProjectionGetOperatorFieldData() argument
108 Ceed ceed = CeedVectorReturnCeed(diff_flux_proj->div_diff_flux_ceed); in DivDiffFluxProjectionGetOperatorFieldData()
111 …if (elem_restr) PetscCallCeed(ceed, CeedElemRestrictionReferenceCopy(diff_flux_proj->elem_restr_di… in DivDiffFluxProjectionGetOperatorFieldData()
112 …if (basis) PetscCallCeed(ceed, CeedBasisReferenceCopy(diff_flux_proj->basis_div_diff_flux, basis)); in DivDiffFluxProjectionGetOperatorFieldData()
113 …if (vector) PetscCallCeed(ceed, CeedVectorReferenceCopy(diff_flux_proj->div_diff_flux_ceed, vector… in DivDiffFluxProjectionGetOperatorFieldData()
114 if (eval_mode) *eval_mode = diff_flux_proj->eval_mode_div_diff_flux; in DivDiffFluxProjectionGetOperatorFieldData()
124 …rrorCode DivDiffFluxProjectionSetup_Direct(Honee honee, DivDiffFluxProjectionData diff_flux_proj) { in DivDiffFluxProjectionSetup_Direct() argument
126 NodalProjectionData projection = diff_flux_proj->projection; in DivDiffFluxProjectionSetup_Direct()
133 PetscCheck(diff_flux_proj->CreateRHSOperator_Direct, comm, PETSC_ERR_ARG_WRONGSTATE, in DivDiffFluxProjectionSetup_Direct()
135 PetscCall(diff_flux_proj->CreateRHSOperator_Direct(honee, diff_flux_proj, &op_rhs)); in DivDiffFluxProjectionSetup_Direct()
136 PetscCall(DMCreateLocalVector(projection->dm, &diff_flux_proj->DivDiffFlux_loc)); in DivDiffFluxProjectionSetup_Direct()
137 diff_flux_proj->ceed_vec_has_array = PETSC_FALSE; in DivDiffFluxProjectionSetup_Direct()
138 …extCreate(honee->dm, projection->dm, ceed, op_rhs, NULL, NULL, NULL, diff_flux_proj->DivDiffFlux_l… in DivDiffFluxProjectionSetup_Direct()
151 …PetscCall(DivDiffFluxProjectionGetOperatorFieldData(diff_flux_proj, &elem_restr_div_diff_flux_volu… in DivDiffFluxProjectionSetup_Direct()
194 …orCode DivDiffFluxProjectionSetup_Indirect(Honee honee, DivDiffFluxProjectionData diff_flux_proj) { in DivDiffFluxProjectionSetup_Indirect() argument
196 NodalProjectionData projection = diff_flux_proj->projection; in DivDiffFluxProjectionSetup_Indirect()
215 PetscCheck(diff_flux_proj->CreateRHSOperator_Indirect, comm, PETSC_ERR_ARG_WRONGSTATE, in DivDiffFluxProjectionSetup_Indirect()
217 PetscCall(diff_flux_proj->CreateRHSOperator_Indirect(honee, diff_flux_proj, &op_rhs)); in DivDiffFluxProjectionSetup_Indirect()
260 …PetscCall(DivDiffFluxProjectionGetOperatorFieldData(diff_flux_proj, &elem_restr_div_diff_flux, NUL… in DivDiffFluxProjectionSetup_Indirect()
264 switch (diff_flux_proj->num_diff_flux_comps) { in DivDiffFluxProjectionSetup_Indirect()
272 switch (diff_flux_proj->num_diff_flux_comps) { in DivDiffFluxProjectionSetup_Indirect()
288 dim, diff_flux_proj->num_diff_flux_comps); in DivDiffFluxProjectionSetup_Indirect()
292 …PetscCallCeed(ceed, CeedQFunctionAddOutput(qf_calc_divergence, "Div F_diff", diff_flux_proj->num_d… in DivDiffFluxProjectionSetup_Indirect()
298 diff_flux_proj->div_diff_flux_ceed)); in DivDiffFluxProjectionSetup_Indirect()
301 &diff_flux_proj->calc_div_diff_flux)); in DivDiffFluxProjectionSetup_Indirect()
320 PetscErrorCode DivDiffFluxProjectionSetup(Honee honee, DivDiffFluxProjectionData diff_flux_proj) { in DivDiffFluxProjectionSetup() argument
324 PetscCall(DivDiffFluxProjectionSetup_Direct(honee, diff_flux_proj)); in DivDiffFluxProjectionSetup()
327 PetscCall(DivDiffFluxProjectionSetup_Indirect(honee, diff_flux_proj)); in DivDiffFluxProjectionSetup()
345 PetscErrorCode DivDiffFluxProjectionApply(DivDiffFluxProjectionData diff_flux_proj, Vec Q_loc) { in DivDiffFluxProjectionApply() argument
346 NodalProjectionData projection = diff_flux_proj->projection; in DivDiffFluxProjectionApply()
350 switch (diff_flux_proj->method) { in DivDiffFluxProjectionApply()
356 if (diff_flux_proj->ceed_vec_has_array) { in DivDiffFluxProjectionApply()
357 …PetscCall(VecReadCeedToPetsc(diff_flux_proj->div_diff_flux_ceed, diff_flux_proj->DivDiffFlux_memty… in DivDiffFluxProjectionApply()
358 diff_flux_proj->ceed_vec_has_array = PETSC_FALSE; in DivDiffFluxProjectionApply()
377 …PetscCall(DMGlobalToLocal(projection->dm, DivDiffFlux, INSERT_VALUES, diff_flux_proj->DivDiffFlux_… in DivDiffFluxProjectionApply()
378 …PetscCall(VecReadPetscToCeed(diff_flux_proj->DivDiffFlux_loc, &diff_flux_proj->DivDiffFlux_memtype… in DivDiffFluxProjectionApply()
379 diff_flux_proj->ceed_vec_has_array = PETSC_TRUE; in DivDiffFluxProjectionApply()
407 PetscCall(ApplyCeedOperatorGlobalToLocal(DiffFlux, NULL, diff_flux_proj->calc_div_diff_flux)); in DivDiffFluxProjectionApply()
413 DivDiffFluxProjectionMethods[diff_flux_proj->method]); in DivDiffFluxProjectionApply()
425 PetscErrorCode DivDiffFluxProjectionDataDestroy(DivDiffFluxProjectionData diff_flux_proj) { in DivDiffFluxProjectionDataDestroy() argument
427 if (diff_flux_proj == NULL) PetscFunctionReturn(PETSC_SUCCESS); in DivDiffFluxProjectionDataDestroy()
428 Ceed ceed = CeedVectorReturnCeed(diff_flux_proj->div_diff_flux_ceed); in DivDiffFluxProjectionDataDestroy()
430 PetscCall(NodalProjectionDataDestroy(&diff_flux_proj->projection)); in DivDiffFluxProjectionDataDestroy()
431 PetscCall(OperatorApplyContextDestroy(diff_flux_proj->calc_div_diff_flux)); in DivDiffFluxProjectionDataDestroy()
432 if (diff_flux_proj->ceed_vec_has_array) { in DivDiffFluxProjectionDataDestroy()
433 …PetscCall(VecReadCeedToPetsc(diff_flux_proj->div_diff_flux_ceed, diff_flux_proj->DivDiffFlux_memty… in DivDiffFluxProjectionDataDestroy()
434 diff_flux_proj->ceed_vec_has_array = PETSC_FALSE; in DivDiffFluxProjectionDataDestroy()
436 PetscCallCeed(ceed, CeedVectorDestroy(&diff_flux_proj->div_diff_flux_ceed)); in DivDiffFluxProjectionDataDestroy()
437 PetscCallCeed(ceed, CeedElemRestrictionDestroy(&diff_flux_proj->elem_restr_div_diff_flux)); in DivDiffFluxProjectionDataDestroy()
438 PetscCallCeed(ceed, CeedBasisDestroy(&diff_flux_proj->basis_div_diff_flux)); in DivDiffFluxProjectionDataDestroy()
439 PetscCall(VecDestroy(&diff_flux_proj->DivDiffFlux_loc)); in DivDiffFluxProjectionDataDestroy()
440 PetscCall(PetscFree(diff_flux_proj)); in DivDiffFluxProjectionDataDestroy()