read to new array

This commit is contained in:
ignis 2019-04-13 03:30:09 +09:00
parent 7a060505f3
commit e337b9aa6b
2 changed files with 151 additions and 104 deletions

View file

@ -44,8 +44,13 @@ end function to_omit
subroutine read_intro
character(LEN=10) :: cdum
integer :: ierr,i
integer :: first_file
real*8 :: tmp1, tmp2, tmp3
open (100, FILE='post-edge-cold-bc-hybrid-intro')
open (101, FILE='otape')
@ -107,6 +112,28 @@ subroutine read_intro
close (100)
close (101)
first_file = startnum
fileloop: DO i=startnum,endnum,skipnum
IF ( .not. to_omit(i) ) THEN
first_file = i
exit fileloop
ENDIF
ENDDO fileloop
OPEN(first_file,FORM='unformatted',STATUS='unknown')
READ(first_file) tmp1,nxp,nyp,nzp,tmp2,tmp3
CLOSE(first_file)
end subroutine read_intro
end module m_parameters

View file

@ -28,6 +28,10 @@
REAL, DIMENSION(:,:,:), ALLOCATABLE :: c,Wc,y
REAL, DIMENSION(:,:,:), ALLOCATABLE :: c_dot,c_dot_g,c_g,FSD_dot
REAL, DIMENSION(:,:,:), ALLOCATABLE :: u,v,w
REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: old_scalar, new_scalar
REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: m_v,NV,G_C,sd,u_dot,G_V,G_FSD,ub_dot,uu_dot
!REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: G_vn,G_sd,G_Y !G_Y is added for edge-cold-bc-3
REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: m_v_new
@ -43,12 +47,13 @@
CALL READ_INTRO
CALL ALLOCATE_ARRAYS
CALL PRINT_BANNER
countnum=0
firstloop: DO fread=startnum,endnum,skipnum
IF ( to_omit(fread) ) THEN
@ -125,116 +130,21 @@
WRITE(*,'(a40,i5,a11,i5,a1)') ' Postprocess will be done from "FORT.',startnum,'" to "FORT.',endnum,'"'
END SUBROUTINE PRINT_BANNER
SUBROUTINE ALLOCATE_ARRAYS
INTEGER :: ierr
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.
!ALLOCATE(cgm(nxp,nyp,nzp),STAT=ierr) ; cgm=0.
ALLOCATE(NV(3,nxp,nyp,nzp),STAT=ierr) ; NV=0.
!ALLOCATE(sd(7,nxp,nyp,nzp),STAT=ierr) ; sd=0.
ALLOCATE(c(nxp,nyp,nzp),STAT=ierr) ; c=0.
ALLOCATE(Wc(nxp,nyp,nzp),STAT=ierr) ; Wc=0.
ALLOCATE(u_dot(3,nxp,(eyp-syp+1),nzp),STAT=ierr) ; u_dot=0.
ALLOCATE(y(nxp,nyp,nzp),STAT=ierr) ; y=0.
!ALLOCATE(DivN(nxp,nyp,nzp),STAT=ierr) ; DivN=0.
!ALLOCATE(G_V(3,nxp,nyp,nzp),STAT=ierr) ; G_V=0.
!ALLOCATE(Div_V(nxp,nyp,nzp),STAT=ierr) ; Div_V=0
!ALLOCATE(G_FSD(3,nxp,nyp,nzp),STAT=ierr) ; G_FSD=0.
!ALLOCATE(vn(nxp,nyp,nzp),STAT=ierr) ; vn=0.
!ALLOCATE(G_vn(3,nxp,nyp,nzp),STAT=ierr) ;G_vn=0.
!ALLOCATE(G_sd(3,nxp,nyp,nzp),STAT=ierr) ;G_sd=0.
!ALLOCATE(G_Y(3,nxp,nyp,nzp),STAT=ierr) ; G_Y=0.
!ALLOCATE(GN_vn(nxp,nyp,nzp),STAT=ierr) ;GN_vn=0.
!ALLOCATE(GN_sd(nxp,nyp,nzp),STAT=ierr) ;GN_sd=0.
!ALLOCATE(G2N_c(nxp,nyp,nzp),STAT=ierr) ;G2N_c=0.
!ALLOCATE(G2_Y(nxp,nyp,nzp),STAT=ierr) ;G2_Y=0.
!ALLOCATE(d2gc(4,nxp,nyp,nzp),STAT=ierr) ;d2gc=0.
ALLOCATE(ub_dot(3,nxp,(eyp-syp+1),nzp),STAT=ierr) ; ub_dot=0.
ALLOCATE(uu_dot(3,nxp,(eyp-syp+1),nzp),STAT=ierr) ; uu_dot=0.
ALLOCATE(c_dot(nxp,(eyp-syp+1),nzp),STAT=ierr) ; c_dot=0.
ALLOCATE(FSD_dot(nxp,(eyp-syp+1),nzp),STAT=ierr) ; FSD_dot=0. !dhkim
ALLOCATE(ub_dot_g(3,nxp,(eyp-syp+1),nzp),STAT=ierr) ; ub_dot_g=0.
ALLOCATE(uu_dot_g(3,nxp,(eyp-syp+1),nzp),STAT=ierr) ; uu_dot_g=0.
ALLOCATE(c_dot_g(nxp,(eyp-syp+1),nzp),STAT=ierr) ; c_dot_g=0.
ALLOCATE(c_g(nxp,(eyp-syp+1),nzp),STAT=ierr) ; c_g=0.
! Arrays for local sum
ALLOCATE(u_g(3,nxp,(eyp-syp+1),nzp),STAT=ierr) ; u_g=0.
ALLOCATE(u_dot_g(3,nxp,(eyp-syp+1),nzp),STAT=ierr) ; u_dot_g=0.
ALLOCATE(RMS_g(4,nxp),STAT=ierr) ; RMS_g=0.
ALLOCATE(RMS_b_g(4,nxp),STAT=ierr) ; RMS_b_g=0.
ALLOCATE(RMS_u_g(4,nxp),STAT=ierr) ; RMS_u_g=0.
ALLOCATE(CM_b_g(4,nxp,(eyp-syp+1),nzp),STAT=ierr) ; CM_b_g=0.
ALLOCATE(CM_u_g(4,nxp,(eyp-syp+1),nzp),STAT=ierr) ; CM_u_g=0.
ALLOCATE(COV_g(3,nxp),STAT=ierr) ; COV_g=0.
! Arrays for total sum
!ALLOCATE(SMF(23,nxp),STAT=ierr) ; SMF=0.
ALLOCATE(SMF(3,nxp),STAT=ierr) ; SMF=0.
ALLOCATE(SMC(4,nxp),STAT=ierr) ; SMC=0.
!ALLOCATE(FMS(26,nxp),STAT=ierr) ; FMS=0.
!ALLOCATE(KMS(2,nxp),STAT=ierr) ; KMS=0.
ALLOCATE(CM_b(4,nxp),STAT=ierr) ; CM_b=0.
ALLOCATE(CM_u(4,nxp),STAT=ierr) ; CM_u=0.
ALLOCATE(RMS(8,nxp),STAT=ierr) ; RMS=0.
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.
! Arrays for final averages
!ALLOCATE(IRE1(28,nxp),STAT=ierr) ; IRE1=0.
ALLOCATE(IRE1(7,nxp),STAT=ierr) ; IRE1=0.
!ALLOCATE(IRE2(34,nxp),STAT=ierr) ; IRE2=0.
ALLOCATE(IRE3(8,nxp),STAT=ierr) ; IRE3=0.
ALLOCATE(IRE4(8,nxp),STAT=ierr) ; IRE4=0.
ALLOCATE(IRE5(25,nxp),STAT=ierr) ; IRE5=0.
ALLOCATE(IRE6(15,nxp),STAT=ierr) ; IRE6=0.
!ALLOCATE(IRE7(6,nxp),STAT=ierr) ; IRE7=0.
!ALLOCATE(IRE8(26,nxp),STAT=ierr) ; IRE8=0.
!ALLOCATE(IRE9(14,nxp),STAT=ierr) ; IRE9=0.
! hyp=l_0*pi/REAL(nyp)
hyp=l_0*pi/REAL(nyp-1) ! kwon
hxp=hyp; hzp=hyp
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(*,*)
END SUBROUTINE ALLOCATE_ARRAYS
SUBROUTINE READ_FILE(num)
INTEGER, INTENT(IN) :: num
REAL, DIMENSION(2) :: tmpr
INTEGER :: nx, ny, nz
REAL :: tmp1,tmp2
REAL :: dt,dummyu
INTEGER :: ncyc
OPEN(num,FORM='unformatted',STATUS='unknown')
READ (num) tnow,nxp,nyp,nzp,tmp1,tmp2
READ (num) tnow,nx,ny,nz,tmp1,tmp2
IF (nzp.eq.1) THEN
twod=1
ELSE
twod=0
END IF
IF (.not. ALLOCATED(m_v)) THEN
CALL ALLOCATE_ARRAYS
IF ((nx .ne. nxp) .or. (ny .ne. nyp) .or. (nz .ne. nzp)) THEN
WRITE(0,*) "Array dimension mismatch", nx, ny, nz, " != ", nxp, nyp, nzp
STOP -1
ENDIF
READ (num) ncyc,dt,dummyu
@ -252,14 +162,21 @@
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,:,:,:)
READ (num) u,v,w,old_scalar
new_scalar(:,:,:,2) = old_scalar(2,:,:,:)
ELSE
WRITE(*,*) ' with a new fort data from Comb-Cluster'
READ (num) m_v(2,:,:,:),m_v(3,:,:,:),m_v(4,:,:,:),m_v_new(:,:,:,1:2)
m_v(2,:,:,:) = m_v(2,:,:,:) + dummyu
READ (num) u,v,w,new_scalar
u = u + dummyu
ENDIF
m_v(2,:,:,:) = u
m_v(3,:,:,:) = v
m_v(4,:,:,:) = w
m_v(6,:,:,:) = new_scalar(:,:,:,2)
CLOSE (num)
END SUBROUTINE READ_FILE
@ -1571,7 +1488,110 @@
END SUBROUTINE SAVE_AVG_RESULTS
SUBROUTINE ALLOCATE_ARRAYS
INTEGER :: ierr
ALLOCATE(u(nxp,nyp,nzp),STAT=ierr) ; u=0. ! Main variables
ALLOCATE(v(nxp,nyp,nzp),STAT=ierr) ; v=0. ! Main variables
ALLOCATE(w(nxp,nyp,nzp),STAT=ierr) ; w=0. ! Main variables
ALLOCATE(old_scalar(2,nxp,nyp,nzp),STAT=ierr) ; old_scalar=0. ! Main variables
ALLOCATE(new_scalar(nxp,nyp,nzp,2),STAT=ierr) ; new_scalar=0. ! Main variables
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.
!ALLOCATE(cgm(nxp,nyp,nzp),STAT=ierr) ; cgm=0.
ALLOCATE(NV(3,nxp,nyp,nzp),STAT=ierr) ; NV=0.
!ALLOCATE(sd(7,nxp,nyp,nzp),STAT=ierr) ; sd=0.
ALLOCATE(c(nxp,nyp,nzp),STAT=ierr) ; c=0.
ALLOCATE(Wc(nxp,nyp,nzp),STAT=ierr) ; Wc=0.
ALLOCATE(u_dot(3,nxp,(eyp-syp+1),nzp),STAT=ierr) ; u_dot=0.
ALLOCATE(y(nxp,nyp,nzp),STAT=ierr) ; y=0.
!ALLOCATE(DivN(nxp,nyp,nzp),STAT=ierr) ; DivN=0.
!ALLOCATE(G_V(3,nxp,nyp,nzp),STAT=ierr) ; G_V=0.
!ALLOCATE(Div_V(nxp,nyp,nzp),STAT=ierr) ; Div_V=0
!ALLOCATE(G_FSD(3,nxp,nyp,nzp),STAT=ierr) ; G_FSD=0.
!ALLOCATE(vn(nxp,nyp,nzp),STAT=ierr) ; vn=0.
!ALLOCATE(G_vn(3,nxp,nyp,nzp),STAT=ierr) ;G_vn=0.
!ALLOCATE(G_sd(3,nxp,nyp,nzp),STAT=ierr) ;G_sd=0.
!ALLOCATE(G_Y(3,nxp,nyp,nzp),STAT=ierr) ; G_Y=0.
!ALLOCATE(GN_vn(nxp,nyp,nzp),STAT=ierr) ;GN_vn=0.
!ALLOCATE(GN_sd(nxp,nyp,nzp),STAT=ierr) ;GN_sd=0.
!ALLOCATE(G2N_c(nxp,nyp,nzp),STAT=ierr) ;G2N_c=0.
!ALLOCATE(G2_Y(nxp,nyp,nzp),STAT=ierr) ;G2_Y=0.
!ALLOCATE(d2gc(4,nxp,nyp,nzp),STAT=ierr) ;d2gc=0.
ALLOCATE(ub_dot(3,nxp,(eyp-syp+1),nzp),STAT=ierr) ; ub_dot=0.
ALLOCATE(uu_dot(3,nxp,(eyp-syp+1),nzp),STAT=ierr) ; uu_dot=0.
ALLOCATE(c_dot(nxp,(eyp-syp+1),nzp),STAT=ierr) ; c_dot=0.
ALLOCATE(FSD_dot(nxp,(eyp-syp+1),nzp),STAT=ierr) ; FSD_dot=0. !dhkim
ALLOCATE(ub_dot_g(3,nxp,(eyp-syp+1),nzp),STAT=ierr) ; ub_dot_g=0.
ALLOCATE(uu_dot_g(3,nxp,(eyp-syp+1),nzp),STAT=ierr) ; uu_dot_g=0.
ALLOCATE(c_dot_g(nxp,(eyp-syp+1),nzp),STAT=ierr) ; c_dot_g=0.
ALLOCATE(c_g(nxp,(eyp-syp+1),nzp),STAT=ierr) ; c_g=0.
! Arrays for local sum
ALLOCATE(u_g(3,nxp,(eyp-syp+1),nzp),STAT=ierr) ; u_g=0.
ALLOCATE(u_dot_g(3,nxp,(eyp-syp+1),nzp),STAT=ierr) ; u_dot_g=0.
ALLOCATE(RMS_g(4,nxp),STAT=ierr) ; RMS_g=0.
ALLOCATE(RMS_b_g(4,nxp),STAT=ierr) ; RMS_b_g=0.
ALLOCATE(RMS_u_g(4,nxp),STAT=ierr) ; RMS_u_g=0.
ALLOCATE(CM_b_g(4,nxp,(eyp-syp+1),nzp),STAT=ierr) ; CM_b_g=0.
ALLOCATE(CM_u_g(4,nxp,(eyp-syp+1),nzp),STAT=ierr) ; CM_u_g=0.
ALLOCATE(COV_g(3,nxp),STAT=ierr) ; COV_g=0.
! Arrays for total sum
!ALLOCATE(SMF(23,nxp),STAT=ierr) ; SMF=0.
ALLOCATE(SMF(3,nxp),STAT=ierr) ; SMF=0.
ALLOCATE(SMC(4,nxp),STAT=ierr) ; SMC=0.
!ALLOCATE(FMS(26,nxp),STAT=ierr) ; FMS=0.
!ALLOCATE(KMS(2,nxp),STAT=ierr) ; KMS=0.
ALLOCATE(CM_b(4,nxp),STAT=ierr) ; CM_b=0.
ALLOCATE(CM_u(4,nxp),STAT=ierr) ; CM_u=0.
ALLOCATE(RMS(8,nxp),STAT=ierr) ; RMS=0.
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.
! Arrays for final averages
!ALLOCATE(IRE1(28,nxp),STAT=ierr) ; IRE1=0.
ALLOCATE(IRE1(7,nxp),STAT=ierr) ; IRE1=0.
!ALLOCATE(IRE2(34,nxp),STAT=ierr) ; IRE2=0.
ALLOCATE(IRE3(8,nxp),STAT=ierr) ; IRE3=0.
ALLOCATE(IRE4(8,nxp),STAT=ierr) ; IRE4=0.
ALLOCATE(IRE5(25,nxp),STAT=ierr) ; IRE5=0.
ALLOCATE(IRE6(15,nxp),STAT=ierr) ; IRE6=0.
!ALLOCATE(IRE7(6,nxp),STAT=ierr) ; IRE7=0.
!ALLOCATE(IRE8(26,nxp),STAT=ierr) ; IRE8=0.
!ALLOCATE(IRE9(14,nxp),STAT=ierr) ; IRE9=0.
! hyp=l_0*pi/REAL(nyp)
hyp=l_0*pi/REAL(nyp-1) ! kwon
hxp=hyp; hzp=hyp
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(*,*)
END SUBROUTINE ALLOCATE_ARRAYS
SUBROUTINE DEALLOCATES_CLOSE
DEALLOCATE(u)
DEALLOCATE(v)
DEALLOCATE(w)
DEALLOCATE(old_scalar)
DEALLOCATE(new_scalar)
DEALLOCATE(m_v)
!DEALLOCATE(G_C)
!DEALLOCATE(cgm)