1*17860365SKenneth E. Jansenc================================================================ 2*17860365SKenneth E. Jansenc Set jet inlet BCs based on contraction mdot dynamically, 3*17860365SKenneth E. Jansenc called by itrdrv.f 4*17860365SKenneth E. Jansenc =============================================================== 5*17860365SKenneth E. Jansen 6*17860365SKenneth E. Jansen subroutine setBlowing_Duct2(x,BC,y,iTurbWall,istp) 7*17860365SKenneth E. Jansen 8*17860365SKenneth E. Jansen use blowingDuct ! njetinlet, jetinletf 9*17860365SKenneth E. Jansen use timedata ! varts data 10*17860365SKenneth E. Jansen include "common.h" 11*17860365SKenneth E. Jansen include "mpif.h" 12*17860365SKenneth E. Jansen include "auxmpi.h" 13*17860365SKenneth E. Jansen integer istp 14*17860365SKenneth E. Jansen integer i, nn 15*17860365SKenneth E. Jansen real*8 xcoor,ycoor,zcoor 16*17860365SKenneth E. Jansen real*8 BC(nshg,ndofBC) 17*17860365SKenneth E. Jansen real*8 x(nshg,nsd) 18*17860365SKenneth E. Jansen real*8 y(nshg,ndof) 19*17860365SKenneth E. Jansen real*8 yVel, Temp, pres, mdot, rho, Area 20*17860365SKenneth E. Jansen real*8 xminm,xmaxm,zminm,zmaxm,xlm,zlm 21*17860365SKenneth E. Jansen real rx,rz 22*17860365SKenneth E. Jansen integer isfID 23*17860365SKenneth E. Jansen real*8 contraPres, contraTemp, contraXVel, contraRho, 24*17860365SKenneth E. Jansen & contraArea, contraMdot 25*17860365SKenneth E. Jansen real*8 blowingPres,blowingTemp,blowingRho,blowingArea, 26*17860365SKenneth E. Jansen & MdotRatio,blowingMdot,blowVel 27*17860365SKenneth E. Jansen integer contraProbeNo,blowingProbeNo 28*17860365SKenneth E. Jansen integer iTurbWall(nshg) 29*17860365SKenneth E. Jansen 30*17860365SKenneth E. Jansenc--- The following operations must be fulfilled on each proces because even if 31*17860365SKenneth E. Jansenc--- there is no jet mouth on that process, it can be the host process that contains 32*17860365SKenneth E. Jansenc--- all the varts data 33*17860365SKenneth E. Jansen 34*17860365SKenneth E. Jansen if(myrank.eq.0)then ! only rank0 process can acess all varts data 35*17860365SKenneth E. Jansen contraProbeNo=1 ! in xyzts.dat the FIRST probe is at contraction inlet 36*17860365SKenneth E. Jansen blowingProbeNo=2 37*17860365SKenneth E. Jansen contraArea=1.17475**2 ! meter^2 38*17860365SKenneth E. Jansen blowingArea=0.00237064 !meter^2 39*17860365SKenneth E. Jansen 40*17860365SKenneth E. Jansen contraPres=varts(contraProbeNo,1) 41*17860365SKenneth E. Jansen contraTemp=varts(contraProbeNo,5) 42*17860365SKenneth E. Jansen contraXVel=varts(contraProbeNo,2) 43*17860365SKenneth E. Jansen contraRho =contraPres/(287*contraTemp) 44*17860365SKenneth E. Jansen contraMdot=contraRho*contraArea*contraXVel !kg/s 45*17860365SKenneth E. Jansen 46*17860365SKenneth E. Jansen blowingPres=varts(blowingProbeNo,1) 47*17860365SKenneth E. Jansen blowingTemp=varts(blowingProbeNo,5) 48*17860365SKenneth E. Jansen blowingRho = blowingPres/(287*blowingTemp) 49*17860365SKenneth E. Jansen 50*17860365SKenneth E. Jansen MdotRatio = (BlowingIniMdotDuct) + 51*17860365SKenneth E. Jansen & real(istp-1)/real(nBlowingStepsDuct-1) 52*17860365SKenneth E. Jansen & *(BlowingFnlMdotDuct-BlowingIniMdotDuct) 53*17860365SKenneth E. Jansen 54*17860365SKenneth E. Jansen blowingMdot= (MdotRatio/100.0)*contraMdot ! The absolute value of mdot 55*17860365SKenneth E. Jansen blowingVel = blowingMdot/(blowingArea*blowingRho) 56*17860365SKenneth E. Jansen write(*,*)'Blowing Velocity:', blowingVel 57*17860365SKenneth E. Jansen endif 58*17860365SKenneth E. Jansen 59*17860365SKenneth E. Jansen call MPI_BARRIER(MPI_COMM_WORLD,ierr) 60*17860365SKenneth E. Jansen call MPI_BCAST(blowingVel,1,MPI_REAL8,master, 61*17860365SKenneth E. Jansen & MPI_COMM_WORLD,ierr) 62*17860365SKenneth E. Jansen call MPI_BARRIER(MPI_COMM_WORLD,ierr) 63*17860365SKenneth E. Jansen 64*17860365SKenneth E. Jansen 65*17860365SKenneth E. Jansenc--- Only if current process contains jet inlet nodes 66*17860365SKenneth E. Jansen if(njetinlet .gt. 0)then 67*17860365SKenneth E. Jansen do i=1,njetinlet 68*17860365SKenneth E. Jansen nn=jetinletf(i) 69*17860365SKenneth E. Jansen if(iTurbWall(nn).eq.0)then 70*17860365SKenneth E. Jansenc xcoor=x(nn,1) 71*17860365SKenneth E. Jansenc ycoor=x(nn,2) 72*17860365SKenneth E. Jansenc zcoor=x(nn,3) 73*17860365SKenneth E. Jansenc rx=(xcoor-xminm)*(xmaxm-xcoor)/(xlm/2)**2 74*17860365SKenneth E. Jansenc rz=(zcoor-zminm)*(zmaxm-zcoor)/(zlm/2)**2 75*17860365SKenneth E. Jansenc rx=max(0.0,rx) 76*17860365SKenneth E. Jansenc rz=max(0.0,rz) 77*17860365SKenneth E. Jansenc pres = y(nn,4) ! the quantity updating each time step 78*17860365SKenneth E. Jansenc Temp = y(nn,5) 79*17860365SKenneth E. Jansenc rho = pres/(287.0*Temp) 80*17860365SKenneth E. Jansenc yVel = (blowingMdot/rho/Area)*rx*rz 81*17860365SKenneth E. Jansenc............................ 82*17860365SKenneth E. Jansen BC(nn,2) = 317 ! Temp 83*17860365SKenneth E. Jansen BC(nn,4) = blowingVel ! set and scale y velocity 84*17860365SKenneth E. Jansen BC(nn,3) = 0 85*17860365SKenneth E. Jansen BC(nn,5) = 0 86*17860365SKenneth E. Jansen BC(nn,7) = 1.825e-5 87*17860365SKenneth E. Jansen endif 88*17860365SKenneth E. Jansen enddo 89*17860365SKenneth E. Jansen 90*17860365SKenneth E. Jansen endif ! only if current process contains jet inlet nodes 91*17860365SKenneth E. Jansen 92*17860365SKenneth E. Jansen return 93*17860365SKenneth E. Jansen end 94*17860365SKenneth E. Jansen 95