! EUC-jp ! 文字コードはEUC-jp ! 自由形式のfortranで書いています。 ! g77でコンパイルする場合は、 !g77 -ffree-form -o smv smv.f ! のようにコンパイルしてください。 ! gfortran でコンパイルする場合は文字コードをutf-8にしてください。 !program daiya implicit real*8 (a-h, o-z) pi=2.d0*asin(1.d0) r=1.d0/2.d0/pi !半径 h=0.5d0 !高さ m=6 !周方向分割数 n=5 !高さ方向分割数 nset=m*(n+1) !節点数 nyou=2*m*n !要素数 open(7,file='yousosuu.txt') write(7,*) nyou write(7,*) m,n close(7) th=2.d0*pi/m !ダイヤ1つぶんの中心角 dh=h/n !ダイヤ三角1段ぶんの高さ(斜めになってるから三角形の高さではない) ! open(8,file='daiya.obj') write(8,'("3DG1")') write(8,*) nset do j=0,n !高さ方向に do i=0,m-1 !円周方向に1回りずつ !xyz座標を出力 write(8,*) r*cos(i*th+j*th/2.),r*sin(i*th+j*th/2.),j*dh end do end do ! !1周ずつ逆三角形と順三角形の頂点の節点を交互に外から見て左回りに出力 do j=0,n-1 !高さ方向 do i=0,m-1 !周方向に if(i/=m-1) then !周の開始から一つ前まで !逆三角形の右上頂点、左上頂点、下頂点 !write(8,*) 3,j*m+i+1,j*m+i,(j+1)*m+i,' ','0xcccccc' !逆回り write(8,*) 3,j*m+i+1,(j+1)*m+i,j*m+i,' ','0xcccccc' !三角形の左下頂点、右下頂点、上 !write(8,*) 3,(j+1)*m+i,(j+1)*m+i+1,j*m+i+1,' ','0xcccccc' !逆回り write(8,*) 3,(j+1)*m+i,j*m+i+1,(j+1)*m+i+1,' ','0xcccccc' else !周の一番最後は、開始点の頂点とくっつくように !write(8,*) 3,j*m,j*m+i,(j+1)*m+i,' ','0xcccccc' !逆回り write(8,*) 3,j*m,(j+1)*m+i,j*m+i,' ','0xcccccc' !write(8,*) 3,(j+1)*m+i,(j+1)*m,j*m,' ','0xcccccc' !逆回り write(8,*) 3,(j+1)*m+i,j*m,(j+1)*m,' ','0xcccccc' end if end do end do write(8,'("#")') !daiya.objファイルから要素数を読み取るとき用 close(8) ! ! end