Plate Mesh File

A few months back, i needed a plate model. Searched the net and tried creating it with a CAD software, but then said to myself. What the heck!! All I need is a mesh with quad elements and so wrote this program.

Not a polished code, but if you need a patran neurtal mesh file  for a simple plate with custom amount of 4 noded elements, then this is the program for you. Run this and import the generated file any CAD/CAE program.

 

        IMPLICIT NONE
        INTEGER N_elts_x,D_Node_Number,i,j,N_elts_y
        REAL*8 coord(121,2),dx,dy,PlateLength,PlateHeight
        INTEGER conec(100,4),nnodes,nele,ishap,D_Node_Numbery,ielem

        CHARACTER(len=80) title,datetime
        DATA title/"Created by fortran code"/
        DATA datetime/" Developed by sukhbinder"/



        PlateLength = 0.25
        PlateHeight = 0.25
! number of elements in x dir
        N_elts_x = 3
! number of elements in y dir
        N_elts_y = 4


        dx = PlateLength / DBLE(N_elts_x)
        dy = PlateHeight / DBLE(N_elts_y)

        D_Node_Number = N_elts_x + 1
        D_Node_Numbery = N_elts_y + 1
        DO i = 1 ,(N_elts_y + 1)
          DO j =1 , (N_elts_x + 1)
            COORD((i-1)*D_Node_Number+j , 1 ) = (j-1) *  dx
            COORD((i-1)*D_Node_Number+j , 2 ) = (i-1) * dy
          END DO
        END DO
!
          ielem=0
          DO j = 1, N_elts_y
            DO i = 1, N_elts_x

              ielem = ielem + 1

              conec(ielem,1) = ( j - 1 ) * ( N_elts_x + 1 ) + i
              conec(ielem,2) = ( j - 1 ) * ( N_elts_x + 1 ) + i + 1
              conec(ielem,3) =   j       * ( N_elts_x + 1 ) + i + 1
              conec(ielem,4) =   j       * ( N_elts_x + 1 ) + i


            END DO
          END DO

        DO i=1,121
          WRITE(*,'(i,2f12.8)') i,coord(i,:)
        END DO

        DO i=1,100
        WRITE(*,'(5i)') i,conec(i,:)
        END DO

!  Writing the file

        nnodes=(N_elts_x+1)*(N_elts_y+1)
        nele=N_elts_x*N_elts_y
        ishap =4

        OPEN(13,file="c:\temp\temp.mesh")

        WRITE(13,9000) 25,0,0,1,0,0,0,0,0
        WRITE(13,'(A)') title
        WRITE(13,9000) 26,0,0,1,nnodes,nele,0,0,0
        WRITE(13,'(A)') datetime

        DO i=1, nnodes
           WRITE(13,9005) i,0,2,0,0,0,0,0,coord(i,1),coord(i,2),0.0d0
        END DO

        DO i=1,nele
           WRITE(13,9010) i, ishap, ishap+1,0,0,0,0,0, ishap, 1,1,0,0.d0,0.d0,0.d0,conec(i,1:ishap)
        END DO
        WRITE(13,9000) 99, 0, 0, 1, 0, 0, 0, 0, 0



9000    format(i2, 8i8)
9005    format( ' 1', 8i8,  /&
           1p,3e16.9 / &
             '1G       6       0       0  000000')
9010  format( ' 2', 8i8, / &
                   4I8,3e16.9 /&
                 (10i8 ))
        CLOSE(13)
        END
About these ads

Tagged: , , , , ,

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 927 other followers

%d bloggers like this: