xref: /phasta/phSolver/incompressible/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     &                     res,     qres,
4*59599516SKenneth E. Jansen     &                     xKebe,   xGoC,    rerr, CFLworst)
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 stats
15*59599516SKenneth E. Jansen      use rlssave  ! Use the resolved Leonard stresses at the nodes.
16*59599516SKenneth E. Jansen      use timedata    ! time series
17*59599516SKenneth E. Jansen      use turbsa                ! access to d2wall
18*59599516SKenneth E. Jansen
19*59599516SKenneth E. Jansen
20*59599516SKenneth E. Jansen      include "common.h"
21*59599516SKenneth E. Jansenc
22*59599516SKenneth E. Jansen        dimension y(nshg,ndofl),              ac(nshg,ndofl),
23*59599516SKenneth E. Jansen     &            x(numnp,nsd),
24*59599516SKenneth E. Jansen     &            shp(nshl,ngauss),            shgl(nsd,nshl,ngauss),
25*59599516SKenneth E. Jansen     &            ien(npro,nshl),
26*59599516SKenneth E. Jansen     &            res(nshg,nflow),
27*59599516SKenneth E. Jansen     &            qres(nshg,idflx)
28*59599516SKenneth E. Jansen
29*59599516SKenneth E. Jansenc
30*59599516SKenneth E. Jansen        dimension yl(npro,nshl,ndofl),         acl(npro,nshl,ndofl),
31*59599516SKenneth E. Jansen     &            xl(npro,nenl,nsd),           dwl(npro,nenl),
32*59599516SKenneth E. Jansen     &            rl(npro,nshl,nflow),
33*59599516SKenneth E. Jansen     &            ql(npro,nshl,idflx)
34*59599516SKenneth E. Jansenc
35*59599516SKenneth E. Jansen        dimension xKebe(npro,9,nshl,nshl),
36*59599516SKenneth E. Jansen     &            xGoC(npro,4,nshl,nshl)
37*59599516SKenneth E. Jansenc
38*59599516SKenneth E. Jansen        dimension rlsl(npro,nshl,6)
39*59599516SKenneth E. Jansen
40*59599516SKenneth E. Jansenc
41*59599516SKenneth E. Jansen        real*8    lStsVec(npro,nshl,nResDims)
42*59599516SKenneth E. Jansen
43*59599516SKenneth E. Jansen        dimension xmudmi(npro,ngauss)
44*59599516SKenneth E. Jansen        dimension sgn(npro,nshl)
45*59599516SKenneth E. Jansen        dimension CFLworst(npro)
46*59599516SKenneth E. Jansenc
47*59599516SKenneth E. Jansen        real*8 rerrl(npro,nshl,6), rerr(nshg,10)
48*59599516SKenneth E. Jansenc
49*59599516SKenneth E. Jansenc.... gather the variables
50*59599516SKenneth E. Jansenc
51*59599516SKenneth E. Jansenc
52*59599516SKenneth E. Jansenc.... get the matrix of mode signs for the hierarchic basis functions.
53*59599516SKenneth E. Jansenc
54*59599516SKenneth E. Jansen        if (ipord .gt. 1) then
55*59599516SKenneth E. Jansen           call getsgn(ien,sgn)
56*59599516SKenneth E. Jansen        endif
57*59599516SKenneth E. Jansen
58*59599516SKenneth E. Jansen        call localy(y,      yl,     ien,    ndofl,  'gather  ')
59*59599516SKenneth E. Jansen        call localy(ac,    acl,     ien,    ndofl,  'gather  ')
60*59599516SKenneth E. Jansen        call localx(x,      xl,     ien,    nsd,    'gather  ')
61*59599516SKenneth E. Jansen        call local (qres,   ql,     ien,    idflx,  'gather  ')
62*59599516SKenneth E. Jansen        if (iRANS .eq. -2) then ! kay-epsilon
63*59599516SKenneth E. Jansen           call localx (d2wall,   dwl,     ien,    1,     'gather  ')
64*59599516SKenneth E. Jansen        endif
65*59599516SKenneth E. Jansen
66*59599516SKenneth E. Jansen        if( (iLES.gt.10).and.(iLES.lt.20)) then  ! bardina
67*59599516SKenneth E. Jansen           call local (rls, rlsl,     ien,       6, 'gather  ')
68*59599516SKenneth E. Jansen        else
69*59599516SKenneth E. Jansen           rlsl = zero
70*59599516SKenneth E. Jansen        endif
71*59599516SKenneth E. Jansen
72*59599516SKenneth E. Jansenc
73*59599516SKenneth E. Jansenc.... zero the matrices if they are being recalculated
74*59599516SKenneth E. Jansenc
75*59599516SKenneth E. Jansen        if (lhs. eq. 1)  then
76*59599516SKenneth E. Jansen           xKebe = zero
77*59599516SKenneth E. Jansen           xGoC  = zero
78*59599516SKenneth E. Jansen        endif
79*59599516SKenneth E. Jansenc
80*59599516SKenneth E. Jansenc.... get the element residuals, LHS matrix, and preconditioner
81*59599516SKenneth E. Jansenc
82*59599516SKenneth E. Jansen        rl     = zero
83*59599516SKenneth E. Jansen
84*59599516SKenneth E. Jansen        if(ierrcalc.eq.1) rerrl = zero
85*59599516SKenneth E. Jansen
86*59599516SKenneth E. Jansen        call e3  (yl,      acl,     dwl,     shp,
87*59599516SKenneth E. Jansen     &            shgl,    xl,      rl,
88*59599516SKenneth E. Jansen     &            ql,      xKebe,   xGoC,    xmudmi,
89*59599516SKenneth E. Jansen     &            sgn,     rerrl,  rlsl,     CFLworst)
90*59599516SKenneth E. Jansenc
91*59599516SKenneth E. Jansenc.... assemble the statistics residual
92*59599516SKenneth E. Jansenc
93*59599516SKenneth E. Jansen        if ( stsResFlg .eq. 1 ) then
94*59599516SKenneth E. Jansen           call e3StsRes ( xl, rl, lStsVec )
95*59599516SKenneth E. Jansen           call local( stsVec, lStsVec, ien, nResDims, 'scatter ')
96*59599516SKenneth E. Jansen        else
97*59599516SKenneth E. Jansenc
98*59599516SKenneth E. Jansenc.... assemble the residual
99*59599516SKenneth E. Jansenc
100*59599516SKenneth E. Jansen           call local (res,    rl,     ien,    nflow,  'scatter ')
101*59599516SKenneth E. Jansen
102*59599516SKenneth E. Jansen           if ( ierrcalc .eq. 1 ) then
103*59599516SKenneth E. Jansen              call local (rerr, rerrl,  ien, 6, 'scatter ')
104*59599516SKenneth E. Jansen           endif
105*59599516SKenneth E. Jansen        endif
106*59599516SKenneth E. Jansenc
107*59599516SKenneth E. Jansenc.... end
108*59599516SKenneth E. Jansenc
109*59599516SKenneth E. Jansen        if (exts.and.ires.ne.2) then
110*59599516SKenneth E. Jansen           if ((iter.eq.1).and.(mod(lstep,freq).eq.0)) then
111*59599516SKenneth E. Jansen              call timeseries(yl,xl,ien,sgn)
112*59599516SKenneth E. Jansen           endif
113*59599516SKenneth E. Jansen        endif
114*59599516SKenneth E. Jansen
115*59599516SKenneth E. Jansen        return
116*59599516SKenneth E. Jansen        end
117*59599516SKenneth E. Jansen
118*59599516SKenneth E. Jansen
119*59599516SKenneth E. Jansen
120*59599516SKenneth E. JansenC^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
121*59599516SKenneth E. Jansenc-----------------------------------------------------------------------
122*59599516SKenneth E. Jansenc=======================================================================
123*59599516SKenneth E. Jansen
124*59599516SKenneth E. Jansen
125*59599516SKenneth E. Jansen        subroutine AsIGMRSclr(y,       ac,      x,
126*59599516SKenneth E. Jansen     &                     shp,     shgl,    ien,
127*59599516SKenneth E. Jansen     &                     res,     qres,    xSebe, xmudmi )
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,ndofl),              ac(nshg,ndofl),
141*59599516SKenneth E. Jansen     &            x(numnp,nsd),
142*59599516SKenneth E. Jansen     &            shp(nshl,ngauss),            shgl(nsd,nshl,ngauss),
143*59599516SKenneth E. Jansen     &            ien(npro,nshl),
144*59599516SKenneth E. Jansen     &            res(nshg),                  qres(nshg,nsd)
145*59599516SKenneth E. Jansen
146*59599516SKenneth E. Jansenc
147*59599516SKenneth E. Jansen        real*8    yl(npro,nshl,ndofl),        acl(npro,nshl,ndofl),
148*59599516SKenneth E. Jansen     &            xl(npro,nenl,nsd),
149*59599516SKenneth E. Jansen     &            rl(npro,nshl),              ql(npro,nshl,nsd),
150*59599516SKenneth E. Jansen     &            dwl(npro,nenl)
151*59599516SKenneth E. Jansenc
152*59599516SKenneth E. Jansen        real*8    xSebe(npro,nshl,nshl),      xmudmi(npro,ngauss)
153*59599516SKenneth E. Jansenc
154*59599516SKenneth E. Jansenc.... gather the variables
155*59599516SKenneth E. Jansenc
156*59599516SKenneth E. Jansen        real*8 sgn(npro,nshl)
157*59599516SKenneth E. Jansenc
158*59599516SKenneth E. Jansenc.... get the matrix of mode signs for the hierarchic basis functions.
159*59599516SKenneth E. Jansenc
160*59599516SKenneth E. Jansen        if (ipord .gt. 1) then
161*59599516SKenneth E. Jansen           call getsgn(ien,sgn)
162*59599516SKenneth E. Jansen        endif
163*59599516SKenneth E. Jansen
164*59599516SKenneth E. Jansen        call localy(y,      yl,     ien,    ndofl,  'gather  ')
165*59599516SKenneth E. Jansen        call localy(ac,    acl,     ien,    ndofl,  'gather  ')
166*59599516SKenneth E. Jansen        call localx(x,      xl,     ien,    nsd,    'gather  ')
167*59599516SKenneth E. Jansen        if(iRANS.lt. 0)
168*59599516SKenneth E. Jansen     &  call localx(d2wall, dwl,    ien,    1,      'gather  ')
169*59599516SKenneth E. Jansen        call local (qres,   ql,     ien,    nsd,    'gather  ')
170*59599516SKenneth E. Jansenc
171*59599516SKenneth E. Jansenc.... zero the matrices if they are being recalculated
172*59599516SKenneth E. Jansenc
173*59599516SKenneth E. Jansen        if (lhs. eq. 1)  then
174*59599516SKenneth E. Jansen           xSebe = zero
175*59599516SKenneth E. Jansen        endif
176*59599516SKenneth E. Jansenc
177*59599516SKenneth E. Jansenc.... get the element residuals, LHS matrix, and preconditioner
178*59599516SKenneth E. Jansenc
179*59599516SKenneth E. Jansen      rl = zero
180*59599516SKenneth E. Jansen      call e3Sclr  (yl,      acl,     shp,
181*59599516SKenneth E. Jansen     &              shgl,    xl,      dwl,
182*59599516SKenneth E. Jansen     &              rl,      ql,      xSebe,
183*59599516SKenneth E. Jansen     &              sgn, xmudmi)
184*59599516SKenneth E. Jansenc
185*59599516SKenneth E. Jansenc.... assemble the residual
186*59599516SKenneth E. Jansenc
187*59599516SKenneth E. Jansen        call local (res,    rl,     ien,    1,  'scatter ')
188*59599516SKenneth E. Jansenc
189*59599516SKenneth E. Jansenc.... end
190*59599516SKenneth E. Jansenc
191*59599516SKenneth E. Jansen        return
192*59599516SKenneth E. Jansen        end
193