Lines Matching refs:projection

26   NodalProjectionData       projection;  in DivDiffFluxProjectionCreate()  local
33 PetscCall(PetscNew(&projection)); in DivDiffFluxProjectionCreate()
38 .projection = projection, in DivDiffFluxProjectionCreate()
41 PetscCall(DMClone(honee->dm, &projection->dm)); in DivDiffFluxProjectionCreate()
42 PetscCall(DMSetMatrixPreallocateSkip(projection->dm, PETSC_TRUE)); in DivDiffFluxProjectionCreate()
43 PetscCall(DMGetDimension(projection->dm, &dim)); in DivDiffFluxProjectionCreate()
46 projection->num_comp = diff_flux_proj_->num_diff_flux_comps; in DivDiffFluxProjectionCreate()
47 PetscCall(PetscObjectSetName((PetscObject)projection->dm, "DivDiffFluxProj")); in DivDiffFluxProjectionCreate()
48 …ByOrder_FEM(PETSC_TRUE, PETSC_TRUE, degree, 1, q_extra, 1, &projection->num_comp, projection->dm)); in DivDiffFluxProjectionCreate()
50 …PetscCall(DMPlexCeedElemRestrictionCreate(honee->ceed, projection->dm, DMLABEL_DEFAULT, DMLABEL_DE… in DivDiffFluxProjectionCreate()
54 …PetscCall(DMPlexCeedBasisCreate(honee->ceed, projection->dm, DMLABEL_DEFAULT, DMLABEL_DEFAULT_VALU… in DivDiffFluxProjectionCreate()
70 PetscCall(DMAddLabel(projection->dm, face_orientation_label)); in DivDiffFluxProjectionCreate()
77 projection->num_comp = diff_flux_proj_->num_diff_flux_comps * dim; in DivDiffFluxProjectionCreate()
78 PetscCall(PetscObjectSetName((PetscObject)projection->dm, "DiffFluxProj")); in DivDiffFluxProjectionCreate()
79 …ByOrder_FEM(PETSC_TRUE, PETSC_TRUE, degree, 1, q_extra, 1, &projection->num_comp, projection->dm)); in DivDiffFluxProjectionCreate()
81 …PetscCall(DMPlexCeedElemRestrictionQDataCreate(honee->ceed, projection->dm, DMLABEL_DEFAULT, DMLAB… in DivDiffFluxProjectionCreate()
126 NodalProjectionData projection = diff_flux_proj->projection; in DivDiffFluxProjectionSetup_Direct() local
127 MPI_Comm comm = PetscObjectComm((PetscObject)projection->dm); in DivDiffFluxProjectionSetup_Direct()
136 PetscCall(DMCreateLocalVector(projection->dm, &diff_flux_proj->DivDiffFlux_loc)); in DivDiffFluxProjectionSetup_Direct()
138 …PetscCall(OperatorApplyContextCreate(honee->dm, projection->dm, ceed, op_rhs, NULL, NULL, NULL, di… in DivDiffFluxProjectionSetup_Direct()
139 &projection->l2_rhs_ctx)); in DivDiffFluxProjectionSetup_Direct()
152 …PetscCall(QDataGet(ceed, projection->dm, DMLABEL_DEFAULT, DMLABEL_DEFAULT_VALUE, &elem_restr_qd, &… in DivDiffFluxProjectionSetup_Direct()
154 PetscCall(HoneeMassQFunctionCreate(ceed, projection->num_comp, q_data_size, &qf_mass)); in DivDiffFluxProjectionSetup_Direct()
163 PetscCall(MatCreateCeed(projection->dm, projection->dm, op_mass, NULL, &mat_mass)); in DivDiffFluxProjectionSetup_Direct()
165 PetscCall(KSPCreate(comm, &projection->ksp)); in DivDiffFluxProjectionSetup_Direct()
166 PetscCall(KSPSetOptionsPrefix(projection->ksp, "div_diff_flux_projection_")); in DivDiffFluxProjectionSetup_Direct()
169 PetscCall(KSPGetPC(projection->ksp, &pc)); in DivDiffFluxProjectionSetup_Direct()
172 PetscCall(KSPSetType(projection->ksp, KSPPREONLY)); in DivDiffFluxProjectionSetup_Direct()
174 PetscCall(KSPSetFromOptions_WithMatCeed(projection->ksp, mat_mass)); in DivDiffFluxProjectionSetup_Direct()
196 NodalProjectionData projection = diff_flux_proj->projection; in DivDiffFluxProjectionSetup_Indirect() local
201 MPI_Comm comm = PetscObjectComm((PetscObject)projection->dm); in DivDiffFluxProjectionSetup_Indirect()
207 …PetscCall(DMPlexCeedElemRestrictionCreate(ceed, projection->dm, DMLABEL_DEFAULT, DMLABEL_DEFAULT_V… in DivDiffFluxProjectionSetup_Indirect()
208 …PetscCall(DMPlexCeedBasisCreate(ceed, projection->dm, DMLABEL_DEFAULT, DMLABEL_DEFAULT_VALUE, heig… in DivDiffFluxProjectionSetup_Indirect()
209 …PetscCall(QDataGet(ceed, projection->dm, DMLABEL_DEFAULT, DMLABEL_DEFAULT_VALUE, &elem_restr_qd, &… in DivDiffFluxProjectionSetup_Indirect()
218 …cCall(OperatorApplyContextCreate(honee->dm, projection->dm, ceed, op_rhs, NULL, NULL, NULL, NULL, … in DivDiffFluxProjectionSetup_Indirect()
226 PetscCall(HoneeMassQFunctionCreate(ceed, projection->num_comp, q_data_size, &qf_mass)); in DivDiffFluxProjectionSetup_Indirect()
235 PetscCall(MatCreateCeed(projection->dm, projection->dm, op_mass, NULL, &mat_mass)); in DivDiffFluxProjectionSetup_Indirect()
237 PetscCall(KSPCreate(comm, &projection->ksp)); in DivDiffFluxProjectionSetup_Indirect()
238 PetscCall(KSPSetOptionsPrefix(projection->ksp, "div_diff_flux_projection_")); in DivDiffFluxProjectionSetup_Indirect()
241 PetscCall(KSPGetPC(projection->ksp, &pc)); in DivDiffFluxProjectionSetup_Indirect()
244 PetscCall(KSPSetType(projection->ksp, KSPPREONLY)); in DivDiffFluxProjectionSetup_Indirect()
246 PetscCall(KSPSetFromOptions_WithMatCeed(projection->ksp, mat_mass)); in DivDiffFluxProjectionSetup_Indirect()
259 PetscCall(DMGetDimension(projection->dm, &dim)); in DivDiffFluxProjectionSetup_Indirect()
290 …PetscCallCeed(ceed, CeedQFunctionAddInput(qf_calc_divergence, "Grad F_diff", projection->num_comp … in DivDiffFluxProjectionSetup_Indirect()
300 …PetscCall(OperatorApplyContextCreate(projection->dm, NULL, ceed, op_calc_divergence, NULL, CEED_VE… in DivDiffFluxProjectionSetup_Indirect()
346 NodalProjectionData projection = diff_flux_proj->projection; in DivDiffFluxProjectionApply() local
354 PetscCall(DMGetGlobalVector(projection->dm, &DivDiffFlux)); in DivDiffFluxProjectionApply()
355 PetscCall(DMGetGlobalVector(projection->dm, &RHS)); in DivDiffFluxProjectionApply()
360 PetscCall(ApplyCeedOperatorLocalToGlobal(Q_loc, RHS, projection->l2_rhs_ctx)); in DivDiffFluxProjectionApply()
369 PetscCall(KSPGetPC(projection->ksp, &pc)); in DivDiffFluxProjectionApply()
370 PetscCall(PetscObjectTypeCompare((PetscObject)projection->ksp, KSPPREONLY, &ispreonly)); in DivDiffFluxProjectionApply()
373 else PetscCall(KSPSolve(projection->ksp, RHS, DivDiffFlux)); in DivDiffFluxProjectionApply()
377 …PetscCall(DMGlobalToLocal(projection->dm, DivDiffFlux, INSERT_VALUES, diff_flux_proj->DivDiffFlux_… in DivDiffFluxProjectionApply()
381 PetscCall(DMRestoreGlobalVector(projection->dm, &RHS)); in DivDiffFluxProjectionApply()
382 PetscCall(DMRestoreGlobalVector(projection->dm, &DivDiffFlux)); in DivDiffFluxProjectionApply()
388 PetscCall(DMGetGlobalVector(projection->dm, &DiffFlux)); in DivDiffFluxProjectionApply()
389 PetscCall(DMGetGlobalVector(projection->dm, &RHS)); in DivDiffFluxProjectionApply()
390 PetscCall(ApplyCeedOperatorLocalToGlobal(Q_loc, RHS, projection->l2_rhs_ctx)); in DivDiffFluxProjectionApply()
399 PetscCall(KSPGetPC(projection->ksp, &pc)); in DivDiffFluxProjectionApply()
400 PetscCall(PetscObjectTypeCompare((PetscObject)projection->ksp, KSPPREONLY, &ispreonly)); in DivDiffFluxProjectionApply()
403 else PetscCall(KSPSolve(projection->ksp, RHS, DiffFlux)); in DivDiffFluxProjectionApply()
408 PetscCall(DMRestoreGlobalVector(projection->dm, &RHS)); in DivDiffFluxProjectionApply()
409 PetscCall(DMRestoreGlobalVector(projection->dm, &DiffFlux)); in DivDiffFluxProjectionApply()
412 …SETERRQ(PetscObjectComm((PetscObject)projection->dm), PETSC_ERR_ARG_WRONG, "Should not reach here … in DivDiffFluxProjectionApply()
430 PetscCall(NodalProjectionDataDestroy(&diff_flux_proj->projection)); in DivDiffFluxProjectionDataDestroy()