ansys命令流部分:
/clear
b=1000 !基本尺寸
!進入prep7並建模
/prep7
*dim,a,,3,1!定義乙個3*1的陣列
*vread,a,e: \project\trussdata_1,txt,,ijk,3,1 !ijk表示讀入的順序
(f7.2)
a1=a(1,1)
a2=a(2,1)
a3=a(3,1)
*cfopen,e: \project\trussdata_3,txt
*vwrite,a1,a2,a3
(f7.2,/f7.2,/f7.2)
*cfclos
et,1,link1 !二維杆單元
r,1,a1 !以引數形式的實參
r,2,a2
r,3,a3
mp,ex,1,2.1e6 !楊氏模量
n,1,-b,0,0 !定義結點
n,2,0,0,0
n,3,b,0,0
n,4,0,-b,0
e,1,4 !定義單元
real,2
e,2,4
real,3
e,3,4
finish
!!進入求解器,定義載荷和求解
/solu
d,1,all,0,,3 !結點ux=uy=0
f,4,fx,200000 !結點4上的x方向載荷分量(工況1)
f,4,fy,-200000 !結點4上的y方向載荷分量(工況2)
solve
finish
!進入post1並讀出狀態變數數值
/post1
set,last
etable,evol,volu !將每個單元的體積放入etable
ssum !將單元**內資料求和
*get,vtot,ssum,,item,evol!vtot=總體積
rho=2.85e-4
wt=rho*vtot !計算總體積
etable,sig,ls,1 !將軸向應力放入etable
*get,sig1,elem,1,etab,sig!sig1=第乙個單元的軸向應力
*get,sig2,elem,2,etab,sig!sig2=第二個單元的軸向應力
sig1=abs(sig1) !計算軸向應力的絕對值
sig2=abs(sig2)
!/eshape,2 !以實體單元模式顯示殼單元
!/view,1,1,1,1 !軸測檢視
!eplot !畫單元
finish
*cfopen,e:\project\trussdata_2,txt
*vwrite,sig1,sig2,wt
(f7.2,/f7.2,/f7.2)
*cfclos
fortran程式部分:
program truss
use dflib
implicit none
character(len=20) :: filename1="trussdata_2.txt"
character(len=20) :: filename2="trussdata_1.txt"
real,parameter :: e=0.01!e為計算精度
real,parameter :: xu=400 !xu為許用應力
integer :: fileid,k
integer i
logical(4) result
real u1(50),u2(50),ww(50),umax !u1,u2為應力比,umax為最大應力
real sig1,sig2,w,ap!sig1為杆1的最大應力,sig2為杆2的最大應力
real x1(50),x2(50),xx1,xx2!x為杆截面面積
i=1k=1
x1(1)=707!定義杆的初始值
x2(1)=707
ap=10
do while( ap>=e )
!呼叫ansys做結構分析
result=system**(' c:\program files\ansys inc\v110\ansys\bin\intel\ansys110 -b -p &
& ane3fl -i e: \project\truss.txt -o e:\project\trussanswer.txt')
fileid=10
open(fileid,file=filename1)!從ansys寫出的檔案中讀入資料(應力和求得的重量)
read(fileid,*) sig1,sig2,w
close(fileid)
ww(k)=w
u1(i)=sig1/xu
u2(i)=sig2/xu
if ( u1(i)>=u2(i) ) then!判斷最大應力
umax=u1(i)
else
umax=u2(i)
end if
!射線步
x1(i+1)=umax*x1(i)
x2(i+1)=umax*x2(i)
u1(i+1)=u1(i)/umax!求出新的應力比
u2(i+1)=u2(i)/umax
!調整步
x1(i+2)=u1(i+1)*x1(i+1)
x2(i+2)=u2(i+1)*x2(i+1)
xx1=x1(i+2)/(500.0*1.414)
xx2=x2(i+2)/(500.0*1.414)
fileid=20
open(fileid,file=filename2)!
write(fileid,"(a3,f7.2,/a3,f7.2,/a3,f7.2)") "a1=",x1(i+2),"a2=",x2(i+2),"a3=",x1(i+2)
close(fileid)
if ( i>=3) then
if ( ww(k)-ww(k-1)>0 ) then
write(*,"(a3,f7.2,/a3,f7.2,/a3,f7.2)") "a1=",x1(i),"a2=",x2(i),"a3=",x1(i)
write(*,*) ww(k),ww(k-1)
pause
end if
end if
i=i+2
if ( i>=5 ) then !ap為精度控制
ap=sqrt((x1(i+1)-x1(i-1))**2+(x2(i+1)-x2(i-1))**2)
end if
k=k+1
end do
stopend
FORTRAN學習報告
上機前預備知識 1 fortran控制格式輸入語句 read 輸入表列 read 輸入表列 2 fortran控制格式輸出語句 write 輸出表列 write 輸出表列 3 符號 gt.大於 ge.大於或等於 lt.小於 le.小於或等於 eq.等於ne.不等於 4 邏輯表示式 and.邏輯與 o...
fortran資料格式
fortran資料輸入輸出格式 適用於ansys等資料格式設定 2012 08 29 00 03 10 格式化輸出的控制字元非常的豐富,但常用的並不多,一般說來 i f e a x 是最常使用的幾個格式,最好把它們都記下來。1.iw m 以w個字元的寬度來輸出整數,至少輸出m個數字。如 write ...
《程式語言 FORTRAN 》課程簡介
課程 程式語言 fortran programming language fortran 編號 20411807 學時 64 16 課外 學分 4 內容提要 程式語言 fortran 課是一門專業必修課和學科基礎課,也是計算機基礎教學課程體系中一門重要的計算機技術基礎課程,該課程主要介紹程式設計基本...