11 CHARACTER CBM*1,CBF*3,CBT*3,CB*3
16 IF (iftmsh(ifld)) ifmelt=.true.
24 IF (cbt(1:1).EQ.
'M')
THEN
29 IF (cbf(1:1).EQ.
'M' .OR. cbf(1:1).EQ.
'm')
THEN
35 IF (cbf.EQ.
'mv ' .AND. cbm.EQ.
'+' )
THEN
41 IF (cbf(1:1).EQ.
'V' .OR. cbf(1:1).EQ.
'v' .OR.
42 $ cbf(1:1).EQ.
'W' )
THEN
45 IF (ifmelt .OR. cbm.EQ.
'+') cb=
'SYM'
48 IF (cbt.EQ.
'T ' .OR. cbt.EQ.
't ')
THEN
51 IF (cbm.EQ.
'+') cb=
'SYM'
54 IF (cbf.EQ.
'P ' .OR. cbf.EQ.
'E ')
THEN
57 IF (cbm.EQ.
'-') cb=
'FIX'
58 IF (cbm.EQ.
'+') cb=
'SYM'
61 IF (cbt.EQ.
'P ' .OR. cbt.EQ.
'E ')
THEN
64 IF (cbm.EQ.
'-') cb=
'FIX'
65 IF (cbm.EQ.
'+') cb=
'SYM'
69 IF (cbf.EQ.
' ') ifld = 2
71 IF (cbm.EQ.
'-') cb =
'FIX'
73 200 cbc(ifc,iel,0) = cb
75 250 bc(i,ifc,iel,0)=bc(i,ifc,iel,ifld)
87 COMMON /scruz/ fm1(lx1,ly1,lz1,lelt)
88 $ , fm2(lx1,ly1,lz1,lelt)
89 $ , fm3(lx1,ly1,lz1,lelt)
90 $ , phi(lx1,ly1,lz1,lelt)
92 ntot1=lx1*ly1*lz1*nelv
94 CALL rzero (fm1,ntot1)
95 CALL rzero (fm2,ntot1)
96 CALL rzero (fm3,ntot1)
98 CALL divws (fm1,vx,phi,nelv,1)
99 CALL divws (fm2,vy,phi,nelv,2)
100 CALL add2 (bfx,fm1,ntot1)
101 CALL add2 (bfy,fm2,ntot1)
103 CALL divws (fm3,vz,phi,nelv,3)
104 CALL add2 (bfz,fm3,ntot1)
116 COMMON /scruz/ fmt(lx1,ly1,lz1,lelt)
117 $ , phi(lx1,ly1,lz1,lelt)
121 ntot1= lx1*ly1*lz1*nel
123 CALL rzero (fmt,ntot1)
124 CALL divws (fmt,t(1,1,1,1,ifield-1),phi,nel,1)
125 CALL addcol3 (bq(1,1,1,1,ifield-1),fmt,vtrans(1,1,1,1,ifield),
131 subroutine divws (fms,sfv,phi,nel,idir)
140 COMMON /scrsf/ phr(lx1,ly1,lz1,lelt)
141 $ , phs(lx1,ly1,lz1,lelt)
142 $ , pht(lx1,ly1,lz1,lelt)
144 dimension fms(lx1,ly1,lz1,1)
145 $ , sfv(lx1,ly1,lz1,1)
146 $ , phi(lx1,ly1,lz1,1)
151 CALL col3 (phi,sfv,wx,ntot1)
152 CALL urst (phi,phr,phs,pht,nel)
153 CALL addcol3 (fms,rxm1,phr,ntot1)
154 CALL addcol3 (fms,sxm1,phs,ntot1)
155 IF (ldim.EQ.3)
CALL addcol3 (fms,txm1,pht,ntot1)
157 CALL col3 (phi,sfv,wy,ntot1)
158 CALL urst (phi,phr,phs,pht,nel)
159 CALL addcol3 (fms,rym1,phr,ntot1)
160 CALL addcol3 (fms,sym1,phs,ntot1)
161 IF (ldim.EQ.3)
CALL addcol3 (fms,tym1,pht,ntot1)
164 CALL col3 (phi,sfv,wz,ntot1)
165 CALL urst (phi,phr,phs,pht,nel)
166 CALL addcol3 (fms,rzm1,phr,ntot1)
167 CALL addcol3 (fms,szm1,phs,ntot1)
168 CALL addcol3 (fms,tzm1,pht,ntot1)
171 CALL col2 (fms,bm1,ntot1)
174 IF (ifaxis)
CALL axifms (fms,sfv,phi,nel,idir)
188 COMMON /scrsf/ phr(lx1,ly1,lz1,lelt)
189 $ , phs(lx1,ly1,lz1,lelt)
190 $ , pht(lx1,ly1,lz1,lelt)
192 dimension fms(lx1,ly1,lz1,1)
193 $ , phi(lx1,ly1,lz1,1)
194 $ , sfv(lx1,ly1,lz1,1)
196 equivalence(wys(1),pht(1,1,1,1))
200 CALL col3 (phi,sfv,wy,ntot1)
203 IF ( ifrzer(iel) )
THEN
205 CALL mxm (wy(1,1,1,iel),lx1,datm1,ly1,wys,1)
207 fms(ix,1,1,iel)= fms(ix,1,1,iel) + wxm1(ix)*wam1(1)*
208 $ wys(ix)*sfv(ix,1,1,iel)*jacm1(ix,1,1,iel)
213 fms(ix,iy,1,iel)=fms(ix,iy,1,iel) + phi(ix,iy,1,iel) *
214 $ bm1(ix,iy,1,iel) / ym1(ix,iy,1,iel)
217 CALL addcol4 (fms(1,1,1,iel),phi(1,1,1,iel),jacm1(1,1,1,iel),
244 if (.not.ifrich)
call lagmshv (nel)
260 common /scrsf/ wvx(lx1*ly1*lz1,lelt)
261 $ , wvy(lx1*ly1*lz1,lelt)
262 $ , wvz(lx1*ly1*lz1,lelt)
263 common /scrch/ wtx(lx1*ly1*lz1,lelt)
264 $ , wty(lx1*ly1*lz1,lelt)
265 common /scrmg/ wtz(lx1*ly1*lz1,lelt)
266 $ , rnx(lx1*ly1*lz1,lelt)
267 $ , rny(lx1*ly1*lz1,lelt)
268 $ ,
rnz(lx1*ly1*lz1,lelt)
269 common /scruz/ dsa(lx1*ly1*lz1,lelt)
270 $ , qni(lx1*ly1*lz1,lelt)
271 $ , smt(lx1*ly1*lz1,lelt)
272 $ , ta(lx1*ly1*lz1,lelt)
274 logical ifalgn,ifnorx,ifnory,ifnorz,ifdsmv,ifregw
287 if (cb.eq.
'ms ' .or. cb.eq.
'MS ' .or.
288 $ cb.eq.
'msi' .or. cb.eq.
'MSI' .or.
289 $ cb.eq.
'mm ' .or. cb.eq.
'MM ' .or.
290 $ cb.eq.
'mv ' .OR. cb.eq.
'mvn' .or.
292 call facexv (unx(1,1,f,e),uny(1,1,f,e),
293 $ unz(1,1,f,e),rnx(1,e),
294 $ rny(1,e),
rnz(1,e),f,1)
301 call rzero3 (wvx,wvy,wvz,n)
302 call rzero3 (wtx,wty,wtz,n)
316 if (cb.eq.
'mv ' .or. cb.eq.
'mvn' .or.
317 $ cb.eq.
'mm ' .or. cb.eq.
'MM ' .or.
318 $ cb.eq.
'msi' .or. cb.eq.
'MSI' .or.
319 $ cb.eq.
'ms ' .or. cb.eq.
'MS ')
then
321 call facec3 (wvx(1,e),wvy(1,e),wvz(1,e),
322 $ vx(1,1,1,e),vy(1,1,1,e),vz(1,1,1,e),f)
324 $
call norcmp2(wvx(1,e),wvy(1,e),wvz(1,e),e,f)
334 if (if3d)
call dsavg(wvz)
336 if (istep.eq.0)
call opcopy(wx,wy,wz,wvx,wvy,wvz)
346 if (ifregw) iregw = 1
348 if (iregw.eq.1) ifregw = .true.
351 if (ifdsmv) idsmv = 1
353 if (idsmv.eq.1) ifdsmv = .true.
376 if (ifmelt .and. istep.gt.0)
then
379 call cqnet (qni,ta,nel)
383 if (cb.eq.
'MLI')
call facsmt (smt(1,e),f)
384 if (cb.eq.
'MLI' .or. cb.eq.
'MCI')
then
385 call facexs (area(1,1,f,e),ta,f,1)
386 call add2 (dsa(1,e),ta,nxyz1)
389 call dssum (smt,lx1,ly1,lz1)
390 call dssum (dsa,lx1,ly1,lz1)
394 if (cb.eq.
'MLI')
then
395 rhola = -0.5 * bc(5,f,e,ifield)
396 call facemt (wtx(1,e),wty(1,e),wtz(1,e),
397 $ rnx(1,e),rny(1,e),
rnz(1,e),
398 $ qni(1,e),dsa(1,e),smt(1,e),
409 if (cb.eq.
'SYM')
then
410 call chknord (ifalgn,ifnorx,ifnory,ifnorz,f,e)
412 if (ifnorx)
call facev (wvx,e,f,0.0,lx1,ly1,lz1)
413 if (ifnory)
call facev (wvy,e,f,0.0,lx1,ly1,lz1)
414 if (ifnorz)
call facev (wvz,e,f,0.0,lx1,ly1,lz1)
415 if (.not.ifalgn)
call faczqn (wvx(1,e),wvy(1,e),
418 if (ifdsmv .or. ifmelt)
then
419 if (ifnorx)
call facev (wtx,e,f,0.0,lx1,ly1,lz1)
420 if (ifnory)
call facev (wty,e,f,0.0,lx1,ly1,lz1)
421 if (ifnorz)
call facev (wtz,e,f,0.0,lx1,ly1,lz1)
422 if (.not.ifalgn)
call faczqn (wtx(1,e),wty(1,e),
431 if (cb.eq.
'FIX')
then
433 call facev (wvx,e,f,0.0,lx1,ly1,lz1)
434 call facev (wvy,e,f,0.0,lx1,ly1,lz1)
435 if (ldim.eq.3)
call facev (wvz,e,f,0.0,lx1,ly1,lz1)
437 if (ifdsmv .or. ifmelt)
then
438 call facev (wtx,e,f,0.0,lx1,ly1,lz1)
439 call facev (wty,e,f,0.0,lx1,ly1,lz1)
440 if (ldim.eq.3)
call facev (wtz,e,f,0.0,lx1,ly1,lz1)
445 if (isweep.eq.1)
then
447 call dsop (wvx,
'MXA',lx1,ly1,lz1)
448 call dsop (wvy,
'MXA',lx1,ly1,lz1)
449 if (ldim.eq.3)
call dsop (wvz,
'MXA',lx1,ly1,lz1)
451 if (ifdsmv .or. ifmelt)
then
452 call dsop (wtx,
'MXA',lx1,ly1,lz1)
453 call dsop (wty,
'MXA',lx1,ly1,lz1)
454 if (ldim.eq.3)
call dsop (wtz,
'MXA',lx1,ly1,lz1)
458 call dsop (wvx,
'MNA',lx1,ly1,lz1)
459 call dsop (wvy,
'MNA',lx1,ly1,lz1)
460 if (ldim.eq.3)
call dsop (wvz,
'MNA',lx1,ly1,lz1)
462 if (ifdsmv .or. ifmelt)
then
463 call dsop (wtx,
'MNA',lx1,ly1,lz1)
464 call dsop (wty,
'MNA',lx1,ly1,lz1)
465 if (ldim.eq.3)
call dsop (wtz,
'MNA',lx1,ly1,lz1)
471 call rmask (wx,wy,wz,nel)
481 if (ldim.eq.3)
call add2 (wz,wvz,n)
483 if (ifdsmv .or. ifmelt)
then
486 if (ldim.eq.3)
call add2 (wz,wtz,n)
504 real wvx(lx1,ly1,lz1),wvy(lx1,ly1,lz1),wvz(lx1,ly1,lz1)
508 common /scruz/ r1(lx1,ly1,lz1),r2(lx1,ly1,lz1),r3(lx1,ly1,lz1)
510 call facind(i0,i1,j0,j1,k0,k1,lx1,ly1,lz1,f)
517 scale=wvx(i,j,k)*unx(l,1,f,e)
518 $ +wvy(i,j,k)*uny(l,1,f,e)
519 $ +wvz(i,j,k)*unz(l,1,f,e)
520 wvx(i,j,k) =
scale*unx(l,1,f,e)
521 wvy(i,j,k) =
scale*uny(l,1,f,e)
522 wvz(i,j,k) =
scale*unz(l,1,f,e)
533 subroutine norcmp (wt1,wt2,wt3,rnx,rny,rnz,ifc)
536 COMMON /scruz/ r1(lx1,ly1,lz1),r2(lx1,ly1,lz1),r3(lx1,ly1,lz1)
538 dimension wt1(lx1,ly1,lz1),wt2(lx1,ly1,lz1),wt3(lx1,ly1,lz1)
539 $ , rnx(lx1,ly1,lz1),rny(lx1,ly1,lz1),
rnz(lx1,ly1,lz1)
543 CALL copy (r1,wt1,nxyz1)
544 CALL copy (r2,wt2,nxyz1)
545 IF (ldim.EQ.3)
CALL copy (r3,wt3,nxyz1)
546 CALL facind2 (js1,jf1,jskip1,js2,jf2,jskip2,ifc)
549 DO 200 j2=js2,jf2,jskip2
550 DO 200 j1=js1,jf1,jskip1
551 wn = r1(j1,j2,1)*rnx(j1,j2,1) +
552 $ r2(j1,j2,1)*rny(j1,j2,1)
553 wt1(j1,j2,1) = wn *rnx(j1,j2,1)
554 wt2(j1,j2,1) = wn *rny(j1,j2,1)
557 DO 300 j2=js2,jf2,jskip2
558 DO 300 j1=js1,jf1,jskip1
559 wn = r1(j1,j2,1)*rnx(j1,j2,1) +
560 $ r2(j1,j2,1)*rny(j1,j2,1) +
561 $ r3(j1,j2,1)*
rnz(j1,j2,1)
562 wt1(j1,j2,1) = wn *rnx(j1,j2,1)
563 wt2(j1,j2,1) = wn *rny(j1,j2,1)
564 wt3(j1,j2,1) = wn *
rnz(j1,j2,1)
571 subroutine facemv (wt1,wt2,wt3,rnx,rny,rnz,smt,ifc)
574 COMMON /scruz/ r1(lx1,ly1,lz1),r2(lx1,ly1,lz1),r3(lx1,ly1,lz1)
576 dimension wt1(lx1,ly1,lz1),wt2(lx1,ly1,lz1),wt3(lx1,ly1,lz1)
577 $ , rnx(lx1,ly1,lz1),rny(lx1,ly1,lz1),
rnz(lx1,ly1,lz1)
582 CALL copy (r1,wt1,nxyz1)
583 CALL copy (r2,wt2,nxyz1)
584 IF (ldim.EQ.3)
CALL copy (r3,wt3,nxyz1)
585 CALL facind2 (js1,jf1,jskip1,js2,jf2,jskip2,ifc)
588 DO 200 j2=js2,jf2,jskip2
589 DO 200 j1=js1,jf1,jskip1
590 wn = ( r1(j1,j2,1)*rnx(j1,j2,1) +
591 $ r2(j1,j2,1)*rny(j1,j2,1) ) / smt(j1,j2,1)
592 wt1(j1,j2,1) = wn *rnx(j1,j2,1)
593 wt2(j1,j2,1) = wn *rny(j1,j2,1)
596 DO 300 j2=js2,jf2,jskip2
597 DO 300 j1=js1,jf1,jskip1
598 wn = ( r1(j1,j2,1)*rnx(j1,j2,1) +
599 $ r2(j1,j2,1)*rny(j1,j2,1) +
600 $ r3(j1,j2,1)*
rnz(j1,j2,1) ) / smt(j1,j2,1)
601 wt1(j1,j2,1) = wn *rnx(j1,j2,1)
602 wt2(j1,j2,1) = wn *rny(j1,j2,1)
603 wt3(j1,j2,1) = wn *
rnz(j1,j2,1)
615 COMMON /scruz/ r1(lx1,ly1,lz1),r2(lx1,ly1,lz1),r3(lx1,ly1,lz1)
617 dimension wt1(lx1,ly1,lz1),wt2(lx1,ly1,lz1),wt3(lx1,ly1,lz1)
620 CALL copy (r1,wt1,nxyz1)
621 CALL copy (r2,wt2,nxyz1)
622 IF (ldim.EQ.3)
CALL copy (r3,wt3,nxyz1)
624 CALL facind2 (js1,jf1,jskip1,js2,jf2,jskip2,ifc)
628 DO 200 j2=js2,jf2,jskip2
629 DO 200 j1=js1,jf1,jskip1
631 w1 = r1(j1,j2,1)*t1x(i,1,ifc,iel) +
632 $ r2(j1,j2,1)*t1y(i,1,ifc,iel)
633 wt1(j1,j2,1) = w1 *t1x(i,1,ifc,iel)
634 wt2(j1,j2,1) = w1 *t1y(i,1,ifc,iel)
637 DO 300 j2=js2,jf2,jskip2
638 DO 300 j1=js1,jf1,jskip1
640 w1 = r1(j1,j2,1)*t1x(i,1,ifc,iel) +
641 $ r2(j1,j2,1)*t1y(i,1,ifc,iel) +
642 $ r3(j1,j2,1)*t1z(i,1,ifc,iel)
643 wt1(j1,j2,1) = w1 *t1x(i,1,ifc,iel)
644 wt2(j1,j2,1) = w1 *t1y(i,1,ifc,iel)
645 wt3(j1,j2,1) = w1 *t1z(i,1,ifc,iel)
655 dimension smt(lx1,ly1,lz1)
657 CALL facind2 (js1,jf1,jskip1,js2,jf2,jskip2,ifc)
659 DO 100 j2=js2,jf2,jskip2
660 DO 100 j1=js1,jf1,jskip1
661 smt(j1,j2,1)=smt(j1,j2,1) + 1.0
673 COMMON /scrvh/ h1(lx1,ly1,lz1,lelt)
674 $ , h2(lx1,ly1,lz1,lelt)
676 dimension qni(lx1,ly1,lz1,1)
677 $ , ta(lx1,ly1,lz1,1)
681 ntot1 = lx1*ly1*lz1*nel
683 CALL sethlm (h1,h2,intloc)
684 CALL axhelm (ta,t(1,1,1,1,ifield-1),h1,h2,imshl,1)
685 CALL sub3 (qni,ta,bq(1,1,1,1,ifield-1),ntot1)
686 CALL dssum (qni,lx1,ly1,lz1)
691 subroutine facemt (w1,w2,w3,rnx,rny,rnz,qni,dsa,smt,rhola,ifc)
696 dimension w1(lx1,ly1,lz1)
706 CALL facind2 (js1,jf1,jskip1,js2,jf2,jskip2,ifc)
709 DO 200 j2=js2,jf2,jskip2
710 DO 200 j1=js1,jf1,jskip1
711 aa = qni(j1,j2,1) / ( dsa(j1,j2,1)*smt(j1,j2,1)*rhola )
712 w1(j1,j2,1) = rnx(j1,j2,1) * aa
713 w2(j1,j2,1) = rny(j1,j2,1) * aa
716 DO 300 j2=js2,jf2,jskip2
717 DO 300 j1=js1,jf1,jskip1
718 aa = qni(j1,j2,1) / ( dsa(j1,j2,1)*smt(j1,j2,1)*rhola )
719 w1(j1,j2,1) = rnx(j1,j2,1) * aa
720 w2(j1,j2,1) = rny(j1,j2,1) * aa
721 w3(j1,j2,1) =
rnz(j1,j2,1) * aa
739 COMMON /scrns/ dw1(lx1,ly1,lz1,lelt)
740 $ , dw2(lx1,ly1,lz1,lelt)
741 $ , dw3(lx1,ly1,lz1,lelt)
742 $ , aw1(lx1,ly1,lz1,lelt)
743 $ , aw2(lx1,ly1,lz1,lelt)
744 $ , aw3(lx1,ly1,lz1,lelt)
745 COMMON /scrvh/ h1(lx1,ly1,lz1,lelt)
746 $ , h2(lx1,ly1,lz1,lelt)
747 common /scruz/ prt(lx1,ly1,lz1,lelt)
748 COMMON /fastmd/ ifdfrm(lelt), iffast(lelt), ifh2, ifsolv
749 LOGICAL IFDFRM, IFFAST, IFH2, IFSOLV
753 ntot1 = lx1*ly1*lz1*nel
761 if (vnu.eq.0) vnu = 0.4
768 c2 = vnu * ce / (1. - 2.*vnu)
770 CALL cfill (h1,c2,ntot1)
771 CALL cfill (h2,c3,ntot1)
775 CALL meshtol (aw1,tolmsh,nel,imsolv)
776 IF (imsolv.EQ.1)
return
778 CALL axhmsf (aw1,aw2,aw3,wx,wy,wz,h1,h2,matmod)
789 IF (ldim.EQ.3)
CALL chsign (aw3,ntot1)
790 CALL hmhzsf (
'NOMG',dw1,dw2,dw3,aw1,aw2,aw3,h1,h2,
791 $ w1mask,w2mask,w3mask,wmult,tolmsh,
796 CALL add2 (wx,dw1,ntot1)
797 CALL add2 (wy,dw2,ntot1)
798 IF (ldim.EQ.3)
CALL add2 (wz,dw3,ntot1)
825 dimension ta(lx1,ly1,lz1,1)
827 ntot1 = lx1*ly1*lz1*nel
834 IF (diff .EQ. 0.0) eps = 1.0e-05
835 IF (diff .GT. 0.0) eps = 1.0e-12
837 CALL opdot (ta,wx,wy,wz,wx,wy,wz,ntot1)
839 wdot =
glmax(ta,ntot1)
841 IF (wmax .LT. eps)
THEN
846 tolmsh = tolab * wmax * sqrt(eigaa)
858 COMMON /scrsf/ ux(lx1,ly1,lz1,lelt)
859 $ , uy(lx1,ly1,lz1,lelt)
860 $ , uz(lx1,ly1,lz1,lelt)
863 ntot1 = lx1*ly1*lz1*nel
866 10 abm(i) = dt*abmsh(i)
869 CALL copy (ux,wx,ntot1)
870 CALL copy (uy,wy,ntot1)
871 IF (ldim.EQ.3)
CALL copy (uz,wz,ntot1)
874 call cmult2(ux,wx,dt,ntot1)
875 call cmult2(uy,wy,dt,ntot1)
876 if (ldim.eq.3)
call cmult2(uz,wz,dt,ntot1)
878 CALL cmult2 (ux,wx,abm(1),ntot1)
879 CALL cmult2 (uy,wy,abm(1),ntot1)
880 IF (ldim.EQ.3)
CALL cmult2 (uz,wz,abm(1),ntot1)
882 CALL add2s2 (ux,wxlag(1,1,1,1,ilag-1),abm(ilag),ntot1)
883 CALL add2s2 (uy,wylag(1,1,1,1,ilag-1),abm(ilag),ntot1)
885 $
CALL add2s2 (uz,wzlag(1,1,1,1,ilag-1),abm(ilag),ntot1)
890 CALL add2 (xm1,ux,ntot1)
891 CALL add2 (ym1,uy,ntot1)
892 IF (ldim.EQ.3)
CALL add2 (zm1,uz,ntot1)
908 ntot1 = lx1*ly1*lz1*nel
910 DO 100 ilag=nbdinp-1,2,-1
911 CALL copy (wxlag(1,1,1,1,ilag),wxlag(1,1,1,1,ilag-1),ntot1)
912 CALL copy (wylag(1,1,1,1,ilag),wylag(1,1,1,1,ilag-1),ntot1)
914 $
CALL copy (wzlag(1,1,1,1,ilag),wzlag(1,1,1,1,ilag-1),ntot1)
917 CALL copy (wxlag(1,1,1,1,1),wx,ntot1)
918 CALL copy (wylag(1,1,1,1,1),wy,ntot1)
920 $
CALL copy (wzlag(1,1,1,1,1),wz,ntot1)
925 subroutine facec3 (a1,a2,a3,b1,b2,b3,ifc)
931 dimension a1(lx1,ly1,lz1)
938 CALL facind2 (js1,jf1,jskip1,js2,jf2,jskip2,ifc)
940 DO 100 j2=js2,jf2,jskip2
941 DO 100 j1=js1,jf1,jskip1
942 a1(j1,j2,1)=b1(j1,j2,1)
943 a2(j1,j2,1)=b2(j1,j2,1)
944 a3(j1,j2,1)=b3(j1,j2,1)
962 COMMON /scruz/ xm3(lx3,ly3,lz3,lelt)
963 $ , ym3(lx3,ly3,lz3,lelt)
964 $ , zm3(lx3,ly3,lz3,lelt)
966 IF (istep .EQ. 0)
return
969 ntot1 = lx1*ly1*lz1*nel
971 IF ( iftmsh(ifield) ) imesh = 2
976 CALL geom1 (xm3,ym3,zm3)
983 CALL rzero (wx,ntot1)
984 CALL rzero (wy,ntot1)
985 IF (ldim.EQ.3)
CALL rzero (wz,ntot1)
1004 ntot1 = lx1*ly1*lz1*nel
1006 CALL rzero (wx,ntot1)
1007 CALL rzero (wy,ntot1)
1008 CALL rzero (wz,ntot1)
1016 cb = cbc(ifc,iel,ifld)
1017 IF (cb.EQ.
'M' .OR. cb.EQ.
'm')
THEN
1018 CALL facind (kx1,kx2,ky1,ky2,kz1,kz2,lx1,ly1,lz1,ifc)
1022 CALL inigeom (wx(ix,iy,iz,iel),wy(ix,iy,iz,iel),
1023 $ wz(ix,iy,iz,iel),xm1(ix,iy,iz,iel),
1024 $ ym1(ix,iy,iz,iel),zm1(ix,iy,iz,iel),
1030 IF (isweep.EQ.1)
THEN
1031 CALL dsop (wx,
'MXA',lx1,ly1,lz1)
1032 CALL dsop (wy,
'MXA',lx1,ly1,lz1)
1033 IF (ldim.EQ.3)
CALL dsop (wz,
'MXA',lx1,ly1,lz1)
1035 CALL dsop (wx,
'MNA',lx1,ly1,lz1)
1036 CALL dsop (wy,
'MNA',lx1,ly1,lz1)
1037 IF (ldim.EQ.3)
CALL dsop (wz,
'MNA',lx1,ly1,lz1)
1075 integer e,ex,ey,ez,eg
1076 common /surfa/ zsurf(lx1,lz1,lelx,lely)
1077 $ , wsurf(lx1,lz1,lelx,lely)
1083 zsurf(ix,1,ex,1) = -1.e20
1084 wsurf(ix,1,ex,1) = -1.e20
1086 eg = ex + nelx*(ey-1)
1089 if (mid.eq.nid)
then
1090 zsurf(ix,1,ex,1) = ym1(ix,ly1,1,e)
1091 vxs = vx(ix,ly1,1,e)
1092 vys = vy(ix,ly1,1,e)
1095 gamma_s = (vxs*nxs + vys*nys)/(nys)
1096 wsurf(ix,1,ex,1) = gamma_s
1098 zsurf(ix,1,ex,1) =
glmax(zsurf(ix,1,ex,1),1)
1099 wsurf(ix,1,ex,1) =
glmax(wsurf(ix,1,ex,1),1)
1108 zmin =
glmin(ym1,lx1*ly1*lz1*nelv)
1113 eg = ex + nelx*(ey-1)
1116 if (mid.eq.nid)
then
1118 wy(ix,iy,1,e) = wsurf(ix,1,ex,1)
1119 $ * (ym1(ix,iy,1,e)-zmin)/(zsurf(ix,1,ex,1)-zmin)
1126 n = lx1*ly1*lz1*nelv
1142 integer e,ex,ey,ez,eg
1143 common /surfa/ zsurf(lx1,lz1,lelx,lely)
1144 $ , wsurf(lx1,lz1,lelx,lely)
1152 zsurf(ix,iy,ex,ey) = -1.e20
1153 wsurf(ix,iy,ex,ey) = -1.e20
1155 eg = ex + nelx*(ey-1) + nelx*nely*(ez-1)
1158 if (mid.eq.nid)
then
1159 zsurf(ix,iy,ex,ey) = zm1(ix,iy,lz1,e)
1160 vxs = vx(ix,iy,lz1,e)
1161 vys = vy(ix,iy,lz1,e)
1162 vzs = vz(ix,iy,lz1,e)
1163 nxs = unx(ix,iy,6,e)
1164 nys = uny(ix,iy,6,e)
1165 nzs = unz(ix,iy,6,e)
1166 gamma_s = (vxs*nxs+vys*nys+vzs*nzs)/(nzs)
1167 wsurf(ix,iy,ex,ey) = gamma_s
1169 zsurf(ix,iy,ex,ey) =
glmax(zsurf(ix,iy,ex,ey),1)
1170 wsurf(ix,iy,ex,ey) =
glmax(wsurf(ix,iy,ex,ey),1)
1177 n = lx1*ly1*lz1*nelv
1185 eg = ex + nelx*(ey-1) + nelx*nely*(ez-1)
1188 if (mid.eq.nid)
then
1190 wz(ix,iy,iz,e) = wsurf(ix,iy,ex,ey)
1191 $ * (zm1(ix,iy,iz,e)-zmin)/(zsurf(ix,iy,ex,ey)-zmin)
1200 n = lx1*ly1*lz1*nelv
subroutine unitvec(X, Y, Z, N)
subroutine chknord(IFALGN, IFNORX, IFNORY, IFNORZ, IFC, IEL)
subroutine rzero3(A, B, C, N)
subroutine facind2(JS1, JF1, JSKIP1, JS2, JF2, JSKIP2, IFC)
subroutine geom1(xm3, ym3, zm3)
subroutine facev(a, ie, iface, val, nx, ny, nz)
subroutine facind(kx1, kx2, ky1, ky2, kz1, kz2, nx, ny, nz, iface)
subroutine scale(xyzl, nl)
integer function gllel(ieg)
integer function gllnid(ieg)
subroutine dsop(u, op, nx, ny, nz)
subroutine dssum(u, nx, ny, nz)
subroutine axhelm(au, u, helm1, helm2, imesh, isd)
subroutine col3(a, b, c, n)
subroutine invcol2(a, b, n)
subroutine addcol3(a, b, c, n)
subroutine add2s2(a, b, c1, n)
subroutine addcol4(a, b, c, d, n)
subroutine sub3(a, b, c, n)
subroutine cfill(a, b, n)
subroutine facsmt(smt, ifc)
subroutine facec3(a1, a2, a3, b1, b2, b3, ifc)
subroutine facemv(wt1, wt2, wt3, rnx, rny, rnz, smt, ifc)
subroutine cqnet(qni, ta, nel)
subroutine facemt(w1, w2, w3, rnx, rny, rnz, qni, dsa, smt, rhola, ifc)
subroutine faczqn(wt1, wt2, wt3, ifc, iel)
subroutine meshtol(ta, tolmsh, nel, imsolv)
subroutine divws(fms, sfv, phi, nel, idir)
subroutine norcmp2(wvx, wvy, wvz, e, f)
subroutine axifms(fms, sfv, phi, nel, idir)
subroutine norcmp(wt1, wt2, wt3, rnx, rny, rnz, ifc)
subroutine inigeom(ux, uy, uz, x, y, z, iside, iel)
subroutine mxm(a, n1, b, n2, c, n3)
subroutine opdssum(a, b, c)
subroutine opcopy(a1, a2, a3, b1, b2, b3)
subroutine axhmsf(au1, au2, au3, u1, u2, u3, h1, h2, matmod)
subroutine hmhzsf(name, u1, u2, u3, r1, r2, r3, h1, h2, rmask1, rmask2, rmask3, rmult, tol, maxit, matmod)
subroutine sethlm(h1, h2, intloc)
subroutine urst(u, ur, us, ut, nel)
subroutine cmult2(A, B, CONST, N)
subroutine facexv(A1, A2, A3, B1, B2, B3, IFACE1, IOP)
subroutine opdot(DP, A1, A2, A3, B1, B2, B3, N)
subroutine facexs(A, B, IFACE1, IOP)
subroutine rmask(R1, R2, R3, NEL)