1*59599516SKenneth E. Jansenc----------------------------------------------------------------------- 2*59599516SKenneth E. Jansenc 3*59599516SKenneth E. Jansenc module for time averaged statistics (conservative projection). 4*59599516SKenneth E. Jansenc 5*59599516SKenneth E. Jansenc----------------------------------------------------------------------- 6*59599516SKenneth E. Jansen module stats 7*59599516SKenneth E. Jansen 8*59599516SKenneth E. Jansen integer nResDims, nSolDims, nLhsDims, nTimeStep, stsResFlg 9*59599516SKenneth E. Jansen integer stsCompFreq, stsWriteFreq, stsResetFreq, step1, 10*59599516SKenneth E. Jansen & stsType 11*59599516SKenneth E. Jansen 12*59599516SKenneth E. Jansen real*8, allocatable :: stsVec(:,:) 13*59599516SKenneth E. Jansen 14*59599516SKenneth E. Jansen real*8, allocatable :: stsReg(:) 15*59599516SKenneth E. Jansen real*8, allocatable :: stsMInv(:,:) 16*59599516SKenneth E. Jansen real*8, allocatable :: stsB(:,:) 17*59599516SKenneth E. Jansen real*8, allocatable :: stsDInv(:,:) 18*59599516SKenneth E. Jansen real*8, allocatable :: stsCInv(:,:) 19*59599516SKenneth E. Jansen 20*59599516SKenneth E. Jansen real*8, allocatable :: stsPres(:), stsPresSqr(:), stsVel(:,:), 21*59599516SKenneth E. Jansen & stsVelSqr(:,:), stsVelReg(:,:), 22*59599516SKenneth E. Jansen & stsStress(:,:) 23*59599516SKenneth E. Jansen 24*59599516SKenneth E. Jansen end module 25*59599516SKenneth E. Jansen 26*59599516SKenneth E. Jansenc----------------------------------------------------------------------- 27*59599516SKenneth E. Jansenc create the new statistics arrays 28*59599516SKenneth E. Jansenc----------------------------------------------------------------------- 29*59599516SKenneth E. Jansen subroutine initStats(x, iBC, iper, ilwork) 30*59599516SKenneth E. Jansen 31*59599516SKenneth E. Jansen use stats 32*59599516SKenneth E. Jansen include "common.h" 33*59599516SKenneth E. Jansen 34*59599516SKenneth E. Jansen real*8 x(numnp,3) 35*59599516SKenneth E. Jansen integer ilwork(nlwork), iper(nshg), iBC(nshg) 36*59599516SKenneth E. Jansen 37*59599516SKenneth E. Jansen if (ipord .eq. 1) then 38*59599516SKenneth E. Jansen stsType = 1 39*59599516SKenneth E. Jansen else 40*59599516SKenneth E. Jansen stsType = 2 41*59599516SKenneth E. Jansen endif 42*59599516SKenneth E. Jansen 43*59599516SKenneth E. Jansen stsWriteFreq = 200 44*59599516SKenneth E. Jansen 45*59599516SKenneth E. Jansen nResDims = 11 46*59599516SKenneth E. Jansen nSolDims = 10 47*59599516SKenneth E. Jansen nLhsDims = 19 48*59599516SKenneth E. Jansen 49*59599516SKenneth E. Jansen allocate ( stsVec(nshg,nResDims) ) 50*59599516SKenneth E. Jansen 51*59599516SKenneth E. Jansen if (stsType .eq. 1) then 52*59599516SKenneth E. Jansen allocate ( stsReg(nshg) ) 53*59599516SKenneth E. Jansen allocate ( stsMInv(nshg,6) ) 54*59599516SKenneth E. Jansen allocate ( stsB(nshg,3) ) 55*59599516SKenneth E. Jansen allocate ( stsDInv(nshg,3) ) 56*59599516SKenneth E. Jansen allocate ( stsCInv(nshg,6) ) 57*59599516SKenneth E. Jansen endif 58*59599516SKenneth E. Jansen 59*59599516SKenneth E. Jansen allocate ( stsPres(nshg) ) 60*59599516SKenneth E. Jansen allocate ( stsPresSqr(nshg) ) 61*59599516SKenneth E. Jansen allocate ( stsVel(nshg,3) ) 62*59599516SKenneth E. Jansen allocate ( stsVelSqr(nshg,6) ) 63*59599516SKenneth E. Jansen allocate ( stsVelReg(nshg,3) ) 64*59599516SKenneth E. Jansen allocate ( stsStress(nshg,6) ) 65*59599516SKenneth E. Jansen 66*59599516SKenneth E. Jansen stsPres = 0.0 67*59599516SKenneth E. Jansen stsPresSqr = 0.0 68*59599516SKenneth E. Jansen stsVel = 0.0 69*59599516SKenneth E. Jansen stsVelSqr = 0.0 70*59599516SKenneth E. Jansen stsVelReg = 0.0 71*59599516SKenneth E. Jansen stsStress = 0.0 72*59599516SKenneth E. Jansen 73*59599516SKenneth E. Jansen step1 = lstep+1 74*59599516SKenneth E. Jansen nTimeStep = 0 75*59599516SKenneth E. Jansen stsResFlg = 0 76*59599516SKenneth E. Jansen 77*59599516SKenneth E. Jansen if (stsType .eq. 1) then 78*59599516SKenneth E. Jansen call elmStatsLhs( x, iBC, iper, ilwork ) 79*59599516SKenneth E. Jansen call stsInitLhs( nshg ) 80*59599516SKenneth E. Jansen endif 81*59599516SKenneth E. Jansen 82*59599516SKenneth E. Jansen return 83*59599516SKenneth E. Jansen end 84*59599516SKenneth E. Jansen 85*59599516SKenneth E. Jansenc----------------------------------------------------------------------- 86*59599516SKenneth E. Jansenc compute the Lhs matrices needed for the conservative projection 87*59599516SKenneth E. Jansenc of the statistics 88*59599516SKenneth E. Jansenc----------------------------------------------------------------------- 89*59599516SKenneth E. Jansen subroutine stsInitLhs(nshg) 90*59599516SKenneth E. Jansen 91*59599516SKenneth E. Jansen use stats 92*59599516SKenneth E. Jansen integer nshg 93*59599516SKenneth E. Jansen 94*59599516SKenneth E. Jansen real*8 res(nResDims), reg, det, r0, r1, r2, r3, r4, r5, 95*59599516SKenneth E. Jansen & d0, d1, d2, c0, c1, c2, c3, c4, c5 96*59599516SKenneth E. Jansen integer i 97*59599516SKenneth E. Jansen 98*59599516SKenneth E. Jansenc 99*59599516SKenneth E. Jansenc.... build the regularization 100*59599516SKenneth E. Jansenc 101*59599516SKenneth E. Jansen do i = 1, nshg 102*59599516SKenneth E. Jansen res = stsVec(i,:) 103*59599516SKenneth E. Jansen reg = res(1) * res(2) * res(3) 104*59599516SKenneth E. Jansen det = res(1) * (res(2) * res(3) - res(5) * res(5)) 105*59599516SKenneth E. Jansen & + res(4) * (res(5) * res(6) - res(4) * res(3)) 106*59599516SKenneth E. Jansen & + res(6) * (res(4) * res(5) - res(2) * res(6)) 107*59599516SKenneth E. Jansen 108*59599516SKenneth E. Jansen if ( det .gt. 1.d-10*reg .and. reg .ne. 0 ) then 109*59599516SKenneth E. Jansen stsReg(i) = 0 110*59599516SKenneth E. Jansen else 111*59599516SKenneth E. Jansen stsReg(i) = (res(1) + res(2) + res(3)) / 1000. 112*59599516SKenneth E. Jansen endif 113*59599516SKenneth E. Jansen enddo 114*59599516SKenneth E. Jansen 115*59599516SKenneth E. Jansenc 116*59599516SKenneth E. Jansenc.... form M and factorize 117*59599516SKenneth E. Jansenc 118*59599516SKenneth E. Jansen do i = 1, nshg 119*59599516SKenneth E. Jansen res = stsVec(i,:) 120*59599516SKenneth E. Jansen reg = stsReg(i) 121*59599516SKenneth E. Jansen r0 = res(1) + reg 122*59599516SKenneth E. Jansen r1 = res(2) + reg 123*59599516SKenneth E. Jansen r2 = res(3) + reg 124*59599516SKenneth E. Jansen r3 = res(4) 125*59599516SKenneth E. Jansen r4 = res(5) 126*59599516SKenneth E. Jansen r5 = res(6) 127*59599516SKenneth E. Jansen 128*59599516SKenneth E. Jansen det = r0 * (r1 * r2 - r4 * r4) 129*59599516SKenneth E. Jansen & + r3 * (r4 * r5 - r3 * r2) 130*59599516SKenneth E. Jansen & + r5 * (r3 * r4 - r1 * r5) 131*59599516SKenneth E. Jansen det = 1.0/det 132*59599516SKenneth E. Jansen 133*59599516SKenneth E. Jansen stsMInv(i,1) = det * (r1 * r2 - r4 * r4) 134*59599516SKenneth E. Jansen stsMInv(i,2) = det * (r0 * r2 - r5 * r5) 135*59599516SKenneth E. Jansen stsMInv(i,3) = det * (r0 * r1 - r3 * r3) 136*59599516SKenneth E. Jansen stsMInv(i,4) = det * (r4 * r5 - r2 * r3) 137*59599516SKenneth E. Jansen stsMInv(i,5) = det * (r3 * r5 - r0 * r4) 138*59599516SKenneth E. Jansen stsMInv(i,6) = det * (r3 * r4 - r1 * r5) 139*59599516SKenneth E. Jansen enddo 140*59599516SKenneth E. Jansen 141*59599516SKenneth E. Jansenc 142*59599516SKenneth E. Jansenc.... form B, DInv and CInv 143*59599516SKenneth E. Jansenc 144*59599516SKenneth E. Jansen do i = 1, nshg 145*59599516SKenneth E. Jansen res = stsVec(i,:) 146*59599516SKenneth E. Jansen reg = stsReg(i) 147*59599516SKenneth E. Jansen r0 = res(1) 148*59599516SKenneth E. Jansen r1 = res(2) 149*59599516SKenneth E. Jansen r2 = res(3) 150*59599516SKenneth E. Jansen r3 = res(4) 151*59599516SKenneth E. Jansen r4 = res(5) 152*59599516SKenneth E. Jansen r5 = res(6) 153*59599516SKenneth E. Jansen d0 = 1. / ( reg + r0 ) 154*59599516SKenneth E. Jansen d1 = 1. / ( reg + r1 ) 155*59599516SKenneth E. Jansen d2 = 1. / ( reg + r2 ) 156*59599516SKenneth E. Jansen stsDInv(i,1) = d0 157*59599516SKenneth E. Jansen stsDInv(i,2) = d1 158*59599516SKenneth E. Jansen stsDInv(i,3) = d2 159*59599516SKenneth E. Jansen stsB(i,1) = r3 160*59599516SKenneth E. Jansen stsB(i,2) = r4 161*59599516SKenneth E. Jansen stsB(i,3) = r5 162*59599516SKenneth E. Jansen c0 = r0 + r1 - r3 * r3 * (d0 + d1) + reg 163*59599516SKenneth E. Jansen c1 = r1 + r2 - r4 * r4 * (d1 + d2) + reg 164*59599516SKenneth E. Jansen c2 = r2 + r0 - r5 * r5 * (d2 + d0) + reg 165*59599516SKenneth E. Jansen c3 = r5 - r3 * r4 * d1 166*59599516SKenneth E. Jansen c4 = r3 - r4 * r5 * d2 167*59599516SKenneth E. Jansen c5 = r4 - r5 * r3 * d0 168*59599516SKenneth E. Jansen det = c0 * (c1 * c2 - c4 * c4) 169*59599516SKenneth E. Jansen & + c3 * (c4 * c5 - c3 * c2) 170*59599516SKenneth E. Jansen & + c5 * (c3 * c4 - c1 * c5) 171*59599516SKenneth E. Jansen det = 1. / det 172*59599516SKenneth E. Jansen stsCInv(i,1) = det * (c1 * c2 - c4 * c4) 173*59599516SKenneth E. Jansen stsCInv(i,2) = det * (c0 * c2 - c5 * c5) 174*59599516SKenneth E. Jansen stsCInv(i,3) = det * (c0 * c1 - c3 * c3) 175*59599516SKenneth E. Jansen stsCInv(i,4) = det * (c4 * c5 - c2 * c3) 176*59599516SKenneth E. Jansen stsCInv(i,5) = det * (c3 * c5 - c0 * c4) 177*59599516SKenneth E. Jansen stsCInv(i,6) = det * (c3 * c4 - c1 * c5) 178*59599516SKenneth E. Jansen enddo 179*59599516SKenneth E. Jansen 180*59599516SKenneth E. Jansen return 181*59599516SKenneth E. Jansen end 182*59599516SKenneth E. Jansen 183*59599516SKenneth E. Jansen 184*59599516SKenneth E. Jansenc----------------------------------------------------------------------- 185*59599516SKenneth E. Jansenc collect the desired statistics 186*59599516SKenneth E. Jansenc----------------------------------------------------------------------- 187*59599516SKenneth E. Jansen subroutine stsGetStats( y, yold, ac, acold, 188*59599516SKenneth E. Jansen & u, uold, x, 189*59599516SKenneth E. Jansen & shp, shgl, shpb, shglb, 190*59599516SKenneth E. Jansen & iBC, BC, iper, ilwork, 191*59599516SKenneth E. Jansen & rowp, colm, lhsK, lhsP ) 192*59599516SKenneth E. Jansen 193*59599516SKenneth E. Jansen use stats 194*59599516SKenneth E. Jansen 195*59599516SKenneth E. Jansen include "common.h" 196*59599516SKenneth E. Jansen 197*59599516SKenneth E. Jansen real*8 y(nshg,ndof), yold(nshg,ndof), 198*59599516SKenneth E. Jansen & ac(nshg,ndof), acold(nshg,ndof), 199*59599516SKenneth E. Jansen & u(nshg,nsd), uold(nshg,nsd), 200*59599516SKenneth E. Jansen & shp(MAXTOP,maxsh,MAXQPT), shgl(MAXTOP,nsd,maxsh,MAXQPT), 201*59599516SKenneth E. Jansen & shpb(MAXTOP,maxsh,MAXQPT), 202*59599516SKenneth E. Jansen & shglb(MAXTOP,nsd,maxsh,MAXQPT), 203*59599516SKenneth E. Jansen & BC(nshg,ndofBC), lhsK(9,nnz_tot), 204*59599516SKenneth E. Jansen & lhsP(4,nnz_tot), x(numnp,nsd) 205*59599516SKenneth E. Jansen 206*59599516SKenneth E. Jansen integer iBC(nshg), iper(nshg), 207*59599516SKenneth E. Jansen & ilwork(nlwork), rowp(nshg*nnz), 208*59599516SKenneth E. Jansen & colm(nshg+1) 209*59599516SKenneth E. Jansen 210*59599516SKenneth E. Jansen 211*59599516SKenneth E. Jansen real*8 yAlpha(nshg,ndof), acAlpha(nshg,ndof), 212*59599516SKenneth E. Jansen & uAlpha(nshg,nsd), 213*59599516SKenneth E. Jansen & res(nResDims), MInv(6), 214*59599516SKenneth E. Jansen & DInv(3), B(3), 215*59599516SKenneth E. Jansen & CInv(6) 216*59599516SKenneth E. Jansen 217*59599516SKenneth E. Jansen real*8 u1, u2, u3, r0, r1, r2, r3, r4, r5, t3, t4, t5 218*59599516SKenneth E. Jansen 219*59599516SKenneth E. Jansen integer i 220*59599516SKenneth E. Jansen 221*59599516SKenneth E. Jansen nTimeStep = nTimeStep + 1 222*59599516SKenneth E. Jansenc 223*59599516SKenneth E. Jansenc.... compute solution at n+alpha 224*59599516SKenneth E. Jansenc 225*59599516SKenneth E. Jansen call itrYAlpha( uold, yold, acold, 226*59599516SKenneth E. Jansen & u, y, ac, 227*59599516SKenneth E. Jansen & uAlpha, yAlpha, acAlpha) 228*59599516SKenneth E. Jansen 229*59599516SKenneth E. Jansenc 230*59599516SKenneth E. Jansenc.... assemble the residual 231*59599516SKenneth E. Jansenc 232*59599516SKenneth E. Jansen if (stsType .eq. 1) then 233*59599516SKenneth E. Jansen call elmStatsRes( yAlpha, acAlpha, x, shp, shgl, 234*59599516SKenneth E. Jansen & shpb, shglb, iBC, BC, 235*59599516SKenneth E. Jansen & iper, ilwork, rowp, colm, 236*59599516SKenneth E. Jansen & lhsK, lhsP ) 237*59599516SKenneth E. Jansen 238*59599516SKenneth E. Jansenc 239*59599516SKenneth E. Jansenc.... compute the statistics 240*59599516SKenneth E. Jansenc 241*59599516SKenneth E. Jansen do i = 1, nshg 242*59599516SKenneth E. Jansen res = stsVec(i,:) 243*59599516SKenneth E. Jansen reg = stsReg(i) 244*59599516SKenneth E. Jansen 245*59599516SKenneth E. Jansen MInv = stsMInv(i,:) 246*59599516SKenneth E. Jansen DInv = stsDInv(i,:) 247*59599516SKenneth E. Jansen B = stsB(i,:) 248*59599516SKenneth E. Jansen CInv = stsCInv(i,:) 249*59599516SKenneth E. Jansen 250*59599516SKenneth E. Jansen u1 = yAlpha(i,1) 251*59599516SKenneth E. Jansen u2 = yAlpha(i,2) 252*59599516SKenneth E. Jansen u3 = yAlpha(i,3) 253*59599516SKenneth E. Jansen 254*59599516SKenneth E. Jansen stsPres(i) = stsPres(i) + y(i,4) 255*59599516SKenneth E. Jansen stsPresSqr(i) = stsPresSqr(i) + y(i,4)*y(i,4) 256*59599516SKenneth E. Jansen 257*59599516SKenneth E. Jansen r0 = res(1) + reg * u1 258*59599516SKenneth E. Jansen r1 = res(2) + reg * u2 259*59599516SKenneth E. Jansen r2 = res(3) + reg * u3 260*59599516SKenneth E. Jansen 261*59599516SKenneth E. Jansen stsVel(i,1) = stsVel(i,1) 262*59599516SKenneth E. Jansen & + MInv(1) * r0 + MInv(4) * r1 + MInv(6) * r2 263*59599516SKenneth E. Jansen stsVel(i,2) = stsVel(i,2) 264*59599516SKenneth E. Jansen & + MInv(4) * r0 + MInv(2) * r1 + MInv(5) * r2 265*59599516SKenneth E. Jansen stsVel(i,3) = stsVel(i,3) 266*59599516SKenneth E. Jansen & + MInv(6) * r0 + MInv(5) * r1 + MInv(3) * r2 267*59599516SKenneth E. Jansen 268*59599516SKenneth E. Jansen stsVelReg(i,1) = stsVelReg(i,1) + u1 269*59599516SKenneth E. Jansen stsVelReg(i,2) = stsVelReg(i,2) + u2 270*59599516SKenneth E. Jansen stsVelReg(i,3) = stsVelReg(i,3) + u3 271*59599516SKenneth E. Jansen 272*59599516SKenneth E. Jansen r0 = res(1) * u1 + reg * u1 * u1 273*59599516SKenneth E. Jansen r1 = res(2) * u2 + reg * u2 * u2 274*59599516SKenneth E. Jansen r2 = res(3) * u3 + reg * u3 * u3 275*59599516SKenneth E. Jansen r3 = res(1) * u2 + res(2) * u1 + reg * u2 * u1 276*59599516SKenneth E. Jansen r4 = res(2) * u3 + res(3) * u2 + reg * u3 * u2 277*59599516SKenneth E. Jansen r5 = res(3) * u1 + res(1) * u3 + reg * u1 * u3 278*59599516SKenneth E. Jansen r0 = DInv(1) * r0 279*59599516SKenneth E. Jansen r1 = DInv(2) * r1 280*59599516SKenneth E. Jansen r2 = DInv(3) * r2 281*59599516SKenneth E. Jansen r3 = r3 - B(1) * (r0 + r1) 282*59599516SKenneth E. Jansen r4 = r4 - B(2) * (r1 + r2) 283*59599516SKenneth E. Jansen r5 = r5 - B(3) * (r2 + r0) 284*59599516SKenneth E. Jansen t3 = CInv(1) * r3 + CInv(4) * r4 + CInv(6) * r5 285*59599516SKenneth E. Jansen t4 = CInv(4) * r3 + CInv(2) * r4 + CInv(5) * r5 286*59599516SKenneth E. Jansen t5 = CInv(6) * r3 + CInv(5) * r4 + CInv(3) * r5 287*59599516SKenneth E. Jansen 288*59599516SKenneth E. Jansen stsVelSqr(i,1) = stsVelSqr(i,1) 289*59599516SKenneth E. Jansen & + r0 - DInv(1) * (B(1) * t3 + B(3) * t5) 290*59599516SKenneth E. Jansen stsVelSqr(i,2) = stsVelSqr(i,2) 291*59599516SKenneth E. Jansen & + r1 - DInv(2) * (B(2) * t4 + B(1) * t3) 292*59599516SKenneth E. Jansen stsVelSqr(i,3) = stsVelSqr(i,3) 293*59599516SKenneth E. Jansen & + r2 - DInv(3) * (B(3) * t5 + B(2) * t4) 294*59599516SKenneth E. Jansen 295*59599516SKenneth E. Jansen stsVelSqr(i,4) = stsVelSqr(i,4) + t3 296*59599516SKenneth E. Jansen stsVelSqr(i,5) = stsVelSqr(i,5) + t4 297*59599516SKenneth E. Jansen stsVelSqr(i,6) = stsVelSqr(i,6) + t5 298*59599516SKenneth E. Jansen 299*59599516SKenneth E. Jansen r0 = res(4) 300*59599516SKenneth E. Jansen r1 = res(5) 301*59599516SKenneth E. Jansen r2 = res(6) 302*59599516SKenneth E. Jansen r3 = res(7) 303*59599516SKenneth E. Jansen r4 = res(8) 304*59599516SKenneth E. Jansen r5 = res(9) 305*59599516SKenneth E. Jansen 306*59599516SKenneth E. Jansen r0 = DInv(1) * r0 307*59599516SKenneth E. Jansen r1 = DInv(2) * r1 308*59599516SKenneth E. Jansen r2 = DInv(3) * r2 309*59599516SKenneth E. Jansen 310*59599516SKenneth E. Jansen r3 = r3 - B(1) * (r0 + r1) 311*59599516SKenneth E. Jansen r4 = r4 - B(2) * (r1 + r2) 312*59599516SKenneth E. Jansen r5 = r5 - B(3) * (r2 + r0) 313*59599516SKenneth E. Jansen 314*59599516SKenneth E. Jansen t3 = CInv(1) * r3 + CInv(4) * r4 + CInv(6) * r5 315*59599516SKenneth E. Jansen t4 = CInv(4) * r3 + CInv(2) * r4 + CInv(5) * r5 316*59599516SKenneth E. Jansen t5 = CInv(6) * r3 + CInv(5) * r4 + CInv(3) * r5 317*59599516SKenneth E. Jansen 318*59599516SKenneth E. Jansen stsStress(i,1) = stsStress(i,1) 319*59599516SKenneth E. Jansen & + r0 - DInv(1) * (B(1) * t3 + B(3) * t5) 320*59599516SKenneth E. Jansen stsStress(i,2) = stsStress(i,2) 321*59599516SKenneth E. Jansen & + r1 - DInv(2) * (B(2) * t4 + B(1) * t3) 322*59599516SKenneth E. Jansen stsStress(i,3) = stsStress(i,3) 323*59599516SKenneth E. Jansen & + r2 - DInv(3) * (B(3) * t5 + B(2) * t4) 324*59599516SKenneth E. Jansen stsStress(i,4) = stsStress(i,4) + t3 325*59599516SKenneth E. Jansen stsStress(i,5) = stsStress(i,5) + t4 326*59599516SKenneth E. Jansen stsStress(i,6) = stsStress(i,6) + t5 327*59599516SKenneth E. Jansen enddo 328*59599516SKenneth E. Jansen else if (stsType .eq. 2) then 329*59599516SKenneth E. Jansen 330*59599516SKenneth E. Jansen call evalAtInterp( yAlpha, stsVec, x, 331*59599516SKenneth E. Jansen & nResDims, nshape) 332*59599516SKenneth E. Jansen 333*59599516SKenneth E. Jansen do i = 1, nshg 334*59599516SKenneth E. Jansen 335*59599516SKenneth E. Jansen u1 = stsVec(i,1) 336*59599516SKenneth E. Jansen u2 = stsVec(i,2) 337*59599516SKenneth E. Jansen u3 = stsVec(i,3) 338*59599516SKenneth E. Jansen 339*59599516SKenneth E. Jansen stsPres(i) = stsPres(i) + stsVec(i,4) 340*59599516SKenneth E. Jansen stsPresSqr(i) = stsPresSqr(i) + stsVec(i,4)*stsVec(i,4) 341*59599516SKenneth E. Jansen 342*59599516SKenneth E. Jansen stsVel(i,1) = stsVel(i,1) + u1 343*59599516SKenneth E. Jansen stsVel(i,2) = stsVel(i,2) + u2 344*59599516SKenneth E. Jansen stsVel(i,3) = stsVel(i,3) + u3 345*59599516SKenneth E. Jansen 346*59599516SKenneth E. Jansen stsVelSqr(i,1) = stsVelSqr(i,1) + u1*u1 347*59599516SKenneth E. Jansen stsVelSqr(i,2) = stsVelSqr(i,2) + u2*u2 348*59599516SKenneth E. Jansen stsVelSqr(i,3) = stsVelSqr(i,3) + u3*u3 349*59599516SKenneth E. Jansen stsVelSqr(i,4) = stsVelSqr(i,4) + u1*u2 350*59599516SKenneth E. Jansen stsVelSqr(i,5) = stsVelSqr(i,5) + u2*u3 351*59599516SKenneth E. Jansen stsVelSqr(i,6) = stsVelSqr(i,6) + u3*u1 352*59599516SKenneth E. Jansen 353*59599516SKenneth E. Jansen stsStress(i,1) = stsStress(i,1) + stsVec(i,6) 354*59599516SKenneth E. Jansen stsStress(i,2) = stsStress(i,2) + stsVec(i,7) 355*59599516SKenneth E. Jansen stsStress(i,3) = stsStress(i,3) + stsVec(i,8) 356*59599516SKenneth E. Jansen stsStress(i,4) = stsStress(i,4) + stsVec(i,9) 357*59599516SKenneth E. Jansen stsStress(i,5) = stsStress(i,5) + stsVec(i,10) 358*59599516SKenneth E. Jansen stsStress(i,6) = stsStress(i,6) + stsVec(i,11) 359*59599516SKenneth E. Jansen 360*59599516SKenneth E. Jansen enddo 361*59599516SKenneth E. Jansen endif 362*59599516SKenneth E. Jansen 363*59599516SKenneth E. Jansen if ( mod(nTimeStep,stsWriteFreq) .eq. 0 .or. 364*59599516SKenneth E. Jansen & nTimeStep .eq. nstep(itseq) ) then 365*59599516SKenneth E. Jansen call stsWriteStats() 366*59599516SKenneth E. Jansen endif 367*59599516SKenneth E. Jansen 368*59599516SKenneth E. Jansenc$$$ if ( mod( nTimeStep, stsResetFreq) .eq. 0 ) then 369*59599516SKenneth E. Jansenc$$$ stsPres = 0.0 370*59599516SKenneth E. Jansenc$$$ stsPresSqr = 0.0 371*59599516SKenneth E. Jansenc$$$ stsVel = 0.0 372*59599516SKenneth E. Jansenc$$$ stsVelSqr = 0.0 373*59599516SKenneth E. Jansenc$$$ stsVelReg = 0.0 374*59599516SKenneth E. Jansenc$$$ stsStress = 0.0 375*59599516SKenneth E. Jansenc$$$ 376*59599516SKenneth E. Jansenc$$$ nTimeStep = 0 377*59599516SKenneth E. Jansenc$$$ endif 378*59599516SKenneth E. Jansen 379*59599516SKenneth E. Jansen return 380*59599516SKenneth E. Jansen end 381*59599516SKenneth E. Jansen 382*59599516SKenneth E. Jansenc----------------------------------------------------------------------- 383*59599516SKenneth E. Jansenc collect the desired statistics 384*59599516SKenneth E. Jansenc----------------------------------------------------------------------- 385*59599516SKenneth E. Jansen subroutine stsWriteStats() 386*59599516SKenneth E. Jansen 387*59599516SKenneth E. Jansen use stats 388*59599516SKenneth E. Jansen include "common.h" 389*59599516SKenneth E. Jansen 390*59599516SKenneth E. Jansen integer iofile, step2, itmp1, itmp,iofile2 391*59599516SKenneth E. Jansen character*30 fname, fmt1 392*59599516SKenneth E. Jansen character*5 cname 393*59599516SKenneth E. Jansen character*1 dash 394*59599516SKenneth E. Jansen real*8 outvec(nshg,19) 395*59599516SKenneth E. Jansenc 396*59599516SKenneth E. Jansenc.... open the output file 397*59599516SKenneth E. Jansenc 398*59599516SKenneth E. Jansen iofile = 39 399*59599516SKenneth E. Jansen step2 = lstep+1 ! current time step 400*59599516SKenneth E. Jansen itmp = 1 401*59599516SKenneth E. Jansen itmp1 = 1 402*59599516SKenneth E. Jansen if (step1 .gt. 0) itmp = int(log10(float(step1)))+1 403*59599516SKenneth E. Jansen if (step2 .gt. 0) itmp1 = int(log10(float(step2)))+1 404*59599516SKenneth E. Jansen dash = '-' 405*59599516SKenneth E. Jansen write (fmt1, 406*59599516SKenneth E. Jansen & "('(''stats.'',i',i1,',a1,i',i1,',1x)')") 407*59599516SKenneth E. Jansen & itmp,itmp1 408*59599516SKenneth E. Jansen write (fname,fmt1) step1,dash,step2 409*59599516SKenneth E. Jansen fname = trim(fname) // cname(myrank+1) 410*59599516SKenneth E. Jansen open ( unit = iofile, file = fname, status = 'unknown', 411*59599516SKenneth E. Jansen & form = 'unformatted') 412*59599516SKenneth E. Jansenc 413*59599516SKenneth E. Jansenc.... write the statistics 414*59599516SKenneth E. Jansenc 415*59599516SKenneth E. Jansen outvec(:,1) = stsPres(:) 416*59599516SKenneth E. Jansen outvec(:,2:4) = stsVel(:,:) 417*59599516SKenneth E. Jansenc outvec(:,2:4) = stsVelReg(:,:) 418*59599516SKenneth E. Jansen outvec(:,5) = zero ! later will be temperature 419*59599516SKenneth E. Jansen outvec(:,6) = stsPresSqr(:) 420*59599516SKenneth E. Jansen outvec(:,7:12) = stsVelSqr(:,:) 421*59599516SKenneth E. Jansen outvec(:,13) = zero ! later wil be tempSqr 422*59599516SKenneth E. Jansen outvec(:,14:19) = stsStress(:,:) 423*59599516SKenneth E. Jansen 424*59599516SKenneth E. Jansen write (iofile) numnp, nshg, nTimeStep 425*59599516SKenneth E. Jansen write (iofile) outvec(1:nshg,:) 426*59599516SKenneth E. Jansen close (iofile) 427*59599516SKenneth E. Jansen 428*59599516SKenneth E. Jansenc$$$ write (iofile) numnp, numnp, nTimeStep 429*59599516SKenneth E. Jansenc$$$ write (iofile) outvec(1:numnp,:) 430*59599516SKenneth E. Jansenc$$$ close (iofile) 431*59599516SKenneth E. Jansen 432*59599516SKenneth E. Jansen iofile2 = 40 433*59599516SKenneth E. Jansenc$$$ open (unit=iofile2,file='stats.asc',status='unknown') 434*59599516SKenneth E. Jansenc$$$c$$$c 435*59599516SKenneth E. Jansenc$$$c$$$c.... pressure, velocity, temperature 436*59599516SKenneth E. Jansenc$$$c$$$c 437*59599516SKenneth E. Jansenc$$$c$$$ write (iofile2) outvec(:,1:5) 438*59599516SKenneth E. Jansenc$$$c$$$c 439*59599516SKenneth E. Jansenc$$$c$$$c.... pressSqr, u_i u_j, tempSqr 440*59599516SKenneth E. Jansenc$$$c$$$c 441*59599516SKenneth E. Jansenc$$$c$$$ write (iofile2) outvec(:,6:13) 442*59599516SKenneth E. Jansenc$$$c$$$c 443*59599516SKenneth E. Jansenc$$$c$$$c.... viscous stress 444*59599516SKenneth E. Jansenc$$$c$$$c 445*59599516SKenneth E. Jansenc$$$c$$$ write (iofile2) outvec(:,14:19) 446*59599516SKenneth E. Jansenc$$$c$$$ 447*59599516SKenneth E. Jansenc$$$ 448*59599516SKenneth E. Jansenc$$$c 449*59599516SKenneth E. Jansenc$$$c.... write the statistics 450*59599516SKenneth E. Jansenc$$$c 451*59599516SKenneth E. Jansenc$$$ write (iofile2,*) 'nNodes ',numnp 452*59599516SKenneth E. Jansenc$$$ write (iofile2,*) 'power ',2 453*59599516SKenneth E. Jansenc$$$ write (iofile2,*) 'nTimeSteps = ', nTimeStep 454*59599516SKenneth E. Jansenc$$$c 455*59599516SKenneth E. Jansenc$$$c.... velocity 456*59599516SKenneth E. Jansenc$$$c 457*59599516SKenneth E. Jansenc$$$ write (iofile2,*) 'vel 3 ',numnp 458*59599516SKenneth E. Jansenc$$$ do i = 1, numnp 459*59599516SKenneth E. Jansenc$$$ write (iofile2,111) stsVel(i,1), stsVel(i,2), stsVel(i,3) 460*59599516SKenneth E. Jansenc$$$ enddo 461*59599516SKenneth E. Jansenc$$$c 462*59599516SKenneth E. Jansenc$$$c.... pressure 463*59599516SKenneth E. Jansenc$$$c 464*59599516SKenneth E. Jansenc$$$ write (iofile2,*) 'pres 1 ',numnp 465*59599516SKenneth E. Jansenc$$$ do i = 1, numnp 466*59599516SKenneth E. Jansenc$$$ write (iofile2,112) stsPres(i) 467*59599516SKenneth E. Jansenc$$$ enddo 468*59599516SKenneth E. Jansenc$$$c 469*59599516SKenneth E. Jansenc$$$c.... velSqr 470*59599516SKenneth E. Jansenc$$$c 471*59599516SKenneth E. Jansenc$$$ write (iofile2,*) 'velSqr 6 ',numnp 472*59599516SKenneth E. Jansenc$$$ do i = 1, numnp 473*59599516SKenneth E. Jansenc$$$ write (iofile2,113) (stsVelSqr(i,j),j=1,6) 474*59599516SKenneth E. Jansenc$$$ enddo 475*59599516SKenneth E. Jansenc$$$c 476*59599516SKenneth E. Jansenc$$$c.... presSqr 477*59599516SKenneth E. Jansenc$$$c 478*59599516SKenneth E. Jansenc$$$ write (iofile2,*) 'presSqr 1 ',numnp 479*59599516SKenneth E. Jansenc$$$ do i = 1, numnp 480*59599516SKenneth E. Jansenc$$$ write (iofile2,112) stsPresSqr(i) 481*59599516SKenneth E. Jansenc$$$ enddo 482*59599516SKenneth E. Jansenc$$$c 483*59599516SKenneth E. Jansenc$$$c.... stress 484*59599516SKenneth E. Jansenc$$$c 485*59599516SKenneth E. Jansenc$$$ write (iofile2,*) 'stress 6 ',numnp 486*59599516SKenneth E. Jansenc$$$ do i = 1, numnp 487*59599516SKenneth E. Jansenc$$$ write (iofile2,113) (stsStress(i,j),j=1,6) 488*59599516SKenneth E. Jansenc$$$ enddo 489*59599516SKenneth E. Jansenc$$$c 490*59599516SKenneth E. Jansenc$$$c.... velocity 491*59599516SKenneth E. Jansenc$$$c 492*59599516SKenneth E. Jansenc$$$ write (iofile2,*) 'vel 3 ',numnp 493*59599516SKenneth E. Jansenc$$$ do i = 1, numnp 494*59599516SKenneth E. Jansenc$$$ write (iofile2,111) (stsVelReg(i,j),j=1,3) 495*59599516SKenneth E. Jansenc$$$ enddo 496*59599516SKenneth E. Jansenc$$$ 497*59599516SKenneth E. Jansenc$$$ close (iofile2) 498*59599516SKenneth E. Jansen 499*59599516SKenneth E. Jansen 111 format(1p,3e24.16) 500*59599516SKenneth E. Jansen 112 format(1p, e24.16) 501*59599516SKenneth E. Jansen 113 format(1p,6e24.16) 502*59599516SKenneth E. Jansen 503*59599516SKenneth E. Jansen return 504*59599516SKenneth E. Jansen end 505