udf函數(shù)python udf實(shí)例

fluent中有好幾個(gè)cellzone,get_domain取的是哪個(gè)

Fluent UDF中經(jīng)常用到thread*類(lèi)型的指針,一般可以通過(guò)如下函數(shù)來(lái)獲取。

企業(yè)官網(wǎng)是企業(yè)形象的一張重要名片。創(chuàng)新互聯(lián)的成都官網(wǎng)定制服務(wù),能夠?qū)⒊啥季W(wǎng)頁(yè)設(shè)計(jì)與企業(yè)的實(shí)力&公信力、產(chǎn)品服務(wù)優(yōu)勢(shì)、文化價(jià)值觀等有機(jī)結(jié)合,把握企業(yè)的獨(dú)特之處,突出重點(diǎn)核心內(nèi)容,并以恰如其分的設(shè)計(jì)風(fēng)格,抓住目標(biāo)用戶(hù)的關(guān)注點(diǎn)和興趣點(diǎn),幫助企業(yè)塑造好第一印象,成都全網(wǎng)營(yíng)銷(xiāo)展現(xiàn)公司實(shí)力。成都官網(wǎng)定制,為你解決成都創(chuàng)新互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案。

Lookup_Thread(Domain*domain, int id)

其中id是邊界面的ID或者cell區(qū)域的ID,如下圖中outlet邊界的ID是2。

遺憾的是,網(wǎng)格載入Fluent后,其ID都是無(wú)法事先確定的。很多朋友只有在UDF源碼開(kāi)頭用如下代碼根據(jù)事后查到的ID手動(dòng)定義,每次網(wǎng)格一變化又得重新在源碼里面修改,重新編譯,十分影響通用性。

#define OUTLET_ID 2 //每次不同網(wǎng)格需要根據(jù)情況修改后重新編譯

Domain* domain=Get_Domain(1); //非多相流或多相流混合物的domain永遠(yuǎn)是1

Thread*tf=Lookup_Thread(domain, OUTLET_ID);

有沒(méi)有一種辦法能夠一次性源碼編譯達(dá)到適應(yīng)于所有網(wǎng)格呢?答案當(dāng)然是肯定的,你可以通過(guò)zone名字來(lái)獲取其ID號(hào),然后畫(huà)網(wǎng)格的時(shí)候只要取相同名字即可。實(shí)現(xiàn)該功能的函數(shù)源代碼如下(插件VC++ UDF Studio 2022R1學(xué)術(shù)版上編譯通過(guò))

#include "udf.h"

#include "SuperUdfExtension.h" //VC++ UDF Studio自帶的擴(kuò)展庫(kù)頭文件,具體參考該軟件中的編程手冊(cè)

#pragma comment(lib, "SuperUdfExtension.lib") //VC++ UDF Studio自帶的擴(kuò)展庫(kù)的lib文件

int GetZoneIdByName(CString zoneName) //適用于所有Fluent版本

{

int returnID=-1;

Domain*domain=Get_Domain(1);

CString strCurrentFluentVersion;

strCurrentFluentVersion.Format("%d.%d", RampantReleaseMajor, RampantReleaseMinor);//格式化當(dāng)前Fluent版本為字符串形式

double fCurrentFluentVersion = atof(strCurrentFluentVersion.GetBuffer()); //當(dāng)前Fluent版本轉(zhuǎn)為double類(lèi)型

if(fCurrentFluentVersion=19.2) // 對(duì)于Fluent6.3-19.2,只能調(diào)用VC++ UDF Studio擴(kuò)展庫(kù)

{

SuperUdf_Initialize(AfxGetInstanceHandle()); //調(diào)用VC++ UDF Studio擴(kuò)展庫(kù)中任何函數(shù)之前必須調(diào)用此初始化函數(shù),具體參考該軟件中的編程手冊(cè)

#if !RP_NODE

returnID=SuperUdf_GetZoneIdByName(zoneName.GetBuffer()); //調(diào)用VC++ UDF Studio擴(kuò)展庫(kù)中的SuperUdf_GetZoneIdByName函數(shù),具體參考該軟件中的編程手冊(cè)

#endif

host_to_node_int_1(returnID);

}

else // 對(duì)于Fluent version =19.3,有直接UDF函數(shù)可以實(shí)現(xiàn)

{

Thread*tf;

thread_loop_f(tf, domain) //對(duì)所有面的thread進(jìn)行循環(huán)查找

{

if(0==zoneName.CompareNoCase(THREAD_NAME(tf))) //對(duì)比名字是否相同

{

returnID=THREAD_ID(tf);

break;

}

}

if(-1==returnID) //如果面的thread中無(wú)法找到匹配名字

{

Thread*tc;

thread_loop_c(tc, domain) //對(duì)所有網(wǎng)格的thread進(jìn)行循環(huán)查找

{

if(0==zoneName.CompareNoCase(THREAD_NAME(tc))) //對(duì)比名字是否相同

{

returnID=THREAD_ID(tc);

break;

}

}

}

}

return returnID;

}

