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