Patran Neutral Mesh File Writer updated

Sphere

A recent comment from a blog reader made me relook at the patran neutral mesh file writer routine that I had on this blog.

Since the code was pasted on this blog, it lacked proper update and ability to have a test case or example file.

So spent this weekend, creating an example file and have uploaded the code and the example on github.

The entire writer is now availabe at https://github.com/sukhbinder/PatranMeshWriter

Hope to add and update the code more often. 🙂

 

Advertisements

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