DEFINE_EXECUTE_ON_LOADING(get_id, libudf)

{

int theID=GetZoneIdByName("inlet"); //根據(jù)邊界名字獲取其ID,如果返回-1表示找不到

Message("the zone id of inlet is %d\n",theID);

}

以上源代碼實(shí)現(xiàn)了通過(guò)zone名字來(lái)獲取其ID號(hào)的功能。對(duì)于Fluent19.3或更高版本,可以利用THREAD_NAME與需要的名字進(jìn)行對(duì)比,匹配情況下用THREAD_ID獲得其ID。但對(duì)于Fluent19.2或更低版本, THREAD_NAME不起作用(可能Fluent的bug),我們只能依賴(lài)于插件VC++ UDF Studio中的拓展庫(kù)函數(shù)SuperUdf_GetZoneIdByName來(lái)實(shí)現(xiàn)。是時(shí)候拋棄傻傻的#define ID了。

點(diǎn)擊閱讀全文

打開(kāi)CSDN,閱讀體驗(yàn)更佳

參與評(píng)論 請(qǐng)先 登錄 后發(fā)表或查看評(píng)論

最新發(fā)布 FLUENT UDF 入門(mén)級(jí)代碼及解釋

FLUENT UDF 入門(mén)級(jí)代碼及解釋

繼續(xù)訪問(wèn)

fluent udf手冊(cè)_FLUENT并行UDF案例

正文共:2618字9圖 預(yù)計(jì)閱讀時(shí)間:7分鐘1 前言當(dāng)計(jì)算網(wǎng)格數(shù)量巨大時(shí),如果還用串行計(jì)算的話,可以把人耗死。此時(shí)用并行計(jì)算可以顯著節(jié)省時(shí)間,筆者在實(shí)際應(yīng)用中深有體會(huì)。同樣一個(gè)案例(網(wǎng)格數(shù)量約200萬(wàn)),串行計(jì)算大約10秒鐘迭代一次,而改用25核并行計(jì)算,約2秒鐘迭代一次。其實(shí)在我看來(lái),模擬計(jì)算一定程度上比的就是計(jì)算機(jī)性能。特別當(dāng)遇到網(wǎng)格數(shù)量巨大,且物理模型復(fù)雜的計(jì)...

繼續(xù)訪問(wèn)

【Fluent Meshing】04:計(jì)算域提取

1.導(dǎo)入幾何模型 2.創(chuàng)建網(wǎng)格尺寸 右鍵選擇模型樹(shù)節(jié)點(diǎn)Model,點(diǎn)擊彈出菜單下Sizing → Scoped…彈出尺寸設(shè)置對(duì)話框 彈出對(duì)話框中如下圖所示設(shè)置參數(shù),點(diǎn)擊Create按鈕創(chuàng)建全局面尺寸分布 彈出對(duì)話框中如下圖所示設(shè)置參數(shù),點(diǎn)擊Create按鈕創(chuàng)建全局線尺寸分布 點(diǎn)擊按鈕Compute計(jì)算尺寸分布,待計(jì)算完畢后關(guān)閉對(duì)話框 3.重構(gòu)網(wǎng)...

繼續(xù)訪問(wèn)

獲取宏定義_ANSYS Fluent:關(guān)于 UDF 的數(shù)據(jù)類(lèi)型和相關(guān)的宏

在寫(xiě) Fluent UDF 的過(guò)程中,我們經(jīng)常會(huì)看到大量的諸如 d,c,f,t 這種變量,以及 domain,cell_t,face_t 等聲明。如果自定義 UDF 的需求較高,我們就需要弄明白這些東西的含義。數(shù)據(jù)類(lèi)型首先看一下 Fluent 的網(wǎng)格構(gòu)成。在“ANSYS Fluent UDF Manual”中寫(xiě)道,A mesh is broken up into control volumes, ...

繼續(xù)訪問(wèn)

Fluent的UDF官方案例(含代碼)

8個(gè)官方給定的案例(含代碼):多孔介質(zhì)、壁溫、粘度、UDS、流化床、非均勻流動(dòng)、沉降、動(dòng)網(wǎng)格。121頁(yè)內(nèi)容,提供代碼供參考,簡(jiǎn)單易學(xué)

