PROGRAM SET3 C======================================================================= C DATA GENERATING PROGRAM FOR DOMAIN.FOR C PROJECT: DOUBLE-LET PROJECT NAME: DOMAIN C DOMAIN: INFINITE C ELEMENT: FOUR-NODED ISOPARAMETRIC ELEMENT C DOMAIN DISCRETIZATION: UNEVEN ELEMENTS WITH VERTICAL SCAN C EIJI FUKUMORI DECEMBER 29, 1993 C======================================================================= PARAMETER ( ND=4,MXE=500,MXN=520, MXI=100 ) PARAMETER (MXD=10) C======================================================================= DIMENSION NODEX(MXE,ND),XCOORD(MXN), YCOORD(MXN),FJ(MXE),ICIR(16) DIMENSION XI(MXI), YI(MXI) C======================================================================= DATA NC, ICIR /16, 20,25,24,23,22,21,16,11,6,1,2,3,4,5,10,15/ C======================================================================= PI = 4.* ATAN( 1.) RADIUS = 1. XC1 = 0. YC1 = 2. WRITE(*,*) 'TYPE IN HALF OF D. I.E. (D/2)' READ (*,*) YC1 IF ( YC1 .LT. 2*RADIUS ) STOP 'YC1>2.' XC2 = XC1 YC2 = -YC1 C======================================================================= C----- RADIUS OF WELL = 1. I.E., A=1 DO I = 1 , NC XCOORD(ICIR(I)) = COS ( I*PI/8. ) YCOORD(ICIR(I)) = SIN ( I*PI/8. ) END DO XCOORD(7) = -0.5 XCOORD(8) = 0. XCOORD(9) = 0.5 YCOORD(7) = -0.5 YCOORD(8) = -0.5 YCOORD(9) = -0.5 C XCOORD(12) = -0.5 XCOORD(13) = 0. XCOORD(14) = 0.5 YCOORD(12) = 0. YCOORD(13) = 0. YCOORD(14) = 0. C XCOORD(17) = -0.5 XCOORD(18) = 0. XCOORD(19) = 0.5 YCOORD(17) = 0.5 YCOORD(18) = 0.5 YCOORD(19) = 0.5 DO I = 1 , 25 XCOORD(I+25) = XCOORD(I) + XC2 YCOORD(I+25) = YCOORD(I) + YC2 XCOORD(I) = XCOORD(I) + XC1 YCOORD(I) = YCOORD(I) + YC1 END DO NNODE = 25*2 C======================================================================= C ELEMENT CREATION NEX = 4 NEY = 4 NDX = NEX + 1 NDY = NEY + 1 NE = 0 DO I = 1 , NEY DO J = 1 , NEX NE = NE + 1 IF ( NE .GT. MXE ) STOP 'NE > MXE' NODEX(NE,1) = NDX*(I-1) + J NODEX(NE,2) = NODEX(NE,1) + 1 NODEX(NE,3) = NODEX(NE,2) +NDX NODEX(NE,4) = NODEX(NE,1)+NDX FJ(NE) = 1./PI END DO END DO C DO I = 1 , NEY DO J = 1 , NEX NE = NE + 1 IF ( NE .GT. MXE ) STOP 'NE > MXE' NODEX(NE,1) = NDX*(I-1) + J + NDX*NDY NODEX(NE,2) = NODEX(NE,1) + 1 NODEX(NE,3) = NODEX(NE,2) +NDX NODEX(NE,4) = NODEX(NE,1)+NDX FJ(NE) = -1./PI END DO END DO C======================================================================= NIP = 0 NIP = NIP + 1 XI(NIP) = 0. YI(NIP) = 0.0001 NIP = NIP + 1 XI(NIP) = 0. YI(NIP) = (YC1-RADIUS)/4. NIP = NIP + 1 XI(NIP) = 0. YI(NIP) = (YC1-RADIUS)/2. NIP = NIP + 1 XI(NIP) = 0. YI(NIP) = (YC1-RADIUS)/4.*3. NIP = NIP + 1 XI(NIP) = 0. YI(NIP) = YC1 - RADIUS/4.*3. NIP = NIP + 1 XI(NIP) = 0. YI(NIP) = YC1 - RADIUS/4. NIP = NIP + 1 XI(NIP) = 0. YI(NIP) = YC1 + RADIUS/4. NIP = NIP + 1 XI(NIP) = 0. YI(NIP) = YC1 + RADIUS/4.*3. NIP = NIP + 1 XI(NIP) = 0. YI(NIP) = YC1 + RADIUS*1. + RADIUS/4. NIP = NIP + 1 XI(NIP) = 0. YI(NIP) = YC1 + RADIUS*2. NIP = NIP + 1 XI(NIP) = 0. YI(NIP) = YC1 + RADIUS*3. NIP = NIP + 1 XI(NIP) = 0. YI(NIP) = YC1 + RADIUS*4. NIP = NIP + 1 XI(NIP) = 0. YI(NIP) = YC1 + RADIUS*5. C DO I = 3 , 30 NIP = NIP + 1 XI(NIP) = 0. YI(NIP) = YC1 + RADIUS*I*2 END DO C NNN = NIP DO I = 1 , NNN NIP = NIP + 1 XI(NIP) = 0. YI(NIP) = -YI(I) END DO C C DO I = 1 , NIP-1 YMIN = YI(I) K = I DO J = I+1 , NIP IF ( YI(J) .LT. YMIN ) THEN YMIN = YI(J) K = J END IF END DO YI(K) = YI(I) YI(I) = YMIN END DO C======================================================================= C MAKING DATA FILES OPEN ( 1, FILE='DOMAIN.DAT', STATUS = 'UNKNOWN' ) WRITE(1,100) NE C------ ELEMENTS CONECTIVITY INFORMATION DO I = 1 , NE WRITE (1,100) I,(NODEX(I,J),J=1,ND), FJ(I) END DO C------ NODAL COORDINATES WRITE(1,100) NNODE DO I = 1 , NNODE WRITE(1,200) I, XCOORD(I), YCOORD(I) END DO C------ INTERNAL POINT WRITE(1,*) NIP IF ( NIP .GE. 1 ) THEN DO I = 1 , NIP WRITE(1,*) XI(I), YI(I) END DO END IF CLOSE (1) 100 FORMAT ( 5I7 , E20.10 ) 200 FORMAT ( I7 , 2E20.10 ) 300 FORMAT ( 2I7 , 2E16.5 ) 400 FORMAT ( I7 , 2E16.5 ) WRITE(*,*) 'NE=',NE WRITE(*,*) 'NNODE=',NNODE STOP END