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 }