13 if (nio.eq.0.and.igeom.eq.2)
write(6,1) istep,time,jp
14 1
format(i9,1pe14.7,
' Perturbation Solve:',i5)
39 COMMON /scrns/ resv1(lx1,ly1,lz1,lelv)
40 $ , resv2(lx1,ly1,lz1,lelv)
41 $ , resv3(lx1,ly1,lz1,lelv)
42 $ , dv1(lx1,ly1,lz1,lelv)
43 $ , dv2(lx1,ly1,lz1,lelv)
44 $ , dv3(lx1,ly1,lz1,lelv)
45 COMMON /scrvh/ h1(lx1,ly1,lz1,lelv)
46 $ , h2(lx1,ly1,lz1,lelv)
63 call cresvipp (resv1,resv2,resv3,h1,h2)
64 call ophinv (dv1,dv2,dv3,resv1,resv2,resv3,h1,h2,tolhv,nmxv)
65 call opadd2 (vxp(1,jp),vyp(1,jp),vzp(1,jp),dv1,dv2,dv3)
66 call incomprp (vxp(1,jp),vyp(1,jp),vzp(1,jp),prp(1,jp))
84 $ (vxlagp(1,ilag ,jp),vylagp(1,ilag ,jp),vzlagp(1,ilag ,jp)
85 $ ,vxlagp(1,ilag-1,jp),vylagp(1,ilag-1,jp),vzlagp(1,ilag-1,jp))
87 call opcopy(vxlagp(1,1,jp),vylagp(1,1,jp),vzlagp(1,1,jp)
88 $ ,vxp(1,jp) ,vyp(1,jp) ,vzp(1,jp) )
106 if (ifnav.and.(.not.ifchar).and.(.not.ifadj))
call advabp
124 call nekuf (bfxp(1,jp),bfyp(1,jp),bfzp(1,jp))
125 call opcolv2 (bfxp(1,jp),bfyp(1,jp),bfzp(1,jp)
126 $ ,vtrans(1,1,1,1,ifield),bm1)
143 COMMON /scrns/ ta1(lx1*ly1*lz1*lelv)
144 $ , ta2(lx1*ly1*lz1*lelv)
145 $ , ta3(lx1*ly1*lz1*lelv)
146 $ , tb1(lx1*ly1*lz1*lelv)
147 $ , tb2(lx1*ly1*lz1*lelv)
148 $ , tb3(lx1*ly1*lz1*lelv)
150 ntot1 = lx1*ly1*lz1*nelv
151 ntot2 = lx2*ly2*lz2*nelv
154 call opcopy (tb1,tb2,tb3,vx,vy,vz)
155 call opcopy (vx,vy,vz,vxp(1,jp),vyp(1,jp),vzp(1,jp))
159 call opcopy (vx,vy,vz,tb1,tb2,tb3)
162 tmp = bm1(i,1,1,1)*vtrans(i,1,1,1,ifield)
163 bfxp(i,jp) = bfxp(i,jp)-tmp*ta1(i)
164 bfyp(i,jp) = bfyp(i,jp)-tmp*ta2(i)
165 bfzp(i,jp) = bfzp(i,jp)-tmp*ta3(i)
168 call convop (ta1,vxp(1,jp))
169 call convop (ta2,vyp(1,jp))
170 call convop (ta3,vzp(1,jp))
173 tmp = bm1(i,1,1,1)*vtrans(i,1,1,1,ifield)
174 bfxp(i,jp) = bfxp(i,jp)-tmp*ta1(i)
175 bfyp(i,jp) = bfyp(i,jp)-tmp*ta2(i)
176 bfzp(i,jp) = bfzp(i,jp)-tmp*ta3(i)
181 call opcopy (tb1,tb2,tb3,vx,vy,vz)
182 call opcopy (vx,vy,vz,vxp(1,jp),vyp(1,jp),vzp(1,jp))
185 call opcopy (vx,vy,vz,tb1,tb2,tb3)
188 tmp = bm1(i,1,1,1)*vtrans(i,1,1,1,ifield)
189 bfxp(i,jp) = bfxp(i,jp)-tmp*ta1(i)
190 bfyp(i,jp) = bfyp(i,jp)-tmp*ta2(i)
193 call convop (ta1,vxp(1,jp))
194 call convop (ta2,vyp(1,jp))
197 tmp = bm1(i,1,1,1)*vtrans(i,1,1,1,ifield)
198 bfxp(i,jp) = bfxp(i,jp)-tmp*ta1(i)
199 bfyp(i,jp) = bfyp(i,jp)-tmp*ta2(i)
222 COMMON /scrns/ ta1(lx1*ly1*lz1*lelv)
223 $ , ta2(lx1*ly1*lz1*lelv)
224 $ , ta3(lx1*ly1*lz1*lelv)
225 $ , tb1(lx1*ly1*lz1*lelv)
226 $ , tb2(lx1*ly1*lz1*lelv)
227 $ , tb3(lx1*ly1*lz1*lelv)
230 real fact,factx,facty
232 ntot1 = lx1*ly1*lz1*nelv
233 ntot2 = lx2*ly2*lz2*nelv
234 ntot = lx1*ly1*lz1*nelt
238 call opcopy (tb1,tb2,tb3,vx,vy,vz)
239 call opcopy (vx,vy,vz,vxp(1,jp),vyp(1,jp),vzp(1,jp))
241 call convop_adj (ta1,ta2,ta3,tb1,tb2,tb3,vx,vy,vz)
243 call opcopy (vx,vy,vz,tb1,tb2,tb3)
246 tmp = bm1(i,1,1,1)*vtrans(i,1,1,1,ifield)
247 bfxp(i,jp) = bfxp(i,jp)-tmp*ta1(i)
248 bfyp(i,jp) = bfyp(i,jp)-tmp*ta2(i)
249 bfzp(i,jp) = bfzp(i,jp)-tmp*ta3(i)
254 call convop (ta1,vxp(1,jp))
255 call convop (ta2,vyp(1,jp))
256 call convop (ta3,vzp(1,jp))
259 tmp = bm1(i,1,1,1)*vtrans(i,1,1,1,ifield)
260 bfxp(i,jp) = bfxp(i,jp)+tmp*ta1(i)
261 bfyp(i,jp) = bfyp(i,jp)+tmp*ta2(i)
262 bfzp(i,jp) = bfzp(i,jp)+tmp*ta3(i)
267 call opcolv3 (ta1,ta2,ta3,dtdx,dtdy,dtdz,tp)
270 tmp = bm1(i,1,1,1)*vtrans(i,1,1,1,2)
271 bfxp(i,jp) = bfxp(i,jp)-tmp*ta1(i)
272 bfyp(i,jp) = bfyp(i,jp)-tmp*ta2(i)
273 bfzp(i,jp) = bfzp(i,jp)-tmp*ta3(i)
279 call opcopy (tb1,tb2,tb3,vx,vy,vz)
280 call opcopy (vx,vy,vz,vxp(1,jp),vyp(1,jp),vzp(1,jp))
282 call convop_adj (ta1,ta2,ta3,tb1,tb2,tb3,vx,vy,vz)
284 call opcopy (vx,vy,vz,tb1,tb2,tb3)
287 tmp = bm1(i,1,1,1)*vtrans(i,1,1,1,ifield)
288 bfxp(i,jp) = bfxp(i,jp)-tmp*ta1(i)
289 bfyp(i,jp) = bfyp(i,jp)-tmp*ta2(i)
292 call convop (ta1,vxp(1,jp))
293 call convop (ta2,vyp(1,jp))
296 tmp = bm1(i,1,1,1)*vtrans(i,1,1,1,ifield)
297 bfxp(i,jp) = bfxp(i,jp)+tmp*ta1(i)
298 bfyp(i,jp) = bfyp(i,jp)+tmp*ta2(i)
303 call opcolv3 (ta1,ta2,ta3,dtdx,dtdy,dtdz,tp)
306 tmp = bm1(i,1,1,1)*vtrans(i,1,1,1,2)
307 bfxp(i,jp) = bfxp(i,jp)-tmp*ta1(i)
308 bfyp(i,jp) = bfyp(i,jp)-tmp*ta2(i)
322 parameter(lxy=lx1*ly1*lz1,ltd=lxd*lyd*lzd)
323 common /scrcv/ fx(ltd),fy(ltd),fz(ltd)
324 $ , uf1(ltd),uf2(ltd),uf3(ltd),uf4(ltd),uf5(ltd),uf6(ltd)
325 real urx(ltd),usx(ltd),utx(ltd)
326 real ury(ltd),usy(ltd),uty(ltd)
327 real urz(ltd),usz(ltd),utz(ltd)
328 real bdux(1),bduy(1),bduz(1),u(1),cx(1),cy(1),cz(1)
329 real udx(1),udy(1),udz(1)
332 real bdrx(1), bdry(1),bdrz (1)
340 ntot1=lx1*ly1*lz1*nelv
351 call intp_rstd(uf1,udx(iu),lx1,lxd,if3d,0)
352 call grad_rst(urx,usx,utx,uf1,lxd,if3d)
354 call intp_rstd(uf2,udy(iu),lx1,lxd,if3d,0)
355 call grad_rst(ury,usy,uty,uf2,lxd,if3d)
357 call intp_rstd(uf3,udz(iu),lx1,lxd,if3d,0)
358 call grad_rst(urz,usz,utz,uf3,lxd,if3d)
361 uf4(i)=fx(i)*(rx(i,1,e)*urx(i)+rx(i,4,e)*usx(i)
362 $ +rx(i,7,e)*utx(i))+
363 $ fy(i)*(rx(i,1,e)*ury(i)+rx(i,4,e)*usy(i)
364 $ +rx(i,7,e)*uty(i))+
365 $ fz(i)*(rx(i,1,e)*urz(i)+rx(i,4,e)*usz(i)
367 uf5(i)=fx(i)*(rx(i,2,e)*urx(i)+rx(i,5,e)*usx(i)
368 $ +rx(i,8,e)*utx(i))+
369 $ fy(i)*(rx(i,2,e)*ury(i)+rx(i,5,e)*usy(i)
370 $ +rx(i,8,e)*uty(i))+
371 $ fz(i)*(rx(i,2,e)*urz(i)+rx(i,5,e)*usz(i)
373 uf6(i)=fx(i)*(rx(i,3,e)*urx(i)+rx(i,6,e)*usx(i)
374 $ +rx(i,9,e)*utx(i))+
375 $ fy(i)*(rx(i,3,e)*ury(i)+rx(i,6,e)*usy(i)
376 $ +rx(i,9,e)*uty(i))+
377 $ fz(i)*(rx(i,3,e)*urz(i)+rx(i,6,e)*usz(i)
381 call intp_rstd(bdux(ib),uf4,lx1,lxd,if3d,1)
382 call intp_rstd(bduy(ib),uf5,lx1,lxd,if3d,1)
383 call intp_rstd(bduz(ib),uf6,lx1,lxd,if3d,1)
399 call intp_rstd(uf1,udx(iu),lx1,lxd,if3d,0)
400 call grad_rst(urx,usx,utx,uf1,lxd,if3d)
402 call intp_rstd(uf2,udy(iu),lx1,lxd,if3d,0)
403 call grad_rst(ury,usy,uty,uf2,lxd,if3d)
406 uf4(i) = fx(i)*(rx(i,1,e)*urx(i)+rx(i,3,e)*usx(i))+
407 $ fy(i)*(rx(i,1,e)*ury(i)+rx(i,3,e)*usy(i))
408 uf5(i) = fx(i)*(rx(i,2,e)*urx(i)+rx(i,4,e)*usx(i))+
409 $ fy(i)*(rx(i,2,e)*ury(i)+rx(i,4,e)*usy(i))
412 call intp_rstd(bdux(ib),uf4,lx1,lxd,if3d,1)
413 call intp_rstd(bduy(ib),uf5,lx1,lxd,if3d,1)
439 common /scrns/ ta1(lx1,ly1,lz1,lelv)
440 $ , ta2(lx1,ly1,lz1,lelv)
441 $ , ta3(lx1,ly1,lz1,lelv)
443 ntot1 = lx1*ly1*lz1*nelv
448 call add3s2 (ta1,exx1p(1,jp),exx2p(1,jp),ab1,ab2,ntot1)
449 call add3s2 (ta2,exy1p(1,jp),exy2p(1,jp),ab1,ab2,ntot1)
450 call copy (exx2p(1,jp),exx1p(1,jp),ntot1)
451 call copy (exy2p(1,jp),exy1p(1,jp),ntot1)
452 call copy (exx1p(1,jp),bfxp(1,jp),ntot1)
453 call copy (exy1p(1,jp),bfyp(1,jp),ntot1)
454 call add2s1 (bfxp(1,jp),ta1,ab0,ntot1)
455 call add2s1 (bfyp(1,jp),ta2,ab0,ntot1)
457 call add3s2 (ta3,exz1p(1,jp),exz2p(1,jp),ab1,ab2,ntot1)
458 call copy (exz2p(1,jp),exz1p(1,jp),ntot1)
459 call copy (exz1p(1,jp),bfzp(1,jp),ntot1)
460 call add2s1 (bfzp(1,jp),ta3,ab0,ntot1)
477 COMMON /scrns/ ta1(lx1,ly1,lz1,lelv)
478 $ , ta2(lx1,ly1,lz1,lelv)
479 $ , ta3(lx1,ly1,lz1,lelv)
480 $ , tb1(lx1,ly1,lz1,lelv)
481 $ , tb2(lx1,ly1,lz1,lelv)
482 $ , tb3(lx1,ly1,lz1,lelv)
483 $ , h2(lx1,ly1,lz1,lelv)
485 ntot1 = lx1*ly1*lz1*nelv
487 call cmult2(h2,vtrans(1,1,1,1,ifield),const,ntot1)
489 $ ,vxp(1,jp),vyp(1,jp),vzp(1,jp),bm1,bd(2))
493 call opcolv3c(ta1,ta2,ta3,vxlagp(1,ilag-1,jp),
494 $ vylagp(1,ilag-1,jp),
495 $ vzlagp(1,ilag-1,jp),
496 $ bm1lag(1,1,1,1,ilag-1),bd(ilag+1))
498 call opcolv3c(ta1,ta2,ta3,vxlagp(1,ilag-1,jp),
499 $ vylagp(1,ilag-1,jp),
500 $ vzlagp(1,ilag-1,jp),
503 call opadd2 (tb1,tb2,tb3,ta1,ta2,ta3)
505 call opadd2col (bfxp(1,jp),bfyp(1,jp),bfzp(1,jp),tb1,tb2,tb3,h2)
519 real resv1 (lx1,ly1,lz1,1)
520 real resv2 (lx1,ly1,lz1,1)
521 real resv3 (lx1,ly1,lz1,1)
522 real h1 (lx1,ly1,lz1,1)
523 real h2 (lx1,ly1,lz1,1)
524 common /scruz/ w1(lx1,ly1,lz1,lelv)
525 $ , w2(lx1,ly1,lz1,lelv)
526 $ , w3(lx1,ly1,lz1,lelv)
527 $ , prextr(lx2,ly2,lz2,lelv)
529 ntot1 = lx1*ly1*lz1*nelv
530 ntot2 = lx2*ly2*lz2*nelv
532 call bcdirvc (vxp(1,jp),vyp(1,jp),vzp(1,jp)
533 $ ,v1mask,v2mask,v3mask)
535 call opgradt(resv1,resv2,resv3,prextr)
536 call opadd2(resv1,resv2,resv3,bfxp(1,jp),bfyp(1,jp),bfzp(1,jp))
537 call ophx (w1,w2,w3,vxp(1,jp),vyp(1,jp),vzp(1,jp),h1,h2)
538 call opsub2(resv1,resv2,resv3,w1,w2,w3)
564 IF (.NOT.iftmsh(ifield)) imesh = 1
565 IF ( iftmsh(ifield)) imesh = 2
591 COMMON /cprint/ ifprint
595 COMMON /scrns/ ta(lx1,ly1,lz1,lelt)
596 $ ,tb(lx1,ly1,lz1,lelt)
597 COMMON /scrvh/ h1(lx1,ly1,lz1,lelt)
598 $ ,h2(lx1,ly1,lz1,lelt)
602 napproxt(1,ifld1) = laxtt
614 IF (ifield.EQ.2.AND.nio.EQ.0)
THEN
615 WRITE (6,*)
' Temperature/Passive scalar solution'
625 ntot = lx1*ly1*lz1*nel
628 IF (iftran) intype = -1
629 CALL sethlm (h1,h2,intype)
631 CALL add2 (h2,ta,ntot)
632 CALL bcdirsc (tp(1,ifield-1,jp))
633 CALL axhelm (ta,tp(1,ifield-1,jp),h1,h2,imesh,1)
634 CALL sub3 (tb,bqp(1,ifield-1,jp),ta,ntot)
636 CALL add2 (tb,ta,ntot)
638 CALL hmholtz (name4t,ta,tb,h1,h2
639 $ ,tmask(1,1,1,1,ifield-1)
640 $ ,tmult(1,1,1,1,ifield-1)
641 $ ,imesh,tolht(ifield),nmxt(ifield-1),1)
643 CALL add2 (tp(1,ifield-1,jp),ta,ntot)
646 CALL add2 (bqp(1,ifield-1,jp),ta,ntot)
668 IF (ifadvc(ifield).AND.(.NOT.ifchar))
CALL convabp
670 IF ((iftran.AND..NOT.ifchar).OR.
671 $ (iftran.AND..NOT.ifadvc(ifield).AND.ifchar))
CALL makebdqp
673 IF (ifadvc(ifield).AND.ifchar)
write(6,*)
'no convchp'
674 IF (ifadvc(ifield).AND.ifchar)
call exitt
691 ntot = lx1*ly1*lz1*nelfld(ifield)
695 call rzero ( bqp(1,ifield-1,jp) , ntot)
696 call setqvol ( bqp(1,ifield-1,jp) )
697 call col2 ( bqp(1,ifield-1,jp) ,bm1,ntot)
717 common /scruz/ ta(lx1,ly1,lz1,lelt)
718 $ , ua(lx1,ly1,lz1,lelt)
719 $ , ub(lx1,ly1,lz1,lelt)
720 $ , uc(lx1,ly1,lz1,lelt)
724 ntot1 = lx1*ly1*lz1*nel
727 call opcopy(ua,ub,uc,vx,vy,vz)
728 call opcopy(vx,vy,vz,vxp(1,jp),vyp(1,jp),vzp(1,jp))
729 call convop(ta,t(1,1,1,1,ifield-1))
730 call opcopy(vx,vy,vz,ua,ub,uc)
733 call convop (ua,tp(1,ifield-1,jp))
736 call add2 (ta,ua,ntot1)
738 call copy (ta,ua,ntot1)
740 call cmult(ta,coeff,ntot1)
744 call col2 (ta,vtrans(1,1,1,1,ifield),ntot1)
745 call subcol3 (bqp(1,ifield-1,jp),bm1,ta,ntot1)
760 COMMON /scruz/ ta(lx1,ly1,lz1,lelt)
766 ntot1 = lx1*ly1*lz1*nel
768 CALL add3s2 (ta,vgradt1p(1,ifield-1,jp),
769 $ vgradt2p(1,ifield-1,jp),ab1,ab2,ntot1)
770 CALL copy ( vgradt2p(1,ifield-1,jp),
771 $ vgradt1p(1,ifield-1,jp),ntot1)
772 CALL copy ( vgradt1p(1,ifield-1,jp),
773 $ bqp(1,ifield-1,jp),ntot1)
774 CALL add2s1 (bqp(1,ifield-1,jp),ta,ab0,ntot1)
792 COMMON /scrns/ ta(lx1,ly1,lz1,lelt)
793 $ , tb(lx1,ly1,lz1,lelt)
794 $ , h2(lx1,ly1,lz1,lelt)
797 ntot1 = lx1*ly1*lz1*nel
799 CALL copy (h2,vtrans(1,1,1,1,ifield),ntot1)
800 CALL cmult (h2,const,ntot1)
802 CALL col3 (tb,bm1,tp(1,ifield-1,jp),ntot1)
803 CALL cmult (tb,bd(2),ntot1)
807 CALL col3 (ta,bm1lag(1,1,1,1,ilag-1),
808 $ tlagp(1,ilag-1,ifield-1,jp),ntot1)
811 $ tlagp(1,ilag-1,ifield-1,jp),ntot1)
813 CALL add2s2(tb,ta,bd(ilag+1),ntot1)
816 CALL col2 (tb,h2,ntot1)
817 CALL add2 (bqp(1,ifield-1,jp),tb,ntot1)
833 ntot1 = lx1*ly1*lz1*nelfld(ifield)
835 DO 100 ilag=nbdinp-1,2,-1
836 CALL copy (tlagp(1,ilag ,ifield-1,jp),
837 $ tlagp(1,ilag-1,ifield-1,jp),ntot1)
840 CALL copy (tlagp(1,1,ifield-1,jp),tp(1,ifield-1,jp),ntot1)
862 common /scrns/ w1(lx1,ly1,lz1,lelv)
863 $ , w2(lx1,ly1,lz1,lelv)
864 $ , w3(lx1,ly1,lz1,lelv)
865 $ , dv1(lx1,ly1,lz1,lelv)
866 $ , dv2(lx1,ly1,lz1,lelv)
867 $ , dv3(lx1,ly1,lz1,lelv)
868 $ , dp(lx2,ly2,lz2,lelv)
869 common /scrvh/ h1(lx1,ly1,lz1,lelv)
870 $ , h2(lx1,ly1,lz1,lelv)
871 common /scrhi/ h2inv(lx1,ly1,lz1,lelv)
872 COMMON /scrch/ prextr(lx2,ly2,lz2,lelv)
876 if (icalld.eq.0) tpres=0.0
880 ntot1 = lx1*ly1*lz1*nelv
881 ntot2 = lx2*ly2*lz2*nelv
885 call rzero (h1,ntot1)
887 call cmult2 (h2,vtrans(1,1,1,1,ifield),dtbd,ntot1)
890 call opdiv (dp,ux,uy,uz)
900 if (istep.ge.istart.and.istart.ne.0) ifprjp=.true.
906 call esolver (dp,h1,h2,h2inv,intype)
916 call opbinv (dv1,dv2,dv3,w1 ,w2 ,w3 ,h2inv)
917 call opadd2 (ux ,uy ,uz ,dv1,dv2,dv3)
921 call add3(up,prextr,dp,ntot2)
933 COMMON /ctmp0/ dpr(lx2,ly2,lz2,lelv)
934 REAL PREXTR (LX2,LY2,LZ2,LELV)
936 ntot2 = lx2*ly2*lz2*nelv
937 if (nbd.eq.1.or.nbd.eq.2)
then
938 call copy (prextr,prp(1,jp),ntot2)
939 elseif (nbd.eq.3)
then
940 const = dtlag(1)/dtlag(2)
941 call sub3 (dpr,prp(1,jp),prlagp(1,1,jp),ntot2)
942 call cmult(dpr,const,ntot2)
943 call add3 (prextr,prp(1,jp),dpr,ntot2)
944 elseif (nbd.gt.3)
then
945 write (6,*)
'Pressure extrapolation cannot be completed'
946 write (6,*)
'Try a lower-order temporal scheme'
960 if (nbdinp.eq.3)
then
961 ntot2 = lx2*ly2*lz2*nelv
962 call copy (prlagp(1,1,jp),prp(1,jp),ntot2)
975 ntotv = lx1*ly1*lz1*nelv
976 ntotp = lx2*ly2*lz2*nelv
977 ntott = lx1*ly1*lz1*nelt
980 call normvc(h1,semi,pl2,plinf,vxp(1,j),vyp(1,j),vzp(1,j))
983 write(6,*)
'this is pl2:',pl2
996 if (npert.eq.1)
write(6,1) istep,time,(sigma(j),j=1,npert)
997 if (npert.eq.2)
write(6,2) istep,time,(sigma(j),j=1,npert)
998 if (npert.eq.3)
write(6,3) istep,time,(sigma(j),j=1,npert)
999 if (npert.eq.4)
write(6,4) istep,time,(sigma(j),j=1,npert)
1000 if (npert.eq.5)
write(6,5) istep,time,(sigma(j),j=1,npert)
1001 if (npert.eq.6)
write(6,6) istep,time,(sigma(j),j=1,npert)
1002 if (npert.eq.7)
write(6,7) istep,time,(sigma(j),j=1,npert)
1003 if (npert.eq.8)
write(6,8) istep,time,(sigma(j),j=1,npert)
1004 if (npert.eq.9)
write(6,9) istep,time,(sigma(j),j=1,npert)
1006 1
format(i8,1p2e12.4,
' pgrow')
1007 2
format(i8,1p3e12.4,
' pgrow')
1008 3
format(i8,1p4e12.4,
' pgrow')
1009 4
format(i8,1p5e12.4,
' pgrow')
1010 5
format(i8,1p6e12.4,
' pgrow')
1011 6
format(i8,1p7e12.4,
' pgrow')
1012 7
format(i8,1p8e12.4,
' pgrow')
1013 8
format(i8,1p9e12.4,
' pgrow')
1014 9
format(i8,1p10e12.4,
' pgrow')
1031 $ (vxp(1,jpp),vyp(1,jpp),vzp(1,jpp),prp(1,jpp),tp(1,1,jpp),1,s3)
1043 ntotp = lx2*ly2*lz2*nelv
1044 ntotv = lx1*ly1*lz1*nelv
1045 ntott = lx1*ly1*lz1*nelt
1049 if (if3d)
call add2s2(vzp(1,i),vzp(1,j),
scale,ntotv)
1053 call add2s2(vxlagp(1,l,i),vxlagp(1,l,j),
scale,ntotv)
1054 call add2s2(vylagp(1,l,i),vylagp(1,l,j),
scale,ntotv)
1055 if (if3d)
call add2s2(vzlagp(1,l,i),vzlagp(1,l,j),
scale,ntotv)
1057 $
call add2s2(prlagp(1,l,i),prlagp(1,l,j),
scale,ntotp)
1062 if (if3d)
call add2s2(exz1p(1,i),exz1p(1,j),
scale,ntotv)
1066 if (if3d)
call add2s2(exz2p(1,i),exz2p(1,j),
scale,ntotv)
1071 ntotk = lx1*ly1*lz1*nelfld(k+2)
1074 call add2s2(tlagp(1,l,k1,i),tlagp(1,l,k1,j),
scale,ntotk)
1076 call add2s2(vgradt1p(1,k1,i),vgradt1p(1,k1,j),
scale,ntotk)
1077 call add2s2(vgradt2p(1,k1,i),vgradt2p(1,k1,j),
scale,ntotk)
1088 common/normset/pran, ray, rayc
1090 ntotv=lx1*ly1*lz1*nelv
1091 ntott=lx1*ly1*lz1*nelt
1093 s1 = rayc*
glsc3(vxp(1,i),bm1,vxp(1,j),ntotv)
1094 s2 = rayc*
glsc3(vyp(1,i),bm1,vyp(1,j),ntotv)
1096 if (if3d) s3 = rayc*
glsc3(vzp(1,i),bm1,vzp(1,j),ntotv)
1099 if (ifheat) t1=pran*ray*ray*
glsc3(tp(1,1,i),bm1,tp(1,1,j),ntott)
1136 real v1(1) , v2(1), v3(1)
1137 real normsq1,normsq2,normsq3,
opnorm
1139 ntotv=lx1*ly1*lz1*nelv
1140 normsq1=
glsc3(v1,bm1,v1,ntotv)
1141 normsq2=
glsc3(v2,bm1,v2,ntotv)
1143 normsq3=
glsc3(v3,bm1,v3,ntotv)
1148 opnorm2=normsq1+normsq2+normsq3
1160 ntotv = lx1*ly1*lz1*nelv
1161 tnorm = sqrt(
glsc3(temp,bm1,temp,ntotv) /voltm1)
1171 real v1(1),v2(1),v3(1),temp(1)
1172 real normsq1,normsq2,normsq3,normsqt,
dmnorm
1173 common/normset/pran, ray, rayc
1175 ntotv=lx1*ly1*lz1*nelv
1176 normsq1=(rayc)*
glsc3(v1,bm1,v1,ntotv)
1177 normsq2=(rayc)*
glsc3(v2,bm1,v2,ntotv)
1179 normsq3=(rayc)*
glsc3(v3,bm1,v3,ntotv)
1185 normsqt = (pran*ray*ray)*
glsc3(temp,bm1,temp,ntotv)
1190 dmnorm1=sqrt((normsq1+normsq2+normsq3+normsqt)/volvm1)
1202 real v1(1),v2(1),v3(1),temp(1)
1204 ltotv=lx1*ly1*lz1*lelv
1205 ltott=lx1*ly1*lz1*lelt
1207 call cmult(v1,alpha,ltotv)
1208 call cmult(v2,alpha,ltotv)
1209 if (if3d)
call cmult(v3,alpha,ltotv)
1210 if (ifheat)
call cmult(temp,alpha,ltott*ldimt)
1221 real v1(*),v2(*),v3(*)
1223 ntotv=lx1*ly1*lz1*nelv
1225 call cmult(v1,alpha,ntotv)
1226 call cmult(v2,alpha,ntotv)
1228 if (if3d)
call cmult(v3,alpha,ntotv)
1240 $ (vxp(1,jpp),vyp(1,jpp),vzp(1,jpp),tp(1,1,jpp),jpp)
1250 real vxq(1),vyq(1),vzq(1),tq(1)
1252 common /pertsave/ timestart,tinitial
1258 logical if_restart,if_ortho_lyap
1259 common/restar/if_restart,if_ortho_lyap
1261 character*132 lyprestart
1262 common/restflename/lyprestart
1267 $
write(6,8) istep,icount,time,twt,(lyap(k,jpp),k=1,3),jpp
1268 8
format(i9,i4,2f8.4,1p3e12.4,i3,
'clyap')
1270 if(time.lt.twt)
then
1275 pertnorm =
dmnorm1(vxq,vyq,vzq,tq)
1276 pertinvnorm = 1.0/pertnorm
1278 lyap(3,jpp) = pertnorm
1284 if (jpp.eq.1) icount = icount + 1
1287 irescale = param(128)
1288 if (icount.eq.irescale)
then
1290 lyapsum = lyap(2,jpp)
1291 oldpertnorm = lyap(3,jpp)
1292 pertnorm=
dmnorm1(vxq,vyq,vzq,tq)
1294 lyap(1,jpp) = log(pertnorm/oldpertnorm)/(time-timestart)
1295 lyapsum = lyapsum + log(pertnorm/oldpertnorm)
1296 lyap(2,jpp) = lyapsum
1300 write(6 ,1) istep,time,lyap(1,jpp),lyapsum,pertnorm,jpp
1301 write(79,2) time,lyap(1,jpp),lyapsum,pertnorm,oldpertnorm,jpp
1302 1
format(i9,1p4e17.8,i4,
'lyap')
1303 2
format(1p5e17.8,i4,
'lyap')
1306 if (jpp.eq.1)
open(unit=96,
file=lyprestart)
1307 write(96,9) lyapsum,timestart,jpp
1308 9
format(1p2e19.11,i9)
1309 if (jpp.eq.npert)
close(96)
1312 pertinvnorm = 1.0/pertnorm
1314 lyap(3,jpp) = pertnorm
1316 if (jpp.eq.npert)
then
1321 if_ortho_lyap = .false.
1322 if (param(125).gt.0) if_ortho_lyap = .true.
1335 ntotp = lx2*ly2*lz2*nelv
1338 $ (vxp(1,jpp),vyp(1,jpp),vzp(1,jpp),tp(1,1,jpp),pertinvnorm)
1339 call cmult(prp(1,jpp),pertinvnorm,ntotp)
1341 call opscale(exx1p(1,jpp),exy1p(1,jpp),exz1p(1,jpp)
1342 $ ,vgradt1p(1,1,jpp),pertinvnorm)
1343 call opscale(exx2p(1,jpp),exy2p(1,jpp),exz2p(1,jpp)
1344 $ ,vgradt2p(1,1,jpp),pertinvnorm)
1346 ltotv = lx1*ly1*lz1*lelv
1347 ltotp = lx2*ly2*lz2*lelv
1349 call cmult( tlagp(1,1,1,jpp),pertinvnorm,ltotv*(lorder-1)*ldimt)
1350 call cmult(vxlagp(1,1,jpp),pertinvnorm,ltotv*(lorder-1))
1351 call cmult(vylagp(1,1,jpp),pertinvnorm,ltotv*(lorder-1))
1352 call cmult(vzlagp(1,1,jpp),pertinvnorm,ltotv*(lorder-1))
1353 call cmult(prlagp(1,1,jpp),pertinvnorm,ltotp*(lorder-2))
1355 if (nio.eq.0)
write(6,1) istep,pertnorm,pertinvnorm,jpp,
'PNORM'
1356 1
format(i4,1p2e12.4,i4,a5)
1357 pertnorm = pertnorm*pertinvnorm
subroutine bcneusc(S, ITYPE)
subroutine bcdirvc(V1, V2, V3, mask1, mask2, mask3)
subroutine scale(xyzl, nl)
subroutine set_dealias_rx
subroutine intp_rstd(ju, u, mx, md, if3d, idir)
subroutine grad_rst(ur, us, ut, u, md, if3d)
subroutine hmholtz(name, u, rhs, h1, h2, mask, mult, imsh, tli, maxit, isd)
subroutine axhelm(au, u, helm1, helm2, imesh, isd)
subroutine ophinv(o1, o2, o3, i1, i2, i3, h1, h2, tolh, nmxhi)
subroutine opnorm(unorm, ux, uy, uz, type3)
subroutine col3(a, b, c, n)
subroutine invers2(a, b, n)
subroutine invcol2(a, b, n)
function glsc3(a, b, mult, n)
subroutine add2s2(a, b, c1, n)
subroutine add3(a, b, c, n)
subroutine subcol3(a, b, c, n)
subroutine add3s2(a, b, c, c1, c2, n)
subroutine sub3(a, b, c, n)
subroutine cmult(a, const, n)
subroutine add2s1(a, b, c1, n)
subroutine esolver(RES, H1, H2, H2INV, INTYPE)
subroutine opgradt(outx, outy, outz, inpfld)
subroutine opcolv3c(a1, a2, a3, b1, b2, b3, c, d)
subroutine convop(conv, fi)
subroutine opcmult(a, b, c, const)
subroutine opbinv(out1, out2, out3, inp1, inp2, inp3, h2inv)
subroutine opadd2col(a1, a2, a3, b1, b2, b3, c)
subroutine opcopy(a1, a2, a3, b1, b2, b3)
subroutine opdiv(outfld, inpx, inpy, inpz)
subroutine opcolv3(a1, a2, a3, b1, b2, b3, c)
subroutine opcolv2(a1, a2, a3, b1, b2)
subroutine normvc(h1, semi, l2, linf, x1, x2, x3)
subroutine ophx(out1, out2, out3, inp1, inp2, inp3, h1, h2)
subroutine nekuf(f1, f2, f3)
subroutine opadd2(a1, a2, a3, b1, b2, b3)
subroutine opsub2(a1, a2, a3, b1, b2, b3)
function opnorm2(v1, v2, v3)
subroutine pert_ortho_norm1(k)
subroutine computelyap1(vxq, vyq, vzq, tq, jpp)
real function dmnorm(v1, v2, v3, temp)
subroutine opscalev(v1, v2, v3, alpha)
subroutine rescalepert(pertnorm, pertinvnorm, jpp)
function pert_inner_prod(i, j)
subroutine pert_add2s2(i, j, scale)
subroutine opscale(v1, v2, v3, temp, alpha)
subroutine pert_ortho_norm
subroutine incomprp(ux, uy, uz, up)
subroutine cresvipp(resv1, resv2, resv3, h1, h2)
subroutine extrapprp(prextr)
subroutine perturbv(igeom)
function dmnorm1(v1, v2, v3, temp)
subroutine convop_adj(bdux, bduy, bduz, udx, udy, udz, cx, cy, cz)
subroutine cdscalp(igeom)
subroutine advabp_adjoint
subroutine outpost2(v1, v2, v3, vp, vt, nfldt, name3)
subroutine sethlm(h1, h2, intloc)
subroutine cmult2(A, B, CONST, N)