在使用Fluent时js加载时执行函数UDF函数后软件报错,具体见下面

热门搜索:
硕士/研究生
&&&&&&DOC文档下载
游客快捷下载
会员登录下载
下载资源需要10元
邮箱/手机号:
您支付成功后,系统会自动为您创建此邮箱/手机号的账号,密码跟您输入的邮箱/手机号一致,以方便您下次登录下载和查看订单。注:支付完成后需要自己下载文件,并不会自动发送文件哦!
支付方式:
已注册用户请登录:
当日自动登录&&
&&合作网站一键登录:
1、本站资源不支持迅雷下载,请使用浏览器直接下载(不支持QQ浏览器);
2、文档下载后都不会有金锄头文库的水印,预览文档经过压缩,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、所有文档都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的,可以点击右侧栏的客服对话;
下载须知 | 常见问题汇总
FLUENTudf中文资料ch4
第四章DEFINE宏(未完整翻译)本章介绍了FLUENT公司所提供的预定义宏,我们需要用这些预定义宏来定义UDF。在本章中这些宏就是指DEFINE宏。?41概述?42通用解算器DEFINE宏?43模型指定DEFINE宏?44多相DEFINE宏?45离散相模型DEFINE宏41概述DEFINE宏一般分为如下四类?通用解算器?模型指定?多相?离散相模型DPM对于本章所列出的每一个DEFINE宏,本章都提供了使用该宏的源代码的例子。很多例子广泛的使用了其它章节讨论的宏,如解算器读取(第五章)和UTILITIESCHAPTER6。需要注意的是,并不是本章所有的例子都是可以在FLUENT中执行的完整的函数。这些例子只是演示一下如何使用宏。除了离散相模型DEFINE宏之外的所有宏的定义都包含在UDFH文件中。离散相模型DEFINE宏的定义包含在DPMH文件中。为了方便大家,所有的定义都列于附录A中。其实UDFH头文件已经包含了DPMH文件,所以在你的UDF源代码中就不必包含DPMH文件了。注意在你的源代码中,DEFINE宏的所有参变量必须在同一行,如果将DEFINE声明分为几行就会导致编译错误。42通用解算器DEFINE宏本节所介绍的DEFINE宏执行了FLUENT中模型相关的通用解算器函数。表421提供了FLUENT中DEFINE宏,以及这些宏定义的功能和激活这些宏的面板的快速参考向导。每一个DEFINE宏的定义都在UDFH头文件中,具体可以参考附录A。?DEFINE_ADJUST421节?DEFINE_INIT422节?DEFINE_ON_DEMAND423节?DEFINE_RW_FILE424节表421通用解算器DEFINE宏的快速参考向导功能DEFINE宏激活该宏的面板处理变量DEFINE_ADJUSTUSERDEFINEDFUNCTIONHOOKS初始化变量DEFINE_INITUSERDEFINEDFUNCTIONHOOKS异步执行DEFINE_ON_DEMANDEXECUTEONDEMAND读写变量到DEFINE_RW_FILEUSERDEFINEDFUNCTIONHOOKSCASE和DATA文件?421DEFINE_ADJUST?422DEFINE_INIT?423DEFINE_ON_DEMAND?424DEFINE_RW_FILE421DEFINE_ADJUST功能和使用方法的介绍DEFINE_ADJUST是一个用于调节和修改FLUENT变量的通用宏。例如,你可以用DEFINE_ADJUST来修改流动变量(如速度,压力)并计算积分。你可以用它来对某一标量在整个流场上积分,然后在该结果的基础上调节边界条件。在每一步迭代中都可以执行用DEFINE_ADJUST定义的宏,并在解输运方程之前的每一步迭代中调用它。参考图331和332FOR可以大致了解一下当DEFINE_ADJUST被调用时FLUENT解的过程宏DEFINE_ADJUSTNAME,D参变量类型DOMAIND返回的功能VOIDDEFINE_ADJUST有两个参变量NAME和D。NAME是你所指定的UDF的名字。当你的UDF编译并连接时,你的FLUENT图形用户界面就会显示这个名字,此时你就可以选择它了。D是FLUENT解算器传给你的UDF的变量。D是一个指向区域的指针,调节函数被应用于这个区域上。区域变量提供了存取网格中所有单元和表面的线程。对于多相流,由解算器传给函数的区域指针是混合层区域指针。DEFINE_ADJUST函数不返回任何值给解算器。例子1下面的UDF名字是ADJUST,它使用DEFINE_ADJUST对湍流耗散在整个区域上积分。然后这个值会打印在控制台窗口中。每一步迭代都会调用这个UDF。它可以作为解释程序或者编译后的UDF在FLUENT中执行。///积分湍流耗散并将其打印到控制台窗口的UDF///INCLUDEUDFHDEFINE_ADJUSTMY_ADJUST,D{THREADT/INTEGRATEDISSIPATION/REALSUM_DISS0CELL_TCTHREAD_LOOP_CT,D{BEGIN_C_LOOPC,TSUM_DISSC_DC,TC_VOLUMEC,TEND_C_LOOPC,T}PRINTFVOLUMEINTEGRALOFTURBULENTDISSIPATIONG\N,SUM_DISS}例子2下面UDF的名字是ADJUST_FCN,它用DEFINE_ADJUST指定了某一自定义标量是另一自定义标量的梯度的函数。该函数在每一次迭代中都会被调用。它可以作为编译后的UDF在FLUENT中执行。///UDFFORDEFININGUSERDEFINEDSCALARSANDTHEIRGRADIENTS///INCLUDEUDFHDEFINE_ADJUSTADJUST_FCN,D{THREADTCELL_TCREALK_EL10/DONOTHINGIFGRADIENTISNTALLOCATEDYET/IFDATA_VALID_PRETURNTHREAD_LOOP_CT,D{IFFLUID_THREAD_PT{BEGIN_C_LOOP_ALLC,T{C_UDSIC,T,1K_ELNV_MAG2C_UDSI_GC,T,0C_VOLUMEC,T}END_C_LOOP_ALLC,T}}}ACTIVATINGANADJUSTUDFINFLUENT在为ADJUSTUDF的源代码进行编译和连接之后,你可以在FLUENT中的USERDEFINEDFUNCTIONHOOKS面板激活这个函数。更详细的内容请参阅811节。422DEFINE_INIT功能和使用方法的介绍你可以用DEFINE_INIT宏来定义一组解的初始值。DEFINE_INIT完成和修补一样的功能,只是它以另一种方式UDF来完成。每一次初始化时DEFINE_INIT函数都会被执行一次,并在解算器完成默认的初始化之后立即被调用。因为它是在流场初始化之后被调用的,所以它最常用于设定流动变量的初值。参考图331和332关于FLUENT解过程的介绍可以看出什么时候调用DEFINE_INIT函数。MACRODEFINE_INITNAME,DARGUMENTTYPESDOMAINDFUNCTIONRETURNSVOIDDEFINE_INIT有两个参变量NAME和D。NAME是你所指定的UDF的名字。当你的UDF编译并连接时,你的FLUENT图形用户界面就会显示这个名字,此时你就可以选择它了。D是FLUENT解算器传给你的UDF的变量。DISAPOINTERTOTHEDOMAINOVERWHICHTHEINITIALIZATIONFUNCTIONISTOBEAPPLIEDTHEDOMAINARGUMENTPROVIDESACCESSTOALLCELLANDFACETHREADSINTHEMESHFORMULTIPHASEFLOWS,THEDOMAINPOINTERTHATISPASSEDTOTHEFUNCTIONBYTHESOLVERISTHEMIXTURELEVELDOMAINPOINTERADEFINE_INITFUNCTIONDOESNOTRETURNAVALUETOTHESOLVER例子下面的UDF名字是MY_INIT_FUNC,它在某一个解中初始化了流动变量。在解过程开始时它被执行了一次。它可以作为解释程序或者编译后的UDF在FLUENT中执行。///UDFFORINITIALIZINGFLOWFIELDVARIABLES///INCLUDEUDFHDEFINE_INITMY_INIT_FUNCTION,DOMAIN{CELL_TCTHREADTREALXCND_ND/LOOPOVERALLCELLTHREADSINTHEDOMAIN/THREAD_LOOP_CT,DOMAIN{/LOOPOVERALLCELLS/BEGIN_C_LOOP_ALLC,T{C_CENTROIDXC,C,TIFSQRTND_SUMPOWXC005,2,POWXC105,2,POWXC205,2TMAX||TMAX0TMAXTEMPVOL_TOTVOLUMETAVGTEMPVOLUME}END_C_LOOPC,TTAVG/VOL_TOTPRINTF\NTMINGTMAXGTAVGG\N,TMIN,TMAX,TAVG/COMPUTETEMPERATUREFUNCTIONANDSTOREINUSERDEFINEDMEMORY//LOCATIONINDEX0/BEGIN_C_LOOPC,T{TEMPC_TC,TC_UDMIC,T,0TEMPTMIN/TMAXTMIN}END_C_LOOPC,T}}GET_DOMAINISAMACROTHATRETRIEVESTHEPOINTERTOADOMAINITISNECESSARYTOGETTHEDOMAINPOINTER
本文(FLUENTudf中文资料ch4)为本站会员(haoword)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“”【网址:】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。
分享当前资源【FLUENTudf中文资料ch4】到朋友圈,您即可以免费下载此资源!
微信扫一扫分享到朋友圈
操作提示:任选上面一个二维码,打开微信,点击“发现”使用“扫一扫”,即可将选择的网页分享到朋友圈
您可能感兴趣的------------------------------------------------------------------------------------------------------
元price_share
&|&川公网安备 12号&|&经营许可证(蜀ICP备号-1)(C) by Sichuan Goldhoe Inc. All Rights Reserved.
&strong>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>一、&/span>&/strong>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>本站提供全自助服务,购买后点击下载按钮可以下载到你电脑或手机(系统不会发送文档到您的邮箱),请注意查看下载存放位置;&/span>&/p>&p>&strong>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>二、&/span>&/strong>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>本站具有防盗链功能,所以不要使用迅雷、旋风、网际快车等第三方辅助下载工具(不支持&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>QQ浏览器&/span>),否则下载下来的文件只是网页或乱码;&/span>&br/>&/p>&p>&strong>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>三、&/span>&/strong>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>由于网络原因、下载知识欠缺、本地电脑&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>或&/span>手机阻止下载等问题无法解决时,需要提供以下&/span>&span style=&font-family: 微软雅黑, &Microsoft YaHei&; color: rgb(255, 0, 0);&>任意一条信息&/span>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>给我们,我们才能更及时地为你服务:&/span>&br/>&/p>&p>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>3.1、如果是注册的会员,请告诉我们你的会员账号;&/span>&/p>&p>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>3.2、如果是游客下载的,请告诉我们你下载时填写的手机或者邮箱;&/span>&/p>&p>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>3.3、如果是微信或QQ快捷登陆的,请告诉我们你的微信或QQ昵称;&/span>&/p>&p>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>3.4、如果这些你仍然无法确定,请告诉我们你的付款单号(我们可以通过单号反过来查询你的账号和下载记录)&/span>&a href=&https://www.jinchutou.com/i-93.html& target=&_blank& style=&text-decoration: color: rgb(255, 192, 0); font-family: 微软雅黑, &Microsoft YaHei&;&>&span style=&color: rgb(255, 192, 0); font-family: 微软雅黑, &Microsoft YaHei&;&>看看什么是单号?&/span>&/a>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>;&/span>&/p>&p>&strong>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>四、&/span>&/strong>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>需要下载哪份文档,请发送文档网址,而不是截图,更不要直接把标题给我们;&/span>&br/>&/p>&p>&strong>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>五、&/span>&/strong>&span style=&font-family: 微软雅黑, &Microsoft YaHei&;&>其它下载常见问题详见:&/span>&a href=&https://www.jinchutou.com/info-0-23-1.html& target=&_blank& style=&font-family: 微软雅黑, &Microsoft YaHei&;&>https://www.jinchutou.com/info-0-23-1.html&/a>&br/>&/p>&p>&br/>&/p>" />
&span id=&_baidu_bookmark_start_2& style=&display: line-height: 0&>?&/span>&span id=&_baidu_bookmark_start_4& style=&display: line-height: 0&>?&/span>&/p>&p>&span style=&font-family: 微软雅黑, Arial, &Times New Roman&; font-size: 14 background-color: rgb(255, 255, 255);&>& & 鉴于本网发布稿件来源广泛、数量较多, 系统审核过程只针对存在明显违法有害内容(如色情、暴力、反动、危害社会治安及公共安全等公安部门明文规定的违法内容)进行处理,难以逐一核准作者身份及核验所发布的内容是否存在侵权事宜, 如果著作权人发现本网已转载或摘编了其拥有著作权的作品或对稿酬有疑议, 请及时与本网联系删除。&/span>&/p>&p>&strong style=&color: rgb(102, 102, 102); font-family: 微软雅黑, Arial, &Times New Roman&; font-size: 14 white-space: background-color: rgb(255, 255, 255);&>& & 侵权处理办法参考版权提示一文:&/strong>&a href=&https://www.jinchutou.com/h-59.html& target=&_blank& textvalue=&https://www.jinchutou.com/h-59.html&>https://www.jinchutou.com/h-59.html&/a>&span style=&color: rgb(102, 102, 102); font-family: 微软雅黑, Arial, &Times New Roman&; font-size: 14 background-color: rgb(255, 255, 255);&>&&/span>&/p>&p>&span style=&color: rgb(102, 102, 102); font-family: 微软雅黑, Arial, &Times New Roman&; font-size: 14 background-color: rgb(255, 255, 255);&>1、如涉及内容过多,需要发送邮箱,请电子邮箱到,我们会及时处理;&/span>&/p>&p>&span style=&color: rgb(102, 102, 102); font-family: 微软雅黑, Arial, &Times New Roman&; font-size: 14 background-color: rgb(255, 255, 255);&>2、系统一旦删除后,文档肯定是不能下载了的,但展示页面缓存需要一段时间才能清空,请耐心等待2-6小时;&/span>&/p>&p>&span style=&color: rgb(102, 102, 102); font-family: 微软雅黑, Arial, &Times New Roman&; font-size: 14 background-color: rgb(255, 255, 255);&>3、请版权所有人(单位)提供最起码的证明(证明版权所有人),以便我们尽快查处上传人;&/span>&/p>&p>&span style=&color: rgb(102, 102, 102); font-family: 微软雅黑, Arial, &Times New Roman&; font-size: 14 background-color: rgb(255, 255, 255);&>4、请文明对话,友好处理;&/span>&/p>&p>&span style=&color: rgb(102, 102, 102); font-family: 微软雅黑, Arial, &Times New Roman&; font-size: 14 background-color: rgb(255, 255, 255);&>5、为了杜绝以前再有类似的侵权事情,可以为我们提供相应的关键字,便于管理人员添加到系统后能有效排除和抵制与您(贵单位)相关版权作品上传;&/span>&/p>&p>&span id=&_baidu_bookmark_end_5& style=&display: line-height: 0&>?&/span>&span id=&_baidu_bookmark_end_3& style=&display: line-height: 0&>?&/span>&/p>" />
&span style=&color: rgb(85, 85, 85); font-family: 微软雅黑; background-color: rgb(255, 255, 255);&>& & 为了维护合法,安定的网络环境,本着开放包容的心态共建共享金锄头文库平台,请各位上传人本着自律和责任心共享发布有价值的文档;本站客服对于上传人服务前,有以下几点可提前参阅:&/span>&/p>&p>&span style=&color: rgb(85, 85, 85); font-family: 微软雅黑; background-color: rgb(255, 255, 255);&>1、本站上传会员收益见:&a href=&https://www.jinchutou.com/h-36.html& target=&_blank&>https://www.jinchutou.com/h-36.html&/a> &/span>&/p>&p>2、本站不会为任何刚注册的上传会员特批解除上传限制,普通会员每天可以上传50份,值班经值会审核其上传内容,请自行观察自己上传的文档哪些在“临时转换中”(审核通过),哪些在审核拒绝中,连续坚持几天都没有任何文档被拒的情况下,根据文档质量和发布分类是否正常等考量合格后值班经理会特批升级会员等级,相应的权益也同时上升。&/p>&p>3、上传人本着友好、合作、共建、共享的原则,请耐心仔细的查看《&a href=&https://www.jinchutou.com/i-143.html& target=&_blank&>违禁作品内容处理规则》;&/a>&a href=&https://www.jinchutou.com/i-143.html& target=&_blank&>https://www.jinchutou.com/i-143.html&/a>&/p>&p>4、上传人可以观注本站公告,查看其它被公示永久封禁的原因&a href=&https://www.jinchutou.com/news-1.html& target=&_blank&>https://www.jinchutou.com/news-1.html&/a>&/p>&p>5、其它问题可以参阅上传常见问题指引:&a href=&https://www.jinchutou.com/info-0-25-1.html& target=&_blank&>https://www.jinchutou.com/info-0-25-1.html&/a>&/p>" />[转载]UDF学习笔记(一)
已有 4302 次阅读
|系统分类:|文章来源:转载
1、什么是UDF?为什么要使用UDF?UDF有哪些局限性?UDF有哪些特点?
答:UDF(User Defined Function),用户自定义函数。能被FLUENT求解器动态加载以增强器标准特性的用户程序。例如:可以利用UDF定义用户自己的边界条件、材料属性、源项、指定定制的模型参数、初始化求解器或增强后处理。UDF采用C语法进行编写,一个源程序能够包含一个或多个UDF程序,而且能够定义多个源文件。尽管UDF能很大范围的使用fluent特性,然而并不是所有的FLUENT模型变量都能被UDF访问到。
UDF程序的特性:(1)采用C语言编写(2)必须包含UDF.H头文件(3)利用DEFINE宏(4)使用ANSYS FLUENT支持的预定义宏和函数访问FLUENT求解器数据或执行其他操作(5)采用解释或编译的方式执行(6)使用和返回的值均为SI单位制。
2、解释型UDF和编译型UDF
UDF源文件可以被解释或编译执行。编译型UDF使用图形用户界面,通过两步操作(build-load),将源文件编译成共享库目标文件,随后将其加载进FLUENT中。编译型UDF是运行时动态加载的。解释性UDF与编译型有很大成都的不同,它采用解释的方式加载源文件,只采用一步操作。
3、解释性UDF不支持的C语言特性
<FONT color=#)goto语句 (2)非ANSI-C语法 (3)直接数据结构引用 (4)局部结构声明 (5)联合体 (6)函数指针 (7)函数数组 (8)多维数组
4、解释型UDF与编译型UDF的差异
(1)解释型UDF:(a)能够很方便的移植到其他平台(b)能完全作为编译型UDF进行编译(c)不需要C编译器(d)运行效率要低于编译型UDF(e)严格的遵循C语法(f)无法连接编译系统或用户自定义库(g)只能使用预定义宏调用FLUENT中存储的数据结构
(2)编译型UDF:(a)运行效率要高于解释型UDF(b)对使用C语言并不是很严格(c)能够调用其他语言编写的函数(d)如果包含了一些解释性UDF无法处理的语法,则无法用于解释执行。
(3)选用原则:(a)对于一些小的、直接使用的宏,采用解释型UDF(b)对于复杂的宏,则采用编译型UDF(c)在一些对CPU效率要求很高的场合,使用编译型UDF(d)对于需要使用共享库的场合,使用编译型UDF
转载本文请联系原作者获取授权,同时请注明本文来自江帆科学网博客。链接地址:
上一篇:下一篇:
当前推荐数:0
推荐到博客首页
评论 ( 个评论)
扫一扫,分享此博文
作者的其他最新博文
热门博文导读
Powered by
Copyright &Fluent UDF【4】:C语言 - 流沙[胡坤] - 博客园
Fluent UDF利用的是C语言,本文简单介绍在UDF中经常会用到的C语言常识。
本文部分内容来自UDF手册。
1 C语言中的注释
C语言中的注释利用/*及*/来实现。例如:
/*这是一个注释*/
注释也可以跨行实现,如:
/*这是一个
跨行注释*/
注意:在编写UDF的过程中,不能把DEFINE宏(如DEFINE_PROFILE)放置在注释中,否则会引起编译错误
2 基本数据类型
Fluent UDF解释器支持的标准C数据类型包括:
int。整形,存储形如1,2,3之类的整数。
long。长整形。存储数据与int类似,但范围更广。
float。浮点型。存储小数,如1.234等
double。双精度浮点型。与float类似。
char。字符型,如'a','b','c'等。
Fluent UDF中还有real型,其实这是Fluent自定义的数据类型,在双精度求解器中,real类型与double类型相同,而在单精度求解器中,real类型等同于float类型。UDF自动进行转换,因此在需要浮点数时,可以全部采用real类型。
在C语言中可以利用#define来定义常数。需要注意的是,定义为常数类型后,该变量的值不能改变。如:
#define WALL_ID 5
#define YMIN 0.0
#define YMAX 0.4
这样定义完毕后,WALL_ID的值不能再发生改变,因此如下的语句会引发编译错误:
WALL_ID = WALL_ID +1 ;
变量用于存储数据。所有变量都包含类型、名称以及值,有时候还包含存储标记(如静态变量和外部变量)。C语言中所有的变量在使用之前都必须声明,这样C编译器才会知道该如何为此变量分配内存。
4.1 全局变量和局部变量
C语言中的全局变量定义在函数的外部,该变量可以被源文件中所有的函数引用。全局变量如果未被声明为静态变量的话,还可以被外部函数引用。如下例中的全局变量声明:
#include "udf.h"
/*此处定义的是全局变量*/
DEFINE_ADJUST(vol,domain)
/*此处可以访问变量volume*/
局部变量一般定义在函数体内,其只在函数体内起作用,在函数体外无法被访问到。如下程序中的局部变量定义。
DEFINE_PROPERTY(cell_viscosity, cell, thread)
/*局部变量 */
real temp = C_T(cell, thread);
/* 局部变量 */
if (temp & 288.)
mu_lam = 5.5e-3;
else if (temp & 286.)
mu_lam = 143.2135 - 0.49725 *
mu_lam = 1.;
return mu_
4.2 外部变量
当在某个源文件中定义了一个未加static的全局变量后,若想在另一个源文件中调用此变量,此时可以使用外部变量声明来实现。采用如下声明:
注意:extern声明只能用于编译型UDF中。
以下是一个利用extern的案例。
假设在源文件file1.c中定义了全局变量:
#include "udf.h"
DEFINE_ADJUST(compute_volume, domain)
volume = ....
若其他的的源文件想要利用此全局变量volume, 此时可以创建头文件,并将变量volume声明为extern变量,如创建头文件extfile.h,写入内容:
之后就可以在其他的源文件中使用此变量volume了,如在源文件file2.c中:
#include "udf.h"
#include "extfile.h"
DEFINE_SOURCE(heat_source,c,t,ds,eqn)
real total_source = ...;
source = total_source/
温馨提示:外部变量使用起来很麻烦也很容易出错,如果对其不甚了解的话,建议不要使用。
4.3 静态变量
静态变量(声明时添加static关键字)在用于局部变量或全局变量时具有不同的作用。局部变量被声明为static时,当函数返回后变量并不销毁,变量的值依旧被保留。
全局变量被声明为static时,该变量能够被此源文件中的所有函数调用,但不能被其他源文件中的函数调用。实际上是变量被隐藏了。
例如在文件mysource.c中有如下代码:
#include "udf.h"
static real abs_coeff = 1.0; /*静态全局变量*/
/* 此变量只能被本文件中的其他函数调用 */
DEFINE_SOURCE(energy_source, c, t, dS, eqn)
/* 局部变量*/
int P1 = ....; /* 局部变量*/
/*变量只能被当前函数调用,但在函数返回时变量并不释放 */
dS[eqn] = -16.* abs_
source =-abs_coeff *(4.* SIGMA_SBC );
DEFINE_SOURCE(p1_source, c, t, dS, eqn)
int P1 = ...;
dS[eqn] = -abs_
source = abs_coeff *(4.* SIGMA_SBC);
更多关于static的描述可参见文章[www.cnblogs.com/stoneJin/archive//2183313.html] (www.cnblogs.com/stoneJin/archive//2183313.html)
温馨提示:与全局变量类似,静态变量也尽量少用,容易造成不必要的麻烦。
5 用户自定义数据类型
C语言允许用户自己定义数据类型,通过使用结构体及typedef关键字。如定义类型:
typedef struct list
mylist x,y,z;
上例定义了一个结构体类型mylist,并定义了三个结构体变量x,y,z。
6 强制转换
在C语言中,有时需要对类型进行强制转换,如将浮点型强制转换为整形,如下例中。
real y=3.1415926;
int z=x+(int)y;
计算完毕后,z=4。
C语言中的函数执行独立的任务。函数能够被同一源文件中的其他函数调用,也可以由源文件之外的函数调用。
函数定义包含函数名以及被传递给函数的零个或多个参数列表。函数包含一个包含在大括号内的主体,主体中包含执行任务的指令。 函数可以返回特定类型的值。
函数返回特定数据类型的值(例如,实数),如果类型为void,则不返回任何值。 要确定DEFINE宏的返回数据类型,可查看udf.h文件中宏的相应#define语句。
C语言中数组变量定义为name[size],其中name为数组变量的名称,size为数组中存储的单元数量。C语言中数组索引从0开始。
int a[10], b[10][10];
real rad[5];
rad[4] = 3.;
b[10][10] = 4;
指针是一种存储变量内存地址的变量。换句话说,指针是一个变量,这个变量指向另外一个变量的内存地址。指针变量的声明:
int */*定义指针变量ip*/
定义了指针变量后,可以利用取址运算符将其他变量的地址赋予指针变量,如:
也可以为指针变量赋值,如:
当指针作为函数的参数,此时为传址调用,在函数体内修改指针参数的值,会改变调用函数时传递的参数的值。此功能可以实现一个函数返回多个值。
如下的C程序:
#include &stdio.h&
int add(int *a,int b)
int sum = 0;
sum = *a +
int main() {
int a = 1;
int b = 2;
int sum = 0;
sum = add(ip,b);
printf("sum=%d,a=%d\n",sum,a);
传递的参数值被函数体内的程序改变。
10 流程控制
C语言中可以用逻辑判断和循环来进行流程控制。
10.1 if语句
if语句用于逻辑判断。可写成:
if(逻辑判断表达式)
若逻辑判断存在多个分支,可以采用if-else结构。如:
else(x&=0 && x&3)
10.2 for循环
for语句常用于循环表达。
int i,j,n&=10;
for(i=1;i&n;i++)
printf("%d%d\n",i,j)
常用的代数操作符:
= 赋值操作
+ 加法计算
- 减法计算
* 乘法运算
/ 除法运算
% 求模运算
常用的逻辑操作符:
&= 小于等于
12 C库函数
常用的三角函数:
double acos (double x);
double asin (double x);
double atan (double x);
double atan2 (double x, double y);
double cos (double x);
double sin (double x);
double tan (double x);
double cosh (double x);
double sinh (double x);
double tanh (double x);
常用的数学函数:
double sqrt (double x);
double pow(double x, double y);
double exp (double x);
double log (double x);
double log10 (double x);
double fabs (double x);
double ceil (double x);
double floor (double x);
一些常用的标准输入输出函数:
FILE *fopen(char *filename, char *mode);
int fclose(FILE *fp);
int printf(char *format,...);
int fscanf(FILE *fp, char *format,...);
int fscanf(FILE *fp, char *format,...);
更多的内容可参阅C语言教程。
更多CFD资料可微信扫描下方二维码关注微信公众号。}

我要回帖

更多关于 js加载时执行函数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信