double _jn(int n,double x );
这是Help:
_j0, _j1, _jn
These routines return Bessel functions of the first kind: orders 0, 1, and n, respectively.
Example
#include math.h
#include stdio.h
int main( void )
{
double x = 2.387;
int n = 3, c;
printf( "Bessel functions for x = %f:\n", x );
printf( " KindOrderFunctionResult\n\n" );
printf( " First0_j0( x )%f\n", _j0( x ) );
printf( " First1_j1( x )%f\n", _j1( x ) );
for( c = 2; c5; c++ )
printf( " First%d_jn( %d, x )%f\n", c, c, _jn( c, x ) );
printf( " Second 0_y0( x )%f\n", _y0( x ) );
printf( " Second 1_y1( x )%f\n", _y1( x ) );
for( c = 2; c5; c++ )
printf( " Second %d_yn( %d, x )%f\n", c, c, _yn( c, x ) );
}
matlab贝塞尔函数调用有小伙伴咨询在Fluent UDF中如何使用贝塞尔函数,常规情况下需要我们自己去写函数 。但我们注意到Matlab提供了丰富的各种运算函数 。我们有什么办法把Matlab中的贝塞尔函数给UDF直接调用呢?
这里提供一种借助于VC++ UDF Studio插件实现调用Matlab函数的方法,且编译好以后的UDF库拿到没有安装对应Matlab版本的机器上仍然可以使用 。
1. 官网下载VC++ UDF Studio插件并安装:,建议下载学术版(如想进一步采购注册,对高校老师学生比较优惠)
2. 安装Visual Studio(2022R2开始支持VS2010~2019社区、专业或旗舰版 , 建议安装VS2010旗舰版), C++和C#一起安装,对于64位Fluent还要勾选X64编译器 。
3. 安装Matlab 2014a ~ 2021b任一版本(贝塞尔函数可能需要Matlab 2016a以上),必须勾选Matlab Coder,其它视自己喜好安装 。
4. 管理员权限打开桌面图标,选择需要的版本并勾选“调用Matlab”后会自动启动Fluent,读入case并点击Fluent嵌入菜单中的“Start Visual Studio”子菜单 。
5. 把自带的matlab函数文件MatlabAdd.m改名为Matlabbesselj.m,另外一个自动生成的文件MatlabFunctionTester.m是用来在Matlab中测试调试函数文件用的,这里可以不用管 。然后双击打开编辑Matlabbesselj.m,输入以下自定义Matlab函数体 。因为这个函数很简单,肯定正确,所以不需要利用MatlabFunctionTester.m来调试它 。
function [resultValue]= Matlabbesselj(n,Xvar)
resultValue = https://www.04ip.com/post/besselj(n,Xvar);
end
登录后复制
其中,besselj(n,Xvar)是Matlab的内置贝塞尔函数,n是阶数,Xvar是一个标量或者数组,最后的运算结果是针对Xvar中的每一个数计算其贝塞尔函数值 。
点击工具栏上“将.m文件转为C/C++”按钮 , 输入参数“n”和“Xvar”均设为float或double类型,如果是注册版也可以将Xvar设为矩阵(Dyn*1),即行数为动态,列数是1 , 这样可以一次性计算多个值,然后点击“确定”开始转换 。
等待片刻转换完成后,会自动将对应的转换得到的C/C++头文件MatlabLibrary.h加入到UDF工程中
6. 在udf_source.cpp文件中输入如下示例源代码,并点击“编译UDF”按钮直到编译通过 。有任何错误提示,可以双击提示行直接定位到源码中的错误行 。编译通过后按“UDF库加载到Fluent”按钮即可载入到Fluent中 。
#include "udf.h"
extern "C"
{
#include "MatlabLibrary.h"
};
DEFINE_ON_DEMAND(ComputeBessel)
{
creal32_T result= Matlabbesselj((float)2.0, (float)1.9);// 调用Matlab中besselj函数
Message0("2nd order of Bessel(1.9)=%g\n", result.re);
}
登录后复制
?
其中,creal32_T实际上是一个结构体,代表复数类型,在文字上右键选择“Go to Definition”,可以看到其定义如下,其中re代表实部,im代表虚部 。对实数输入参数,结果一般虚部为零,所以取实部即可 。
- mysqli获取所有数据 mysql的提取函数
- mysql 分组函数 mysql分组取数据
- mysql统计函数
- mysql有rank函数吗 mysql有rank
- redis-cli命令不能用 redis函数调用失败
- mysql的判断函数 mysql怎么判断奇偶数
- mysql数据库编码格式查询 mysql编码函数
- mysql日期yyyymmdd mysql中的日期型函数
- mysql序列函数 mysql如何查序列
- 绝对值函数图像画法总结 绝对值函数mysql
