xref: /phasta/phSolver/compressible/asigmr.f (revision 712d3df0b59ebebaaeaea358162c8d2c043c6e08)
159599516SKenneth E. Jansen        subroutine AsIGMR (y,       ac,      x,        xmudmi,
259599516SKenneth E. Jansen     &                     shp,     shgl,    ien,
359599516SKenneth E. Jansen     &                     mater,   res,     rmes,
459599516SKenneth E. Jansen     &                     BDiag,   qres,    EGmass,   rerr)
559599516SKenneth E. Jansenc
659599516SKenneth E. Jansenc----------------------------------------------------------------------
759599516SKenneth E. Jansenc
859599516SKenneth E. Jansenc This routine computes and assembles the data corresponding to the
959599516SKenneth E. Jansenc  interior elements.
1059599516SKenneth E. Jansenc
1159599516SKenneth E. Jansenc Zdenek Johan, Winter 1991.  (Fortran 90)
1259599516SKenneth E. Jansenc----------------------------------------------------------------------
1359599516SKenneth E. Jansenc
1459599516SKenneth E. Jansen        use rlssave     ! Use the resolved Leonard stresses at the nodes.
15*0d32f9a8SKenneth E. Jansen        use timedataC    ! time series
1659599516SKenneth E. Jansen        use specialBC    ! get ytarget to localize and send down
1759599516SKenneth E. Jansen        include "common.h"
1859599516SKenneth E. Jansenc
1959599516SKenneth E. Jansen        dimension y(nshg,ndofl),            ac(nshg,ndofl),
2059599516SKenneth E. Jansen     &            x(numnp,nsd),
2159599516SKenneth E. Jansen     &            shp(nshl,MAXQPT),
2259599516SKenneth E. Jansen     &            shgl(nsd,nshl,MAXQPT),
2359599516SKenneth E. Jansen     &            ien(npro,nshl),
2459599516SKenneth E. Jansen     &            mater(npro),              res(nshg,nflow),
2559599516SKenneth E. Jansen     &            rmes(nshg,nflow),         BDiag(nshg,nflow,nflow),
2659599516SKenneth E. Jansen     &            qres(nshg,idflx)
2759599516SKenneth E. Jansen
2859599516SKenneth E. Jansenc
2959599516SKenneth E. Jansen        dimension ycl(npro,nshl,ndofl),     acl(npro,nshl,ndof),
3059599516SKenneth E. Jansen     &            xl(npro,nenl,nsd),        ytargetl(npro,nshl,nflow),
3159599516SKenneth E. Jansen     &            rl(npro,nshl,nflow),      rml(npro,nshl,nflow),
3259599516SKenneth E. Jansen     &            BDiagl(npro,nshl,nflow,nflow),
3359599516SKenneth E. Jansen     &            ql(npro,nshl,idflx)
3459599516SKenneth E. Jansenc
3559599516SKenneth E. Jansen        dimension  xmudmi(npro,ngauss)
3659599516SKenneth E. Jansen        dimension sgn(npro,nshl),  EGmass(npro,nedof,nedof)
3759599516SKenneth E. Jansen
3859599516SKenneth E. Jansen        dimension rlsl(npro,nshl,6)
3959599516SKenneth E. Jansen        real*8 rerrl(npro,nshl,6), rerr(nshg,10)
4059599516SKenneth E. Jansen
4159599516SKenneth E. Jansenc
4259599516SKenneth E. Jansenc.... create the matrix of mode signs for the hierarchic basis
4359599516SKenneth E. Jansenc     functions.
4459599516SKenneth E. Jansenc
4559599516SKenneth E. Jansenc
4659599516SKenneth E. Jansen        if (ipord .gt. 1) then
4759599516SKenneth E. Jansen           call getsgn(ien,sgn)
4859599516SKenneth E. Jansen        endif
4959599516SKenneth E. Jansenc
5059599516SKenneth E. Jansenc.... gather the variables
5159599516SKenneth E. Jansenc
5259599516SKenneth E. Jansen        call localy(y,      ycl,     ien,    ndofl,  'gather  ')
5359599516SKenneth E. Jansen        call localy(ac,    acl,     ien,    ndofl,  'gather  ')
5459599516SKenneth E. Jansen        call localx(x,      xl,     ien,    nsd,    'gather  ')
5559599516SKenneth E. Jansen        call local (qres,   ql,     ien,    idflx,  'gather  ')
5659599516SKenneth E. Jansen
5759599516SKenneth E. Jansen        if(matflg(5,1).ge.4 )
5859599516SKenneth E. Jansen     &   call localy (ytarget,   ytargetl,  ien,   nflow,  'gather  ')
5959599516SKenneth E. Jansen
6059599516SKenneth E. Jansen
6159599516SKenneth E. Jansen        if( (iLES.gt.10).and.(iLES.lt.20)) then  ! bardina
6259599516SKenneth E. Jansen           call local (rls, rlsl,     ien,       6, 'gather  ')
6359599516SKenneth E. Jansen        else
6459599516SKenneth E. Jansen           rlsl = zero
6559599516SKenneth E. Jansen        endif
6659599516SKenneth E. Jansenc
6759599516SKenneth E. Jansenc.... get the element residuals, LHS matrix, and preconditioner
6859599516SKenneth E. Jansenc
6959599516SKenneth E. Jansen        rl     = zero
7059599516SKenneth E. Jansen        BDiagl = zero
7159599516SKenneth E. Jansen
7259599516SKenneth E. Jansen        if(ierrcalc.eq.1) rerrl = zero
7359599516SKenneth E. Jansen        ttim(31) = ttim(31) - secs(0.0)
7459599516SKenneth E. Jansen
7559599516SKenneth E. Jansen        call e3  (ycl,     ycl,     acl,     shp,
7659599516SKenneth E. Jansen     &            shgl,    xl,      rl,      rml,   xmudmi,
7759599516SKenneth E. Jansen     &            BDiagl,  ql,      sgn,     rlsl,  EGmass,
7859599516SKenneth E. Jansen     &            rerrl,   ytargetl)
7959599516SKenneth E. Jansen
8059599516SKenneth E. Jansen        ttim(31) = ttim(31) + secs(0.0)
8159599516SKenneth E. Jansenc
8259599516SKenneth E. Jansenc.... assemble the residual and modified residual
8359599516SKenneth E. Jansenc
8459599516SKenneth E. Jansen        call local (res,    rl,     ien,    nflow,  'scatter ')
8559599516SKenneth E. Jansenc
8659599516SKenneth E. Jansen        if ( ierrcalc .eq. 1 ) then
8759599516SKenneth E. Jansen           call local (rerr, rerrl,  ien, 6, 'scatter ')
8859599516SKenneth E. Jansen        endif
8959599516SKenneth E. Jansenc
9059599516SKenneth E. Jansenc.... extract and assemble the Block-Diagonal (see note in elmgmr, line 280)
9159599516SKenneth E. Jansenc
9259599516SKenneth E. Jansen        if (iprec .ne. 0) then
9359599516SKenneth E. Jansen           do i = 1, nshl
9459599516SKenneth E. Jansen              do j = 1, nflow
9559599516SKenneth E. Jansen                 i0 = (i - 1) * nflow + j
9659599516SKenneth E. Jansen                 do k = 1, nflow
9759599516SKenneth E. Jansen                    j0 = (i - 1) * nflow + k
9859599516SKenneth E. Jansen                    BDiagl(:,i,j,k) = EGmass(:,i0,j0)
9959599516SKenneth E. Jansen                 enddo
10059599516SKenneth E. Jansen              enddo
10159599516SKenneth E. Jansen           enddo
10259599516SKenneth E. Jansen           call local (BDiag,  BDiagl, ien, nflow*nflow, 'scatter ')
10359599516SKenneth E. Jansen        endif
10459599516SKenneth E. Jansen
10559599516SKenneth E. Jansenc
10659599516SKenneth E. Jansenc... call timeseries
10759599516SKenneth E. Jansenc
10859599516SKenneth E. Jansen
10959599516SKenneth E. Jansen        if (exts) then
11059599516SKenneth E. Jansen           if ((iter.eq.1).and.(mod(lstep,freq).eq.0)) then
11159599516SKenneth E. Jansen              call timeseries(ycl,xl,ien,sgn)
11259599516SKenneth E. Jansen           endif
11359599516SKenneth E. Jansen        endif
11459599516SKenneth E. Jansen
11559599516SKenneth E. Jansenc
11659599516SKenneth E. Jansenc.... end
11759599516SKenneth E. Jansenc
11859599516SKenneth E. Jansen        return
11959599516SKenneth E. Jansen        end
12059599516SKenneth E. Jansenc
12159599516SKenneth E. Jansenc
12259599516SKenneth E. Jansenc
12359599516SKenneth E. Jansen        subroutine AsIGMRSclr (y,       ac,
12459599516SKenneth E. Jansen     &                         x,       elDwl,
12559599516SKenneth E. Jansen     &                         shp,     shgl,      ien,
12659599516SKenneth E. Jansen     &                         mater,   rest,      rmest,
12759599516SKenneth E. Jansen     &                         qrest,   EGmasst,   Diag)
12859599516SKenneth E. Jansenc
12959599516SKenneth E. Jansenc----------------------------------------------------------------------
13059599516SKenneth E. Jansenc
13159599516SKenneth E. Jansenc This routine computes and assembles the data corresponding to the
13259599516SKenneth E. Jansenc  interior elements.
13359599516SKenneth E. Jansenc
13459599516SKenneth E. Jansenc Zdenek Johan, Winter 1991.  (Fortran 90)
13559599516SKenneth E. Jansenc----------------------------------------------------------------------
13659599516SKenneth E. Jansenc
13759599516SKenneth E. Jansen        use turbSA
13859599516SKenneth E. Jansen        include "common.h"
13959599516SKenneth E. Jansenc
14059599516SKenneth E. Jansen        dimension y(nshg,ndof),
14159599516SKenneth E. Jansen     &            ac(nshg,ndof),
14259599516SKenneth E. Jansen     &            x(numnp,nsd),
14359599516SKenneth E. Jansen     &            shp(nshl,MAXQPT),        shgl(nsd,nshl,MAXQPT),
14459599516SKenneth E. Jansen     &            ien(npro,nshl),
14559599516SKenneth E. Jansen     &            mater(npro),            rest(nshg),
14659599516SKenneth E. Jansen     &            rmest(nshg),            Diag(nshg),
14759599516SKenneth E. Jansen     &            qrest(nshg)
14859599516SKenneth E. Jansen
14959599516SKenneth E. Jansenc
15059599516SKenneth E. Jansen        dimension ycl(npro,nshl,ndof),
15159599516SKenneth E. Jansen     &            acl(npro,nshl,ndof),    dwl(npro,nenl),
15259599516SKenneth E. Jansen     &            xl(npro,nenl,nsd),      Diagl(npro,nshl),
15359599516SKenneth E. Jansen     &            rtl(npro,nshl),         rmtl(npro,nshl),
15459599516SKenneth E. Jansen     &            qtl(npro,nshl),         sgn(npro,nshl)
15559599516SKenneth E. Jansenc
15659599516SKenneth E. Jansen        dimension EGmasst(npro,nshape, nshape)
15759599516SKenneth E. Jansen        real*8    elDwl(npro)
15859599516SKenneth E. Jansenc.... create the matrix of mode signs for the hierarchic basis
15959599516SKenneth E. Jansenc     functions.
16059599516SKenneth E. Jansenc
16159599516SKenneth E. Jansen        call getsgn(ien,sgn)
16259599516SKenneth E. Jansenc
16359599516SKenneth E. Jansenc
16459599516SKenneth E. Jansenc.... gather the variables
16559599516SKenneth E. Jansenc
16659599516SKenneth E. Jansen        call localy (y,       ycl,      ien,    ndof,  'gather  ')
16759599516SKenneth E. Jansen        call localy (ac,      acl,     ien,    ndof,  'gather  ')
16859599516SKenneth E. Jansen        call localx (x,       xl,      ien,    nsd,   'gather  ')
16959599516SKenneth E. Jansenc       call local (qrest,   qtl,     ien,    1,     'gather  ')
17059599516SKenneth E. Jansen        if (iRANS .lt. 0) then
17159599516SKenneth E. Jansen           call localx (d2wall,   dwl,     ien,    1,     'gather  ')
17259599516SKenneth E. Jansen        endif
17359599516SKenneth E. Jansenc
17459599516SKenneth E. Jansenc.... get the element residuals, LHS matrix, and preconditioner
17559599516SKenneth E. Jansenc
17659599516SKenneth E. Jansen        rtl     = zero
17759599516SKenneth E. Jansen        Diagl   = zero
17859599516SKenneth E. Jansen
17959599516SKenneth E. Jansen        ttim(31) = ttim(31) - tmr()
18059599516SKenneth E. Jansen
18159599516SKenneth E. Jansen        call e3Sclr (ycl,     acl,
18259599516SKenneth E. Jansen     &               dwl,    elDwl,   shp,
18359599516SKenneth E. Jansen     &               sgn,    shgl,    xl,
18459599516SKenneth E. Jansen     &               rtl,    rmtl,
18559599516SKenneth E. Jansen     &               qtl,    EGmasst )
18659599516SKenneth E. Jansen
18759599516SKenneth E. Jansen        ttim(31) = ttim(31) + tmr()
18859599516SKenneth E. Jansenc
18959599516SKenneth E. Jansenc.... assemble the residual and modified residual
19059599516SKenneth E. Jansenc
19159599516SKenneth E. Jansen        call local (rest,    rtl,     ien,    1,  'scatter ')
19259599516SKenneth E. Jansenc
19359599516SKenneth E. Jansenc.... extract and assemble the Diagonal
19459599516SKenneth E. Jansenc
19559599516SKenneth E. Jansen        if (iprec .ne. 0) then
19659599516SKenneth E. Jansen           do i=1,nshl
19759599516SKenneth E. Jansen              Diagl(:,i)=EGmassT(:,i,i)
19859599516SKenneth E. Jansen           enddo
19959599516SKenneth E. Jansen           call local(Diag, Diagl, ien, 1, 'scatter ')
20059599516SKenneth E. Jansen        endif
20159599516SKenneth E. Jansenc
20259599516SKenneth E. Jansenc.... end
20359599516SKenneth E. Jansenc
20459599516SKenneth E. Jansen        return
20559599516SKenneth E. Jansen        end
20659599516SKenneth E. Jansen
20759599516SKenneth E. Jansen
208