halcon算子翻譯——get_domain

名稱(chēng) get_domain - 獲取圖像的域(ROI)。 用法 get_domain(Image : Domain : : ) 描述 算子get_domain將所有輸入圖像的定義域作為區(qū)域返回。 并行 ●支持計(jì)算設(shè)備上的對(duì)象。 ●多線程類(lèi)型:可重入(與非獨(dú)占算子并行運(yùn)行)。●多線程范圍:全局(可以從任何線程調(diào)用)?!裨谠M級(jí)別自動(dòng)并行化處理。 參數(shù) Image ...

繼續(xù)訪問(wèn)

圓柱繞流UDF-parallel主動(dòng)運(yùn)動(dòng)

# include "udf.h" //主動(dòng)運(yùn)動(dòng) static real pretime=0.0; static real timestep; static real y1=0.0; static real prev1=0.0; static int surface_thread_id1=4; static real m1=7.286; static real c1=2.644723; static real k1=600.0; static real p=999.729; static real s=.

繼續(xù)訪問(wèn)

ansys fluent udf manual 下載_【筆記】使用UDF進(jìn)行Fluent并行計(jì)算時(shí)主機(jī)與節(jié)點(diǎn)之間的數(shù)據(jù)傳遞...

導(dǎo)言:在使用Fluent進(jìn)行大規(guī)模并行計(jì)算時(shí),難免會(huì)遇到主機(jī)與節(jié)點(diǎn)之間的需要數(shù)據(jù)傳輸?shù)那闆r。Fluent在UDF使用手冊(cè)中雖然提供了關(guān)于并行計(jì)算中的數(shù)據(jù)傳輸宏的定義與格式表述,但并沒(méi)有給出相應(yīng)的示例與詳解。此外,在各平臺(tái)也難以找到較為明晰的用法解釋。本文將對(duì)Fluent應(yīng)用UDF進(jìn)行并行計(jì)算時(shí)的數(shù)據(jù)傳輸方式以及傳輸宏的使用方法進(jìn)行詳解。1. Fluent 的并行計(jì)算架構(gòu)簡(jiǎn)介圖1. Fluent 并...

繼續(xù)訪問(wèn)

Fluent UDF中判斷壁面熱邊界類(lèi)型

我們知道Fluent中壁面可以有不同的換熱邊界類(lèi)型,比如給定熱流量的類(lèi)型,給定溫度的類(lèi)型,給定對(duì)流條件的類(lèi)型等等。 UDF中有時(shí)候需要根據(jù)類(lèi)型的不同來(lái)進(jìn)行不同的處理。那么在Fluent UDF中該如何判斷一個(gè)壁面是什么類(lèi)型的熱邊界呢?這里為大家解密幾個(gè)未寫(xiě)入U(xiǎn)DF幫助手冊(cè)的宏。 宏 作用 HEAT_FLUX_WALL(Thread*tf) 判斷是否是給定熱流量的邊界 TEMPERATURE_......

繼續(xù)訪問(wèn)

UDF學(xué)習(xí)記錄

一、數(shù)據(jù)結(jié)構(gòu) Cell thread對(duì)應(yīng)zone Face thread對(duì)應(yīng)邊界 Example變量名可以隨意定義,變量名不能重復(fù) 二、幾何宏、循環(huán)宏 幾何宏 原則:宏(c,t)t指的是cell thread, 宏(f,t)t指的是face thread A[ND_ND] 圖形是三維ND_ND=3,二維ND_ND=2 F_AREA(A,f,t) 求面法向量,加上NV_MAG(A)算面的面積 循環(huán)宏 Thread_loop_c必須和begin_c_loop一起使用

繼續(xù)訪問(wèn)

條件include_FLUENT邊界條件的引用

正文共:2248字4圖 預(yù)計(jì)閱讀時(shí)間:6分鐘1 前言 太陽(yáng)能熱水器在很多太陽(yáng)能資源豐富的地區(qū)相當(dāng)常見(jiàn),筆者老家樓頂就有一臺(tái)太陽(yáng)能熱水器。在一些大型建筑中,可能是多臺(tái)設(shè)備串并聯(lián)在一起。對(duì)于串聯(lián)的模塊,一臺(tái)熱水器的出口接到另一臺(tái)的入口。假設(shè)不...

繼續(xù)訪問(wèn)

Fluent UDF中使用智能動(dòng)態(tài)數(shù)組

