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 4161dbc9d2Sjeremylt integer imode 4261dbc9d2Sjeremylt parameter(imode=ceed_noninterlaced) 43*15910d16Sjeremylt integer stridesu(3) 44*15910d16Sjeremylt integer erestrictx,erestrictu,erestrictui 452ebaca42Sjeremylt integer bx,bu 462ebaca42Sjeremylt integer qf_setup,qf_mass 472ebaca42Sjeremylt integer op_setup,op_mass 482ebaca42Sjeremylt integer qdata 492ebaca42Sjeremylt integer nelem,p,q 502ebaca42Sjeremylt parameter(nelem=15) 512ebaca42Sjeremylt parameter(p=5) 522ebaca42Sjeremylt parameter(q=8) 532ebaca42Sjeremylt integer nx,nu 542ebaca42Sjeremylt parameter(nx=nelem+1) 552ebaca42Sjeremylt parameter(nu=nelem*(p-1)+1) 562ebaca42Sjeremylt integer indx(nelem*2) 572ebaca42Sjeremylt integer indu(nelem*p) 582ebaca42Sjeremylt 592ebaca42Sjeremylt character arg*32 602ebaca42Sjeremylt 61f1a4e9feSjeremylt! LCOV_EXCL_START 622ebaca42Sjeremylt external setup,mass 63f1a4e9feSjeremylt! LCOV_EXCL_STOP 642ebaca42Sjeremylt 652ebaca42Sjeremylt call getarg(1,arg) 662ebaca42Sjeremylt call ceedinit(trim(arg)//char(0),ceed,err) 672ebaca42Sjeremylt 682ebaca42Sjeremylt do i=0,nelem-1 692ebaca42Sjeremylt indx(2*i+1)=i 702ebaca42Sjeremylt indx(2*i+2)=i+1 712ebaca42Sjeremylt enddo 722ebaca42Sjeremylt 7361dbc9d2Sjeremylt call ceedelemrestrictioncreate(ceed,imode,nelem,2,nx,1,ceed_mem_host,& 742ebaca42Sjeremylt & ceed_use_pointer,indx,erestrictx,err) 752ebaca42Sjeremylt 762ebaca42Sjeremylt do i=0,nelem-1 772ebaca42Sjeremylt do j=0,p-1 782ebaca42Sjeremylt indu(p*i+j+1)=i*(p-1)+j 792ebaca42Sjeremylt enddo 802ebaca42Sjeremylt enddo 812ebaca42Sjeremylt 8261dbc9d2Sjeremylt call ceedelemrestrictioncreate(ceed,imode,nelem,p,nu,1,ceed_mem_host,& 832ebaca42Sjeremylt & ceed_use_pointer,indu,erestrictu,err) 847509a596Sjeremylt stridesu=[1,q,q] 857509a596Sjeremylt call ceedelemrestrictioncreatestrided(ceed,nelem,q,q*nelem,1,stridesu,& 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*15910d16Sjeremylt call ceedoperatorsetfield(op_setup,'_weight',ceed_elemrestriction_none,& 114*15910d16Sjeremylt & bx,ceed_vector_none,err) 115a8d32208Sjeremylt call ceedoperatorsetfield(op_setup,'dx',erestrictx,bx,& 116a8d32208Sjeremylt & ceed_vector_active,err) 1172ebaca42Sjeremylt call ceedoperatorsetfield(op_setup,'rho',erestrictui,& 118a8d32208Sjeremylt & ceed_basis_collocated,ceed_vector_active,err) 1192ebaca42Sjeremylt call ceedoperatorsetfield(op_mass,'rho',erestrictui,& 120a8d32208Sjeremylt & ceed_basis_collocated,qdata,err) 121a8d32208Sjeremylt call ceedoperatorsetfield(op_mass,'u',erestrictu,bu,& 122a8d32208Sjeremylt & ceed_vector_active,err) 123a8d32208Sjeremylt call ceedoperatorsetfield(op_mass,'v',erestrictu,bu,& 124a8d32208Sjeremylt & 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 ceeddestroy(ceed,err) 1402ebaca42Sjeremylt end 1412ebaca42Sjeremylt!----------------------------------------------------------------------- 142