Actual source code: dadestroy.c
petsc-3.14.6 2021-03-30
2: /*
3: Code for manipulating distributed regular arrays in parallel.
4: */
6: #include <petsc/private/dmdaimpl.h>
8: PetscErrorCode DMDestroy_DA(DM da)
9: {
11: PetscErrorCode i;
12: DM_DA *dd = (DM_DA*)da->data;
15: /* destroy the external/common part */
16: for (i=0; i<DMDA_MAX_WORK_ARRAYS; i++) {
17: PetscFree(dd->startghostedout[i]);
18: PetscFree(dd->startghostedin[i]);
19: PetscFree(dd->startout[i]);
20: PetscFree(dd->startin[i]);
21: }
23: VecScatterDestroy(&dd->gtol);
24: VecScatterDestroy(&dd->ltol);
25: VecDestroy(&dd->natural);
26: VecScatterDestroy(&dd->gton);
27: AODestroy(&dd->ao);
28: PetscFree(dd->aotype);
30: PetscFree(dd->lx);
31: PetscFree(dd->ly);
32: PetscFree(dd->lz);
34: PetscFree(dd->refine_x_hier);
35: PetscFree(dd->refine_y_hier);
36: PetscFree(dd->refine_z_hier);
38: if (dd->fieldname) {
39: for (i=0; i<dd->w; i++) {
40: PetscFree(dd->fieldname[i]);
41: }
42: PetscFree(dd->fieldname);
43: }
44: if (dd->coordinatename) {
45: for (i=0; i<da->dim; i++) {
46: PetscFree(dd->coordinatename[i]);
47: }
48: PetscFree(dd->coordinatename);
49: }
50: ISColoringDestroy(&dd->localcoloring);
51: ISColoringDestroy(&dd->ghostedcoloring);
53: PetscFree(dd->neighbors);
54: PetscFree(dd->dfill);
55: PetscFree(dd->ofill);
56: PetscFree(dd->ofillcols);
57: PetscFree(dd->e);
58: ISDestroy(&dd->ecorners);
60: PetscObjectComposeFunction((PetscObject)da,"DMSetUpGLVisViewer_C",NULL);
62: PetscFree(dd);
63: return(0);
64: }