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