xref: /libCEED/tests/t520-operator-f.f90 (revision 52bfb9bbf17f17edbcd45876cdc8689a879bc683)
152d6035fSJeremy L Thompson!-----------------------------------------------------------------------
252d6035fSJeremy L Thompson!
352d6035fSJeremy L Thompson! Header with common subroutine
452d6035fSJeremy L Thompson!
5*52bfb9bbSJeremy L Thompson      include 't320-basis-f.h'
652d6035fSJeremy L Thompson!-----------------------------------------------------------------------
752d6035fSJeremy L Thompson      subroutine setup(ctx,q,u1,u2,u3,u4,u5,u6,u7,u8,u9,u10,u11,u12,u13,u14,&
852d6035fSJeremy L Thompson&           u15,u16,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,v16,ierr)
952d6035fSJeremy L Thompson      real*8 ctx
1052d6035fSJeremy L Thompson      real*8 u1(1)
1152d6035fSJeremy L Thompson      real*8 u2(1)
1252d6035fSJeremy L Thompson      real*8 v1(1)
1352d6035fSJeremy L Thompson      integer q,ierr
1452d6035fSJeremy L Thompson
1552d6035fSJeremy L Thompson      do i=1,q
1652d6035fSJeremy L Thompson        v1(i)=u1(i)*(u2(i+q*0)*u2(i+q*3)-u2(i+q*1)*u2(i+q*2))
1752d6035fSJeremy L Thompson      enddo
1852d6035fSJeremy L Thompson
1952d6035fSJeremy L Thompson      ierr=0
2052d6035fSJeremy L Thompson      end
2152d6035fSJeremy L Thompson!-----------------------------------------------------------------------
2252d6035fSJeremy L Thompson      subroutine mass(ctx,q,u1,u2,u3,u4,u5,u6,u7,u8,u9,u10,u11,u12,u13,u14,&
2352d6035fSJeremy L Thompson&           u15,u16,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,v16,ierr)
2452d6035fSJeremy L Thompson      real*8 ctx
2552d6035fSJeremy L Thompson      real*8 u1(1)
2652d6035fSJeremy L Thompson      real*8 u2(1)
2752d6035fSJeremy L Thompson      real*8 v1(1)
2852d6035fSJeremy L Thompson      integer q,ierr
2952d6035fSJeremy L Thompson
3052d6035fSJeremy L Thompson      do i=1,q
3152d6035fSJeremy L Thompson        v1(i)=u2(i)*u1(i)
3252d6035fSJeremy L Thompson      enddo
3352d6035fSJeremy L Thompson
3452d6035fSJeremy L Thompson      ierr=0
3552d6035fSJeremy L Thompson      end
3652d6035fSJeremy L Thompson!-----------------------------------------------------------------------
3752d6035fSJeremy L Thompson      program test
3852d6035fSJeremy L Thompson
3952d6035fSJeremy L Thompson      include 'ceedf.h'
4052d6035fSJeremy L Thompson
4152d6035fSJeremy L Thompson      integer ceed,err,i,j,k
4252d6035fSJeremy L Thompson      integer erestrictxtet,erestrictutet,erestrictxitet,erestrictuitet,&
4352d6035fSJeremy L Thompson&             erestrictxhex,erestrictuhex,erestrictxihex,erestrictuihex
4452d6035fSJeremy L Thompson      integer bxtet,butet,bxhex,buhex
4552d6035fSJeremy L Thompson      integer qf_setuptet,qf_masstet,qf_setuphex,qf_masshex
4652d6035fSJeremy L Thompson      integer op_setuptet,op_masstet,op_setuphex,op_masshex,op_setup,op_mass
4752d6035fSJeremy L Thompson      integer qdatatet,qdatahex,x,u,v
4852d6035fSJeremy L Thompson      integer nelemtet,nelemhex,ptet,phex,qtet,qhex,d
4952d6035fSJeremy L Thompson      integer row,col,offset
5052d6035fSJeremy L Thompson      parameter(nelemtet=6)
5152d6035fSJeremy L Thompson      parameter(ptet=6)
5252d6035fSJeremy L Thompson      parameter(qtet=4)
5352d6035fSJeremy L Thompson      parameter(nelemhex=6)
5452d6035fSJeremy L Thompson      parameter(phex=3)
5552d6035fSJeremy L Thompson      parameter(qhex=4)
5652d6035fSJeremy L Thompson      parameter(d=2)
5752d6035fSJeremy L Thompson      integer ndofs,nqptstet,nqptshex,nqpts,nx,ny,nxtet,nytet,nxhex
5852d6035fSJeremy L Thompson      parameter(nx=3)
5952d6035fSJeremy L Thompson      parameter(ny=3)
6052d6035fSJeremy L Thompson      parameter(nxtet=3)
6152d6035fSJeremy L Thompson      parameter(nytet=1)
6252d6035fSJeremy L Thompson      parameter(nxhex=3)
6352d6035fSJeremy L Thompson      parameter(ndofs=(nx*2+1)*(ny*2+1))
6452d6035fSJeremy L Thompson      parameter(nqptstet=nelemtet*qtet)
6552d6035fSJeremy L Thompson      parameter(nqptshex=nelemhex*qhex*qhex)
6652d6035fSJeremy L Thompson      parameter(nqpts=nqptstet+nqptshex)
6752d6035fSJeremy L Thompson      integer indxtet(nelemtet*ptet),indxhex(nelemhex*phex*phex)
6852d6035fSJeremy L Thompson      real*8 arrx(d*ndofs)
69c8b9fe72Sjeremylt      integer*8 voffset,xoffset
7052d6035fSJeremy L Thompson
7152d6035fSJeremy L Thompson      real*8 qref(d*qtet)
7252d6035fSJeremy L Thompson      real*8 qweight(qtet)
7352d6035fSJeremy L Thompson      real*8 interp(ptet*qtet)
7452d6035fSJeremy L Thompson      real*8 grad(d*ptet*qtet)
7552d6035fSJeremy L Thompson
7652d6035fSJeremy L Thompson      real*8 hv(ndofs)
7752d6035fSJeremy L Thompson
7852d6035fSJeremy L Thompson      character arg*32
7952d6035fSJeremy L Thompson
8052d6035fSJeremy L Thompson      external setup,mass
8152d6035fSJeremy L Thompson
8252d6035fSJeremy L Thompson      call getarg(1,arg)
8352d6035fSJeremy L Thompson
8452d6035fSJeremy L Thompson      call ceedinit(trim(arg)//char(0),ceed,err)
8552d6035fSJeremy L Thompson
8652d6035fSJeremy L Thompson! DoF Coordinates
8752d6035fSJeremy L Thompson      do i=0,ny*2
8852d6035fSJeremy L Thompson        do j=0,nx*2
8952d6035fSJeremy L Thompson          arrx(i+j*(ny*2+1)+0*ndofs+1)=1.d0*i/(2*ny)
9052d6035fSJeremy L Thompson          arrx(i+j*(ny*2+1)+1*ndofs+1)=1.d0*j/(2*nx)
9152d6035fSJeremy L Thompson        enddo
9252d6035fSJeremy L Thompson      enddo
9352d6035fSJeremy L Thompson
9452d6035fSJeremy L Thompson      call ceedvectorcreate(ceed,d*ndofs,x,err)
95c8b9fe72Sjeremylt      xoffset=0
96c8b9fe72Sjeremylt      call ceedvectorsetarray(x,ceed_mem_host,ceed_use_pointer,arrx,xoffset,err)
9752d6035fSJeremy L Thompson
9852d6035fSJeremy L Thompson! Qdata Vectors
9952d6035fSJeremy L Thompson      call ceedvectorcreate(ceed,nqptstet,qdatatet,err)
10052d6035fSJeremy L Thompson      call ceedvectorcreate(ceed,nqptshex,qdatahex,err)
10152d6035fSJeremy L Thompson
10252d6035fSJeremy L Thompson! Tet Elements
10352d6035fSJeremy L Thompson      do i=0,2
10452d6035fSJeremy L Thompson        col=mod(i,nx)
10552d6035fSJeremy L Thompson        row=i/nx
10652d6035fSJeremy L Thompson        offset=col*2+row*(nx*2+1)*2
10752d6035fSJeremy L Thompson
10852d6035fSJeremy L Thompson        indxtet(i*2*ptet+1)=2+offset
10952d6035fSJeremy L Thompson        indxtet(i*2*ptet+2)=9+offset
11052d6035fSJeremy L Thompson        indxtet(i*2*ptet+3)=16+offset
11152d6035fSJeremy L Thompson        indxtet(i*2*ptet+4)=1+offset
11252d6035fSJeremy L Thompson        indxtet(i*2*ptet+5)=8+offset
11352d6035fSJeremy L Thompson        indxtet(i*2*ptet+6)=0+offset
11452d6035fSJeremy L Thompson
11552d6035fSJeremy L Thompson        indxtet(i*2*ptet+7)=14+offset
11652d6035fSJeremy L Thompson        indxtet(i*2*ptet+8)=7+offset
11752d6035fSJeremy L Thompson        indxtet(i*2*ptet+9)=0+offset
11852d6035fSJeremy L Thompson        indxtet(i*2*ptet+10)=15+offset
11952d6035fSJeremy L Thompson        indxtet(i*2*ptet+11)=8+offset
12052d6035fSJeremy L Thompson        indxtet(i*2*ptet+12)=16+offset
12152d6035fSJeremy L Thompson      enddo
12252d6035fSJeremy L Thompson
12352d6035fSJeremy L Thompson! -- Restrictions
12452d6035fSJeremy L Thompson      call ceedelemrestrictioncreate(ceed,nelemtet,ptet,ndofs,d,ceed_mem_host,&
12552d6035fSJeremy L Thompson     & ceed_use_pointer,indxtet,erestrictxtet,err)
12652d6035fSJeremy L Thompson      call ceedelemrestrictioncreateidentity(ceed,nelemtet,ptet,nelemtet*ptet,&
12752d6035fSJeremy L Thompson     & d,erestrictxitet,err)
12852d6035fSJeremy L Thompson
12952d6035fSJeremy L Thompson      call ceedelemrestrictioncreate(ceed,nelemtet,ptet,ndofs,1,ceed_mem_host,&
13052d6035fSJeremy L Thompson     & ceed_use_pointer,indxtet,erestrictutet,err)
13152d6035fSJeremy L Thompson      call ceedelemrestrictioncreateidentity(ceed,nelemtet,qtet,nqptstet,1,&
13252d6035fSJeremy L Thompson     & erestrictuitet,err)
13352d6035fSJeremy L Thompson
13452d6035fSJeremy L Thompson! -- Bases
13552d6035fSJeremy L Thompson      call buildmats(qref,qweight,interp,grad)
13652d6035fSJeremy L Thompson      call ceedbasiscreateh1(ceed,ceed_triangle,d,ptet,qtet,interp,grad,qref,&
13752d6035fSJeremy L Thompson     & qweight,bxtet,err)
13852d6035fSJeremy L Thompson      call buildmats(qref,qweight,interp,grad)
13952d6035fSJeremy L Thompson      call ceedbasiscreateh1(ceed,ceed_triangle,1,ptet,qtet,interp,grad,qref,&
14052d6035fSJeremy L Thompson     & qweight,butet,err)
14152d6035fSJeremy L Thompson
14252d6035fSJeremy L Thompson! -- QFunctions
14352d6035fSJeremy L Thompson      call ceedqfunctioncreateinterior(ceed,1,setup,&
14452d6035fSJeremy L Thompson     &__FILE__&
14552d6035fSJeremy L Thompson     &//':setup'//char(0),qf_setuptet,err)
14652d6035fSJeremy L Thompson      call ceedqfunctionaddinput(qf_setuptet,'_weight',1,ceed_eval_weight,err)
1474d537eeaSYohann      call ceedqfunctionaddinput(qf_setuptet,'dx',d*d,ceed_eval_grad,err)
14852d6035fSJeremy L Thompson      call ceedqfunctionaddoutput(qf_setuptet,'rho',1,ceed_eval_none,err)
14952d6035fSJeremy L Thompson
15052d6035fSJeremy L Thompson      call ceedqfunctioncreateinterior(ceed,1,mass,&
15152d6035fSJeremy L Thompson     &__FILE__&
15252d6035fSJeremy L Thompson     &//':mass'//char(0),qf_masstet,err)
15352d6035fSJeremy L Thompson      call ceedqfunctionaddinput(qf_masstet,'rho',1,ceed_eval_none,err)
15452d6035fSJeremy L Thompson      call ceedqfunctionaddinput(qf_masstet,'u',1,ceed_eval_interp,err)
15552d6035fSJeremy L Thompson      call ceedqfunctionaddoutput(qf_masstet,'v',1,ceed_eval_interp,err)
15652d6035fSJeremy L Thompson
15752d6035fSJeremy L Thompson! -- Operators
15852d6035fSJeremy L Thompson! ---- Setup Tet
15952d6035fSJeremy L Thompson      call ceedoperatorcreate(ceed,qf_setuptet,ceed_null,ceed_null,op_setuptet,&
16052d6035fSJeremy L Thompson     & err)
16152d6035fSJeremy L Thompson      call ceedoperatorsetfield(op_setuptet,'_weight',erestrictxitet,&
16252d6035fSJeremy L Thompson     & ceed_notranspose,bxtet,ceed_vector_none,err)
16352d6035fSJeremy L Thompson      call ceedoperatorsetfield(op_setuptet,'dx',erestrictxtet,&
16452d6035fSJeremy L Thompson     & ceed_notranspose,bxtet,ceed_vector_active,err)
16552d6035fSJeremy L Thompson      call ceedoperatorsetfield(op_setuptet,'rho',erestrictuitet,&
16652d6035fSJeremy L Thompson     & ceed_notranspose,ceed_basis_collocated,qdatatet,err)
16752d6035fSJeremy L Thompson! ---- Mass Tet
16852d6035fSJeremy L Thompson      call ceedoperatorcreate(ceed,qf_masstet,ceed_null,ceed_null,op_masstet,&
16952d6035fSJeremy L Thompson     & err)
17052d6035fSJeremy L Thompson      call ceedoperatorsetfield(op_masstet,'rho',erestrictuitet,&
17152d6035fSJeremy L Thompson     & ceed_notranspose,ceed_basis_collocated,qdatatet,err)
17252d6035fSJeremy L Thompson      call ceedoperatorsetfield(op_masstet,'u',erestrictutet,&
17352d6035fSJeremy L Thompson     & ceed_notranspose,butet,ceed_vector_active,err)
17452d6035fSJeremy L Thompson      call ceedoperatorsetfield(op_masstet,'v',erestrictutet,&
17552d6035fSJeremy L Thompson     & ceed_notranspose,butet,ceed_vector_active,err)
17652d6035fSJeremy L Thompson
17752d6035fSJeremy L Thompson! Hex Elements
17852d6035fSJeremy L Thompson      do i=0,nelemhex-1
17952d6035fSJeremy L Thompson        col=mod(i,nx)
18052d6035fSJeremy L Thompson        row=i/nx
18152d6035fSJeremy L Thompson        offset=(nxtet*2+1)*(nytet*2)*(1+row)+col*2
18252d6035fSJeremy L Thompson        do j=0,phex-1
18352d6035fSJeremy L Thompson          do k=0,phex-1
18452d6035fSJeremy L Thompson            indxhex(phex*(phex*i+k)+j+1)=offset+k*(nxhex*2+1)+j
18552d6035fSJeremy L Thompson          enddo
18652d6035fSJeremy L Thompson        enddo
18752d6035fSJeremy L Thompson      enddo
18852d6035fSJeremy L Thompson
18952d6035fSJeremy L Thompson! -- Restrictions
19052d6035fSJeremy L Thompson      call ceedelemrestrictioncreate(ceed,nelemhex,phex*phex,ndofs,d,&
19152d6035fSJeremy L Thompson     & ceed_mem_host,ceed_use_pointer,indxhex,erestrictxhex,err)
19252d6035fSJeremy L Thompson      call ceedelemrestrictioncreateidentity(ceed,nelemhex,phex*phex,&
19352d6035fSJeremy L Thompson     & nelemhex*phex*phex,d,erestrictxihex,err)
19452d6035fSJeremy L Thompson
19552d6035fSJeremy L Thompson      call ceedelemrestrictioncreate(ceed,nelemhex,phex*phex,ndofs,1,&
19652d6035fSJeremy L Thompson     & ceed_mem_host,ceed_use_pointer,indxhex,erestrictuhex,err)
19752d6035fSJeremy L Thompson      call ceedelemrestrictioncreateidentity(ceed,nelemhex,qhex*qhex,nqptshex,&
19852d6035fSJeremy L Thompson     & 1,erestrictuihex,err)
19952d6035fSJeremy L Thompson
20052d6035fSJeremy L Thompson! -- Bases
20152d6035fSJeremy L Thompson      call ceedbasiscreatetensorh1lagrange(ceed,d,d,phex,qhex,ceed_gauss,&
20252d6035fSJeremy L Thompson     & bxhex,err)
20352d6035fSJeremy L Thompson      call ceedbasiscreatetensorh1lagrange(ceed,d,1,phex,qhex,ceed_gauss,&
20452d6035fSJeremy L Thompson     & buhex,err)
20552d6035fSJeremy L Thompson
20652d6035fSJeremy L Thompson! -- QFunctions
20752d6035fSJeremy L Thompson      call ceedqfunctioncreateinterior(ceed,1,setup,&
20852d6035fSJeremy L Thompson     &__FILE__&
20952d6035fSJeremy L Thompson     &//':setup'//char(0),qf_setuphex,err)
21052d6035fSJeremy L Thompson      call ceedqfunctionaddinput(qf_setuphex,'_weight',1,ceed_eval_weight,err)
2114d537eeaSYohann      call ceedqfunctionaddinput(qf_setuphex,'dx',d*d,ceed_eval_grad,err)
21252d6035fSJeremy L Thompson      call ceedqfunctionaddoutput(qf_setuphex,'rho',1,ceed_eval_none,err)
21352d6035fSJeremy L Thompson
21452d6035fSJeremy L Thompson      call ceedqfunctioncreateinterior(ceed,1,mass,&
21552d6035fSJeremy L Thompson     &__FILE__&
21652d6035fSJeremy L Thompson     &//':mass'//char(0),qf_masshex,err)
21752d6035fSJeremy L Thompson      call ceedqfunctionaddinput(qf_masshex,'rho',1,ceed_eval_none,err)
21852d6035fSJeremy L Thompson      call ceedqfunctionaddinput(qf_masshex,'u',1,ceed_eval_interp,err)
21952d6035fSJeremy L Thompson      call ceedqfunctionaddoutput(qf_masshex,'v',1,ceed_eval_interp,err)
22052d6035fSJeremy L Thompson
22152d6035fSJeremy L Thompson! -- Operators
22252d6035fSJeremy L Thompson! ---- Setup Hex
22352d6035fSJeremy L Thompson      call ceedoperatorcreate(ceed,qf_setuphex,ceed_null,ceed_null,op_setuphex,&
22452d6035fSJeremy L Thompson     & err)
22552d6035fSJeremy L Thompson      call ceedoperatorsetfield(op_setuphex,'_weight',erestrictxihex,&
22652d6035fSJeremy L Thompson     & ceed_notranspose,bxhex,ceed_vector_none,err)
22752d6035fSJeremy L Thompson      call ceedoperatorsetfield(op_setuphex,'dx',erestrictxhex,&
22852d6035fSJeremy L Thompson     & ceed_notranspose,bxhex,ceed_vector_active,err)
22952d6035fSJeremy L Thompson      call ceedoperatorsetfield(op_setuphex,'rho',erestrictuihex,&
23052d6035fSJeremy L Thompson     & ceed_notranspose,ceed_basis_collocated,qdatahex,err)
23152d6035fSJeremy L Thompson! ---- Mass Hex
23252d6035fSJeremy L Thompson      call ceedoperatorcreate(ceed,qf_masshex,ceed_null,ceed_null,op_masshex,&
23352d6035fSJeremy L Thompson     & err)
23452d6035fSJeremy L Thompson      call ceedoperatorsetfield(op_masshex,'rho',erestrictuihex,&
23552d6035fSJeremy L Thompson     & ceed_notranspose,ceed_basis_collocated,qdatahex,err)
23652d6035fSJeremy L Thompson      call ceedoperatorsetfield(op_masshex,'u',erestrictuhex,&
23752d6035fSJeremy L Thompson     & ceed_notranspose,buhex,ceed_vector_active,err)
23852d6035fSJeremy L Thompson      call ceedoperatorsetfield(op_masshex,'v',erestrictuhex,&
23952d6035fSJeremy L Thompson     & ceed_notranspose,buhex,ceed_vector_active,err)
24052d6035fSJeremy L Thompson
24152d6035fSJeremy L Thompson! Composite Operators
24252d6035fSJeremy L Thompson      call ceedcompositeoperatorcreate(ceed,op_setup,err)
24352d6035fSJeremy L Thompson      call ceedcompositeoperatoraddsub(op_setup,op_setuptet,err)
24452d6035fSJeremy L Thompson      call ceedcompositeoperatoraddsub(op_setup,op_setuphex,err)
24552d6035fSJeremy L Thompson
24652d6035fSJeremy L Thompson      call ceedcompositeoperatorcreate(ceed,op_mass,err)
24752d6035fSJeremy L Thompson      call ceedcompositeoperatoraddsub(op_mass,op_masstet,err)
24852d6035fSJeremy L Thompson      call ceedcompositeoperatoraddsub(op_mass,op_masshex,err)
24952d6035fSJeremy L Thompson
25052d6035fSJeremy L Thompson! Apply Setup Operator
25152d6035fSJeremy L Thompson      call ceedoperatorapply(op_setup,x,ceed_null,ceed_request_immediate,err)
25252d6035fSJeremy L Thompson
25352d6035fSJeremy L Thompson! Apply Mass Operator
25452d6035fSJeremy L Thompson      call ceedvectorcreate(ceed,ndofs,u,err)
25552d6035fSJeremy L Thompson      call ceedvectorsetvalue(u,0.d0,err)
25652d6035fSJeremy L Thompson      call ceedvectorcreate(ceed,ndofs,v,err)
25752d6035fSJeremy L Thompson
25852d6035fSJeremy L Thompson      call ceedoperatorapply(op_mass,u,v,ceed_request_immediate,err)
25952d6035fSJeremy L Thompson
26052d6035fSJeremy L Thompson! Check Output
26152d6035fSJeremy L Thompson      call ceedvectorgetarrayread(v,ceed_mem_host,hv,voffset,err)
26252d6035fSJeremy L Thompson      do i=1,ndofs
26352d6035fSJeremy L Thompson        if (abs(hv(voffset+i))>1.0d-10) then
264a2546046Sjeremylt! LCOV_EXCL_START
26552d6035fSJeremy L Thompson          write(*,*) '[',i,'] v ',hv(voffset+i),' != 0.0'
266de996c55Sjeremylt! LCOV_EXCL_STOP
26752d6035fSJeremy L Thompson        endif
26852d6035fSJeremy L Thompson      enddo
26952d6035fSJeremy L Thompson      call ceedvectorrestorearrayread(v,hv,voffset,err)
27052d6035fSJeremy L Thompson
27152d6035fSJeremy L Thompson! Cleanup
27252d6035fSJeremy L Thompson      call ceedqfunctiondestroy(qf_setuptet,err)
27352d6035fSJeremy L Thompson      call ceedqfunctiondestroy(qf_masstet,err)
27452d6035fSJeremy L Thompson      call ceedoperatordestroy(op_setuptet,err)
27552d6035fSJeremy L Thompson      call ceedoperatordestroy(op_masstet,err)
27652d6035fSJeremy L Thompson      call ceedqfunctiondestroy(qf_setuphex,err)
27752d6035fSJeremy L Thompson      call ceedqfunctiondestroy(qf_masshex,err)
27852d6035fSJeremy L Thompson      call ceedoperatordestroy(op_setuphex,err)
27952d6035fSJeremy L Thompson      call ceedoperatordestroy(op_masshex,err)
28052d6035fSJeremy L Thompson      call ceedoperatordestroy(op_setup,err)
28152d6035fSJeremy L Thompson      call ceedoperatordestroy(op_mass,err)
28252d6035fSJeremy L Thompson      call ceedelemrestrictiondestroy(erestrictutet,err)
28352d6035fSJeremy L Thompson      call ceedelemrestrictiondestroy(erestrictxtet,err)
28452d6035fSJeremy L Thompson      call ceedelemrestrictiondestroy(erestrictuitet,err)
28552d6035fSJeremy L Thompson      call ceedelemrestrictiondestroy(erestrictxitet,err)
28652d6035fSJeremy L Thompson      call ceedelemrestrictiondestroy(erestrictuhex,err)
28752d6035fSJeremy L Thompson      call ceedelemrestrictiondestroy(erestrictxhex,err)
28852d6035fSJeremy L Thompson      call ceedelemrestrictiondestroy(erestrictuihex,err)
28952d6035fSJeremy L Thompson      call ceedelemrestrictiondestroy(erestrictxihex,err)
29052d6035fSJeremy L Thompson      call ceedbasisdestroy(butet,err)
29152d6035fSJeremy L Thompson      call ceedbasisdestroy(bxtet,err)
29252d6035fSJeremy L Thompson      call ceedbasisdestroy(buhex,err)
29352d6035fSJeremy L Thompson      call ceedbasisdestroy(bxhex,err)
29452d6035fSJeremy L Thompson      call ceedvectordestroy(x,err)
29552d6035fSJeremy L Thompson      call ceedvectordestroy(u,err)
29652d6035fSJeremy L Thompson      call ceedvectordestroy(v,err)
29752d6035fSJeremy L Thompson      call ceedvectordestroy(qdatatet,err)
29852d6035fSJeremy L Thompson      call ceedvectordestroy(qdatahex,err)
29952d6035fSJeremy L Thompson      call ceeddestroy(ceed,err)
30052d6035fSJeremy L Thompson      end
30152d6035fSJeremy L Thompson!-----------------------------------------------------------------------
302