20 ntot1=lx1*ly1*lz1*nelfld(ifield)
21 xmin =
glmin(xm1,ntot1)
22 xmax =
glmax(xm1,ntot1)
23 ymin =
glmin(ym1,ntot1)
24 ymax =
glmax(ym1,ntot1)
26 zmin =
glmin(zm1,ntot1)
27 zmax =
glmax(zm1,ntot1)
39 IF (ryx .LT. rmin) rmin = ryx
45 IF (rxz .LT. rmin) rmin = rxz
46 IF (rzx .LT. rmin) rmin = rzx
47 IF (ryz .LT. rmin) rmin = ryz
48 IF (rzy .LT. rmin) rmin = rzy
55 IF (yy2 .LT. xyzmin) xyzmin = yy2
59 IF (zz2 .LT. xyzmin) xyzmin = zz2
67 IF (ldim .EQ. 2) eigaa = pi*pi*(xx2+yy2)/2.
68 IF (ldim .EQ. 3) eigaa = pi*pi*(xx2+yy2+zz2)/3.
69 IF (ifaxis) eigaa = .25*pi*pi*yy2
73 IF (nio.EQ.0 .AND. istep.LE.0)
THEN
75 WRITE (6,*)
'Estimated eigenvalues'
76 WRITE (6,*)
'EIGAA = ',eigaa
77 WRITE (6,*)
'EIGGA = ',eigga
79 WRITE (6,*)
'EIGAE = ',eigae
80 WRITE (6,*)
'EIGAS = ',eigas
81 WRITE (6,*)
'EIGGE = ',eigge
82 WRITE (6,*)
'EIGGS = ',eiggs
112 COMMON /scrvh/ h1(lx1,ly1,lz1,lelt)
113 $ , h2(lx1,ly1,lz1,lelt)
114 COMMON /scrhi/ h2inv(lx1,ly1,lz1,lelv)
116 ntot1 = lx1*ly1*lz1*nelv
119 ntot1 = lx1*ly1*lz1*nelv
121 CALL rzero (h2,ntot1)
122 CALL alpham1 (eigaa1,v1mask,vmult,h1,h2,1)
123 CALL alpham1 (eigaa2,v2mask,vmult,h1,h2,2)
124 eigaa = min(eigaa1,eigaa2)
126 CALL alpham1 (eigaa3,v3mask,vmult,h1,h2,3)
127 eigaa = min(eigaa,eigaa3)
129 IF (nio.EQ.0 .AND. istep.LE.0)
WRITE (6,*)
'EIGAA = ',eigaa
135 CALL rzero (h2,ntot1)
136 CALL rzero (h2inv,ntot1)
137 CALL alpham2 (eigas,h1,h2,h2inv,inloc)
138 IF (nio.EQ.0 .AND. istep.LE.0)
WRITE (6,*)
'EIGAS = ',eigas
143 CALL rzero (h1,ntot1)
145 CALL rone (h2inv,ntot1)
146 CALL alpham2 (eigae,h1,h2,h2inv,inloc)
147 IF (nio.EQ.0 .AND. istep.LE.0)
WRITE (6,*)
'EIGAE = ',eigae
154 CALL alpham2 (eigast,h1,h2,h2inv,inloc)
155 IF (nio.EQ.0 .AND. istep.LE.0)
WRITE (6,*)
'EIGAST = ',eigast
161 CALL rzero (h2,ntot1)
162 CALL rzero (h2inv,ntot1)
163 CALL gammam2 (eiggs,h1,h2,h2inv,inloc)
164 IF (nio.EQ.0 .AND. istep.LE.0)
WRITE (6,*)
'EIGGS = ',eiggs
169 CALL rzero (h1,ntot1)
171 CALL rone (h2inv,ntot1)
172 CALL gammam2 (eigge,h1,h2,h2inv,inloc)
173 IF (nio.EQ.0 .AND. istep.LE.0)
WRITE (6,*)
'EIGGE = ',eigge
180 CALL gammam2 (eiggst,h1,h2,h2inv,inloc)
181 IF (nio.EQ.0 .AND. istep.LE.0)
WRITE (6,*)
'EIGGST = ',eiggst
185 ntot1 = lx1*ly1*lz1*nelv
187 CALL rzero (h2,ntot1)
188 IF (.NOT.ifstrs)
THEN
189 CALL gammam1 (eigga1,v1mask,vmult,h1,h2,1)
190 CALL gammam1 (eigga2,v2mask,vmult,h1,h2,2)
193 $
CALL gammam1 (eigga3,v3mask,vmult,h1,h2,3)
194 eigga = max(eigga1,eigga2,eigga3)
203 SUBROUTINE alpham1 (ALPHA,MASK,MULT,H1,H2,ISD)
213 REAL MASK (LX1,LY1,LZ1,1)
214 REAL MULT (LX1,LY1,LZ1,1)
215 REAL H1 (LX1,LY1,LZ1,1)
216 REAL H2 (LX1,LY1,LZ1,1)
217 COMMON /screv/ x1(lx1,ly1,lz1,lelt)
218 $ , y1(lx1,ly1,lz1,lelt)
221 IF (imesh.EQ.1) nel = nelv
222 IF (imesh.EQ.2) nel = nelt
223 IF (isd .EQ.1) name =
'EVVX'
224 IF (isd .EQ.2) name =
'EVVX'
225 IF (isd .EQ.3) name =
'EVVX'
230 CALL startx1 (x1,y1,mask,mult,nel)
233 CALL axhelm (y1,x1,h1,h2,imesh,isd)
234 CALL col2 (y1,mask,ntot1)
235 CALL dssum (y1,lx1,ly1,lz1)
236 rq =
glsc3(x1,y1,mult,ntot1)
239 write (6,*)
'alphaa = ',rq
240 crit = abs((evnew-evold)/evnew)
241 IF (crit.LT.tolev)
GOTO 2000
242 CALL col2 (x1,bm1,ntot1)
243 CALL hmholtz (
'NOMG',y1,x1,h1,h2,mask,mult,
244 $ imesh,tolhe,nmxe,isd)
245 CALL col3 (x1,bm1,y1,ntot1)
246 CALL dssum (x1,lx1,ly1,lz1)
247 yy =
glsc3(x1,y1,mult,ntot1)
249 CALL cmult (y1,ynorm,ntot1)
250 CALL copy (x1,y1,ntot1)
258 SUBROUTINE gammam1 (GAMMA,MASK,MULT,H1,H2,ISD)
268 REAL MASK (LX1,LY1,LZ1,1)
269 REAL MULT (LX1,LY1,LZ1,1)
270 REAL H1 (LX1,LY1,LZ1,1)
271 REAL H2 (LX1,LY1,LZ1,1)
272 COMMON /screv/ x1(lx1,ly1,lz1,lelt)
273 $ , y1(lx1,ly1,lz1,lelt)
275 IF (imesh.EQ.1) nel = nelv
276 IF (imesh.EQ.2) nel = nelt
281 if (isd.eq.1)
CALL startx1 (x1,y1,mask,mult,nel)
284 CALL axhelm (y1,x1,h1,h2,imesh,isd)
285 CALL col2 (y1,mask,ntot1)
286 CALL dssum (y1,lx1,ly1,lz1)
287 rq =
glsc3(x1,y1,mult,ntot1)
290 crit = abs((evnew-evold)/evnew)
297 IF (crit.LT.tolev)
GOTO 2000
298 CALL col3 (x1,binvm1,y1,ntot1)
299 xx =
glsc3(x1,y1,mult,ntot1)
301 CALL cmult (x1,xnorm,ntot1)
323 REAL H1 (LX1,LY1,LZ1,1)
324 REAL H2 (LX1,LY1,LZ1,1)
325 REAL H2INV(LX1,LY1,LZ1,1)
326 COMMON /screv/ x2(lx2,ly2,lz2,lelv)
327 $ , y2(lx2,ly2,lz2,lelv)
329 ntot2 = lx2*ly2*lz2*nelv
334 CALL cdabdtp (y2,x2,h1,h2,h2inv,inloc)
335 rq =
glsc2(x2,y2,ntot2)
339 crit = abs((evnew-evold)/evnew)
340 IF (crit.LT.tolev)
GOTO 2000
341 CALL col2 (x2,bm2,ntot2)
342 CALL uzawa (x2,h1,h2,h2inv,inloc,icg)
343 CALL col3 (y2,bm2,x2,ntot2)
344 xx =
glsc2(x2,y2,ntot2)
346 CALL cmult (x2,xnorm,ntot2)
368 REAL H1 (LX1,LY1,LZ1,1)
369 REAL H2 (LX1,LY1,LZ1,1)
370 REAL H2INV (LX1,LY1,LZ1,1)
371 COMMON /screv/ x2(lx2,ly2,lz2,lelv)
372 $ , y2(lx2,ly2,lz2,lelv)
374 ntot2 = lx2*ly2*lz2*nelv
379 CALL cdabdtp (y2,x2,h1,h2,h2inv,inloc)
380 rq =
glsc2(x2,y2,ntot2)
383 crit = abs((evnew-evold)/evnew)
384 IF (crit.LT.tolev)
GOTO 2000
386 xx =
glsc2(y2,x2,ntot2)
388 CALL cmult (x2,xnorm,ntot2)
405 REAL X1 (LX1,LY1,LZ1,1)
406 REAL Y1 (LX1,LY1,LZ1,1)
407 REAL MASK (LX1,LY1,LZ1,1)
408 REAL MULT (LX1,LY1,LZ1,1)
410 ntot1 = lx1*ly1*lz1*nel
411 CALL copy (x1,bm1,ntot1)
415 small = 0.001*
glamax(x1,ntot1)
416 call add2s2(x1,y1,small,ntot1)
419 CALL col2 (x1,mask,ntot1)
420 CALL col3 (y1,bm1,x1,ntot1)
421 CALL dssum (y1,lx1,ly1,lz1)
422 xx =
glsc3(x1,y1,mult,ntot1)
424 CALL cmult (x1,xnorm,ntot1)
438 REAL X2 (LX2,LY2,LZ2,LELV)
439 REAL Y2 (LX2,LY2,LZ2,LELV)
444 IF ((ldim .EQ. 2).AND.(nxyz2 .EQ. 4)) iconst = 1
445 IF ((ldim .EQ. 3).AND.(nxyz2 .EQ. 8)) iconst = 1
447 IF (iconst .EQ. 1)
THEN
452 x2(i,j,k,iel) = i*j*k
455 CALL copy (x2,bm2,ntot2)
459 CALL col3 (y2,bm2,x2,ntot2)
460 xx =
glsc2(x2,y2,ntot2)
462 CALL cmult (x2,xnorm,ntot2)
subroutine dssum(u, nx, ny, nz)
subroutine alpham1(ALPHA, MASK, MULT, H1, H2, ISD)
subroutine gammam1(GAMMA, MASK, MULT, H1, H2, ISD)
subroutine startx1(X1, Y1, MASK, MULT, NEL)
subroutine startx2(X2, Y2)
subroutine gammam2(GAMMA, H1, H2, H2INV, INLOC)
subroutine alpham2(ALPHA, H1, H2, H2INV, INLOC)
subroutine hmholtz(name, u, rhs, h1, h2, mask, mult, imsh, tli, maxit, isd)
subroutine axhelm(au, u, helm1, helm2, imesh, isd)
subroutine col3(a, b, c, n)
subroutine invers2(a, b, n)
function glsc3(a, b, mult, n)
subroutine add2s2(a, b, c1, n)
subroutine cmult(a, const, n)
real function glamax(a, n)
subroutine invcol3(a, b, c, n)
subroutine uzawa(rcg, h1, h2, h2inv, intype, iter)
subroutine cdabdtp(ap, wp, h1, h2, h2inv, intype)
subroutine rand_fld_h1(x)
subroutine sethlm(h1, h2, intloc)
subroutine gammasf(H1, H2)