前两天,谷歌发布了 Gemini 2.0 系列人工智能模型的首个版本,该模型名为 Gemini 2.0 Flash,提供聊天版本供全球用户使用,同时还有一个实验版的模型可供开发人员免费使用,该版本具有文本转语音和图像生成功能。
据谷歌官网介绍,这是 Agent 时代迄今为止为最强大的 AI 模型,相比上一代 Gemini 模型,2.0 在速度上快两倍,并且比更大的专业版 Gemini 1.5 更加强大。此外,该版本带来了增强的性能、更多的多模态性和新的原生工具。
1 在Cherry Studio中配置使用Gemini2.0
这里以Cherry Studio为平台,简单聊一下如何配置使用。
-
下载并安装Cherry Studio。这个是开源软件(仓库地址:https://github.com/kangfenmao/cherry-studio),官网地址(https://cherry-ai.com/),下载后一路默认安装就可以了。
-
启动Cherry Studio后,点击左下角的设置按钮,然后选择 模型服务 ,选中大模型列表中的 Gemini ,并在右侧输入API秘钥,点击下方的 管理 按钮打开模型选择对话框
-
API秘钥可以在下面的网址中添加:https://aistudio.google.com/app/apikey 。期间可能会要求注册或登录谷歌账号,这里看各人的方法了。
-
在模型选择对话框中选择 Gemini 2.0 Flash Experimental ,点击其右侧的 + 号添加模型
-
可以测试一下,让它写个UDF试试
-
以下部分是Gemini 2.0输出的结果,看起来还是相当不错的。
好的,下面是如何使用 Fluent UDF (User Defined Function) 编写一个随时间变化的热源的详细步骤和示例代码。我们将使用 DEFINE_SOURCE 宏来定义热源,并使用 CURRENT_TIME 宏来获取当前模拟时间。
步骤:
-
理解 DEFINE_SOURCE 宏:
-
name
: UDF 的名称 (例如,time_dependent_heat_source
). -
c
: 指向当前单元格的 Cell 对象指针. -
t
: 指向当前线程的线程对象指针. -
dS
: 指向源项导数数组的指针. (通常用于隐式求解) -
eqn
: 表示正在处理的标量方程的枚举类型 (例如,eqn_energy
表示能量方程). -
DEFINE_SOURCE(name, c, t, dS, eqn)
是定义源项的宏。 -
获取当前模拟时间:
-
使用 CURRENT_TIME
宏来获取以秒为单位的当前模拟时间。 -
定义时间相关的热源表达式:
-
线性变化: q = a + b * CURRENT_TIME
-
正弦变化: q = A * sin(2 * pi * f * CURRENT_TIME)
-
阶跃变化: if (CURRENT_TIME < time_threshold) { q = q1; } else { q = q2; }
-
自定义函数: 可以基于特定的时间规律定义更复杂的函数。 -
根据你的需要定义一个函数,该函数返回随时间变化的热源强度。例如,你可以使用: -
实现 UDF 代码:
#include "udf.h"
DEFINE_SOURCE(time_dependent_heat_source, c, t, dS, eqn)
{
real source;
real time = CURRENT_TIME;
real amplitude = 100000.0; // 热源强度峰值 [W/m^3]
real frequency = 0.5; // 频率 [Hz]
if (eqn == eqn_energy)
{
// 使用正弦函数作为随时间变化的热源
source = amplitude * sin(2.0 * M_PI * frequency * time);
// 可选: 添加限制,确保source为正
if (source < 0) source = 0;
dS[eqn] = 0.0; // 对于显式求解,导数通常为0
}
else
{
source = 0; // 如果不是能量方程,则源项为0
}
return source;
}
代码解释:
-
#include "udf.h"
: 包含 UDF 头文件,必须放在代码的开头。 -
DEFINE_SOURCE(time_dependent_heat_source, c, t, dS, eqn)
: 定义了名为time_dependent_heat_source
的源项 UDF。 -
real time = CURRENT_TIME;
: 获取当前模拟时间。 -
real amplitude = 100000.0;
,real frequency = 0.5;
定义了正弦函数的幅度和频率。 -
source = amplitude * sin(2.0 * M_PI * frequency * time);
计算当前时间的热源强度,使用正弦函数作为变化规律。 -
if (source < 0) source = 0;
:可选操作,确保热源为正。 -
if (eqn == eqn_energy) { ... } else { ... }
: 确保热源只应用于能量方程。 -
dS[eqn] = 0.0;
: 对于显式求解,源项的导数通常为 0。如果你使用的是隐式求解,则需要根据你的实际情况计算和设置导数。 -
return source;
: 返回当前单元格的热源强度。
-
编译 UDF:
-
将代码保存为 .c
文件(例如,time_dependent_heat_source.c
)。 -
在 Fluent 中,打开 "User-Defined" -> "Functions" -> "Compiled UDFs..."。 -
点击 "Add...", 选择 .c
文件。 -
点击 "Build",编译 UDF。 -
点击 "Load" 加载 UDF。 -
应用 UDF 作为源项:
-
在 Fluent 中,打开 "Setup" -> "Cell Zone Conditions"。 -
选择你需要应用热源的区域。 -
在 "Source Terms" 部分,编辑能量源项,选择 "Source Term" 为你创建的 UDF time_dependent_heat_source
。 -
设置你所需的其他参数。 -
开始模拟。
重要注意事项:
-
单位: 确保你的时间和热源强度单位一致。 -
显式 vs. 隐式: 如果你使用隐式求解器,你需要提供 dS
中的导数信息。 -
复杂的时间函数: 根据你的需求,可以定义更复杂的函数来控制热源随时间的变化。 -
边界条件: 检查你的边界条件,确保它们与时间相关的热源配合良好。 -
稳定性: 注意时间步长的选择,以保证模拟的稳定性。对于快速变化的热源,较小的时间步长可能更有利。 -
调试: 编译 UDF 时,注意查看 Fluent 的输出窗口,以便及时发现和解决编译错误。
示例:阶跃变化的热源
如果需要一个阶跃变化的热源,修改 UDF 代码如下:
#include "udf.h"
DEFINE_SOURCE(time_dependent_heat_source, c, t, dS, eqn)
{
real source;
real time = CURRENT_TIME;
real q1 = 10000.0; // 热源强度值1 [W/m^3]
real q2 = 50000.0; // 热源强度值2 [W/m^3]
real time_threshold = 5.0; // 时间阈值 [s]
if (eqn == eqn_energy)
{
if (time < time_threshold) {
source = q1;
} else {
source = q2;
}
dS[eqn] = 0.0;
}
else
{
source = 0.0;
}
return source;
}
在这个例子中,当 CURRENT_TIME
小于 time_threshold
时,热源强度为 q1
,否则为 q2
。
如何使用这个 UDF 的示例:
-
修改上面的 UDF 代码以满足您的需求 (例如,修改正弦函数的参数,或使用其他类型的函数)。 -
将代码保存为 .c
文件 (例如,my_heat_source.c
)。 -
按照步骤 5 和 6 将 UDF 添加到 Fluent 并在指定区域启用。 -
运行模拟。
通过这种方法,你可以方便地模拟各种时间相关的热源,从而更准确地分析和优化你的热传递问题。
请根据你的具体问题调整代码和参数。如果你在实现过程中遇到问题,请随时提问。
2 在Cursor中配置使用Gemini 2.0
准备好了谷歌API后,也可以在Cursor中配置使用Gemini 2.0。
启动Cursor后,选择菜单 文件 → 首选项 → Cursor Settings 可以打开Cursor设置面板
-
在 Cursor Settings
面板中配置Google API Key
,如下图所示。
-
添加后,在
Model Names
里面并没有显示最新的gemini-2.0-flash-exp
模型,这里需要手动添加模型。点击Add model
按钮 -
在文本框中输入
gemini-2.0-flash-exp
,并按回车
-
勾选并启用新添加的 gemini-2.0-flash-exp
模型,如下图所示
此时可以在chat面板中进行测试(注意在提示词输入面板中选择模型gemini-2.0-flash-exp),如下图所示。
输出速度和输出结果还是相当不错的。就是不知道这个还能免费耍多久。
(完)
本篇文章来源于微信公众号: CFD之道
评论前必须登录!
注册