xref: /phasta/phSolver/common/proces.f (revision fcc77cc25a25962bc726a1f800ed09df73e616e1)
159599516SKenneth E. Jansen        subroutine proces
259599516SKenneth E. Jansenc
359599516SKenneth E. Jansenc----------------------------------------------------------------------
459599516SKenneth E. Jansenc
559599516SKenneth E. Jansenc This subroutine generates the problem data and calls the solution
659599516SKenneth E. Jansenc  driver.
759599516SKenneth E. Jansenc
859599516SKenneth E. Jansenc
959599516SKenneth E. Jansenc Zdenek Johan, Winter 1991.  (Fortran 90)
1059599516SKenneth E. Jansenc----------------------------------------------------------------------
1159599516SKenneth E. Jansenc
1259599516SKenneth E. Jansen        use readarrays          ! used to access x, iper, ilwork
1359599516SKenneth E. Jansen        use turbsa          ! used to access d2wall
1459599516SKenneth E. Jansen        include "common.h"
1559599516SKenneth E. Jansen        include "mpif.h"
1659599516SKenneth E. Jansenc
1759599516SKenneth E. Jansenc arrays in the following 2 lines are now dimensioned in readnblk
1859599516SKenneth E. Jansenc        dimension x(numnp,nsd)
1959599516SKenneth E. Jansenc        dimension iper(nshg), ilwork(nlwork)
2059599516SKenneth E. Jansenc
2159599516SKenneth E. Jansen        dimension y(nshg,ndof),
2259599516SKenneth E. Jansen     &            iBC(nshg),
2359599516SKenneth E. Jansen     &            BC(nshg,ndofBC),
2459599516SKenneth E. Jansen     &            ac(nshg,ndof)
2559599516SKenneth E. Jansenc
2659599516SKenneth E. Jansenc.... shape function declarations
2759599516SKenneth E. Jansenc
2859599516SKenneth E. Jansen        dimension shp(MAXTOP,maxsh,MAXQPT),
2959599516SKenneth E. Jansen     &            shgl(MAXTOP,nsd,maxsh,MAXQPT),
3059599516SKenneth E. Jansen     &            shpb(MAXTOP,maxsh,MAXQPT),
3159599516SKenneth E. Jansen     &            shglb(MAXTOP,nsd,maxsh,MAXQPT)
3259599516SKenneth E. Jansenc
3359599516SKenneth E. Jansenc  stuff for dynamic model s.w.avg and wall model
3459599516SKenneth E. Jansenc
3559599516SKenneth E. Jansenc        dimension ifath(numnp),    velbar(nfath,nflow),
3659599516SKenneth E. Jansenc     &            nsons(nfath)
3759599516SKenneth E. Jansen
3859599516SKenneth E. Jansen        dimension velbar(nfath,nflow)
3959599516SKenneth E. Jansenc
4059599516SKenneth E. Jansenc stuff to interpolate profiles at inlet
4159599516SKenneth E. Jansenc
4259599516SKenneth E. Jansen        real*8 bcinterp(100,ndof+1),interp_mask(ndof)
4359599516SKenneth E. Jansen        logical exlog
4459599516SKenneth E. Jansen
4559599516SKenneth E. Jansenc        if ((irscale .ge. 0) .and. (myrank.eq.master)) then
4659599516SKenneth E. Jansenc           call setSPEBC(numnp, point2nfath, nsonmax)
4759599516SKenneth E. Jansenc        endif
4859599516SKenneth E. Jansenc
4959599516SKenneth E. Jansenc.... generate the geometry and boundary conditions data
5059599516SKenneth E. Jansenc
5159599516SKenneth E. Jansen        call gendat (y,              ac,             point2x,
5259599516SKenneth E. Jansen     &               iBC,            BC,
5359599516SKenneth E. Jansen     &               point2iper,     point2ilwork,   shp,
5459599516SKenneth E. Jansen     &               shgl,           shpb,           shglb,
5559599516SKenneth E. Jansen     &               point2ifath,    velbar,         point2nsons )
5659599516SKenneth E. Jansen        call setper(nshg)
5759599516SKenneth E. Jansen        call perprep(iBC,point2iper,nshg)
5859599516SKenneth E. Jansen        if (iLES/10 .eq. 1) then
5959599516SKenneth E. Jansen        call keeplhsG ! Allocating space for the mass (Gram) matrix to be
6059599516SKenneth E. Jansen                      ! used for projection filtering and reconstruction
6159599516SKenneth E. Jansen                      ! of the strain rate tensor.
6259599516SKenneth E. Jansen
6359599516SKenneth E. Jansen        call setrls   ! Allocating space for the resolved Leonard stresses
6459599516SKenneth E. Jansenc                         See bardmc.f
6559599516SKenneth E. Jansen        endif
6659599516SKenneth E. Jansenc
6759599516SKenneth E. Jansenc.... time averaged statistics
6859599516SKenneth E. Jansenc
6959599516SKenneth E. Jansen        if (ioform .eq. 2) then
7059599516SKenneth E. Jansen           call initStats(point2x, iBC, point2iper, point2ilwork)
7159599516SKenneth E. Jansen        endif
7259599516SKenneth E. Jansenc
7359599516SKenneth E. Jansenc.... RANS turbulence model
7459599516SKenneth E. Jansenc
7559599516SKenneth E. Jansen        if (iRANS .lt. 0) then
7659599516SKenneth E. Jansen           call initTurb( point2x )
7759599516SKenneth E. Jansen        endif
7859599516SKenneth E. Jansenc
7959599516SKenneth E. Jansenc.... p vs. Q boundary
8059599516SKenneth E. Jansenc
8159599516SKenneth E. Jansen           call initNABI( point2x, shpb )
8259599516SKenneth E. Jansenc
8359599516SKenneth E. Jansenc.... check for execution mode
8459599516SKenneth E. Jansenc
8559599516SKenneth E. Jansen        if (iexec .eq. 0) then
8659599516SKenneth E. Jansen           lstep = 0
8759599516SKenneth E. Jansen           call restar ('out ',  y  ,ac)
8859599516SKenneth E. Jansen           return
8959599516SKenneth E. Jansen        endif
9059599516SKenneth E. Jansenc
9159599516SKenneth E. Jansenc.... initialize AutoSponge
9259599516SKenneth E. Jansenc
9359599516SKenneth E. Jansen        if(matflg(5,1).ge.4) then ! cool case (sponge)
9459599516SKenneth E. Jansen           call initSponge( y,point2x)
9559599516SKenneth E. Jansen        endif
9659599516SKenneth E. Jansenc
9759599516SKenneth E. Jansenc
9859599516SKenneth E. Jansenc.... adjust BC's to interpolate from file
9959599516SKenneth E. Jansenc
10059599516SKenneth E. Jansen
10159599516SKenneth E. Jansen        inquire(file="inlet.dat",exist=exlog)
10259599516SKenneth E. Jansen        if(exlog) then
10359599516SKenneth E. Jansen           open (unit=654,file="inlet.dat",status="old")
10459599516SKenneth E. Jansen           read(654,*) ninterp,ibcmatch,(interp_mask(j),j=1,ndof)
10559599516SKenneth E. Jansen           do i=1,ninterp
10659599516SKenneth E. Jansen              read(654,*) (bcinterp(i,j),j=1,ndof+1) ! distance to wall+
10759599516SKenneth E. Jansen                        ! ndof but note order of BC's
10859599516SKenneth E. Jansen                        ! p,t,u,v,w,scalars. Also note that must be in
10959599516SKenneth E. Jansen                        ! increasing distance from the wall order.
11059599516SKenneth E. Jansen
11159599516SKenneth E. Jansen           enddo
11259599516SKenneth E. Jansen           do i=1,nshg  ! only correct for linears at this time
11359599516SKenneth E. Jansen              if(mod(iBC(i),1024).eq.ibcmatch) then
11459599516SKenneth E. Jansen                 iupper=0
11559599516SKenneth E. Jansen                 do j=2,ninterp
11659599516SKenneth E. Jansen                    if(bcinterp(j,1).gt.d2wall(i)) then !bound found
11759599516SKenneth E. Jansen                       xi=(d2wall(i)-bcinterp(j-1,1))/
11859599516SKenneth E. Jansen     &                    (bcinterp(j,1)-bcinterp(j-1,1))
11959599516SKenneth E. Jansen                       iupper=j
12059599516SKenneth E. Jansen                       exit
12159599516SKenneth E. Jansen                    endif
12259599516SKenneth E. Jansen                 enddo
12359599516SKenneth E. Jansen                 if(iupper.eq.0) then
12459599516SKenneth E. Jansen                    write(*,*) 'failure in finterp, ynint=',d2wall(i)
12559599516SKenneth E. Jansen                    stop
12659599516SKenneth E. Jansen                 endif
12759599516SKenneth E. Jansen                 if(interp_mask(1).ne.zero) then
12859599516SKenneth E. Jansen                    BC(i,1)=(xi*bcinterp(iupper,2)
12959599516SKenneth E. Jansen     &                +(one-xi)*bcinterp(iupper-1,2))*interp_mask(1)
13059599516SKenneth E. Jansen                 endif
13159599516SKenneth E. Jansen                 if(interp_mask(2).ne.zero) then
13259599516SKenneth E. Jansen                    BC(i,2)=(xi*bcinterp(iupper,3)
13359599516SKenneth E. Jansen     &                +(one-xi)*bcinterp(iupper-1,3))*interp_mask(2)
13459599516SKenneth E. Jansen                 endif
13559599516SKenneth E. Jansen                 if(interp_mask(3).ne.zero) then
13659599516SKenneth E. Jansen                    BC(i,3)=(xi*bcinterp(iupper,4)
13759599516SKenneth E. Jansen     &                +(one-xi)*bcinterp(iupper-1,4))*interp_mask(3)
13859599516SKenneth E. Jansen                 endif
13959599516SKenneth E. Jansen                 if(interp_masK(4).ne.zero) then
14059599516SKenneth E. Jansen                    BC(i,4)=(xi*bcinterp(iupper,5)
14159599516SKenneth E. Jansen     &                +(one-xi)*bcinterp(iupper-1,5))*interp_mask(4)
14259599516SKenneth E. Jansen                 endif
14359599516SKenneth E. Jansen                 if(interp_mask(5).ne.zero) then
14459599516SKenneth E. Jansen                    BC(i,5)=(xi*bcinterp(iupper,6)
14559599516SKenneth E. Jansen     &                +(one-xi)*bcinterp(iupper-1,6))*interp_mask(5)
14659599516SKenneth E. Jansen                 endif
14759599516SKenneth E. Jansen                 if(interp_mask(6).ne.zero) then
14859599516SKenneth E. Jansen                    BC(i,7)=(xi*bcinterp(iupper,7)
14959599516SKenneth E. Jansen     &                +(one-xi)*bcinterp(iupper-1,7))*interp_mask(6)
15059599516SKenneth E. Jansen                 endif
15159599516SKenneth E. Jansen                 if(interp_mask(7).ne.zero) then
15259599516SKenneth E. Jansen                    BC(i,8)=(xi*bcinterp(iupper,8)
15359599516SKenneth E. Jansen     &                +(one-xi)*bcinterp(iupper-1,8))*interp_mask(7)
15459599516SKenneth E. Jansen                 endif
15559599516SKenneth E. Jansen              endif
15659599516SKenneth E. Jansen           enddo
15759599516SKenneth E. Jansen        endif
15859599516SKenneth E. Jansenc$$$$$$$$$$$$$$$$$$$$
15959599516SKenneth E. Jansen
16059599516SKenneth E. Jansenc
16159599516SKenneth E. Jansenc
16259599516SKenneth E. Jansenc.... call the semi-discrete predictor multi-corrector iterative driver
16359599516SKenneth E. Jansenc
16459599516SKenneth E. Jansen        call itrdrv (y,              ac,
16559599516SKenneth E. Jansen     &               uold,           point2x,
16659599516SKenneth E. Jansen     &               iBC,            BC,
16759599516SKenneth E. Jansen     &               point2iper,     point2ilwork,   shp,
16859599516SKenneth E. Jansen     &               shgl,           shpb,           shglb,
16959599516SKenneth E. Jansen     &               point2ifath,    velbar,         point2nsons )
17059599516SKenneth E. Jansenc
17159599516SKenneth E. Jansenc.... return
17259599516SKenneth E. Jansenc
17359599516SKenneth E. Jansenc
17459599516SKenneth E. Jansenc.... stop CPU-timer
17559599516SKenneth E. Jansenc
17659599516SKenneth E. JansenCAD        call timer ('End     ')
17759599516SKenneth E. Jansenc
17859599516SKenneth E. Jansenc.... close echo file
17959599516SKenneth E. Jansenc
18059599516SKenneth E. Jansen
18159599516SKenneth E. Jansen!MR CHANGE
18259599516SKenneth E. Jansen      if (numpe > 1) call MPI_BARRIER(MPI_COMM_WORLD, ierr)
18359599516SKenneth E. Jansen      if(myrank.eq.0)  then
18459599516SKenneth E. Jansen          write(*,*) 'process - before closing iecho'
18559599516SKenneth E. Jansen      endif
18659599516SKenneth E. Jansen!MR CHANGE END
18759599516SKenneth E. Jansen
18859599516SKenneth E. Jansen        close (iecho)
18959599516SKenneth E. Jansen
19059599516SKenneth E. Jansen!MR CHANGE
19159599516SKenneth E. Jansen      if (numpe > 1) call MPI_BARRIER(MPI_COMM_WORLD, ierr)
19259599516SKenneth E. Jansen      if(myrank.eq.0)  then
19359599516SKenneth E. Jansen          write(*,*) 'process - after closing iecho'
19459599516SKenneth E. Jansen      endif
19559599516SKenneth E. Jansen!MR CHANGE END
19659599516SKenneth E. Jansen
19759599516SKenneth E. Jansen
19859599516SKenneth E. Jansenc
19959599516SKenneth E. Jansenc.... end of the program
20059599516SKenneth E. Jansenc
20159599516SKenneth E. JansenCAD        write(6,*) 'Life: ', second(0) - ttim(100)
20259599516SKenneth E. Jansen        deallocate(point2iper)
203*fcc77cc2SCameron Smith        if(numpe.gt.1) then
204*fcc77cc2SCameron Smith          call Dctypes(point2ilwork(1))
205*fcc77cc2SCameron Smith          deallocate(point2ilwork)
206*fcc77cc2SCameron Smith        endif
20759599516SKenneth E. Jansen        deallocate(point2x)
20859599516SKenneth E. Jansen
20959599516SKenneth E. Jansen        if((irscale.ge.0).or. ((iLES .lt. 20) .and. (iLES.gt.0))
21059599516SKenneth E. Jansen     &                   .or. (itwmod.gt.0)  ) then ! don't forget same
21159599516SKenneth E. Jansen                                                    ! conditional in
21259599516SKenneth E. Jansen                                                    ! readnblk2.f
21359599516SKenneth E. Jansen           deallocate(point2nsons)
21459599516SKenneth E. Jansen           deallocate(point2ifath)
21559599516SKenneth E. Jansen        endif
21659599516SKenneth E. Jansen        return
21759599516SKenneth E. Jansen        end
21859599516SKenneth E. Jansen
21959599516SKenneth E. Jansen
220