Actual source code: igacreate.c

petsc-3.3-p5 2012-12-01
  1: #include <petsc-private/igaimpl.h>    /*I   "petscdmiga.h"   I*/

  5: PetscErrorCode  DMSetFromOptions_IGA(DM dm)
  6: {

 11:   PetscOptionsHead("DMIGA Options");
 12:   PetscOptionsTail();
 13:   return(0);
 14: }

 16: /* External function declarations here */
 17: extern PetscErrorCode DMCreateGlobalVector_IGA(DM dm, Vec *gvec);
 18: extern PetscErrorCode DMCreateLocalVector_IGA(DM dm, Vec *lvec);
 19: extern PetscErrorCode DMCreateMatrix_IGA(DM dm, const MatType mtype, Mat *J);
 20: extern PetscErrorCode DMGlobalToLocalBegin_IGA(DM dm, Vec g, InsertMode mode, Vec l);
 21: extern PetscErrorCode DMGlobalToLocalEnd_IGA(DM dm, Vec g, InsertMode mode, Vec l);
 22: extern PetscErrorCode DMLocalToGlobalBegin_IGA(DM dm, Vec l, InsertMode mode, Vec g);
 23: extern PetscErrorCode DMLocalToGlobalEnd_IGA(DM dm, Vec l, InsertMode mode, Vec g);
 24: #if 0
 25: extern PetscErrorCode DMCreateLocalToGlobalMapping_IGA(DM dm);
 26: extern PetscErrorCode DMCreateInterpolation_IGA(DM dmCoarse, DM dmFine, Mat *interpolation, Vec *scaling);
 27: #endif
 28: extern PetscErrorCode DMView_IGA(DM dm, PetscViewer viewer);
 29: extern PetscErrorCode DMDestroy_IGA(DM dm);

 31: EXTERN_C_BEGIN
 34: PetscErrorCode DMCreate_IGA(DM dm)
 35: {
 36:   DM_IGA        *iga;

 41:   PetscNewLog(dm, DM_IGA, &iga);
 42:   dm->data = iga;

 44:   /* TODO */
 45:   iga->Ux  = 0; iga->Uy  = 0; iga->Uz  = 0;
 46:   iga->bdX = 0; iga->bdY = 0; iga->bdZ = 0;

 48:   PetscStrallocpy(VECSTANDARD, &dm->vectype);
 49:   dm->ops->view               = DMView_IGA;
 50:   dm->ops->setfromoptions     = DMSetFromOptions_IGA;
 51:   dm->ops->setup              = 0;
 52:   dm->ops->createglobalvector = DMCreateGlobalVector_IGA;
 53:   dm->ops->createlocalvector  = DMCreateLocalVector_IGA;
 54:   dm->ops->createlocaltoglobalmapping      = 0 /* DMCreateLocalToGlobalMapping_IGA */;
 55:   dm->ops->createlocaltoglobalmappingblock = 0;

 57:   dm->ops->getcoloring        = 0;
 58:   dm->ops->creatematrix          = DMCreateMatrix_IGA;
 59:   dm->ops->createinterpolation   = 0 /* DMCreateInterpolation_IGA */;
 60:   dm->ops->getaggregates      = 0;
 61:   dm->ops->getinjection       = 0;

 63:   dm->ops->refine             = 0;
 64:   dm->ops->coarsen            = 0;
 65:   dm->ops->refinehierarchy    = 0;
 66:   dm->ops->coarsenhierarchy   = 0;

 68:   dm->ops->globaltolocalbegin = DMGlobalToLocalBegin_IGA;
 69:   dm->ops->globaltolocalend   = DMGlobalToLocalEnd_IGA;
 70:   dm->ops->localtoglobalbegin = DMLocalToGlobalBegin_IGA;
 71:   dm->ops->localtoglobalend   = DMLocalToGlobalEnd_IGA;

 73:   dm->ops->destroy            = DMDestroy_IGA;
 74:   return(0);
 75: }
 76: EXTERN_C_END

 80: /*@
 81:   DMIGACreate - Creates a DMIGA object.

 83:   Collective on MPI_Comm

 85:   Input Parameter:
 86: . comm - The communicator for the DMIGA object

 88:   Output Parameter:
 89: . iga  - The DMIGA object

 91:   Level: beginner

 93: .keywords: DMIGA, create
 94: @*/
 95: PetscErrorCode  DMIGACreate(MPI_Comm comm, DM *iga)
 96: {

101:   DMCreate(comm, iga);
102:   DMSetType(*iga, DMIGA);
103:   return(0);
104: }