:orphan: # PetscDualSpaceRegister Adds a new `PetscDualSpaceType` ## Synopsis ``` #include "petscfe.h" PetscErrorCode PetscDualSpaceRegister(const char sname[], PetscErrorCode (*function)(PetscDualSpace)) ``` Not Collective ## Input Parameters - ***sname -*** The name of a new user-defined creation routine - ***function -*** The creation routine ## Sample usage ```none PetscDualSpaceRegister("my_space", MyPetscDualSpaceCreate); ``` Then, your PetscDualSpace type can be chosen with the procedural interface via ```none PetscDualSpaceCreate(MPI_Comm, PetscDualSpace *); PetscDualSpaceSetType(PetscDualSpace, "my_dual_space"); ``` or at runtime via the option ```none -petscdualspace_type my_dual_space ``` ## Note `PetscDualSpaceRegister()` may be called multiple times to add several user-defined `PetscDualSpace` ## See Also `PetscDualSpace`, `PetscDualSpaceType`, `PetscDualSpaceRegisterAll()`, `PetscDualSpaceRegisterDestroy()` ## Level advanced ## Location src/dm/dt/dualspace/interface/dualspace.c --- [Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/dm/dt/dualspace/interface/dualspace.c) [Index of all DUALSPACE routines](index.md) [Table of Contents for all manual pages](/manualpages/index.md) [Index of all manual pages](/manualpages/singleindex.md)