C*******************************************************************
C**
C** v e m g e n 1 d :
C**
C** generation of a subdivision of a 1D domain of length L.
C** The created mesh can be read by vemu02.
C**
C** by L. Grosz Karlsruhe, Jan. 1995
C**
C*******************************************************************
C**
C** This FORTRAN program generates an order 2 subdivision of a
C** one-dimensional domain into line elements. The left and right
C** boundary points get Dirichlet conditions.
C**
PROGRAM VEMEXM
C**
C**-----------------------------------------------------------------
C**
IMPLICIT NONE
C**
C**-----------------------------------------------------------------
C**
C** some parameters which may be chanced:
C**
C** ELEM1 = number of elements in x1 direction
C** NK = number of solution components
C** MESH = name of the mesh file
C**
INTEGER ELEM1,NK,IND
CHARACTER*80 MESH
PARAMETER (NK=1)
C***
INTEGER Z1,N1,S,D
DOUBLE PRECISION L,X1,X2,X3
IND=1
C**
C**-----------------------------------------------------------------
C**
PRINT*,'Enter length :'
READ(5,*) L
PRINT*,'Enter number of elements in x1-direction :'
READ(5,*) ELEM1
PRINT*,'Name of the mesh file :'
READ(5,'(80A)') MESH
C**
C**-----------------------------------------------------------------
C**
C** open output file :
C**
OPEN (99,FILE=MESH,STATUS= 'UNKNOWN',FORM='FORMATTED')
PRINT*,'opened file : ',MESH
C**
C**-----------------------------------------------------------------
C**
C**** the generation of the geometrical nodes :
C** ---------------------------------------
C**
N1=2*ELEM1+1
WRITE(99,*) N1
C**
DO 10 Z1=1,N1
X1=DBLE(Z1-1)/DBLE(N1-1)*L
X2=0
X3=0
WRITE(99,*) Z1,X1,X2,X3
10 CONTINUE
C**
PRINT*,'written nodes : ',N1
C**
C**-----------------------------------------------------------------
C**
C**** the generation of the elements :
C** -------------------------------
C**
C** The domain is covered by line elements of order 2.
C** The following picture illustrates the construction of the
C** line elements with left node S
C**
C** 1-----3-----2
C** S S+1 S+2
C**
C** There is only one element type:
C**
WRITE(99,*) 1
C**
C** These are the line elements:
C**
WRITE(99,*) ELEM1,1,2,3
DO 20 Z1=1,ELEM1
S=2*(Z1-1)+1
WRITE(99,*) Z1,IND,S,S+2,S+1
20 CONTINUE
C**
PRINT*,'written line elements : ',ELEM1
C**
C**-----------------------------------------------------------------
C**
C** generation of the nodes with Dirichlet conditions :
C** -------------------------------------------------
C**
WRITE(99,*) NK
C**
DO 40 D=1,NK
C**
WRITE(99,*) 2
C**
WRITE(99,*) 1,DBLE(1)
WRITE(99,*) N1,DBLE(2)
C**
PRINT*,2,' Dirichlet conditions for component ',d
40 CONTINUE
C**
C**-----------------------------------------------------------------
C**
C**** end of calculation
C** ------------------
C**
E N D