不知火舞的被虐|伊人天伊人天天综合网|博洛尼亚天气|任你懆这里只有精品4|久久美日韩精品久久|掌中之物漫画免费阅读观看|0丨d老妇

ansys編寫函數的案例

umat子程序編寫常用的fortran函數分享(一)
計算2*2矩陣的跡: subroutine trace2x2(a,aii) implicit none real(8), intent(in) :: a(2,2) real(8), intent(out) :: aii aii = a(1,1)+a(2,2) return end subroutine trace2x2 計算3*3矩陣的跡: subroutine trace3x3(a,aii) implicit none real(8), intent(in) :: a(3,3) real(8), intent(out) :: aii aii = a(1,1)+a(2,2)+a(3,3) return end subroutine trace3x3 將向量(9*1:變形梯度)轉化為3*3矩陣存儲 subroutine vecmat9(dvin,dmout) implicit none real(8), intent(in) :: dvin(9) real(8), intent(out) :: dmout(3,3) integer :: i dmout(1,1) = dvin(1) dmout(1,2) = dvin(2) dmout(1,3) = dvin(3) dmout(2,1) = dvin(4) dmout(2,2) = dvin(5) dmout(2,3
展開
umat子程序編寫常用的fortran函數分享(四)
subroutine Voigt_to_forth(b,a) include 'ABA_PARAM.INC' dimension a(3,3,3,3), b(6,6) do i = 1,3 do j = 1,3 ia = i if (i.ne.j) ia=9-i-j do k = 1,3 do l = 1,3 ib = k if (k.ne.l) ib=9-k-l a(i,j,k,l) = b(ia,ib) if (ia.gt.3) a(i,j,k,l) = a(i,j,k,l) / 2 if (ib.gt.3) a(i,j,k,l) = a(i,j,k,l) / 2 end do end do end do end do return end sgn函數
展開
提高代碼質量:如何編寫函數
for循環嵌套優化 for循環嵌套相比于if嵌套來說更加復雜,閱讀起來會更麻煩,下面說說幾點要注意的東西: 1、最多只能兩層for循環嵌套 2、提取內層循環到新函數中 3、多層循環時,不要簡單地位索引變量命名為i,j,k等,容易造成混淆,要有具體的意思 提取復雜邏輯,語義化 有的時候,我們會寫出一些比較復雜的邏輯,閱讀代碼的人看到后可能搞不清楚要做什么,這個時候,就應該提取出這段復雜的邏輯代碼。 這段代碼表示當年齡大于18并且是男性的話,可以doSth,但是還是不夠清晰,可以將其提取出來 雖說多了一個函數,但是代碼更加清晰和語義化了。 總結 本文從函數命名,函數參數和函數的代碼編寫三個方面談了關于如何編寫好一個函數的感受和想法。文中提到了很多具體的情況,當然日常編碼中肯定會遇到更多復雜的情況可能我暫時沒有想到。我簡單的歸納了幾點: 1、準確地對變量、函數命名 2、不要有重復邏輯的代碼 3、函數的行數不要超過20行,這里的20行只是個大概,并不一定是這個數字 4、減少嵌套 我相信大家一定會很多關于這方面的經驗,歡迎進行交流,共同提高代碼質量。
展開
umat子程序編寫常用的fortran函數分享(三)
計算3*3矩陣的逆矩陣 subroutine inv3x3(A,invA,det) implicit none real(8), intent(in) :: A(3,3) real(8), intent(out) :: invA(3,3), det integer :: i,j call deter3x3(A,det) if (abs(det) < 1e-6) then invA=0.0d+0 else invA(1,1)=((A(2,2)*A(3,3))-(A(2,3)*A(3,2)))/det invA(2,1)=-((A(2,1)*A(3,3))-(A(2,3)*A(3,1)))/det invA(3,1)=((A(2,1)*A(3,2))-(A(2,2)*A(3,1)))/det invA(1,2)=-((A(1,2)*A(3,3))-(A(1,3)*A(3,2)))/det invA(2,2)=((A(1,1)*A(3,3))-(A(1,3)*A(3,1)))/det invA(3,2)=-((A(1,1)*A(3,2))-(A(1,2)*A(3,1)))/det invA(1,3)=((A(1,2)*A(2,3))-(A(1,3)*A(2,2)))/det invA(2,3)=-((A(1,1)*A(2,3))-(A(2,1)*A(1,3)))/det invA(3,3)=((A(1,1)*A(2,2))-(A(1,2)*A(2,1)))/det endif return end subroutine inv3x3 計算2*2矩陣的逆: subroutine inv2x2(A
展開
ansys編寫函數圖1
umat子程序編寫常用的fortran函數分享(二)
3*1向量叉乘: subroutine vecprod(dvin1,dvin2,dvout) implicit none real(8), intent(in) :: dvin1(3), dvin2(3) real(8), intent(out) :: dvout(3) dvout(1)=dvin1(2)*dvin2(3)-dvin1(3)*dvin2(2) dvout(2)=dvin1(3)*dvin2(1)-dvin1(1)*dvin2(3) dvout(3)=dvin1(1)*dvin2(2)-dvin1(2)*dvin2(1) return end subroutine vecprod 3*1向量點乘: subroutine dotprod(dvin1,dvin2,dvout) implicit none real(8), intent(in) :: dvin1(3), dvin2(3) real(8), intent(out) :: dvout(3) dvout = dvin1(1)*dvin2(1)+dvin1(2)*dvin2(2)+dvin1(3)*dvin2(3) dvout = abs(dvout) return end subroutine dotprod 3*3矩陣的行列式的值: subroutine deter3x3(dmin,d) implicit none real(8), intent(in) :: dmin(3,3
展開
六自由度機械臂五次多項式軌跡規劃(Fivejtraj_Function自編寫函數 ¥56
clear,clc,close all format compact robotModel=4;DH_Param;JointNum=length(DH); ROCR6v2 關節2、3偏置 qlim=deg2rad([-179,179;-146,146;-146,146;-179,179;-179,179;-179,179]); for i=1:JointNum L(i)=RevoluteMDH('d',DH(i,3),'a',DH(i,2),'alpha',deg2rad(DH(i,1)), ... 'offset',deg2rad(DH(i,4)),'qlim',qlim(i,:)); end robot=SerialLink(L,'name','robot'); robot.display(); robot = robot:: 6 axis, RRRRRR, modDH, fastRNE +---+-----------+-----------+-----------+-----------+-----------+ | j | theta | d | a | alpha | offset | +---+-----------+-----------+-----------+-----------+-----------+ | 1| q1| 0.1215| 0| 0| 0| | 2| q2| 0.1225| 0| 1.5708| -1.5708| |
展開
從形函數函數的連續可導性到ansys結果中的節點解與單元解的差異
如題,《從形函數函數的連續可導性到ansys結果中的節點解與單元解的差異》,形函數對結果的影響大部分人都能聯想到二次單元比線性單元求得的結果更精確,但該文要表達的不僅如此,而是從更一般地討論怎么從單元的形函數來理解節點解與單元解之間的差異。 首先討論單元的階次。作為基礎我們應該明白網格與單元的區別,網格是將幾何體離散化后的結構,即組成幾何體的微元,單元是這些微元的幾何、物理或數學屬性(這里我們并不打算詳細討論單元的這些屬性,但是這些知識會方便對本文的理解)。我們經常在使用ansys或其他CAE軟件時經常會遇到單元的選擇以及單元階次的選擇,一般一種單元包括線性單元和二次單元甚至更高級的單元,比如在ansys中經常被使用的shell181(左)和shell281(右),線性單元使用的形函數是一次的多項式,高次單元使用的形函數是高次的多項式,形函數用于描述相鄰節點之間的位移場,所以高次的單元可以更好的描述形狀復雜的幾何體。 不同于常規材料力學中通過平衡方程求解(首先求得的解是力解),有限元方式求解的特點是首先求解出的結果是節點的位移解,即displacement of nodes,所有的節點位移形成了位移場,在空間上位移場一定是連續的,但是不一定是平滑的。哎哎,是不是特別熟悉的感覺,正是和高數中函數的連續性和可導性兩個性質非常相似,不用奇怪,位移場本來就是用函數描述的,所以自然就存在函數的性質,所以用函數的性質來理解就可以方便解釋一些現象了,下圖分別是用兩種形函數描述的位移場,在有限元求解后得到的首先是節點位移解,即圖中5個節點的位移,假如每個節點的位移用坐標x\y\z的函數來表示,然后通過形函數插值得到相鄰節點之間的位移(也是xyz的函數),上圖是用一次形函數插值,下圖是用二次形函數插值。
展開
ansys編寫游戲
ansys編寫游戲 一 、將battle.mac文件放到ansys工作路徑下 二、在ansys命令流窗口輸入battle 三、運行結果 感興趣的可以下載運行 battle.rar
ANSYS--編寫宏的建議
在宏中加入編寫者的名字、編寫的日期、針對的ANSYS版本也是非常有用的。因為可以幫助其他用戶了解該宏,并根據最新的版本進行更新。記住編寫宏的第一定律:今天的宏在明天就會變異成象形文字。現在看起來充滿邏輯和顯而易見的事,下周就會需要三個小時來破解,半年后的難度可能就僅次于曼哈頓計劃了。現在花一、兩分鐘在宏的開始添加的信息會讓你和其他使用者以后更輕松。 注釋 根據上面的第一定律,我們應該把正在做的和為什么這樣做都完全寫入注釋,就象將來的使用者對這個宏毫無了解一樣。因為六個月后,你可能就是這個使用者。 參數的使用 以下劃線開始的參數是ANSYS用于UIDL菜單、追蹤信息(寫入CDWRITE,LSWRITE文件,關鍵字狀態等)的保留參數。因此最好不要以下劃線開始來命名參數,以避免和現在或以后ANSYS會使用的參數沖突。 跟蹤下劃線參數 這種情況發生在編寫的宏將來會被其他人使用的情況,實質上我們一般都會和同事共享宏,因此幾乎所有的宏都是這樣的。每一個宏都應該在宏的開始和結尾通過“*DEL,,PRM”命令清除參數。這會使你在宏中創建的參數不會與已定義的參數產生沖突或帶來問題。 局部參數 任何人都可以在自己的宏中使用如AR20-AR99的局部參數。局部參數只能在指定的宏中使用,并且在該宏完成以后自動消失。局部參數還可以用于嵌套的宏中。 普通參數 如果你編寫的宏只是自己使用,那么你可以使用任何你喜歡的參數名。如果你的宏已經調試并且運行成功,你可以在宏的開始使用“/NOPR”使無用的信息不出現在輸出窗口中。而在運行完宏以后,使用“/GOPR”重新激活輸出窗口。確保在“IF“命令之后使用“ENDIF”來結束;使用“*EXIT”而不要使用“*GO”來退出IF循環。
展開
ANSYS 內部函數
VLNEXT(N) Next higher volume number above N in selected set (or zero if none found). 30.距離函數 DISTND(N1,N2) Distance between nodes N1 and N2. DISTKP(K1,K2) Distance between keypoints K1 and K2. DISTEN(E,N) Distance between the centroid of element E and node N. Centroid is determined from the selected nodes on the element. 31.角度函數 (缺省單位為弧度,單位變換用 *AFUN 命令) ANGLEN(N1,N2,N3) Subtended angle between two lines (defined by three nodes where N1 is the vertex node). Default is in radians. ANGLEK(K1,K2,K3) Subtended angle between two lines (defined by three keypoints where K1 is the vertex keypoint). Default is in radians. 32.最近實體函數 NNEAR(N) Selected node nearest node N. KNEAR(K) Selected keypoint nearest keypoint K. ENEARN(N) Selected element nearest node N.
展開
ansys的取值函數
有關實體狀態的取值函數 NSEL(N) ESEL(E) KSEL(K) LSEL(L) ASEL(A) VSEL(V) 表示某個實體狀態,其返回值-1,沒有選中,0,沒有定義,1,被選中 有關下一個被選實體的取值函數 NDNEXT(N) ELNEXT(E) KPNEXT(K) LSNEXT(L) ARNEXT(A) VLNEXT(V) 表示編號大于N,E,K,L,A,V的下一個被選實體 有關實體位置的取值函數 CENTRX(E) CENTRY(E) CENTRZ(E) 單元E在中心位置的X,Y,Z的坐標系(直角坐標系),有所選的節點決定 NX(N) NY(N) NZ(N) KX(K) KY(K) KZ(K) 節點N或關鍵點K在激活坐標系中X,Y,Z的坐標值 LX(L,LFRAC) LY(L,LFRAC) LZ(L,LFRAC) 線段L在長度比率為LFRAC(0~1)時的X,Y,Z的坐標值 有關最靠近某位置的節點或關鍵點編號的取值函數 NODE(X,Y,Z) KP(X,Y,Z) 被選擇的節點嘴靠近X,Y,Z位置的節點或關鍵點編號(在激活的坐標系下,如果存在多個節點或關鍵點,那么取其最小值) 有關距離的取值函數 DISTND(N1,N2) DISTKP(K1,K2) 節點或關鍵點兩點之間的距離 DISTEN(E,N) 單元E的中心點與節點N之間的距離,中心點將由單元上被選擇的節點確定 有關角度的取值函數 ANGLEN(N1,N2,N3) ANGLEK(K1,K2,K3) 節點或關鍵點兩條邊之間的夾角,缺省時單位為弧度,其中所選擇的3個節點中,N1或K1是頂點 有關最靠近實體的節點,關鍵點和單元的取值函數 NNEAR(N) 最靠近節點N的被選節點 KNEAR(K) 最靠近關鍵點K的被選關鍵點 ENEARN(N) 最靠近節點N的被選單元,單元的位置將由被選節點確定 有關面積的取值函數
展開
ansys編寫函數圖2
ANSYS的“get”函數列表
自己收藏并與大家分享,來自于ANSYS的help “get函數”可用于某些項,并可用于代替*get命令。函數返回值并在函數被輸入的地方使用它,繞過了用參數名存儲值和在要使用值的地方輸入參數名的需要。 例如,假設要計算兩個節點的平均X位置。使用*GET命令,參數L1可以指定節點1的X位置,參數L2可以指定節點2的X位置。然后,可以從mid=(L1+L2)/2計算mid位置: *GET,L1,NODE,1,LOC,X *GET,L2,NODE,2,LOC,X MID=(L1+L2)/2 但是,使用返回節點N的X位置的節點位置“get ”函數NX(N),可以直接計算MID,而不需要中間參數L1和L2: MID=(NX(1)+NX(2))/2 除非另有說明,否則Get函數返回活動坐標系中的值。 Get函數參數本身可能是參數或其他Get函數。get函數NELEM(E,NPOS)返回元素編號E的NPOS位置的節點號。組合函數NX(NELEM(E,NPOS))返回該節點的X位置。 下表列出了按功能分組的可用get函數。*GET命令還列出GET函數作為*GET items的替代項(如果適用) Table 1: *GET - Get Function Summary "Get Function" Summary Entity Status Get Function Description NSEL(N) Status of node N: -1=unselected, 0=undefined, 1=selected. ESEL(E) Status of element E: -1=unselected, 0=undefined, 1=selected.
展開
Ansys Wrokbench分段復雜函數載荷,加載方式記錄 ¥10
問題: Ansys Workbench的載荷加載形式有三種,constant/table/function。Constant是在載荷步內給定恒定值;table形式較為便捷,可以在定義每個子步的載荷大小; function形式可以輸入以time/X/Y/Z為變量的簡單方程。 但是仍有某些形式的載荷較難輸入,例如分段復雜函數載荷等。 解決方法: 需要使用Ansys經典界面的function功能編輯分段載荷獲得ADPL載荷命令;再利用Workbench中command的形式施加載荷。 操作方式: 1. Ansys經典中function公式編輯器輸入分段函數。 在function頁卡中選著變量time,在Regime頁卡中逐個定義分段函數; 定義完成后點擊保存,并輸入函數名“TEST3.func” 2. 再次點擊標題欄的Parameters>Functions>Read From files>找到剛才保存的TEST3.func。并在Table Parameter Name中給編輯導入的分段函數命名PForce。此后分段函數即被公式編輯器編譯為表格數組形式,數組的名稱為:PForce。 3. 提取分段函數數值的ADPL命令形式,用于Workbench使用。 完成分段函數導入和命名后,在下拉列表中的File>List>Log file中可以查看經典界面GUI操作對應的ADPL命令。在這里可以將上述function公式編輯器導入的分段函數數組對應ADPL命令顯示出來。(有時log file顯示不及時,再重復一次即可) 4. 在Workbench內創建加載remote point點,并設定加載點的ADPL name為“LoadPoint“,用于加載。
展開
ANSYS知識普及4——如何施加函數變化的表面載荷 (ANSYS專家編輯,非原創,歡迎轉摘)
本人準備出一個ANSYS知識普及系列,將有用的網上資料歸攏,由于知識水平有限,不對之處請諒解。也歡迎各位網友提供好的資料分享,讓我們共同完成這個ANSYS知識普及系列。 編輯人:技術鄰ANSYS專家 業務咨詢網址:http://www.yqgqt.org.cn/content/other/402981 (打個小廣告) 聲 明:1、ANSYS知識普及系列中所有資料均來自網上; 2、如侵犯知識產權,請聯系ANSYS專家本人或者技術鄰,我將第一時間刪除。 小技巧:加本人關注,可以及時觀看本人發布的技術貼 ANSYS具有函數加載功能,可以很方便地在模型表面施加函數變化的各種載荷,在ANSYS中,也可以通過變通的方式來實現此功能,其思路是: 首先選定所要施加函數變化表面載荷的表面上的節點,利用ANSYS的參數數組和嵌入函數知識寫一簡單的命令流,定義好相應節點位置的面載荷值,然后通過在節點上施加面載荷來完成。 下面以在一圓柱表面施加函數變化載荷為例: /prep7 et,1,45 cyl4,,,0.5,,,,3 vsweep,all asel,s,loc,y,0.01,1 nsla ! *get,nmax,node,,num,max, *get,nmin,node,,num,min, *afun,deg *dim,t1,array,nmax,1,1, csys,1 *do,k,nmin,nmax *if,nsel(k),eq,1,then t1(k)=1000*sin(ny(k)) *else t1(k)=0 *endif *enddo ! sffun,pres,t1(1) sf,all,pres,0
展開
Ansys Zemax光學設計軟件技術教程:如何編寫ZPL宏:計算環帶垂軸色差
該宏將產生以下繪圖: 光研科技南京有限公司是國內可靠的Ansys Zemax光學設計軟件代理商!公司已經為廣大企業,研究所以及高校提供了很多優秀的相關產品和服務,在行業內建立了值得信任的口碑。   Ansys Zemax光學軟件   咨詢與訂購方式   聯系人:光研科技南京有限公司徐保平   手機號:15051861513   微信號:13627124798