P R O G R A M SET3DSOUND1
C********************************************************************
C------------------- 8-NODED HEXA LINEAR ELEMENT --------------------
C********************************************************************
PARAMETER( ND=8, INTEPT=2 )
PARAMETER( IW=10,MXNMT=10,MXE=1000000,MXN=2000000 )
IMPLICIT REAL*8 ( A-H , O-Z )
DIMENSION NODEX(MXE,ND),XCOORD(MXN), YCOORD(MXN), ZCOORD(MXN)
CHARACTER INFNAME*12
C
C--------------------------------------------------------------------
INFNAME = 'EIGN3D8.DAT'
C====================================================================
C------------------------ SPEED OF SOUND ----------------------------
WSPD = 340.D0
C-------------------------------------------------------
C TLX=LENGTH, TLY=HEIGHT, TLZ=DEPTH
TLX = 4.D0*DATAN(1.D0)
TLY = TLX/2.D0
TLZ = TLX/3.D0
C----------------------------------------------------------
NELEMENT = 4
ALMIN = DMIN1 ( TLX, TLY, TLZ )
NEX = NELEMENT * (TLX/ALMIN + 0.001D0)
NEY = NELEMENT * (TLY/ALMIN + 0.001D0)
NEZ = NELEMENT * (TLZ/ALMIN + 0.001D0)
C==========================================================
C--- APPROPRIATE VALUES:DELTA=0.1, MXNEIGEN=40
AL = DMAX1 ( TLX, TLY, TLZ )
DELTA = (4.D0*DATAN(1.D0)/AL)**2 * 0.9
C----------------------------------------------------------
DX = TLX / NEX
DY = TLY / NEY
DZ = TLZ / NEZ
C
NDX = NEX + 1
NDY = NEY + 1
NDZ = NEZ + 1
C
DO J = 1 , NEY
DO K = 1 , NEZ
DO I = 1 , NEX
NE = NEX*(K-1)+I+(J-1)*NEZ*NEX
NODEX(NE,1) = I + NDX*(K-1) + (J-1)*NDZ*NDX
NODEX(NE,2) = NODEX(NE,1) + 1
NODEX(NE,5) = NODEX(NE,1) + NDX
NODEX(NE,6) = NODEX(NE,5) + 1
NODEX(NE,4) = NODEX(NE,1) + NDZ*NDX
NODEX(NE,3) = NODEX(NE,4) + 1
NODEX(NE,8) = NODEX(NE,4) + NDX
NODEX(NE,7) = NODEX(NE,8) + 1
END DO
END DO
END DO
C--------------------------------------------------------
C
C COORDINATES OF NODE POINTS
DO J = 1 , NDY
DO K = 1 , NDZ
DO I = 1 , NDX
NNODE = I + (K-1) * NDX + (J-1) * NDZ * NDX
XCOORD(NNODE) = DX * (I-1)
YCOORD(NNODE) = DY * (J-1)
ZCOORD(NNODE) = DZ * (K-1)
END DO
END DO
END DO
C-----------------------------------------------------
MXNEIGEN=MIN0 ( 20, NNODE/10 )
IF ( MXNEIGEN .LT. 9 ) MXNEIGEN = 9
C----------------------------------------------------------
DXMIN = DMIN1 ( DX, DY, DZ )
EIGENMX = ( (4.D0*DATAN(1.D0))/(2.D0*DXMIN) ) ** 2
TOTALVOL = TLX * TLY * TLZ
C----------------------------------------------------------
IWW = 2
OPEN (IWW, FILE='DOMAIN.SUM', STATUS='UNKNOWN')
WRITE (IWW,*) 'SPEED OF SOUND =', WSPD
WRITE (IWW,*) 'TLX, TLY, TLZ =', TLX, TLY, TLZ
WRITE (IWW,*) 'TOTAL VOLUME =', TOTALVOL
WRITE (IWW,*) 'NEX, NEY, NEZ =', NEX, NEY, NEZ
WRITE (IWW,*) 'MAXIMUM SURFACE LENGTH =', AL
WRITE (IWW,*) 'SHIFT PARAMETER (DELTA) =', DELTA
WRITE (IWW,*) 'MAX EIGEN (ALPHA SQ) =', EIGENMX
WRITE (IWW,*) 'NE =', NE
WRITE (IWW,*) 'NNODE =', NNODE
WRITE (IWW,*) 'MXNEIGEN =', MXNEIGEN
CLOSE (IWW)
C-----------------------------------------------------
OPEN (IW, FILE=INFNAME, STATUS='UNKNOWN')
WRITE (IW,*) DELTA, MXNEIGEN, WSPD
WRITE (IW,*) NE
DO I = 1, NE
WRITE (IW,*) I,(NODEX(I,J),J=1,ND)
END DO
C
WRITE (IW,*) NNODE
DO I = 1, NNODE
WRITE (IW,*) I, XCOORD(I), YCOORD(I), ZCOORD(I)
END DO
C
CLOSE (IW)
C------ CREATION OF PARAMETER FILE TO BE USED IN INCLUDE STATEMENT
CALL BANDWID ( ND, MXE, NE, NODEX , NBW )
OPEN ( 1, FILE='PARAM.DAT', STATUS='UNKNOWN' )
WRITE (1,*) ' PARAMETER ( ND=',ND,' )'
WRITE (1,*) ' PARAMETER ( INTEPT=',INTEPT,' )'
WRITE (1,*) ' PARAMETER ( MXE=',NE,' )'
WRITE (1,*) ' PARAMETER ( MXN=',NNODE,' )'
WRITE (1,*) ' PARAMETER ( MXW=',NBW,' )'
WRITE (1,*) ' PARAMETER ( MXENGN=',MXNEIGEN,')'
CLOSE (1)
STOP 'NORMAL TERMINATION'
END
C
C
SUBROUTINE BANDWID ( ND, MXE, NE, NODEX , NBW )
DIMENSION NODEX(MXE,ND)
NBW = 0
DO I = 1 , NE
DO J = 1 , ND-1
DO K = J+1 , ND
NBW = MAX0(NBW,IABS(NODEX(I,J)-NODEX(I,K)))
END DO
END DO
END DO
NBW = NBW + 1
WRITE (*,*) 'HALF-BANDWIDTH + 1 =', NBW
RETURN
END