Date: 2013-07-02T14:40:34+00:00

Actual source code: sfregi.c
petsc-3.4.2 2013-07-02

      1: #include <petsc-private/sfimpl.h>     /*I  "petscsf.h"  I*/

      3: #if defined(PETSC_HAVE_MPI_WIN_CREATE)
      4: PETSC_EXTERN PetscErrorCode PetscSFCreate_Window(PetscSF);
      5: #endif
      6: PETSC_EXTERN PetscErrorCode PetscSFCreate_Basic(PetscSF);

      8: PetscFunctionList PetscSFList;

     12: /*@C
     13:    PetscSFRegisterAll - Registers all the PetscSF communication implementations

     15:    Not Collective

     17:    Level: advanced

     19: .keywords: PetscSF, register, all

     21: .seealso:  PetscSFRegisterDestroy()
     22: @*/
     23: PetscErrorCode  PetscSFRegisterAll(void)
     24: {

     28:   PetscSFRegisterAllCalled = PETSC_TRUE;
     29: #if defined(PETSC_HAVE_MPI_WIN_CREATE) && defined(PETSC_HAVE_MPI_TYPE_DUP)
     30:   PetscSFRegister(PETSCSFWINDOW, PetscSFCreate_Window);
     31: #endif
     32:   PetscSFRegister(PETSCSFBASIC,  PetscSFCreate_Basic);
     33:   return(0);
     34: }

     38: /*@C
     39:   PetscSFRegister  - Adds an implementation of the PetscSF communication protocol.

     41:    Not collective

     43:    Input Parameters:
     44: +  name_impl - name of a new user-defined implementation
     45: -  routine_create - routine to create method context

     47:    Notes:
     48:    PetscSFRegister() may be called multiple times to add several user-defined implementations.

     50:    Sample usage:
     51: .vb
     52:    PetscSFRegister("my_impl",MyImplCreate);
     53: .ve

     55:    Then, this implementation can be chosen with the procedural interface via
     56: $     PetscSFSetType(sf,"my_impl")
     57:    or at runtime via the option
     58: $     -snes_type my_solver

     60:    Level: advanced

     62: .keywords: PetscSF, register

     64: .seealso: PetscSFRegisterAll(), PetscSFRegisterDestroy()
     65: @*/
     66: PetscErrorCode  PetscSFRegister(const char sname[],PetscErrorCode (*function)(PetscSF))
     67: {

     71:   PetscFunctionListAdd(&PetscSFList,sname,function);
     72:   return(0);
     73: }