xref: /phasta/phSolver/compressible/asires.f (revision 595995161822a203c8467e0e4a253d7bd7d6df32)
1*59599516SKenneth E. Jansen        subroutine AsIRes (y,      yc,     x,      xmudmi,
2*59599516SKenneth E. Jansen     &                     shp,    shgl,   ien,    mater,
3*59599516SKenneth E. Jansen     &                     rmes,    ac)
4*59599516SKenneth E. Jansenc
5*59599516SKenneth E. Jansenc----------------------------------------------------------------------
6*59599516SKenneth E. Jansenc
7*59599516SKenneth E. Jansenc This routine computes and assembles the data corresponding to the
8*59599516SKenneth E. Jansenc  interior elements.
9*59599516SKenneth E. Jansenc
10*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991.  (Fortran 90)
11*59599516SKenneth E. Jansenc----------------------------------------------------------------------
12*59599516SKenneth E. Jansenc
13*59599516SKenneth E. Jansen        use rlssave     ! Use the resolved Leonard stresses at the nodes.
14*59599516SKenneth E. Jansen        include "common.h"
15*59599516SKenneth E. Jansenc
16*59599516SKenneth E. Jansen        dimension y(nshg,nflow),            yc(nshg,ndofl),
17*59599516SKenneth E. Jansen     &            x(numnp,nsd),             ac(nshg,nflow),
18*59599516SKenneth E. Jansen     &            shp(nshl,ngauss),
19*59599516SKenneth E. Jansen     &            shgl(nsd,nshl,ngauss),
20*59599516SKenneth E. Jansen     &            ien(npro,nshl),       mater(npro),
21*59599516SKenneth E. Jansen     &            rmes(nshg,nflow)
22*59599516SKenneth E. Jansenc
23*59599516SKenneth E. Jansen        dimension yl(npro,nshl,nflow),       ycl(npro,nshl,ndofl),
24*59599516SKenneth E. Jansen     &            xl(npro,nenl,nsd),         acl(npro,nshl,nflow),
25*59599516SKenneth E. Jansen     &           rml(npro,nshl,nflow), ql(npro,nshl,(nflow-1)*nsd)
26*59599516SKenneth E. Jansenc
27*59599516SKenneth E. Jansen        dimension  xmudmi(npro,ngauss)
28*59599516SKenneth E. Jansen        dimension sgn(npro,nshl)
29*59599516SKenneth E. Jansen
30*59599516SKenneth E. Jansen        dimension rlsl(npro,nshl,6)
31*59599516SKenneth E. Jansenc
32*59599516SKenneth E. Jansen        real*8 rerrl(npro,nshl,6)
33*59599516SKenneth E. Jansenc
34*59599516SKenneth E. Jansenc
35*59599516SKenneth E. Jansenc.... create the matrix of mode signs for the hierarchic basis
36*59599516SKenneth E. Jansenc     functions.
37*59599516SKenneth E. Jansenc
38*59599516SKenneth E. Jansenc     this is done in hierarchic.f
39*59599516SKenneth E. Jansenc$$$        do i=1,nshape
40*59599516SKenneth E. Jansenc$$$           where ( ien(:,i) < 0 )
41*59599516SKenneth E. Jansenc$$$              sgn(:,i) = -one
42*59599516SKenneth E. Jansenc$$$           elsewhere
43*59599516SKenneth E. Jansenc$$$              sgn(:,i) = one
44*59599516SKenneth E. Jansenc$$$           endwhere
45*59599516SKenneth E. Jansenc$$$        enddo
46*59599516SKenneth E. Jansenc
47*59599516SKenneth E. Jansen        if (ipord .gt. 1) then
48*59599516SKenneth E. Jansen           call getsgn(ien,sgn)
49*59599516SKenneth E. Jansen        endif
50*59599516SKenneth E. Jansenc
51*59599516SKenneth E. Jansenc.... gather the variables
52*59599516SKenneth E. Jansenc
53*59599516SKenneth E. Jansen        call localy(y,      yl,     ien,    nflow,  'gather  ')
54*59599516SKenneth E. Jansen        call localx(x,      xl,     ien,    nsd,    'gather  ')
55*59599516SKenneth E. Jansenc
56*59599516SKenneth E. Jansen        call localy(yc,     ycl,    ien,    ndofl,  'gather  ')
57*59599516SKenneth E. Jansen        call localy(ac,     acl,    ien,    nflow,  'gather  ')
58*59599516SKenneth E. Jansen
59*59599516SKenneth E. Jansen
60*59599516SKenneth E. Jansen        if( (iLES.gt.10).and.(iLES.lt.20)) then ! bardina
61*59599516SKenneth E. Jansen
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. Jansen
67*59599516SKenneth E. Jansenc
68*59599516SKenneth E. Jansenc.... get the element residual
69*59599516SKenneth E. Jansenc
70*59599516SKenneth E. Jansen
71*59599516SKenneth E. Jansen        rml = zero
72*59599516SKenneth E. Jansen
73*59599516SKenneth E. Jansen        EGmassd= one  ! just a dummy real since we don't have a LHS with MFI
74*59599516SKenneth E. Jansen        if(ierrcalc.eq.1) rerrl = zero
75*59599516SKenneth E. Jansen        ttim(31) = ttim(31) - secs(0.0)
76*59599516SKenneth E. Jansenc	write(*,*) 'calling e3'
77*59599516SKenneth E. Jansen
78*59599516SKenneth E. Jansen            call e3  (yl,      ycl,     acl,     shp,
79*59599516SKenneth E. Jansen     &                shgl,    xl,      rml,     rml,
80*59599516SKenneth E. Jansen     &                xmudmi,  BDiagl,  ql,      sgn, rlsl, EGmassd,
81*59599516SKenneth E. Jansen     &                rerrl)
82*59599516SKenneth E. Jansen
83*59599516SKenneth E. Jansen        ttim(31) = ttim(31) + secs(0.0)
84*59599516SKenneth E. Jansenc
85*59599516SKenneth E. Jansenc.... assemble the modified residual
86*59599516SKenneth E. Jansenc
87*59599516SKenneth E. Jansen        if (iabres .eq. 1) rml = abs(rml)
88*59599516SKenneth E. Jansenc
89*59599516SKenneth E. Jansen        call local (rmes,   rml,    ien,    nflow,  'scatter ')
90*59599516SKenneth E. Jansenc
91*59599516SKenneth E. Jansenc.... end
92*59599516SKenneth E. Jansenc
93*59599516SKenneth E. Jansen        return
94*59599516SKenneth E. Jansen        end
95