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: {
 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: }