Fluent UDF中使用智能動(dòng)態(tài)數(shù)組 Fluent UDF中要使用動(dòng)態(tài)數(shù)組在傳統(tǒng)編譯方法中只能使用純C語(yǔ)言中的malloc函數(shù)。此函數(shù)無(wú)法自動(dòng)釋放內(nèi)存,必須手動(dòng)調(diào)用free函數(shù)來(lái)釋放,否則就會(huì)造成內(nèi)存泄漏問(wèn)題。 要想使用智能動(dòng)態(tài)釋放的數(shù)組,就必須將UDF語(yǔ)法拓展到C++語(yǔ)言,調(diào)用C++內(nèi)置的智能動(dòng)態(tài)數(shù)組vector支持。這里我們借助VC++ UDF Studio的插件來(lái)實(shí)現(xiàn)對(duì)智能動(dòng)態(tài)數(shù)組的調(diào)用。例如下面例子實(shí)現(xiàn)將入口面的壓力和溫度存入動(dòng)態(tài)數(shù)組,然后再將存儲(chǔ)的壓力值賦值給出口。 #include "u

繼續(xù)訪問(wèn)

Fluent UDF中沿指定方向獲取鄰接網(wǎng)格

有朋友在VC++UDF Studio插件群里問(wèn)Fluent UDF有沒(méi)有宏可以沿著指定方向搜索到下一個(gè)鄰接的網(wǎng)格?答案是No,沒(méi)有現(xiàn)成的宏可以實(shí)現(xiàn)這個(gè)目的,但是我們可以寫(xiě)一個(gè)函數(shù)來(lái)手動(dòng)實(shí)現(xiàn)。這個(gè)思路如下:對(duì)于當(dāng)前的網(wǎng)格,我們可以利用c_face_loop宏配合C_FACE及C_FACE_THREAD宏,對(duì)當(dāng)前網(wǎng)格的所有face進(jìn)行循環(huán),例如下圖中的當(dāng)前網(wǎng)格循環(huán)會(huì)有0,1,2,3四個(gè)face。然后我們?cè)倮肍_C0分別取這四個(gè)face的c0,將c0與當(dāng)前網(wǎng)格比較,如果c0就是當(dāng)前網(wǎng)格,那么鄰接網(wǎng)格就是c1,反

繼續(xù)訪問(wèn)

udf在服務(wù)器上顯示語(yǔ)法錯(cuò)誤,UDF代碼錯(cuò)誤在哪里?。?- 仿真模擬 - 小木蟲(chóng) - 學(xué)術(shù) 科研 互動(dòng)社區(qū)...

用組分輸運(yùn)模型模擬一個(gè)三維圓柱內(nèi)的組分輸運(yùn)問(wèn)題,圓柱壁面對(duì)組分有吸收。圓柱等分為兩段,前一段標(biāo)為huxi ,后一段標(biāo)為xiu。由于壁面對(duì)組分的吸收緣故,必然使圓柱內(nèi)從前往后濃度依次降低。從而下面的代碼應(yīng)該huxi2 與xiu2的值不同才是,但我得到的結(jié)果是huxi2與xiu2的值完全一樣,奇了怪了,#include "udf.h"#define Dm 6.9e-5DEFINE_ON_DEMAND(...

繼續(xù)訪問(wèn)

msh,fluent格式

# **10:Nodes (10 (zone-id first-index last-index type ND)) 12.Cells (12 (zone-id first-index last-index type element-type)) 13.Faces (13 (zone-id first-index last-index type element-type) (n0 n1 n2 cr cl)) type: element-type: 當(dāng)element-type

繼續(xù)訪問(wèn)

熱門(mén)推薦 Log4j2研究之lookup

一個(gè)稱(chēng)得上優(yōu)秀的框架,必備的要素之一可以通過(guò)某種約定的格式讀取到所運(yùn)行環(huán)境中的配置信息。本文中我們就來(lái)感受下log4j2實(shí)現(xiàn)此項(xiàng)功能時(shí)的精妙設(shè)計(jì)。

繼續(xù)訪問(wèn)

get_domain_ip

#!/bin/bash if[$#-lt1];then echo$0needaparameter exit0 fi ADDR=$1 TMPSTR=`ping${ADDR}-c1|sed'1{s/.*([]?[]?)56.*/\1/;q}'` #TMPSTR=`ping${ADDR}-c...

繼續(xù)訪問(wèn)

Fluent UDF 獲取組分傳輸模型中的摩爾分?jǐn)?shù)或分壓力

