xref: /phasta/phSolver/compressible/setBlowing_Duct2.f (revision 712d3df0b59ebebaaeaea358162c8d2c043c6e08)
117860365SKenneth E. Jansenc================================================================
217860365SKenneth E. Jansenc Set jet inlet BCs based on contraction mdot dynamically,
317860365SKenneth E. Jansenc called by itrdrv.f
417860365SKenneth E. Jansenc ===============================================================
517860365SKenneth E. Jansen
617860365SKenneth E. Jansen        subroutine setBlowing_Duct2(x,BC,y,iTurbWall,istp)
717860365SKenneth E. Jansen
817860365SKenneth E. Jansen        use blowingDuct ! njetinlet, jetinletf
9*0d32f9a8SKenneth E. Jansen        use timedataC ! varts data
1017860365SKenneth E. Jansen        include "common.h"
1117860365SKenneth E. Jansen        include "mpif.h"
1217860365SKenneth E. Jansen        include "auxmpi.h"
1317860365SKenneth E. Jansen        integer istp
1417860365SKenneth E. Jansen        integer i, nn
1517860365SKenneth E. Jansen        real*8 xcoor,ycoor,zcoor
1617860365SKenneth E. Jansen        real*8 BC(nshg,ndofBC)
1717860365SKenneth E. Jansen        real*8 x(nshg,nsd)
1817860365SKenneth E. Jansen        real*8 y(nshg,ndof)
1917860365SKenneth E. Jansen        real*8 yVel, Temp, pres, mdot, rho, Area
2017860365SKenneth E. Jansen        real*8 xminm,xmaxm,zminm,zmaxm,xlm,zlm
2117860365SKenneth E. Jansen        real rx,rz
2217860365SKenneth E. Jansen        integer isfID
2317860365SKenneth E. Jansen        real*8 contraPres, contraTemp, contraXVel, contraRho,
2417860365SKenneth E. Jansen     &         contraArea, contraMdot
2517860365SKenneth E. Jansen        real*8 blowingPres,blowingTemp,blowingRho,blowingArea,
2617860365SKenneth E. Jansen     &         MdotRatio,blowingMdot,blowVel
2717860365SKenneth E. Jansen        integer contraProbeNo,blowingProbeNo
2817860365SKenneth E. Jansen        integer iTurbWall(nshg)
2917860365SKenneth E. Jansen
3017860365SKenneth E. Jansenc--- The following operations must be fulfilled on each proces because even if
3117860365SKenneth E. Jansenc--- there is no jet mouth on that process, it can be the host process that contains
3217860365SKenneth E. Jansenc--- all the varts data
3317860365SKenneth E. Jansen
3417860365SKenneth E. Jansen        if(myrank.eq.0)then ! only rank0 process can acess all varts data
3517860365SKenneth E. Jansen          contraProbeNo=1 ! in xyzts.dat the FIRST probe is at contraction inlet
3617860365SKenneth E. Jansen          blowingProbeNo=2
3717860365SKenneth E. Jansen          contraArea=1.17475**2 ! meter^2
3817860365SKenneth E. Jansen          blowingArea=0.00237064  !meter^2
3917860365SKenneth E. Jansen
4017860365SKenneth E. Jansen          contraPres=varts(contraProbeNo,1)
4117860365SKenneth E. Jansen          contraTemp=varts(contraProbeNo,5)
4217860365SKenneth E. Jansen          contraXVel=varts(contraProbeNo,2)
4317860365SKenneth E. Jansen          contraRho =contraPres/(287*contraTemp)
4417860365SKenneth E. Jansen          contraMdot=contraRho*contraArea*contraXVel !kg/s
4517860365SKenneth E. Jansen
4617860365SKenneth E. Jansen          blowingPres=varts(blowingProbeNo,1)
4717860365SKenneth E. Jansen          blowingTemp=varts(blowingProbeNo,5)
4817860365SKenneth E. Jansen          blowingRho = blowingPres/(287*blowingTemp)
4917860365SKenneth E. Jansen
5017860365SKenneth E. Jansen          MdotRatio =  (BlowingIniMdotDuct) +
5117860365SKenneth E. Jansen     &   real(istp-1)/real(nBlowingStepsDuct-1)
5217860365SKenneth E. Jansen     &   *(BlowingFnlMdotDuct-BlowingIniMdotDuct)
5317860365SKenneth E. Jansen
5417860365SKenneth E. Jansen          blowingMdot= (MdotRatio/100.0)*contraMdot   ! The absolute value of mdot
5517860365SKenneth E. Jansen          blowingVel = blowingMdot/(blowingArea*blowingRho)
5617860365SKenneth E. Jansen          write(*,*)'Blowing Velocity:', blowingVel
5717860365SKenneth E. Jansen        endif
5817860365SKenneth E. Jansen
5917860365SKenneth E. Jansen        call MPI_BARRIER(MPI_COMM_WORLD,ierr)
6017860365SKenneth E. Jansen        call MPI_BCAST(blowingVel,1,MPI_REAL8,master,
6117860365SKenneth E. Jansen     &                 MPI_COMM_WORLD,ierr)
6217860365SKenneth E. Jansen        call MPI_BARRIER(MPI_COMM_WORLD,ierr)
6317860365SKenneth E. Jansen
6417860365SKenneth E. Jansen
6517860365SKenneth E. Jansenc--- Only if current process contains jet inlet nodes
6617860365SKenneth E. Jansen        if(njetinlet .gt. 0)then
6717860365SKenneth E. Jansen          do i=1,njetinlet
6817860365SKenneth E. Jansen            nn=jetinletf(i)
6917860365SKenneth E. Jansen            if(iTurbWall(nn).eq.0)then
7017860365SKenneth E. Jansenc            xcoor=x(nn,1)
7117860365SKenneth E. Jansenc            ycoor=x(nn,2)
7217860365SKenneth E. Jansenc            zcoor=x(nn,3)
7317860365SKenneth E. Jansenc            rx=(xcoor-xminm)*(xmaxm-xcoor)/(xlm/2)**2
7417860365SKenneth E. Jansenc            rz=(zcoor-zminm)*(zmaxm-zcoor)/(zlm/2)**2
7517860365SKenneth E. Jansenc            rx=max(0.0,rx)
7617860365SKenneth E. Jansenc            rz=max(0.0,rz)
7717860365SKenneth E. Jansenc            pres = y(nn,4) ! the quantity updating each time step
7817860365SKenneth E. Jansenc           Temp = y(nn,5)
7917860365SKenneth E. Jansenc           rho = pres/(287.0*Temp)
8017860365SKenneth E. Jansenc              yVel = (blowingMdot/rho/Area)*rx*rz
8117860365SKenneth E. Jansenc............................
8217860365SKenneth E. Jansen              BC(nn,2) = 317          ! Temp
8317860365SKenneth E. Jansen              BC(nn,4) = blowingVel   ! set and scale y velocity
8417860365SKenneth E. Jansen              BC(nn,3) = 0
8517860365SKenneth E. Jansen              BC(nn,5) = 0
8617860365SKenneth E. Jansen              BC(nn,7) = 1.825e-5
8717860365SKenneth E. Jansen            endif
8817860365SKenneth E. Jansen          enddo
8917860365SKenneth E. Jansen
9017860365SKenneth E. Jansen        endif   ! only if current process contains jet inlet nodes
9117860365SKenneth E. Jansen
9217860365SKenneth E. Jansen        return
9317860365SKenneth E. Jansen        end
9417860365SKenneth E. Jansen
95