xref: /libCEED/julia/LibCEED.jl/test/rundevtests.jl (revision bdee0278611904727ee35fcc2d0d7c3bf83db4c4)
1using Test, LibCEED, LinearAlgebra, StaticArrays
2
3function checkoutput(str, fname)
4    if str != getoutput(fname)
5        write(fname, str)
6        return false
7    end
8    return true
9end
10
11@testset "LibCEED Development Tests" begin
12    @testset "Operator" begin
13        c = Ceed()
14        @interior_qf id = (
15            c,
16            (input, :in, EVAL_INTERP),
17            (output, :out, EVAL_INTERP),
18            begin
19                output[] = input
20            end,
21        )
22        b = create_tensor_h1_lagrange_basis(c, 3, 1, 3, 3, GAUSS_LOBATTO)
23        n = getnumnodes(b)
24        offsets = Vector{CeedInt}(0:n-1)
25        r = create_elem_restriction(c, 1, n, 1, 1, n, offsets)
26        op = Operator(
27            c;
28            qf=id,
29            fields=[
30                (:input, r, b, CeedVectorActive()),
31                (:output, r, b, CeedVectorActive()),
32            ],
33        )
34
35        v = rand(CeedScalar, n)
36        v1 = CeedVector(c, v)
37        v2 = CeedVector(c, n)
38
39        comp_op = create_composite_operator(c, [op])
40        apply!(comp_op, v1, v2)
41        @test @witharray_read(a1 = v1, @witharray_read(a2 = v2, a1 == a2))
42    end
43end
44