xref: /libCEED/tests/t535-operator-f.h (revision 752c3701a992135134df075f4ef18abc790b3495)
1 !-----------------------------------------------------------------------
2       subroutine setup_mass(ctx,q,u1,u2,u3,u4,u5,u6,u7,u8,u9,u10,u11,u12,u13,&
3 &           u14,u15,u16,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,&
4 &           v16,ierr)
5       real*8 ctx
6       real*8 u1(1)
7       real*8 u2(1)
8       real*8 v1(1)
9       integer q,ierr
10 
11       do i=1,q
12         v1(i)=u2(i)*(u1(i+q*0)*u1(i+q*3)-u1(i+q*1)*u1(i+q*2))
13       enddo
14 
15       ierr=0
16       end
17 !-----------------------------------------------------------------------
18       subroutine setup_diff(ctx,q,u1,u2,u3,u4,u5,u6,u7,u8,u9,u10,u11,u12,u13,&
19 &           u14,u15,u16,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,&
20 &           v16,ierr)
21       real*8 ctx
22       real*8 u1(1)
23       real*8 u2(1)
24       real*8 v1(1)
25       real*8 w
26       integer q,ierr
27 
28       do i=1,q
29         w=u2(i)/(u1(i+q*0)*u1(i+q*3)-u1(i+q*1)*u1(i+q*2))
30         v1(i+q*0)=w*(u1(i+q*2)*u1(i+q*2)+u1(i+q*3)*u1(i+q*3))
31         v1(i+q*1)=w*(u1(i+q*0)*u1(i+q*0)+u1(i+q*1)*u1(i+q*1))
32         v1(i+q*2)=-w*(u1(i+q*0)*u1(i+q*2)+u1(i+q*2)*u1(i+q*3))
33       enddo
34 
35       ierr=0
36       end
37 !-----------------------------------------------------------------------
38       subroutine apply(ctx,q,u1,u2,u3,u4,u5,u6,u7,u8,u9,u10,u11,u12,u13,u14,&
39 &           u15,u16,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,v16,ierr)
40       real*8 ctx
41       real*8 u1(1)
42       real*8 u2(1)
43       real*8 u3(1)
44       real*8 u4(1)
45       real*8 v1(1)
46       real*8 v2(1)
47       real*8 du0,du1
48       integer q,ierr
49 
50       do i=1,q
51 !       mass
52         v1(i) = u2(i)*u4(i)
53 !       diff
54         du0=u1(i+q*0)
55         du1=u1(i+q*1)
56         v2(i+q*0)=u3(i+q*0)*du0+u3(i+q*2)*du1
57         v2(i+q*1)=u3(i+q*2)*du0+u3(i+q*1)*du1
58       enddo
59 
60       ierr=0
61       end
62 !-----------------------------------------------------------------------
63