udf編程
① fluent中udf編程提示出錯 Error: received a fatal signal (Segmentation fault). Error Object: #f
1.先初始化,迭代一步後,再導入udf--問題依舊
2.先保存退出軟體後,再重新打開--問題依舊
3.將4個udf分別拆開後,分別導入--沒有出現問題
4.將其中的兩個udf組合起來,導入--問題依舊(據此推斷是udf的問題),下面是我的udf;將DEFINE_SOURCE(liq_src…)和DEFINE_SOURCE(vap_src…)這兩個udf組合在一起,出現了開始的同樣問題。請大神幫忙看下,問題出在哪?滴水之恩,湧泉相報,謝謝大神們!!!
附件截圖是我引用udf的三個位置,附件文件是我的udf。
#include "udf.h"
#include "sg_mphase.h"
#define T_SAT 278
#define LAT_HT 2260000
DEFINE_SPECIFIC_HEAT(my_user_cp, T, Tref, h, yi)
{
real cp=1200.176+2164.7398*pow(0.35,1.16317)+0.0229*pow(T,1.306682)+0.3285*pow(0.35,1.16317)*pow(T,1.306682);
*h = cp*(T-Tref);
return cp;
}
DEFINE_SOURCE(liq_src, cell, pri_th, dS, eqn)//與下面組合後出現問題
{
Thread *mix_th,*sec_th;
real m_dot_l;
mix_th=THREAD_SUPER_THREAD(pri_th);
sec_th=THREAD_SUB_THREAD(mix_th,1);
if(C_T(cell,mix_th)>=T_SAT)
{
m_dot_l=-0.1*C_VOF(cell,pri_th)*C_R(cell,pri_th)*fabs(C_T(cell,mix_th)-T_SAT)/T_SAT;
dS[eqn]=-0.1*C_R(cell,pri_th)*fabs(C_T(cell,mix_th)-T_SAT)/T_SAT;
}
else
{
m_dot_l=0.1*C_VOF(cell,sec_th)*C_R(cell,sec_th)*fabs(T_SAT-C_T(cell,mix_th))/T_SAT;
dS[eqn]=0.0;
}
return m_dot_l;
}
DEFINE_SOURCE(vap_src,cell,sec_th,dS,eqn)//與上面組合後出現問題
{
Thread *mix_th,*pri_th;
real m_dot_v;
mix_th=THREAD_SUPER_THREAD(sec_th);
pri_th=THREAD_SUB_THREAD(mix_th,0);
if(C_T(cell, mix_th)>=T_SAT)
{
m_dot_v=0.1*C_VOF(cell,pri_th)*C_R(cell,pri_th)*fabs(C_T(cell,mix_th)-T_SAT)/T_SAT;
dS[eqn]=0.0;
}
else
{
m_dot_v=-0.1*C_VOF(cell,sec_th)*C_R(cell,sec_th)*fabs(T_SAT-C_T(cell,mix_th))/T_SAT;
dS[eqn]=-0.1*C_R(cell,sec_th)*fabs(C_T(cell,mix_th)-T_SAT)/T_SAT;
}
return m_dot_v;
}
DEFINE_SOURCE(enrg_src,cell,mix_th,dS,eqn)
{
Thread *pri_th,*sec_th;
real m_dot;
pri_th=THREAD_SUB_THREAD(mix_th,0);
sec_th=THREAD_SUB_THREAD(mix_th,1);
if(C_T(cell, mix_th)>=T_SAT)
{
m_dot=-0.1*C_VOF(cell,pri_th)*C_R(cell,pri_th)*fabs(C_T(cell,mix_th)-T_SAT)/T_SAT;
dS[eqn]=-0.1*C_VOF(cell,pri_th)*C_R(cell,pri_th)/T_SAT;
}
else
{
m_dot=0.1*C_VOF(cell,sec_th)*C_R(cell,sec_th)*fabs(T_SAT-C_T(cell,mix_th))/T_SAT;
dS[eqn]=-0.1*C_VOF(cell,sec_th)*C_R(cell,sec_th)/T_SAT;
}
return LAT_HT*m_dot;
}
② 關於udf編程,以下程序密度rho_l=C_R(c,t),這個C_R(c,t)能代表液相l的密度嗎並沒有定義啊,如何識別呢
C_R和C_VOF是fluent中預定義好的宏,就像C語言里提前寫好的子程序一樣,直接調用就行。c和t是載入UDF時對應的網格和相
③ Fluent熱源設置:生熱速率隨溫度變化,UDF怎麼編寫啊!!
#include "udf.h"。real T=C_T(c,t)這是fluent本身自帶宏,用於獲取數據儲存胞元的溫度值,關於pow(x,y)函數則是C++的語法結構,數學表達式是x^y。
基本用戶定義函數是一類代碼,對MYSQL伺服器功能進行擴充,通過添加新函數,性質就象使用本地MYSQL函數abs()或concat().UDF是用C(或C++)寫的。也許還可以用BASIC,C#或其它什麼語言。
(3)udf編程擴展閱讀:
FLUENT軟體包含基於壓力的分離求解器、基於密度的隱式求解器、基於密度的顯式求解器,多求解器技術使FLUENT軟體可以用來模擬從不可壓縮到高超音速范圍內的各種復雜流場。FLUENT軟體包含非常豐富、經過工程確認的物理模型。
因而FLUENT能達到最佳的收斂速度和求解精度。靈活的非結構化網格和基於解的自適應網格技術及成熟的物理模型,可以模擬高超音速流場、傳熱與相變、化學反應與燃燒、多相流、旋轉機械、動/變形網格、雜訊、材料加工等復雜機理的流動問題。
④ 跪求大神指導。fluent udf編程 入口風速隨高度不同變化的公式為 v=30*{(x/10)的0.16次方}
你好,我最近也在學習UDF,都是為了畢業(哭了)
我看了下你寫的UDF,和我最近在看的一個UDF例子一樣,就是公式改成了你所需要的。我覺得原本的例子就有問題,錯誤之處:「float x[3]」和「y = x[1];」很明顯前後不一致了。。
根據我學習的其他UDF例子來看,x[?]中的?分別有著這樣的對應:0是x方向,1是y方向(2可能就是z方向吧)。原本那個例子是x方向的速度v與y的坐標有關,也就是v(y)=。。。的公式。那udf中應當為float x[1].
你的公式是與x的坐標值有關,應當為
#include "udf.h"
DEFINE_PROFILE(x_velocity,thread,nv)
{
float x[0];
float x;
face_t f;
begin_f_loop(f, thread)
{
F_CENTROID(x,f,thread);
x= x[0];
F_PROFILE(f, thread, nv)
= 30.*pow(x/10.,0.16);
}
end_f_loop(f, thread)
}
這是我的理解,希望有真正的大神來看看是否正確,你也可是試試這個能不能用,再交流。
小木蟲是一個好地方,建議你也在那裡問問。
⑤ fluent入口速度用udf編程,分段函數怎麼編
這個可以用udf編寫 。
liukan12
#include "udf.h"
DEFINE_PROFILE(velocity1,t,i)/* 定義屬性宏 三個參數 第一是名稱 第二個是線程指針 第三個是變數標號 */
{
real x[ND_ND]; /* 存放2D或者3D位置參數 */
real y; /* y值為模型中的y坐標值 */
cell_t f; /* 創建網格體指針 */
begin_c_loop(f,t)/* 體線程t中所有網格體指針f的遍歷循環 */
⑥ fluent怎麼udf如何編程
用戶自定義函數,或UDF,是用戶自編的程序,它可以動態的連接到Fluent求解器上來提高求解器性能。用戶自定義函數用C語言編寫。使用DEFINE宏來定義。UDF中可使用標准C語言的庫函數,也可使用Fluent Inc.提供的預定義宏,通過這些預定義宏,可以獲得Fluent求解器得到的數據。
⑦ 求助FLUENT中UDF編程解決interface界面的數據傳遞
#include "udf.h"
#include "math.h"
DEFINE_PROFILE(inlet_x_velocity, thread, index)
{
real x[ND_ND];
real y,z;
face_t f;
begin_f_loop(f, thread)
{
F_CENTROID(x,f,thread);
// x=x[0];
y=x[1];
// z=x[2];
if(y<0.0181)
F_PROFILE(f, thread, index) =2.0994*log(y)+9.4438;
else
F_PROFILE(f, thread, index) =15;
}
end_f_loop(f, thread)
}
⑧ Fluent UDF添加源項編程
添加能量源項是比較簡單的。define-boundary
conditions---在zone中選擇添加源項的區域,點擊set----選擇
source
terms
選項(注意在該項前打鉤)---其中energ中用來添加能量源項,可以添加常數項或udf編寫的
⑨ 電場力作為動量源項進行UDF編程對嗎
添加能量源項是比較簡單的。Define-boundaryconditions---在zone中選擇添加源項的區域,點擊set----選擇sourceterms選項(注意在該項前打鉤)---其中energ中用來添加能量源項,可以添加常數項或udf編寫的