20 ntot1 = lx1*ly1*lz1*nelt
23 call col3(bm1ms,bm1,upf,ntot1)
39 common /inbc/ nfld_neknek
41 if (icalld.eq.0.and.nid.eq.0)
write(6,*)
'setup neknek'
44 $
call exitti(
'set nsessmax > 1 in SIZE!$',nsessmax)
55 if (nid.eq.0)
write(6,*)
'session id:', idsess
56 if (nid.eq.0)
write(6,*)
'extrapolation order:', ninter
57 if (nid.eq.0)
write(6,*)
'nfld_neknek:', nfld_neknek
61 if (nfld_min .ne. nfld_max)
then
62 nfld_neknek = nfld_min
63 if (nid.eq.0)
write(6,*)
64 $
'WARNING: reset nfld_neknek to ', nfld_neknek
76 if(nio.eq.0)
write(6,
'(A,/)')
' done :: setup neknek'
100 call izero(intflag,nflag)
107 if (cb2.eq.
'in')
then
109 if (j.ge.2) cbc(f,e,j)=
't '
110 if (j.eq.1) cbc(f,e,j)=
'v '
113 if (cb.eq.
'inp') cbc(f,e,j)=
'o '
121 call rzero(valint(1,1,1,1,i),lx1*ly1*lz1*nelt)
133 if (.not.ifneknekc)
return
138 call copy(bdrylg(1,k,2),bdrylg(1,k,1),n)
139 call copy(bdrylg(1,k,1),bdrylg(1,k,0),n)
140 call copy(bdrylg(1,k,0),valint(1,1,1,1,k),n)
150 if (ninter.eq.1.or.istep.eq.1)
then
154 else if (ninter.eq.2.or.istep.eq.2)
then
167 $ c0*bdrylg(i,k,0)+c1*bdrylg(i,k,1)+c2*bdrylg(i,k,2)
186 if (cbc(f,e,1).eq.
'o ')
then
188 call facind (i0,i1,j0,j1,k0,k1,lx1,ly1,lz1,f)
194 vo=vx(i,j,k,e)*unx(l,1,f,e)
195 $ +vy(i,j,k,e)*uny(l,1,f,e)
196 $ +vz(i,j,k,e)*unz(l,1,f,e)
199 call userbc(i,j,k,f,eg)
225 if (iglmove.eq.0)
then
239 real dx1,dy1,dz1,dxf,dyf,dzf,mx_glob,mn_glob
240 integer i,j,k,n,ntot2,npall
241 common /nekmpi/ mid,mp,nekcomm,nekgroup,nekreal
248 npall = npall+npsess(i-1)
252 mx_glob =
glmax_ms(xm1,lx1*ly1*lz1*nelt)
253 mn_glob =
glmin_ms(xm1,lx1*ly1*lz1*nelt)
254 dx1 = mx_glob-mn_glob
261 ntot = lx1*ly1*lz1*nelt
262 if (idsess.eq.0)
then
263 call cadd(xm1,-dxf,ntot)
274 if (istep.gt.1)
call fgslib_findpts_free(inth_multi2)
275 call fgslib_findpts_setup(inth_multi2,mpi_comm_world,npall,ldim,
276 & xm1,ym1,zm1,lx1,ly1,lz1,
277 & nelt,nxf,nyf,nzf,bb_t,ntot,ntot,
289 common /nekmpi/ mid,mp,nekcomm,nekgroup,nekreal
290 integer jsend(nmaxl_nn)
291 common /exchr/ rsend(ldim*nmaxl_nn)
292 integer rcode_all(nmaxl_nn),elid_all(nmaxl_nn)
293 integer proc_all(nmaxl_nn)
294 real dist_all(nmaxl_nn)
295 real rst_all(nmaxl_nn*ldim)
296 integer e,ip,iface,nel,nfaces,ix,iy,iz
297 integer kx1,kx2,ky1,ky2,kz1,kz2,idx,nxyz,nxy
306 if (ifheat) ifield = 2
314 call izero(imask,ntot)
319 if (idsess.eq.0)
then
324 if (intflag(iface,e).eq.1)
then
325 call facind (kx1,kx2,ky1,ky2,kz1,kz2,lx1,ly1,lz1,iface)
331 idx = (e-1)*nxyz+(iz-1)*nxy+(iy-1)*lx1+ix
334 rsend(ldim*(ip-1)+1)=x-dxf
335 rsend(ldim*(ip-1)+2)=y
336 rsend(ldim*(ip-1)+3)=z
338 rsend(ldim*(ip-1)+1)=x-dxf
339 rsend(ldim*(ip-1)+2)=y
342 if (ip.gt.nmaxl_nn)
then
344 &
' ABORT: nbp (current ip) too large',ip,nmaxl_nn
361 call fgslib_findpts(inth_multi2,rcode_all,1,
373 if (idsess.eq.0)
then
374 call cadd(xm1,-dxf,lx1*ly1*lz1*nelt)
384 if (rcode_all(i).lt.2)
then
386 if (rcode_all(i).eq.1.and.dist_all(i).gt.1e-02)
then
387 if (ldim.eq.2)
write(6,*)
388 &
'WARNING: point on boundary or outside the mesh xy[z]d^2: '
389 if (ldim.eq.3)
write(6,*)
390 &
'WARNING: point on boundary or outside the mesh xy[z]d^2: '
394 rcode(ip) = rcode_all(i)
395 elid(ip) = elid_all(i)
396 proc(ip) = proc_all(i)
398 rst(ldim*(ip-1)+j) = rst_all(ldim*(i-1)+j)
400 ilist(1,ip) = jsend(i)
408 if (nid.eq.0)
write(6,*) ipg,nbpg,
'interface points'
412 if (ierror.eq.1)
call exitt
423 parameter(lt=lx1*ly1*lz1*lelt,lxyz=lx1*ly1*lz1)
424 common /scrcg/ pm1(lt),wk1(lxyz),wk2(lxyz)
426 real fieldout(nmaxl_nn,nfldmax_nn)
427 real field(lx1*ly1*lz1*lelt)
428 integer nv,nt,i,j,k,n,ie,ix,iy,iz,idx,ifld
430 if (nio.eq.0)
write(6,98)
431 $
' Multidomain data exchange ... ', nfld_neknek
438 call mappr(pm1,pr,wk1,wk2)
439 nv = lx1*ly1*lz1*nelv
440 nt = lx1*ly1*lz1*nelt
445 if (ldim.eq.3)
call field_eval(fieldout(1,ldim),1,vz)
447 if (nfld_neknek.gt.ldim+1)
then
448 do i=ldim+2,nfld_neknek
449 call field_eval(fieldout(1,i),1,t(1,1,1,1,i-ldim-1))
457 do ifld=1,nfld_neknek
458 valint(idx,1,1,1,ifld)=fieldout(i,ifld)
464 tsync = etime1 - etime0
466 if (nio.eq.0)
write(6,99) istep,
467 $
' done :: Multidomain data exchange',
469 99
format(i11,a,1p2e13.4)
483 call fgslib_findpts_eval(inth_multi2,fieldout,fieldstride,
487 & rst,ldim,npoints_nn,
498 if (nfld_neknek.gt.nfldmax_nn)
then
499 call exitti(
'Error: nfld_neknek > nfldmax:$',idsess)
502 if (nfld_neknek.eq.0)
503 $
call exitti(
'Error: set nfld_neknek in usrdat. Session:$',idsess)
512 real fieldout(nmaxl_nn,nfldmax_nn)
522 ui(idx)=fieldout(i,1)
534 common /ctmp1/ work(lx1*ly1*lz1*lelt)
536 common /idumochk/ itchk
543 if (icalld.eq.0)
then
547 if (cbc(f,e,1).eq.
'o '.or.cbc(f,e,1).eq.
'O ')
then
548 if (intflag(f,e).eq.0)
then
557 if (itchk.eq.1)
return
562 if (cbc(f,e,1).eq.
'v '.or.cbc(f,e,1).eq.
'V ')
then
564 $ ,vx,vy,vz,e,f,work)
566 if (intflag(f,e).eq.1) aqg = aqg+aq
573 if (aqg.gt.0) gamma = -dqg/aqg
578 if (intflag(f,e).eq.1)
then
579 call facind (i0,i1,j0,j1,k0,k1,lx1,ly1,lz1,f)
585 vx(i,j,k,e) = vx(i,j,k,e) + gamma*unx(l,1,f,e)
586 vy(i,j,k,e) = vy(i,j,k,e) + gamma*uny(l,1,f,e)
588 $ vz(i,j,k,e) = vz(i,j,k,e) + gamma*unz(l,1,f,e)
604 parameter(l=lx1*ly1*lz1)
605 real qx(l,1),qy(l,1),qz(l,1),w(lx1,ly1,lz1)
607 call faccl3 (w,qx(1,e),unx(1,1,f,e),f)
608 call faddcl3 (w,qy(1,e),uny(1,1,f,e),f)
609 if (if3d)
call faddcl3 (w,qz(1,e),unz(1,1,f,e),f)
610 call dsset(lx1,ly1,lz1)
612 js1 = skpdat(1,iface)
613 jf1 = skpdat(2,iface)
614 jskip1 = skpdat(3,iface)
615 js2 = skpdat(4,iface)
616 jf2 = skpdat(5,iface)
617 jskip2 = skpdat(6,iface)
621 do 100 j2=js2,jf2,jskip2
622 do 100 j1=js1,jf1,jskip1
624 dq = dq + area(i,1,f,e)*w(j1,j2,1)
625 aq = aq + area(i,1,f,e)
640 if (xmax.le.xmin)
return
642 scale = (x1-x0)/(xmaxg-xming)
643 x0n = x0 +
scale*(xmin-xming)
647 x(i) = x0n +
scale*(x(i)-xmin)
672 parameter(kx1=lx1,ky1=ly1,kz1=lz1,kx2=lx2,ky2=ly2,kz2=lz2)
674 common /cvflow_a/ vxc(kx1,ky1,kz1,lelv)
675 $ , vyc(kx1,ky1,kz1,lelv)
676 $ , vzc(kx1,ky1,kz1,lelv)
677 $ , prc(kx2,ky2,kz2,lelv)
678 $ , vdc(kx1*ky1*kz1*lelv,2)
679 common /cvflow_r/ flow_rate,base_flow,domain_length,xsec
681 common /cvflow_i/ icvflow,iavflow
682 common /cvflow_c/ chv(3)
685 real bd_vflow,dt_vflow
686 save bd_vflow,dt_vflow
687 data bd_vflow,dt_vflow /-99.,-99./
696 ntot1 = lx1*ly1*lz1*nelv
697 ntot2 = lx2*ly2*lz2*nelv
699 if (param(55).eq.0.)
return
701 write(6,*)
'ABORT. Recompile vol_flow with kx1=lx1, etc.'
706 if (param(54).ne.0) icvflow = abs(param(54))
708 if (param(54).lt.0) iavflow = 1
709 flow_rate = param(55)
719 if (dt.ne.dt_vflow.or.bd(1).ne.bd_vflow.or.ifmvbd) ifcomp=.true.
720 if (.not.ifcomp)
then
723 if (vdiff(i,1,1,1,1).ne.vdc(i,1))
goto 20
724 if (vtrans(i,1,1,1,1).ne.vdc(i,2))
goto 20
730 call copy(vdc(1,1),vdiff(1,1,1,1,1),ntot1)
731 call copy(vdc(1,2),vtrans(1,1,1,1,1),ntot1)
738 $ current_flow=
glsc2_ms(vx,bm1ms,ntot1)/domain_length
740 $ current_flow=
glsc2_ms(vy,bm1ms,ntot1)/domain_length
742 $ current_flow=
glsc2_ms(vz,bm1ms,ntot1)/domain_length
745 if (iavflow.eq.1)
then
746 xsec = volvm1ms / domain_length
747 flow_rate = param(55)*xsec
750 delta_flow = flow_rate-current_flow
756 scale = delta_flow/base_flow
757 scale_vf(icvflow) =
scale
758 if (nio.eq.0)
write(6,1) istep,chv(icvflow)
759 $ ,time,
scale,delta_flow,current_flow,flow_rate
760 1
format(i10,
' volflow ',a1,11x,1p5e12.4)
780 real vxc(lx1,ly1,lz1,lelv)
781 $ , vyc(lx1,ly1,lz1,lelv)
782 $ , vzc(lx1,ly1,lz1,lelv)
783 $ , prc(lx2,ly2,lz2,lelv)
785 common /cvflow_r/ flow_rate,base_flow,domain_length,xsec
787 common /cvflow_i/ icvflow,iavflow
788 common /cvflow_c/ chv(3)
797 ntot1 = lx1*ly1*lz1*nelv
798 if (icalld.eq.0)
then
807 if (icvflow.eq.1) domain_length = xlmax - xlmin
808 if (icvflow.eq.2) domain_length = ylmax - ylmin
809 if (icvflow.eq.3) domain_length = zlmax - zlmin
822 $ base_flow =
glsc2_ms(vxc,bm1ms,ntot1)/domain_length
824 $ base_flow =
glsc2_ms(vyc,bm1ms,ntot1)/domain_length
826 $ base_flow =
glsc2_ms(vzc,bm1ms,ntot1)/domain_length
828 if (nio.eq.0 .and. loglevel.gt.0)
write(6,1)
829 $ istep,chv(icvflow),base_flow,domain_length,flow_rate
830 1
format(i11,
' basflow ',a1,11x,1p3e13.4)
844 real vxc(lx1,ly1,lz1,lelv)
845 $ , vyc(lx1,ly1,lz1,lelv)
846 $ , vzc(lx1,ly1,lz1,lelv)
847 $ , prc(lx2,ly2,lz2,lelv)
849 COMMON /scrns/ rw1(lx1,ly1,lz1,lelv)
850 $ , rw2(lx1,ly1,lz1,lelv)
851 $ , rw3(lx1,ly1,lz1,lelv)
852 $ , dv1(lx1,ly1,lz1,lelv)
853 $ , dv2(lx1,ly1,lz1,lelv)
854 $ , dv3(lx1,ly1,lz1,lelv)
855 $ , respr(lx2,ly2,lz2,lelv)
856 COMMON /scrvh/ h1(lx1,ly1,lz1,lelv)
857 $ , h2(lx1,ly1,lz1,lelv)
858 COMMON /scrhi/ h2inv(lx1,ly1,lz1,lelv)
859 common /cvflow_i/ icvflow,iavflow
861 real vxcbc(lx1,ly1,lz1,lelv)
862 real vycbc(lx1,ly1,lz1,lelv)
863 real vzcbc(lx1,ly1,lz1,lelv)
864 REAL vxcp (LX1,LY1,LZ1,LELV)
865 REAL dvxc (LX1,LY1,LZ1,LELV)
866 REAL vycp (LX1,LY1,LZ1,LELV)
867 REAL dvyc (LX1,LY1,LZ1,LELV)
868 REAL vzcp (LX1,LY1,LZ1,LELV)
869 REAL dvzc (LX1,LY1,LZ1,LELV)
870 common /cvflow_nn/ vxcbc,vycbc,vzcbc
871 real resbc(lx1*ly1*lz1*lelv,ldim+1)
877 ntot1 = lx1*ly1*lz1*nelv
878 ntot2 = lx2*ly2*lz2*nelv
881 call opzero(vxcbc,vycbc,vzcbc)
886 if (icvflow.eq.1)
then
887 call copy (rw1,bm1,ntot1)
888 call rzero (rw2,ntot1)
889 call rzero (rw3,ntot1)
890 elseif (icvflow.eq.2)
then
891 call rzero (rw1,ntot1)
892 call copy (rw2,bm1,ntot1)
893 call rzero (rw3,ntot1)
895 call rzero (rw1,ntot1)
896 call rzero (rw2,ntot1)
897 call copy (rw3,bm1,ntot1)
902 call sethlm (h1,h2,intype)
903 call ophinv (vxc,vyc,vzc,rw1,rw2,rw3,h1,h2,tolhv,nmxh)
907 call sethlm (h1,h2,intype)
909 call copy(vxcp,vxc,lx1*ly1*lz1*nelv)
910 call copy(vycp,vyc,lx1*ly1*lz1*nelv)
911 if (ldim.eq.3)
call copy(vzcp,vzc,lx1*ly1*lz1*nelv)
917 call ophx(resbc(1,1),resbc(1,2),resbc(1,3),
918 $ vxcbc,vycbc,vzcbc,h1,h2)
919 call sub2(rw1,resbc(1,1),ntot1)
920 call sub2(rw2,resbc(1,2),ntot1)
921 if (ldim.eq.3)
call sub2(rw3,resbc(1,3),ntot1)
922 call ophinv (vxc,vyc,vzc,rw1,rw2,rw3,h1,h2,tolhv,nmxh)
923 call opadd2(vxc,vyc,vzc,vxcbc,vycbc,vzcbc)
933 call rzero (h1,ntot1)
934 call copy (h2,vtrans(1,1,1,1,ifield),ntot1)
935 call cmult (h2,dtinv,ntot1)
937 call opdiv (respr,vxc,vyc,vzc)
945 call esolver (respr,h1,h2,h2inv,intype)
948 call opgradt (rw1,rw2,rw3,respr)
949 call opbinv (dv1,dv2,dv3,rw1,rw2,rw3,h2inv)
950 call opadd2 (vxc,vyc,vzc,dv1,dv2,dv3)
952 call cmult2 (prc,respr,bd(1),ntot2)
954 call sub3(dvxc,vxcp,vxc,ntot1)
955 call sub3(dvyc,vycp,vyc,ntot1)
956 call sub3(dvzc,vzcp,vzc,ntot1)
961 $
write(6,
'(i2,i8,i4,1p4e13.4,a11)') idsess,istep,ictr,time,
962 $ dvxmax,dvymax,dvzmax,
' del-vol-vxy'
969 if (istep.eq.3) ifxyo = .true.
970 if (istep.eq.3)
call outpost(vxc,vyc,vzc,prc,t,
'cor')
971 if (istep.eq.3) ifxyo = .false.
983 real vxc(lx1,ly1,lz1,lelv)
984 $ , vyc(lx1,ly1,lz1,lelv)
985 $ , vzc(lx1,ly1,lz1,lelv)
986 $ , prc(lx2,ly2,lz2,lelv)
988 common /scrns/ resv1(lx1,ly1,lz1,lelv)
989 $ , resv2(lx1,ly1,lz1,lelv)
990 $ , resv3(lx1,ly1,lz1,lelv)
991 $ , respr(lx2*ly2*lz2,lelv)
992 $ , ta1(lx1*ly1*lz1*lelv)
993 $ , ta2(lx1*ly1*lz1*lelv)
994 $ , ta3(lx1*ly1*lz1*lelv)
995 $ , wa1(lx1*ly1*lz1*lelv)
996 $ , wa2(lx1*ly1*lz1*lelv)
997 $ , wa3(lx1*ly1*lz1*lelv)
998 common /scrvh/ h1(lx1,ly1,lz1,lelv)
999 $ , h2(lx1,ly1,lz1,lelv)
1000 COMMON /scrmg/ w1(lx1*ly1*lz1,lelv)
1001 $ , w2(lx1*ly1*lz1,lelv)
1002 $ , w3(lx1*ly1*lz1,lelv)
1004 common /cvflow_i/ icvflow,iavflow
1006 real vxcbc(lx1,ly1,lz1,lelv)
1007 real vycbc(lx1,ly1,lz1,lelv)
1008 real vzcbc(lx1,ly1,lz1,lelv)
1009 REAL vxcp (LX1,LY1,LZ1,LELV)
1010 REAL dvxc (LX1,LY1,LZ1,LELV)
1011 REAL vycp (LX1,LY1,LZ1,LELV)
1012 REAL dvyc (LX1,LY1,LZ1,LELV)
1013 REAL vzcp (LX1,LY1,LZ1,LELV)
1014 REAL dvzc (LX1,LY1,LZ1,LELV)
1015 common /cvflow_nn/ vxcbc,vycbc,vzcbc
1016 real resbc(lx1*ly1*lz1*lelv,ldim+1)
1021 n = lx1*ly1*lz1*nelv
1038 if (icvflow.eq.1)
call cdtp(respr,h1,rxm2,sxm2,txm2,1)
1039 if (icvflow.eq.2)
call cdtp(respr,h1,rym2,sym2,tym2,1)
1040 if (icvflow.eq.3)
call cdtp(respr,h1,rzm2,szm2,tzm2,1)
1047 CALL rzero (w1(1,iel),nxyz1)
1048 CALL rzero (w2(1,iel),nxyz1)
1050 $
CALL rzero (w3(1,iel),nxyz1)
1051 cb = cbc(ifc,iel,ifield)
1052 IF (cb(1:1).EQ.
'v'.and.intflag(ifc,iel).eq.1)
then
1054 $ (w1(1,iel),vxcbc(1,1,1,iel),unx(1,1,ifc,iel),ifc)
1056 $ (w2(1,iel),vycbc(1,1,1,iel),uny(1,1,ifc,iel),ifc)
1059 $ (w3(1,iel),vzcbc(1,1,1,iel),unz(1,1,ifc,iel),ifc)
1061 CALL add2 (w1(1,iel),w2(1,iel),nxyz1)
1063 $
CALL add2 (w1(1,iel),w3(1,iel),nxyz1)
1064 CALL faccl2 (w1(1,iel),area(1,1,ifc,iel),ifc)
1065 IF (cb(1:1).EQ.
'v'.and.intflag(ifc,iel).eq.1)
then
1066 CALL cmult(w1(1,iel),dtbd,nxyz1)
1068 CALL sub2 (respr(1,iel),w1(1,iel),nxyz1)
1076 call hmholtz (
'PRES',prc,respr,h1,h2,pmask,vmult,
1077 $ imesh,tolspl,nmxh,1)
1082 call opgrad (resv1,resv2,resv3,prc)
1083 if (ifaxis)
call col2 (resv2,omask,n)
1084 call opchsgn (resv1,resv2,resv3)
1086 if (icvflow.eq.1)
call add2col2(resv1,v1mask,bm1,n)
1087 if (icvflow.eq.2)
call add2col2(resv2,v2mask,bm1,n)
1088 if (icvflow.eq.3)
call add2col2(resv3,v3mask,bm1,n)
1091 call copy(vxcp,vxc,lx1*ly1*lz1*nelv)
1092 call copy(vycp,vyc,lx1*ly1*lz1*nelv)
1093 call copy(vzcp,vzc,lx1*ly1*lz1*nelv)
1096 call sethlm (h1,h2,intype)
1097 call ophx(resbc(1,1),resbc(1,2),resbc(1,3),
1098 $ vxcbc,vycbc,vzcbc,h1,h2)
1099 call sub2(resv1,resbc(1,1),n)
1100 call sub2(resv2,resbc(1,2),n)
1101 if (ldim.eq.3)
call sub2(resv3,resbc(1,3),n)
1102 call ophinv (vxc,vyc,vzc,resv1,resv2,resv3,h1,h2,tolhv,nmxh)
1103 call opadd2(vxc,vyc,vzc,vxcbc,vycbc,vzcbc)
1105 call sub3(dvxc,vxcp,vxc,n)
1106 call sub3(dvyc,vycp,vyc,n)
1107 call sub3(dvzc,vzcp,vzc,n)
1113 $
write(6,
'(i2,i8,i4,1p4e13.4,a11)') idsess,istep,ictr,time,
1114 $ dvxmax,dvymax,dvzmax,
' del-vol-vxy'
subroutine nekasgn(ix, iy, iz, e)
subroutine exitti(stringi, idata)
real *8 function dnekclock()
real *8 function dnekclock_sync()
subroutine facind(kx1, kx2, ky1, ky2, kz1, kz2, nx, ny, nz, iface)
subroutine dsset(nx, ny, nz)
subroutine scale(xyzl, nl)
subroutine hmholtz(name, u, rhs, h1, h2, mask, mult, imsh, tli, maxit, isd)
subroutine geom_reset(icall)
subroutine ophinv(o1, o2, o3, i1, i2, i3, h1, h2, tolh, nmxhi)
subroutine opzero(ux, uy, uz)
subroutine cadd(a, const, n)
subroutine col3(a, b, c, n)
subroutine invers2(a, b, n)
subroutine add2col2(a, b, c, n)
subroutine add2s2(a, b, c1, n)
subroutine sub3(a, b, c, n)
subroutine cmult(a, const, n)
function glsc2_ms(a, b, n)
subroutine compute_vol_soln_ms(vxc, vyc, vzc, prc)
subroutine plan4_vol_ms(vxc, vyc, vzc, prc)
subroutine field_eval(fieldout, fieldstride, fieldin)
subroutine exchange_points(dxf, dyf, dzf)
subroutine plan3_vol_ms(vxc, vyc, vzc, prc)
subroutine fix_surface_flux
subroutine rescale_x_ms(x, x0, x1)
subroutine neknek_xfer_fld(u, ui)
subroutine neknek_exchange
subroutine surface_flux_area(dq, aq, qx, qy, qz, e, f, w)
subroutine setup_int_neknek(dxf, dyf, dzf)
subroutine setup_neknek_wts
subroutine esolver(RES, H1, H2, H2INV, INTYPE)
subroutine opgradt(outx, outy, outz, inpfld)
subroutine cdtp(dtx, x, rm2, sm2, tm2, isd)
subroutine opbinv(out1, out2, out3, inp1, inp2, inp3, h2inv)
subroutine opdiv(outfld, inpx, inpy, inpz)
subroutine ophx(out1, out2, out3, inp1, inp2, inp3, h1, h2)
subroutine ctolspl(tolspl, respr)
subroutine opadd2(a1, a2, a3, b1, b2, b3)
subroutine opchsgn(a, b, c)
subroutine opgrad(out1, out2, out3, inp)
subroutine mappr(pm1, pm2, pa, pb)
subroutine redo_split_vis
subroutine outpost(v1, v2, v3, vp, vt, name3)
subroutine ssnormd(DV1, DV2, DV3)
subroutine faccl2(a, b, iface1)
subroutine faddcl3(a, b, c, iface1)
subroutine faccl3(a, b, c, iface1)
subroutine sethlm(h1, h2, intloc)
subroutine cmult2(A, B, CONST, N)