
發(fā)布
注冊
/
登錄ansys 牛頓迭代的案例
Fortran基礎編程——牛頓拉弗森迭代
今日推文主要分享一個非線性方程的牛頓-拉弗森迭代解法,借助Fortran語言,講述Fortran編程時需要注意的地方。理論及在Abaqus中的實現(xiàn)過程已在上幾期推文基于Abaqus的Newton-Raphson算法中說明,本次主要說明Fortran編程時需要注意的地方,本文代碼主要參考:《Fortran程序設計權威指南》。
例:
主程序
主程序:Solve.f90,子程序:New_Raphson.f90,函數文件:function.f90,Module模塊:NEWTON.F90。將整個程序分塊編寫,在主程序中調用即可,大型的Fortran中顯得尤為重要。
主程序代碼:
PROGRAM main
! 主程序:Newton迭代法計算方程的根
use NEWTON
OPEN(UNIT=11,FILE='FOUT1510.TXT')
OPEN(UNIT=12,FILE='IM_RESULT1510.TXT')
CALL SOLVE(X,ITER)
WRITE(11,46)X,ITER
46 FORMAT(T5,'Newton迭代法計算方程的根',//,&
3X,'X= ',F15.10,/,&
3X,'ITER=',I5)
END PROGRAM main
由上述程序可看出,主程序只有use、call、輸出語句,甚至可以將輸出語句編一個子程序,在主程序中用call調用即可,如此以來,使得自己的代碼更加簡潔明朗,在編寫Python、Matlab也是同樣的道理。
展開 MATLAB牛頓迭代求根
一個基于MATLAB進行牛頓迭代的簡單案例~
NewtonRaphson.zip
MATLAB牛頓-辛普森(Newton-Raphson)迭代求根
fclose all; close all; clear; clc; %% Define functions and parameters syms x; f = 0.1*(x^2 + 2*x + 1); diff_f = diff(f,x); n_max = 100; e_tol = 1e-5; x_0 = 5; f_0 = subs(f,x,x_0); error = 10*e_tol; t1
ANSYS Workbench分析實例之牛頓擺
對于一些專業(yè)的多體動力學軟件,如MSC的Adams等,做這樣的仿真比ANSYS就簡單多了,以下是筆者用Admas做的牛頓擺運動仿真,花費的時間不到ANSYS的三分之一。
注:本文做的只是一個示意性算例,結果不具備實際工程意義。

ANSYS Workbench分析實例之牛頓擺
對于一些專業(yè)的多體動力學軟件,如MSC的Adams等,做這樣的仿真比ANSYS就簡單多了,以下是筆者用Admas做的牛頓擺運動仿真,花費的時間不到ANSYS的三分之一。
ANSYS求解過程中的迭代曲線圖應該怎么看
上面這張圖,用過ANSYS的朋友一定都很熟悉吧,在開始求解到求解結束的整個漫長過程中,這幅圖都會陪伴我們度過每一秒。
那么,圖中的各個曲線分別代表了什么意思呢?下面來說一說
Time=1
這是時間標記,如果你的分析是多荷載步的,就會看到Time=1、2、3……如果在定義荷載步的過程中定義了時間的數值,那么這里就會按照用戶定義的時間顯示。時間很重要,可以在遇到程序意外錯誤的時候,通過時間數據找到“發(fā)生計算問題的時間點”以便于我們對模型的再修改。
橫軸: Cumulative Iteration Number / 累積迭代數
在非線性問題的求解過程中,程序利用求解器進行迭代計算來得到最終的解答。橫坐標的“數量”大小,和項目的非線性程度直接相關,越接近線性問題,迭代數越少,非線性程度越高或遇到難以收斂的時候,迭代次數就會顯著增加。
縱軸: Absolute Convergence Norm / 絕對收斂范數
既然叫“范數”,聯(lián)想到我們在建模過程中輸入的各種數值都不是“范數”形式的,因此程序在求解過程中,在進行計算的同時,也把相應的變量進行了“規(guī)范化”處理,比如有時候會進行歸一化等等。對于我們來說,縱軸的坐標數值并不重要,重要的是曲線之前的相對位置關系。
重點來了
我們來看看曲線代表了什么意思
注意上面的曲線,體現(xiàn)的是F(Force,荷載)與M(Moment,彎矩)之間的關系,用這二者來繪圖,是因為在求解計算過程中,這二者在全部單元自由度中都有相關性。在有些分析中,還會出現(xiàn)溫度、位移等。
上圖中還可見的,是CRIT和L2標簽,CRIT是criteria的縮寫,指的是收斂判別準則;L2指的是L2級范數,當然還有L0、L1級范數,這里我們叫它為計算殘差。
展開 ANSYS求解過程中的迭代曲線圖應該怎么看
上面這張圖,用過ANSYS的朋友一定都很熟悉吧,在開始求解到求解結束的整個漫長過程中,這幅圖都會陪伴我們度過每一秒。
那么,圖中的各個曲線分別代表了什么意思呢?下面來說一說
Time=1
這是時間標記,如果你的分析是多荷載步的,就會看到Time=1、2、3……如果在定義荷載步的過程中定義了時間的數值,那么這里就會按照用戶定義的時間顯示。時間很重要,可以在遇到程序意外錯誤的時候,通過時間數據找到“發(fā)生計算問題的時間點”以便于我們對模型的再修改。
橫軸: Cumulative Iteration Number / 累積迭代數
在非線性問題的求解過程中,程序利用求解器進行迭代計算來得到最終的解答。橫坐標的“數量”大小,和項目的非線性程度直接相關,越接近線性問題,迭代數越少,非線性程度越高或遇到難以收斂的時候,迭代次數就會顯著增加。
縱軸: Absolute Convergence Norm / 絕對收斂范數
既然叫“范數”,聯(lián)想到我們在建模過程中輸入的各種數值都不是“范數”形式的,因此程序在求解過程中,在進行計算的同時,也把相應的變量進行了“規(guī)范化”處理,比如有時候會進行歸一化等等。對于我們來說,縱軸的坐標數值并不重要,重要的是曲線之前的相對位置關系。
重點來了
我們來看看曲線代表了什么意思
注意上面的曲線,體現(xiàn)的是F(Force,荷載)與M(Moment,彎矩)之間的關系,用這二者來繪圖,是因為在求解計算過程中,這二者在全部單元自由度中都有相關性。在有些分析中,還會出現(xiàn)溫度、位移等。
上圖中還可見的,是CRIT和L2標簽,CRIT是criteria的縮寫,指的是收斂判別準則;L2指的是L2級范數,當然還有L0、L1級范數,這里我們叫它為計算殘差。
展開