Lines Matching refs:db
72 DMSwarmDataBucket db; in DMSwarmDataBucketCreate() local
75 PetscCall(PetscNew(&db)); in DMSwarmDataBucketCreate()
77 db->finalised = PETSC_FALSE; in DMSwarmDataBucketCreate()
79 db->L = -1; in DMSwarmDataBucketCreate()
80 db->buffer = 1; in DMSwarmDataBucketCreate()
81 db->allocated = 1; in DMSwarmDataBucketCreate()
82 db->nfields = 0; in DMSwarmDataBucketCreate()
83 PetscCall(PetscMalloc1(1, &db->field)); in DMSwarmDataBucketCreate()
84 *DB = db; in DMSwarmDataBucketCreate()
90 DMSwarmDataBucket db = *DB; in DMSwarmDataBucketDestroy() local
95 for (f = 0; f < db->nfields; ++f) PetscCall(DMSwarmDataFieldDestroy(&db->field[f])); in DMSwarmDataBucketDestroy()
97 if (db->field != NULL) PetscCall(PetscFree(db->field)); in DMSwarmDataBucketDestroy()
98 PetscCall(PetscFree(db)); in DMSwarmDataBucketDestroy()
103 PetscErrorCode DMSwarmDataBucketQueryForActiveFields(DMSwarmDataBucket db, PetscBool *any_active_fi… in DMSwarmDataBucketQueryForActiveFields() argument
109 for (f = 0; f < db->nfields; ++f) { in DMSwarmDataBucketQueryForActiveFields()
110 if (db->field[f]->active) { in DMSwarmDataBucketQueryForActiveFields()
118 PetscErrorCode DMSwarmDataBucketRegisterField(DMSwarmDataBucket db, const char registration_functio… in DMSwarmDataBucketRegisterField() argument
132 …PetscCall(DMSwarmDataFieldStringInList(field_name, db->nfields, (const DMSwarmDataField *)db->fiel… in DMSwarmDataBucketRegisterField()
135 PetscCall(PetscRealloc(sizeof(DMSwarmDataField) * (db->nfields + 1), &db->field)); in DMSwarmDataBucketRegisterField()
137 …PetscCall(DMSwarmDataFieldCreate(registration_function, field_name, atomic_size, db->allocated, &f… in DMSwarmDataBucketRegisterField()
138 db->field[db->nfields] = fp; in DMSwarmDataBucketRegisterField()
139 db->nfields++; in DMSwarmDataBucketRegisterField()
153 PetscErrorCode DMSwarmDataBucketGetDMSwarmDataFieldIdByName(DMSwarmDataBucket db, const char name[]… in DMSwarmDataBucketGetDMSwarmDataFieldIdByName() argument
159 …PetscCall(DMSwarmDataFieldStringInList(name, db->nfields, (const DMSwarmDataField *)db->field, &fo… in DMSwarmDataBucketGetDMSwarmDataFieldIdByName()
161 …PetscCall(DMSwarmDataFieldStringFindInList(name, db->nfields, (const DMSwarmDataField *)db->field,… in DMSwarmDataBucketGetDMSwarmDataFieldIdByName()
165 PetscErrorCode DMSwarmDataBucketGetDMSwarmDataFieldByName(DMSwarmDataBucket db, const char name[], … in DMSwarmDataBucketGetDMSwarmDataFieldByName() argument
171 …PetscCall(DMSwarmDataFieldStringInList(name, db->nfields, (const DMSwarmDataField *)db->field, &fo… in DMSwarmDataBucketGetDMSwarmDataFieldByName()
173 …PetscCall(DMSwarmDataFieldStringFindInList(name, db->nfields, (const DMSwarmDataField *)db->field,… in DMSwarmDataBucketGetDMSwarmDataFieldByName()
174 *gfield = db->field[idx]; in DMSwarmDataBucketGetDMSwarmDataFieldByName()
178 PetscErrorCode DMSwarmDataBucketQueryDMSwarmDataFieldByName(DMSwarmDataBucket db, const char name[]… in DMSwarmDataBucketQueryDMSwarmDataFieldByName() argument
182 …PetscCall(DMSwarmDataFieldStringInList(name, db->nfields, (const DMSwarmDataField *)db->field, fou… in DMSwarmDataBucketQueryDMSwarmDataFieldByName()
186 PetscErrorCode DMSwarmDataBucketFinalize(DMSwarmDataBucket db) in DMSwarmDataBucketFinalize() argument
189 db->finalised = PETSC_TRUE; in DMSwarmDataBucketFinalize()
237 PetscErrorCode DMSwarmDataBucketSetSizes(DMSwarmDataBucket db, const PetscInt L, const PetscInt buf… in DMSwarmDataBucketSetSizes() argument
243 …PetscCheck(db->finalised != PETSC_FALSE, PETSC_COMM_SELF, PETSC_ERR_USER, "You must call DMSwarmDa… in DMSwarmDataBucketSetSizes()
244 PetscCall(DMSwarmDataBucketQueryForActiveFields(db, &any_active_fields)); in DMSwarmDataBucketSetSizes()
247 current_allocated = db->allocated; in DMSwarmDataBucketSetSizes()
248 current_used = PetscMax(db->L, 0); in DMSwarmDataBucketSetSizes()
251 new_buffer = db->buffer; in DMSwarmDataBucketSetSizes()
259 for (f = 0; f < db->nfields; f++) { in DMSwarmDataBucketSetSizes()
260 PetscCall(DMSwarmDataFieldSetSize(db->field[f], new_allocated)); in DMSwarmDataBucketSetSizes()
261 PetscCall(DMSwarmDataFieldZeroBlock(db->field[f], current_allocated, new_allocated)); in DMSwarmDataBucketSetSizes()
263 db->L = new_used; in DMSwarmDataBucketSetSizes()
264 db->buffer = new_buffer; in DMSwarmDataBucketSetSizes()
265 db->allocated = new_used + new_buffer; in DMSwarmDataBucketSetSizes()
269 … for (f = 0; f < db->nfields; ++f) PetscCall(DMSwarmDataFieldSetSize(db->field[f], new_allocated)); in DMSwarmDataBucketSetSizes()
270 db->L = new_used; in DMSwarmDataBucketSetSizes()
271 db->buffer = new_buffer; in DMSwarmDataBucketSetSizes()
272 db->allocated = new_used + new_buffer; in DMSwarmDataBucketSetSizes()
274 db->L = new_used; in DMSwarmDataBucketSetSizes()
275 db->buffer = new_buffer; in DMSwarmDataBucketSetSizes()
281 for (f = 0; f < db->nfields; ++f) { in DMSwarmDataBucketSetSizes()
282 DMSwarmDataField field = db->field[f]; in DMSwarmDataBucketSetSizes()
289 PetscErrorCode DMSwarmDataBucketSetInitialSizes(DMSwarmDataBucket db, const PetscInt L, const Petsc… in DMSwarmDataBucketSetInitialSizes() argument
294 PetscCall(DMSwarmDataBucketSetSizes(db, L, buffer)); in DMSwarmDataBucketSetInitialSizes()
295 for (f = 0; f < db->nfields; ++f) { in DMSwarmDataBucketSetInitialSizes()
296 DMSwarmDataField field = db->field[f]; in DMSwarmDataBucketSetInitialSizes()
297 PetscCall(DMSwarmDataFieldZeroBlock(field, 0, db->allocated)); in DMSwarmDataBucketSetInitialSizes()
302 PetscErrorCode DMSwarmDataBucketGetSizes(DMSwarmDataBucket db, PetscInt *L, PetscInt *buffer, Petsc… in DMSwarmDataBucketGetSizes() argument
305 if (L) *L = db->L; in DMSwarmDataBucketGetSizes()
306 if (buffer) *buffer = db->buffer; in DMSwarmDataBucketGetSizes()
307 if (allocated) *allocated = db->allocated; in DMSwarmDataBucketGetSizes()
311 PetscErrorCode DMSwarmDataBucketGetGlobalSizes(MPI_Comm comm, DMSwarmDataBucket db, PetscInt *L, Pe… in DMSwarmDataBucketGetGlobalSizes() argument
314 if (L) PetscCallMPI(MPIU_Allreduce(&db->L, L, 1, MPIU_INT, MPI_SUM, comm)); in DMSwarmDataBucketGetGlobalSizes()
315 if (buffer) PetscCallMPI(MPIU_Allreduce(&db->buffer, buffer, 1, MPIU_INT, MPI_SUM, comm)); in DMSwarmDataBucketGetGlobalSizes()
316 …if (allocated) PetscCallMPI(MPIU_Allreduce(&db->allocated, allocated, 1, MPIU_INT, MPI_SUM, comm)); in DMSwarmDataBucketGetGlobalSizes()
320 PetscErrorCode DMSwarmDataBucketGetDMSwarmDataFields(DMSwarmDataBucket db, PetscInt *L, DMSwarmData… in DMSwarmDataBucketGetDMSwarmDataFields() argument
323 if (L) *L = db->nfields; in DMSwarmDataBucketGetDMSwarmDataFields()
324 if (fields) *fields = db->field; in DMSwarmDataBucketGetDMSwarmDataFields()
468 PetscErrorCode DMSwarmDataBucketRemovePointAtIndex(const DMSwarmDataBucket db, const PetscInt index) in DMSwarmDataBucketRemovePointAtIndex() argument
477 …PetscCheck(index < db->allocated, PETSC_COMM_SELF, PETSC_ERR_USER, "index must be < %" PetscInt_FM… in DMSwarmDataBucketRemovePointAtIndex()
479 PetscCall(DMSwarmDataBucketQueryForActiveFields(db, &any_active_fields)); in DMSwarmDataBucketRemovePointAtIndex()
481 if (index >= db->L) { /* this point is not in the list - no need to error, but I will anyway */ in DMSwarmDataBucketRemovePointAtIndex()
482 …ing to remove point at index=%" PetscInt_FMT " since it's < db->L = %" PetscInt_FMT, index, db->L); in DMSwarmDataBucketRemovePointAtIndex()
484 if (index != db->L - 1) { /* not last point in list */ in DMSwarmDataBucketRemovePointAtIndex()
485 for (f = 0; f < db->nfields; ++f) { in DMSwarmDataBucketRemovePointAtIndex()
486 DMSwarmDataField field = db->field[f]; in DMSwarmDataBucketRemovePointAtIndex()
489 PetscCall(DMSwarmDataFieldCopyPoint(db->L - 1, field, index, field)); in DMSwarmDataBucketRemovePointAtIndex()
495 PetscCall(DMSwarmDataBucketRemovePoint(db)); in DMSwarmDataBucketRemovePointAtIndex()
529 PetscErrorCode DMSwarmDataBucketZeroPoint(const DMSwarmDataBucket db, const PetscInt index) in DMSwarmDataBucketZeroPoint() argument
536 …PetscCheck(index < db->allocated, PETSC_COMM_SELF, PETSC_ERR_USER, "index must be < %" PetscInt_FM… in DMSwarmDataBucketZeroPoint()
537 for (f = 0; f < db->nfields; ++f) { in DMSwarmDataBucketZeroPoint()
538 DMSwarmDataField field = db->field[f]; in DMSwarmDataBucketZeroPoint()
545 PetscErrorCode DMSwarmDataBucketAddPoint(DMSwarmDataBucket db) in DMSwarmDataBucketAddPoint() argument
548 …PetscCall(DMSwarmDataBucketSetSizes(db, PetscMax(db->L, 0) + 1, DMSWARM_DATA_BUCKET_BUFFER_DEFAULT… in DMSwarmDataBucketAddPoint()
553 PetscErrorCode DMSwarmDataBucketRemovePoint(DMSwarmDataBucket db) in DMSwarmDataBucketRemovePoint() argument
556 …PetscCheck(db->L > 0, PetscObjectComm((PetscObject)db), PETSC_ERR_ARG_WRONG, "Swarm has no points … in DMSwarmDataBucketRemovePoint()
557 PetscCall(DMSwarmDataBucketSetSizes(db, db->L - 1, DMSWARM_DATA_BUCKET_BUFFER_DEFAULT)); in DMSwarmDataBucketRemovePoint()
562 static PetscErrorCode DMSwarmDataBucketView_stdout(MPI_Comm comm, DMSwarmDataBucket db) in DMSwarmDataBucketView_stdout() argument
569 PetscCall(PetscPrintf(comm, " L = %" PetscInt_FMT " \n", db->L)); in DMSwarmDataBucketView_stdout()
570 PetscCall(PetscPrintf(comm, " buffer = %" PetscInt_FMT " \n", db->buffer)); in DMSwarmDataBucketView_stdout()
571 PetscCall(PetscPrintf(comm, " allocated = %" PetscInt_FMT " \n", db->allocated)); in DMSwarmDataBucketView_stdout()
572 PetscCall(PetscPrintf(comm, " nfields registered = %" PetscInt_FMT " \n", db->nfields)); in DMSwarmDataBucketView_stdout()
574 for (f = 0; f < db->nfields; ++f) { in DMSwarmDataBucketView_stdout()
575 double memory_usage_f = (double)(db->field[f]->atomic_size * db->allocated) * 1.0e-6; in DMSwarmDataBucketView_stdout()
580 for (f = 0; f < db->nfields; ++f) { in DMSwarmDataBucketView_stdout()
581 double memory_usage_f = (double)(db->field[f]->atomic_size * db->allocated) * 1.0e-6; in DMSwarmDataBucketView_stdout()
582 … [%3" PetscInt_FMT "] %15s : Mem. usage = %1.2e (MB) [rank0]\n", f, db->field[f]->name, mem… in DMSwarmDataBucketView_stdout()
583 …tf(comm, " blocksize = %" PetscInt_FMT " \n", db->field[f]->bs)); in DMSwarmDataBucketView_stdout()
584 if (db->field[f]->bs != 1) { in DMSwarmDataBucketView_stdout()
585 …atomic size = %zu [full block, bs=%" PetscInt_FMT "]\n", db->field[f]->atomic_size, db->field… in DMSwarmDataBucketView_stdout()
586 … atomic size/item = %zu \n", (size_t)(db->field[f]->atomic_size / db->field… in DMSwarmDataBucketView_stdout()
588 …PetscCall(PetscPrintf(comm, " atomic size = %zu \n", db->field[f]-… in DMSwarmDataBucketView_stdout()
595 static PetscErrorCode DMSwarmDataBucketView_Seq(MPI_Comm comm, DMSwarmDataBucket db, const char fil… in DMSwarmDataBucketView_Seq() argument
600 PetscCall(DMSwarmDataBucketView_stdout(PETSC_COMM_SELF, db)); in DMSwarmDataBucketView_Seq()
614 static PetscErrorCode DMSwarmDataBucketView_MPI(MPI_Comm comm, DMSwarmDataBucket db, const char fil… in DMSwarmDataBucketView_MPI() argument
619 PetscCall(DMSwarmDataBucketView_stdout(comm, db)); in DMSwarmDataBucketView_MPI()
633 PetscErrorCode DMSwarmDataBucketView(MPI_Comm comm, DMSwarmDataBucket db, const char filename[], DM… in DMSwarmDataBucketView() argument
640 PetscCall(DMSwarmDataBucketView_Seq(comm, db, filename, type)); in DMSwarmDataBucketView()
642 PetscCall(DMSwarmDataBucketView_MPI(comm, db, filename, type)); in DMSwarmDataBucketView()
693 PetscErrorCode DMSwarmDataBucketCreatePackedArray(DMSwarmDataBucket db, size_t *bytes, void **buf) in DMSwarmDataBucketCreatePackedArray() argument
701 for (f = 0; f < db->nfields; ++f) { in DMSwarmDataBucketCreatePackedArray()
702 DMSwarmDataField df = db->field[f]; in DMSwarmDataBucketCreatePackedArray()
712 PetscErrorCode DMSwarmDataBucketDestroyPackedArray(DMSwarmDataBucket db, void **buf) in DMSwarmDataBucketDestroyPackedArray() argument
722 PetscErrorCode DMSwarmDataBucketFillPackedArray(DMSwarmDataBucket db, const PetscInt index, void *b… in DMSwarmDataBucketFillPackedArray() argument
730 for (f = 0; f < db->nfields; ++f) { in DMSwarmDataBucketFillPackedArray()
731 DMSwarmDataField df = db->field[f]; in DMSwarmDataBucketFillPackedArray()
742 PetscErrorCode DMSwarmDataBucketInsertPackedArray(DMSwarmDataBucket db, const PetscInt idx, void *d… in DMSwarmDataBucketInsertPackedArray() argument
750 for (f = 0; f < db->nfields; ++f) { in DMSwarmDataBucketInsertPackedArray()
751 DMSwarmDataField df = db->field[f]; in DMSwarmDataBucketInsertPackedArray()