xref: /petsc/src/dm/impls/swarm/swarm.c (revision 577956460491d749baa8bace91f4c277526081b6)
1*57795646SDave May 
2*57795646SDave May #define PETSCDM_DLL
3*57795646SDave May #include <petsc/private/dmswarmimpl.h>    /*I   "petscdmswarm.h"   I*/
4*57795646SDave May 
5*57795646SDave May //typedef PetscErrorCode (*swarm_project)(DM,DM,Vec) DMSwarmProjectMethod; /* swarm, geometry, result */
6*57795646SDave May 
7*57795646SDave May //typedef enum { PROJECT_DMDA_AQ1=0, PROJECT_DMDA_P0 } DMSwarmDMDAProjectionType;
8*57795646SDave May 
9*57795646SDave May #if 0
10*57795646SDave May PetscErrorCode DMSwarmRegisterPetscDatatypeField(DM dm,const char fieldname[],PetscInt blocksize,PetscDataType type)
11*57795646SDave May {
12*57795646SDave May 
13*57795646SDave May   PetscFunctionReturn(0);
14*57795646SDave May }
15*57795646SDave May 
16*57795646SDave May PetscErrorCode DMSwarmRegisterUserDatatypeField(DM dm,const char fieldname[],size_t bytes)
17*57795646SDave May {
18*57795646SDave May 
19*57795646SDave May   PetscFunctionReturn(0);
20*57795646SDave May }
21*57795646SDave May 
22*57795646SDave May PetscErrorCode DMSwarmGetField(DM dm,const char fieldname[],PetscInt *blocksize,PetscDataType *type,void **data)
23*57795646SDave May {
24*57795646SDave May 
25*57795646SDave May   PetscFunctionReturn(0);
26*57795646SDave May }
27*57795646SDave May 
28*57795646SDave May PetscErrorCode DMSwarmDefineFieldVector(DM dm,const char *fieldnames[])
29*57795646SDave May {
30*57795646SDave May   /* Check all fields are of type PETSC_REAL or PETSC_SCALAR */
31*57795646SDave May   /* Compute summed block size */
32*57795646SDave May   /* Set guard */
33*57795646SDave May   PetscFunctionReturn(0);
34*57795646SDave May }
35*57795646SDave May 
36*57795646SDave May PetscErrorCode DMSwarmGetGlobalVectorFromFields(DM dm,Vec *vec)
37*57795646SDave May {
38*57795646SDave May   PetscFunctionReturn(0);
39*57795646SDave May }
40*57795646SDave May PetscErrorCode DMSwarmRestoreGlobalVectorFromFields(DM dm,Vec *vec)
41*57795646SDave May {
42*57795646SDave May   PetscFunctionReturn(0);
43*57795646SDave May }
44*57795646SDave May 
45*57795646SDave May /* requires DMSwarmDefineFieldVector has been called */
46*57795646SDave May PetscErrorCode DMCreateGlobalVector_Swarm()
47*57795646SDave May {
48*57795646SDave May 
49*57795646SDave May   PetscFunctionReturn(0);
50*57795646SDave May }
51*57795646SDave May 
52*57795646SDave May /* requires DMSwarmDefineFieldVector has been called */
53*57795646SDave May PetscErrorCode DMLocalGlobalVector_Swarm()
54*57795646SDave May {
55*57795646SDave May 
56*57795646SDave May   PetscFunctionReturn();
57*57795646SDave May }
58*57795646SDave May 
59*57795646SDave May /* Defines what the local space will be */
60*57795646SDave May PetscErrorCode DMSwarmSetOverlap()
61*57795646SDave May {
62*57795646SDave May 
63*57795646SDave May   PetscFunctionReturn();
64*57795646SDave May }
65*57795646SDave May 
66*57795646SDave May 
67*57795646SDave May /* coordinates */
68*57795646SDave May /*
69*57795646SDave May DMGetCoordinateDM returns self
70*57795646SDave May DMGetCoordinates and DMGetCoordinatesLocal return same thing
71*57795646SDave May Local view could be used to define overlapping information
72*57795646SDave May */
73*57795646SDave May 
74*57795646SDave May #endif
75*57795646SDave May 
76*57795646SDave May #undef __FUNCT__
77*57795646SDave May #define __FUNCT__ "DMDestroy_Swarm"
78*57795646SDave May PetscErrorCode DMDestroy_Swarm(DM dm)
79*57795646SDave May {
80*57795646SDave May   DM_Swarm *swarm = (DM_Swarm*)dm->data;
81*57795646SDave May   PetscErrorCode ierr;
82*57795646SDave May 
83*57795646SDave May   PetscFunctionBegin;
84*57795646SDave May   ierr = PetscFree(swarm);CHKERRQ(ierr);
85*57795646SDave May   PetscFunctionReturn(0);
86*57795646SDave May }
87*57795646SDave May 
88*57795646SDave May #undef __FUNCT__
89*57795646SDave May #define __FUNCT__ "DMCreate_Swarm"
90*57795646SDave May PETSC_EXTERN PetscErrorCode DMCreate_Swarm(DM dm)
91*57795646SDave May {
92*57795646SDave May   DM_Swarm      *swarm;
93*57795646SDave May   PetscErrorCode ierr;
94*57795646SDave May 
95*57795646SDave May   PetscFunctionBegin;
96*57795646SDave May   PetscValidHeaderSpecific(dm, DM_CLASSID, 1);
97*57795646SDave May   ierr     = PetscNewLog(dm,&swarm);CHKERRQ(ierr);
98*57795646SDave May 
99*57795646SDave May   dm->dim  = 0;
100*57795646SDave May   dm->data = swarm;
101*57795646SDave May 
102*57795646SDave May   dm->ops->view                            = NULL;
103*57795646SDave May   dm->ops->load                            = NULL;
104*57795646SDave May   dm->ops->setfromoptions                  = NULL;
105*57795646SDave May   dm->ops->clone                           = NULL;
106*57795646SDave May   dm->ops->setup                           = NULL;
107*57795646SDave May   dm->ops->createdefaultsection            = NULL;
108*57795646SDave May   dm->ops->createdefaultconstraints        = NULL;
109*57795646SDave May   dm->ops->createglobalvector              = NULL;
110*57795646SDave May   dm->ops->createlocalvector               = NULL;
111*57795646SDave May   dm->ops->getlocaltoglobalmapping         = NULL;
112*57795646SDave May   dm->ops->createfieldis                   = NULL;
113*57795646SDave May   dm->ops->createcoordinatedm              = NULL;
114*57795646SDave May   dm->ops->getcoloring                     = NULL;
115*57795646SDave May   dm->ops->creatematrix                    = NULL;
116*57795646SDave May   dm->ops->createinterpolation             = NULL;
117*57795646SDave May   dm->ops->getaggregates                   = NULL;
118*57795646SDave May   dm->ops->getinjection                    = NULL;
119*57795646SDave May   dm->ops->refine                          = NULL;
120*57795646SDave May   dm->ops->coarsen                         = NULL;
121*57795646SDave May   dm->ops->refinehierarchy                 = NULL;
122*57795646SDave May   dm->ops->coarsenhierarchy                = NULL;
123*57795646SDave May   dm->ops->globaltolocalbegin              = NULL;
124*57795646SDave May   dm->ops->globaltolocalend                = NULL;
125*57795646SDave May   dm->ops->localtoglobalbegin              = NULL;
126*57795646SDave May   dm->ops->localtoglobalend                = NULL;
127*57795646SDave May   dm->ops->destroy                         = DMDestroy_Swarm;
128*57795646SDave May   dm->ops->createsubdm                     = NULL;
129*57795646SDave May   dm->ops->getdimpoints                    = NULL;
130*57795646SDave May   dm->ops->locatepoints                    = NULL;
131*57795646SDave May 
132*57795646SDave May   PetscFunctionReturn(0);
133*57795646SDave May }