54 if (lx1.eq.lx2) ifsplit=.true.
56 if_full_pres = .false.
58 CALL rzero (param,200)
60 CALL blank(ccurve ,12*lelt)
73 CALL rzero(vgradt1,ntot)
74 CALL rzero(vgradt2,ntot)
77 CALL rzero(usrdiv,ntot)
99 COMMON /cprint/ ifprint
101 real*8 eetime0,eetime1,eetime2
102 SAVE eetime0,eetime1,eetime2
103 DATA eetime0,eetime1,eetime2 /0.0, 0.0, 0.0/
110 IF (eetime0.EQ.0.0 .AND. istep.EQ.1) eetime0=
dnekclock()
116 DO 10 ifield=1,nfield
117 IF (ifadvc(ifield)) ifcour = .true.
119 IF (ifwcno) ifcour = .true.
120 ELSEIF (istep.GT.0 .AND. lastep.EQ.0 .AND. iftran)
THEN
121 ttime_stp = eetime2-eetime1
122 ttime = eetime2-eetime0
128 $
WRITE(6,100)istep,time,dt,courno,ttime,ttime_stp
129 IF (.NOT.ifcour)
WRITE (6,101) istep,time,dt
130 ELSEIF (lastep.EQ.1)
THEN
131 ttime_stp = eetime2-eetime1
132 ttime = eetime2-eetime0
134 100
FORMAT(
'Step',i7,
', t=',1pe14.7,
', DT=',1pe14.7
135 $,
', C=',0pf7.3,2(1pe11.4))
136 101
FORMAT(
'Step',i7,
', time=',1pe12.5,
', DT=',1pe11.3)
160 IF ( ifstrs ) ifgmsh3 = .false.
161 IF (.NOT.ifflow) ifgmsh3 = .false.
162 IF ( ifsplit ) ifgmsh3 = .false.
179 IF (ifmvbd) mfield = 0
181 DO 100 ifield=mfield,nfldt+(ldimt-1 - npscal)
182 IF (iftmsh(ifield))
THEN
183 nelfld(ifield) = nelt
185 nelfld(ifield) = nelv
191 if (iftran) nmxv = 200
194 do ifield = 2,ldimt+1
210 tolpdf = abs(param(21))
211 tolhdf = abs(param(22))
212 tolrel = abs(param(24))
213 tolabs = abs(param(25))
215 nbdinp = abs(param(27))
218 if (nbdinp.gt.lorder)
then
220 write(6,*)
'ERROR: torder > lorder.',nbdinp,lorder
221 write(6,*)
'Change SIZE and recompile entire code.'
228 IF (tolrel.LE.0.) tolrel = 0.01
233 IF (.NOT.iftran .AND. .NOT.ifnav) prelax = 1.e-5
241 IF (fintim.NE.0.) nsteps = 1000000000
242 IF (.NOT.iftran ) nsteps = 1
246 IF (iocomm.EQ.0) iocomm = nsteps+1
250 IF (nabmsh.LE.0 .OR. nabmsh.GT.3)
THEN
259 IF (.NOT.ifflow) ifld1 = 2
260 DO 200 ifield=ifld1,nfldt
261 IF (ifadvc(ifield)) iadv = 1
275 CALL rzero (dtlag,10)
280 nfld_neknek = ndim + nfield
282 CALL blank(cbc_bmap,sizeof(cbc_bmap))
297 CHARACTER*1 STRING1(132)
298 equivalence(string,string1)
302 OPEN (unit=9,
file=reafle,status=
'OLD')
307 READ(9,*,err=400) vnekton
310 IF(vnekton.LT.vnekmin)
THEN
311 print*,
' Error: This NEKTON Solver Requires a .rea file'
312 print*,
' from prenek version ',vnekmin,
' or higher'
313 print*,
' Please run the session through the preprocessor'
314 print*,
' to bring the .rea file up to date.'
317 READ(9,*,err=400) ldimr
319 IF(ldimr.NE.ldim)
THEN
320 WRITE(6,10) ldimr,ldim
321 10
FORMAT(//,2x,
'Error: This NEKTON Solver has been compiled'
322 $ /,2x,
' for spatial dimension equal to',i2,
'.'
323 $ /,2x,
' The data file has dimension',i2,
'.')
327 CALL blank(string,132)
330 READ(9,*,err=400) nparam
331 WRITE(6,82) nparam,(string1(j),j=1,ls)
334 CALL blank(string,132)
335 READ(9,80,err=400) string
337 IF (param(i).ne.0.0)
WRITE(6,81) i,(string1(j),j=1,ls)
340 81
FORMAT(i4,3x,132a1)
341 82
FORMAT(i4,3x,
'Parameters from file:',132a1)
357 401
FORMAT(2x,
'ERROR READING PARAMETER DATA'
358 $ ,/,2x,
'ABORTING IN ROUTINE ECHOPAR.')
363 501
FORMAT(2x,
'ERROR READING LOGICAL DATA'
364 $ ,/,2x,
'ABORTING IN ROUTINE ECHOPAR.')
382 COMMON /scruz/ xm3(lx3,ly3,lz3,lelt)
383 $ , ym3(lx3,ly3,lz3,lelt)
384 $ , zm3(lx3,ly3,lz3,lelt)
387 if (nio.eq.0.and.istep.le.1)
write(6,*)
'generate geometry data'
391 ELSEIF (igeom.EQ.2)
THEN
393 IF (istep.EQ.0)
CALL gencoor (xm3,ym3,zm3)
395 CALL geom1 (xm3,ym3,zm3)
404 if (nio.eq.0.and.istep.le.1)
then
405 write(6,*)
'done :: generate geometry data'
421 CHARACTER*1 SESS1(132),PATH1(132),NAM1(132)
422 equivalence(session,sess1)
423 equivalence(path,path1)
424 equivalence(name,nam1)
425 CHARACTER*1 DMP(4),FLD(4),REA(4),HIS(4),SCH(4) ,ORE(4), NRE(4)
426 CHARACTER*1 RE2(4),PAR(4)
427 CHARACTER*4 DMP4 ,FLD4 ,REA4 ,HIS4 ,SCH4 ,ORE4 , NRE4
428 CHARACTER*4 RE24 ,PAR4
429 equivalence(dmp,dmp4), (fld,fld4), (rea,rea4), (his,his4)
430 $ , (sch,sch4), (ore,ore4), (nre,nre4)
431 $ , (re2,re24), (par,par4)
432 DATA dmp4,fld4,rea4 /
'.dmp',
'.fld',
'.rea'/
433 DATA his4,sch4 /
'.his',
'.sch'/
434 DATA ore4,nre4 /
'.ore',
'.nre'/
457 if(
indx1(path1(len),
'/',1).lt.1)
then
458 call chcopy(path1(len+1),
'/',1)
464 CALL blank(parfle,132)
465 CALL blank(reafle,132)
466 CALL blank(re2fle,132)
467 CALL blank(fldfle,132)
468 CALL blank(hisfle,132)
469 CALL blank(schfle,132)
470 CALL blank(dmpfle,132)
471 CALL blank(orefle,132)
472 CALL blank(nrefle,132)
473 CALL blank(name ,132)
481 call chcopy(nam1( 1),path1,lpp)
482 call chcopy(nam1(lpp+1),sess1,ls )
488 call chcopy(nam1(l1),rea , 4)
489 call chcopy(reafle ,nam1,ln)
493 call chcopy(nam1(l1),par , 4)
494 call chcopy(parfle ,nam1,ln)
497 call chcopy(nam1(l1),re2 , 4)
498 call chcopy(re2fle ,nam1,ln)
501 call chcopy(nam1(l1),fld , 4)
502 call chcopy(fldfle ,nam1,ln)
505 call chcopy(nam1(l1),his , 4)
506 call chcopy(hisfle ,nam1,ln)
509 call chcopy(nam1(l1),sch , 4)
510 call chcopy(schfle ,nam1,ln)
514 call chcopy(nam1(l1),dmp , 4)
515 call chcopy(dmpfle ,nam1,ln)
518 call chcopy(nam1(l1),ore , 4)
519 call chcopy(orefle ,nam1,ln)
522 call chcopy(nam1(l1),nre , 4)
523 call chcopy(nrefle ,nam1,ln)
550 COMMON /cprint/ ifprint
559 dtlag(ilag) = dtlag(ilag-1)
563 IF (istep.EQ.1 .and. irst.le.0) dtlag(2) = dt
573 if (irst.gt.0) nbd = nbdinp
575 CALL setbd (bd,dtlag,nbd)
576 if (param(27).lt.0)
then
581 IF (istep.lt.nab.and.irst.le.0) nab = istep
583 CALL setabbd (ab,dtlag,nab,nbd)
587 IF (nabmsh.GT.istep .and. irst.le.0) nabmsh = istep
588 IF (ifsurt) nabmsh = nbd
589 CALL rzero (abmsh,10)
590 CALL setabbd (abmsh,dtlag,nabmsh,nbdmsh)
597 IF (iocomm.GT.0.AND.mod(istep,iocomm).EQ.0) ifprint=.true.
598 IF (istep.eq.1 .or. istep.eq.0 ) ifprint=.true.
599 IF (nio.eq.-1) ifprint=.false.
619 IF (igeom.EQ.1)
RETURN
648 ELSEIF (ifheat.AND..NOT.ifflow)
THEN
684 if(nio.eq.0 .and. igeom.eq.2)
685 &
write(*,
'(13x,a)')
'Solving for fluid'
696 if (igeom.eq.ngeom)
then
717 if (igeom.eq.ngeom)
then
736 if(nio.eq.0 .and. igeom.ge.2)
737 &
write(*,
'(4x,i7,a,1p2e12.4)')
738 & istep,
' Fluid done',time,
dnekclock()-ts
765 if (nio.eq.0 .and. igeom.eq.2)
766 &
write(*,
'(13x,a)')
'Solving for Hmholtz scalars'
769 if (idpss(ifield-1).eq.0)
then
771 if (.not.iftmsh(ifield)) imesh = 1
772 if ( iftmsh(ifield)) imesh = 2
779 if (nio.eq.0 .and. igeom.eq.2)
780 &
write(*,
'(4x,i7,a,1p2e12.4)')
781 & istep,
' Scalars done',time,
dnekclock()-ts
797 if (igeom.ne.2)
return
800 &
write(*,
'(13x,a)')
'Solving for CVODE scalars'
805 &
write(*,
'(4x,i7,a,1p2e12.4)')
806 & istep,
' CVODE scalars done',time,
dnekclock()-ts
820 IF (igeom.EQ.1)
RETURN
825 IF (iftmsh(ifield)) imesh = 2
922 real min_dsum, max_dsum, avg_dsum
923 real min_vdss, max_vdss, avg_vdss
924 real min_gop, max_gop, avg_gop
925 real min_gop_sync, max_gop_sync, avg_gop_sync
926 real min_crsl, max_crsl, avg_crsl
927 real min_usbc, max_usbc, avg_usbc
928 real min_syc, max_syc, avg_syc
929 real min_wal, max_wal, avg_wal
930 real min_irc, max_irc, avg_irc
931 real min_isd, max_isd, avg_isd
932 real min_comm, max_comm, avg_comm
935 integer comm_counters(8)
943 tcomm = tisd + tirc + tsyc + tgp2+ twal + trc + tsd
945 call gop(min_comm,wwork,
'm ',1)
947 call gop(max_comm,wwork,
'M ',1)
949 call gop(avg_comm,wwork,
'+ ',1)
950 avg_comm = avg_comm/np
953 call gop(min_isd,wwork,
'm ',1)
955 call gop(max_isd,wwork,
'M ',1)
957 call gop(avg_isd,wwork,
'+ ',1)
961 call gop(min_irc,wwork,
'm ',1)
963 call gop(max_irc,wwork,
'M ',1)
965 call gop(avg_irc,wwork,
'+ ',1)
969 call gop(min_syc,wwork,
'm ',1)
971 call gop(max_syc,wwork,
'M ',1)
973 call gop(avg_syc,wwork,
'+ ',1)
977 call gop(min_wal,wwork,
'm ',1)
979 call gop(max_wal,wwork,
'M ',1)
981 call gop(avg_wal,wwork,
'+ ',1)
985 call gop(min_gop,wwork,
'm ',1)
987 call gop(max_gop,wwork,
'M ',1)
989 call gop(avg_gop,wwork,
'+ ',1)
992 min_gop_sync = tgop_sync
993 call gop(min_gop_sync,wwork,
'm ',1)
994 max_gop_sync = tgop_sync
995 call gop(max_gop_sync,wwork,
'M ',1)
996 avg_gop_sync = tgop_sync
997 call gop(avg_gop_sync,wwork,
'+ ',1)
998 avg_gop_sync = avg_gop_sync/np
1001 call gop(min_vdss,wwork,
'm ',1)
1003 call gop(max_vdss,wwork,
'M ',1)
1005 call gop(avg_vdss,wwork,
'+ ',1)
1006 avg_vdss = avg_vdss/np
1009 call gop(min_dsum,wwork,
'm ',1)
1011 call gop(max_dsum,wwork,
'M ',1)
1013 call gop(avg_dsum,wwork,
'+ ',1)
1014 avg_dsum = avg_dsum/np
1018 call gop(min_crsl,wwork,
'm ',1)
1020 call gop(max_crsl,wwork,
'M ',1)
1022 call gop(avg_crsl,wwork,
'+ ',1)
1023 avg_crsl = avg_crsl/np
1026 call gop(min_usbc,wwork,
'm ',1)
1028 call gop(max_usbc,wwork,
'M ',1)
1030 call gop(avg_usbc,wwork,
'+ ',1)
1031 avg_usbc = avg_usbc/np
1033 tttstp = tttstp + 1e-7
1036 write(6,
'(A)')
'runtime statistics:'
1039 write(6,*)
'init time',tinit,pinit
1041 write(6,*)
'prep time',nprep,tprep,pprep
1045 write(6,*)
'pres time',npres,tpres,ppres
1049 write(6,*)
'crsl time',ncrsl,tcrsl,pcrsl
1050 write(6,*)
'crsl min ',min_crsl
1051 write(6,*)
'crsl max ',max_crsl
1052 write(6,*)
'crsl avg ',avg_crsl
1056 write(6,*)
'hmhz time',nhmhz,thmhz,phmhz
1060 write(6,*)
'eslv time',neslv,teslv,peslv
1064 write(6,*)
'makf time',tmakf,pmakf
1068 write(6,*)
'makq time',tmakq,pmakq
1072 if(ifcvode)
write(6,*)
'cfun time',ncvf,tcvf,pcvf
1076 write(6,*)
'proj time',tproj,pproj
1080 write(6,*)
'usvp time',nspro,tspro,pspro
1084 write(6,*)
'usfq time',0,tusfq,pusfq
1088 write(6,*)
'usbc time',nusbc,tusbc,pusbc
1089 write(6,*)
'usbc min ',min_usbc
1090 write(6,*)
'usbc max ',max_usbc
1091 write(6,*)
'usb avg ',avg_usbc
1095 write(6,*)
'uchk time',tuchk,puchk
1099 write(6,*)
'mltd time',nmltd,tmltd,pmltd
1101 write(6,*)
'cdtp time',ncdtp,tcdtp,pcdtp
1103 write(6,*)
'axhm time',naxhm,taxhm,paxhm
1105 write(6,*)
'advc time',nadvc,tadvc,padvc
1109 write(6,*)
'mxmf time',tmxmf,pmxmf
1111 write(6,*)
'adc3 time',tadc3,padc3
1113 write(6,*)
'col2 time',tcol2,pcol2
1115 write(6,*)
'col3 time',tcol3,pcol3
1117 write(6,*)
'a2s2 time',ta2s2,pa2s2
1119 write(6,*)
'add2 time',tadd2,padd2
1121 write(6,*)
'invc time',tinvc,pinvc
1127 write(6,*)
'tgop time',ngop,tgop,pgop
1130 write(6,*)
'dadd time',ndadd,tdadd,pdadd
1134 write(6,*)
'vdss time',nvdss,tvdss,pvdss
1135 write(6,*)
'vdss min ',min_vdss
1136 write(6,*)
'vdss max ',max_vdss
1137 write(6,*)
'vdss avg ',avg_vdss
1141 write(6,*)
'dsum time',ndsum,tdsum,pdsum
1142 write(6,*)
'dsum min ',min_dsum
1143 write(6,*)
'dsum max ',max_dsum
1144 write(6,*)
'dsum avg ',avg_dsum
1160 write(6,*)
'ddsl time',nddsl,tddsl,pddsl
1170 if (lastep.eq.1)
then
1172 $
write(6,1)
'tusbc',
'tdadd',
'tcrsl',
'tvdss',
'tdsum',
1174 1
format(/,
'#',2x,
'nid',6(7x,a5),4x,
'qqq',1x,l4)
1176 call blank(s132,132)
1177 write(s132,132) nid,tusbc,tdadd,tcrsl,tvdss,tdsum,tgop
1178 132
format(i12,1p6e12.4,
' qqq')
1201 write(io,1) (s(k),k=1,l)
1205 call csend(mtag,s,1,i,0)
1211 write(io,1) (w(k),k=1,l)
1213 write(io,*)
'pprint long message: ',i,m
1215 write(io,1) (w(k),k=1,l)
1219 call crecv(mtag,w,m)
1221 call csend(nid,s,l,0,0)
1233 character*6 sname(maxrts)
1234 integer ind (maxrts)
1235 integer idum (maxrts)
1237 if (icall.eq.1)
then
1240 if (icall.eq.1.or.icall.eq.2)
then
1247 if (icall.eq.3)
then
1252 write(6,*) nid,
' opcount',dcount
1254 call csend(i,idum,4,i,0)
1255 call crecv(i,ddcount,wdsize)
1256 write(6,*) i,
' opcount',ddcount
1259 call crecv (nid,idum,4)
1260 call csend (nid,dcount,wdsize,0,0)
1264 call gop(dhc,dwork,
'+ ',1)
1266 write(6,*)
' TOTAL OPCOUNT',dhc
1269 CALL drcopy(rct,dct,nrout)
1270 CALL sort(rct,ind,nrout)
1271 CALL chswapr(rname,6,ind,nrout,sname)
1272 call iswap(ncall,ind,nrout,idum)
1276 write(6,201) nid,rname(i),rct(i),ncall(i)
1278 201
format(2x,
' opnode',i4,2x,a6,g18.7,i12)
1288 COMMON /scrns/ work(lctmp1)
1290 integer*8 ntot,ntotp,ntotv
1296 vpts =
glsum(vmult,nel*nxyz) + .1
1301 ppts =
glsum(work,1) + .1
1304 if (nio.eq.0)
write(6,
'(A,2i13)')
1305 &
'gridpoints unique/tot: ',nvtot,ntot
1307 ntot1=nx1*ny1*nz1*nelv
1308 ntot2=nx2*ny2*nz2*nelv
1310 ntotv =
glsc2(tmult,tmask,ntot1)
1313 if (ifflow) ntotv =
glsc2(vmult,v1mask,ntot1) + .1
1314 if (ifsplit) ntotp =
glsc2(vmult,pmask ,ntot1) + .1
1315 if (nio.eq.0)
write(6,
'(A,2i13)')
1316 $
'dofs vel/pr: ',ntotv,ntotp
1339 parameter(kx1=lx1,ky1=ly1,kz1=lz1,kx2=lx2,ky2=ly2,kz2=lz2)
1341 common /cvflow_a/ vxc(kx1,ky1,kz1,lelv)
1342 $ , vyc(kx1,ky1,kz1,lelv)
1343 $ , vzc(kx1,ky1,kz1,lelv)
1344 $ , prc(kx2,ky2,kz2,lelv)
1345 $ , vdc(kx1*ky1*kz1*lelv,2)
1346 common /cvflow_r/ flow_rate,base_flow,domain_length,xsec
1348 common /cvflow_i/ icvflow,iavflow
1349 common /cvflow_c/ chv(3)
1352 real bd_vflow,dt_vflow
1353 save bd_vflow,dt_vflow
1354 data bd_vflow,dt_vflow /-99.,-99./
1364 ntot1 = lx1*ly1*lz1*nelv
1365 ntot2 = lx2*ly2*lz2*nelv
1367 if (param(55).eq.0.)
return
1369 write(6,*)
'ABORT. Recompile vol_flow with kx1=lx1, etc.'
1374 if (param(54).ne.0) icvflow = abs(param(54))
1376 if (param(54).lt.0) iavflow = 1
1377 flow_rate = param(55)
1387 if (dt.ne.dt_vflow.or.bd(1).ne.bd_vflow.or.ifmvbd) ifcomp=.true.
1388 if (.not.ifcomp)
then
1391 if (vdiff(i,1,1,1,1).ne.vdc(i,1))
goto 20
1392 if (vtrans(i,1,1,1,1).ne.vdc(i,2))
goto 20
1397 call gllog(ifcomp,.true.)
1399 call copy(vdc(1,1),vdiff(1,1,1,1,1),ntot1)
1400 call copy(vdc(1,2),vtrans(1,1,1,1,1),ntot1)
1406 if (icvflow.eq.1) current_flow=
glsc2(vx,bm1,ntot1)/domain_length
1407 if (icvflow.eq.2) current_flow=
glsc2(vy,bm1,ntot1)/domain_length
1408 if (icvflow.eq.3) current_flow=
glsc2(vz,bm1,ntot1)/domain_length
1410 if (iavflow.eq.1)
then
1411 xsec = volvm1 / domain_length
1412 flow_rate = param(55)*xsec
1415 delta_flow = flow_rate-current_flow
1421 scale = delta_flow/base_flow
1422 scale_vf(icvflow) =
scale
1423 if (nio.eq.0)
write(6,1) istep,chv(icvflow)
1424 $ ,time,
scale,delta_flow,current_flow,flow_rate
1425 1
format(i11,
' Volflow ',a1,11x,1p5e13.4)
1445 real vxc(lx1,ly1,lz1,lelv)
1446 $ , vyc(lx1,ly1,lz1,lelv)
1447 $ , vzc(lx1,ly1,lz1,lelv)
1448 $ , prc(lx2,ly2,lz2,lelv)
1450 common /cvflow_r/ flow_rate,base_flow,domain_length,xsec
1452 common /cvflow_i/ icvflow,iavflow
1453 common /cvflow_c/ chv(3)
1461 ntot1 = lx1*ly1*lz1*nelv
1462 if (icalld.eq.0)
then
1464 xlmin =
glmin(xm1,ntot1)
1465 xlmax =
glmax(xm1,ntot1)
1466 ylmin =
glmin(ym1,ntot1)
1467 ylmax =
glmax(ym1,ntot1)
1468 zlmin =
glmin(zm1,ntot1)
1469 zlmax =
glmax(zm1,ntot1)
1471 if (icvflow.eq.1) domain_length = xlmax - xlmin
1472 if (icvflow.eq.2) domain_length = ylmax - ylmin
1473 if (icvflow.eq.3) domain_length = zlmax - zlmin
1486 if (icvflow.eq.1) base_flow =
glsc2(vxc,bm1,ntot1)/domain_length
1487 if (icvflow.eq.2) base_flow =
glsc2(vyc,bm1,ntot1)/domain_length
1488 if (icvflow.eq.3) base_flow =
glsc2(vzc,bm1,ntot1)/domain_length
1490 if (nio.eq.0 .and. loglevel.gt.2)
write(6,1)
1491 $ istep,chv(icvflow),base_flow,domain_length,flow_rate
1492 1
format(i11,
' basflow ',a1,11x,1p3e13.4)
1506 real vxc(lx1,ly1,lz1,lelv)
1507 $ , vyc(lx1,ly1,lz1,lelv)
1508 $ , vzc(lx1,ly1,lz1,lelv)
1509 $ , prc(lx2,ly2,lz2,lelv)
1511 COMMON /scrns/ resv1(lx1,ly1,lz1,lelv)
1512 $ , resv2(lx1,ly1,lz1,lelv)
1513 $ , resv3(lx1,ly1,lz1,lelv)
1514 $ , respr(lx2,ly2,lz2,lelv)
1515 COMMON /scrvh/ h1(lx1,ly1,lz1,lelv)
1516 $ , h2(lx1,ly1,lz1,lelv)
1518 common /cvflow_i/ icvflow,iavflow
1523 ntot1 = lx1*ly1*lz1*nelv
1525 if (icvflow.eq.1)
then
1526 call cdtp (respr,v1mask,rxm2,sxm2,txm2,1)
1527 elseif (icvflow.eq.2)
then
1528 call cdtp (respr,v2mask,rxm2,sxm2,txm2,1)
1530 call cdtp (respr,v3mask,rxm2,sxm2,txm2,1)
1536 call rone (h1,ntot1)
1537 call rzero (h2,ntot1)
1539 call hmholtz (
'PRES',prc,respr,h1,h2,pmask,vmult,
1540 $ imesh,tolspl,nmxp,1)
1545 call opgrad (resv1,resv2,resv3,prc)
1546 call opchsgn (resv1,resv2,resv3)
1547 call add2col2 (resv1,bm1,v1mask,ntot1)
1550 call sethlm (h1,h2,intype)
1551 call ophinv (vxc,vyc,vzc,resv1,resv2,resv3,h1,h2,tolhv,nmxv)
1565 real vxc(lx1,ly1,lz1,lelv)
1566 $ , vyc(lx1,ly1,lz1,lelv)
1567 $ , vzc(lx1,ly1,lz1,lelv)
1568 $ , prc(lx2,ly2,lz2,lelv)
1570 COMMON /scrns/ rw1(lx1,ly1,lz1,lelv)
1571 $ , rw2(lx1,ly1,lz1,lelv)
1572 $ , rw3(lx1,ly1,lz1,lelv)
1573 $ , dv1(lx1,ly1,lz1,lelv)
1574 $ , dv2(lx1,ly1,lz1,lelv)
1575 $ , dv3(lx1,ly1,lz1,lelv)
1576 $ , respr(lx2,ly2,lz2,lelv)
1577 COMMON /scrvh/ h1(lx1,ly1,lz1,lelv)
1578 $ , h2(lx1,ly1,lz1,lelv)
1579 COMMON /scrhi/ h2inv(lx1,ly1,lz1,lelv)
1580 common /cvflow_i/ icvflow,iavflow
1585 ntot1 = lx1*ly1*lz1*nelv
1586 ntot2 = lx2*ly2*lz2*nelv
1589 if (icvflow.eq.1)
then
1590 call copy (rw1,bm1,ntot1)
1591 call rzero (rw2,ntot1)
1592 call rzero (rw3,ntot1)
1593 elseif (icvflow.eq.2)
then
1594 call rzero (rw1,ntot1)
1595 call copy (rw2,bm1,ntot1)
1596 call rzero (rw3,ntot1)
1598 call rzero (rw1,ntot1)
1599 call rzero (rw2,ntot1)
1600 call copy (rw3,bm1,ntot1)
1603 call sethlm (h1,h2,intype)
1604 call ophinv (vxc,vyc,vzc,rw1,rw2,rw3,h1,h2,tolhv,nmxv)
1612 call rzero (h1,ntot1)
1613 call copy (h2,vtrans(1,1,1,1,ifield),ntot1)
1614 call cmult (h2,dtinv,ntot1)
1616 call opdiv (respr,vxc,vyc,vzc)
1617 call chsign (respr,ntot2)
1624 call esolver (respr,h1,h2,h2inv,intype)
1627 call opgradt (rw1,rw2,rw3,respr)
1628 call opbinv (dv1,dv2,dv3,rw1,rw2,rw3,h2inv)
1629 call opadd2 (vxc,vyc,vzc,dv1,dv2,dv3)
1631 call cmult2 (prc,respr,bd(1),ntot2)
1646 real vxc(lx1,ly1,lz1,lelv)
1647 $ , vyc(lx1,ly1,lz1,lelv)
1648 $ , vzc(lx1,ly1,lz1,lelv)
1649 $ , prc(lx1,ly1,lz1,lelv)
1651 common /scrns/ resv1(lx1,ly1,lz1,lelv)
1652 $ , resv2(lx1,ly1,lz1,lelv)
1653 $ , resv3(lx1,ly1,lz1,lelv)
1654 $ , respr(lx1,ly1,lz1,lelv)
1655 common /scrvh/ h1(lx1,ly1,lz1,lelv)
1656 $ , h2(lx1,ly1,lz1,lelv)
1658 common /cvflow_i/ icvflow,iavflow
1660 n = lx1*ly1*lz1*nelv
1666 if (icvflow.eq.1)
call cdtp(respr,h1,rxm2,sxm2,txm2,1)
1667 if (icvflow.eq.2)
call cdtp(respr,h1,rym2,sym2,tym2,1)
1668 if (icvflow.eq.3)
call cdtp(respr,h1,rzm2,szm2,tzm2,1)
1673 call hmholtz (
'PRES',prc,respr,h1,h2,pmask,vmult,
1674 $ imesh,tolspl,nmxp,1)
1679 call opgrad (resv1,resv2,resv3,prc)
1680 if (ifaxis)
call col2 (resv2,omask,n)
1681 call opchsgn (resv1,resv2,resv3)
1683 if (icvflow.eq.1)
call add2col2(resv1,v1mask,bm1,n)
1684 if (icvflow.eq.2)
call add2col2(resv2,v2mask,bm1,n)
1685 if (icvflow.eq.3)
call add2col2(resv3,v3mask,bm1,n)
1691 call sethlm (h1,h2,intype)
1692 call ophinv (vxc,vyc,vzc,resv1,resv2,resv3,h1,h2,tolhv,nmxv)
1702 COMMON /scrns/ w(lx1,ly1,lz1,lelt)
1703 COMMON /scruz/ v(lx1,ly1,lz1,lelt)
1704 $ , h1(lx1,ly1,lz1,lelt)
1705 $ , h2(lx1,ly1,lz1,lelt)
1707 ntot = lx1*ly1*lz1*nelv
1713 call axhelm (w,v,h1,h2,1,1)
1725 write(6,*)
'outrio:',n,io,v(1)
1726 write(io,6) (v(k),k=1,n)
1747 COMMON /screv/ sii(lx1,ly1,lz1,lelt)
1748 $ , siii(lx1,ly1,lz1,lelt)
1749 COMMON /scruz/ ta(lx1,ly1,lz1,lelt)
1755 rfinal = 1./param(2)
1757 ntot = lx1*ly1*lz1*nelv
1761 if (istpp.ge.iramp)
then
1763 call cfill(vdiff,vfinal,ntot)
1767 sarg = (pi2*istpp)/iramp
1769 rnew = rstart + (rfinal-rstart)*sarg
1771 call cfill(vdiff,vnew,ntot)
1772 if (nio.eq.0)
write(6,*) istep,
' New Re:',rnew,sarg,istpp
1782 if(nio.eq.0)
write(6,*)
'initialize pressure solver'
1785 if (isolver.eq.0)
then
1786 if (nelgt.gt.350000)
1787 $
call exitti(
'problem size too large for XXT solver!$',0)
1789 else if (isolver.eq.1)
then
1791 else if (isolver.eq.2)
then
1793 else if (isolver.eq.3)
then
1795 if (ifvcor) null_space = 1
1799 $ pmask,binvm1,null_space,
1800 $ gsh_fld(1),fem_amg_param)
subroutine geom1(xm3, ym3, zm3)
subroutine crecv(mtype, buf, lenm)
subroutine gop(x, w, op, n)
subroutine exitti(stringi, idata)
subroutine csend(mtype, buf, len, jnid, jpid)
real *8 function dnekclock()
subroutine scale(xyzl, nl)
subroutine compute_vol_soln(vxc, vyc, vzc, prc)
subroutine pprint_all(s, n_in, io)
subroutine outrio(v, n, io)
subroutine plan2_vol(vxc, vyc, vzc, prc)
subroutine opcount(ICALL)
subroutine heat_cvode(igeom)
subroutine gengeom(igeom)
subroutine plan3_vol(vxc, vyc, vzc, prc)
subroutine plan4_vol(vxc, vyc, vzc, prc)
subroutine gencoor(xm3, ym3, zm3)
subroutine hmholtz(name, u, rhs, h1, h2, mask, mult, imsh, tli, maxit, isd)
subroutine axhelm(au, u, helm1, helm2, imesh, isd)
integer function indx1(S1, S2, L2)
subroutine ophinv(o1, o2, o3, i1, i2, i3, h1, h2, tolh, nmxhi)
subroutine iswap(b, ind, n, temp)
subroutine invers2(a, b, n)
subroutine add2col2(a, b, c, n)
subroutine add2s2(a, b, c1, n)
integer *8 function i8glsum(a, n)
subroutine chswapr(b, L, ind, n, temp)
function ltrunc(string, l)
subroutine drcopy(r, d, N)
subroutine cmult(a, const, n)
subroutine chcopy(a, b, n)
subroutine cfill(a, b, n)
subroutine sort(a, ind, n)
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 setbd(bd, dtbd, nbd)
subroutine setabbd(ab, dtlag, nab, nbd)
subroutine ctolspl(tolspl, respr)
subroutine opadd2(a1, a2, a3, b1, b2, b3)
subroutine opchsgn(a, b, c)
subroutine opgrad(out1, out2, out3, inp)
subroutine redo_split_vis
subroutine ssnormd(DV1, DV2, DV3)
subroutine sethlm(h1, h2, intloc)
subroutine cmult2(A, B, CONST, N)