xref: /phasta/phSolver/incompressible/e3dc.f (revision 595995161822a203c8467e0e4a253d7bd7d6df32)
1*59599516SKenneth E. Jansenc$$$	subroutine e3DC (g1yi,   g2yi,   g3yi,
2*59599516SKenneth E. Jansenc$$$     &                   giju,   tauM,    A0,     raLS,
3*59599516SKenneth E. Jansenc$$$     &			 rtLS,   giju,   DC,     ri,
4*59599516SKenneth E. Jansenc$$$     &                   rmi,    stiff, A0DC)
5*59599516SKenneth E. Jansenc$$$c
6*59599516SKenneth E. Jansenc$$$c----------------------------------------------------------------------
7*59599516SKenneth E. Jansenc$$$c
8*59599516SKenneth E. Jansenc$$$c This routine calculates the contribution of the Discontinuity-
9*59599516SKenneth E. Jansenc$$$c Capturing operator to RHS and preconditioner.
10*59599516SKenneth E. Jansenc$$$c
11*59599516SKenneth E. Jansenc$$$c  g1yi   (nflow,npro)           : grad-y in direction 1
12*59599516SKenneth E. Jansenc$$$c  g2yi   (nflow,npro)           : grad-y in direction 2
13*59599516SKenneth E. Jansenc$$$c  g3yi   (nflow,npro)           : grad-y in direction 3
14*59599516SKenneth E. Jansenc$$$c  A0     (nsymdf,npro)          : A0 matrix (Symm. storage)
15*59599516SKenneth E. Jansenc$$$c  raLS   (npro)                 : square of LS residual (A0inv norm)
16*59599516SKenneth E. Jansenc$$$c  rtLS   (npro)                 : square of LS residual (Tau norm)
17*59599516SKenneth E. Jansenc$$$c  giju    (6,npro)              : metric matrix
18*59599516SKenneth E. Jansenc$$$c  DC     (ngauss,npro)          : discontinuity-capturing factor
19*59599516SKenneth E. Jansenc$$$c  intp				 : integration point number
20*59599516SKenneth E. Jansenc$$$c
21*59599516SKenneth E. Jansenc$$$c output:
22*59599516SKenneth E. Jansenc$$$c  ri     (nflow*(nsd+1),npro)   : partial residual
23*59599516SKenneth E. Jansenc$$$c  rmi    (nflow*(nsd+1),npro)   : partial modified residual
24*59599516SKenneth E. Jansenc$$$c  stiff  (nsymdf,6,npro)       : diffusivity matrix
25*59599516SKenneth E. Jansenc$$$c  DC     (npro)                : discontinuity-capturing factor
26*59599516SKenneth E. Jansenc$$$c
27*59599516SKenneth E. Jansenc$$$c
28*59599516SKenneth E. Jansenc$$$c Zdenek Johan, Summer 1990. (Modified from e2dc.f)
29*59599516SKenneth E. Jansenc$$$c Zdenek Johan, Winter 1991. (Recoded)
30*59599516SKenneth E. Jansenc$$$c Zdenek Johan, Winter 1991. (Fortran 90)
31*59599516SKenneth E. Jansenc$$$c----------------------------------------------------------------------
32*59599516SKenneth E. Jansenc$$$c
33*59599516SKenneth E. Jansenc$$$	include "common.h"
34*59599516SKenneth E. Jansenc$$$c
35*59599516SKenneth E. Jansenc$$$        dimension g1yi(npro,nflow),          g2yi(npro,nflow),
36*59599516SKenneth E. Jansenc$$$     &            g3yi(npro,nflow),          A0(npro,5,5),
37*59599516SKenneth E. Jansenc$$$     &            raLS(npro),                rtLS(npro),
38*59599516SKenneth E. Jansenc$$$     &            giju(npro,6),              DC(npro,ngauss),
39*59599516SKenneth E. Jansenc$$$     &            ri(npro,nflow*(nsd+1)),    rmi(npro,nflow*(nsd+1)),
40*59599516SKenneth E. Jansenc$$$     &            stiff(npro,3*nflow,3*nflow),itmp(npro)
41*59599516SKenneth E. Jansenc$$$c
42*59599516SKenneth E. Jansenc$$$
43*59599516SKenneth E. Jansenc$$$        dimension ggyi(npro,nflow),         gAgyi(npro,15),
44*59599516SKenneth E. Jansenc$$$     &            gnorm(npro),              A0gyi(npro,15),
45*59599516SKenneth E. Jansenc$$$     &            yiA0DCyj(npro,6),         A0DC(npro,4)
46*59599516SKenneth E. Jansenc$$$c
47*59599516SKenneth E. Jansenc$$$c ... -----------------------> initialize <----------------------------
48*59599516SKenneth E. Jansenc$$$c
49*59599516SKenneth E. Jansenc$$$        A0gyi    = zero
50*59599516SKenneth E. Jansenc$$$        gAgyi    = zero
51*59599516SKenneth E. Jansenc$$$        yiA0DCyj = zero
52*59599516SKenneth E. Jansenc$$$        DC       = zero
53*59599516SKenneth E. Jansenc$$$c.... ----------------------->  global gradient  <----------------------
54*59599516SKenneth E. Jansenc$$$c
55*59599516SKenneth E. Jansenc$$$c.... calculate (A0 y_,j) --> A0gyi
56*59599516SKenneth E. Jansenc$$$c
57*59599516SKenneth E. Jansenc$$$c  A0 Y_{,1}
58*59599516SKenneth E. Jansenc$$$c
59*59599516SKenneth E. Jansenc$$$        A0gyi( :,1) = A0(:,1,1)*g1yi(:,1)
60*59599516SKenneth E. Jansenc$$$     &              + A0(:,1,2)*g1yi(:,2)
61*59599516SKenneth E. Jansenc$$$     &              + A0(:,1,3)*g1yi(:,3)
62*59599516SKenneth E. Jansenc$$$     &              + A0(:,1,4)*g1yi(:,4)
63*59599516SKenneth E. Jansenc$$$     &              + A0(:,1,5)*g1yi(:,5)
64*59599516SKenneth E. Jansenc$$$        A0gyi( :,2) = A0(:,2,1)*g1yi(:,1)
65*59599516SKenneth E. Jansenc$$$     &              + A0(:,2,2)*g1yi(:,2)
66*59599516SKenneth E. Jansenc$$$     &              + A0(:,2,3)*g1yi(:,3)
67*59599516SKenneth E. Jansenc$$$     &              + A0(:,2,4)*g1yi(:,4)
68*59599516SKenneth E. Jansenc$$$     &              + A0(:,2,5)*g1yi(:,5)
69*59599516SKenneth E. Jansenc$$$        A0gyi( :,3) = A0(:,3,1)*g1yi(:,1)
70*59599516SKenneth E. Jansenc$$$     &              + A0(:,3,2)*g1yi(:,2)
71*59599516SKenneth E. Jansenc$$$     &              + A0(:,3,3)*g1yi(:,3)
72*59599516SKenneth E. Jansenc$$$     &              + A0(:,3,4)*g1yi(:,4)
73*59599516SKenneth E. Jansenc$$$     &              + A0(:,3,5)*g1yi(:,5)
74*59599516SKenneth E. Jansenc$$$        A0gyi( :,4) = A0(:,4,1)*g1yi(:,1)
75*59599516SKenneth E. Jansenc$$$     &              + A0(:,4,2)*g1yi(:,2)
76*59599516SKenneth E. Jansenc$$$     &              + A0(:,4,3)*g1yi(:,3)
77*59599516SKenneth E. Jansenc$$$     &              + A0(:,4,4)*g1yi(:,4)
78*59599516SKenneth E. Jansenc$$$     &              + A0(:,4,5)*g1yi(:,5)
79*59599516SKenneth E. Jansenc$$$        A0gyi( :,5) = A0(:,5,1)*g1yi(:,1)
80*59599516SKenneth E. Jansenc$$$     &              + A0(:,5,2)*g1yi(:,2)
81*59599516SKenneth E. Jansenc$$$     &              + A0(:,5,3)*g1yi(:,3)
82*59599516SKenneth E. Jansenc$$$     &              + A0(:,5,4)*g1yi(:,4)
83*59599516SKenneth E. Jansenc$$$     &              + A0(:,5,5)*g1yi(:,5)
84*59599516SKenneth E. Jansenc$$$c
85*59599516SKenneth E. Jansenc$$$c  A0 Y_{,2}
86*59599516SKenneth E. Jansenc$$$c
87*59599516SKenneth E. Jansenc$$$        A0gyi( :,6) = A0(:,1,1)*g2yi(:,1)
88*59599516SKenneth E. Jansenc$$$     &              + A0(:,1,2)*g2yi(:,2)
89*59599516SKenneth E. Jansenc$$$     &              + A0(:,1,3)*g2yi(:,3)
90*59599516SKenneth E. Jansenc$$$     &              + A0(:,1,4)*g2yi(:,4)
91*59599516SKenneth E. Jansenc$$$     &              + A0(:,1,5)*g2yi(:,5)
92*59599516SKenneth E. Jansenc$$$        A0gyi( :,7) = A0(:,2,1)*g2yi(:,1)
93*59599516SKenneth E. Jansenc$$$     &              + A0(:,2,2)*g2yi(:,2)
94*59599516SKenneth E. Jansenc$$$     &              + A0(:,2,3)*g2yi(:,3)
95*59599516SKenneth E. Jansenc$$$     &              + A0(:,2,4)*g2yi(:,4)
96*59599516SKenneth E. Jansenc$$$     &              + A0(:,2,5)*g2yi(:,5)
97*59599516SKenneth E. Jansenc$$$        A0gyi( :,8) = A0(:,3,1)*g2yi(:,1)
98*59599516SKenneth E. Jansenc$$$     &              + A0(:,3,2)*g2yi(:,2)
99*59599516SKenneth E. Jansenc$$$     &              + A0(:,3,3)*g2yi(:,3)
100*59599516SKenneth E. Jansenc$$$     &              + A0(:,3,4)*g2yi(:,4)
101*59599516SKenneth E. Jansenc$$$     &              + A0(:,3,5)*g2yi(:,5)
102*59599516SKenneth E. Jansenc$$$        A0gyi( :,9) = A0(:,4,1)*g2yi(:,1)
103*59599516SKenneth E. Jansenc$$$     &              + A0(:,4,2)*g2yi(:,2)
104*59599516SKenneth E. Jansenc$$$     &              + A0(:,4,3)*g2yi(:,3)
105*59599516SKenneth E. Jansenc$$$     &              + A0(:,4,4)*g2yi(:,4)
106*59599516SKenneth E. Jansenc$$$     &              + A0(:,4,5)*g2yi(:,5)
107*59599516SKenneth E. Jansenc$$$        A0gyi(:,10) = A0(:,5,1)*g2yi(:,1)
108*59599516SKenneth E. Jansenc$$$     &              + A0(:,5,2)*g2yi(:,2)
109*59599516SKenneth E. Jansenc$$$     &              + A0(:,5,3)*g2yi(:,3)
110*59599516SKenneth E. Jansenc$$$     &              + A0(:,5,4)*g2yi(:,4)
111*59599516SKenneth E. Jansenc$$$     &              + A0(:,5,5)*g2yi(:,5)
112*59599516SKenneth E. Jansenc$$$c
113*59599516SKenneth E. Jansenc$$$c  A0 Y_{,3}
114*59599516SKenneth E. Jansenc$$$c
115*59599516SKenneth E. Jansenc$$$        A0gyi(:,11) = A0(:,1,1)*g3yi(:,1)
116*59599516SKenneth E. Jansenc$$$     &              + A0(:,1,2)*g3yi(:,2)
117*59599516SKenneth E. Jansenc$$$     &              + A0(:,1,3)*g3yi(:,3)
118*59599516SKenneth E. Jansenc$$$     &              + A0(:,1,4)*g3yi(:,4)
119*59599516SKenneth E. Jansenc$$$     &              + A0(:,1,5)*g3yi(:,5)
120*59599516SKenneth E. Jansenc$$$        A0gyi(:,12) = A0(:,2,1)*g3yi(:,1)
121*59599516SKenneth E. Jansenc$$$     &              + A0(:,2,2)*g3yi(:,2)
122*59599516SKenneth E. Jansenc$$$     &              + A0(:,2,3)*g3yi(:,3)
123*59599516SKenneth E. Jansenc$$$     &              + A0(:,2,4)*g3yi(:,4)
124*59599516SKenneth E. Jansenc$$$     &              + A0(:,2,5)*g3yi(:,5)
125*59599516SKenneth E. Jansenc$$$        A0gyi(:,13) = A0(:,3,1)*g3yi(:,1)
126*59599516SKenneth E. Jansenc$$$     &              + A0(:,3,2)*g3yi(:,2)
127*59599516SKenneth E. Jansenc$$$     &              + A0(:,3,3)*g3yi(:,3)
128*59599516SKenneth E. Jansenc$$$     &              + A0(:,3,4)*g3yi(:,4)
129*59599516SKenneth E. Jansenc$$$     &              + A0(:,3,5)*g3yi(:,5)
130*59599516SKenneth E. Jansenc$$$        A0gyi(:,14) = A0(:,4,1)*g3yi(:,1)
131*59599516SKenneth E. Jansenc$$$     &              + A0(:,4,2)*g3yi(:,2)
132*59599516SKenneth E. Jansenc$$$     &              + A0(:,4,3)*g3yi(:,3)
133*59599516SKenneth E. Jansenc$$$     &              + A0(:,4,4)*g3yi(:,4)
134*59599516SKenneth E. Jansenc$$$     &              + A0(:,4,5)*g3yi(:,5)
135*59599516SKenneth E. Jansenc$$$        A0gyi(:,15) = A0(:,5,1)*g3yi(:,1)
136*59599516SKenneth E. Jansenc$$$     &              + A0(:,5,2)*g3yi(:,2)
137*59599516SKenneth E. Jansenc$$$     &              + A0(:,5,3)*g3yi(:,3)
138*59599516SKenneth E. Jansenc$$$     &              + A0(:,5,4)*g3yi(:,4)
139*59599516SKenneth E. Jansenc$$$     &              + A0(:,5,5)*g3yi(:,5)
140*59599516SKenneth E. Jansenc$$$c
141*59599516SKenneth E. Jansenc$$$c.... calculate (giju A0 y_,j) --> gAgyi
142*59599516SKenneth E. Jansenc$$$c
143*59599516SKenneth E. Jansenc$$$
144*59599516SKenneth E. Jansenc$$$        gAgyi( :,1) = giju(:,1)*A0gyi( :,1)
145*59599516SKenneth E. Jansenc$$$     &              + giju(:,4)*A0gyi( :,6)
146*59599516SKenneth E. Jansenc$$$     &              + giju(:,5)*A0gyi(:,11)
147*59599516SKenneth E. Jansenc$$$
148*59599516SKenneth E. Jansenc$$$        gAgyi( :,2) = giju(:,1)*A0gyi( :,2)
149*59599516SKenneth E. Jansenc$$$     &              + giju(:,4)*A0gyi( :,7)
150*59599516SKenneth E. Jansenc$$$     &              + giju(:,5)*A0gyi(:,12)
151*59599516SKenneth E. Jansenc$$$
152*59599516SKenneth E. Jansenc$$$	gAgyi( :,3) = giju(:,1)*A0gyi( :,3)
153*59599516SKenneth E. Jansenc$$$     &              + giju(:,4)*A0gyi( :,8)
154*59599516SKenneth E. Jansenc$$$     &              + giju(:,5)*A0gyi(:,13)
155*59599516SKenneth E. Jansenc$$$
156*59599516SKenneth E. Jansenc$$$	gAgyi( :,4) = giju(:,1)*A0gyi( :,4)
157*59599516SKenneth E. Jansenc$$$     &              + giju(:,4)*A0gyi( :,9)
158*59599516SKenneth E. Jansenc$$$     &              + giju(:,5)*A0gyi(:,14)
159*59599516SKenneth E. Jansenc$$$
160*59599516SKenneth E. Jansenc$$$	gAgyi( :,5) = giju(:,1)*A0gyi( :,5)
161*59599516SKenneth E. Jansenc$$$     &              + giju(:,4)*A0gyi(:,10)
162*59599516SKenneth E. Jansenc$$$     &              + giju(:,5)*A0gyi(:,15)
163*59599516SKenneth E. Jansenc$$$
164*59599516SKenneth E. Jansenc$$$	gAgyi( :,6) = giju(:,4)*A0gyi( :,1)
165*59599516SKenneth E. Jansenc$$$     &              + giju(:,2)*A0gyi( :,6)
166*59599516SKenneth E. Jansenc$$$     &              + giju(:,6)*A0gyi(:,11)
167*59599516SKenneth E. Jansenc$$$
168*59599516SKenneth E. Jansenc$$$	gAgyi( :,7) = giju(:,4)*A0gyi( :,2)
169*59599516SKenneth E. Jansenc$$$     &              + giju(:,2)*A0gyi( :,7)
170*59599516SKenneth E. Jansenc$$$     &              + giju(:,6)*A0gyi(:,12)
171*59599516SKenneth E. Jansenc$$$
172*59599516SKenneth E. Jansenc$$$	gAgyi( :,8) = giju(:,4)*A0gyi( :,3)
173*59599516SKenneth E. Jansenc$$$     &              + giju(:,2)*A0gyi( :,8)
174*59599516SKenneth E. Jansenc$$$     &              + giju(:,6)*A0gyi(:,13)
175*59599516SKenneth E. Jansenc$$$
176*59599516SKenneth E. Jansenc$$$	gAgyi( :,9) = giju(:,4)*A0gyi( :,4)
177*59599516SKenneth E. Jansenc$$$     &              + giju(:,2)*A0gyi( :,9)
178*59599516SKenneth E. Jansenc$$$     &              + giju(:,6)*A0gyi(:,14)
179*59599516SKenneth E. Jansenc$$$
180*59599516SKenneth E. Jansenc$$$	gAgyi(:,10) = giju(:,4)*A0gyi( :,5)
181*59599516SKenneth E. Jansenc$$$     &              + giju(:,2)*A0gyi(:,10)
182*59599516SKenneth E. Jansenc$$$     &              + giju(:,6)*A0gyi(:,15)
183*59599516SKenneth E. Jansenc$$$
184*59599516SKenneth E. Jansenc$$$	gAgyi(:,11) = giju(:,5)*A0gyi( :,1)
185*59599516SKenneth E. Jansenc$$$     &              + giju(:,6)*A0gyi( :,6)
186*59599516SKenneth E. Jansenc$$$     &              + giju(:,3)*A0gyi(:,11)
187*59599516SKenneth E. Jansenc$$$
188*59599516SKenneth E. Jansenc$$$	gAgyi(:,12) = giju(:,5)*A0gyi( :,2)
189*59599516SKenneth E. Jansenc$$$     &              + giju(:,6)*A0gyi( :,7)
190*59599516SKenneth E. Jansenc$$$     &              + giju(:,3)*A0gyi(:,12)
191*59599516SKenneth E. Jansenc$$$
192*59599516SKenneth E. Jansenc$$$	gAgyi(:,13) = giju(:,5)*A0gyi( :,3)
193*59599516SKenneth E. Jansenc$$$     &              + giju(:,6)*A0gyi( :,8)
194*59599516SKenneth E. Jansenc$$$     &              + giju(:,3)*A0gyi(:,13)
195*59599516SKenneth E. Jansenc$$$
196*59599516SKenneth E. Jansenc$$$	gAgyi(:,14) = giju(:,5)*A0gyi( :,4)
197*59599516SKenneth E. Jansenc$$$     &              + giju(:,6)*A0gyi( :,9)
198*59599516SKenneth E. Jansenc$$$     &              + giju(:,3)*A0gyi(:,14)
199*59599516SKenneth E. Jansenc$$$
200*59599516SKenneth E. Jansenc$$$	gAgyi(:,15) = giju(:,5)*A0gyi( :,5)
201*59599516SKenneth E. Jansenc$$$     &              + giju(:,6)*A0gyi(:,10)
202*59599516SKenneth E. Jansenc$$$     &              + giju(:,3)*A0gyi(:,15)
203*59599516SKenneth E. Jansenc$$$c
204*59599516SKenneth E. Jansenc$$$c... the denominator term of the DC factor
205*59599516SKenneth E. Jansenc$$$c... evaluation of the term  Y,i.A0DC Y,j
206*59599516SKenneth E. Jansenc$$$c
207*59599516SKenneth E. Jansenc$$$        yiA0DCyj(:,1) = A0DC(:,1)*g1yi(:,1)**2
208*59599516SKenneth E. Jansenc$$$     &                + two*g1yi(:,1)*A0DC(:,2)*g1yi(:,5)
209*59599516SKenneth E. Jansenc$$$     &                + A0DC(:,3)*g1yi(:,2)**2
210*59599516SKenneth E. Jansenc$$$     &                + A0DC(:,3)*g1yi(:,3)**2
211*59599516SKenneth E. Jansenc$$$     &                + A0DC(:,3)*g1yi(:,4)**2
212*59599516SKenneth E. Jansenc$$$     &                + A0DC(:,4)*g1yi(:,5)**2
213*59599516SKenneth E. Jansenc$$$
214*59599516SKenneth E. Jansenc$$$        yiA0DCyj(:,2) = A0DC(:,1)*g2yi(:,1)**2
215*59599516SKenneth E. Jansenc$$$     &                + two*g2yi(:,1)*A0DC(:,2)*g2yi(:,5)
216*59599516SKenneth E. Jansenc$$$     &                + A0DC(:,3)*g2yi(:,2)**2
217*59599516SKenneth E. Jansenc$$$     &                + A0DC(:,3)*g2yi(:,3)**2
218*59599516SKenneth E. Jansenc$$$     &                + A0DC(:,3)*g2yi(:,4)**2
219*59599516SKenneth E. Jansenc$$$     &                + A0DC(:,4)*g2yi(:,5)**2
220*59599516SKenneth E. Jansenc$$$
221*59599516SKenneth E. Jansenc$$$        yiA0DCyj(:,3) = A0DC(:,1)*g3yi(:,1)**2
222*59599516SKenneth E. Jansenc$$$     &                + two*g3yi(:,1)*A0DC(:,2)*g3yi(:,5)
223*59599516SKenneth E. Jansenc$$$     &                + A0DC(:,3)*g3yi(:,2)**2
224*59599516SKenneth E. Jansenc$$$     &                + A0DC(:,3)*g3yi(:,3)**2
225*59599516SKenneth E. Jansenc$$$     &                + A0DC(:,3)*g3yi(:,4)**2
226*59599516SKenneth E. Jansenc$$$     &                + A0DC(:,4)*g3yi(:,5)**2
227*59599516SKenneth E. Jansenc$$$
228*59599516SKenneth E. Jansenc$$$        yiA0DCyj(:,4) = g1yi(:,1)*A0DC(:,1)*g2yi(:,1)
229*59599516SKenneth E. Jansenc$$$     &                + g1yi(:,1)*A0DC(:,2)*g2yi(:,5)
230*59599516SKenneth E. Jansenc$$$     &                + g1yi(:,2)*A0DC(:,3)*g2yi(:,2)
231*59599516SKenneth E. Jansenc$$$     &                + g1yi(:,3)*A0DC(:,3)*g2yi(:,3)
232*59599516SKenneth E. Jansenc$$$     &                + g1yi(:,4)*A0DC(:,3)*g2yi(:,4)
233*59599516SKenneth E. Jansenc$$$     &                + g1yi(:,5)*A0DC(:,2)*g2yi(:,1)
234*59599516SKenneth E. Jansenc$$$     &                + g1yi(:,5)*A0DC(:,4)*g2yi(:,5)
235*59599516SKenneth E. Jansenc$$$
236*59599516SKenneth E. Jansenc$$$        yiA0DCyj(:,5) = g1yi(:,1)*A0DC(:,1)*g3yi(:,1)
237*59599516SKenneth E. Jansenc$$$     &                + g1yi(:,1)*A0DC(:,2)*g3yi(:,5)
238*59599516SKenneth E. Jansenc$$$     &                + g1yi(:,2)*A0DC(:,3)*g3yi(:,2)
239*59599516SKenneth E. Jansenc$$$     &                + g1yi(:,3)*A0DC(:,3)*g3yi(:,3)
240*59599516SKenneth E. Jansenc$$$     &                + g1yi(:,4)*A0DC(:,3)*g3yi(:,4)
241*59599516SKenneth E. Jansenc$$$     &                + g1yi(:,5)*A0DC(:,2)*g3yi(:,1)
242*59599516SKenneth E. Jansenc$$$     &                + g1yi(:,5)*A0DC(:,4)*g3yi(:,5)
243*59599516SKenneth E. Jansenc$$$
244*59599516SKenneth E. Jansenc$$$        yiA0DCyj(:,6) = g2yi(:,1)*A0DC(:,1)*g3yi(:,1)
245*59599516SKenneth E. Jansenc$$$     &                + g2yi(:,1)*A0DC(:,2)*g3yi(:,5)
246*59599516SKenneth E. Jansenc$$$     &                + g2yi(:,2)*A0DC(:,3)*g3yi(:,2)
247*59599516SKenneth E. Jansenc$$$     &                + g2yi(:,3)*A0DC(:,3)*g3yi(:,3)
248*59599516SKenneth E. Jansenc$$$     &                + g2yi(:,4)*A0DC(:,3)*g3yi(:,4)
249*59599516SKenneth E. Jansenc$$$     &                + g2yi(:,5)*A0DC(:,2)*g3yi(:,1)
250*59599516SKenneth E. Jansenc$$$     &                + g2yi(:,5)*A0DC(:,4)*g3yi(:,5)
251*59599516SKenneth E. Jansenc$$$c
252*59599516SKenneth E. Jansenc$$$c.... ------------------------->  DC factor  <--------------------------
253*59599516SKenneth E. Jansenc$$$c
254*59599516SKenneth E. Jansenc$$$	if ((ires .ne. 2) .or. (Jactyp .eq. 1)) then
255*59599516SKenneth E. Jansenc$$$c
256*59599516SKenneth E. Jansenc$$$c.... calculate 2-norm of Grad-local-V with respect to A0
257*59599516SKenneth E. Jansenc$$$c
258*59599516SKenneth E. Jansenc$$$c.... DC-mallet
259*59599516SKenneth E. Jansenc$$$c
260*59599516SKenneth E. Jansenc$$$	  if (iDC .eq. 1) then
261*59599516SKenneth E. Jansenc$$$c
262*59599516SKenneth E. Jansenc$$$	    fact = one
263*59599516SKenneth E. Jansenc$$$	    if (ipord .eq. 2)  fact = 0.9
264*59599516SKenneth E. Jansenc$$$	    if (ipord .eq. 3) fact = 0.75
265*59599516SKenneth E. Jansenc$$$
266*59599516SKenneth E. Jansenc$$$c
267*59599516SKenneth E. Jansenc$$$            gnorm = one / (
268*59599516SKenneth E. Jansenc$$$     &              giju(:,1)*yiA0DCyj(:,1)
269*59599516SKenneth E. Jansenc$$$     &            + two*giju(:,4)*yiA0DCyj(:,4)
270*59599516SKenneth E. Jansenc$$$     &            + two*giju(:,5)*yiA0DCyj(:,5)
271*59599516SKenneth E. Jansenc$$$     &            + giju(:,2)*yiA0DCyj(:,2)
272*59599516SKenneth E. Jansenc$$$     &            + two*giju(:,6)*yiA0DCyj(:,6)
273*59599516SKenneth E. Jansenc$$$     &            + giju(:,3)*yiA0DCyj(:,3)
274*59599516SKenneth E. Jansenc$$$     &            + epsM  )
275*59599516SKenneth E. Jansenc$$$c
276*59599516SKenneth E. Jansenc$$$	    DC(:,intp)=dim((fact*sqrt(raLS*gnorm)),(rtLS*gnorm))
277*59599516SKenneth E. Jansenc$$$c
278*59599516SKenneth E. Jansenc$$$c.... flop count
279*59599516SKenneth E. Jansenc$$$c
280*59599516SKenneth E. Jansenc$$$	    flops = flops + 46*npro
281*59599516SKenneth E. Jansenc$$$c
282*59599516SKenneth E. Jansenc$$$	  endif
283*59599516SKenneth E. Jansenc$$$c
284*59599516SKenneth E. Jansenc$$$c.... DC-quadratic
285*59599516SKenneth E. Jansenc$$$c
286*59599516SKenneth E. Jansenc$$$	  if (iDC .eq. 2) then
287*59599516SKenneth E. Jansenc$$$c
288*59599516SKenneth E. Jansenc$$$            gnorm = one / (
289*59599516SKenneth E. Jansenc$$$     &              giju(:,1)*yiA0DCyj(:,1)
290*59599516SKenneth E. Jansenc$$$     &            + two*giju(:,4)*yiA0DCyj(:,4)
291*59599516SKenneth E. Jansenc$$$     &            + two*giju(:,5)*yiA0DCyj(:,5)
292*59599516SKenneth E. Jansenc$$$     &            + giju(:,2)*yiA0DCyj(:,2)
293*59599516SKenneth E. Jansenc$$$     &            + two*giju(:,6)*yiA0DCyj(:,6)
294*59599516SKenneth E. Jansenc$$$     &            + giju(:,3)*yiA0DCyj(:,3)
295*59599516SKenneth E. Jansenc$$$     &            + epsM  )
296*59599516SKenneth E. Jansenc$$$
297*59599516SKenneth E. Jansenc$$$c
298*59599516SKenneth E. Jansenc$$$	    DC(:,intp) = two * rtLS * gnorm
299*59599516SKenneth E. Jansenc$$$c
300*59599516SKenneth E. Jansenc$$$c.... flop count
301*59599516SKenneth E. Jansenc$$$c
302*59599516SKenneth E. Jansenc$$$	    flops = flops + 36*npro
303*59599516SKenneth E. Jansenc$$$c
304*59599516SKenneth E. Jansenc$$$	  endif
305*59599516SKenneth E. Jansenc$$$c
306*59599516SKenneth E. Jansenc$$$c.... DC-min
307*59599516SKenneth E. Jansenc$$$c
308*59599516SKenneth E. Jansenc$$$	  if (iDC .eq. 3) then
309*59599516SKenneth E. Jansenc$$$c
310*59599516SKenneth E. Jansenc$$$	    fact = one
311*59599516SKenneth E. Jansenc$$$	    if (ipord .eq. 2)  fact = pt5
312*59599516SKenneth E. Jansenc$$$c
313*59599516SKenneth E. Jansenc$$$            gnorm = one / (
314*59599516SKenneth E. Jansenc$$$     &              giju(:,1)*yiA0DCyj(:,1)
315*59599516SKenneth E. Jansenc$$$     &            + two*giju(:,4)*yiA0DCyj(:,4)
316*59599516SKenneth E. Jansenc$$$     &            + two*giju(:,5)*yiA0DCyj(:,5)
317*59599516SKenneth E. Jansenc$$$     &            + giju(:,2)*yiA0DCyj(:,2)
318*59599516SKenneth E. Jansenc$$$     &            + two*giju(:,6)*yiA0DCyj(:,6)
319*59599516SKenneth E. Jansenc$$$     &            + giju(:,3)*yiA0DCyj(:,3)
320*59599516SKenneth E. Jansenc$$$     &            + epsM  )
321*59599516SKenneth E. Jansenc$$$
322*59599516SKenneth E. Jansenc$$$c
323*59599516SKenneth E. Jansenc$$$	    DC(:,intp) = min( dim(fact * sqrt(raLS * gnorm),
324*59599516SKenneth E. Jansenc$$$     &                       rtLS * gnorm), two * rtLS * gnorm )
325*59599516SKenneth E. Jansenc$$$c
326*59599516SKenneth E. Jansenc$$$c.... flop count
327*59599516SKenneth E. Jansenc$$$c
328*59599516SKenneth E. Jansenc$$$	    flops = flops + 48*npro
329*59599516SKenneth E. Jansenc$$$c
330*59599516SKenneth E. Jansenc$$$	  endif
331*59599516SKenneth E. Jansenc$$$c
332*59599516SKenneth E. Jansenc$$$	endif
333*59599516SKenneth E. Jansenc$$$c
334*59599516SKenneth E. Jansenc$$$c.... ---------------------------->  RHS  <----------------------------
335*59599516SKenneth E. Jansenc$$$c
336*59599516SKenneth E. Jansenc$$$c.... add the contribution of DC to ri and/or rmi
337*59599516SKenneth E. Jansenc$$$c
338*59599516SKenneth E. Jansenc$$$c.... ires = 1 or 3
339*59599516SKenneth E. Jansenc$$$c
340*59599516SKenneth E. Jansenc$$$	if ((ires .eq. 1) .or. (ires .eq. 3)) then
341*59599516SKenneth E. Jansenc$$$c
342*59599516SKenneth E. Jansenc$$$	  ri ( :,1) = ri ( :,1) + DC(:,intp) * gAgyi( :,1)
343*59599516SKenneth E. Jansenc$$$	  rmi( :,1) = rmi( :,1) + DC(:,intp) * gAgyi( :,1)
344*59599516SKenneth E. Jansenc$$$	  ri ( :,2) = ri ( :,2) + DC(:,intp) * gAgyi( :,2)
345*59599516SKenneth E. Jansenc$$$	  rmi( :,2) = rmi( :,2) + DC(:,intp) * gAgyi( :,2)
346*59599516SKenneth E. Jansenc$$$	  ri ( :,3) = ri ( :,3) + DC(:,intp) * gAgyi( :,3)
347*59599516SKenneth E. Jansenc$$$	  rmi( :,3) = rmi( :,3) + DC(:,intp) * gAgyi( :,3)
348*59599516SKenneth E. Jansenc$$$	  ri ( :,4) = ri ( :,4) + DC(:,intp) * gAgyi( :,4)
349*59599516SKenneth E. Jansenc$$$	  rmi( :,4) = rmi( :,4) + DC(:,intp) * gAgyi( :,4)
350*59599516SKenneth E. Jansenc$$$	  ri ( :,5) = ri ( :,5) + DC(:,intp) * gAgyi( :,5)
351*59599516SKenneth E. Jansenc$$$	  rmi( :,5) = rmi( :,5) + DC(:,intp) * gAgyi( :,5)
352*59599516SKenneth E. Jansenc$$$c
353*59599516SKenneth E. Jansenc$$$	  ri ( :,6) = ri ( :,6) + DC(:,intp) * gAgyi( :,6)
354*59599516SKenneth E. Jansenc$$$	  rmi( :,6) = rmi( :,6) + DC(:,intp) * gAgyi( :,6)
355*59599516SKenneth E. Jansenc$$$	  ri ( :,7) = ri ( :,7) + DC(:,intp) * gAgyi( :,7)
356*59599516SKenneth E. Jansenc$$$	  rmi( :,7) = rmi( :,7) + DC(:,intp) * gAgyi( :,7)
357*59599516SKenneth E. Jansenc$$$	  ri ( :,8) = ri ( :,8) + DC(:,intp) * gAgyi( :,8)
358*59599516SKenneth E. Jansenc$$$	  rmi( :,8) = rmi( :,8) + DC(:,intp) * gAgyi( :,8)
359*59599516SKenneth E. Jansenc$$$	  ri ( :,9) = ri ( :,9) + DC(:,intp) * gAgyi( :,9)
360*59599516SKenneth E. Jansenc$$$	  rmi( :,9) = rmi( :,9) + DC(:,intp) * gAgyi( :,9)
361*59599516SKenneth E. Jansenc$$$	  ri (:,10) = ri (:,10) + DC(:,intp) * gAgyi(:,10)
362*59599516SKenneth E. Jansenc$$$	  rmi(:,10) = rmi(:,10) + DC(:,intp) * gAgyi(:,10)
363*59599516SKenneth E. Jansenc$$$c
364*59599516SKenneth E. Jansenc$$$	  ri (:,11) = ri (:,11) + DC(:,intp) * gAgyi(:,11)
365*59599516SKenneth E. Jansenc$$$	  rmi(:,11) = rmi(:,12) + DC(:,intp) * gAgyi(:,12)
366*59599516SKenneth E. Jansenc$$$	  ri (:,12) = ri (:,12) + DC(:,intp) * gAgyi(:,12)
367*59599516SKenneth E. Jansenc$$$	  rmi(:,12) = rmi(:,12) + DC(:,intp) * gAgyi(:,12)
368*59599516SKenneth E. Jansenc$$$	  ri (:,13) = ri (:,13) + DC(:,intp) * gAgyi(:,13)
369*59599516SKenneth E. Jansenc$$$	  rmi(:,13) = rmi(:,13) + DC(:,intp) * gAgyi(:,13)
370*59599516SKenneth E. Jansenc$$$	  ri (:,14) = ri (:,14) + DC(:,intp) * gAgyi(:,14)
371*59599516SKenneth E. Jansenc$$$	  rmi(:,14) = rmi(:,14) + DC(:,intp) * gAgyi(:,14)
372*59599516SKenneth E. Jansenc$$$	  ri (:,15) = ri (:,15) + DC(:,intp) * gAgyi(:,15)
373*59599516SKenneth E. Jansenc$$$	  rmi(:,15) = rmi(:,15) + DC(:,intp) * gAgyi(:,15)
374*59599516SKenneth E. Jansenc$$$c
375*59599516SKenneth E. Jansenc$$$	  flops = flops + 45*npro
376*59599516SKenneth E. Jansenc$$$c
377*59599516SKenneth E. Jansenc$$$	endif
378*59599516SKenneth E. Jansenc$$$c
379*59599516SKenneth E. Jansenc$$$c.... ires = 2
380*59599516SKenneth E. Jansenc$$$c
381*59599516SKenneth E. Jansenc$$$	if (ires .eq. 2) then
382*59599516SKenneth E. Jansenc$$$c
383*59599516SKenneth E. Jansenc$$$	  rmi( :,1) = rmi( :,1) + DC(:,intp) * gAgyi( :,1)
384*59599516SKenneth E. Jansenc$$$	  rmi( :,2) = rmi( :,2) + DC(:,intp) * gAgyi( :,2)
385*59599516SKenneth E. Jansenc$$$	  rmi( :,3) = rmi( :,3) + DC(:,intp) * gAgyi( :,3)
386*59599516SKenneth E. Jansenc$$$	  rmi( :,4) = rmi( :,4) + DC(:,intp) * gAgyi( :,4)
387*59599516SKenneth E. Jansenc$$$	  rmi( :,5) = rmi( :,5) + DC(:,intp) * gAgyi( :,5)
388*59599516SKenneth E. Jansenc$$$c
389*59599516SKenneth E. Jansenc$$$	  rmi( :,6) = rmi( :,6) + DC(:,intp) * gAgyi( :,6)
390*59599516SKenneth E. Jansenc$$$	  rmi( :,7) = rmi( :,7) + DC(:,intp) * gAgyi( :,7)
391*59599516SKenneth E. Jansenc$$$	  rmi( :,8) = rmi( :,8) + DC(:,intp) * gAgyi( :,8)
392*59599516SKenneth E. Jansenc$$$	  rmi( :,9) = rmi( :,9) + DC(:,intp) * gAgyi( :,9)
393*59599516SKenneth E. Jansenc$$$	  rmi(:,10) = rmi(:,10) + DC(:,intp) * gAgyi(:,10)
394*59599516SKenneth E. Jansenc$$$c
395*59599516SKenneth E. Jansenc$$$	  rmi(:,11) = rmi(:,11) + DC(:,intp) * gAgyi(:,11)
396*59599516SKenneth E. Jansenc$$$	  rmi(:,12) = rmi(:,12) + DC(:,intp) * gAgyi(:,12)
397*59599516SKenneth E. Jansenc$$$	  rmi(:,13) = rmi(:,13) + DC(:,intp) * gAgyi(:,13)
398*59599516SKenneth E. Jansenc$$$	  rmi(:,14) = rmi(:,14) + DC(:,intp) * gAgyi(:,14)
399*59599516SKenneth E. Jansenc$$$	  rmi(:,15) = rmi(:,15) + DC(:,intp) * gAgyi(:,15)
400*59599516SKenneth E. Jansenc$$$c
401*59599516SKenneth E. Jansenc$$$	  flops = flops + 30*npro
402*59599516SKenneth E. Jansenc$$$c
403*59599516SKenneth E. Jansenc$$$	endif
404*59599516SKenneth E. Jansenc$$$c
405*59599516SKenneth E. Jansenc$$$c.... ------------------------->  Stiffness  <--------------------------
406*59599516SKenneth E. Jansenc$$$c
407*59599516SKenneth E. Jansenc$$$c.... add the contribution of DC to stiff
408*59599516SKenneth E. Jansenc$$$c
409*59599516SKenneth E. Jansenc$$$	if (iprec .eq. 1) then
410*59599516SKenneth E. Jansenc$$$	     nflow2=two*nflow
411*59599516SKenneth E. Jansenc$$$       do j = 1, nflow
412*59599516SKenneth E. Jansenc$$$          do i = 1, nflow
413*59599516SKenneth E. Jansenc$$$             itmp(:)=A0(:,i,j)*DC(:,intp)
414*59599516SKenneth E. Jansenc$$$c
415*59599516SKenneth E. Jansenc$$$c.... add (DC g^1 A0) to stiff [1,1]
416*59599516SKenneth E. Jansenc$$$c
417*59599516SKenneth E. Jansenc$$$             stiff(:,i,j) = stiff(:,i,j)
418*59599516SKenneth E. Jansenc$$$     &                    + itmp(:)*giju(:,1)
419*59599516SKenneth E. Jansenc$$$c
420*59599516SKenneth E. Jansenc$$$c.... add (DC g^1 A0) to stiff [1,2]
421*59599516SKenneth E. Jansenc$$$c
422*59599516SKenneth E. Jansenc$$$
423*59599516SKenneth E. Jansenc$$$             stiff(:,i,j+nflow) = stiff(:,i,j+nflow)
424*59599516SKenneth E. Jansenc$$$     &                    + itmp(:)*giju(:,4)
425*59599516SKenneth E. Jansenc$$$c
426*59599516SKenneth E. Jansenc$$$c.... add (DC g^1 A0) to stiff [1,3]
427*59599516SKenneth E. Jansenc$$$c
428*59599516SKenneth E. Jansenc$$$
429*59599516SKenneth E. Jansenc$$$             stiff(:,i,j+nflow2) = stiff(:,i,j+nflow2)
430*59599516SKenneth E. Jansenc$$$     &                    + itmp(:)*giju(:,5)
431*59599516SKenneth E. Jansenc$$$
432*59599516SKenneth E. Jansenc$$$c.... add (DC g^1 A0) to stiff [2,1] (similarly below)
433*59599516SKenneth E. Jansenc$$$c
434*59599516SKenneth E. Jansenc$$$
435*59599516SKenneth E. Jansenc$$$             stiff(:,i+nflow,j) = stiff(:,i+nflow,j)
436*59599516SKenneth E. Jansenc$$$     &                    + itmp(:)*giju(:,4)
437*59599516SKenneth E. Jansenc$$$
438*59599516SKenneth E. Jansenc$$$             stiff(:,i+nflow,j+nflow) = stiff(:,i+nflow,j+nflow)
439*59599516SKenneth E. Jansenc$$$     &                    + itmp(:)*giju(:,2)
440*59599516SKenneth E. Jansenc$$$
441*59599516SKenneth E. Jansenc$$$             stiff(:,i+nflow,j+nflow2) = stiff(:,i+nflow,j+nflow2)
442*59599516SKenneth E. Jansenc$$$     &                    + itmp(:)*giju(:,6)
443*59599516SKenneth E. Jansenc$$$
444*59599516SKenneth E. Jansenc$$$             stiff(:,i+nflow2,j) = stiff(:,i+nflow2,j)
445*59599516SKenneth E. Jansenc$$$     &                    + itmp(:)*giju(:,5)
446*59599516SKenneth E. Jansenc$$$
447*59599516SKenneth E. Jansenc$$$             stiff(:,i+nflow2,j+nflow) = stiff(:,i+nflow2,j+nflow)
448*59599516SKenneth E. Jansenc$$$     &                    + itmp(:)*giju(:,6)
449*59599516SKenneth E. Jansenc$$$
450*59599516SKenneth E. Jansenc$$$             stiff(:,i+nflow2,j+nflow2) = stiff(:,i+nflow2,j+nflow2)
451*59599516SKenneth E. Jansenc$$$     &                    + itmp(:)*giju(:,3)
452*59599516SKenneth E. Jansenc$$$          enddo
453*59599516SKenneth E. Jansenc$$$       enddo
454*59599516SKenneth E. Jansenc$$$c
455*59599516SKenneth E. Jansenc$$$c.... flop count
456*59599516SKenneth E. Jansenc$$$c
457*59599516SKenneth E. Jansenc$$$	  flops = flops + 210*npro
458*59599516SKenneth E. Jansenc$$$c
459*59599516SKenneth E. Jansenc$$$c.... end of stiffness
460*59599516SKenneth E. Jansenc$$$c
461*59599516SKenneth E. Jansenc$$$	endif
462*59599516SKenneth E. Jansenc$$$c
463*59599516SKenneth E. Jansenc$$$c.... return
464*59599516SKenneth E. Jansenc$$$c
465*59599516SKenneth E. Jansenc$$$	return
466*59599516SKenneth E. Jansenc$$$	end
467*59599516SKenneth E. Jansenc$$$c
468*59599516SKenneth E. Jansenc
469*59599516SKenneth E. Jansen        subroutine e3dcSclr ( gradS,    giju,     gGradS,
470*59599516SKenneth E. Jansen     &                        rLS,      tauS,     srcR,
471*59599516SKenneth E. Jansen     &                        dcFct)
472*59599516SKenneth E. Jansenc
473*59599516SKenneth E. Jansenc
474*59599516SKenneth E. Jansenc----------------------------------------------------------------------
475*59599516SKenneth E. Jansenc
476*59599516SKenneth E. Jansenc This routine calculates the contribution of the Discontinuity-
477*59599516SKenneth E. Jansenc Capturing operator to RHS and preconditioner for the scalar solve.
478*59599516SKenneth E. Jansenc
479*59599516SKenneth E. Jansenc  g1yti   (nflow,npro)           : grad-y in direction 1
480*59599516SKenneth E. Jansenc  g2yti   (nflow,npro)           : grad-y in direction 2
481*59599516SKenneth E. Jansenc  g3yti   (nflow,npro)           : grad-y in direction 3
482*59599516SKenneth E. Jansenc  A0     (nsymdf,npro)          : A0 matrix (Symm. storage)
483*59599516SKenneth E. Jansenc  raLS   (npro)                 : square of LS residual (A0inv norm)
484*59599516SKenneth E. Jansenc  rtLS   (npro)                 : square of LS residual (Tau norm)
485*59599516SKenneth E. Jansenc  giju    (6,npro)              : metric matrix
486*59599516SKenneth E. Jansenc  DC     (ngauss,npro)          : discontinuity-capturing factor
487*59599516SKenneth E. Jansenc  intp				 : integration point number
488*59599516SKenneth E. Jansenc
489*59599516SKenneth E. Jansenc output:
490*59599516SKenneth E. Jansenc  ri     (nflow*(nsd+1),npro)   : partial residual
491*59599516SKenneth E. Jansenc  rmi    (nflow*(nsd+1),npro)   : partial modified residual
492*59599516SKenneth E. Jansenc  stiff  (nsymdf,6,npro)       : diffusivity matrix
493*59599516SKenneth E. Jansenc  DC     (npro)                : discontinuity-capturing factor
494*59599516SKenneth E. Jansenc
495*59599516SKenneth E. Jansenc
496*59599516SKenneth E. Jansenc Zdenek Johan, Summer 1990. (Modified from e2dc.f)
497*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Recoded)
498*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90)
499*59599516SKenneth E. Jansenc----------------------------------------------------------------------
500*59599516SKenneth E. Jansenc
501*59599516SKenneth E. Jansen	include "common.h"
502*59599516SKenneth E. Jansenc
503*59599516SKenneth E. Jansen        dimension gradS(npro,nsd),            gGradS(npro,nsd),
504*59599516SKenneth E. Jansen     &            rLS(npro),                  tauS(npro),
505*59599516SKenneth E. Jansen     &            giju(npro,6),               dcFct(npro),
506*59599516SKenneth E. Jansen     &            srcR(npro)
507*59599516SKenneth E. Jansenc
508*59599516SKenneth E. Jansenc.... Form GijUp gradS and  gradS . GijUp gradS (store in dcFct)
509*59599516SKenneth E. Jansenc
510*59599516SKenneth E. Jansen
511*59599516SKenneth E. Jansen	    gGradS(:,1) = GijU(:,1) * gradS(:,1)
512*59599516SKenneth E. Jansen     1			+ GijU(:,4) * gradS(:,2)
513*59599516SKenneth E. Jansen     2			+ GijU(:,6) * gradS(:,3)
514*59599516SKenneth E. Jansen	    gGradS(:,2) = GijU(:,4) * gradS(:,1)
515*59599516SKenneth E. Jansen     1			+ GijU(:,2) * gradS(:,2)
516*59599516SKenneth E. Jansen     2			+ GijU(:,5) * gradS(:,3)
517*59599516SKenneth E. Jansen	    gGradS(:,3) = GijU(:,6) * gradS(:,1)
518*59599516SKenneth E. Jansen     1			+ GijU(:,5) * gradS(:,2)
519*59599516SKenneth E. Jansen     2			+ GijU(:,3) * gradS(:,3)
520*59599516SKenneth E. Jansenc
521*59599516SKenneth E. Jansen	    dcFct(:)    = gradS(:,1) * gGradS(:,1)
522*59599516SKenneth E. Jansen     1		        + gradS(:,2) * gGradS(:,2)
523*59599516SKenneth E. Jansen     2		        + gradS(:,3) * gGradS(:,3)
524*59599516SKenneth E. Jansen     3		        + epsM
525*59599516SKenneth E. Jansen
526*59599516SKenneth E. Jansen	    dcFct(:) = 1.0/ dcFct(:)
527*59599516SKenneth E. Jansenc
528*59599516SKenneth E. Jansenc.... Form pdeRes 2-norm / gradT 2-norm
529*59599516SKenneth E. Jansenc
530*59599516SKenneth E. Jansen
531*59599516SKenneth E. Jansen	    dcFct  = dcFct * (rLS - srcR) ** 2
532*59599516SKenneth E. Jansenc
533*59599516SKenneth E. Jansenc.... ------------------------->  DC factor  <------------------------
534*59599516SKenneth E. Jansenc
535*59599516SKenneth E. Jansenc.... DC-mallet
536*59599516SKenneth E. Jansenc
537*59599516SKenneth E. Jansen	    if (idcsclr(1) .eq. 1) then
538*59599516SKenneth E. Jansenc
539*59599516SKenneth E. Jansen	       fact = one
540*59599516SKenneth E. Jansen	       if (ipord .eq. 2)  fact = 0.9
541*59599516SKenneth E. Jansen	       if (ipord .eq. 3) fact = 0.75
542*59599516SKenneth E. Jansenc
543*59599516SKenneth E. Jansenc$$$  dcFct(:)=dim((fact*sqrt(dcFct(:))),(tauS(:)*dcFct(:))) !not work
544*59599516SKenneth E. Jansen                                                          !with all compilers
545*59599516SKenneth E. Jansen	       dcFct(:)=max(zero,(fact*sqrt(dcFct(:)))-(tauS(:)*dcFct(:)))
546*59599516SKenneth E. Jansenc
547*59599516SKenneth E. Jansen	    endif
548*59599516SKenneth E. Jansenc
549*59599516SKenneth E. Jansenc
550*59599516SKenneth E. Jansenc....   DC-quadratic
551*59599516SKenneth E. Jansenc
552*59599516SKenneth E. Jansen	    if (idcsclr(1) .eq. 2) then
553*59599516SKenneth E. Jansenc
554*59599516SKenneth E. Jansen	       dcFct(:) = two * tauS(:) * dcFct(:)
555*59599516SKenneth E. Jansenc
556*59599516SKenneth E. Jansen	    endif
557*59599516SKenneth E. Jansenc
558*59599516SKenneth E. Jansenc....   DC-min
559*59599516SKenneth E. Jansenc
560*59599516SKenneth E. Jansen	    if (idcsclr(1) .eq. 3) then
561*59599516SKenneth E. Jansenc
562*59599516SKenneth E. Jansen	       fact = one
563*59599516SKenneth E. Jansen	       if (ipord .eq. 2)  fact = 0.9
564*59599516SKenneth E. Jansenc
565*59599516SKenneth E. Jansen          dcFct(:) = min( max(zero, (fact * sqrt(dcFct(:)) -
566*59599516SKenneth E. Jansen     &	             tauS(:)*dcFct(:)) ), two * tauS(:) * dcFct(:))
567*59599516SKenneth E. Jansenc
568*59599516SKenneth E. Jansen	    endif
569*59599516SKenneth E. Jansenc
570*59599516SKenneth E. Jansenc.... Scale the gGradT for residual formation
571*59599516SKenneth E. Jansenc
572*59599516SKenneth E. Jansen	    gGradS(:,1) = dcFct(:) * gGradS(:,1)
573*59599516SKenneth E. Jansen	    gGradS(:,2) = dcFct(:) * gGradS(:,2)
574*59599516SKenneth E. Jansen	    gGradS(:,3) = dcFct(:) * gGradS(:,3)
575*59599516SKenneth E. Jansen
576*59599516SKenneth E. Jansen
577*59599516SKenneth E. Jansen
578*59599516SKenneth E. Jansen	return
579*59599516SKenneth E. Jansen	end
580*59599516SKenneth E. Jansenc
581