OpenFOAM实用手册
1. 如何获得帮助
2. 经验教训
2.1 哲学
2.2 通过使用学习
2.3 通过修补OpenFOAM进行学习
2.3.1 我今天学到了一些东西
2.3.2 代码有问题吗?
3. 安装OpenFOAM
3.1 先决条件
3.2 下载来源
4. 更新OpenFOAM仓库版本
4.1 版本管理
4.2 检查更新
4.3 仅检查更新
4.4 安装更新
4.4.1 工作流程
4.4.2 问题排查
4.5 更新问题
4.5.1 缺少安装包
4.5.2 库的更新
4.5.3 更新的源无法编译
4.5.4 自有代码无法运行
5. OpenFOAM-6源安装更新方法
5.1 动机
5.2 使OpenFOAM-6的源码能够被更新
5.3 重新编译源包
6. 维护OpenFOAM的安装
6.1 应对操作系统更新
6.2 应对操作系统升级
7. 第三方软件安装
7.1 安装pyFoam
7.2 安装 swak4foam
7.3 编译外部函数库
8. 搭建环境
8.1 初始化(source)OpenFOAM
8.1.1 永久初始化(source)OpenFOAM
8.1.2 按需初始化(source)OpenFOAM
9. 单位和维度
9.1 单位检查
9.1.1 关于基础单位的一条重要提示
9.1.2 单位输入语法
9.1.3 单位编程语法
9.2 维度
9.2.1 维度检查
9.3 运动黏度 vs. 动力黏度
9.4 误区:OpenFOAM中的压强
9.4.1 不可压缩
9.4.2 可压缩
9.4.3 误区:不可压缩多相流问题中的压强
10. 文件和目录
10.1 必需的文件目录
10.2 补充目录
10.2.1 处理器
10.2.2 函数
10.2.3 数据组
10.3 系统目录文件
10.3.1 主文件
10.3.2 附加文件
11. 控制OpenFOAM
11.1 施加控制的手段
11.1.1 变量
11.1.2 字典
11.1.3 命令行参数
11.2 字典的语法
11.2.1 关键词--香蕉测试
11.2.2 必须的和可选的设置
11.2.3 陷阱:分号(;)
11.2.4 开关
11.3 controlDict
11.3.1 时间控制
11.3.2 数据写入
11.3.3 加载附加库
11.3.4 函数
11.3.5 外包一个字典
11.3.6 陷阱
11.4 字典的运行时间修改
11.5 fvSolution字典
11.5.1 解算器控制
11.5.2 解算方法控制
11.6 命令行参数
11.6.1 获取帮助。-help
11.6.2 获得控制:-dict
本文档由OpenFOAM公众号整理制作
-
+
首页
11.3.2 数据写入
#### 11.3.2 数据写入 在controlDict中,可以找到关于数据写入的控制。通常情况下,没有必要保存模拟的每个时间步骤。OpenFOAM提供了几种方法来定义如何以及何时将数据写入硬盘。 **writeControl**控制向文件写入数据的时间。允许的值是{adjustableRunTime, clockTime, cpuTime, runTime, timeStep}。 -**runTime**当这个选项被选中时,那么每隔一秒就会写入数据。这个选项对时间步长没有影响。因此,写入数据的时间间隔可能/不会与writeInterval中的条目完全一致,即对于1s的时间间隔,数据可能在t = 1.0012, 2.0005, ...s写入。 -**adjustableRunTime**该选项允许求解器调整时间步长,以便在每一个writeInterval秒内都能写入数据。这个选项对时间步长施加了一个上限。两次写入数据的实例之间必须至少有5个时间步长,即∆t ≤ 0.2 * writeInterval。 -***时间步数***数据每隔writeInterval时间步数被写入。在这种情况下,writeInterval是一个整数,而不是一个时间。 **writeInterval** 一个控制数据写入时间间隔的值。这个值从分配给writeControl的值中获得其意义。 **writeFormat** 控制数据如何被写入硬盘。有可能写入文本文件或二进制文件。因此,选项是{ascii, binary}。 **writePrecision**控制写到硬盘上的数值的精度。 **writeCompression**控制是否对写入的文件进行压缩。默认情况下,压缩被禁用。当它被激活时,所有写入的文件都用gzip进行压缩。 **timeFormat**控制用于写入时间步骤文件夹的格式。 **timePrecision**指定小数点后的数字。默认值是6。 **purgeWrite**这个设置控制是否清除旧的时间步骤。默认值是0,这意味着不进行清除。对于启用清除旧时间步长,有效值是正整数。如果启用非零值N,则只保留最后的N个时间步骤。一旦模拟将N个时间步数写入磁盘,每保存一个新的时间步数,最旧的时间步数将被删除。初始时间步长不受影响,将始终保持在算例中保持一致[^21]。 **陷阱:时间精度** OpenFOAM能够在需要时自动增加timePrecision参数的值,例如,由于(动态)时间步长的减少[^22]。这通常是在模拟发散和(动态)时间步长减少的情况下发生的。然而,没有发散的模拟也可能产生增加时间精度的需要。 ``` Increased the timePrecision from 6 to 7 to distinguish between timeNames at time 4.70884 ``` 清单41:在自动增加timePrecision值的情况下,解算器的示范性输出。 如果一个提高了时间精度的模拟要从最新的时间步长重新开始或继续进行,那么所选择的时间精度可能不足以表示现在的时间步长值,即timePrecision为3不足以表示t=0.1023 s的最新时间步长值,OpenFOAM将应用四舍五入以达到所选择的逗号后面的数字。因此,OpenFOAM将无法找到时间t=0.102 s的文件。 这种行为对于一个不知情的用户来说是很难发现的。在这种情况下,检测的唯一线索在于逗号后面的第四位数字,它只出现在时间步长目录的名称中,而不是在OpenFOAM所查找的timeName中。清单42显示了相应的错误信息和案例目录的列表。读者可以自行决定这是否是一个容易发现的错误。作者花了一些时间,这促使他在这个错误和错误行为的小册子中阐述了这个问题。 ``` --> FOAM FATAL IO ERROR : cannot find file file : / home / user / OpenFOAM / user -2.3. x/ run / icoFoam / cavity /0.102/ p at line 0. From function regIOobject :: readStream () in file db / regIOobject / regIOobjectRead .C at line 73. FOAM exiting user@host :∼/ OpenFOAM / user -2.3. x/ run / icoFoam / cavity$ ls 0 0.1023 constant system user@host :∼/ OpenFOAM / user -2.3. x/ run / icoFoam / cavity$ ``` 清单42:在上一次模拟运行中自动增加timePrecision值而导致的错误示例。由于OpenFOAM无法找到正确的时间步长,我们无法重新启动仿真。 因此,在这种情况下,除了一般的模拟设置外,模拟的时间步长由functionObject控制。这可能会导致一种情况,当函数对象的写入间隔足够小时,运行仿真时不会达到允许的最大库朗数。这是正常的行为,因为有多个标准来决定时间步长的大小,比喻说:价低者获胜(the lowest bidder wins)。 **有点坑爹:时间步长控制和writeInterval**。 OpenFOAM手册上说,当我们选择runTime作为写控制时,数据会在每一个writeInterval秒写到磁盘。然而,这确实允许出现一种奇怪的情况,即写入间隔实际上(远远)大于writeInterval。 由于我们选择了runTime作为写入控制,writeInterval对时间步长没有影响。如果时间步长控制允许时间步长大于writeInterval,例如通过库朗数准则,那么OpenFOAM就会照办。在这种情况下,在每一个时间步长之后,OpenFOAM都会注意到,从上次写到磁盘的时间大于writeInterval。因此,现在是再次写入磁盘的时候了。 如果我们不想要这种行为,那么我们需要选择可调整的运行时间作为我们的写入控制,因为这样的话,时间步长将与writeInterval进行检查。 **与其说是陷阱,不如说是观察:时间步长控制和writeInterval**。 如果我们选择 adjustableRunTime作为我们的写入控制,那么时间步长会被调整到符合writeInterval所设定的间隔。据观察,在这种情况下,时间步长的调整遵循以下边界。 $$ \delta t \le \frac{writeInterval}{5} $$ 因此,OpenFOAM在将数据写入磁盘之间至少要执行5个时间步骤。这种行为可能会让人困惑,而且文档中也没有解释。而且,你信任的作者也没能从OpenFOAM的源代码中推断出这种行为。
poplee
2024年11月4日 15:55
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码