二次開發(fā)的一些體會(網(wǎng)友撰寫)【精華】【轉(zhuǎn)】



二次開發(fā)的一些體會(網(wǎng)友撰寫)【精華】
※?二次開發(fā)調(diào)試技術(shù)
在調(diào)試用戶子程序過程中,可以利用非《ANSYS命令參考手冊》某些命令和其它特性幫助用戶提供許多有用的信息。但是,它們僅僅適合于極小問題并只包含較少迭代求解情況;否則,它們將會輸出大量的數(shù)據(jù)。 下面將詳細(xì)介紹/TRACK 和 /DEBUG兩個命令;另外有兩個ANSYS文檔沒有包含的命令:OUTEQ 與 /NERR。
? 命令OUTEQ,on 能夠用于控制所有平衡迭代計算的輸出結(jié)果。
? 命令/NERR,,,-1 使系統(tǒng)一直報錯,并保持程序繼續(xù)運行。這時,
正常的中斷方式有:1) 系統(tǒng)中斷; 2) 錯誤結(jié)果。
1、跟蹤程序運算邏輯順序
/TRACK命令:當(dāng)程序按邏輯順序進(jìn)入和離開某些更高級別的子程序時發(fā)送一條信息。子程序的TrackBegin(開始)和TrackEnd(結(jié)束)(參看UPFs第六章)一起構(gòu)成/TRACK命令的程序跟蹤。 然后,按下列格式執(zhí)行命令:
/TRACK,MonLevel,PrintLevel,SumLevel
其中:MonLevel是時間監(jiān)視級別;
PrintLevel是進(jìn)入/退出輸出狀態(tài)開關(guān);
SumLevel是輸出累積時間狀態(tài)開關(guān)。
這三個參數(shù)可以是0到9之間的任何值(缺省為0)。用戶可以使用/TRACK命令查找出程序中斷發(fā)生的代碼位置。例如,將所有子程序標(biāo)識為八個級別,以便確定程序進(jìn)入與退出它們的時間, 此時用戶應(yīng)當(dāng)執(zhí)行的命令為:
/TRACK,,8
2、調(diào)試單元與求解
/DEBUG命令能夠在輸出的許多位置點進(jìn)行調(diào)試。/DEBUG命令具有下列三種調(diào)試格式:
? 求解(solution)調(diào)試格式
? 單元(element)調(diào)試格式
? 一般調(diào)試格式
(1)求解(solution)調(diào)試格式
執(zhí)行命令:
/DEBUG,-1,F1,F2,F3,F4,F5,F6,F7,F8,F9
參數(shù)說明:
F1—1 (輸出基本求解結(jié)果控制調(diào)試結(jié)果)
F2—1 (輸出使用Newmark常數(shù)的瞬態(tài)計算調(diào)試結(jié)果)
2 (輸出使用速度與加速度的瞬態(tài)計算調(diào)試結(jié)果)
F3—1 (輸出單元矩陣調(diào)試結(jié)果,包括矩陣與載荷矢量)
2 (輸出單元矩陣調(diào)試結(jié)果,只包括載荷矢量)
3 (輸出單元矩陣調(diào)試結(jié)果,包括矩陣對角元素和載荷矢量)
F4—1 (輸出自動時間步長(auto time stepping)調(diào)試結(jié)果)
F5—1 (輸出多物理場調(diào)試結(jié)果)
F6—1 (輸出弧長(arc-length)調(diào)試結(jié)果)
F7—1 (輸出基本Newton-Raphson調(diào)試結(jié)果)
2 (輸出Newton-Raphson調(diào)試結(jié)果,包括非平衡力或增量位移或每個DOF)
3 (輸出Newton-Raphson調(diào)試結(jié)果,包括施加載荷與每個DOF 上的n-r恢復(fù)力)
F8—1,2 (輸出位移矢量以及位移指針調(diào)試結(jié)果)
2 (輸出位移矢量以及增量位移調(diào)試結(jié)果)
3 (輸出位移矢量以及接觸數(shù)據(jù)庫調(diào)試結(jié)果)
F9—1 (輸出臨時程序員調(diào)試結(jié)果)
(2)單元(element)調(diào)試格式
執(zhí)行命令:
/DEBUG,-3,G1,G2,G3,G4,G5,G6,G7,G8,G9
參數(shù)說明:
G1—1 (輸出基本單元通過(pass)調(diào)試結(jié)果)
G2—1 (輸出單元位移和坐標(biāo)調(diào)試結(jié)果)
G3—1 (輸出單元矩陣調(diào)試結(jié)果,包括矩陣與載荷矢量)
2 (輸出單元矩陣調(diào)試結(jié)果,只包括載荷矢量)
3 (輸出單元矩陣調(diào)試結(jié)果,包括矩陣對角元素和載荷矢量)
G4—1 (輸出單元載荷調(diào)試結(jié)果)
G5—1 (輸出單元實常數(shù)(real constant)調(diào)試結(jié)果)
G6—1 (輸出單元存儲變量(saved variable)調(diào)試結(jié)果)
G7—1 (輸出線性材料特性單元材料特性調(diào)試結(jié)果)
2 (輸出非線性材料特性單元材料特性調(diào)試結(jié)果)
G8—1,2 (輸出塑性單元非線性調(diào)試結(jié)果)
2 (輸出大變形單元非線性調(diào)試結(jié)果)
3 (輸出接觸數(shù)據(jù)庫單元非線性調(diào)試結(jié)果)
G9—1 (輸出臨時程序員調(diào)試結(jié)果)
(3)一般調(diào)試格式
執(zhí)行命令:
/DEBUG,H1,H2,,H4,H5
參數(shù)說明:
H1—1 (輸出文件頭紀(jì)錄(file header record)信息)
2 (輸出字符輸入行(character))
3 (輸出解碼輸入行(decoded))
H2—1 (輸出波前重新排序(wavefront reordering)與單元檢查調(diào)試結(jié)果)
2 (輸出網(wǎng)格劃分調(diào)試結(jié)果)
H4—1 (輸出節(jié)點坐標(biāo)系轉(zhuǎn)換格式調(diào)試結(jié)果)
2 (輸出位移更新調(diào)試結(jié)果)
H5—1 (輸出pre-單元、單元特性(characteristics)以及單元場載荷調(diào)試結(jié)果)
前面按照ansys5.5上的藍(lán)本描述了一下如何在2000下用upf進(jìn)行ansys的二次開發(fā)。ansys本身提供了一個makefile文件,使用該文件會導(dǎo)致如下問題:
1. 找不到df lib中的三個庫函數(shù),需要手工拷貝
2. 找不到ansysex.def文件,需要手工拷貝
3. 也是最重要的,每次修改完自己用戶單元程序,如uel101.f等時,執(zhí)行 anscust,系統(tǒng)不能生成新混編成的ansys.exe文件,而是告訴你ansys.exe 還是最新的,不需要進(jìn)行重編,最后只好把現(xiàn)有的ansys.exe等刪掉后才能重編 以上這些問題都是由于ansys本身提供的這個makefile不完善造成的,小弟閑暇之余 重新寫了一個makefile.簡化了二次開發(fā)的過程:(以user101單元為藍(lán)本)
1. 新建自己的目錄,把a(bǔ)nsys57/customize/user/intel下的anscust.bat,uel101.f
uec101.f拷貝到這個目錄下,同時把下面我提供的makefile拷貝到該目錄下。
2. 直接執(zhí)行anscust.bat文件,就混編成功。
3. 修改完uel101.f后,直接執(zhí)行anscust.bat,將重編新的ansys.exe
注:1如果你想恢復(fù)最初狀態(tài),在該目錄下簡單執(zhí)行nmake clean即可
2我寫的這個makefile文件里有個DFLIB的宏定義,如果和你的DFLIB路徑不一, 請手工改一下,否則還是無法找到DF LIB里面的三個文件.(其實你可以編輯一下 anscust.bat里面關(guān)于LIB宏的重定義,把DFLIB的路徑加進(jìn)入,就沒有了這些煩惱, 呵呵,反正改makefile或者anscust.bat都是一次性的工作:),我也是在環(huán)境變量里找不到DF根目錄的表述才不得已寫了一個宏。)
下面就是我的makefile文件,因為不長,就不提供下載了,直接貼這里:)
#MakeFile used for upf under win2000,you should have installed
#Ansys57&&Visual Studio!
DFLIB=d:\Microsoft Visual Studio\DF98\LIB
ALL : Ansys.exe
CLEAN:
-@erase "*.obj"
-@erase "Ansys.*"
LINK32=link.exe
LINK32_FLAGS=/out:Ansys.exe -map:Ansys.map -debug:none -opt:noref \
-def:"$(ANSYS57_DIR)\custom\user\intel\ansysex.def" \
-machine:i386 -LARGEADDRESSAWARE -subsystem:windows \
-base:0x79000000 -stack:0x1000000 -delayload:ctl3d32.dll \
-delayload:winmm.dll -delayload:ansysb.dll \
-delayload:mnflib.dll \
-nodefaultlib \
"$(DFLIB)\DFCONSOL.lib" "$(DFLIB)\DFPORT.lib" \
"$(DFLIB)\DFORMD.lib" ansys1.lib ansys2.lib \
kernel32.lib advapi32.lib netapi32.lib \
user32.lib gdi32.lib anslibx.lib ansysb.lib \
comdlg32.lib comctl32.lib winspool.lib vfw32.lib \
winmm.lib ctl3d32.lib glu32.lib opengl32.lib \
msvcrt.lib msvcprt.lib mnflib.lib oldnames.lib \
mpr.lib wsock32.lib siappst.lib Delayimp.lib \
htmlhelp.lib lmgr_md.lib lm_new_md.obj \
lmappfil.obj nt_WinAnsys.obj nt_uiloop.obj \
nt_WinGUI.obj nt_WinMain.obj INEXNT.obj \
MATHLIBC.obj elshfn.obj pElData.obj WinAnsys.res \
masscoeFtri.obj mscoef.obj nodf10.obj nodfTri.obj \
nshpderv.obj stcoef.obj stcoefTri.obj thcoef.obj \
thcoefTri.obj Trinshpderv.obj sstiff2d.obj \
sstiff3d.obj amgsolver.obj amg_init.obj \
elcjfill.obj tess_info.obj userlink.obj
LINK32_OBJS= *.obj
Ansys.exe: $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)

登錄后免費查看全文
立即登錄
App下載
技術(shù)鄰APP
工程師必備
  • 項目客服
  • 培訓(xùn)客服
  • 平臺客服

TOP

2
2
1