12ebaca42Sjeremylt!----------------------------------------------------------------------- 22ebaca42Sjeremylt subroutine setup(ctx,q,u1,u2,u3,u4,u5,u6,u7,u8,u9,u10,u11,u12,u13,u14,& 32ebaca42Sjeremylt& u15,u16,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,v16,ierr) 4f1a4e9feSjeremylt! LCOV_EXCL_START 52ebaca42Sjeremylt real*8 ctx 62ebaca42Sjeremylt real*8 u1(1) 72ebaca42Sjeremylt real*8 u2(1) 82ebaca42Sjeremylt real*8 v1(1) 92ebaca42Sjeremylt integer q,ierr 102ebaca42Sjeremylt 112ebaca42Sjeremylt do i=1,q 122ebaca42Sjeremylt v1(i)=u1(i)*u2(i) 132ebaca42Sjeremylt enddo 142ebaca42Sjeremylt 152ebaca42Sjeremylt ierr=0 162ebaca42Sjeremylt end 17f1a4e9feSjeremylt! LCOV_EXCL_STOP 182ebaca42Sjeremylt!----------------------------------------------------------------------- 192ebaca42Sjeremylt subroutine mass(ctx,q,u1,u2,u3,u4,u5,u6,u7,u8,u9,u10,u11,u12,u13,u14,& 202ebaca42Sjeremylt& u15,u16,v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11,v12,v13,v14,v15,v16,ierr) 21f1a4e9feSjeremylt! LCOV_EXCL_START 222ebaca42Sjeremylt real*8 ctx 232ebaca42Sjeremylt real*8 u1(1) 242ebaca42Sjeremylt real*8 u2(1) 252ebaca42Sjeremylt real*8 v1(1) 262ebaca42Sjeremylt integer q,ierr 272ebaca42Sjeremylt 282ebaca42Sjeremylt do i=1,q 292ebaca42Sjeremylt v1(i)=u2(i)*u1(i) 302ebaca42Sjeremylt enddo 312ebaca42Sjeremylt 322ebaca42Sjeremylt ierr=0 332ebaca42Sjeremylt end 34f1a4e9feSjeremylt! LCOV_EXCL_STOP 352ebaca42Sjeremylt!----------------------------------------------------------------------- 362ebaca42Sjeremylt program test 372ebaca42Sjeremylt 382ebaca42Sjeremylt include 'ceedf.h' 392ebaca42Sjeremylt 402ebaca42Sjeremylt integer ceed,err,i,j 41*a8d32208Sjeremylt integer lmode 42*a8d32208Sjeremylt parameter(lmode=ceed_notranspose) 432ebaca42Sjeremylt integer erestrictx,erestrictu,erestrictxi,erestrictui 442ebaca42Sjeremylt integer bx,bu 452ebaca42Sjeremylt integer qf_setup,qf_mass 462ebaca42Sjeremylt integer op_setup,op_mass 472ebaca42Sjeremylt integer qdata 482ebaca42Sjeremylt integer nelem,p,q 492ebaca42Sjeremylt parameter(nelem=15) 502ebaca42Sjeremylt parameter(p=5) 512ebaca42Sjeremylt parameter(q=8) 522ebaca42Sjeremylt integer nx,nu 532ebaca42Sjeremylt parameter(nx=nelem+1) 542ebaca42Sjeremylt parameter(nu=nelem*(p-1)+1) 552ebaca42Sjeremylt integer indx(nelem*2) 562ebaca42Sjeremylt integer indu(nelem*p) 572ebaca42Sjeremylt 582ebaca42Sjeremylt character arg*32 592ebaca42Sjeremylt 60f1a4e9feSjeremylt! LCOV_EXCL_START 612ebaca42Sjeremylt external setup,mass 62f1a4e9feSjeremylt! LCOV_EXCL_STOP 632ebaca42Sjeremylt 642ebaca42Sjeremylt call getarg(1,arg) 652ebaca42Sjeremylt call ceedinit(trim(arg)//char(0),ceed,err) 662ebaca42Sjeremylt 672ebaca42Sjeremylt do i=0,nelem-1 682ebaca42Sjeremylt indx(2*i+1)=i 692ebaca42Sjeremylt indx(2*i+2)=i+1 702ebaca42Sjeremylt enddo 712ebaca42Sjeremylt 72*a8d32208Sjeremylt call ceedelemrestrictioncreate(ceed,lmode,nelem,2,nx,1,ceed_mem_host,& 732ebaca42Sjeremylt & ceed_use_pointer,indx,erestrictx,err) 74*a8d32208Sjeremylt call ceedelemrestrictioncreateidentity(ceed,lmode,nelem,2,2*nelem,1,& 752ebaca42Sjeremylt & erestrictxi,err) 762ebaca42Sjeremylt 772ebaca42Sjeremylt do i=0,nelem-1 782ebaca42Sjeremylt do j=0,p-1 792ebaca42Sjeremylt indu(p*i+j+1)=i*(p-1)+j 802ebaca42Sjeremylt enddo 812ebaca42Sjeremylt enddo 822ebaca42Sjeremylt 83*a8d32208Sjeremylt call ceedelemrestrictioncreate(ceed,lmode,nelem,p,nu,1,ceed_mem_host,& 842ebaca42Sjeremylt & ceed_use_pointer,indu,erestrictu,err) 85*a8d32208Sjeremylt call ceedelemrestrictioncreateidentity(ceed,lmode,nelem,q,q*nelem,1,& 862ebaca42Sjeremylt & erestrictui,err) 872ebaca42Sjeremylt 882ebaca42Sjeremylt call ceedbasiscreatetensorh1lagrange(ceed,1,1,2,q,ceed_gauss,bx,err) 892ebaca42Sjeremylt call ceedbasiscreatetensorh1lagrange(ceed,1,1,p,q,ceed_gauss,bu,err) 902ebaca42Sjeremylt 912ebaca42Sjeremylt call ceedqfunctioncreateinterior(ceed,1,setup,& 922ebaca42Sjeremylt &SOURCE_DIR& 932ebaca42Sjeremylt &//'t500-operator.h:setup'//char(0),qf_setup,err) 942ebaca42Sjeremylt call ceedqfunctionaddinput(qf_setup,'_weight',1,ceed_eval_weight,err) 952ebaca42Sjeremylt call ceedqfunctionaddinput(qf_setup,'dx',1,ceed_eval_grad,err) 962ebaca42Sjeremylt call ceedqfunctionaddoutput(qf_setup,'rho',1,ceed_eval_none,err) 972ebaca42Sjeremylt 982ebaca42Sjeremylt call ceedqfunctioncreateinterior(ceed,1,mass,& 992ebaca42Sjeremylt &SOURCE_DIR& 1002ebaca42Sjeremylt &//'t500-operator.h:mass'//char(0),qf_mass,err) 1012ebaca42Sjeremylt call ceedqfunctionaddinput(qf_mass,'rho',1,ceed_eval_none,err) 1022ebaca42Sjeremylt call ceedqfunctionaddinput(qf_mass,'u',1,ceed_eval_interp,err) 1032ebaca42Sjeremylt call ceedqfunctionaddoutput(qf_mass,'v',1,ceed_eval_interp,err) 1042ebaca42Sjeremylt 1052ebaca42Sjeremylt call ceedoperatorcreate(ceed,qf_setup,ceed_qfunction_none,& 1062ebaca42Sjeremylt & ceed_qfunction_none,op_setup,err) 1072ebaca42Sjeremylt call ceedoperatorcreate(ceed,qf_mass,ceed_qfunction_none,& 1082ebaca42Sjeremylt & ceed_qfunction_none,op_mass,err) 1092ebaca42Sjeremylt 1102ebaca42Sjeremylt call ceedvectorcreate(ceed,nx,x,err) 1112ebaca42Sjeremylt call ceedvectorcreate(ceed,nelem*q,qdata,err) 1122ebaca42Sjeremylt 113*a8d32208Sjeremylt call ceedoperatorsetfield(op_setup,'_weight',erestrictxi,bx,& 114*a8d32208Sjeremylt & ceed_vector_none,err) 115*a8d32208Sjeremylt call ceedoperatorsetfield(op_setup,'dx',erestrictx,bx,& 116*a8d32208Sjeremylt & ceed_vector_active,err) 1172ebaca42Sjeremylt call ceedoperatorsetfield(op_setup,'rho',erestrictui,& 118*a8d32208Sjeremylt & ceed_basis_collocated,ceed_vector_active,err) 1192ebaca42Sjeremylt call ceedoperatorsetfield(op_mass,'rho',erestrictui,& 120*a8d32208Sjeremylt & ceed_basis_collocated,qdata,err) 121*a8d32208Sjeremylt call ceedoperatorsetfield(op_mass,'u',erestrictu,bu,& 122*a8d32208Sjeremylt & ceed_vector_active,err) 123*a8d32208Sjeremylt call ceedoperatorsetfield(op_mass,'v',erestrictu,bu,& 124*a8d32208Sjeremylt & ceed_vector_active,err) 1252ebaca42Sjeremylt 1262ebaca42Sjeremylt call ceedoperatorview(op_setup,err) 1272ebaca42Sjeremylt call ceedoperatorview(op_mass,err) 1282ebaca42Sjeremylt 1292ebaca42Sjeremylt call ceedvectordestroy(qdata,err) 1302ebaca42Sjeremylt call ceedoperatordestroy(op_mass,err) 1312ebaca42Sjeremylt call ceedoperatordestroy(op_setup,err) 1322ebaca42Sjeremylt call ceedqfunctiondestroy(qf_mass,err) 1332ebaca42Sjeremylt call ceedqfunctiondestroy(qf_setup,err) 1342ebaca42Sjeremylt call ceedbasisdestroy(bu,err) 1352ebaca42Sjeremylt call ceedbasisdestroy(bx,err) 1362ebaca42Sjeremylt call ceedelemrestrictiondestroy(erestrictu,err) 1372ebaca42Sjeremylt call ceedelemrestrictiondestroy(erestrictx,err) 1382ebaca42Sjeremylt call ceedelemrestrictiondestroy(erestrictui,err) 1392ebaca42Sjeremylt call ceedelemrestrictiondestroy(erestrictxi,err) 1402ebaca42Sjeremylt call ceeddestroy(ceed,err) 1412ebaca42Sjeremylt end 1422ebaca42Sjeremylt!----------------------------------------------------------------------- 143