很多朋友在開(kāi)發(fā)Fluent模型中需要用UDF獲取組分傳輸模型中的某氣體組分的摩爾分?jǐn)?shù)(或體積分?jǐn)?shù))或者分壓力,但是UDF自帶的只有獲取質(zhì)量分?jǐn)?shù)的宏C_YI(c,t),需要自己寫(xiě)額外的代碼去轉(zhuǎn)換,有一定難度。已經(jīng)不止一次看到論壇或者我們UDF編譯調(diào)試插件群里的朋友問(wèn)起這個(gè)問(wèn)題,這里做個(gè)標(biāo)準(zhǔn)教程記錄下來(lái),希望對(duì)大家有用。 總體來(lái)說(shuō),有兩種方法,一種是利用內(nèi)置的函數(shù)來(lái)轉(zhuǎn)換,另外一種就是自己寫(xiě)代碼轉(zhuǎn)換,這里逐一介紹。 1. 利用內(nèi)置函數(shù)轉(zhuǎn)換 內(nèi)置轉(zhuǎn)換方法參考了Fluent官方解決方案,稍微作了一些修改,并加了

繼續(xù)訪問(wèn)

Linux功耗管理(17)_Linux PM domain framework(1)_概述和使用流程

1. 前言 在復(fù)雜的片上系統(tǒng)(SOC)中,設(shè)計(jì)者一般會(huì)將系統(tǒng)的供電分為多個(gè)獨(dú)立的block,這稱(chēng)作電源域(Power Domain),這樣做有很多好處,例如: 1)將不同功能模塊的供電分開(kāi),減小相互之間的干擾(如模擬和數(shù)字分開(kāi))。 2)不同功能所需的電壓大小不同:小電壓能量損耗低,但對(duì)信號(hào)質(zhì)量的要求較高;大電壓能量損耗高,對(duì)信號(hào)質(zhì)量的要求較低。

python寫(xiě)hive的UDF問(wèn)題

你把print寫(xiě)在try里面當(dāng)然會(huì)少數(shù)據(jù)。你應(yīng)該try訪問(wèn)fields數(shù)組并更新fields[2]的值。另一方面,從功能點(diǎn)上來(lái)說(shuō),使用SQL函數(shù)nvl或coalesce就能實(shí)現(xiàn),沒(méi)必要寫(xiě)個(gè)UDF來(lái)實(shí)現(xiàn),你這樣做增加額外的IO消耗和工作量。如果一定要寫(xiě)UDF,建議少用print,改用標(biāo)準(zhǔn)輸出實(shí)現(xiàn):sys.stdout.write()。

Hsql中使用python的UDF

Author:杜七

先寫(xiě)一個(gè)處理數(shù)據(jù)的腳本,如下:

保存到test.py中,放在本地的任何地方,比如/home/duqi.yc/scripts/python/

excel直接輸入Filter公式可以,用python寫(xiě)進(jìn)去,打開(kāi)文件就報(bào)錯(cuò)?

前面那個(gè)賬號(hào)沒(méi)有財(cái)富值了。換個(gè)賬號(hào)交流。

試了一下,最簡(jiǎn)單的。

ws['A3'].value = '=A1:D1'

打開(kāi)文件不報(bào)錯(cuò),但單元格公式前面自動(dòng)加了@,內(nèi)容只顯示A1內(nèi)容。

我用xlwings寫(xiě)入FILTER函數(shù)不報(bào)錯(cuò),但也同樣現(xiàn)象(公式前自動(dòng)加@,只顯示第一個(gè)單元格內(nèi)容)。

順著這個(gè)一路找下去,這應(yīng)該就是python庫(kù)是否支持處理動(dòng)態(tài)數(shù)組問(wèn)題了。

按我理解,

1)用xlwings或許可以,但得用UDF(自己定義函數(shù)功能),前提還得把xlwings插件安裝到excel里(這就不友好了,我還需要把最后做好的軟件分享給別人用,不能讓人家電腦上也得裝xlwings插件吧)。

2)用xlsxwriter確定可以,可問(wèn)題是xlsxwriter不支持打開(kāi)已有的excel文件,只能新建寫(xiě)入,

所以我本來(lái)的想法是,先選擇一個(gè)區(qū)域單元格為整體,然后寫(xiě)入試試,但沒(méi)找到具體代碼方法。

分享標(biāo)題:udf函數(shù)python udf實(shí)例
網(wǎng)站網(wǎng)址:http://muchs.cn/article32/doooipc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開(kāi)發(fā)、響應(yīng)式網(wǎng)站、用戶(hù)體驗(yàn)、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站維護(hù)、網(wǎng)站營(yíng)銷(xiāo)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)