xref: /phasta/phSolver/compressible/e3massl.f (revision 595995161822a203c8467e0e4a253d7bd7d6df32)
1*59599516SKenneth E. Jansen        subroutine e3massl (bcool,    shape,  WdetJ,   A0,
2*59599516SKenneth E. Jansen     &                      EGmass )
3*59599516SKenneth E. Jansenc
4*59599516SKenneth E. Jansenc----------------------------------------------------------------------
5*59599516SKenneth E. Jansenc This routine calculates the time contribution to the LHS tangent
6*59599516SKenneth E. Jansenc mass matrix.
7*59599516SKenneth E. Jansenc
8*59599516SKenneth E. Jansenc input:
9*59599516SKenneth E. Jansenc  shape   (npro,nshl)        : element shape functions
10*59599516SKenneth E. Jansenc  WdetJ   (npro)               : weighted Jacobian determinant
11*59599516SKenneth E. Jansenc  A0      (npro)               : weighted Jacobian matrix
12*59599516SKenneth E. Jansenc  EGmass  (npro,nedof,nedof)   : partial LHS matrix
13*59599516SKenneth E. Jansenc
14*59599516SKenneth E. Jansenc output:
15*59599516SKenneth E. Jansenc  EGmass  (npro,nedof,nedof)   : partial LHS matrix
16*59599516SKenneth E. Jansenc
17*59599516SKenneth E. Jansenc----------------------------------------------------------------------
18*59599516SKenneth E. Jansenc
19*59599516SKenneth E. Jansen        include "common.h"
20*59599516SKenneth E. Jansenc
21*59599516SKenneth E. Jansen        dimension  A0(npro,nflow,nflow),   shape(npro,nshl),
22*59599516SKenneth E. Jansen     &             WdetJ(npro),          EGmass(npro,nedof,nedof)
23*59599516SKenneth E. Jansenc
24*59599516SKenneth E. Jansen        dimension  fact(npro,5),           temp(npro),
25*59599516SKenneth E. Jansen     &             shpij(npro),          bcool(npro)
26*59599516SKenneth E. Jansenc
27*59599516SKenneth E. Jansenc.... ---------------------------->  LHS  <----------------------------
28*59599516SKenneth E. Jansenc
29*59599516SKenneth E. Jansen        temp = WdetJ * almi/gami/alfi*Dtgl
30*59599516SKenneth E. Jansen        bcool = WdetJ * bcool  ! note that bcool is not used after this
31*59599516SKenneth E. Jansen                               ! (if we got in here at least).
32*59599516SKenneth E. Jansenc
33*59599516SKenneth E. Jansenc.... loop through columns (nodes j) and rows (nodes i)
34*59599516SKenneth E. Jansenc
35*59599516SKenneth E. Jansen        do j = 1, nshl
36*59599516SKenneth E. Jansen           j0 = nflow * (j - 1)
37*59599516SKenneth E. Jansen
38*59599516SKenneth E. Jansen           do i = 1, nshl
39*59599516SKenneth E. Jansen              i0 = nflow * (i - 1)
40*59599516SKenneth E. Jansenc
41*59599516SKenneth E. Jansenc.... get the factor
42*59599516SKenneth E. Jansenc
43*59599516SKenneth E. Jansen              shpij = shape(:,i) * shape(:,j)
44*59599516SKenneth E. Jansen              fact(:,1)  = shpij * (temp + bcool*spongeContinuity)
45*59599516SKenneth E. Jansen              fact(:,2)  = shpij * (temp + bcool*spongeMomentum1)
46*59599516SKenneth E. Jansen              fact(:,3)  = shpij * (temp + bcool*spongeMomentum2)
47*59599516SKenneth E. Jansen              fact(:,4)  = shpij * (temp + bcool*spongeMomentum3)
48*59599516SKenneth E. Jansen              fact(:,5)  = shpij * (temp + bcool*spongeEnergy)
49*59599516SKenneth E. Jansenc
50*59599516SKenneth E. Jansenc.... loop through d.o.f.'s
51*59599516SKenneth E. Jansenc
52*59599516SKenneth E. Jansen              do jdof = 1, nflow
53*59599516SKenneth E. Jansen                 EGmass(:,i0+1,j0+jdof) = EGmass(:,i0+1,j0+jdof)
54*59599516SKenneth E. Jansen     &                                  + fact(:,1) * A0(:,1,jdof)
55*59599516SKenneth E. Jansen                 EGmass(:,i0+2,j0+jdof) = EGmass(:,i0+2,j0+jdof)
56*59599516SKenneth E. Jansen     &                                  + fact(:,2) * A0(:,2,jdof)
57*59599516SKenneth E. Jansen                 EGmass(:,i0+3,j0+jdof) = EGmass(:,i0+3,j0+jdof)
58*59599516SKenneth E. Jansen     &                                  + fact(:,3) * A0(:,3,jdof)
59*59599516SKenneth E. Jansen                 EGmass(:,i0+4,j0+jdof) = EGmass(:,i0+4,j0+jdof)
60*59599516SKenneth E. Jansen     &                                  + fact(:,4) * A0(:,4,jdof)
61*59599516SKenneth E. Jansen                 EGmass(:,i0+5,j0+jdof) = EGmass(:,i0+5,j0+jdof)
62*59599516SKenneth E. Jansen     &                                  + fact(:,5) * A0(:,5,jdof)
63*59599516SKenneth E. Jansen              enddo
64*59599516SKenneth E. Jansenc
65*59599516SKenneth E. Jansenc.... end loop on row nodes
66*59599516SKenneth E. Jansenc
67*59599516SKenneth E. Jansen           enddo
68*59599516SKenneth E. Jansenc
69*59599516SKenneth E. Jansenc.... end loop on column nodes
70*59599516SKenneth E. Jansenc
71*59599516SKenneth E. Jansen        enddo
72*59599516SKenneth E. Jansenc
73*59599516SKenneth E. Jansenc.... return
74*59599516SKenneth E. Jansenc
75*59599516SKenneth E. Jansen        return
76*59599516SKenneth E. Jansen        end
77*59599516SKenneth E. Jansenc
78*59599516SKenneth E. Jansenc
79*59599516SKenneth E. Jansenc
80*59599516SKenneth E. Jansen        subroutine e3masslSclr (shape,  WdetJ,   A0t,
81*59599516SKenneth E. Jansen     &                      EGmasst,srcp)
82*59599516SKenneth E. Jansenc
83*59599516SKenneth E. Jansenc----------------------------------------------------------------------
84*59599516SKenneth E. Jansenc This routine calculates the time contribution to the LHS tangent
85*59599516SKenneth E. Jansenc mass matrix.
86*59599516SKenneth E. Jansenc
87*59599516SKenneth E. Jansenc input:
88*59599516SKenneth E. Jansenc  shape   (npro,nshl)          : element shape functions
89*59599516SKenneth E. Jansenc  WdetJ   (npro)               : weighted Jacobian determinant
90*59599516SKenneth E. Jansenc  A0t     (npro)               : weighted Jacobian matrix
91*59599516SKenneth E. Jansenc  EGmasst (npro,nshape, nshape): partial LHS matrix
92*59599516SKenneth E. Jansenc
93*59599516SKenneth E. Jansenc output:
94*59599516SKenneth E. Jansenc  EGmasst (npro,nshape,nshape) : partial LHS matrix
95*59599516SKenneth E. Jansenc
96*59599516SKenneth E. Jansenc----------------------------------------------------------------------
97*59599516SKenneth E. Jansenc
98*59599516SKenneth E. Jansen        include "common.h"
99*59599516SKenneth E. Jansenc
100*59599516SKenneth E. Jansen        dimension  A0t(npro),         shape(npro,nshl),
101*59599516SKenneth E. Jansen     &             WdetJ(npro),       EGmasst(npro,nshape,nshape)
102*59599516SKenneth E. Jansenc
103*59599516SKenneth E. Jansen        dimension  fact(npro),        temp(npro),
104*59599516SKenneth E. Jansen     &             shpij(npro),       srcp(npro)
105*59599516SKenneth E. Jansenc
106*59599516SKenneth E. Jansenc.... ---------------------------->  LHS  <----------------------------
107*59599516SKenneth E. Jansenc
108*59599516SKenneth E. Jansen        temp = WdetJ * almi/gami/alfi*Dtgl
109*59599516SKenneth E. Jansenc
110*59599516SKenneth E. Jansenc.... loop through columns (nodes j) and rows (nodes i)
111*59599516SKenneth E. Jansenc
112*59599516SKenneth E. Jansen        do j = 1, nshl
113*59599516SKenneth E. Jansen           do i = 1, nshl
114*59599516SKenneth E. Jansenc
115*59599516SKenneth E. Jansenc.... get the factor
116*59599516SKenneth E. Jansenc
117*59599516SKenneth E. Jansen              shpij = shape(:,i) * shape(:,j)
118*59599516SKenneth E. Jansen              fact  = shpij * temp
119*59599516SKenneth E. Jansen              EGmasst(:,i,j) = EGmasst(:,i,j) + fact * A0t(:)
120*59599516SKenneth E. Jansen              EGmasst(:,i,j) = EGmasst(:,i,j)
121*59599516SKenneth E. Jansen     &                       - shpij*WdetJ(:) * srcp(:)
122*59599516SKenneth E. Jansenc
123*59599516SKenneth E. Jansenc.... end loop on row nodes
124*59599516SKenneth E. Jansenc
125*59599516SKenneth E. Jansen           enddo
126*59599516SKenneth E. Jansenc
127*59599516SKenneth E. Jansenc.... end loop on column nodes
128*59599516SKenneth E. Jansenc
129*59599516SKenneth E. Jansen        enddo
130*59599516SKenneth E. Jansenc
131*59599516SKenneth E. Jansenc.... return
132*59599516SKenneth E. Jansenc
133*59599516SKenneth E. Jansen        return
134*59599516SKenneth E. Jansen        end
135*59599516SKenneth E. Jansen
136