xref: /petsc/src/dm/impls/da/dadestroy.c (revision 9566063d113dddea24716c546802770db7481bc0)
147c6ae99SBarry Smith 
247c6ae99SBarry Smith /*
347c6ae99SBarry Smith   Code for manipulating distributed regular arrays in parallel.
447c6ae99SBarry Smith */
547c6ae99SBarry Smith 
6af0996ceSBarry Smith #include <petsc/private/dmdaimpl.h>    /*I   "petscdmda.h"   I*/
747c6ae99SBarry Smith 
86bf464f9SBarry Smith PetscErrorCode  DMDestroy_DA(DM da)
947c6ae99SBarry Smith {
1047c6ae99SBarry Smith   PetscErrorCode i;
116bf464f9SBarry Smith   DM_DA          *dd = (DM_DA*)da->data;
1247c6ae99SBarry Smith 
1347c6ae99SBarry Smith   PetscFunctionBegin;
1447c6ae99SBarry Smith   /* destroy the external/common part */
15aa219208SBarry Smith   for (i=0; i<DMDA_MAX_WORK_ARRAYS; i++) {
16*9566063dSJacob Faibussowitsch     PetscCall(PetscFree(dd->startghostedout[i]));
17*9566063dSJacob Faibussowitsch     PetscCall(PetscFree(dd->startghostedin[i]));
18*9566063dSJacob Faibussowitsch     PetscCall(PetscFree(dd->startout[i]));
19*9566063dSJacob Faibussowitsch     PetscCall(PetscFree(dd->startin[i]));
2047c6ae99SBarry Smith   }
2147c6ae99SBarry Smith 
22*9566063dSJacob Faibussowitsch   PetscCall(VecScatterDestroy(&dd->gtol));
23*9566063dSJacob Faibussowitsch   PetscCall(VecScatterDestroy(&dd->ltol));
24*9566063dSJacob Faibussowitsch   PetscCall(VecDestroy(&dd->natural));
25*9566063dSJacob Faibussowitsch   PetscCall(VecScatterDestroy(&dd->gton));
26*9566063dSJacob Faibussowitsch   PetscCall(AODestroy(&dd->ao));
27*9566063dSJacob Faibussowitsch   PetscCall(PetscFree(dd->aotype));
2847c6ae99SBarry Smith 
29*9566063dSJacob Faibussowitsch   PetscCall(PetscFree(dd->lx));
30*9566063dSJacob Faibussowitsch   PetscCall(PetscFree(dd->ly));
31*9566063dSJacob Faibussowitsch   PetscCall(PetscFree(dd->lz));
3247c6ae99SBarry Smith 
33*9566063dSJacob Faibussowitsch   PetscCall(PetscFree(dd->refine_x_hier));
34*9566063dSJacob Faibussowitsch   PetscCall(PetscFree(dd->refine_y_hier));
35*9566063dSJacob Faibussowitsch   PetscCall(PetscFree(dd->refine_z_hier));
36897f7067SBarry Smith 
3747c6ae99SBarry Smith   if (dd->fieldname) {
3847c6ae99SBarry Smith     for (i=0; i<dd->w; i++) {
39*9566063dSJacob Faibussowitsch       PetscCall(PetscFree(dd->fieldname[i]));
4047c6ae99SBarry Smith     }
41*9566063dSJacob Faibussowitsch     PetscCall(PetscFree(dd->fieldname));
4247c6ae99SBarry Smith   }
43109c9344SBarry Smith   if (dd->coordinatename) {
44c73cfb54SMatthew G. Knepley     for (i=0; i<da->dim; i++) {
45*9566063dSJacob Faibussowitsch       PetscCall(PetscFree(dd->coordinatename[i]));
46109c9344SBarry Smith     }
47*9566063dSJacob Faibussowitsch     PetscCall(PetscFree(dd->coordinatename));
48109c9344SBarry Smith   }
49*9566063dSJacob Faibussowitsch   PetscCall(ISColoringDestroy(&dd->localcoloring));
50*9566063dSJacob Faibussowitsch   PetscCall(ISColoringDestroy(&dd->ghostedcoloring));
5147c6ae99SBarry Smith 
52*9566063dSJacob Faibussowitsch   PetscCall(PetscFree(dd->neighbors));
53*9566063dSJacob Faibussowitsch   PetscCall(PetscFree(dd->dfill));
54*9566063dSJacob Faibussowitsch   PetscCall(PetscFree(dd->ofill));
55*9566063dSJacob Faibussowitsch   PetscCall(PetscFree(dd->ofillcols));
56*9566063dSJacob Faibussowitsch   PetscCall(PetscFree(dd->e));
57*9566063dSJacob Faibussowitsch   PetscCall(ISDestroy(&dd->ecorners));
58a66d4d66SMatthew G Knepley 
59*9566063dSJacob Faibussowitsch   PetscCall(PetscObjectComposeFunction((PetscObject)da,"DMSetUpGLVisViewer_C",NULL));
608135c375SStefano Zampini 
61*9566063dSJacob Faibussowitsch   PetscCall(PetscFree(dd));
6247c6ae99SBarry Smith   PetscFunctionReturn(0);
6347c6ae99SBarry Smith }
64