diff --git a/code/m_parameters.f90 b/code/m_parameters.f90 index f4d024f..7ec296b 100644 --- a/code/m_parameters.f90 +++ b/code/m_parameters.f90 @@ -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 diff --git a/code/post.f90 b/code/post.f90 index 706c745..818c2b9 100644 --- a/code/post.f90 +++ b/code/post.f90 @@ -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)