152d6035fSJeremy L Thompson!----------------------------------------------------------------------- 252d6035fSJeremy L Thompson! 352d6035fSJeremy L Thompson! Header with common subroutine 452d6035fSJeremy L Thompson! 552bfb9bbSJeremy 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 4261dbc9d2Sjeremylt integer imode 4361dbc9d2Sjeremylt parameter(imode=ceed_noninterlaced) 44*7509a596Sjeremylt integer stridesxtet(3),stridesutet(3),stridesxhex(3),stridesuhex(3) 4552d6035fSJeremy L Thompson integer erestrictxtet,erestrictutet,erestrictxitet,erestrictuitet,& 4652d6035fSJeremy L Thompson& erestrictxhex,erestrictuhex,erestrictxihex,erestrictuihex 4752d6035fSJeremy L Thompson integer bxtet,butet,bxhex,buhex 4852d6035fSJeremy L Thompson integer qf_setuptet,qf_masstet,qf_setuphex,qf_masshex 4952d6035fSJeremy L Thompson integer op_setuptet,op_masstet,op_setuphex,op_masshex,op_setup,op_mass 5052d6035fSJeremy L Thompson integer qdatatet,qdatahex,x,u,v 5152d6035fSJeremy L Thompson integer nelemtet,nelemhex,ptet,phex,qtet,qhex,d 5252d6035fSJeremy L Thompson integer row,col,offset 5352d6035fSJeremy L Thompson parameter(nelemtet=6) 5452d6035fSJeremy L Thompson parameter(ptet=6) 5552d6035fSJeremy L Thompson parameter(qtet=4) 5652d6035fSJeremy L Thompson parameter(nelemhex=6) 5752d6035fSJeremy L Thompson parameter(phex=3) 5852d6035fSJeremy L Thompson parameter(qhex=4) 5952d6035fSJeremy L Thompson parameter(d=2) 6052d6035fSJeremy L Thompson integer ndofs,nqptstet,nqptshex,nqpts,nx,ny,nxtet,nytet,nxhex 6152d6035fSJeremy L Thompson parameter(nx=3) 6252d6035fSJeremy L Thompson parameter(ny=3) 6352d6035fSJeremy L Thompson parameter(nxtet=3) 6452d6035fSJeremy L Thompson parameter(nytet=1) 6552d6035fSJeremy L Thompson parameter(nxhex=3) 6652d6035fSJeremy L Thompson parameter(ndofs=(nx*2+1)*(ny*2+1)) 6752d6035fSJeremy L Thompson parameter(nqptstet=nelemtet*qtet) 6852d6035fSJeremy L Thompson parameter(nqptshex=nelemhex*qhex*qhex) 6952d6035fSJeremy L Thompson parameter(nqpts=nqptstet+nqptshex) 7052d6035fSJeremy L Thompson integer indxtet(nelemtet*ptet),indxhex(nelemhex*phex*phex) 7152d6035fSJeremy L Thompson real*8 arrx(d*ndofs) 72c8b9fe72Sjeremylt integer*8 voffset,xoffset 7352d6035fSJeremy L Thompson 7452d6035fSJeremy L Thompson real*8 qref(d*qtet) 7552d6035fSJeremy L Thompson real*8 qweight(qtet) 7652d6035fSJeremy L Thompson real*8 interp(ptet*qtet) 7752d6035fSJeremy L Thompson real*8 grad(d*ptet*qtet) 7852d6035fSJeremy L Thompson 7952d6035fSJeremy L Thompson real*8 hv(ndofs) 8052d6035fSJeremy L Thompson 8152d6035fSJeremy L Thompson character arg*32 8252d6035fSJeremy L Thompson 8352d6035fSJeremy L Thompson external setup,mass 8452d6035fSJeremy L Thompson 8552d6035fSJeremy L Thompson call getarg(1,arg) 8652d6035fSJeremy L Thompson 8752d6035fSJeremy L Thompson call ceedinit(trim(arg)//char(0),ceed,err) 8852d6035fSJeremy L Thompson 8952d6035fSJeremy L Thompson! DoF Coordinates 9052d6035fSJeremy L Thompson do i=0,ny*2 9152d6035fSJeremy L Thompson do j=0,nx*2 9252d6035fSJeremy L Thompson arrx(i+j*(ny*2+1)+0*ndofs+1)=1.d0*i/(2*ny) 9352d6035fSJeremy L Thompson arrx(i+j*(ny*2+1)+1*ndofs+1)=1.d0*j/(2*nx) 9452d6035fSJeremy L Thompson enddo 9552d6035fSJeremy L Thompson enddo 9652d6035fSJeremy L Thompson 9752d6035fSJeremy L Thompson call ceedvectorcreate(ceed,d*ndofs,x,err) 98c8b9fe72Sjeremylt xoffset=0 99c8b9fe72Sjeremylt call ceedvectorsetarray(x,ceed_mem_host,ceed_use_pointer,arrx,xoffset,err) 10052d6035fSJeremy L Thompson 10152d6035fSJeremy L Thompson! Qdata Vectors 10252d6035fSJeremy L Thompson call ceedvectorcreate(ceed,nqptstet,qdatatet,err) 10352d6035fSJeremy L Thompson call ceedvectorcreate(ceed,nqptshex,qdatahex,err) 10452d6035fSJeremy L Thompson 10552d6035fSJeremy L Thompson! Tet Elements 10652d6035fSJeremy L Thompson do i=0,2 10752d6035fSJeremy L Thompson col=mod(i,nx) 10852d6035fSJeremy L Thompson row=i/nx 10952d6035fSJeremy L Thompson offset=col*2+row*(nx*2+1)*2 11052d6035fSJeremy L Thompson 11152d6035fSJeremy L Thompson indxtet(i*2*ptet+1)=2+offset 11252d6035fSJeremy L Thompson indxtet(i*2*ptet+2)=9+offset 11352d6035fSJeremy L Thompson indxtet(i*2*ptet+3)=16+offset 11452d6035fSJeremy L Thompson indxtet(i*2*ptet+4)=1+offset 11552d6035fSJeremy L Thompson indxtet(i*2*ptet+5)=8+offset 11652d6035fSJeremy L Thompson indxtet(i*2*ptet+6)=0+offset 11752d6035fSJeremy L Thompson 11852d6035fSJeremy L Thompson indxtet(i*2*ptet+7)=14+offset 11952d6035fSJeremy L Thompson indxtet(i*2*ptet+8)=7+offset 12052d6035fSJeremy L Thompson indxtet(i*2*ptet+9)=0+offset 12152d6035fSJeremy L Thompson indxtet(i*2*ptet+10)=15+offset 12252d6035fSJeremy L Thompson indxtet(i*2*ptet+11)=8+offset 12352d6035fSJeremy L Thompson indxtet(i*2*ptet+12)=16+offset 12452d6035fSJeremy L Thompson enddo 12552d6035fSJeremy L Thompson 12652d6035fSJeremy L Thompson! -- Restrictions 12761dbc9d2Sjeremylt call ceedelemrestrictioncreate(ceed,imode,nelemtet,ptet,ndofs,d,& 128a8d32208Sjeremylt & ceed_mem_host,ceed_use_pointer,indxtet,erestrictxtet,err) 129*7509a596Sjeremylt stridesxtet=[1,ptet,ptet*d] 130*7509a596Sjeremylt call ceedelemrestrictioncreatestrided(ceed,nelemtet,ptet,& 131*7509a596Sjeremylt & nelemtet*ptet,d,stridesxtet,erestrictxitet,err) 13252d6035fSJeremy L Thompson 13361dbc9d2Sjeremylt call ceedelemrestrictioncreate(ceed,imode,nelemtet,ptet,ndofs,1,& 134a8d32208Sjeremylt & ceed_mem_host,ceed_use_pointer,indxtet,erestrictutet,err) 135*7509a596Sjeremylt stridesutet=[1,qtet,qtet] 136*7509a596Sjeremylt call ceedelemrestrictioncreatestrided(ceed,nelemtet,qtet,nqptstet,& 137*7509a596Sjeremylt & 1,stridesutet,erestrictuitet,err) 13852d6035fSJeremy L Thompson 13952d6035fSJeremy L Thompson! -- Bases 14052d6035fSJeremy L Thompson call buildmats(qref,qweight,interp,grad) 14152d6035fSJeremy L Thompson call ceedbasiscreateh1(ceed,ceed_triangle,d,ptet,qtet,interp,grad,qref,& 14252d6035fSJeremy L Thompson & qweight,bxtet,err) 14352d6035fSJeremy L Thompson call buildmats(qref,qweight,interp,grad) 14452d6035fSJeremy L Thompson call ceedbasiscreateh1(ceed,ceed_triangle,1,ptet,qtet,interp,grad,qref,& 14552d6035fSJeremy L Thompson & qweight,butet,err) 14652d6035fSJeremy L Thompson 14752d6035fSJeremy L Thompson! -- QFunctions 14852d6035fSJeremy L Thompson call ceedqfunctioncreateinterior(ceed,1,setup,& 1492d50dd3dSjeremylt &SOURCE_DIR& 150872c4ebbSjeremylt &//'t510-operator.h:setup'//char(0),qf_setuptet,err) 15152d6035fSJeremy L Thompson call ceedqfunctionaddinput(qf_setuptet,'_weight',1,ceed_eval_weight,err) 1524d537eeaSYohann call ceedqfunctionaddinput(qf_setuptet,'dx',d*d,ceed_eval_grad,err) 15352d6035fSJeremy L Thompson call ceedqfunctionaddoutput(qf_setuptet,'rho',1,ceed_eval_none,err) 15452d6035fSJeremy L Thompson 15552d6035fSJeremy L Thompson call ceedqfunctioncreateinterior(ceed,1,mass,& 1562d50dd3dSjeremylt &SOURCE_DIR& 157872c4ebbSjeremylt &//'t510-operator.h:mass'//char(0),qf_masstet,err) 15852d6035fSJeremy L Thompson call ceedqfunctionaddinput(qf_masstet,'rho',1,ceed_eval_none,err) 15952d6035fSJeremy L Thompson call ceedqfunctionaddinput(qf_masstet,'u',1,ceed_eval_interp,err) 16052d6035fSJeremy L Thompson call ceedqfunctionaddoutput(qf_masstet,'v',1,ceed_eval_interp,err) 16152d6035fSJeremy L Thompson 16252d6035fSJeremy L Thompson! -- Operators 16352d6035fSJeremy L Thompson! ---- Setup Tet 164442e7f0bSjeremylt call ceedoperatorcreate(ceed,qf_setuptet,ceed_qfunction_none,& 165442e7f0bSjeremylt & ceed_qfunction_none,op_setuptet,err) 16652d6035fSJeremy L Thompson call ceedoperatorsetfield(op_setuptet,'_weight',erestrictxitet,& 167a8d32208Sjeremylt & bxtet,ceed_vector_none,err) 16852d6035fSJeremy L Thompson call ceedoperatorsetfield(op_setuptet,'dx',erestrictxtet,& 169a8d32208Sjeremylt & bxtet,ceed_vector_active,err) 17052d6035fSJeremy L Thompson call ceedoperatorsetfield(op_setuptet,'rho',erestrictuitet,& 171a8d32208Sjeremylt & ceed_basis_collocated,qdatatet,err) 17252d6035fSJeremy L Thompson! ---- Mass Tet 173442e7f0bSjeremylt call ceedoperatorcreate(ceed,qf_masstet,ceed_qfunction_none,& 174442e7f0bSjeremylt & ceed_qfunction_none,op_masstet,err) 17552d6035fSJeremy L Thompson call ceedoperatorsetfield(op_masstet,'rho',erestrictuitet,& 176a8d32208Sjeremylt & ceed_basis_collocated,qdatatet,err) 17752d6035fSJeremy L Thompson call ceedoperatorsetfield(op_masstet,'u',erestrictutet,& 178a8d32208Sjeremylt & butet,ceed_vector_active,err) 17952d6035fSJeremy L Thompson call ceedoperatorsetfield(op_masstet,'v',erestrictutet,& 180a8d32208Sjeremylt & butet,ceed_vector_active,err) 18152d6035fSJeremy L Thompson 18252d6035fSJeremy L Thompson! Hex Elements 18352d6035fSJeremy L Thompson do i=0,nelemhex-1 18452d6035fSJeremy L Thompson col=mod(i,nx) 18552d6035fSJeremy L Thompson row=i/nx 18652d6035fSJeremy L Thompson offset=(nxtet*2+1)*(nytet*2)*(1+row)+col*2 18752d6035fSJeremy L Thompson do j=0,phex-1 18852d6035fSJeremy L Thompson do k=0,phex-1 18952d6035fSJeremy L Thompson indxhex(phex*(phex*i+k)+j+1)=offset+k*(nxhex*2+1)+j 19052d6035fSJeremy L Thompson enddo 19152d6035fSJeremy L Thompson enddo 19252d6035fSJeremy L Thompson enddo 19352d6035fSJeremy L Thompson 19452d6035fSJeremy L Thompson! -- Restrictions 19561dbc9d2Sjeremylt call ceedelemrestrictioncreate(ceed,imode,nelemhex,phex*phex,ndofs,d,& 19652d6035fSJeremy L Thompson & ceed_mem_host,ceed_use_pointer,indxhex,erestrictxhex,err) 197*7509a596Sjeremylt stridesxhex=[1,phex*phex,phex*phex*d] 198*7509a596Sjeremylt call ceedelemrestrictioncreatestrided(ceed,nelemhex,phex*phex,& 199*7509a596Sjeremylt & nelemhex*phex*phex,d,stridesxhex,erestrictxihex,err) 20052d6035fSJeremy L Thompson 20161dbc9d2Sjeremylt call ceedelemrestrictioncreate(ceed,imode,nelemhex,phex*phex,ndofs,1,& 20252d6035fSJeremy L Thompson & ceed_mem_host,ceed_use_pointer,indxhex,erestrictuhex,err) 203*7509a596Sjeremylt stridesuhex=[1,qhex*qhex,qhex*qhex] 204*7509a596Sjeremylt call ceedelemrestrictioncreatestrided(ceed,nelemhex,qhex*qhex,& 205*7509a596Sjeremylt & nqptshex,1,stridesuhex,erestrictuihex,err) 20652d6035fSJeremy L Thompson 20752d6035fSJeremy L Thompson! -- Bases 20852d6035fSJeremy L Thompson call ceedbasiscreatetensorh1lagrange(ceed,d,d,phex,qhex,ceed_gauss,& 20952d6035fSJeremy L Thompson & bxhex,err) 21052d6035fSJeremy L Thompson call ceedbasiscreatetensorh1lagrange(ceed,d,1,phex,qhex,ceed_gauss,& 21152d6035fSJeremy L Thompson & buhex,err) 21252d6035fSJeremy L Thompson 21352d6035fSJeremy L Thompson! -- QFunctions 21452d6035fSJeremy L Thompson call ceedqfunctioncreateinterior(ceed,1,setup,& 2152d50dd3dSjeremylt &SOURCE_DIR& 216a05f9790Sjeremylt &//'t510-operator.h:setup'//char(0),qf_setuphex,err) 21752d6035fSJeremy L Thompson call ceedqfunctionaddinput(qf_setuphex,'_weight',1,ceed_eval_weight,err) 2184d537eeaSYohann call ceedqfunctionaddinput(qf_setuphex,'dx',d*d,ceed_eval_grad,err) 21952d6035fSJeremy L Thompson call ceedqfunctionaddoutput(qf_setuphex,'rho',1,ceed_eval_none,err) 22052d6035fSJeremy L Thompson 22152d6035fSJeremy L Thompson call ceedqfunctioncreateinterior(ceed,1,mass,& 2222d50dd3dSjeremylt &SOURCE_DIR& 223a05f9790Sjeremylt &//'t510-operator.h:mass'//char(0),qf_masshex,err) 22452d6035fSJeremy L Thompson call ceedqfunctionaddinput(qf_masshex,'rho',1,ceed_eval_none,err) 22552d6035fSJeremy L Thompson call ceedqfunctionaddinput(qf_masshex,'u',1,ceed_eval_interp,err) 22652d6035fSJeremy L Thompson call ceedqfunctionaddoutput(qf_masshex,'v',1,ceed_eval_interp,err) 22752d6035fSJeremy L Thompson 22852d6035fSJeremy L Thompson! -- Operators 22952d6035fSJeremy L Thompson! ---- Setup Hex 230442e7f0bSjeremylt call ceedoperatorcreate(ceed,qf_setuphex,ceed_qfunction_none,& 231442e7f0bSjeremylt & ceed_qfunction_none,op_setuphex,err) 23252d6035fSJeremy L Thompson call ceedoperatorsetfield(op_setuphex,'_weight',erestrictxihex,& 233a8d32208Sjeremylt & bxhex,ceed_vector_none,err) 23452d6035fSJeremy L Thompson call ceedoperatorsetfield(op_setuphex,'dx',erestrictxhex,& 235a8d32208Sjeremylt & bxhex,ceed_vector_active,err) 23652d6035fSJeremy L Thompson call ceedoperatorsetfield(op_setuphex,'rho',erestrictuihex,& 237a8d32208Sjeremylt & ceed_basis_collocated,qdatahex,err) 23852d6035fSJeremy L Thompson! ---- Mass Hex 239442e7f0bSjeremylt call ceedoperatorcreate(ceed,qf_masshex,ceed_qfunction_none,& 240442e7f0bSjeremylt & ceed_qfunction_none,op_masshex,err) 24152d6035fSJeremy L Thompson call ceedoperatorsetfield(op_masshex,'rho',erestrictuihex,& 242a8d32208Sjeremylt & ceed_basis_collocated,qdatahex,err) 24352d6035fSJeremy L Thompson call ceedoperatorsetfield(op_masshex,'u',erestrictuhex,& 244a8d32208Sjeremylt & buhex,ceed_vector_active,err) 24552d6035fSJeremy L Thompson call ceedoperatorsetfield(op_masshex,'v',erestrictuhex,& 246a8d32208Sjeremylt & buhex,ceed_vector_active,err) 24752d6035fSJeremy L Thompson 24852d6035fSJeremy L Thompson! Composite Operators 24952d6035fSJeremy L Thompson call ceedcompositeoperatorcreate(ceed,op_setup,err) 25052d6035fSJeremy L Thompson call ceedcompositeoperatoraddsub(op_setup,op_setuptet,err) 25152d6035fSJeremy L Thompson call ceedcompositeoperatoraddsub(op_setup,op_setuphex,err) 25252d6035fSJeremy L Thompson 25352d6035fSJeremy L Thompson call ceedcompositeoperatorcreate(ceed,op_mass,err) 25452d6035fSJeremy L Thompson call ceedcompositeoperatoraddsub(op_mass,op_masstet,err) 25552d6035fSJeremy L Thompson call ceedcompositeoperatoraddsub(op_mass,op_masshex,err) 25652d6035fSJeremy L Thompson 25752d6035fSJeremy L Thompson! Apply Setup Operator 258e97ff134Sjeremylt call ceedoperatorapply(op_setup,x,ceed_vector_none,& 259e97ff134Sjeremylt & ceed_request_immediate,err) 26052d6035fSJeremy L Thompson 26152d6035fSJeremy L Thompson! Apply Mass Operator 26252d6035fSJeremy L Thompson call ceedvectorcreate(ceed,ndofs,u,err) 26352d6035fSJeremy L Thompson call ceedvectorsetvalue(u,0.d0,err) 26452d6035fSJeremy L Thompson call ceedvectorcreate(ceed,ndofs,v,err) 26552d6035fSJeremy L Thompson 26652d6035fSJeremy L Thompson call ceedoperatorapply(op_mass,u,v,ceed_request_immediate,err) 26752d6035fSJeremy L Thompson 26852d6035fSJeremy L Thompson! Check Output 26952d6035fSJeremy L Thompson call ceedvectorgetarrayread(v,ceed_mem_host,hv,voffset,err) 27052d6035fSJeremy L Thompson do i=1,ndofs 27152d6035fSJeremy L Thompson if (abs(hv(voffset+i))>1.0d-10) then 272a2546046Sjeremylt! LCOV_EXCL_START 27352d6035fSJeremy L Thompson write(*,*) '[',i,'] v ',hv(voffset+i),' != 0.0' 274de996c55Sjeremylt! LCOV_EXCL_STOP 27552d6035fSJeremy L Thompson endif 27652d6035fSJeremy L Thompson enddo 27752d6035fSJeremy L Thompson call ceedvectorrestorearrayread(v,hv,voffset,err) 27852d6035fSJeremy L Thompson 27952d6035fSJeremy L Thompson! Cleanup 28052d6035fSJeremy L Thompson call ceedqfunctiondestroy(qf_setuptet,err) 28152d6035fSJeremy L Thompson call ceedqfunctiondestroy(qf_masstet,err) 28252d6035fSJeremy L Thompson call ceedoperatordestroy(op_setuptet,err) 28352d6035fSJeremy L Thompson call ceedoperatordestroy(op_masstet,err) 28452d6035fSJeremy L Thompson call ceedqfunctiondestroy(qf_setuphex,err) 28552d6035fSJeremy L Thompson call ceedqfunctiondestroy(qf_masshex,err) 28652d6035fSJeremy L Thompson call ceedoperatordestroy(op_setuphex,err) 28752d6035fSJeremy L Thompson call ceedoperatordestroy(op_masshex,err) 28852d6035fSJeremy L Thompson call ceedoperatordestroy(op_setup,err) 28952d6035fSJeremy L Thompson call ceedoperatordestroy(op_mass,err) 29052d6035fSJeremy L Thompson call ceedelemrestrictiondestroy(erestrictutet,err) 29152d6035fSJeremy L Thompson call ceedelemrestrictiondestroy(erestrictxtet,err) 29252d6035fSJeremy L Thompson call ceedelemrestrictiondestroy(erestrictuitet,err) 29352d6035fSJeremy L Thompson call ceedelemrestrictiondestroy(erestrictxitet,err) 29452d6035fSJeremy L Thompson call ceedelemrestrictiondestroy(erestrictuhex,err) 29552d6035fSJeremy L Thompson call ceedelemrestrictiondestroy(erestrictxhex,err) 29652d6035fSJeremy L Thompson call ceedelemrestrictiondestroy(erestrictuihex,err) 29752d6035fSJeremy L Thompson call ceedelemrestrictiondestroy(erestrictxihex,err) 29852d6035fSJeremy L Thompson call ceedbasisdestroy(butet,err) 29952d6035fSJeremy L Thompson call ceedbasisdestroy(bxtet,err) 30052d6035fSJeremy L Thompson call ceedbasisdestroy(buhex,err) 30152d6035fSJeremy L Thompson call ceedbasisdestroy(bxhex,err) 30252d6035fSJeremy L Thompson call ceedvectordestroy(x,err) 30352d6035fSJeremy L Thompson call ceedvectordestroy(u,err) 30452d6035fSJeremy L Thompson call ceedvectordestroy(v,err) 30552d6035fSJeremy L Thompson call ceedvectordestroy(qdatatet,err) 30652d6035fSJeremy L Thompson call ceedvectordestroy(qdatahex,err) 30752d6035fSJeremy L Thompson call ceeddestroy(ceed,err) 30852d6035fSJeremy L Thompson end 30952d6035fSJeremy L Thompson!----------------------------------------------------------------------- 310