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
Hello,
Welcome to my blog, my corner of the internet dedicated to all things that touches my life.
Stay updated with our latest tutorials and ideas by joining our newsletter.