19 logical iffort( ldimt1,0:lpert)
20 $ , ifrest(0:ldimt1,0:lpert)
21 $ , ifprsl( ldimt1,0:lpert)
25 common /ctmp1/ work(lx1,ly1,lz1,lelv)
32 if(nio.eq.0)
write(6,*)
'set initial conditions'
45 call rzero(pr,nxyz2*nelt)
47 call rzero(t(1,1,1,1,ifld),ntott)
70 call slogic (iffort,ifrest,ifprsl,nfiles)
77 DO 100 ifield=2,nfield
78 IF (ifprsl(ifield,jp))
THEN
79 IF (nio.EQ.0)
WRITE(6,101) ifield
83 101
FORMAT(2x,
'Using PRESOLVE option for field',i2,
'.')
87 if (ifmhd) maxfld = npscal+3
91 if (nio.eq.0)
write(6,*)
'nekuic (1) for ifld ', ifield
99 do 200 ifield=2,maxfld
100 if (iffort(ifield,jp))
then
101 if (nio.eq.0)
write(6,*)
'call nekuic for ifld ', ifield
109 if (nio.eq.0)
write(6,*)
'nekuicP',ifield,jp,iffort(ifield,jp)
110 if (iffort(ifield,jp))
call nekuic
126 if (ifprsl(ifield,jp))
call prsolvv
131 if (iffort(ifield,jp))
then
132 if (nio.eq.0)
write(6,*)
'call nekuic for vel '
139 if (iffort(ifield,jp))
call nekuic
140 if (nio.eq.0)
write(6,*)
'ic vel pert:',iffort(1,jp),jp
145 ntotv = lx1*ly1*lz1*nelv
148 if (ifmvbd)
call opcopy (wx,wy,wz,vx,vy,vz)
149 if (ifmvbd.and..not.ifrest(0,jp))
call meshv (2)
155 if (.not.ifflow.and.ifheat)
then
157 DO 400 ifield=2,nfield
158 IF (ifadvc(ifield)) itest=1
172 if (nid.ne.0) time=0.0
183 if (ifflow) ifield = 1
184 call rone(work,ntotv)
186 call dssum (work,lx1,ly1,lz1)
187 call col2 (work,vmult,ntotv)
188 rdif =
glsum(work,ntotv)
190 rdif = (rdif-rtotg)/rtotg
191 if (abs(rdif).gt.1e-14)
then
192 if(nid.eq.0)
write(*,*)
'ERROR: dssum test has failed!',rdif
200 xxmax =
glmin(xm1,ntott)
201 yymax =
glmin(ym1,ntott)
202 zzmax =
glmin(zm1,ntott)
204 vxmax =
glmin(vx,ntotv)
205 vymax =
glmin(vy,ntotv)
206 vzmax =
glmin(vz,ntotv)
207 prmax =
glmin(pr,ntot2)
209 ntot = nxyz1*nelfld(2)
210 ttmax =
glmin(t ,ntott)
213 ntot = nxyz1*nelfld(i+2)
214 psmax(i) =
glmin(t(1,1,1,1,i+1),ntot)
218 write(6,19) xxmax,yymax,zzmax
219 19
format(
' xyz min ',5g13.5)
222 write(6,20) vxmax,vymax,vzmax,prmax,ttmax
223 20
format(
' uvwpt min',5g13.5)
225 if (ldimt-1.gt.0)
then
226 if (nio.eq.0)
write(6,21) (psmax(i),i=1,ldimt-1)
227 21
format(
' PS min ',50g13.5)
231 xxmax =
glmax(xm1,ntott)
232 yymax =
glmax(ym1,ntott)
233 zzmax =
glmax(zm1,ntott)
235 vxmax =
glmax(vx,ntotv)
236 vymax =
glmax(vy,ntotv)
237 vzmax =
glmax(vz,ntotv)
238 prmax =
glmax(pr,ntot2)
240 ntot = nxyz1*nelfld(2)
241 ttmax =
glmax(t ,ntott)
244 ntot = nxyz1*nelfld(i+2)
245 psmax(i) =
glmax(t(1,1,1,1,i+1),ntot)
249 write(6,16) xxmax,yymax,zzmax
250 16
format(
' xyz max ',5g13.5)
254 write(6,17) vxmax,vymax,vzmax,prmax,ttmax
255 17
format(
' uvwpt max',5g13.5)
258 if (ldimt-1.gt.0)
then
260 write(6,18) (psmax(i),i=1,ldimt-1)
261 18
format(
' PS max ',50g13.5)
265 if (iflomach .and. ifdp0dt)
then
266 if (p0th.le.0)
call exitti(
'Invalid thermodynamic pressure!$',1)
267 if (gamma0.lt.0)
call exitti(
'Invalid gamma0!$',1)
270 if (ifrest(0,jp))
then
271 if (nio.eq.0)
write(6,*)
'Restart: recompute geom. factors.'
276 write(6,*)
'done :: set initial conditions'
283 subroutine slogic (iffort,ifrest,ifprsl,nfiles)
293 logical iffort( ldimt1,0:lpert)
294 $ , ifrest(0:ldimt1,0:lpert)
295 $ , ifprsl( ldimt1,0:lpert)
297 character*132 line,fname,cdum
299 character*1 line1(132)
300 equivalence(line1,line)
305 if (ifmhd) nfldt = nfield+1
308 ifrest(0,jp) = .false.
310 iffort(ifld,jp) = .true.
311 ifrest(ifld,jp) = .false.
312 ifprsl(ifld,jp) = .false.
324 IF (
indx1(line,
'PRESOLV',7).NE.0)
THEN
326 CALL blank(initc(iline),132)
328 CALL csplit(cdum,line,
' ',1)
330 IF (
ltrunc(line,132).EQ.0)
THEN
331 IF (nio.EQ.0)
WRITE(6,700)
332 700
FORMAT(/,2x,
'Presolve options: ALL')
334 DO 800 ifield=1,nfldt
335 ifprsl(ifield,jp) = .true.
336 iffort(ifield,jp) = .false.
342 IF (nio.EQ.0)
WRITE(6,810) (line1(l),l=1,ll)
343 810
FORMAT(/,2x,
'Presolve options: ',132a1)
346 ifprsl(1,jp) = .true.
347 iffort(1,jp) = .false.
351 ifprsl(2,jp) = .true.
352 iffort(2,jp) = .false.
355 DO 900 ifield=3,npscal+2
359 ifprsl(ifield,jp) = .true.
360 iffort(ifield,jp) = .false.
372 if (ifpert) jp=iline-1
374 IF (
ltrunc(line,132).NE.0)
THEN
380 IF (nio.EQ.0.)
WRITE(6,1010) line
381 1010
FORMAT(1x,
'Checking restart options: ',a132)
386 call sioflag(ndumps,fname,line)
389 ifrest(0,jp) = .true.
392 iffort(1,jp) = .false.
393 ifprsl(1,jp) = .false.
394 ifrest(1,jp) = .true.
397 iffort(2,jp) = .false.
398 ifprsl(2,jp) = .false.
399 ifrest(2,jp) = .true.
401 do 1900 ifield=3,nfldt
403 if (ifgtps(ifield-2))
then
404 iffort(ifield,jp) = .false.
405 ifprsl(ifield,jp) = .false.
406 ifrest(ifield,jp) = .true.
441 parameter(lxyzr=lxr*lyr*lzr)
442 parameter(lxyzt=lx1*ly1*lz1*lelt)
443 parameter(lpsc9=ldimt+9)
445 common /scrcg/ pm1(lx1*ly1*lz1,lelv)
446 COMMON /scrns/ sdump(lxyzt,7)
450 COMMON /ctmp1/ tdump(lxyzr,lpsc9)
453 REAL SDMP2(LXYZT,LDIMT)
458 character*1 excoder1(30)
459 equivalence(excoder,excoder1)
463 character*1 fname1(132)
464 equivalence(fname1,fname)
468 character*1 hname1(132)
469 equivalence(hname,hname1)
470 equivalence(hname,hnami )
476 integer iposx,iposz,iposu,iposw,iposp,ipost,ipsps(ldimt1)
478 logical ifbytsw, if_byte_swap_test
485 if(nfiles.lt.1)
return
487 if(nio.eq.0)
write(6,*)
'Reading checkpoint data '
493 call sioflag(ndumps,fname,initc(ifile))
494 call mfi(fname,ifile)
496 call bcast(time,wdsize)
502 if (param(67).lt.1.0)
then
508 do 6000 ifile=1,nfiles
509 call sioflag(ndumps,fname,initc(ifile))
514 open (unit=91,
file=fname,status=
'old',err=500)
517 call izero (hnami,20)
518 call chcopy(hname1,fname,len)
520 open (unit=91,
file=hname
521 $ ,form=
'unformatted',status=
'old',err=500)
524 if(ierr.ne.0)
goto 500
531 if (.not.ifok)
goto 5000
537 DO 1000 idump=1,ndumps
543 if(mod(param(67),1.0).eq.0)
then
544 if(nelgt.lt.10000)
then
545 read(91,91,err=10,
end=10)
546 $ neltr,nxr,nyr,nzr,rstime,istepr,(excoder1(i),i=1,30)
547 91
format(4i4,1x,g13.4,i5,1x,30a1)
550 read(91,92,err=10,
end=10)
551 $ neltr,nxr,nyr,nzr,rstime,istepr,(excoder1(i),i=1,30)
552 92
format(i10,3i4,1p1e18.9,i9,1x,30a1)
556 read(91,
'(A132)',err=10,
end=10) header
558 & neltr,nxr,nyr,nzr,rstime,istepr,excoder
562 if(mod(param(67),1.0).eq.0)
then
564 if(ierr.ne.0)
goto 10
566 if (nelgt.lt.10000) icase = 1
572 read(hname,
'(4i4,1x,g13.4,i5,1x,30a1)',
574 $ neltr,nxr,nyr,nzr,rstime,istepr,
575 $ (excoder1(i),i=1,30)
578 read(hname,
'(i10,3i4,1P1e18.9,i9,1x,30a1)',
580 $ neltr,nxr,nyr,nzr,rstime,istepr,
581 $ (excoder1(i),i=1,30)
593 if(ierr.ne.0)
goto 10
595 & neltr,nxr,nyr,nzr,rstime,istepr,excoder
599 if(ierr.ne.0)
goto 10
601 if(ierr.ne.0)
goto 10
607 write(6,*)
'Read mode: ', param(67)
608 write(6,333)
'neltr,nxr,nyr,nzr: ', neltr,nxr,nyr,nzr
610 call chcopy(mesg(5),excoder1,20)
613 10
call err_chk(ierr,
'Error reading restart header. Abort.$')
622 call chcopy(excoder1,mesg(5),20)
630 $
'ABORT: Attempt to map from',i3,
631 $
' to N=',i3,
'.',/,2x,
632 $
'NEK5000 currently supports mapping from N+6 or less.'
633 $ ,/,2x,
'Increase N or LXR in IC.FOR.')
655 IF (excoder1(i).EQ.
'X')
THEN
665 IF (excoder1(i).EQ.
'U')
THEN
675 IF (excoder1(i).EQ.
'P')
THEN
679 IF (excoder1(i).EQ.
'T')
THEN
683 IF(mod(param(67),1.0).eq.0.0)
THEN
685 if (0.lt.i1.and.i1.lt.10)
then
686 if (i1.le.ldimt1)
then
690 if (nid.eq.0)
write(6,2) i1,i,excoder1(i)
691 2
format(2i4,a1,
' PROBLEM W/ RESTART DATA')
695 IF(excoder1(i).EQ.
'S')
THEN
696 READ(excoder1(i+1),
'(I1)') nps1
697 READ(excoder1(i+2),
'(I1)') nps0
708 IF (nps.GT.(ldimt-1))
THEN
711 &
'ERROR: restart file has a NSPCAL > LDIMT'
713 &
'Change LDIMT in SIZE'
719 if (nio.eq.0)
write(6,61) (fname1(i),i=1,lname)
720 if (nio.eq.0)
write(6,62)
721 $ iposu,iposv,iposw,iposp,ipost,nps,nouts
722 61
FORMAT(/,2x,
'Restarting from file ',132a1)
723 62
FORMAT(2x,
'Columns for restart data U,V,W,P,T,S,N: ',7i4)
726 if (iposx.eq.0) ifgetx=.false.
727 if (iposy.eq.0) ifgetx=.false.
728 if (iposz.eq.0) ifgetz=.false.
729 if (iposu.eq.0) ifgetu=.false.
730 if (iposv.eq.0) ifgetu=.false.
731 if (iposw.eq.0) ifgetw=.false.
732 if (iposp.eq.0) ifgetp=.false.
733 if (ipost.eq.0) ifgett=.false.
735 if (ipsps(i).eq.0) ifgtps(i)=.false.
748 &
READ(91,
'(6G11.4)',
END=15)(CDUMP,I=1,NELTR)
753 if(.not.ifok)
goto 1600
764 nelrr = min(nelgt,neltr)
769 IF (mod(ieg,10000).EQ.1)
WRITE(6,*)
'Reading',ieg
771 READ(91,*,err=70,
END=70)
772 $ ((tdump(ixyz,ii),ii=1,nouts),ixyz=1,nxyzr)
777 write(6,*)
"Error reading xyz restart data"
789 IF (.NOT.ifok)
GOTO 1600
799 $ (sdump(1,1),tdump(1,iposx),ieg,nxr,nyr,nzr,ifbytsw)
801 $ (sdump(1,2),tdump(1,iposy),ieg,nxr,nyr,nzr,ifbytsw)
803 $ (sdump(1,3),tdump(1,iposz),ieg,nxr,nyr,nzr,ifbytsw)
805 $ (sdump(1,4),tdump(1,iposu),ieg,nxr,nyr,nzr,ifbytsw)
807 $ (sdump(1,5),tdump(1,iposv),ieg,nxr,nyr,nzr,ifbytsw)
809 $ (sdump(1,6),tdump(1,iposw),ieg,nxr,nyr,nzr,ifbytsw)
811 $ (sdump(1,7),tdump(1,iposp),ieg,nxr,nyr,nzr,ifbytsw)
813 $ (sdmp2(1,1),tdump(1,ipost),ieg,nxr,nyr,nzr,ifbytsw)
817 if (ifgtps(ips))
call mapdmp(sdmp2(1,ips+1)
818 $ ,tdump(1,ipsps(ips)),ieg,nxr,nyr,nzr,ifbytsw)
828 if (mid.eq.nid) nerr = nerr+1
837 if (ifmhd.and.ifile.eq.2)
then
838 if (ifgetu)
call copy(bx,sdump(1,4),ntott)
839 if (ifgetu)
call copy(by,sdump(1,5),ntott)
840 if (ifgetw)
call copy(bz,sdump(1,6),ntott)
842 if (nio.eq.0)
write(6,*)
'getting restart pressure'
844 call copy( pm,sdump(1,7),ntotv)
847 iiel = (iel-1)*nxyz1+1
848 call map12 (pm(1,1,1,iel),sdump(iiel,7),iel)
852 if (ifaxis.and.ifgett)
853 $
call copy(t(1,1,1,1,2),sdmp2(1,1),ntott)
854 elseif (ifpert.and.ifile.ge.2)
then
856 if (ifgetu)
call copy(vxp(1,j),sdump(1,4),ntotv)
857 if (ifgetu)
call copy(vyp(1,j),sdump(1,5),ntotv)
858 if (ifgetw)
call copy(vzp(1,j),sdump(1,6),ntotv)
860 if (nio.eq.0)
write(6,*)
'getting restart pressure'
862 call copy(prp(1,j),sdump(1,7),ntotv)
867 call map12 (prp(ie2,j),sdump(ie1,7),ie)
871 if (ifgett)
call copy(tp(1,1,j),sdmp2(1,1),ntott)
875 $
call copy(tp(1,ips+1,j),sdmp2(1,ips+1),ntott)
879 if (ifgetx)
call copy(xm1,sdump(1,1),ntott)
880 if (ifgetx)
call copy(ym1,sdump(1,2),ntott)
881 if (ifgetz)
call copy(zm1,sdump(1,3),ntott)
882 if (ifgetu)
call copy(vx ,sdump(1,4),ntotv)
883 if (ifgetu)
call copy(vy ,sdump(1,5),ntotv)
884 if (ifgetw)
call copy(vz ,sdump(1,6),ntotv)
885 if (ifgetp)
call copy(pm1,sdump(1,7),ntotv)
886 if (ifgett)
call copy(t,sdmp2(1,1),ntott)
890 $
call copy(t(1,1,1,1,i+1),sdmp2(1,i+1),ntott)
896 if (ifgtim) time=rstime
904 IF (idump.EQ.1.AND.nid.EQ.0)
THEN
906 write(6,1701) ieg,ixyz
908 $ ((tdump(jxyz,ii),ii=1,nouts),jxyz=ixyz-1,ixyz)
909 1700
FORMAT(5x,
'WARNING: No data read in for file ',a132)
910 1701
FORMAT(5x,
'Failed on element',i4,
', point',i5,
'.')
911 1702
FORMAT(5x,
'Last read dump:',/,5g15.7)
912 write(6,*) nid,
'call exitt 1702a',idump
914 ELSEIF (idump.EQ.1)
THEN
915 write(6,*) nid,
'call exitt 1702b',idump
919 IF (nio.EQ.0)
WRITE(6,1800) idump
920 1800
FORMAT(2x,
'Successfully read data from dump number',i3,
'.')
923 if (nid.eq.0)
close(unit=91)
927 call err_chk(ierr,
'Error closing restart file in restart$')
933 if (nid.eq.0)
write(6,5001) fname
934 5001
FORMAT(2x,
' ******* ERROR ******* '
935 $ ,/,2x,
' ******* ERROR ******* '
936 $ ,/,2x,
' Could not open restart file:'
938 $ ,//,2x,
'Quitting in routine RESTART.')
942 IF (nio.EQ.0)
WRITE(6,5001) hname
962 character*132 rsopts,fname
967 logical ifdeft,ifanyc
968 CHARACTER*132 RSOPT ,LINE
969 CHARACTER*1 RSOPT1(132),LINE1(132)
970 equivalence(rsopt1,rsopt)
971 equivalence(line1,line)
980 call csplit(fname,rsopt,
' ',1)
982 if (
indx1(fname,
'.',1).eq.0)
then
986 fname(len1:len4)=
'.fld'
1011 CALL capit(rsopt,132)
1013 IF (
ltrunc(rsopt,132).NE.0)
THEN
1023 CALL blank(line,132)
1024 CALL chcopy(line,rsopt1(it1),it8)
1025 IF (ifgtrl(ttime,line))
THEN
1031 CALL blank(rsopt1(ito),ita)
1033 it1=
indx1(line,
' ',1)
1035 CALL chcopy(rsopt1(ito),line1(it1),itb)
1044 IF (if3d) ifgetz=.true.
1051 IF (if3d) ifgetw=.true.
1077 if (ifgtrl(tdumps,rsopt)) ndumps=int(tdumps)
1083 IF (if3d) ifgetz=.true.
1086 IF (ifadvc(i)) ifanyc=.true.
1088 IF (ifflow.OR.ifanyc)
THEN
1090 IF (if3d) ifgetw=.true.
1092 if (ifflow) ifgetp=.true.
1093 if (ifheat) ifgett=.true.
1108 subroutine mapdmp(sdump,tdump,ieg,nxr,nyr,nzr,if_byte_sw)
1115 parameter(lxyz1=lx1*ly1*lz1)
1116 parameter(lxr=lx1+6)
1117 parameter(lyr=ly1+6)
1118 parameter(lzr=lz1+6)
1119 parameter(lxyzr=lxr*lyr*lzr)
1121 REAL SDUMP(LXYZ1,LELT)
1135 if(ierr.ne.0)
call exitti(
"Error in mapdmp")
1136 IF (nxr.EQ.lx1.AND.nyr.EQ.ly1.AND.nzr.EQ.lz1)
THEN
1137 CALL copy4r(sdump(1,ieg),tdump,nxyz)
1140 call mapab4r(sdump(1,ieg),tdump,nxr,1)
1148 mtype=3333+
gllel(ieg)
1151 IF (nid.EQ.0.AND.jnid.NE.0)
THEN
1153 CALL csend(mtype,tdump,le1,jnid,nullpid)
1154 CALL crecv2(mtype,dummy,le1,jnid)
1155 CALL csend(mtype,tdump,len,jnid,nullpid)
1156 ELSEIF (nid.NE.0.AND.jnid.EQ.nid)
THEN
1158 CALL crecv2(mtype,dummy,le1,0)
1159 CALL csend(mtype,tdump,le1,0,nullpid)
1160 CALL crecv2(mtype,tdump,len,0)
1166 IF (jnid.EQ.nid)
THEN
1169 IF (nxr.EQ.lx1.AND.nyr.EQ.ly1.AND.nzr.EQ.lz1)
THEN
1170 CALL copy4r(sdump(1,ie),tdump,nxyz)
1172 call mapab4r(sdump(1,ie),tdump,nxr,1)
1175 call err_chk(ierr,
'Error using byte_reverse in mapdmp.$')
1194 parameter(lxr=lx1+6)
1195 parameter(lyr=ly1+6)
1196 parameter(lzr=lz1+6)
1197 parameter(lxyzr=lxr*lyr*lzr)
1198 parameter(lxyz1=lx1*ly1*lz1)
1199 dimension x(lx1,ly1,lz1,nel)
1200 dimension y(nxr,nxr,nxr,nel)
1202 common /ctmp0/ xa(lxyzr) ,xb(lx1,ly1,lzr) ,xc(lxyzr)
1203 $ , zgmr(lxr) ,wgtr(lxr)
1204 common /ctmpab/ ires(lxr,lxr) ,itres(lxr,lxr)
1212 if (nxr.gt.lxr)
then
1213 if (nid.eq.0)
write(6,20) nxr,lx1
1215 $
'ABORT: Attempt to map from',i3,
1216 $
' to N=',i3,
'.',/,2x,
1217 $
'NEK5000 currently supports mapping from N+6 or less.'
1218 $ ,/,2x,
'Increase N')
1227 IF (nxr.NE.nold)
THEN
1229 CALL zwgll (zgmr,wgtr,nxr)
1230 CALL igllm (ires,itres,zgmr,zgm1,nxr,lx1,nxr,lx1)
1231 IF (nio.EQ.0)
WRITE(6,10) nxr,lx1
1232 10
FORMAT(2x,
'Mapping restart data from Nold=',i2
1233 $ ,
' to Nnew=',i2,
'.')
1237 CALL mxm (ires,lx1,y(1,1,1,ie),nxr,xa,nyzr)
1239 izoff = 1 + (iz-1)*lx1*nxr
1240 CALL mxm (xa(izoff),lx1,itres,nxr,xb(1,1,iz),ly1)
1243 CALL mxm (xb,nxy1,itres,nzr,x(1,1,1,ie),lz1)
1245 CALL copy(x(1,1,1,ie),xb,nxy1)
1266 parameter(lxr=lx1+6)
1267 parameter(lyr=ly1+6)
1268 parameter(lzr=lz1+6)
1269 parameter(lxyzr=lxr*lyr*lzr)
1270 parameter(lxyz1=lx1*ly1*lz1)
1271 real*4 x(lx1,ly1,lz1,nel)
1272 REAL Y(NXR,NXR,NXR,NEL)
1274 common /ctmp0/ xa(lxyzr) ,xb(lx1,ly1,lzr) ,xc(lxyzr)
1275 $ , zgmr(lxr) ,wgtr(lxr)
1276 common /ctmpa4/ ires(lxr,lxr) ,itres(lxr,lxr)
1284 if (nxr.gt.lxr)
then
1285 if (nid.eq.0)
write(6,20) nxr,lx1
1287 $
'ABORT: Attempt to map from',i3,
1288 $
' to N=',i3,
'.',/,2x,
1289 $
'NEK5000 currently supports mapping from N+6 or less.'
1290 $ ,/,2x,
'Increase N')
1300 IF (nxr.NE.nold)
THEN
1302 CALL zwgll (zgmr,wgtr,nxr)
1303 CALL igllm (ires,itres,zgmr,zgm1,nxr,lx1,nxr,lx1)
1304 IF (nio.EQ.0)
WRITE(6,10) nxr,lx1
1305 10
FORMAT(2x,
'Mapping restart data from Nold=',i2
1306 $ ,
' to Nnew=',i2,
'.')
1310 call copy4r(xc,y(1,1,1,ie),nxyzr)
1311 CALL mxm (ires,lx1,xc,nxr,xa,nyzr)
1313 izoff = 1 + (iz-1)*lx1*nxr
1314 CALL mxm (xa(izoff),lx1,itres,nxr,xb(1,1,iz),ly1)
1317 CALL mxm (xb,nxy1,itres,nzr,x(1,1,1,ie),lz1)
1319 CALL copy(x(1,1,1,ie),xb,nxy1)
1331 data n10 /
'0123456789' /
1347 if (s1(i:i2).eq.s2(1:l2))
then
1365 IF (s1(i:i2).EQ.s2(1:l2))
THEN
1379 CHARACTER*1 s1(132),s2(132)
1402 CHARACTER*132 S0,S1,S2
1420 CHARACTER*1 STRING(132)
1424 string(j)=string(ij)
1434 CHARACTER*1 STRING(132)
1436 IF (string(1).NE.
' ')
return
1440 IF (string(i).NE.
' ')
THEN
1443 string(j)=string(ij)
1472 IF (vnrml8.GT.0.) ifzero = .false.
1475 DO 100 ifield=2,nfield
1477 IF (iftmsh(ifield)) imesh = 2
1479 IF (tnrml8(ifield).GT.0.) ifzero = .false.
1497 LOGICAL IFSAV1,IFSAV2(LDIMT1)
1499 IF (nio.EQ.0)
WRITE(6,*)
' '
1500 IF (nio.EQ.0)
WRITE(6,*)
'Conduction pre-solver activated'
1508 DO 100 ifield=2,nfield
1509 ifsav2(ifield) = ifadvc(ifield)
1510 ifadvc(ifield) = .false.
1516 IF(nio.EQ.0)
WRITE(6,*)
'Steady conduction/passive scalar problem'
1526 DO 300 ifield=2,nfield
1527 ifadvc(ifield) = ifsav2(ifield)
1545 LOGICAL IFSAV1,IFSAV2
1547 IF (nio.EQ.0)
WRITE(6,*)
' '
1548 IF (nio.EQ.0)
WRITE(6,*)
'Velocity pre-solver activated'
1552 IF (param(60).NE.0.0)
THEN
1554 CALL cfill(vx,small,ntotv)
1555 CALL cfill(vy,small,ntotv)
1556 CALL cfill(vz,small,ntotv)
1566 $ /,2x,
'ERROR: Steady Stokes Flow initial condition cannot'
1567 $,/,2x,
' be computed using the splitting formulation.'
1568 $,/,2x,
' Either compute using UZAWA, or remove PRESOLVE'
1569 $,/,2x,
' request for velocity.'
1571 $,/,2x,
' ABORTING IN PRSOLVV.')
1576 ifsav2 = ifadvc(ifield)
1578 ifadvc(ifield) = .false.
1583 IF (nio.EQ.0)
WRITE (6,*)
'Steady Stokes problem'
1585 IF (.NOT.ifsplit)
CALL fluid (igeom)
1592 ifadvc(ifield) = ifsav2
1609 nel = nelfld(ifield)
1617 call useric (i,j,k,eg)
1619 if (ifield.eq.1)
then
1623 elseif (ifield.eq.ifldmhd .and. ifmhd)
then
1628 t(i,j,k,e,ifield-1) = temp
1631 ijke = i+lx1*((j-1)+ly1*((k-1) + lz1*(e-1)))
1632 if (ifield.eq.1)
then
1637 tp(ijke,ifield-1,jp) = temp
1652 int=ichar(lettrs(i))
1653 IF(int.GE.97 .AND. int.LE.122)
THEN
1683 ifldw=
indx1(work,
' ',1)-1
1685 IF (ifldw.GT.0)
THEN
1686 WRITE(fmat,10) ifldw
1687 10
FORMAT(
'(F',i3.3,
'.0)')
1688 READ(work,fmat,err=100,
END=100) tval
1715 ifldw=
indx1(work,
' ',1)-1
1717 IF (ifldw.GT.0)
THEN
1718 WRITE(fmat,10) ifldw
1719 10
FORMAT(
'(F',i3.3,
'.0)')
1720 READ(work,fmat,err=100,
END=100) tval
1739 n = lx1*ly1*lz1*nelfld(ifield)
1741 call cmult(tt,eps,n)
1742 call dssum(tt,lx1,ly1,lz1)
1750 x(i) = cos(1000.*y(i))
1756 character*1 x(0:3,1),tmp0,tmp1
1757 character*1 in (0:3), out(0:3)
1759 equivalence(in ,in4 )
1760 equivalence(out,out4)
1775 write(6,*)
'swap:',i,in4,out4
1784 real*4 bytetest,test2
1788 test_pattern = 6.54321
1790 etest = abs(test_pattern-bytetest)
1796 if (nid.eq.0 .and. loglevel.gt.2)
1812 COMMON /scruz/ xm3(lx1,ly1,lz1,lelt)
1813 $ , ym3(lx1,ly1,lz1,lelt)
1814 $ , zm3(lx1,ly1,lz1,lelt)
1817 if(nio.eq.0)
write(6,*)
'regenerate geometry data',icall
1819 ntot = lx1*ly1*lz1*nelt
1821 if (lx3.eq.lx1)
then
1822 call copy(xm3,xm1,ntot)
1823 call copy(ym3,ym1,ntot)
1824 call copy(zm3,zm1,ntot)
1831 CALL geom1 (xm3,ym3,zm3)
1841 xc(1,ie) = xm1(1 ,1 ,1 ,ie)
1842 xc(2,ie) = xm1(lx1,1 ,1 ,ie)
1843 xc(3,ie) = xm1(lx1,ly1,1 ,ie)
1844 xc(4,ie) = xm1(1 ,ly1,1 ,ie)
1845 xc(5,ie) = xm1(1 ,1 ,lz1,ie)
1846 xc(6,ie) = xm1(lx1,1 ,lz1,ie)
1847 xc(7,ie) = xm1(lx1,ly1,lz1,ie)
1848 xc(8,ie) = xm1(1 ,ly1,lz1,ie)
1850 yc(1,ie) = ym1(1 ,1 ,1 ,ie)
1851 yc(2,ie) = ym1(lx1,1 ,1 ,ie)
1852 yc(3,ie) = ym1(lx1,ly1,1 ,ie)
1853 yc(4,ie) = ym1(1 ,ly1,1 ,ie)
1854 yc(5,ie) = ym1(1 ,1 ,lz1,ie)
1855 yc(6,ie) = ym1(lx1,1 ,lz1,ie)
1856 yc(7,ie) = ym1(lx1,ly1,lz1,ie)
1857 yc(8,ie) = ym1(1 ,ly1,lz1,ie)
1859 zc(1,ie) = zm1(1 ,1 ,1 ,ie)
1860 zc(2,ie) = zm1(lx1,1 ,1 ,ie)
1861 zc(3,ie) = zm1(lx1,ly1,1 ,ie)
1862 zc(4,ie) = zm1(1 ,ly1,1 ,ie)
1863 zc(5,ie) = zm1(1 ,1 ,lz1,ie)
1864 zc(6,ie) = zm1(lx1,1 ,lz1,ie)
1865 zc(7,ie) = zm1(lx1,ly1,lz1,ie)
1866 zc(8,ie) = zm1(1 ,ly1,lz1,ie)
1870 write(6,*)
'done :: regenerate geometry data',icall
1882 real u(lx1,ly1,lz1,lelt)
1891 ntot = lx1*ly1*lz1*nelv
1892 call dssum(u,lx1,ly1,lz1)
1893 call col2 (u,vmult,ntot)
1896 ntot = lx1*ly1*lz1*nelt
1897 call dssum(u,lx1,ly1,lz1)
1898 call col2 (u,tmult,ntot)
1910 real x3(lx3,ly3,lz3,lelt)
1911 real x1(lx1,ly1,lz1,lelt)
1916 call map13 (x3(1,1,1,e),x1(1,1,1,e),e)
1930 real u(lx1*ly1*lz1,1)
1933 parameter(lrbs=20*lx1*ly1*lz1*lelt)
1934 common /vrthov/ w2(lrbs)
1937 integer e,ei,eg,msg_id(lelt)
1946 if (wdsizr.eq.8) nxyzr = 2*nxyzr
1949 num_recv = nxyzr*nelt
1950 num_avail =
size(wk)
1951 call lim_chk(num_recv,num_avail,
' ',
' ',
'mfi_gets a')
1954 if (nid.eq.pid0r)
then
1955 i8tmp = int(nxyzr,8)*int(nelr,8)
1956 nread = i8tmp/int(lrbs,8)
1957 if (mod(i8tmp,int(lrbs,8)).ne.0) nread = nread + 1
1958 if(ifmpiio) nread =
iglmax(nread,1)
1962 call lim_chk(nxyzr*nelrr,lrbs,
' ',
' ',
'mfi_gets b')
1968 msg_id(e) =
irecv(e,wk(l),len)
1974 if (nid.eq.pid0r.and.np.gt.1)
then
1979 nelrr = nelr - (nread-1)*nelrr
1980 if(nelrr.lt.0) nelrr = 0
1996 if(ierr.ne.0)
call rzero(w2(l),len)
1997 call csend(jeln,w2(l),len,jnid,0)
2002 elseif (np.eq.1)
then
2018 if (wdsizr.eq.8) nxyzw = 2*nxyzw
2025 elseif(np.eq.1)
then
2028 if (if_byte_sw)
then
2029 if(wdsizr.eq.8)
then
2035 if (nxr.eq.lx1.and.nyr.eq.ly1.and.nzr.eq.lz1)
then
2036 if (wdsizr.eq.4)
then
2037 call copy4r(u(1,ei),wk(l ),nxyzr)
2039 call copy (u(1,ei),wk(l ),nxyzr)
2042 if (wdsizr.eq.4)
then
2043 call mapab4r(u(1,ei),wk(l ),nxr,1)
2045 call mapab (u(1,ei),wk(l ),nxr,1)
2052 100
call err_chk(ierr,
'Error reading restart data,in gets.$')
2063 real u(lx1*ly1*lz1,1),v(lx1*ly1*lz1,1),w(lx1*ly1*lz1,1)
2067 parameter(lrbs=20*lx1*ly1*lz1*lelt)
2068 common /vrthov/ w2(lrbs)
2071 integer e,ei,eg,msg_id(lelt)
2076 nxyzr = ldim*nxr*nyr*nzr
2078 if (wdsizr.eq.8) nxyzr = 2*nxyzr
2081 num_recv = nxyzr*nelt
2082 num_avail =
size(wk)
2083 call lim_chk(num_recv,num_avail,
' ',
' ',
'mfi_getv a')
2086 if(nid.eq.pid0r)
then
2087 i8tmp = int(nxyzr,8)*int(nelr,8)
2088 nread = i8tmp/int(lrbs,8)
2089 if (mod(i8tmp,int(lrbs,8)).ne.0) nread = nread + 1
2090 if(ifmpiio) nread =
iglmax(nread,1)
2094 call lim_chk(nxyzr*nelrr,lrbs,
' ',
' ',
'mfi_getv b')
2101 msg_id(e) =
irecv(e,wk(l),len)
2107 if (nid.eq.pid0r .and. np.gt.1)
then
2111 nelrr = nelr - (nread-1)*nelrr
2112 if(nelrr.lt.0) nelrr = 0
2128 if(ierr.ne.0)
call rzero(w2(l),len)
2129 call csend(jeln,w2(l),len,jnid,0)
2134 elseif (np.eq.1)
then
2148 nxyzv = ldim*nxr*nyr*nzr
2150 if (wdsizr.eq.8) nxyzw = 2*nxyzw
2157 else if(np.eq.1)
then
2160 if (if_byte_sw)
then
2161 if(wdsizr.eq.8)
then
2167 if (nxr.eq.lx1.and.nyr.eq.ly1.and.nzr.eq.lz1)
then
2168 if (wdsizr.eq.4)
then
2169 call copy4r(u(1,ei),wk(l ),nxyzr)
2170 call copy4r(v(1,ei),wk(l+ nxyzw),nxyzr)
2172 $
call copy4r(w(1,ei),wk(l+2*nxyzw),nxyzr)
2174 call copy (u(1,ei),wk(l ),nxyzr)
2175 call copy (v(1,ei),wk(l+ nxyzw),nxyzr)
2177 $
call copy (w(1,ei),wk(l+2*nxyzw),nxyzr)
2180 if (wdsizr.eq.4)
then
2181 call mapab4r(u(1,ei),wk(l ),nxr,1)
2182 call mapab4r(v(1,ei),wk(l+ nxyzw),nxr,1)
2184 $
call mapab4r(w(1,ei),wk(l+2*nxyzw),nxr,1)
2186 call mapab (u(1,ei),wk(l ),nxr,1)
2187 call mapab (v(1,ei),wk(l+ nxyzw),nxr,1)
2189 $
call mapab (w(1,ei),wk(l+2*nxyzw),nxr,1)
2195 100
call err_chk(ierr,
'Error reading restart data, in getv.$')
2204 if (
indx2(hdr,132,
'#std',4).eq.1)
then
2207 if (nio.eq.0)
write(6,80) hdr
2208 if (nio.eq.0)
write(6,80)
'NONSTD HDR, parse_hdr, abort.'
2226 logical if_press_mesh
2229 if_press_mesh = .false.
2231 read(hdr,*,iostat=ierr) dummy
2232 $ , wdsizr,nxr,nyr,nzr,nelr,nelgr,timer,istpr
2235 $ , p0thr, if_press_mesh
2238 read(hdr,*,iostat=ierr) dummy
2239 $ , wdsizr,nxr,nyr,nzr,nelr,nelgr,timer,istpr
2246 read(hdr,*,err=99) dummy
2247 $ , wdsizr,nxr,nyr,nzr,nelr,nelgr,timer,istpr
2253 if_full_pres = .false.
2254 if (.not.ifsplit) if_full_pres = if_press_mesh
2262 ifgtpsr(k) = .false.
2268 if (rdcode1(i).eq.
'X') ifgetxr = .true.
2269 if (rdcode1(i).eq.
'U') ifgetur = .true.
2270 if (rdcode1(i).eq.
'P') ifgetpr = .true.
2271 if (rdcode1(i).eq.
'T') ifgettr = .true.
2272 if (rdcode1(i).eq.
'S')
then
2273 read(rdcode1(i+1),
'(I1)') nps1
2274 read(rdcode1(i+2),
'(I1)') nps0
2277 if(npsr.gt.ldimt-1) nps=ldimt-1
2286 50
if (nps.lt.npsr)
then
2289 &
'WARNING: restart file has a NSPCAL > LDIMT',
2290 &
'read only part of the fld-data!'
2294 if (nps.lt.npscal)
then
2297 &
'WARNING: NPSCAL read from restart file differs from ',
2298 &
'currently used NPSCAL!'
2303 if (p0thr.gt.0) p0th = p0thr
2321 character*1 rlcode(20)
2324 read(hdr,1) wdsizr,nxr,nyr,nzr,nelr,nelgr,timer,istpr
2326 $ , (rlcode(k),k=1,20)
2327 1
format(4x,i2,3i3,2i10,e20.13,i9,2i6,20a1)
2329 if (nid.eq.0)
write(6,*)
'WARNING: reading depreacted header!'
2339 ifgtpsr(k) = .false.
2342 if (rlcode(1).eq.
'X') ifgetxr = .true.
2343 if (rlcode(2).eq.
'U') ifgetur = .true.
2344 if (rlcode(3).eq.
'P') ifgetpr = .true.
2345 if (rlcode(4).eq.
'T') ifgettr = .true.
2347 if (rlcode(4+k).ne.
' ') ifgtpsr(k) = .true.
2354 subroutine mfi(fname_in,ifile)
2373 character*132 fname_in
2376 character*1 fnam1(132)
2377 equivalence(fnam1,fname)
2381 parameter(lwk = 7*lx1*ly1*lz1*lelt)
2382 common /scrns/ wk(lwk)
2383 common /scrcg/ pm1(lx1*ly1*lz1,lelv)
2386 integer*8 offs0,offs,nbyte,stride,strideB,nxyzr8
2391 call blank(fname,132)
2392 call chcopy(frontc, fname_in, 1)
2393 if (frontc .ne.
'/')
then
2395 lenf =
ltrunc(fname_in,132)
2396 call chcopy(fnam1(1),path,lenp)
2397 call chcopy(fnam1(lenp+1),fname_in,lenf)
2399 lenf =
ltrunc(fname_in,132)
2400 call chcopy(fnam1(1),fname_in,lenf)
2406 offs0 = iheadersize + 4 + isize*nelgr
2407 nxyzr8 = nxr*nyr*nzr
2408 strideb = nelbr* nxyzr8*wdsizr
2409 stride = nelgr* nxyzr8*wdsizr
2413 offs = offs0 + ldim*strideb
2417 call mfi_getv(xm1,ym1,zm1,wk,lwk,.false.)
2419 call mfi_getv(xm1,ym1,zm1,wk,lwk,.true.)
2421 iofldsr = iofldsr + ldim
2425 offs = offs0 + iofldsr*stride + ldim*strideb
2428 if (ifmhd.and.ifile.eq.2)
then
2430 call mfi_getv(bx,by,bz,wk,lwk,.false.)
2433 call mfi_getv(vx,vy,vz,wk,lwk,.false.)
2436 call mfi_getv(vx,vy,vz,wk,lwk,.true.)
2438 iofldsr = iofldsr + ldim
2442 offs = offs0 + iofldsr*stride + strideb
2450 iofldsr = iofldsr + 1
2454 offs = offs0 + iofldsr*stride + strideb
2462 iofldsr = iofldsr + 1
2467 if (ifgtpsr(k))
then
2468 offs = offs0 + iofldsr*stride + strideb
2472 call mfi_gets(t(1,1,1,1,k+1),wk,lwk,.false.)
2474 call mfi_gets(t(1,1,1,1,k+1),wk,lwk,.true.)
2476 iofldsr = iofldsr + 1
2480 if(nid.eq.pid0r) nbyte = iofldsr*nelr*wdsizr*nxr*nyr*nzr
2482 if (ifgtim) time = timer
2489 call err_chk(ierr,
'Error closing restart file, in mfi.$')
2493 nbyte =
glsum(dnbyte,1)
2494 nbyte = nbyte + iheadersize + 4 + isize*nelgr
2497 if (nio.eq.0)
write(6,7) istep,time,
2498 & nbyte/tio/1024/1024/10,
2500 7
format(/,i9,1pe12.4,
' done :: Read checkpoint data',/,
2501 & 30x,
'avg data-throughput = ',f7.1,
'MBps',/,
2502 & 30x,
'io-nodes = ',i5,/)
2518 character*1 fname(132)
2521 character*8 eight,fmt,s8
2523 data eight /
"????????" /
2527 i1 =
indx1(fname,eight,k)
2530 1
format(
'(i',i1,
'.',i1,
')')
2532 call chcopy(fname(i1),s8,k)
2551 character*132 hdr, hname_
2552 logical if_byte_swap_test
2555 integer*8 offs0,offs
2561 call chcopy(hname_,hname,132)
2565 if(ierr.ne.0)
goto 101
2566 call blank (hdr,iheadersize)
2568 if(ierr.ne.0)
goto 101
2570 if(ierr.ne.0)
goto 101
2571 if_byte_sw = if_byte_swap_test(bytetest,ierr)
2572 if(ierr.ne.0)
goto 101
2577 call err_chk(ierr,
'Error reading restart header in mfi_prepare$')
2579 call bcast(if_byte_sw,lsize)
2580 call bcast(hdr,iheadersize)
2584 if (nfiler.eq.1 .and. abs(param(67)).eq.6) ifmpiio = .true.
2589 if(.not.ifmpiio)
then
2591 stride = np / nfiler
2592 if (stride.lt.1)
then
2593 write(6,*) nfiler,np,
' TOO MANY FILES, mfi_prepare'
2597 if (mod(nid,stride).eq.0)
then
2599 pid1r = nid + stride
2600 fid0r = nid / stride
2601 call blank(hdr,iheadersize)
2604 if(nid.eq.pid0r)
write(6,*)
' FILE:',hname
2607 if(ierr.ne.0)
goto 102
2608 call byte_read (hdr, iheadersize/4,ierr)
2609 if(ierr.ne.0)
goto 102
2611 if(ierr.ne.0)
goto 102
2613 if (nelr.gt.lelr)
then
2614 write(6,*)
'ERROR: increase lelr in SIZE to ', nelr
2629 offs0 = iheadersize + 4
2634 do i = 0,mod(nelgr,np)-1
2635 if(i.eq.nid) nelr = nelr + 1
2638 offs = offs0 + nelbr*isize
2641 if(nio.eq.0)
write(6,*)
' FILE:',hname
2644 if(ierr.ne.0)
goto 102
2646 if (nelr.gt.lelr)
then
2647 write(6,*)
'ERROR: increase lelr in SIZE to ', nelr
2651 if(ierr.ne.0)
goto 102
2657 call err_chk(ierr,
'Error reading header/element map.$')
2668 real pm1(lx1,ly1,lz1,lelv)
2670 common /ctmp0/ axism1(lx1,ly1)
2673 if (.not.ifaxis)
return
2678 call mxm (xm1(1,1,1,e),lx1,iatlj1,ly1,axism1,ly1)
2679 call copy (xm1(1,1,1,e),axism1,lx1*ly1)
2680 call mxm (ym1(1,1,1,e),lx1,iatlj1,ly1,axism1,ly1)
2681 call copy (ym1(1,1,1,e),axism1,lx1*ly1)
2684 call mxm (vx(1,1,1,e),lx1,iatlj1,ly1,axism1,ly1)
2685 call copy (vx(1,1,1,e),axism1,lx1*ly1)
2686 call mxm (vy(1,1,1,e),lx1,iatlj1,ly1,axism1,ly1)
2687 call copy (vy(1,1,1,e),axism1,lx1*ly1)
2690 call mxm (vz(1,1,1,e),lx1,iatlj1,ly1,axism1,ly1)
2691 call copy (vz(1,1,1,e),axism1,lx1*ly1)
2694 call mxm (pm1(1,1,1,e),lx1,iatlj1,ly1,axism1,ly1)
2695 call copy (pm1(1,1,1,e),axism1,lx1*ly1)
2698 call mxm (t(1,1,1,e,1),lx1,iatlj1,ly1,axism1,ly1)
2699 call copy (t(1,1,1,e,1),axism1,lx1*ly1)
2703 if (ifgtps(ips))
then
2704 call mxm (t(1,1,1,e,is1),lx1,iatlj1,ly1,axism1,ly1)
2705 call copy(t(1,1,1,e,is1),axism1,lx1*ly1)
2720 real pm1(lx1*ly1*lz1,lelv)
2725 if (ifmhd.and.ifile.eq.2)
then
2727 if (if_full_pres)
then
2728 call copy (pm(1,1,1,e),pm1(1,e),nxyz2)
2730 call map12 (pm(1,1,1,e),pm1(1,e),e)
2733 elseif (ifsplit)
then
2734 call copy (pr,pm1,lx1*ly1*lz1*nelv)
2737 if (if_full_pres)
then
2738 call copy (pr(1,1,1,e),pm1(1,e),nxyz2)
2740 call map12 (pr(1,1,1,e),pm1(1,e),e)
2752 character *(*) fnames(*)
2756 if (ifile.le.n_restart)
then
2759 call chcopy (initc,fnames(ifile),80)
2760 call bcast (initc,80)
2778 if(nid.eq.0 .and. loglevel.gt.2)
write(6,*)
'projfld_c0'
2784 call opcolv (vx,vy,vz,vmult)
2785 if (ifsplit)
call dsavg(pr)
2786 if (ifvcor)
call ortho(pr)
2793 call opcolv (bx,by,bz,vmult)
2796 if (ifheat.and..not.ifdg)
then
2798 call dssum(t ,lx1,ly1,lz1)
2799 call col2 (t ,tmult,ntott)
2801 if(gsh_fld(ifield).ge.0)
then
2802 call dssum(t(1,1,1,1,ifield-1),lx1,ly1,lz1)
2803 if(iftmsh(ifield))
then
2804 call col2 (t(1,1,1,1,ifield-1),tmult,ntott)
2806 call col2 (t(1,1,1,1,ifield-1),vmult,ntotv)
2816 call opdssum(vxp(1,jp),vyp(1,jp),vzp(1,jp))
2817 call opcolv (vxp(1,jp),vyp(1,jp),vzp(1,jp),vmult)
2821 call dssum(tp(1,ifield-1,jp),lx1,ly1,lz1)
2822 if(iftmsh(ifield))
then
2823 call col2 (tp(1,ifield-1,jp),tmult,ntott)
2825 call col2 (tp(1,ifield-1,jp),vmult,ntotv)
subroutine nekasgn(ix, iy, iz, e)
subroutine byte_open_mpi(fnamei, mpi_fh, ifro, ierr)
subroutine byte_read_mpi(buf, icount, iorank, mpi_fh, ierr)
subroutine byte_close_mpi(mpi_fh, ierr)
subroutine byte_set_view(ioff_in, mpi_fh)
subroutine geom1(xm3, ym3, zm3)
subroutine map12(y, x, iel)
subroutine map13(y, x, iel)
subroutine crecv2(mtype, buf, lenm, jnid)
function igl_running_sum(in)
subroutine exitti(stringi, idata)
subroutine csend(mtype, buf, len, jnid, jpid)
subroutine bcast(buf, len)
function irecv(msgtag, x, len)
subroutine err_chk(ierr, string)
real *8 function dnekclock()
subroutine setup_convect(igeom)
subroutine lim_chk(n, m, avar5, lvar5, sub_name10)
integer function gllel(ieg)
integer function gllnid(ieg)
subroutine dssum(u, nx, ny, nz)
subroutine mfi(fname_in, ifile)
subroutine slogic(iffort, ifrest, ifprsl, nfiles)
integer function indx2(s1, l1, s2, l2)
subroutine csplit(s0, s1, s2, l0)
subroutine mapab4r(x, y, nxr, nel)
subroutine full_restart(fnames, n_restart)
function i1_from_char(s1)
subroutine restart(nfiles)
logical function ifgtil(IVALUE, LINE)
subroutine mfi_parse_hdr(hdr, ierr)
subroutine parse_std_hdr(hdr)
subroutine mapab(x, y, nxr, nel)
subroutine map13_all(x3, x1)
subroutine mapdmp(sdump, tdump, ieg, nxr, nyr, nzr, if_byte_sw)
subroutine parse_std_hdr_2006(hdr, rlcode)
subroutine vcospf(x, y, n)
subroutine capit(lettrs, n)
subroutine addfid(fname, fid)
subroutine sioflag(ndumps, fname, rsopts)
logical function ifgtrl(VALUE, LINE)
subroutine geom_reset(icall)
subroutine axis_interp_ic(pm1)
subroutine vbyte_swap(x, n)
logical function if_byte_swap_test(bytetest, ierr)
subroutine chknorm(ifzero)
integer function indx1(S1, S2, L2)
integer function indx_cut(S1, S2, L2)
subroutine lshft(string, ipt)
subroutine map_pm1_to_pr(pm1, ifile)
subroutine mfi_getv(u, v, w, wk, lwk, iskip)
subroutine mfi_gets(u, wk, lwk, iskip)
subroutine mfi_prepare(hname)
subroutine perturb(tt, ifld, eps)
function ltrunc(string, l)
subroutine cmult(a, const, n)
subroutine chcopy(a, b, n)
subroutine cfill(a, b, n)
subroutine mxm(a, n1, b, n2, c, n3)
subroutine opdssum(a, b, c)
subroutine opcopy(a1, a2, a3, b1, b2, b3)
subroutine opcolv(a1, a2, a3, c)
subroutine copy4r(a, b, n)
subroutine zwgll(Z, W, NP)
subroutine igllm(I12, IT12, Z1, Z2, lz1, lz2, ND1, ND2)