PROGRAM SETNSLUB
C---- VERTICAL NUMBERING
C----MOVING LEFT TO RIGHT
C=======================================================================
C DATA GENERATING PROGRAM FOR NSEQ8STD.FOR
C PROJECT: DRIVEN CAVITY FLOW PROJECT NAME: LUB0000
C UNITS: SECOND, 1/000 METER
C DOMAIN: LEFT=B1, RIGHT=B2, LENGTH=RLENGTH
C ELEMENT: FOUR-NODED ISOPARAMETRIC ELEMENT
C DOMAIN DISCRETIZATION: UNEVEN ELEMENTS WITH VERTICAL SCAN
C VISCOSITY RATIO [VRATIO]: 2ND VISCOSITY / 1ST VISCOSITY
C EIJI FUKUMORI DECEMBER 29, 1990
C=======================================================================
IMPLICIT REAL*8 ( A-H , O-Z )
PARAMETER ( ND=4, MXE=12000, MXN=13000, MXB=4000, NF=9 )
PARAMETER ( VRATIO=1.D9, RLENGTH=8000.D-3, UAVE=100.D0,
* VISCO=10.D0, FLMDA=VISCO*VRATIO,
* ITEFIX=5, MAXITE=10,ERMAX=1.D-5,
* TLX=RLENGTH, B1=8.D-3, B2=2.D-3, NEY = 10, NEX = 200,
* NDX=NEX+1, NDY=NEY+1 )
C=======================================================================
DIMENSION NODEX(MXE,ND),XCOORD(MXN),YCOORD(MXN),
* IBNDFX(MXB),IBNDFY(MXB),BVX(MXB),BVY(MXB),IBNDS(MXB),BVS(MXB)
CHARACTER FNAME(NF)*11,EXTEN(NF)*4,PROJECT*7,EXFILE*3
LOGICAL YES
C=======================================================================
DATA PROJECT / 'LUB0000' /
DATA EXTEN / '.JNK', '.ELE', '.NOD', '.BND', '.INI', '.BIN',
* '.XXX', '.MAX', '.STM' /
C=======================================================================
C F(X) = X * X * ( 3.D0- 2.D0* X )
G(X) = X * ( (0.1-1.)* X + (2.- 0.1) )
C=======================================================================
C C1: ADDED VISCOSITY COMPUTATION PARAMETER
C C1=0. FOR NO ADDED VISCOSITY, C1=1. FOR UPWIND (OPTIMUM) ADDED
C C1 OPTION IS AVALABLE IN NSEQ8DD.FOR SOLVER
C NEY: NEMBER OF VERTICAL ELEMENTS (NUMBER OF NODES: NEY+1)
C NEX: NEMBER OF HORIZONTAL ELEMENTS (NUMBER OF NODES: NEX+1)
C MAXITE: MAXIMUM NUMBER OF ITERATIONS AT EACH TIME INCREMENT
C ITERATION PROCEDURE IS REQUIRED BECAUSE OF NON-LINEAR CONVECTIVE TERM.
C ERMAX: MAXIMUM DIFFERENCE BETWEEN GUESSED {U&V} AND COMPUTED {U&V}
C HEIGHT: HEIGHT OF DRIVEN CAVITY FLOW DOMAIN
C=======================================================================
CALL FILEMG ( NF, FNAME, EXTEN, PROJECT )
WRITE (*,*)' LUBRICATION PROBLEM '
WRITE (*,*)' VISCOSITY RATIO OF ',VRATIO
C=======================================================================
C ELEMENT CREATION
NE = 0
DO J = 1 , NEX
DO I = 1 , NEY
NE = NE + 1
IF ( NE .GT. MXE ) STOP 'NE > MXE'
NODEX(NE,1) = NDY*(J-1) + I
NODEX(NE,2) = NODEX(NE,1) + NDY
NODEX(NE,3) = NODEX(NE,2) + 1
NODEX(NE,4) = NODEX(NE,1) + 1
END DO
END DO
C=======================================================================
C NODAL COORDINATE CREATION
NNODE = 0
DX = TLX / NEX
SLOPE = (B2-B1)/TLX
DO I = 1 , NDX
XCURRENT = DX * (I-1)
B = B1 + SLOPE * XCURRENT
DY = B / NEY
DO J = 1 , NDY
NNODE = NNODE + 1
IF ( NNODE .GT. MXN ) STOP 'NNODE > MXN'
XCOORD(NNODE) = XCURRENT
YCOORD(NNODE) = B*G(DY*(J-1)/B)
END DO
END DO
C=======================================================================
C BOUNDARY CONDITIONS
C--------- MOMENTUM EQUATIONS
NBFX = 0
NBFY = 0
C--------- FACE OF -X
C--------- FACE OF -Y
U0 = UAVE
V0 = 0.D0
DO I = 1 , NDX
NBFX = NBFX + 1
NBFY = NBFY + 1
IBNDFX(NBFX) = 1 + NDY*(I-1)
IBNDFY(NBFY) = 1 + NDY*(I-1)
BVX(NBFX) = U0
BVY(NBFY) = V0
END DO
C--------- FACE OF +Y
U0 = 0.D0
V0 = 0.D0
DO I = 1 , NDX
NBFX = NBFX + 1
NBFY = NBFY + 1
IBNDFX(NBFX) = I*NDY
IBNDFY(NBFY) = I*NDY
BVX(NBFX) = U0
BVY(NBFY) = V0
END DO
C--------- FACE OF +X
C=======================================================================
C B. C. FOR STREAM FUNCTION
C--------- FACE OD -Y
NBS = 0
DO I = 1 , NDX
NBS = NBS + 1
IBNDS(NBS) = 1 + NDY*(I-1)
BVS(NBS) = 0.D0
END DO
C--------- FACE OD +Y
Q = B1 * UAVE / 2.
DO I = 1 , NDX
NBS = NBS + 1
IBNDS(NBS) = I*NDY
BVS(NBS) = Q
END DO
C=======================================================================
C DATA FILE INQUIRY
EXFILE = 'NEW'
INQUIRE ( FILE = FNAME(1), EXIST = YES )
IF ( YES ) EXFILE='OLD'
C=======================================================================
C MAKING DATA FILES
C---------- 'PROJECT'.JNK
OPEN ( 1, FILE=FNAME(1), STATUS = EXFILE )
WRITE(1,'(4G15.7)') VISCO, FLMDA
WRITE(1,'(2I10)' ) NE, NNODE
WRITE(1,'(2I10)' ) NBFX, NBFY
WRITE(1,'(2I10)' ) ITEFIX, MAXITE
WRITE(1,'(G15.7)' ) ERMAX
CLOSE (1)
C=======================================================================
C---------- 'PROJECT'.ELE
OPEN ( 1, FILE=FNAME(2), STATUS = EXFILE )
DO I = 1 , NE
WRITE (1,115) I, (NODEX(I,J), J = 1 , ND )
END DO
115 FORMAT ( 5 I 6 )
CLOSE (1)
C=======================================================================
C---------- 'PROJECT'.NOD
OPEN ( 1, FILE=FNAME(3), STATUS = EXFILE )
WRITE(1,120) ( I,XCOORD(I), YCOORD(I) , I = 1, NNODE )
120 FORMAT ( I6, 2G15.7 )
CLOSE (1)
C=======================================================================
C---------- 'PROJECT'.BND
OPEN ( 1, FILE=FNAME(4), STATUS = EXFILE )
WRITE (1,125) ( IBNDFX(I), BVX(I) , I = 1 , NBFX )
WRITE (1,125) ( IBNDFY(I), BVY(I) , I = 1 , NBFY )
125 FORMAT ( I6, G15.7 )
CLOSE (1)
C=======================================================================
C---------- 'PROJECT'.MAX
OPEN ( 1, FILE=FNAME(8), STATUS = EXFILE )
UMIN = 0.
UMAX = 0.
VMIN = 0.
VMAX = 0.
PMIN = 0.
PMAX = 0.
SMIN = 0.
SMAX = 0.
WRITE (1,*) UMIN , UMAX
WRITE (1,*) VMIN , VMAX
WRITE (1,*) PMIN , PMAX
WRITE (1,*) SMIN , SMAX
CLOSE (1)
C=======================================================================
C---------- 'PROJECT'.STM
OPEN ( 1, FILE=FNAME(9), STATUS = EXFILE )
WRITE(1,*) NBS
WRITE (1,140) ( IBNDS(I) , BVS(I) , I = 1 , NBS )
140 FORMAT ( I6 , G15.7 )
CLOSE (1)
STOP
END
C
C
SUBROUTINE FILEMG ( NF, FNAME, EXTEN, PROJECT )
CHARACTER FNAME(NF)*11, PROJECT*7, EXTEN(NF)*4, FNWOE(7)*1,
* EXFILE*3
LOGICAL YES
C------- RETURN VALUE: FNAME
C
EXFILE ='NEW'
INQUIRE ( FILE='NSDATA.FLN', EXIST=YES )
IF ( YES ) EXFILE='OLD'
OPEN ( UNIT=2, FILE='NSDATA.FLN', STATUS=EXFILE )
C
NCHAR = 7
DO I = 1 , NCHAR
FNWOE(I) = PROJECT (I:I)
END DO
CALL GENFNM ( NCHAR, FNWOE, NF, FNAME, EXTEN )
WRITE (2,'(I5)') NCHAR
WRITE (2,'(7A1)') ( FNWOE(I) , I = 1 , NCHAR )
DO I = 1 , NF
WRITE (*,'(1X,A11)') FNAME(I)
WRITE (2,'( A11)') FNAME(I)
END DO
CLOSE (2)
RETURN
END
C
C
SUBROUTINE GENFNM ( NCHAR, FNWOE, NF, FNAME, EXTEN )
CHARACTER*1 FNWOE(7)
CHARACTER*4 EXTEN(NF)
CHARACTER*11 FNAME(NF)
DO I = 1 , NF
DO J = 1 , NCHAR
FNAME (I) (J:J) = FNWOE(J)
END DO
DO J = NCHAR+1,NCHAR+4
FNAME (I) (J:J) = EXTEN(I) (J-NCHAR:J-NCHAR)
END DO
END DO
RETURN
END