xref: /libCEED/julia/LibCEED.jl/test/buildmats.jl (revision 6574a04ff2135c3834f1b6ef9a4ec7566c4782db)
1function build_mats_hdiv(qref, qweight, ::Type{T}=Float64) where {T}
2    P, Q, dim = 4, 4, 2
3    interp = Array{T}(undef, dim, Q, P)
4    div = Array{T}(undef, Q, P)
5
6    qref[1, 1] = -1.0/sqrt(3.0)
7    qref[1, 2] = qref[1, 1]
8    qref[1, 3] = qref[1, 1]
9    qref[1, 4] = -qref[1, 1]
10    qref[2, 1] = -qref[1, 1]
11    qref[2, 2] = -qref[1, 1]
12    qref[2, 3] = qref[1, 1]
13    qref[2, 4] = qref[1, 1]
14    qweight[1] = 1.0
15    qweight[2] = 1.0
16    qweight[3] = 1.0
17    qweight[4] = 1.0
18
19    # Loop over quadrature points
20    for i = 1:Q
21        x1 = qref[1, i]
22        x2 = qref[2, i]
23        # Interp
24        interp[1, i, 1] = 0.0
25        interp[2, i, 1] = 1.0 - x2
26        interp[1, i, 2] = x1 - 1.0
27        interp[2, i, 2] = 0.0
28        interp[1, i, 3] = -x1
29        interp[2, i, 3] = 0.0
30        interp[1, i, 4] = 0.0
31        interp[2, i, 4] = x2
32        # Div
33        div[i, 1] = -1.0
34        div[i, 2] = 1.0
35        div[i, 3] = -1.0
36        div[i, 4] = 1.0
37    end
38
39    return interp, div
40end
41
42function build_mats_hcurl(qref, qweight, ::Type{T}=Float64) where {T}
43    P, Q, dim = 3, 4, 2
44    interp = Array{T}(undef, dim, Q, P)
45    curl = Array{T}(undef, 1, Q, P)
46
47    qref[1, 1] = 0.2
48    qref[1, 2] = 0.6
49    qref[1, 3] = 1.0/3.0
50    qref[1, 4] = 0.2
51    qref[2, 1] = 0.2
52    qref[2, 2] = 0.2
53    qref[2, 3] = 1.0/3.0
54    qref[2, 4] = 0.6
55    qweight[1] = 25.0/96.0
56    qweight[2] = 25.0/96.0
57    qweight[3] = -27.0/96.0
58    qweight[4] = 25.0/96.0
59
60    # Loop over quadrature points
61    for i = 1:Q
62        x1 = qref[1, i]
63        x2 = qref[2, i]
64        # Interp
65        interp[1, i, 1] = -x2
66        interp[2, i, 1] = x1
67        interp[1, i, 2] = x2
68        interp[2, i, 2] = 1.0 - x1
69        interp[1, i, 3] = 1.0 - x2
70        interp[2, i, 3] = x1
71        # Curl
72        curl[1, i, 1] = 2.0
73        curl[1, i, 2] = -2.0
74        curl[1, i, 3] = -2.0
75    end
76
77    return interp, curl
78end
79