xref: /phasta/phSolver/compressible/asigmr.f (revision 595995161822a203c8467e0e4a253d7bd7d6df32)
1*59599516SKenneth E. Jansen        subroutine AsIGMR (y,       ac,      x,        xmudmi,
2*59599516SKenneth E. Jansen     &                     shp,     shgl,    ien,
3*59599516SKenneth E. Jansen     &                     mater,   res,     rmes,
4*59599516SKenneth E. Jansen     &                     BDiag,   qres,    EGmass,   rerr)
5*59599516SKenneth E. Jansenc
6*59599516SKenneth E. Jansenc----------------------------------------------------------------------
7*59599516SKenneth E. Jansenc
8*59599516SKenneth E. Jansenc This routine computes and assembles the data corresponding to the
9*59599516SKenneth E. Jansenc  interior elements.
10*59599516SKenneth E. Jansenc
11*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991.  (Fortran 90)
12*59599516SKenneth E. Jansenc----------------------------------------------------------------------
13*59599516SKenneth E. Jansenc
14*59599516SKenneth E. Jansen        use rlssave     ! Use the resolved Leonard stresses at the nodes.
15*59599516SKenneth E. Jansen        use timedata    ! time series
16*59599516SKenneth E. Jansen        use specialBC    ! get ytarget to localize and send down
17*59599516SKenneth E. Jansen        include "common.h"
18*59599516SKenneth E. Jansenc
19*59599516SKenneth E. Jansen        dimension y(nshg,ndofl),            ac(nshg,ndofl),
20*59599516SKenneth E. Jansen     &            x(numnp,nsd),
21*59599516SKenneth E. Jansen     &            shp(nshl,MAXQPT),
22*59599516SKenneth E. Jansen     &            shgl(nsd,nshl,MAXQPT),
23*59599516SKenneth E. Jansen     &            ien(npro,nshl),
24*59599516SKenneth E. Jansen     &            mater(npro),              res(nshg,nflow),
25*59599516SKenneth E. Jansen     &            rmes(nshg,nflow),         BDiag(nshg,nflow,nflow),
26*59599516SKenneth E. Jansen     &            qres(nshg,idflx)
27*59599516SKenneth E. Jansen
28*59599516SKenneth E. Jansenc
29*59599516SKenneth E. Jansen        dimension ycl(npro,nshl,ndofl),       acl(npro,nshl,ndof),
30*59599516SKenneth E. Jansen     &            xl(npro,nenl,nsd),          ytargetl(npro,nshl,nflow),
31*59599516SKenneth E. Jansen     &            rl(npro,nshl,nflow),       rml(npro,nshl,nflow),
32*59599516SKenneth E. Jansen     &            BDiagl(npro,nshl,nflow,nflow),
33*59599516SKenneth E. Jansen     &            ql(npro,nshl,idflx)
34*59599516SKenneth E. Jansenc
35*59599516SKenneth E. Jansen        dimension  xmudmi(npro,ngauss)
36*59599516SKenneth E. Jansen        dimension sgn(npro,nshl),  EGmass(npro,nedof,nedof)
37*59599516SKenneth E. Jansen
38*59599516SKenneth E. Jansen        dimension rlsl(npro,nshl,6)
39*59599516SKenneth E. Jansen        real*8 rerrl(npro,nshl,6), rerr(nshg,10)
40*59599516SKenneth E. Jansen
41*59599516SKenneth E. Jansenc
42*59599516SKenneth E. Jansenc.... create the matrix of mode signs for the hierarchic basis
43*59599516SKenneth E. Jansenc     functions.
44*59599516SKenneth E. Jansenc
45*59599516SKenneth E. Jansenc
46*59599516SKenneth E. Jansen        if (ipord .gt. 1) then
47*59599516SKenneth E. Jansen           call getsgn(ien,sgn)
48*59599516SKenneth E. Jansen        endif
49*59599516SKenneth E. Jansenc
50*59599516SKenneth E. Jansenc.... gather the variables
51*59599516SKenneth E. Jansenc
52*59599516SKenneth E. Jansen        call localy(y,      ycl,     ien,    ndofl,  'gather  ')
53*59599516SKenneth E. Jansen        call localy(ac,    acl,     ien,    ndofl,  'gather  ')
54*59599516SKenneth E. Jansen        call localx(x,      xl,     ien,    nsd,    'gather  ')
55*59599516SKenneth E. Jansen        call local (qres,   ql,     ien,    idflx,  'gather  ')
56*59599516SKenneth E. Jansen
57*59599516SKenneth E. Jansen        if(matflg(5,1).ge.4 )
58*59599516SKenneth E. Jansen     &   call localy (ytarget,   ytargetl,  ien,   nflow,  'gather  ')
59*59599516SKenneth E. Jansen
60*59599516SKenneth E. Jansen
61*59599516SKenneth E. Jansen        if( (iLES.gt.10).and.(iLES.lt.20)) then  ! bardina
62*59599516SKenneth E. Jansen           call local (rls, rlsl,     ien,       6, 'gather  ')
63*59599516SKenneth E. Jansen        else
64*59599516SKenneth E. Jansen           rlsl = zero
65*59599516SKenneth E. Jansen        endif
66*59599516SKenneth E. Jansenc
67*59599516SKenneth E. Jansenc.... get the element residuals, LHS matrix, and preconditioner
68*59599516SKenneth E. Jansenc
69*59599516SKenneth E. Jansen        rl     = zero
70*59599516SKenneth E. Jansen        BDiagl = zero
71*59599516SKenneth E. Jansen
72*59599516SKenneth E. Jansen        if(ierrcalc.eq.1) rerrl = zero
73*59599516SKenneth E. Jansen        ttim(31) = ttim(31) - secs(0.0)
74*59599516SKenneth E. Jansen
75*59599516SKenneth E. Jansen        call e3  (ycl,     ycl,     acl,     shp,
76*59599516SKenneth E. Jansen     &            shgl,    xl,      rl,      rml,   xmudmi,
77*59599516SKenneth E. Jansen     &            BDiagl,  ql,      sgn,     rlsl,  EGmass,
78*59599516SKenneth E. Jansen     &            rerrl,   ytargetl)
79*59599516SKenneth E. Jansen
80*59599516SKenneth E. Jansen        ttim(31) = ttim(31) + secs(0.0)
81*59599516SKenneth E. Jansenc
82*59599516SKenneth E. Jansenc.... assemble the residual and modified residual
83*59599516SKenneth E. Jansenc
84*59599516SKenneth E. Jansen        call local (res,    rl,     ien,    nflow,  'scatter ')
85*59599516SKenneth E. Jansenc
86*59599516SKenneth E. Jansen        if ( ierrcalc .eq. 1 ) then
87*59599516SKenneth E. Jansen           call local (rerr, rerrl,  ien, 6, 'scatter ')
88*59599516SKenneth E. Jansen        endif
89*59599516SKenneth E. Jansenc
90*59599516SKenneth E. Jansenc.... extract and assemble the Block-Diagonal (see note in elmgmr, line 280)
91*59599516SKenneth E. Jansenc
92*59599516SKenneth E. Jansen        if (iprec .ne. 0) then
93*59599516SKenneth E. Jansen           do i = 1, nshl
94*59599516SKenneth E. Jansen              do j = 1, nflow
95*59599516SKenneth E. Jansen                 i0 = (i - 1) * nflow + j
96*59599516SKenneth E. Jansen                 do k = 1, nflow
97*59599516SKenneth E. Jansen                    j0 = (i - 1) * nflow + k
98*59599516SKenneth E. Jansen                    BDiagl(:,i,j,k) = EGmass(:,i0,j0)
99*59599516SKenneth E. Jansen                 enddo
100*59599516SKenneth E. Jansen              enddo
101*59599516SKenneth E. Jansen           enddo
102*59599516SKenneth E. Jansen           call local (BDiag,  BDiagl, ien, nflow*nflow, 'scatter ')
103*59599516SKenneth E. Jansen        endif
104*59599516SKenneth E. Jansen
105*59599516SKenneth E. Jansenc
106*59599516SKenneth E. Jansenc... call timeseries
107*59599516SKenneth E. Jansenc
108*59599516SKenneth E. Jansen
109*59599516SKenneth E. Jansen        if (exts) then
110*59599516SKenneth E. Jansen           if ((iter.eq.1).and.(mod(lstep,freq).eq.0)) then
111*59599516SKenneth E. Jansen              call timeseries(ycl,xl,ien,sgn)
112*59599516SKenneth E. Jansen           endif
113*59599516SKenneth E. Jansen        endif
114*59599516SKenneth E. Jansen
115*59599516SKenneth E. Jansenc
116*59599516SKenneth E. Jansenc.... end
117*59599516SKenneth E. Jansenc
118*59599516SKenneth E. Jansen        return
119*59599516SKenneth E. Jansen        end
120*59599516SKenneth E. Jansenc
121*59599516SKenneth E. Jansenc
122*59599516SKenneth E. Jansenc
123*59599516SKenneth E. Jansen        subroutine AsIGMRSclr (y,       ac,
124*59599516SKenneth E. Jansen     &                         x,       elDwl,
125*59599516SKenneth E. Jansen     &                         shp,     shgl,      ien,
126*59599516SKenneth E. Jansen     &                         mater,   rest,      rmest,
127*59599516SKenneth E. Jansen     &                         qrest,   EGmasst,   Diag)
128*59599516SKenneth E. Jansenc
129*59599516SKenneth E. Jansenc----------------------------------------------------------------------
130*59599516SKenneth E. Jansenc
131*59599516SKenneth E. Jansenc This routine computes and assembles the data corresponding to the
132*59599516SKenneth E. Jansenc  interior elements.
133*59599516SKenneth E. Jansenc
134*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991.  (Fortran 90)
135*59599516SKenneth E. Jansenc----------------------------------------------------------------------
136*59599516SKenneth E. Jansenc
137*59599516SKenneth E. Jansen        use turbSA
138*59599516SKenneth E. Jansen        include "common.h"
139*59599516SKenneth E. Jansenc
140*59599516SKenneth E. Jansen        dimension y(nshg,ndof),
141*59599516SKenneth E. Jansen     &            ac(nshg,ndof),
142*59599516SKenneth E. Jansen     &            x(numnp,nsd),
143*59599516SKenneth E. Jansen     &            shp(nshl,MAXQPT),        shgl(nsd,nshl,MAXQPT),
144*59599516SKenneth E. Jansen     &            ien(npro,nshl),
145*59599516SKenneth E. Jansen     &            mater(npro),            rest(nshg),
146*59599516SKenneth E. Jansen     &            rmest(nshg),            Diag(nshg),
147*59599516SKenneth E. Jansen     &            qrest(nshg)
148*59599516SKenneth E. Jansen
149*59599516SKenneth E. Jansenc
150*59599516SKenneth E. Jansen        dimension ycl(npro,nshl,ndof),
151*59599516SKenneth E. Jansen     &            acl(npro,nshl,ndof),    dwl(npro,nenl),
152*59599516SKenneth E. Jansen     &            xl(npro,nenl,nsd),      Diagl(npro,nshl),
153*59599516SKenneth E. Jansen     &            rtl(npro,nshl),         rmtl(npro,nshl),
154*59599516SKenneth E. Jansen     &            qtl(npro,nshl),         sgn(npro,nshl)
155*59599516SKenneth E. Jansenc
156*59599516SKenneth E. Jansen        dimension EGmasst(npro,nshape, nshape)
157*59599516SKenneth E. Jansen        real*8    elDwl(npro)
158*59599516SKenneth E. Jansenc.... create the matrix of mode signs for the hierarchic basis
159*59599516SKenneth E. Jansenc     functions.
160*59599516SKenneth E. Jansenc
161*59599516SKenneth E. Jansen        call getsgn(ien,sgn)
162*59599516SKenneth E. Jansenc
163*59599516SKenneth E. Jansenc
164*59599516SKenneth E. Jansenc.... gather the variables
165*59599516SKenneth E. Jansenc
166*59599516SKenneth E. Jansen        call localy (y,       ycl,      ien,    ndof,  'gather  ')
167*59599516SKenneth E. Jansen        call localy (ac,      acl,     ien,    ndof,  'gather  ')
168*59599516SKenneth E. Jansen        call localx (x,       xl,      ien,    nsd,   'gather  ')
169*59599516SKenneth E. Jansenc       call local (qrest,   qtl,     ien,    1,     'gather  ')
170*59599516SKenneth E. Jansen        if (iRANS .lt. 0) then
171*59599516SKenneth E. Jansen           call localx (d2wall,   dwl,     ien,    1,     'gather  ')
172*59599516SKenneth E. Jansen        endif
173*59599516SKenneth E. Jansenc
174*59599516SKenneth E. Jansenc.... get the element residuals, LHS matrix, and preconditioner
175*59599516SKenneth E. Jansenc
176*59599516SKenneth E. Jansen        rtl     = zero
177*59599516SKenneth E. Jansen        Diagl   = zero
178*59599516SKenneth E. Jansen
179*59599516SKenneth E. Jansen        ttim(31) = ttim(31) - tmr()
180*59599516SKenneth E. Jansen
181*59599516SKenneth E. Jansen        call e3Sclr (ycl,     acl,
182*59599516SKenneth E. Jansen     &               dwl,    elDwl,   shp,
183*59599516SKenneth E. Jansen     &               sgn,    shgl,    xl,
184*59599516SKenneth E. Jansen     &               rtl,    rmtl,
185*59599516SKenneth E. Jansen     &               qtl,    EGmasst )
186*59599516SKenneth E. Jansen
187*59599516SKenneth E. Jansen        ttim(31) = ttim(31) + tmr()
188*59599516SKenneth E. Jansenc
189*59599516SKenneth E. Jansenc.... assemble the residual and modified residual
190*59599516SKenneth E. Jansenc
191*59599516SKenneth E. Jansen        call local (rest,    rtl,     ien,    1,  'scatter ')
192*59599516SKenneth E. Jansenc
193*59599516SKenneth E. Jansenc.... extract and assemble the Diagonal
194*59599516SKenneth E. Jansenc
195*59599516SKenneth E. Jansen        if (iprec .ne. 0) then
196*59599516SKenneth E. Jansen           do i=1,nshl
197*59599516SKenneth E. Jansen              Diagl(:,i)=EGmassT(:,i,i)
198*59599516SKenneth E. Jansen           enddo
199*59599516SKenneth E. Jansen           call local(Diag, Diagl, ien, 1, 'scatter ')
200*59599516SKenneth E. Jansen        endif
201*59599516SKenneth E. Jansenc
202*59599516SKenneth E. Jansenc.... end
203*59599516SKenneth E. Jansenc
204*59599516SKenneth E. Jansen        return
205*59599516SKenneth E. Jansen        end
206*59599516SKenneth E. Jansen
207*59599516SKenneth E. Jansen
208