Actual source code: dadestroy.c


  2: /*
  3:   Code for manipulating distributed regular arrays in parallel.
  4: */

  6: #include <petsc/private/dmdaimpl.h>

  8: PetscErrorCode  DMDestroy_DA(DM da)
  9: {
 10:   PetscErrorCode i;
 11:   DM_DA          *dd = (DM_DA*)da->data;

 13:   /* destroy the external/common part */
 14:   for (i=0; i<DMDA_MAX_WORK_ARRAYS; i++) {
 15:     PetscFree(dd->startghostedout[i]);
 16:     PetscFree(dd->startghostedin[i]);
 17:     PetscFree(dd->startout[i]);
 18:     PetscFree(dd->startin[i]);
 19:   }

 21:   VecScatterDestroy(&dd->gtol);
 22:   VecScatterDestroy(&dd->ltol);
 23:   VecDestroy(&dd->natural);
 24:   VecScatterDestroy(&dd->gton);
 25:   AODestroy(&dd->ao);
 26:   PetscFree(dd->aotype);

 28:   PetscFree(dd->lx);
 29:   PetscFree(dd->ly);
 30:   PetscFree(dd->lz);

 32:   PetscFree(dd->refine_x_hier);
 33:   PetscFree(dd->refine_y_hier);
 34:   PetscFree(dd->refine_z_hier);

 36:   if (dd->fieldname) {
 37:     for (i=0; i<dd->w; i++) {
 38:       PetscFree(dd->fieldname[i]);
 39:     }
 40:     PetscFree(dd->fieldname);
 41:   }
 42:   if (dd->coordinatename) {
 43:     for (i=0; i<da->dim; i++) {
 44:       PetscFree(dd->coordinatename[i]);
 45:     }
 46:     PetscFree(dd->coordinatename);
 47:   }
 48:   ISColoringDestroy(&dd->localcoloring);
 49:   ISColoringDestroy(&dd->ghostedcoloring);

 51:   PetscFree(dd->neighbors);
 52:   PetscFree(dd->dfill);
 53:   PetscFree(dd->ofill);
 54:   PetscFree(dd->ofillcols);
 55:   PetscFree(dd->e);
 56:   ISDestroy(&dd->ecorners);

 58:   PetscObjectComposeFunction((PetscObject)da,"DMSetUpGLVisViewer_C",NULL);

 60:   PetscFree(dd);
 61:   return 0;
 62: }