xref: /libCEED/julia/LibCEED.jl/test/rundevtests.jl (revision b2e3f8ecbfa285d0f4ffde9b24c57cc13f0319fb)
1a697ff73SWill Paznerusing Test, LibCEED, LinearAlgebra, StaticArrays
2a697ff73SWill Pazner
3*b2e3f8ecSSebastian Grimberginclude("buildmats.jl")
4*b2e3f8ecSSebastian Grimberg
5*b2e3f8ecSSebastian Grimberg@testset "LibCEED Development Tests" begin
6*b2e3f8ecSSebastian Grimberg    @testset "Basis" begin
7*b2e3f8ecSSebastian Grimberg        c = Ceed()
8*b2e3f8ecSSebastian Grimberg        dim = 2
9*b2e3f8ecSSebastian Grimberg        ncomp = 1
10*b2e3f8ecSSebastian Grimberg        p1 = 4
11*b2e3f8ecSSebastian Grimberg        q1 = 4
12*b2e3f8ecSSebastian Grimberg        qref1 = Array{Float64}(undef, dim, q1)
13*b2e3f8ecSSebastian Grimberg        qweight1 = Array{Float64}(undef, q1)
14*b2e3f8ecSSebastian Grimberg        interp1, div1 = build_mats_hdiv(qref1, qweight1)
15*b2e3f8ecSSebastian Grimberg        b1 = create_hdiv_basis(c, QUAD, ncomp, p1, q1, interp1, div1, qref1, qweight1)
16*b2e3f8ecSSebastian Grimberg
17*b2e3f8ecSSebastian Grimberg        u1 = ones(Float64, p1)
18*b2e3f8ecSSebastian Grimberg        v1 = apply(b1, u1)
19*b2e3f8ecSSebastian Grimberg
20*b2e3f8ecSSebastian Grimberg        for i = 1:q1
21*b2e3f8ecSSebastian Grimberg            @test v1[i] ≈ -1.0
22*b2e3f8ecSSebastian Grimberg            @test v1[q1+i] ≈ 1.0
23*b2e3f8ecSSebastian Grimberg        end
24*b2e3f8ecSSebastian Grimberg
25*b2e3f8ecSSebastian Grimberg        p2 = 3
26*b2e3f8ecSSebastian Grimberg        q2 = 4
27*b2e3f8ecSSebastian Grimberg        qref2 = Array{Float64}(undef, dim, q2)
28*b2e3f8ecSSebastian Grimberg        qweight2 = Array{Float64}(undef, q2)
29*b2e3f8ecSSebastian Grimberg        interp2, curl2 = build_mats_hcurl(qref2, qweight2)
30*b2e3f8ecSSebastian Grimberg        b2 = create_hcurl_basis(c, TRIANGLE, ncomp, p2, q2, interp2, curl2, qref2, qweight2)
31*b2e3f8ecSSebastian Grimberg
32*b2e3f8ecSSebastian Grimberg        u2 = [1.0, 2.0, 1.0]
33*b2e3f8ecSSebastian Grimberg        v2 = apply(b2, u2)
34*b2e3f8ecSSebastian Grimberg
35*b2e3f8ecSSebastian Grimberg        for i = 1:q2
36*b2e3f8ecSSebastian Grimberg            @test v2[i] ≈ 1.0
37*b2e3f8ecSSebastian Grimberg        end
38*b2e3f8ecSSebastian Grimberg
39*b2e3f8ecSSebastian Grimberg        u2[1] = -1.0
40*b2e3f8ecSSebastian Grimberg        u2[2] = 1.0
41*b2e3f8ecSSebastian Grimberg        u2[3] = 2.0
42*b2e3f8ecSSebastian Grimberg        v2 = apply(b2, u2)
43*b2e3f8ecSSebastian Grimberg
44*b2e3f8ecSSebastian Grimberg        for i = 1:q2
45*b2e3f8ecSSebastian Grimberg            @test v2[q2+i] ≈ 1.0
46*b2e3f8ecSSebastian Grimberg        end
47*b2e3f8ecSSebastian Grimberg    end
48*b2e3f8ecSSebastian Grimbergend
49