every process call prepare_fdm and fdm_exe, do not work correctly
This commit is contained in:
parent
4f7bb89461
commit
804698f717
2 changed files with 71 additions and 94 deletions
147
m_fdm_calc.f90
147
m_fdm_calc.f90
|
|
@ -15,10 +15,12 @@ module m_fdm_calc
|
|||
integer :: fdmcyc,fdmsavecount
|
||||
real*8 :: fdmtime,fdmdt
|
||||
real*8 :: sumc,oldsumc,time_int,sum_wrate
|
||||
real*8 :: sumc1,sum_wrate1
|
||||
real*8 :: visdt, convdt
|
||||
integer :: fdmstep
|
||||
real*8 :: coe,tt1,tt2,tt3,tt4
|
||||
real*8 :: umax,umin,vmax,vmin,wmax,wmin ! J. Kwon
|
||||
real*8, dimension(3) :: velmax, velmin, velmax1, velmin1
|
||||
|
||||
!===========================================================================
|
||||
!===========================================================================
|
||||
|
|
@ -48,23 +50,26 @@ module m_fdm_calc
|
|||
integer :: i,j,ii,k
|
||||
real*8 :: fl_location,wrate,yr,c
|
||||
real*8 :: tar_sumc
|
||||
|
||||
allocate(u_(nx,ny,nz_all))
|
||||
allocate(v_(nx,ny,nz_all))
|
||||
allocate(w_(nx,ny,nz_all))
|
||||
|
||||
u_=0.0
|
||||
v_=0.0
|
||||
w_=0.0
|
||||
real*8 :: yy(nx)
|
||||
|
||||
if (fdm_sw .eq. 0) then
|
||||
return
|
||||
endif
|
||||
|
||||
allocate(u_(nx,ny,nz))
|
||||
allocate(v_(nx,ny,nz))
|
||||
allocate(w_(nx,ny,nz))
|
||||
|
||||
u_=0.0
|
||||
v_=0.0
|
||||
w_=0.0
|
||||
|
||||
! DQ initializing
|
||||
fdmsavecount=1 !FDM save count
|
||||
sum_wrate=0.
|
||||
sum_wrate1=0.
|
||||
sumc=0. !for adjusting mean velocity
|
||||
sumc1=0. !for adjusting mean velocity
|
||||
oldsumc=0.
|
||||
time_int=0.
|
||||
visdt=9999.
|
||||
|
|
@ -73,9 +78,9 @@ module m_fdm_calc
|
|||
fdmtime=0.
|
||||
fullsavenum=1000 !full save file
|
||||
|
||||
allocate(y1(2,nx,ny,nz_all))
|
||||
allocate(y2(2,nx,ny,nz_all))
|
||||
allocate(yf(2,nx,ny,nz_all))
|
||||
allocate(y1(2,nx,ny,nz))
|
||||
allocate(y2(2,nx,ny,nz))
|
||||
allocate(yf(2,nx,ny,nz))
|
||||
|
||||
y1=0.0
|
||||
y2=0.0
|
||||
|
|
@ -90,20 +95,24 @@ module m_fdm_calc
|
|||
!FDM normal start==================================
|
||||
if (restartnum==0) then
|
||||
|
||||
if (myid.eq.master) then
|
||||
OPEN(305,FILE='sfield.bin',form='unformatted',status='unknown')
|
||||
DO i=1,nx
|
||||
READ (305) y1(2,i,1,1) ! Yr
|
||||
READ (305) yy(i) ! Yr
|
||||
ENDDO
|
||||
CLOSE (305)
|
||||
end if
|
||||
|
||||
in_yr=y1(2,1,1,1) ! inlet_Yr
|
||||
out_yr=y1(2,nx,1,1) ! outlet_Yr
|
||||
call MPI_BCAST(yy, nx, MPI_REAL8, 0, MPI_COMM_TASK, mpi_err)
|
||||
|
||||
in_yr=yy(1) ! inlet_Yr
|
||||
out_yr=yy(nx) ! outlet_Yr
|
||||
|
||||
do i=1,ny
|
||||
do j=1,nz_all
|
||||
do j=1,nz
|
||||
do ii=1,nx
|
||||
y1(1,ii,i,j)=1. ! rho initializing
|
||||
y1(2,ii,i,j)=y1(2,ii,1,1) ! Yr initializing
|
||||
y1(2,ii,i,j)=yy(ii) ! Yr initializing
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
|
|
@ -111,7 +120,7 @@ module m_fdm_calc
|
|||
|
||||
! flame location setup
|
||||
sum_wrate=0.; sumc=0.
|
||||
DO ii=1,nz_all
|
||||
DO ii=1,nz
|
||||
DO j=1,ny
|
||||
DO i=1,nx
|
||||
yr=y1(2,i,j,ii)/y1(1,i,j,ii)
|
||||
|
|
@ -130,19 +139,22 @@ module m_fdm_calc
|
|||
ENDDO
|
||||
ENDDO
|
||||
|
||||
sum_wrate=sum_wrate/(hy*hy*ny*nz_all)
|
||||
write(*,633) sum_wrate
|
||||
sum_wrate1=sum_wrate/(hy*hy*ny*nz_all)
|
||||
CALL MPI_ALLREDUCE(sum_wrate1,sum_wrate,1,MPI_REAL8,MPI_SUM,MPI_COMM_TASK,mpi_err)
|
||||
if (myid.eq.0) write(*,633) sum_wrate
|
||||
|
||||
fl_location=(hx*(nx-1.))*(1.-(sumc/(nx*ny*nz_all)))
|
||||
sumc=sumc*(hx*hy*hy)/(hy*(ny-1.)*hy*(ny-1.))
|
||||
sumc1=sumc*(hx*hy*hy)/(hy*(ny-1.)*hy*(ny-1.))
|
||||
CALL MPI_ALLREDUCE(sumc1,sumc,1,MPI_REAL8,MPI_SUM,MPI_COMM_TASK,mpi_err)
|
||||
oldsumc=sumc
|
||||
write(*,634) fl_location/(REAL(nx-1)*hx)*100.
|
||||
if (myid.eq.0) write(*,634) fl_location/(REAL(nx-1)*hx)*100.
|
||||
|
||||
633 format (' ** Consumption Speed, Sc = ',f7.4)
|
||||
634 format (' ** Flame Location = ',f7.3, ' % point of x-domain.')
|
||||
|
||||
! Restart setup ================================================================
|
||||
else
|
||||
return
|
||||
write (6,*) '********************************************************'
|
||||
write (6,*) ' FDM field is being initialized for restarting.'
|
||||
write (6,457) restartnum
|
||||
|
|
@ -199,11 +211,10 @@ module m_fdm_calc
|
|||
real*8 :: uvel,vvel,wvel ! J. Kwon
|
||||
|
||||
|
||||
return
|
||||
|
||||
fdmcyc=itime
|
||||
! Mean velocty setup
|
||||
do k=1,nz_all
|
||||
do k=1,nz
|
||||
do i=1,nx
|
||||
do j=1,ny
|
||||
u_(i,j,k)=u_(i,j,k)+dummyu_
|
||||
|
|
@ -211,31 +222,34 @@ module m_fdm_calc
|
|||
enddo
|
||||
enddo
|
||||
|
||||
write(*,*)
|
||||
write(*,*) '=========================================================='
|
||||
if (myid.eq.0) write(*,*)
|
||||
if (myid.eq.0) write(*,*) '=========================================================='
|
||||
|
||||
WRITE(*,932) TIME,DT
|
||||
if (myid.eq.0) WRITE(*,932) TIME,DT
|
||||
932 format(' Spectral results at time = ',f10.5,', dT = ',f7.5)
|
||||
write(*,933) dummyu_
|
||||
if (myid.eq.0) write(*,933) dummyu_
|
||||
933 format(' ** Mean U = ',f7.4)
|
||||
|
||||
!----------------------------------------------------------------
|
||||
! FDM DNS BGN
|
||||
!----------------------------------------------------------------
|
||||
umax=-1.0d300;umin=1.0d300;vmax=-1.0d300;vmin=1.0d300;wmax=-1.0d300;wmin=1.0d300
|
||||
velmax1(1)=maxval(u_)
|
||||
velmin1(1)=minval(u_)
|
||||
velmax1(2)=maxval(v_)
|
||||
velmin1(2)=minval(v_)
|
||||
velmax1(3)=maxval(w_)
|
||||
velmin1(3)=minval(w_)
|
||||
|
||||
do k=1,nz_all
|
||||
do j=1,ny
|
||||
do i=1,nx
|
||||
umax=max(umax,u_(i,j,k))
|
||||
umin=min(umin,u_(i,j,k))
|
||||
vmax=max(vmax,v_(i,j,k))
|
||||
vmin=min(vmin,v_(i,j,k))
|
||||
wmax=max(wmax,w_(i,j,k))
|
||||
wmin=min(wmin,w_(i,j,k))
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
! MPI_REDUCE [uvw](max|min)
|
||||
CALL MPI_ALLREDUCE(velmax1,velmax,3,MPI_REAL8,MPI_MAX,MPI_COMM_TASK,mpi_err)
|
||||
CALL MPI_ALLREDUCE(velmin1,velmin,3,MPI_REAL8,MPI_MIN,MPI_COMM_TASK,mpi_err)
|
||||
|
||||
umax=velmax(1)
|
||||
umin=velmin(1)
|
||||
vmax=velmax(2)
|
||||
vmin=velmin(2)
|
||||
wmax=velmax(3)
|
||||
wmin=velmin(3)
|
||||
|
||||
uvel = max(abs(umax), abs(umin))
|
||||
vvel = max(abs(vmax), abs(vmin))
|
||||
|
|
@ -248,14 +262,14 @@ module m_fdm_calc
|
|||
|
||||
fdmdt=min(DT,visdt,convdt)
|
||||
DT=fdmdt
|
||||
call solve(nx,ny,nz_all,u_,v_,w_,y1,y2,yf)
|
||||
call solve(nx,ny,nz,u_,v_,w_,y1,y2,yf)
|
||||
fdmtime=time+fdmdt
|
||||
write(*,'(a30,3x,4f12.7)')' ** DT, visdt, convdt, fdmdt =' , DT,visdt,convdt,fdmdt
|
||||
if (myid.eq.0) write(*,'(a30,3x,4f12.7)')' ** DT, visdt, convdt, fdmdt =' , DT,visdt,convdt,fdmdt
|
||||
|
||||
sumc=0.
|
||||
sum_wrate=0.
|
||||
|
||||
do k=1,nz_all
|
||||
do k=1,nz
|
||||
do j=1,ny
|
||||
do i=1,nx
|
||||
yr=y1(2,i,j,k)/y1(1,i,j,k)
|
||||
|
|
@ -272,21 +286,24 @@ module m_fdm_calc
|
|||
enddo
|
||||
enddo
|
||||
|
||||
|
||||
! Real time results for Sc and flame location.
|
||||
sum_wrate=sum_wrate/(hy*hy*REAL(ny*nz_all))
|
||||
write(*,633) sum_wrate
|
||||
sum_wrate1=sum_wrate/(hy*hy*REAL(ny*nz_all))
|
||||
CALL MPI_ALLREDUCE(sum_wrate1,sum_wrate,1,MPI_REAL8,MPI_SUM,MPI_COMM_TASK,mpi_err)
|
||||
if (myid.eq.0) write(*,633) sum_wrate
|
||||
633 format (' ** Consumption Speed, Sc = ',f7.4)
|
||||
|
||||
fl_location=(hx*REAL(nx-1))*(1.-(sumc/(REAL(nx*ny*nz_all))))
|
||||
sumc=sumc*(hx*hy*hy)/(hy*(REAL(ny)-1.)*hy*(REAL(ny)-1.))
|
||||
write(*,634) fl_location/(REAL(nx-1)*hx)*100.
|
||||
sumc1=sumc*(hx*hy*hy)/(hy*(REAL(ny)-1.)*hy*(REAL(ny)-1.))
|
||||
CALL MPI_ALLREDUCE(sumc1,sumc,1,MPI_REAL8,MPI_SUM,MPI_COMM_TASK,mpi_err)
|
||||
if (myid.eq.0) write(*,634) fl_location/(REAL(nx-1)*hx)*100.
|
||||
634 format (' ** Flame Location = ',f7.3, ' % point of x-domain.')
|
||||
|
||||
|
||||
write(St_data,'(f10.5,10e25.15)')fdmtime,dummyu_,sum_wrate,fl_location/(REAL(nx-1)*hx)*100.
|
||||
if (myid.eq.0) write(St_data,'(f10.5,10e25.15)')fdmtime,dummyu_,sum_wrate,fl_location/(REAL(nx-1)*hx)*100.
|
||||
|
||||
! Control the inflow mean velocity, dummyu_
|
||||
write(*,'(a20,2f12.8)') ' ** oldsumc, sumc = ',oldsumc,sumc
|
||||
if (myid.eq.0) write(*,'(a20,2f12.8)') ' ** oldsumc, sumc = ',oldsumc,sumc
|
||||
if(swadtv.ne.0.and.mod((fdmcyc+1),swadtv).eq.0) then
|
||||
time_int=fdmtime-time_int
|
||||
delu=(sumc-oldsumc)/time_int
|
||||
|
|
@ -300,11 +317,11 @@ module m_fdm_calc
|
|||
! FDM DNS END
|
||||
!----------------------------------------------------------------------------
|
||||
|
||||
write(*,*) 'Number of whole calculation = ',fdmcyc
|
||||
write(*,*) '=========================================================='
|
||||
write(*,*)
|
||||
if (myid.eq.0) write(*,*) 'Number of whole calculation = ',fdmcyc
|
||||
if (myid.eq.0) write(*,*) '=========================================================='
|
||||
if (myid.eq.0) write(*,*)
|
||||
|
||||
call write_vel_max ( umax,vmax,wmax,umin,vmin,wmin )
|
||||
if (myid.eq.0) call write_vel_max ( umax,vmax,wmax,umin,vmin,wmin )
|
||||
|
||||
return
|
||||
|
||||
|
|
@ -381,30 +398,6 @@ module m_fdm_calc
|
|||
ENDDO
|
||||
ENDDO
|
||||
|
||||
!! z-direction
|
||||
DO j=1,yy
|
||||
DO i=1,xx
|
||||
DO k=1,zz
|
||||
uz(1,k)=r1_(1,i,j,k) ! 1:rho
|
||||
uz(2,k)=r1_(2,i,j,k)/r1_(1,i,j,k) ! 2:Y
|
||||
uz(3,k)=uz(1,k)*ww_(i,j,k) ! 3:rho*w
|
||||
uz(4,k)=uz(3,k)*uz(2,k) ! 4:rho*w*Y
|
||||
ENDDO
|
||||
|
||||
CALL dfp(zz,hy,uz(1:4,:),duz(1:4,:),4,3)
|
||||
CALL d2fp(zz,hy,uz(2,:),d2uz(:),1,3)
|
||||
|
||||
DO k=1,zz
|
||||
! -( d(rho*w)/dz )
|
||||
f_(1,i,j,k)=f_(1,i,j,k)-duz(3,k) ! continuity
|
||||
|
||||
! -( d(rho*w*Yr)/dz ) + d(rho*D* d(Yr)/dz)/dz
|
||||
! = -( d(rho*w*Yr)/dz )
|
||||
! + D* (rho* d2(Yr)/dz2 + d(rho)/dz * d(Yr)/dz )
|
||||
f_(2,i,j,k)=f_(2,i,j,k)-duz(4,k) + diff*(uz(1,k)*d2uz(k)+duz(1,k)*duz(2,k)) ! species conserv.
|
||||
ENDDO
|
||||
ENDDO
|
||||
ENDDO
|
||||
|
||||
! Boundary condition
|
||||
DO k=1,zz
|
||||
|
|
|
|||
18
main.f90
18
main.f90
|
|
@ -67,10 +67,7 @@ program x_code
|
|||
! Initializing the LES stuff
|
||||
if (les) call m_les_begin
|
||||
|
||||
if (task.eq.'hydro' .and. myid.eq.master) then
|
||||
call prepare_fdm
|
||||
end if
|
||||
call MPI_BARRIER(MPI_COMM_TASK, mpi_err)
|
||||
call prepare_fdm
|
||||
|
||||
call stat_main
|
||||
|
||||
|
|
@ -134,20 +131,7 @@ program x_code
|
|||
|
||||
if (fdm_sw.ne.0) then ! Reacting
|
||||
!call gather_4
|
||||
if (myid.eq.master) then
|
||||
call fdm_exe
|
||||
do id_to=1,numprocs-1
|
||||
call MPI_Isend (dummy, 1, MPI_REAL, id_to, 0, MPI_COMM_TASK, mpi_request, mpi_err)
|
||||
end do
|
||||
else
|
||||
call MPI_Irecv (dummy, 1, MPI_REAL, master, 0, MPI_COMM_TASK, mpi_request, mpi_err)
|
||||
do
|
||||
call MPI_Test(mpi_request, flag, mpi_status, mpi_err)
|
||||
if (flag) exit
|
||||
call SLEEPQQ (200)
|
||||
end do
|
||||
end if
|
||||
call MPI_BARRIER(MPI_COMM_TASK, mpi_err)
|
||||
endif
|
||||
|
||||
! RHS for scalars
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue