coolhhh
帖子
-
如何加速压力求解器收敛 -
NSRFG在OF里面计算出现的问题@Lee-scut-wind 入口进来的几层粗网格基本把高频就衰减完了
-
中性大气环境湍流动能的自保持 | 附有算例下载@pengdi 没有收缩段,RANS结果就是很差的,LES即使入口只加平均风,也比RANS结果精确很多
-
NSRFG在OF里面计算出现的问题网格分辨率不足,对高频能量过滤是正常的
-
时变的非均匀速度边界条件timeVaryingMappedFixedValue运行发散- URANS(Unsteady Reynolds-Averaged Navier-Stokes)就是用RANS湍流模型+瞬态求解器(pisoFoam,pimpleFoam),如果用simpleFoam求解器就是稳态,就不应该用时变的边界
- 没有试过其他5个面都设置速度入口。因为算的不可压缩湍流,我的理解是要能计算至少得满足5个面在每个瞬时的通量总和等于0,即流入等于流出。没看过有人这么设置过,一般都会设置个出口,通过计算自动调整出口的通量,使得满足不可压缩条件
- 既然算瞬态,可以用LES模拟,采用WALE湍流模型,0文件夹只需要设置p,U,nut
- 建议先拿一个简单的长方体空风洞开始,先测试只有1个速度入口+1个出口(侧面和顶面用symmetry),再测试2个速度入口+2个出口(顶面用symmetry),依次增加速度入口个数测试,最后才是看5个面都是速度入口能否算
-
dsmcFoamPlus定义非定常边界条件的方法@做在江湖
correctBoundaryConditions
参考贴子 关于压力场边界更新的实现机制的疑问我测试
dsmcFoam
算例结果是,boundaryU
每个时刻都一样,没有更新。所以猜测是否跟没执行correctBoundaryConditions
有关 -
时变的非均匀速度边界条件timeVaryingMappedFixedValue运行发散- 这是算URANS吗?计算的建筑绕流?
- top面为何也是速度入口,如果改为symmetry看看
- U的east和south,你设置了pressureInletOutletVelocity,我没用过这个,一般设置为zeroGradient或者inletOutlet。
对应p的east和south,设置为fixedValue为0
-
dsmcFoamPlus定义非定常边界条件的方法@做在江湖 搜了DSMCCloud.C,其他物理量有使用
correctBoundaryConditions
,但boundaryU
没有这个操作,是否可以尝试在某个地方把boundaryU.correctBoundaryConditions()
加上,看看是否有效果 -
dsmcFoamPlus定义非定常边界条件的方法@做在江湖 我测试了of2206一个自带算例
freeSpaceStream
,测试boundaryU
设置timeVaryingMappedFixedValue
,dsmcFoam
计算结果确实只加载了第0
时间步的结果,但不同时刻保存的结果都是value nonuniform List<vector>
inlet { type timeVaryingMappedFixedValue; fieldTable boundaryU; mapMethod nearest; offset constant (0 0 0); value nonuniform List<vector> 256 ( (299.1814153 29.37670706 68.29947456) (299.4299067 29.62701704 68.44470993) (299.6766025 29.87764649 68.59053715)
pisoFoam
的pEqn.H
有U.correctBoundaryConditions()
更新边界值。简单看了dsmcFoam
求解器代码,没有correctBoundaryConditions
,不太清楚是否跟这个有关 -
dsmcFoamPlus定义非定常边界条件的方法@做在江湖 保存
dsmcFoam
不同时刻结果,比如0.5s
的结果,此时0.5s
结果的U
文件中,inlet
面的边界条件是否还是timeVaryingMappedFixedValue
类型,还是更改了其他的?我曾经
0
文件设置了timeVaryingMappedFixedValue
,pisoFoam
求解器中想通过一些操作改变入口加载的速度,但似乎没有成功,都依然最后按照timeVaryingMappedFixedValue
加载的风速进行计算。也可能是我当时哪里没写对现在你的问题确实像是
dsmcFoam
改变了timeVaryingMappedFixedValue
-
dsmcFoamPlus定义非定常边界条件的方法@做在江湖
0
文件夹比如速度U
的设置如下所示。保存不同时刻的结果,看U
文件的inlet
数据是否差异,看看是否读取成功。或者能否改用
pisoFoam
试算一下,看看是否能读取不同时刻的数据。如果可以,那就说明是dsmcFoam
的问题。再看看dsmcFoam
中是否对inlet
边界有额外的操作,使得每个时刻只用了第一个时刻的数据?timeVaryingMappedFixedValue
这个边界,如果controlDict
设置的endTime
大于所提供的数据文件夹最大的时刻,比如endTime=9s
,boundaryData
提供数据到2s
,计算到2s
后就只会按照提供最后2s
时刻的数据一直算下去。boundaryField { inlet { type timeVaryingMappedFixedValue; offset (0 0 0); setAverage off; mapMethod nearest; //planarInterpolation, nearest }
-
dsmcFoamPlus定义非定常边界条件的方法用
timeVaryingMappedFixedValue
,在constant
创建文件夹boundaryData
,按格式要求准备不同时刻的数据。参考帖子LES定义入口速度的问题(DSRFG方法) -
CFD与机器学习基本概念入门相关资料:
- 综述《Brunton S L, Noack B R, Koumoutsakos P. Machine learning for fluid mechanics[J]. Annual review of fluid mechanics, 2020,52:477-508.》,Steven L. Brunton 的youtube对应视频:Machine Learning for Fluid Mechanics,B站有人搬运:https://space.bilibili.com/426717813
- Steven L. Brunton 的开源书籍《Machine Learning, Dynamical Systems and Control》,网站是 https://databookuw.com/ ,有对应翻译中文版《数据驱动的科学和工程》出版
-
CFD与机器学习基本概念入门李老师,问了下gpt的回复:
将监督学习、无监督学习和强化学习这三种主要的机器学习方法与计算流体力学(CFD)结合,可以实现不同的目标和改进。以下是各自如何与CFD结合的一些思路:
1. 监督学习
监督学习是通过输入输出映射关系来训练模型的方法,需要有标签的数据集。
- 参数预测:可以用于根据输入条件如速度、压力等预测流体流动的结果,例如温度分布、应力分布等。
- 代理模型:建立CFD仿真结果的代理模型,即快速而粗糙的模型,来近似模拟复杂的CFD模型,可以大幅减少仿真时间。
- 数据同化:用于整合实验数据和模拟数据,监督学习方法可以用来校准模拟模型以提高其预测能力。
2. 无监督学习
无监督学习不需要标签数据,主要用于发现数据之间的关系和结构。
- 流动模式识别:可以用于从复杂的流场数据中识别和归类流动结构或模式,如涡量检测。
- 降维分析:对高维度的CFD数据进行降维,发现数据的主要变化趋势,便于可视化和进一步分析。
- 聚类分析:可以将流场数据的不同状态进行聚类,用于研究流体行为的不同阶段。
3. 强化学习
强化学习是对智能体采取行动在环境中获得最大奖励的问题,适用于决策过程。
- 优化控制:例如,在设计流体动力控制系统时,强化学习可以用来找到最佳操作策略,如在航空中的飞行路径优化。
- 实时仿真调整:在与实验数据联合仿真的场景中,可以使用强化学习实时调整边界条件或模拟参数,以提升模拟的精确度。
4. 综合应用
- 多学习模型集成:可以综合使用监督学习、无监督学习和强化学习的方法对复杂的CFD问题进行分析,比如先用无监督学习进行模式识别,然后用监督学习构建相应的响应模型,最后通过强化学习进行控制策略的优化。
-
向日葵 网络连接异常下载个手机版的向日葵,如果手机也上不去大概率就是国外网络问题。或者试试看 Todesk 这个远程软件能用不
-
请问paraview图例中的标注分布不均匀,如图,该如何设置-
默认标记其实是均匀分布的,不均匀是因为边缘上最大和最小值和刻度间距不匹配导致的,感觉上还是需要手动调整显示范围。或者看能不能搞个
Tools | Start Trace
录制个调整显示范围,然后Tools | Stop Trace
,如下图所示
-
然后打开
python shell
,每个时间步修改上述代码中的显示范围,在python shell
终端中输入修改的脚本,实现调整显示范围
-
自动化调整的话,一个思路是看看能不能在脚本中获取当前时间步的最大值和最小值,写个python代码自动修改最大值和最小值,添加
Macros
,每次都一键运行
-
-
请问paraview图例中的标注分布不均匀,如图,该如何设置 -
pisoFoam计算的U,求div(U)结果为何不是严格等于00时间步的
U
,是用湍流生成方法直接生成的,可以计算得到div(U)
。然后就可以计算div(phi)
:U -> phi = fvc::flux(U) -> div(phi)
。测试结果是,这种方式计算的div(U)
和div(phi)
结果基本一样的,区别是小数点后五六位。此时div(U)=div(phi)=0
稍微步进一个时间步,of输出的
U
和phi
,就会出现div(U)不等于0
,div(phi)=0
是做建筑领域的,DNS搞不了,还是做的LES
-
pisoFoam计算的U,求div(U)结果为何不是严格等于0谢谢李老师,文章已经发表了,只是好奇做个对比。在想的问题是,一直以来各种湍流生成方法都在追求实现生成零散度的湍流场
U
,我们直接构造的是0时刻的U
,而不是phi
。根据测试结果看,如果严格让
div(U)=0
, 此时U -> phi = fvc::flux(U) -> div(phi)
得到的div(phi)
也基本等于0。但这种情况下0时刻的湍流特性会变化的比较大,结果会变差。of在后面时间步计算输出的
U
实际上不满足div(U)=0
,所以想法是0时刻提供的初始U
也不需要强制要求div(U)=0
,这样得到的结果可能才是更合理的。 -
pisoFoam计算的U,求div(U)结果为何不是严格等于0李老师,我做了简单的对比:
-
下面计算的
div(U)
与div(phi)
结果基本相等,区别是小数点后五六位
①直接求div(U)
②已知U
->phi = fvc::flux(U)
->div(phi)
-
接着对比
reconstruct(phi)
。编译mypisoFoam
,把pEqn.H
中计算U修改为
U = fvc::reconstruct(phi); // U = HbyA - rAU*fvc::grad(p);
同样计算计算of2206自带一个算例:Decay of homogeneous isotropic turbulence,模拟结果:
(1)对比div(U)
与div(phi)
的均值和标准差。采用reconstruct(phi)
,得到的div(U)
的均值和标准差要小一点。这里有个注意点是,of计算的div(phi)
,基本数值都很小,但会有一个比较大的数,下面的计算结果是剔除了这个最大数的计算结果。
(2)对比湍流特性。可以看出
reconstruct(phi)
结果要更差,还是原本of的U = HbyA - rAU*fvc::grad(p)
计算准确
-