refactoring, extract subroutine ALLOCATE_ARRAYS and minor revision conditionals

This commit is contained in:
ignis 2019-04-10 16:30:07 +09:00
parent 799676f897
commit 9ca8192e32

View file

@ -3,7 +3,7 @@
IMPLICIT NONE
PRIVATE
INTEGER :: nxp,nyp,nzp,startnum,endnum,skipnum,ncyc
INTEGER :: syp,eyp,startsw,twod
INTEGER :: syp,eyp,twod
INTEGER :: omitnum,countnum
INTEGER :: shiftnum ! hybrid
INTEGER :: num_, dummyu_ ! hybrid
@ -46,32 +46,26 @@
CONTAINS
SUBROUTINE main
INTEGER :: fread,i,postsw
INTEGER :: fread,i
LOGICAL :: omitsw
CALL READ_INTRO
CALL PREPARE_SAVE
CALL PRINT_BANNER
! OPEN (210,FILE="ui.dat")
! WRITE(210,*) 'VARIABLES = "x","y","z","ui"'
countnum=0
DO fread=startnum,endnum,skipnum
fileloop: DO fread=startnum,endnum,skipnum
postsw=1
IF (omitnum.gt.0) THEN
DO i=1,omitnum
omitsw=.false.
filter_omit: DO i=1,omitnum
IF (fread.ge.omit_t(i,1).and.fread.le.omit_t(i,2)) THEN
postsw=-1*i
omitsw=.true.
WRITE(*,'(a47,i7,a4,i5,a3,i5)') ' Current fullsavenum = ', fread, ' || ', (fread-startnum+1), ' / ', (endnum-startnum+1)
WRITE(*,'(a12,i6,a20,i6)') ' Skip. ', omit_t(i,1), ' <= fullsavenum <= ', omit_t(i,2)
ENDIF
ENDDO
ENDIF
ENDDO filter_omit
IF (postsw.lt.0) THEN
WRITE(*,'(a47,i7,a4,i5,a3,i5)') ' Current fullsavenum = ',fread,&
' || ',(fread-startnum+1),' / ',(endnum-startnum+1)
WRITE(*,'(a12,i6,a20,i6)') &
' Skip. ',omit_t((-1*postsw),1),' <= fullsavenum <= ',omit_t((-1*postsw),2)
ELSEIF (postsw.eq.1) THEN
IF ( .not. omitsw ) THEN
countnum=countnum+1
CALL READ_FILE(fread)
@ -84,7 +78,7 @@
CALL SAVE_SUM ! Total sum
ENDIF
ENDDO
ENDDO fileloop
write(*,*) 'After 1st loop'
CALL AVERAGING
@ -169,30 +163,17 @@
END SUBROUTINE READ_INTRO
SUBROUTINE PREPARE_SAVE
SUBROUTINE PRINT_BANNER
WRITE(*,*) ' This program, x-edge-cold-bc-5-hybrid, is written by D. Kim, 2018'
WRITE(*,*) ' It is to study the statistics of the flame parameters at the leading edge'
WRITE(*,*) ' in turbulent premixed flames.'
WRITE(*,'(a40,i5,a11,i5,a1)') ' Postprocess will be done from "FORT.',startnum,'" to "FORT.',endnum,'"'
END SUBROUTINE PRINT_BANNER
startsw=0.
SUBROUTINE ALLOCATE_ARRAYS
END SUBROUTINE PREPARE_SAVE
INTEGER :: ierr
SUBROUTINE READ_FILE(num)
INTEGER, INTENT(IN) :: num
INTEGER :: ierr,i,j,k
REAL, DIMENSION(2) :: tmpr
REAL :: tmp1,tmp2
REAL :: dt,dummyu
OPEN(num,FORM='unformatted',STATUS='unknown')
READ (num) tnow,nxp,nyp,nzp,tmp1,tmp2
IF (startsw.eq.0) THEN
! syp=1
! eyp=nyp
! Arrays for local values
ALLOCATE(m_v(6,nxp,nyp,nzp),STAT=ierr) ; m_v=0. ! Main variables
ALLOCATE(m_v_new(nxp,nyp,nzp,2),STAT=ierr) ; m_v_new=0. ! Main variables
!ALLOCATE(G_C(3,nxp,nyp,nzp),STAT=ierr) ; G_C=0.
@ -249,7 +230,7 @@
ALLOCATE(RMS_b(4,nxp),STAT=ierr) ; RMS_b=0.
ALLOCATE(RMS_u(4,nxp),STAT=ierr) ; RMS_u=0.
ALLOCATE(COV(4,nxp),STAT=ierr) ; COV=0.
ALLOCATE(favg_ndata(nxp),STAT=ierr) ; favg_ndata=0.
ALLOCATE(RMS_u_2(4,nxp),STAT=ierr) ; RMS_u_2=0.
ALLOCATE(RMS_b_2(4,nxp),STAT=ierr) ; RMS_b_2=0.
@ -271,36 +252,49 @@
hyp=l_0*pi/REAL(nyp-1) ! kwon
hxp=hyp; hzp=hyp
CALL ludcmp(nxp,nyp,nzp,1,0,0) ! 1,1,0
WRITE(*,'(a6,i3,a8,i3,a8,i3)') ' NX = ',nxp,' / NY = ',nyp,' / NZ = ',nzp
WRITE(*,*) ' Preparing memory space for COMPACT SCHEME'
CALL ludcmp(nxp,nyp,nzp,1,0,0) ! 1,1,0
WRITE(*,'(a22,i3,a3,i3,a4,i3)') ' Grid number range : ',syp,' ~ ',eyp,' of ',nyp
WRITE(*,*)
twod=0
IF (nzp.eq.1) twod=1
startsw=1
END SUBROUTINE ALLOCATE_ARRAYS
SUBROUTINE READ_FILE(num)
INTEGER, INTENT(IN) :: num
INTEGER :: ierr,i,j,k
REAL, DIMENSION(2) :: tmpr
REAL :: tmp1,tmp2
REAL :: dt,dummyu
OPEN(num,FORM='unformatted',STATUS='unknown')
READ (num) tnow,nxp,nyp,nzp,tmp1,tmp2
IF (nzp.eq.1) THEN
twod=1
ELSE
twod=0
END IF
IF (.not. ALLOCATED(m_v)) THEN
CALL ALLOCATE_ARRAYS
ENDIF
!READ (num) ncyc,tmpr(1:2)
READ (num) ncyc,dt,dummyu
READ (num) tmpr(1:2)
READ (num) tmpr(1:2)
READ (num) tmpr(1:2)
WRITE(*,'(a40,f8.3,a2,i7,a2,i5,a4,i5,a3,i5)') ' Current time / NCYC / fullsavenum = ',tnow,&
WRITE(*,'(a40,f8.3,a2,i7,a2,i5,a4,i5,a3,i5)') ' Current time / NCYC / fullsavenum = ',tnow,&
' /',ncyc,' /',num,' || ',(num-startnum+1),' / ',(endnum-startnum+1)
WRITE(*,*) ' Reading current data file and processing'
m_v(1,:,:,:)=1. ! density is fixed at 1.
num_=num
IF(num.le.shiftnum) THEN
IF(num.le.shiftnum) THEN
WRITE(*,*) ' with an old fort data from Nueman-0X'
READ (num) m_v(2,:,:,:),m_v(3,:,:,:),m_v(4,:,:,:),m_v(5:6,:,:,:)
ELSE