xref: /phasta/phSolver/compressible/e3juel.f (revision 712d3df0b59ebebaaeaea358162c8d2c043c6e08)
159599516SKenneth E. Jansen        subroutine e3juel (yl,     acl,    sls,    A0,
259599516SKenneth E. Jansen     &			   WdetJ,  rl,     rml)
359599516SKenneth E. Jansenc
459599516SKenneth E. Jansenc----------------------------------------------------------------------
559599516SKenneth E. Jansenc
659599516SKenneth E. Jansenc This routine calculates Exactly integrated Linear Tetrahedra
759599516SKenneth E. Jansenc Mass term (assuming U(Y) is linear it is not).
859599516SKenneth E. Jansenc
959599516SKenneth E. Jansenc input:
1059599516SKenneth E. Jansenc  WdetJ  (npro)                : weighted Jacobian
1159599516SKenneth E. Jansenc
1259599516SKenneth E. Jansenc output:
1359599516SKenneth E. Jansenc  rl     (npro,nshl,nflow)      : residual
1459599516SKenneth E. Jansenc  rml    (npro,nshl,nflow)      : modified residual
1559599516SKenneth E. Jansenc
1659599516SKenneth E. Jansenc
1759599516SKenneth E. Jansenc  note that this routine wipes out yl by putting ul into it
1859599516SKenneth E. Jansenc  and then (in ires=1 case ) it is used again
1959599516SKenneth E. Jansenc
2059599516SKenneth E. Jansenc Kenneth Jansen, Winter 1997, Primitive Variables
2159599516SKenneth E. Jansenc----------------------------------------------------------------------
2259599516SKenneth E. Jansenc
2359599516SKenneth E. Jansen	include "common.h"
2459599516SKenneth E. Jansenc
2559599516SKenneth E. Jansen        dimension yl(npro,nshl,nflow),        acl(npro,nshl,ndof),
2659599516SKenneth E. Jansen     &            WdetJ(npro),               A0(npro,nflow,nflow),
2759599516SKenneth E. Jansen     &            rl(npro,nshl,nflow),        rml(npro,nshl,nflow)
2859599516SKenneth E. Jansenc
2959599516SKenneth E. Jansen        dimension rk(npro),                  rho(npro),
3059599516SKenneth E. Jansen     &            ei(npro),                  tmp(npro),
3159599516SKenneth E. Jansen     &            ub(npro,nflow),             fact(npro),
3259599516SKenneth E. Jansen     &		  fddt(npro)
3359599516SKenneth E. Jansen
3459599516SKenneth E. Jansen	ttim(28) = ttim(28) - secs(0.0)
3559599516SKenneth E. Jansen
3659599516SKenneth E. Jansenc
3759599516SKenneth E. Jansenc.... --------------------->  Time term   <--------------------
3859599516SKenneth E. Jansenc
3959599516SKenneth E. Jansenc.... add contribution of U to rml
4059599516SKenneth E. Jansenc
4159599516SKenneth E. Jansenc.... compute conservative variables
4259599516SKenneth E. Jansenc
4359599516SKenneth E. Jansenc
4459599516SKenneth E. Jansenc   multiply by exact mass matrix   integral N_aN_b=(I+1)*V/20
4559599516SKenneth E. Jansenc   where 1 is a matrix with every element=1
4659599516SKenneth E. Jansenc
4759599516SKenneth E. Jansenc   note that the wght has 4/3 multiplier so 3/4*20=15
4859599516SKenneth E. Jansenc
4959599516SKenneth E. Jansen
5059599516SKenneth E. Jansen        fact=WdetJ/(Qwt(lcsyst,intp)*15.0d0)
5159599516SKenneth E. Jansen         fct1=almi/(gami*alfi)*Dtgl  ! factor for predictor (scalar)
5259599516SKenneth E. Jansen        if(ires.ne.1) then
5359599516SKenneth E. Jansen         fddt=fact*fct1
5459599516SKenneth E. Jansen         do inod=1,nshl
5559599516SKenneth E. Jansen	  rk = pt5 * (yl(:,inod,2)**2 + yl(:,inod,3)**2 + yl(:,inod,4)**2)
5659599516SKenneth E. Jansenc
5759599516SKenneth E. Jansen          ithm = 6
5859599516SKenneth E. Jansen          call getthm (yl(:,inod,1), yl(:,inod,5), sls,
5959599516SKenneth E. Jansen     &                 rk,           rho,          ei,
6059599516SKenneth E. Jansen     &                 tmp,          tmp,          tmp,
6159599516SKenneth E. Jansen     &                 tmp,          tmp,          tmp,
6259599516SKenneth E. Jansen     &                 tmp,          tmp)
6359599516SKenneth E. Jansenc
6459599516SKenneth E. Jansen         yl(:,inod,1) = rho
6559599516SKenneth E. Jansen         yl(:,inod,2) = rho * yl(:,inod,2)
6659599516SKenneth E. Jansen         yl(:,inod,3) = rho * yl(:,inod,3)
6759599516SKenneth E. Jansen         yl(:,inod,4) = rho * yl(:,inod,4)
6859599516SKenneth E. Jansen         yl(:,inod,5) = rho * (ei + rk)
6959599516SKenneth E. Jansen        enddo
7059599516SKenneth E. Jansen	    ub(:,:)=yl(:,1,:)+yl(:,2,:)
7159599516SKenneth E. Jansen     &             +yl(:,3,:)+yl(:,4,:)
7259599516SKenneth E. Jansen
7359599516SKenneth E. Jansenc
7459599516SKenneth E. Jansenc  what we have now in yl is the U_b^e
7559599516SKenneth E. Jansenc  we want to get Resm(mass)=M^e_{ab} (U^e_b(Y+epsilon P)
7659599516SKenneth E. Jansenc                                              - U^e_b(Y))*fact/dt,
7759599516SKenneth E. Jansenc  since only the difference between resm's is important we
7859599516SKenneth E. Jansenc  do not have to subtract off the unperturbed U(Y) vector
7959599516SKenneth E. Jansenc  This term is meant to carry through the effect of a perturbation
8059599516SKenneth E. Jansenc  in Y upon dY/dt (through the predictor into the term fact)
8159599516SKenneth E. Jansenc
8259599516SKenneth E. Jansenc
8359599516SKenneth E. Jansen
8459599516SKenneth E. Jansen	  do i = 1, nshl
8559599516SKenneth E. Jansen	    rml(:,i,1) = rml(:,i,1) + fddt * (yl(:,i,1)+ub(:,1))
8659599516SKenneth E. Jansen	    rml(:,i,2) = rml(:,i,2) + fddt * (yl(:,i,2)+ub(:,2))
8759599516SKenneth E. Jansen	    rml(:,i,3) = rml(:,i,3) + fddt * (yl(:,i,3)+ub(:,3))
8859599516SKenneth E. Jansen	    rml(:,i,4) = rml(:,i,4) + fddt * (yl(:,i,4)+ub(:,4))
8959599516SKenneth E. Jansen	    rml(:,i,5) = rml(:,i,5) + fddt * (yl(:,i,5)+ub(:,5))
9059599516SKenneth E. Jansen	  enddo
9159599516SKenneth E. Jansenc
92*f4d0b58bSKenneth E. Jansen!      flops = flops + 35*nshl*npro
9359599516SKenneth E. Jansen	endif
9459599516SKenneth E. Jansen
9559599516SKenneth E. Jansenc
9659599516SKenneth E. Jansenc.... ires = 2 or 3
9759599516SKenneth E. Jansenc
9859599516SKenneth E. Jansen	if ((ires .eq. 1) .or. (ires .eq. 3)) then
9959599516SKenneth E. Jansen
10059599516SKenneth E. Jansen	    ub(:,:)=acl(:,1,:)+acl(:,2,:)
10159599516SKenneth E. Jansen     &             +acl(:,3,:)+acl(:,4,:)
10259599516SKenneth E. Jansen
10359599516SKenneth E. Jansen	  do i = 1, nshl
10459599516SKenneth E. Jansen	    yl(:,i,1) = fact*(acl(:,i,1)+ub(:,1))
10559599516SKenneth E. Jansen	    yl(:,i,2) = fact*(acl(:,i,2)+ub(:,2))
10659599516SKenneth E. Jansen	    yl(:,i,3) = fact*(acl(:,i,3)+ub(:,3))
10759599516SKenneth E. Jansen	    yl(:,i,4) = fact*(acl(:,i,4)+ub(:,4))
10859599516SKenneth E. Jansen	    yl(:,i,5) = fact*(acl(:,i,5)+ub(:,5))
10959599516SKenneth E. Jansen	  enddo
11059599516SKenneth E. Jansenc
11159599516SKenneth E. Jansenc  what we have now in yl is the dY_a^e/dt=M^e_{ab} Y_{b,t},  must multiply by
11259599516SKenneth E. Jansenc  A0 to get dU^e_a/dt= dU/dY(centroid) dY_a^e/dt,  take advantage of zeros
11359599516SKenneth E. Jansenc  in A0(Prim) with comments
11459599516SKenneth E. Jansenc
11559599516SKenneth E. Jansen          do i = 1, nshl
11659599516SKenneth E. Jansen            rl(:,i,1) = rl(:,i,1)
11759599516SKenneth E. Jansen     &     + A0(:,1,1)*yl(:,i,1)
11859599516SKenneth E. Jansenc    &     + A0(:,1,2)*yl(:,i,2)
11959599516SKenneth E. Jansenc    &     + A0(:,1,3)*yl(:,i,3)
12059599516SKenneth E. Jansenc    &     + A0(:,1,4)*yl(:,i,4)
12159599516SKenneth E. Jansen     &     + A0(:,1,5)*yl(:,i,5)
12259599516SKenneth E. Jansenc
12359599516SKenneth E. Jansen            rl(:,i,2) = rl(:,i,2)
12459599516SKenneth E. Jansen     &     + A0(:,2,1)*yl(:,i,1)
12559599516SKenneth E. Jansen     &     + A0(:,2,2)*yl(:,i,2)
12659599516SKenneth E. Jansenc    &     + A0(:,2,3)*yl(:,i,3)
12759599516SKenneth E. Jansenc    &     + A0(:,2,4)*yl(:,i,4)
12859599516SKenneth E. Jansen     &     + A0(:,2,5)*yl(:,i,5)
12959599516SKenneth E. Jansenc
13059599516SKenneth E. Jansen            rl(:,i,3) = rl(:,i,3)
13159599516SKenneth E. Jansen     &     + A0(:,3,1)*yl(:,i,1)
13259599516SKenneth E. Jansenc    &     + A0(:,3,2)*yl(:,i,2)
13359599516SKenneth E. Jansen     &     + A0(:,3,3)*yl(:,i,3)
13459599516SKenneth E. Jansenc    &     + A0(:,3,4)*yl(:,i,4)
13559599516SKenneth E. Jansen     &     + A0(:,3,5)*yl(:,i,5)
13659599516SKenneth E. Jansenc
13759599516SKenneth E. Jansen            rl(:,i,4) = rl(:,i,4)
13859599516SKenneth E. Jansen     &     + A0(:,4,1)*yl(:,i,1)
13959599516SKenneth E. Jansenc    &     + A0(:,4,2)*yl(:,i,2)
14059599516SKenneth E. Jansenc    &     + A0(:,4,3)*yl(:,i,3)
14159599516SKenneth E. Jansen     &     + A0(:,4,4)*yl(:,i,4)
14259599516SKenneth E. Jansen     &     + A0(:,4,5)*yl(:,i,5)
14359599516SKenneth E. Jansenc
14459599516SKenneth E. Jansen            rl(:,i,5) = rl(:,i,5)
14559599516SKenneth E. Jansen     &     + A0(:,5,1)*yl(:,i,1)
14659599516SKenneth E. Jansen     &     + A0(:,5,2)*yl(:,i,2)
14759599516SKenneth E. Jansen     &     + A0(:,5,3)*yl(:,i,3)
14859599516SKenneth E. Jansen     &     + A0(:,5,4)*yl(:,i,4)
14959599516SKenneth E. Jansen     &     + A0(:,5,5)*yl(:,i,5)
15059599516SKenneth E. Jansenc
15159599516SKenneth E. Jansen          enddo
15259599516SKenneth E. Jansenc
153*f4d0b58bSKenneth E. Jansen!      flops = flops + 45*nshl*npro
15459599516SKenneth E. Jansen	endif
15559599516SKenneth E. Jansen
15659599516SKenneth E. Jansen	ttim(28) = ttim(28) + tmr()
15759599516SKenneth E. Jansenc
15859599516SKenneth E. Jansenc.... return
15959599516SKenneth E. Jansenc
16059599516SKenneth E. Jansen	return
16159599516SKenneth E. Jansen	end
16259599516SKenneth E. Jansen
16359599516SKenneth E. Jansenc$$$
16459599516SKenneth E. Jansenc$$$        subroutine e3juelSclr (ycl,     acl,    A0t,
16559599516SKenneth E. Jansenc$$$     &			       WdetJ,  rtl,     rmtl)
16659599516SKenneth E. Jansenc$$$c
16759599516SKenneth E. Jansenc$$$c----------------------------------------------------------------------
16859599516SKenneth E. Jansenc$$$c
16959599516SKenneth E. Jansenc$$$c This routine calculates Exactly integrated Linear Tetrahedra
17059599516SKenneth E. Jansenc$$$c Mass term (assuming U(Y) is linear it is not).
17159599516SKenneth E. Jansenc$$$c
17259599516SKenneth E. Jansenc$$$c input:
17359599516SKenneth E. Jansenc$$$c  WdetJ  (npro)                : weighted Jacobian
17459599516SKenneth E. Jansenc$$$c
17559599516SKenneth E. Jansenc$$$c output:
17659599516SKenneth E. Jansenc$$$c  rtl     (npro,nshl,nflow)      : residual
17759599516SKenneth E. Jansenc$$$c  rmtl    (npro,nshl,nflow)      : modified residual
17859599516SKenneth E. Jansenc$$$c
17959599516SKenneth E. Jansenc$$$c
18059599516SKenneth E. Jansenc$$$c  note that this routine wipes out ycl by putting ul into it
18159599516SKenneth E. Jansenc$$$c  and then (in ires=1 case ) it is used again
18259599516SKenneth E. Jansenc$$$c
18359599516SKenneth E. Jansenc$$$c Kenneth Jansen, Winter 1997, Primitive Variables
18459599516SKenneth E. Jansenc$$$c----------------------------------------------------------------------
18559599516SKenneth E. Jansenc$$$c
18659599516SKenneth E. Jansenc$$$	include "common.h"
18759599516SKenneth E. Jansenc$$$c
18859599516SKenneth E. Jansenc$$$        dimension ycl(npro,nshl,ndof),    acl(npro,nshl,ndof),
18959599516SKenneth E. Jansenc$$$     &            WdetJ(npro),           A0t(npro),
19059599516SKenneth E. Jansenc$$$     &            rtl(npro,nshl),        rmtl(npro,nshl)
19159599516SKenneth E. Jansenc$$$
19259599516SKenneth E. Jansenc$$$c
19359599516SKenneth E. Jansenc$$$        dimension rk(npro),              rho(npro),
19459599516SKenneth E. Jansenc$$$     &            ei(npro),              tmp(npro),
19559599516SKenneth E. Jansenc$$$     &            ubt(npro),             fact(npro),
19659599516SKenneth E. Jansenc$$$     &		  fddt(npro)
19759599516SKenneth E. Jansenc$$$
19859599516SKenneth E. Jansenc$$$	ttim(28) = ttim(28) - tmr()
19959599516SKenneth E. Jansenc$$$
20059599516SKenneth E. Jansenc$$$c
20159599516SKenneth E. Jansenc$$$c.... --------------------->  Time term   <--------------------
20259599516SKenneth E. Jansenc$$$c
20359599516SKenneth E. Jansenc$$$c.... add contribution of U to rml
20459599516SKenneth E. Jansenc$$$c
20559599516SKenneth E. Jansenc$$$c.... compute conservative variables
20659599516SKenneth E. Jansenc$$$c
20759599516SKenneth E. Jansenc$$$c
20859599516SKenneth E. Jansenc$$$c   multiply by exact mass matrix   integral N_aN_b=(I+1)*V/20
20959599516SKenneth E. Jansenc$$$c   where 1 is a matrix with every element=1
21059599516SKenneth E. Jansenc$$$c
21159599516SKenneth E. Jansenc$$$c   note that the wght has 4/3 multiplier so 3/4*20=15
21259599516SKenneth E. Jansenc$$$c
21359599516SKenneth E. Jansenc$$$
21459599516SKenneth E. Jansenc$$$        fact=WdetJ/(Qwt(lcsyst,intp)*15.0d0)
21559599516SKenneth E. Jansenc$$$         fct1=almi/(gami*alfi)*Dtgl  ! factor for predictor (scaler)
21659599516SKenneth E. Jansenc$$$c
21759599516SKenneth E. Jansenc$$$c
21859599516SKenneth E. Jansenc$$$c.... ires = 2 or 3
21959599516SKenneth E. Jansenc$$$c
22059599516SKenneth E. Jansenc$$$
22159599516SKenneth E. Jansenc$$$	if ((ires .eq. 1) .or. (ires .eq. 3)) then
22259599516SKenneth E. Jansenc$$$	    ubt(:)=acl(:,1,id)+acl(:,2,id)
22359599516SKenneth E. Jansenc$$$     &            +acl(:,3,id)+acl(:,4,id)
22459599516SKenneth E. Jansenc$$$	  do i = 1, nshl
22559599516SKenneth E. Jansenc$$$	    ycl(:,i,id) = fact*(acl(:,i,id)+ubt(:))
22659599516SKenneth E. Jansenc$$$
22759599516SKenneth E. Jansenc$$$	  enddo
22859599516SKenneth E. Jansenc$$$c
22959599516SKenneth E. Jansenc$$$c  what we have now in ycl is the dY_a^e/dt=M^e_{ab} Y_{b,t},  must multiply by
23059599516SKenneth E. Jansenc$$$c  A0 to get dU^e_a/dt= dU/dY(centroid) dY_a^e/dt,  take advantage of zeros
23159599516SKenneth E. Jansenc$$$c  in A0(Prim) with comments
23259599516SKenneth E. Jansenc$$$c
23359599516SKenneth E. Jansenc$$$          do i = 1, nshl
23459599516SKenneth E. Jansenc$$$            rtl(:,i) = rtl(:,i)
23559599516SKenneth E. Jansenc$$$     &     + A0t(:)*ycl(:,i,id)
23659599516SKenneth E. Jansenc$$$
23759599516SKenneth E. Jansenc$$$c
23859599516SKenneth E. Jansenc$$$          enddo
23959599516SKenneth E. Jansenc$$$c
240*f4d0b58bSKenneth E. Jansenc$$$     !      flops = flops + 45*nenl*npro
24159599516SKenneth E. Jansenc$$$	endif
24259599516SKenneth E. Jansenc$$$
24359599516SKenneth E. Jansenc$$$	ttim(28) = ttim(28) + tmr()
24459599516SKenneth E. Jansenc$$$c
24559599516SKenneth E. Jansenc$$$c.... return
24659599516SKenneth E. Jansenc$$$c
24759599516SKenneth E. Jansenc$$$	return
24859599516SKenneth E. Jansenc$$$	end
249