xref: /libCEED/julia/LibCEED.jl/src/Globals.jl (revision ebd2ea64a41a9ff2c440ade2ee185a104cd5332d)
1"""
2    CeedScalar
3
4Scalar (floating point) type. Typically equivalent to `Float64`, but libCEED can be configured at
5compile-time to use `Float32`. See also `get_scalar_type`.
6"""
7const CeedScalar = C.CeedScalar
8
9"""
10    CeedInt
11
12Integer type, used for indexing. Equivalent to `Int32`.
13"""
14const CeedInt = C.CeedInt
15
16"""
17    CeedSize
18
19Integer type, used for array sizes. Equivalent to `Int`.
20"""
21const CeedSize = C.CeedSize
22
23"""
24    QuadMode
25
26One of `GAUSS` or `GAUSS_LOBATTO`.
27"""
28const QuadMode = C.CeedQuadMode
29const GAUSS = C.CEED_GAUSS
30const GAUSS_LOBATTO = C.CEED_GAUSS_LOBATTO
31
32"""
33    MemType
34
35One of `MEM_HOST` or `MEM_DEVICE`.
36"""
37const MemType = C.CeedMemType
38const MEM_HOST = C.CEED_MEM_HOST
39const MEM_DEVICE = C.CEED_MEM_DEVICE
40
41"""
42    CopyMode
43
44One of `COPY_VALUES`, `USE_POINTER` or `OWN_POINTER`.
45
46`OWN_POINTER` is not typically supported for objects created in Julia, because those must be
47destroyed by the garbage collector, and cannot be freed from C.
48"""
49const CopyMode = C.CeedCopyMode
50const COPY_VALUES = C.CEED_COPY_VALUES
51const USE_POINTER = C.CEED_USE_POINTER
52const OWN_POINTER = C.CEED_OWN_POINTER
53
54"""
55    EvalMode
56
57Evaluation mode used in the specification of input and output fields for Q-functions, e.g.
58in [`@interior_qf`](@ref).
59
60One of:
61- `EVAL_NONE`
62- `EVAL_INTERP`
63- `EVAL_GRAD`
64- `EVAL_DIV`
65- `EVAL_CURL`
66- `EVAL_WEIGHT`
67
68See the [libCEED
69documentation](https://libceed.org/en/latest/api/CeedBasis/?highlight=EVAL_MODE#c.CeedEvalMode)
70for further information.
71"""
72const EvalMode = C.CeedEvalMode
73const EVAL_NONE = C.CEED_EVAL_NONE
74const EVAL_INTERP = C.CEED_EVAL_INTERP
75const EVAL_GRAD = C.CEED_EVAL_GRAD
76const EVAL_DIV = C.CEED_EVAL_DIV
77const EVAL_CURL = C.CEED_EVAL_CURL
78const EVAL_WEIGHT = C.CEED_EVAL_WEIGHT
79
80"""
81    NormType
82
83Denotes type of vector norm. One of `NORM_1`, `NORM_2`, or `NORM_MAX`.
84"""
85const NormType = C.CeedNormType
86const NORM_1 = C.CEED_NORM_1
87const NORM_2 = C.CEED_NORM_2
88const NORM_MAX = C.CEED_NORM_MAX
89
90"""
91    TransposeMose
92
93Denotes whether a linear transformation or its transpose should be applied. Either
94`NOTRANSPOSE` or `TRANSPOSE`.
95"""
96const TransposeMode = C.CeedTransposeMode
97const NOTRANSPOSE = C.CEED_NOTRANSPOSE
98const TRANSPOSE = C.CEED_TRANSPOSE
99
100"""
101    Topology
102
103Type of basis shape to create non-tensor H1 element basis. One of `LINE`, `TRIANGLE`,
104`QUAD`, `TET`, `PYRAMID`, `PRISM`, or `HEX`.
105
106The dimension can be extracted with bitshift:
107
108    dim = Int(topology) >> 16
109"""
110const Topology = C.CeedElemTopology
111const LINE = C.CEED_TOPOLOGY_LINE
112const TRIANGLE = C.CEED_TOPOLOGY_TRIANGLE
113const QUAD = C.CEED_TOPOLOGY_QUAD
114const TET = C.CEED_TOPOLOGY_TET
115const PYRAMID = C.CEED_TOPOLOGY_PYRAMID
116const PRISM = C.CEED_TOPOLOGY_PRISM
117const HEX = C.CEED_TOPOLOGY_HEX
118
119function set_globals()
120    @doc """
121        STRIDES_BACKEND
122
123    Indicate that the stride is determined by the backend.
124    """
125    global STRIDES_BACKEND = C.CEED_STRIDES_BACKEND[]
126end
127