Plate Mesh File

Published by

sukhbinder

on

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
Like Loading…

Leave a comment Cancel reply

Hello,

I’m Sukhbinder

Welcome to my blog, my corner of the internet dedicated to all things that touches my life.

Let’s connect

Join the fun!

Stay updated with our latest tutorials and ideas by joining our newsletter.

[フレーム]
Design a site like this with WordPress.com
Get started

AltStyle によって変換されたページ (->オリジナル) /