Lines Matching refs:dm
22 PetscErrorCode DMGetPeriodicity(DM dm, const PetscReal *maxCell[], const PetscReal *Lstart[], const… in DMGetPeriodicity() argument
25 PetscValidHeaderSpecific(dm, DM_CLASSID, 1); in DMGetPeriodicity()
26 if (maxCell) *maxCell = dm->maxCell; in DMGetPeriodicity()
27 if (Lstart) *Lstart = dm->Lstart; in DMGetPeriodicity()
28 if (L) *L = dm->L; in DMGetPeriodicity()
47 PetscErrorCode DMSetPeriodicity(DM dm, const PetscReal maxCell[], const PetscReal Lstart[], const P… in DMSetPeriodicity() argument
52 PetscValidHeaderSpecific(dm, DM_CLASSID, 1); in DMSetPeriodicity()
56 PetscCall(DMGetDimension(dm, &dim)); in DMSetPeriodicity()
58 if (!dm->maxCell) PetscCall(PetscMalloc1(dim, &dm->maxCell)); in DMSetPeriodicity()
59 for (d = 0; d < dim; ++d) dm->maxCell[d] = maxCell[d]; in DMSetPeriodicity()
61 PetscCall(PetscFree(dm->maxCell)); in DMSetPeriodicity()
62 dm->maxCell = NULL; in DMSetPeriodicity()
65 if (!dm->Lstart) PetscCall(PetscMalloc1(dim, &dm->Lstart)); in DMSetPeriodicity()
66 for (d = 0; d < dim; ++d) dm->Lstart[d] = Lstart[d]; in DMSetPeriodicity()
68 PetscCall(PetscFree(dm->Lstart)); in DMSetPeriodicity()
69 dm->Lstart = NULL; in DMSetPeriodicity()
72 if (!dm->L) PetscCall(PetscMalloc1(dim, &dm->L)); in DMSetPeriodicity()
73 for (d = 0; d < dim; ++d) dm->L[d] = L[d]; in DMSetPeriodicity()
75 PetscCall(PetscFree(dm->L)); in DMSetPeriodicity()
76 dm->L = NULL; in DMSetPeriodicity()
78 …PetscCheck((dm->maxCell && dm->L) || (!dm->maxCell && !dm->L), PetscObjectComm((PetscObject)dm), P… in DMSetPeriodicity()
97 PetscErrorCode DMLocalizeCoordinate(DM dm, const PetscScalar in[], PetscBool endpoint, PetscScalar … in DMLocalizeCoordinate() argument
102 PetscCall(DMGetCoordinateDim(dm, &dim)); in DMLocalizeCoordinate()
103 if (!dm->maxCell) { in DMLocalizeCoordinate()
108 …(PetscRealPart(in[d]) / dm->L[d] - PetscFloorReal(PetscRealPart(in[d]) / dm->L[d])) < PETSC_SMALL)… in DMLocalizeCoordinate()
109 out[d] = in[d] - dm->L[d] * (PetscFloorReal(PetscRealPart(in[d]) / dm->L[d]) - 1); in DMLocalizeCoordinate()
111 out[d] = in[d] - dm->L[d] * PetscFloorReal(PetscRealPart(in[d]) / dm->L[d]); in DMLocalizeCoordinate()
115 …for (d = 0; d < dim; ++d) out[d] = in[d] - dm->L[d] * PetscFloorReal(PetscRealPart(in[d]) / dm->L[… in DMLocalizeCoordinate()
140 PetscErrorCode DMLocalizeCoordinate_Internal(DM dm, PetscInt dim, const PetscScalar anchor[], const… in DMLocalizeCoordinate_Internal() argument
145 if (!dm->maxCell) { in DMLocalizeCoordinate_Internal()
149 if ((dm->L[d] > 0.0) && (PetscAbsScalar(anchor[d] - in[d]) > dm->maxCell[d])) { in DMLocalizeCoordinate_Internal()
150 … out[d] = PetscRealPart(anchor[d]) > PetscRealPart(in[d]) ? dm->L[d] + in[d] : in[d] - dm->L[d]; in DMLocalizeCoordinate_Internal()
159 PetscErrorCode DMLocalizeCoordinateReal_Internal(DM dm, PetscInt dim, const PetscReal anchor[], con… in DMLocalizeCoordinateReal_Internal() argument
164 if (!dm->maxCell) { in DMLocalizeCoordinateReal_Internal()
168 if ((dm->L[d] > 0.0) && (PetscAbsReal(anchor[d] - in[d]) > dm->maxCell[d])) { in DMLocalizeCoordinateReal_Internal()
169 out[d] = anchor[d] > in[d] ? dm->L[d] + in[d] : in[d] - dm->L[d]; in DMLocalizeCoordinateReal_Internal()
198 PetscErrorCode DMLocalizeAddCoordinate_Internal(DM dm, PetscInt dim, const PetscScalar anchor[], co… in DMLocalizeAddCoordinate_Internal() argument
203 if (!dm->maxCell) { in DMLocalizeAddCoordinate_Internal()
207 const PetscReal maxC = dm->maxCell[d]; in DMLocalizeAddCoordinate_Internal()
209 if ((dm->L[d] > 0.0) && (PetscAbsScalar(anchor[d] - in[d]) > maxC)) { in DMLocalizeAddCoordinate_Internal()
210 …r newCoord = PetscRealPart(anchor[d]) > PetscRealPart(in[d]) ? dm->L[d] + in[d] : in[d] - dm->L[d]; in DMLocalizeAddCoordinate_Internal()
238 PetscErrorCode DMGetCoordinatesLocalizedLocal(DM dm, PetscBool *areLocalized) in DMGetCoordinatesLocalizedLocal() argument
241 PetscValidHeaderSpecific(dm, DM_CLASSID, 1); in DMGetCoordinatesLocalizedLocal()
243 *areLocalized = dm->coordinates[1].dim < 0 ? PETSC_FALSE : PETSC_TRUE; in DMGetCoordinatesLocalizedLocal()
262 PetscErrorCode DMGetCoordinatesLocalized(DM dm, PetscBool *areLocalized) in DMGetCoordinatesLocalized() argument
267 PetscValidHeaderSpecific(dm, DM_CLASSID, 1); in DMGetCoordinatesLocalized()
269 PetscCall(DMGetCoordinatesLocalizedLocal(dm, &localized)); in DMGetCoordinatesLocalized()
270 …PIU_Allreduce(&localized, areLocalized, 1, MPI_C_BOOL, MPI_LOR, PetscObjectComm((PetscObject)dm))); in DMGetCoordinatesLocalized()
289 PetscErrorCode DMGetSparseLocalize(DM dm, PetscBool *sparse) in DMGetSparseLocalize() argument
292 PetscValidHeaderSpecific(dm, DM_CLASSID, 1); in DMGetSparseLocalize()
294 *sparse = dm->sparseLocalize; in DMGetSparseLocalize()
311 PetscErrorCode DMSetSparseLocalize(DM dm, PetscBool sparse) in DMSetSparseLocalize() argument
314 PetscValidHeaderSpecific(dm, DM_CLASSID, 1); in DMSetSparseLocalize()
315 PetscValidLogicalCollectiveBool(dm, sparse, 2); in DMSetSparseLocalize()
316 dm->sparseLocalize = sparse; in DMSetSparseLocalize()
332 PetscErrorCode DMLocalizeCoordinates(DM dm) in DMLocalizeCoordinates() argument
346 PetscValidHeaderSpecific(dm, DM_CLASSID, 1); in DMLocalizeCoordinates()
347 PetscCall(DMGetPeriodicity(dm, NULL, &Lstart, &L)); in DMLocalizeCoordinates()
348 PetscCall(DMGetSparseLocalize(dm, &sparseLocalize)); in DMLocalizeCoordinates()
351 PetscCall(PetscObjectGetComm((PetscObject)dm, &comm)); in DMLocalizeCoordinates()
352 PetscCall(DMGetCoordinatesLocalized(dm, &isLocalized)); in DMLocalizeCoordinates()
355 PetscCall(DMGetCoordinateDM(dm, &cdm)); in DMLocalizeCoordinates()
356 PetscCall(DMConvert(dm, DMPLEX, &plex)); in DMLocalizeCoordinates()
361 PetscCall(DMGetWorkArray(dm, 2 * (maxHeight + 1), MPIU_INT, &pStart)); in DMLocalizeCoordinates()
370 PetscCall(DMGetCoordinatesLocal(dm, &coordinates)); in DMLocalizeCoordinates()
372 PetscCall(DMGetCoordinateSection(dm, &cs)); in DMLocalizeCoordinates()
383 PetscCall(DMGetWorkArray(dm, 2 * Nc, MPIU_SCALAR, &anchor)); in DMLocalizeCoordinates()
399 PetscCall(DMLocalizeCoordinate_Internal(dm, Nc, anchor, &cellCoords[p * Nc], localized)); in DMLocalizeCoordinates()
439 …PetscCall(DMLocalizeCoordinate_Internal(dm, Nc, anchor, &cellCoords[p * Nc], &coordsDG[offDG + p *… in DMLocalizeCoordinates()
452 PetscUseTypeMethod(dm, createcellcoordinatedm, &cdgdm); in DMLocalizeCoordinates()
453 PetscCall(DMSetCellCoordinateDM(dm, cdgdm)); in DMLocalizeCoordinates()
468 PetscCall(DMPlexCreateCoordinateSpace(dm, degree, PETSC_TRUE, PETSC_FALSE)); in DMLocalizeCoordinates()
471 PetscCall(DMSetCellCoordinateSection(dm, PETSC_DETERMINE, csDG)); in DMLocalizeCoordinates()
472 PetscCall(DMSetCellCoordinatesLocal(dm, cVec)); in DMLocalizeCoordinates()
476 PetscCall(DMRestoreWorkArray(dm, 2 * bs, MPIU_SCALAR, &anchor)); in DMLocalizeCoordinates()
477 PetscCall(DMRestoreWorkArray(dm, 2 * (maxHeight + 1), MPIU_INT, &pStart)); in DMLocalizeCoordinates()