xref: /phasta/phSolver/incompressible/BCprofile.f (revision 8746ab438bbda91291f8cdd62b94f8385f2d26f1)
1*59599516SKenneth E. Jansenc-----------------------------------------------------------------------
2*59599516SKenneth E. Jansen        subroutine BCprofileScale(vbc_prof,BC,yold)
3*59599516SKenneth E. Jansen        use pvsQbi
4*59599516SKenneth E. Jansen        include "common.h"
5*59599516SKenneth E. Jansen        real*8 vbc_prof(nshg,3)
6*59599516SKenneth E. Jansen        real*8 BC(nshg,ndofBC),yold(nshg,ndof)
7*59599516SKenneth E. Jansen        real*8 offphase
8*59599516SKenneth E. Jansen        integer factor
9*59599516SKenneth E. Jansen
10*59599516SKenneth E. Jansen        r_amp =rampmdot(1,1)
11*59599516SKenneth E. Jansen        r_freq=rampmdot(2,1)
12*59599516SKenneth E. Jansen!  Usual sinusoidal in time syn jet is given in the next line.  It assumes that you are NOT changing the time step from previous runs since it computes the
13*59599516SKenneth E. Jansen!  current time in the sin function to be (lstep+1)* Dt where lstep is a running total of all of the runs up to now.  This will be "ok" under the following
14*59599516SKenneth E. Jansen!  assumption:  lstep*dt_current = m * T where m is an integer and T is the period of the jet.  That is because this will evaluate to 2*m*Pi and the sin
15*59599516SKenneth E. Jansen!  that is zero
16*59599516SKenneth E. Jansen
17*59599516SKenneth E. Jansen        if(abs(rampmdot(1,2)) .lt. 1.0e-5) then
18*59599516SKenneth E. Jansen           r_time_factor = r_amp*sin(two*pi*r_freq*(lstep+1)*Delt(1)) ! BC set for next time step - all phases are computed
19*59599516SKenneth E. Jansen        else
20*59599516SKenneth E. Jansen           r_time_factor = rampmdot(1,2)*r_amp   ! read parameter scales Vmax
21*59599516SKenneth E. Jansen        endif
22*59599516SKenneth E. Jansen
23*59599516SKenneth E. Jansen        icount = 0
24*59599516SKenneth E. Jansen        do kk=1,nshg
25*59599516SKenneth E. Jansen          if(ndsurf(kk).eq.18) then ! this means diaphragm for the Cube Test case
26*59599516SKenneth E. Jansen
27*59599516SKenneth E. Jansen            factor = idnint(rampmdot(2,2))
28*59599516SKenneth E. Jansen
29*59599516SKenneth E. Jansen            if(factor == 0) then
30*59599516SKenneth E. Jansen              offphase = 0.d0
31*59599516SKenneth E. Jansen
32*59599516SKenneth E. Jansen            elseif(factor == 1) then
33*59599516SKenneth E. Jansen              offphase = 1.d0
34*59599516SKenneth E. Jansen
35*59599516SKenneth E. Jansen            elseif(factor == 2) then
36*59599516SKenneth E. Jansen              !Start to count from tip. If factor == 2 -> 1, 3, 5, etc
37*59599516SKenneth E. Jansen              if(mod(ndsurf(kk)-1,factor) == 0) then
38*59599516SKenneth E. Jansen                offphase = 1.d0
39*59599516SKenneth E. Jansen              else
40*59599516SKenneth E. Jansen                offphase = 0.d0
41*59599516SKenneth E. Jansen              endif
42*59599516SKenneth E. Jansen
43*59599516SKenneth E. Jansen            elseif(factor == 3) then
44*59599516SKenneth E. Jansen              !Start to count from tip. If factor == 3 -> 2, 5, 8, etc
45*59599516SKenneth E. Jansen              if(mod(ndsurf(kk)+1,factor) == 0) then
46*59599516SKenneth E. Jansen                offphase = 1.d0
47*59599516SKenneth E. Jansen              else
48*59599516SKenneth E. Jansen                offphase = 0.d0
49*59599516SKenneth E. Jansen              endif
50*59599516SKenneth E. Jansen
51*59599516SKenneth E. Jansen            elseif(factor < 0) then
52*59599516SKenneth E. Jansen              !Only one jet blowing. If factor = -5, then jet 5 only
53*59599516SKenneth E. Jansen              !blows
54*59599516SKenneth E. Jansen              if (ndsurf(kk) == -factor) then
55*59599516SKenneth E. Jansen                offphase = 1.d0
56*59599516SKenneth E. Jansen              else
57*59599516SKenneth E. Jansen                offphase = 0.d0
58*59599516SKenneth E. Jansen              endif
59*59599516SKenneth E. Jansen            endif
60*59599516SKenneth E. Jansen
61*59599516SKenneth E. Jansen            BC(kk,3)=r_time_factor*vbc_prof(kk,1)*offphase
62*59599516SKenneth E. Jansen            BC(kk,4)=r_time_factor*vbc_prof(kk,2)*offphase
63*59599516SKenneth E. Jansen            BC(kk,5)=r_time_factor*vbc_prof(kk,3)*offphase
64*59599516SKenneth E. Jansen
65*59599516SKenneth E. Jansen            icount = icount + 1
66*59599516SKenneth E. Jansen
67*59599516SKenneth E. Jansen          endif
68*59599516SKenneth E. Jansen        enddo
69*59599516SKenneth E. Jansen
70*59599516SKenneth E. Jansen!        if(istep.eq.0 .and. icount.ne.0)
71*59599516SKenneth E. Jansen!     &     write(*,*) 'BCprofile count',myrank,icount
72*59599516SKenneth E. Jansen
73*59599516SKenneth E. Jansen        return
74*59599516SKenneth E. Jansen        end
75*59599516SKenneth E. Jansen
76*59599516SKenneth E. Jansenc--------------------------------------------------------------
77*59599516SKenneth E. Jansen        subroutine BCprofileInit(vbc_prof,x)
78*59599516SKenneth E. Jansen
79*59599516SKenneth E. Jansen        use pvsQbi
80*59599516SKenneth E. Jansen        include "common.h"
81*59599516SKenneth E. Jansen        real*8 vbc_prof(nshg,3), x(numnp,nsd)
82*59599516SKenneth E. Jansen        real*8 rcenter(3),rnorml(3)
83*59599516SKenneth E. Jansen
84*59599516SKenneth E. Jansen        open(unit=789, file='bcprofile.dat',status='unknown')
85*59599516SKenneth E. Jansen        do kk=1,nshg
86*59599516SKenneth E. Jansenc.............Factors below are negative for desired blowing direction
87*59599516SKenneth E. Jansen           if(ndsurf(kk).eq.18) then
88*59599516SKenneth E. Jansen             x1=-0.025d0
89*59599516SKenneth E. Jansen             x2=0.025d0
90*59599516SKenneth E. Jansen             z1=-0.01d0
91*59599516SKenneth E. Jansen             z2=0.01d0
92*59599516SKenneth E. Jansen             vbc_prof(kk,1)=0.d0
93*59599516SKenneth E. Jansen             vbc_prof(kk,2)=-1.6*1E7*(x(kk,1)-x1)*(x(kk,1)-x2)*
94*59599516SKenneth E. Jansen     &                              (x(kk,3)-z1)*(x(kk,3)-z2)
95*59599516SKenneth E. Jansen             vbc_prof(kk,3)=0.d0
96*59599516SKenneth E. Jansen
97*59599516SKenneth E. Jansen             write(789,987) kk,vbc_prof(kk,1),vbc_prof(kk,2),
98*59599516SKenneth E. Jansen     &                          vbc_prof(kk,3)
99*59599516SKenneth E. Jansen
100*59599516SKenneth E. Jansen           else
101*59599516SKenneth E. Jansen              vbc_prof(kk,:)=zero
102*59599516SKenneth E. Jansen           endif
103*59599516SKenneth E. Jansen
104*59599516SKenneth E. Jansen        enddo
105*59599516SKenneth E. Jansen        close(789)
106*59599516SKenneth E. Jansen987     format(i6,3(2x,e14.7))
107*59599516SKenneth E. Jansen
108*59599516SKenneth E. Jansen        return
109*59599516SKenneth E. Jansen        end
110