xref: /petsc/src/dm/impls/da/dadestroy.c (revision e8e8640d1cb9a3a2f50c0c0d7b26e5c4d521e2e4)
147c6ae99SBarry Smith /*
247c6ae99SBarry Smith   Code for manipulating distributed regular arrays in parallel.
347c6ae99SBarry Smith */
447c6ae99SBarry Smith 
5af0996ceSBarry Smith #include <petsc/private/dmdaimpl.h> /*I   "petscdmda.h"   I*/
647c6ae99SBarry Smith 
DMDestroy_DA(DM da)7d71ae5a4SJacob Faibussowitsch PetscErrorCode DMDestroy_DA(DM da)
8d71ae5a4SJacob Faibussowitsch {
96bf464f9SBarry Smith   DM_DA *dd = (DM_DA *)da->data;
1047c6ae99SBarry Smith 
1147c6ae99SBarry Smith   PetscFunctionBegin;
1247c6ae99SBarry Smith   /* destroy the external/common part */
13*3ba16761SJacob Faibussowitsch   for (PetscInt i = 0; i < DMDA_MAX_WORK_ARRAYS; i++) {
149566063dSJacob Faibussowitsch     PetscCall(PetscFree(dd->startghostedout[i]));
159566063dSJacob Faibussowitsch     PetscCall(PetscFree(dd->startghostedin[i]));
169566063dSJacob Faibussowitsch     PetscCall(PetscFree(dd->startout[i]));
179566063dSJacob Faibussowitsch     PetscCall(PetscFree(dd->startin[i]));
1847c6ae99SBarry Smith   }
1947c6ae99SBarry Smith 
209566063dSJacob Faibussowitsch   PetscCall(VecScatterDestroy(&dd->gtol));
219566063dSJacob Faibussowitsch   PetscCall(VecScatterDestroy(&dd->ltol));
229566063dSJacob Faibussowitsch   PetscCall(VecDestroy(&dd->natural));
239566063dSJacob Faibussowitsch   PetscCall(VecScatterDestroy(&dd->gton));
249566063dSJacob Faibussowitsch   PetscCall(AODestroy(&dd->ao));
259566063dSJacob Faibussowitsch   PetscCall(PetscFree(dd->aotype));
2647c6ae99SBarry Smith 
279566063dSJacob Faibussowitsch   PetscCall(PetscFree(dd->lx));
289566063dSJacob Faibussowitsch   PetscCall(PetscFree(dd->ly));
299566063dSJacob Faibussowitsch   PetscCall(PetscFree(dd->lz));
3047c6ae99SBarry Smith 
319566063dSJacob Faibussowitsch   PetscCall(PetscFree(dd->refine_x_hier));
329566063dSJacob Faibussowitsch   PetscCall(PetscFree(dd->refine_y_hier));
339566063dSJacob Faibussowitsch   PetscCall(PetscFree(dd->refine_z_hier));
34897f7067SBarry Smith 
3547c6ae99SBarry Smith   if (dd->fieldname) {
36*3ba16761SJacob Faibussowitsch     for (PetscInt i = 0; i < dd->w; i++) PetscCall(PetscFree(dd->fieldname[i]));
379566063dSJacob Faibussowitsch     PetscCall(PetscFree(dd->fieldname));
3847c6ae99SBarry Smith   }
39109c9344SBarry Smith   if (dd->coordinatename) {
40*3ba16761SJacob Faibussowitsch     for (PetscInt i = 0; i < da->dim; i++) PetscCall(PetscFree(dd->coordinatename[i]));
419566063dSJacob Faibussowitsch     PetscCall(PetscFree(dd->coordinatename));
42109c9344SBarry Smith   }
439566063dSJacob Faibussowitsch   PetscCall(ISColoringDestroy(&dd->localcoloring));
449566063dSJacob Faibussowitsch   PetscCall(ISColoringDestroy(&dd->ghostedcoloring));
4547c6ae99SBarry Smith 
469566063dSJacob Faibussowitsch   PetscCall(PetscFree(dd->neighbors));
479566063dSJacob Faibussowitsch   PetscCall(PetscFree(dd->dfill));
489566063dSJacob Faibussowitsch   PetscCall(PetscFree(dd->ofill));
499566063dSJacob Faibussowitsch   PetscCall(PetscFree(dd->ofillcols));
509566063dSJacob Faibussowitsch   PetscCall(PetscFree(dd->e));
519566063dSJacob Faibussowitsch   PetscCall(ISDestroy(&dd->ecorners));
52a66d4d66SMatthew G Knepley 
539566063dSJacob Faibussowitsch   PetscCall(PetscObjectComposeFunction((PetscObject)da, "DMSetUpGLVisViewer_C", NULL));
548135c375SStefano Zampini 
559566063dSJacob Faibussowitsch   PetscCall(PetscFree(dd));
56*3ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
5747c6ae99SBarry Smith }
58