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