xref: /petsc/src/binding/petsc4py/src/petsc4py/PETSc/Const.pyx (revision ec42381fdf5bb48a6ea45cf3b5c9e6ed3c5f82db)
1# ------------------------------------------------------------------------------
2
3DECIDE    = PETSC_DECIDE
4DEFAULT   = PETSC_DEFAULT
5DETERMINE = PETSC_DETERMINE
6CURRENT   = PETSC_CURRENT
7UNLIMITED = PETSC_UNLIMITED
8
9__doc__ += """
10Basic constants:
11
12`DECIDE`
13    Use a default value for an `int` or `float` parameter.
14`DEFAULT`
15    Use a default value chosen by PETSc.
16`DETERMINE`
17    Compute a default value for an `int` or `float` parameter.
18    For tolerances this uses the default value from when
19    the object's type was set.
20`CURRENT`
21    Do not change the current value that is set.
22`UNLIMITED`
23    For a parameter that is a bound, such as the maximum
24    number of iterations, do not bound the value.
25"""
26
27# ------------------------------------------------------------------------------
28
29INFINITY  = toReal(PETSC_INFINITY)
30NINFINITY = toReal(PETSC_NINFINITY)
31PINFINITY = toReal(PETSC_INFINITY)
32
33__doc__ += """
34More constants:
35
36`INFINITY`
37    Very large real value.
38`NINFINITY`
39    Very large negative real value.
40`PINFINITY`
41    Very large positive real value, same as `INFINITY`.
42"""
43
44# ------------------------------------------------------------------------------
45
46
47class InsertMode(object):
48    """Insertion mode.
49
50    Most commonly used insertion modes are:
51
52    `INSERT`
53        Insert provided value/s discarding previous value/s.
54    `ADD`
55        Add provided value/s to current value/s.
56    `MAX`
57        Insert the maximum of provided value/s and current value/s.
58
59    See Also
60    --------
61    petsc.InsertMode
62
63    """
64    # native
65    NOT_SET_VALUES    = PETSC_NOT_SET_VALUES
66    INSERT_VALUES     = PETSC_INSERT_VALUES
67    ADD_VALUES        = PETSC_ADD_VALUES
68    MAX_VALUES        = PETSC_MAX_VALUES
69    INSERT_ALL_VALUES = PETSC_INSERT_ALL_VALUES
70    ADD_ALL_VALUES    = PETSC_ADD_ALL_VALUES
71    INSERT_BC_VALUES  = PETSC_INSERT_BC_VALUES
72    ADD_BC_VALUES     = PETSC_ADD_BC_VALUES
73    # aliases
74    INSERT     = INSERT_VALUES
75    ADD        = ADD_VALUES
76    MAX        = MAX_VALUES
77    INSERT_ALL = INSERT_ALL_VALUES
78    ADD_ALL    = ADD_ALL_VALUES
79    INSERT_BC  = INSERT_BC_VALUES
80    ADD_BC     = ADD_BC_VALUES
81
82# ------------------------------------------------------------------------------
83
84
85class ScatterMode(object):
86    """Scatter mode.
87
88    Most commonly used scatter modes are:
89
90    `FORWARD`
91        Scatter values in the forward direction.
92    `REVERSE`
93        Scatter values in the reverse direction.
94
95    See Also
96    --------
97    Scatter.create, Scatter.begin, Scatter.end
98    petsc.ScatterMode
99
100    """
101    # native
102    SCATTER_FORWARD       = PETSC_SCATTER_FORWARD
103    SCATTER_REVERSE       = PETSC_SCATTER_REVERSE
104    SCATTER_FORWARD_LOCAL = PETSC_SCATTER_FORWARD_LOCAL
105    SCATTER_REVERSE_LOCAL = PETSC_SCATTER_REVERSE_LOCAL
106    # aliases
107    FORWARD       = SCATTER_FORWARD
108    REVERSE       = SCATTER_REVERSE
109    FORWARD_LOCAL = SCATTER_FORWARD_LOCAL
110    REVERSE_LOCAL = SCATTER_REVERSE_LOCAL
111
112# ------------------------------------------------------------------------------
113
114
115class NormType(object):
116    """Norm type.
117
118    Commonly used norm types:
119
120    `N1`
121        The one norm.
122    `N2`
123        The two norm.
124    `FROBENIUS`
125        The Frobenius norm.
126    `INFINITY`
127        The infinity norm.
128
129    See Also
130    --------
131    petsc.NormType
132
133    """
134    # native
135    NORM_1         = PETSC_NORM_1
136    NORM_2         = PETSC_NORM_2
137    NORM_1_AND_2   = PETSC_NORM_1_AND_2
138    NORM_FROBENIUS = PETSC_NORM_FROBENIUS
139    NORM_INFINITY  = PETSC_NORM_INFINITY
140    NORM_MAX       = PETSC_NORM_MAX
141    # aliases
142    N1        = NORM_1
143    N2        = NORM_2
144    N12       = NORM_1_AND_2
145    MAX       = NORM_MAX
146    FROBENIUS = NORM_FROBENIUS
147    INFINITY  = NORM_INFINITY
148    # extra aliases
149    FRB = FROBENIUS
150    INF = INFINITY
151
152# ------------------------------------------------------------------------------
153