⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 grid.f90

📁 This program incorporates the FV method for solving the Navier-Stokes equations using 2D, Cartesian
💻 F90
字号:
module runparam    integer::NI,NJ    real*8,dimension(:),allocatable::XALL,YALLend module!C###################################################################      PROGRAM EXPAimplicit none!C###################################################################
!C#                                                                 #
!C#    PROGRAM FOR THE 2D LID DRIVEN CAVETY PROBLEM                 #
!C#                                                                 #
!C#                                   Jesper Winther St鎟dahl, 2008 #
!C###################################################################	CHARACTER FILIN*12,FILOUT*12	LOGICAL LPLOT!C
!C----------------------------------------
!C.....READ INPUT FILE NAME AND OPEN FILES
!C----------------------------------------
!C
	1 FORMAT(A12)
	FILIN = 'grid.inp'
	FILOUT = 'grid.out'
	Write(*,'("INPUT FILE NAME: ",A10)') FILIN
	Write(*,'("OUTPUT FILE NAME: ",A10)') FILOUT	
	OPEN (UNIT=5,FILE=FILIN)
	OPEN (UNIT=3,FILE=FILOUT)
	
	REWIND 3 ! places the curser at the beginning of unit 3 (filout)
	

	READ(5,*) LPLOT
    write(*,'("Plot (T=true,F=false)",L10)') LPLOT
	
	CALL GRID
    if (LPLOT) then
		CALL GRIDPL
	end if
	
end program
!C
!C####################################################################
subroutine GRID
use runparam
implicit none
!C####################################################################
    integer i,j
    read(5,*) NI,NJ
    allocate(XALL(NI),YALL(NJ))
    
    WRITE(3,*) NI   ,'  Number of grid in x-direction '
	WRITE(3,*) NJ   ,'  Number of grid in y-direction'
	
    
    do i = 1,NI
        XALL(i) = (dble(i)-1d0)/(dble(NI)-1d0)
    end do
    write(3,*) XALL
    do j = 1,NJ
        YALL(j) = (dble(j)-1d0)/(dble(NJ)-1d0)
    end do
    write(3,*) YALL

	

end subroutine 


!C
!C#############################################################
subroutine GRIDPL
!C#############################################################
use runparam
integer J,I
real*8 XMIN,XMAX,YMIN,YMAX,XL,YL,SCFX,SCFY,SCF
integer IXALL(NI),IYALL(NJ)
	CHARACTER FILOUT*12
!C
!C-----------------------------------------------------------
!C         CREATE POSTSCRIPT FILE WITH PLOT OF GRID LINES. 
!C         ROUTINE 'PSHEAD' WRITES HEADER OF THE POSCRIPT FILE. 
!C         PLOT AREA IS 7 x 7 INCHES, ORIENTATION IS PORTRAIT;
!C         COORDINATES ARE SCALED TO ALLOW ACCURATE PRINTING
!C         ON PRINTERS WITH 1200 x 1200 DPI 
!C-----------------------------------------------------------

	XMIN=XALL(1)
	XMAX=XALL(NI)
	YMIN=YALL(1)
	YMAX=YALL(NJ)

	XL=XMAX-XMIN
	YL=YMAX-YMIN
	SCFX=8400.0/XL
	SCFY=8400.0/YL
	SCF=MIN(SCFX,SCFY)
	XMIN=50.
	YMIN=50.
	XMAX=XMIN+XL*SCF*0.06
	YMAX=YMIN+YL*SCF*0.06
!C
	WRITE(FILOUT,'(4Hgrid,I1,3H.ps)') 1
	OPEN(UNIT=7,FILE=FILOUT)
	REWIND 7
	CALL PSHEAD(XMIN,XMAX,YMIN,YMAX)
!!!C
	DO I=1,NI
		IXALL(I)=INT(XALL(I)*SCF)
	END DO
	DO J=1,NJ
		IYALL(J)=INT(YALL(J)*SCF)
	END DO
!!!C---------------------------------------------------------
!!!C         PLOT BOUNDARY OF SOLUTION DOMAIN WITH THICK LINE
!!!C---------------------------------------------------------
	WRITE(7,*) '50 w'
	WRITE(7,71) IXALL(1),IYALL(1),' m ',IXALL(NI),IYALL(1),' l '
	WRITE(7,71) IXALL(NI),IYALL(NJ),' l ',IXALL(1),IYALL(NJ),' l '
	WRITE(7,72) IXALL(1),IYALL(1),' l  s '
	71 FORMAT(2I5,A3,2I5,A3)
	72 FORMAT(2I5,A6)
	73 FORMAT(2I5,A3,2I5,A6)
!!!C---------------------------------------------------------
!!!C         PLOT INNER GRID LINES WITH THIN LINES
!!!C---------------------------------------------------------
	WRITE(7,*) '1 w'
	DO J=2,NJ-1
		WRITE(7,73) IXALL(1),IYALL(J),' m ',IXALL(NI),IYALL(J),' l  s '
	END DO
	DO I=2,NI-1
		WRITE(7,73) IXALL(I),IYALL(1),' m ',IXALL(I),IYALL(NJ),' l  s '
	END DO
!   73 FORMAT(2I5,A3,2I5,A6)
	WRITE(7,*) 'p '
!!C
	CLOSE(7)
!      RETURN
END subroutine
!C
!C#######################################################
SUBROUTINE PSHEAD(XMIN,XMAX,YMIN,YMAX)
implicit none
!C#######################################################
!C
real*8 XMIN,XMAX,YMIN,YMAX

	WRITE(7,*) '%!PS-Adobe-2.0'
	WRITE(7,*) '%%Creator: GRIDPL'
	WRITE(7,*) '%%BoundingBox: ',XMIN,YMIN,XMAX,YMAX
	WRITE(7,*) '%%EndComments'
	WRITE(7,*) '/c {currentpoint} def /f {fill} def '
	WRITE(7,*) '/gr {grestore} def /gs {gsave} def /l {lineto} def '
	WRITE(7,*) '/m {moveto} def /n {newpath} def /p {showpage} def '
	WRITE(7,*) '/s {stroke} def /sg {setgray} def '
	WRITE(7,*) '/w {setlinewidth} def '
	WRITE(7,*) '50 50 translate 0.06 0.06 scale '
	WRITE(7,*) '1 setlinecap 1 setlinejoin '
	
END subroutine

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -