Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
! 2012/11/2版 ! Salomeで生成したメッシュデータをGmshでinpに変換して ! CalculiX用のinpファイルを作るためのプログラム(C3D8直方体要素用) ! まず、Salomeで適当に直方体要素のメッシュを切る ! それをUNV形式でsalome.unvに保存。 ! 次にGmshのFileのMergeでsalome.unvを読み込んで、 ! Abaqus inp形式でsalome.inpに保存。 ! salome.inpの冒頭にある節点番号と座標が並んでいる部分を ! setten.inpにコピーし、冒頭に節点数を記入。 ! salome.inpの末尾にある要素番号と要素を囲む節点番号が並んでいる部分を ! youso.inpにコピーし、冒頭に要素数を記入。 ! ccxc3d8を実行すると、ccxc3d8.inpが生成されているので、 ! cgx -c ccxc3d8.inp で読み込んで拘束節点と載荷節点を設定し、それらを出力。 ! 出力した拘束節点と載荷節点をccxc3d8.inpに読み込んで ! 拘束条件と載荷条件を適切に設定。 ! implicit real*8(a-h,o-z) open(7,file='setten.inp') open(8,file='ccxc3d8.inp') write(8,'("** 節点番号と座標")') write(8,'("*NODE, NSET=Nall")') read(7,*) nset do i=1,nset read(7,*) nset,x,y,z write(8,'(i6,a,1pe13.5,a,1pe13.5,a,1pe13.5)') nset,',',x,',',y,',',z end do close(7) open(7,file='youso.inp') write(8,'("** 要素番号とその要素を囲む節点番号")') read(7,*) n write(8,'("*ELEMENT, TYPE=C3D8, ELSET=Eall")') do i=1,n read(7,*) nyou,n1,n2,n3,n4,n5,n6,n7,n8 write(8,'(i6,a,i6,a,i6,a,i6,a,i6,a,i6,a,i6,a,i6,a,i6)'& &) i,',',n1,',',n2,',',n3,',',n4,',',n5,',',n6,',',n7,',',n8 end do close(7) !拘束条件や材料条件はSTEP行よりも上に書かないとエラーが出る !拘束条件を手動で書きこむ場合 !print'("*NSET,NSET=Nkousoku")' !print'("** ここに拘束したい節点番号とコンマを1行ずつ並べる")' !print'("** 例えば拘束節点が1と2だったら")' !print'(i6,a)',1,',' !print'(i6,a)',2,',' !print'("** みたいに")' write(8,'("** 拘束条件をcgxで生成したkousoku.namから読み込む")') write(8,'("** cgxで形状を見る場合は以下は**INCLUDEでコメント")') write(8,'("**INCLUDE, INPUT=kousoku.nam")') write(8,'("** ccxで計算するときは上の**INCLUDEの*を1個に")') write(8,'("*BOUNDARY")') write(8,'("** 以下のNkousoku,に続けて拘束変位1=x,2=y,3=zをコンマ区切りで")') write(8,'("Nkousoku,1,3")') write(8,'("** 材料の設定")') write(8,'("*MATERIAL,NAME=EL")') write(8,'("*ELASTIC")') write(8,'("206.d3, 0.3")') write(8,'("*SOLID SECTION,ELSET=Eall,MATERIAL=EL")') !載荷条件を手動で書き込む場合 !print'("*NSET,NSET=SAIKA")' !print'("** ここに載荷したい節点番号とコンマを1行ずつ並べる")' !print'("** 例えば載荷節点が3と4だったら")' !print'(i6,a)',3,',' !print'(i6,a)',4,',' !print'("** みたいに")' write(8,'("** 載荷条件をcgxで生成したsaika.namから読み込む")') write(8,'("** cgxで形状を見る場合は以下は**INCLUDEでコメント")') write(8,'("**INCLUDE, INPUT=saika.nam")') write(8,'("** ccxで計算するときは上の**INCLUDEの*を1個に")') write(8,'("*STEP")') write(8,'("*STATIC,SOLVER=SPOOLES")') write(8,'("*CLOAD")') p=1.d-0 !載荷荷重(MN) nsaika=2 !載荷節点数 write(8,'("** 以下のNsaikaに続けて載荷方向、載荷荷重を書く")') write(8,'("** 例えば載荷方向が3=zで、載荷荷重がp/nsaikaなら")') write(8,*)'Nsaika,3,',p/nsaika write(8,'("** 出力の設定")') write(8,'("*NODE PRINT,NSET=Nall")') write(8,'("U")') write(8,'("*EL PRINT,ELSET=Eall")') write(8,'("S")') write(8,'("*NODE FILE")') write(8,'("U")') write(8,'("*EL FILE,POSITION=AVERAGED AT NODES")') write(8,'("S")') write(8,'("*END STEP")') close(8) end