/*@C DMADDACreate - Creates and ADDA object that translate between coordinates in a geometric grid of arbitrary dimension and data in a PETSc vector distributed on several processors. Collective on MPI_Comm Input Parameters: + comm - MPI communicator . dim - the dimension of the grid . nodes - array with d entries that give the number of nodes in each dimension . procs - array with d entries that give the number of processors in each dimension (or NULL if to be determined automatically) . dof - number of degrees of freedom per node - periodic - array with d entries that, i-th entry is set to true iff dimension i is periodic Output Parameters: . adda - pointer to ADDA data structure that is created Level: intermediate @*/ PetscErrorCode DMADDACreate(MPI_Comm comm, PetscInt dim, PetscInt *nodes,PetscInt *procs,PetscInt dof, PetscBool *periodic,DM *dm_p) { PetscErrorCode ierr; PetscFunctionBegin; ierr = DMCreate(comm,dm_p);CHKERRQ(ierr); ierr = DMSetType(*dm_p,DMADDA);CHKERRQ(ierr); ierr = DMADDASetParameters(*dm_p,dim,nodes,procs,dof,periodic);CHKERRQ(ierr); ierr = DMSetUp(*dm_p);CHKERRQ(ierr); PetscFunctionReturn(0); }
EXTERN_C_END #undef __FUNCT__ #define __FUNCT__ "DMADDACreate" /*@C DMADDACreate - Creates and ADDA object that translate between coordinates in a geometric grid of arbitrary dimension and data in a PETSc vector distributed on several processors. Collective on MPI_Comm Input Parameters: + comm - MPI communicator . dim - the dimension of the grid . nodes - array with d entries that give the number of nodes in each dimension . procs - array with d entries that give the number of processors in each dimension (or PETSC_NULL if to be determined automatically) . dof - number of degrees of freedom per node - periodic - array with d entries that, i-th entry is set to true iff dimension i is periodic Output Parameters: . adda - pointer to ADDA data structure that is created Level: intermediate @*/ PetscErrorCode DMADDACreate(MPI_Comm comm, PetscInt dim, PetscInt *nodes,PetscInt *procs,PetscInt dof, PetscBool *periodic,DM *dm_p) { PetscErrorCode ierr; PetscFunctionBegin; ierr = DMCreate(comm,dm_p);CHKERRQ(ierr); ierr = DMSetType(*dm_p,DMADDA);CHKERRQ(ierr); ierr = DMADDASetParameters(*dm_p,dim,nodes,procs,dof,periodic);CHKERRQ(ierr); ierr = DMSetUp(*dm_p);CHKERRQ(ierr); PetscFunctionReturn(0); }