Actual source code: petsccharacteristic.h
1: /*
2: Defines the interface functions for the method of characteristics solvers
3: */
4: #ifndef __PETSCCHARACTERISTICS_H
7: #include petscvec.h
8: #include petscdmda.h
12: /*S
13: Characteristic - Abstract PETSc object that manages method of characteristics solves
15: Level: beginner
17: Concepts: Method of characteristics
19: .seealso: CharacteristicCreate(), CharacteristicSetType(), CharacteristicType, SNES, TS, PC, KSP
20: S*/
21: typedef struct _p_Characteristic *Characteristic;
23: /*J
24: CharacteristicType - String with the name of a characteristics method or the creation function
25: with an optional dynamic library name, for example
26: http://www.mcs.anl.gov/petsc/lib.a:mymoccreate()
28: Level: beginner
30: .seealso: CharacteristicSetType(), Characteristic
31: J*/
32: #define CHARACTERISTICDA "da"
33: #define CharacteristicType char*
51: /*MC
52: CharacteristicRegisterDynamic - Adds a solver to the method of characteristics package.
54: Synopsis:
55: PetscErrorCode CharacteristicRegisterDynamic(const char *name_solver,const char *path,const char *name_create,PetscErrorCode (*routine_create)(Characteristic))
57: Not Collective
59: Input Parameters:
60: + name_solver - name of a new user-defined solver
61: . path - path (either absolute or relative) the library containing this solver
62: . name_create - name of routine to create method context
63: - routine_create - routine to create method context
65: Notes:
66: CharacteristicRegisterDynamic() may be called multiple times to add several user-defined solvers.
68: If dynamic libraries are used, then the fourth input argument (routine_create)
69: is ignored.
71: Sample usage:
72: .vb
73: CharacteristicRegisterDynamic("my_solver",/home/username/my_lib/lib/libO/solaris/mylib.a,
74: "MySolverCreate",MySolverCreate);
75: .ve
77: Then, your solver can be chosen with the procedural interface via
78: $ CharacteristicSetType(ksp,"my_solver")
79: or at runtime via the option
80: $ -characteristic_type my_solver
82: Level: advanced
84: Notes: Environmental variables such as ${PETSC_ARCH}, ${PETSC_DIR}, ${PETSC_LIB_DIR},
85: and others of the form ${any_environmental_variable} occuring in pathname will be
86: replaced with appropriate values.
87: If your function is not being put into a shared library then use CharacteristicRegister() instead
89: .keywords: Characteristic, register
91: .seealso: CharacteristicRegisterAll(), CharacteristicRegisterDestroy()
93: M*/
94: #if defined(PETSC_USE_DYNAMIC_LIBRARIES)
95: #define CharacteristicRegisterDynamic(a,b,c,d) CharacteristicRegister(a,b,c,0)
96: #else
97: #define CharacteristicRegisterDynamic(a,b,c,d) CharacteristicRegister(a,b,c,d)
98: #endif
100: #endif /*__PETSCCHARACTERISTICS_H*/