root文件夹是不是没空间了?有一些系统root单独空间划片了。我看你跑在了root下。操作不是很常规
李东岳
帖子
-
-
怎么确认编译成功的
-
@小泽同学 在 自己写的求解器出现:浮点数例外 (核心已转储)的问题 中说:
就是一个仿真周期只需要前面一小段时间步长小一点,后续大部分时间不用这个小步长,因为会算的很慢,这种问题是只有变步长这一个解决措施吗?
是的老铁
-
Ostream看起来确实像存储满了。
-
自己写的求解器别人很难debug问题在哪。看看有没有类似的研究方向的大佬吧。祝你好运!
-
半圆柱没有
-
从log来看,你这个就是发散了,判断不出其他原因
-
@沐风 你上传的作者联系我删除你上传的pdf文件,我将在明天将其进行删除
-
两相界面的处理是用contour,然后切alpha=0.5的分界面
-
@张德聪 https://cfd-china.com/ 用这个域名试一下
-
好像没转起来,MRF转的方向对么
-
那个就是发散了。
-
把你的云图,不要显示插值场,显示间断场看一下。
-
一般泰勒格林涡的文章都会指定计算域长度与涡的大小啊。比如这个:https://www.jianguoyun.com/p/DblYnzoQ9s3ZBhil274FIAA 方程6.2
-
把log贴出来看一下
-
是加的多重参考系么?
-
你这个边界层还是画的不错的啊。有时候只能加1-3层边界层。你看默认的摩托车算例,应该只加了1层。
-
你要从非面法向方向的压力梯度,计算出来面法向的压力梯度,然后来指定。
-
速度方程不需要solve
-
你要在网格边界处,指定非面法向方向的压力固定梯度边界么?
-
你那个第一\partial (rho f0)/\partial (rho) 是不是可以继续展开?
-
纯粹的震荡了。看不出其他问题。
-
这个不太好调,只能各个参数都试试。论坛有人在这面之前处理过,你可以搜搜。
-
需要挂参数
-region fluid
类似 -
https://www.cfd-china.com/topic/6835/waves2foam安装-2024年更新版本/6
这个链接里面的wavesfoam里面包含了oceanwave3D
-
@allanZhong 材料非常好,我看看
-
我感觉有必要擦除流体与固体的试算结果,再进入下一个迭代步。固体好说,只有一个D,我令D=D.oldTime();就能把D的试算结果消去,但流体就很麻烦,因为有很多个变量,我试了半天也不知道该怎么把所有变量的值都擦除掉,恢复迭代前的值
没太看明白
-
把你的动量预测关掉看一下。
我最近在美国,更深入的讨论得回法国之后的。
-
看起来好像你得OpenFOAM没编译完整
-
看起来是化学方程ODE没求解出来。再不能看出来别的了
-
你用的openfoam单向流求解器么,这个如果网格质量不是特别差的话,发散都是设置的问题。可以调节一下你湍流的进口边界。
-
你模拟的是高粘度流体么?高粘度流体更难模拟了。
-
你要是算一会,那会好一些,但也只不过是看起来平了。四面体永远都不会平。尤其是0时间步。
-
-
四面体注定是不平的
-
是混合后的$\mu_t$,不过两相流里面有密度,所以不是$\nu_t$
-
mut是$\mu_t$,nut是$\nu_t$
你那个不可压缩,本身不带密度,所以一样。
-
对于监督学习那一块,我拍脑袋想了这样一个步骤:
- 给定一个网格,算N套CFD的不同速度进口的结果;
- 把这N套最终稳定的结果,比如volScalarField p,当做N套数据,每套数据在每个网格上是一个点
- 把这N套已知的数据赋值给torch,给定一个进口U,让libtorch搞出一套函数会预测最好的p
- 这个训练出来的函数就可以预测任意的U的流场结果
这个流程应该看起来更细致一些
强化学习我还没看,我打算先看一下监督学习,先把这个在OpenFOAM里面跑通看看
-
我勒个去,好老的帖子,一晃8年过去了
-
如果Google搜索OpenFOAM+libtorch,第一个链接出来的是这个 https://ml-cfd.com/openfoam/pytorch/docker/2020/12/29/running-pytorch-models-in-openfoam.html 我当时也试了一下,发现他写这个比较复杂,并且还不是原生openfoam(用的cmake)。咱不能说Andre大神不流弊,Andre大神绝对流弊,目前OpenFOAM+libtorch领军人物了。但是这个链接写的就是很复杂。找别的教程,还跟python搞到了一起(其实不需要)。
下面是我这个几步就能把OpenFOAM挂上libtorch的步骤,主要在于把复杂的东西简单化,没有乱七八糟的多余步骤,分享给大家。
-
下载 libtorch https://download.pytorch.org/libtorch/cpu/libtorch-cxx11-abi-shared-with-deps-2.0.0%2Bcpu.zip 写别的版本也行,但是我当时下载的是这个,我测试没问题。
-
在OpenFOAM文件夹下解压缩(libtorch我放在了/home/dyfluid/OpenFOAM文件夹下):
unzip libtorch-cxx11-abi-shared-with-deps-2.0.0+cpu.zip
这一步要确保路径正确,否则会找不到库
-
下载这个torchFoam代码(一个非常小的测试代码),在任意文件夹解压缩
-
wmake
这个torchFoam -
打开.bashrc文件,增加下面一行
export LD_LIBRARY_PATH=/home/dyfluid/OpenFOAM/libtorch/lib:$LD_LIBRARY_PATH
-
执行
torchFoam
,输出:dyfluid@dyfluid-virtual-machine:~$ torchFoam 0.2870 0.5473 0.5788 0.5582 0.2020 0.7702 [ CPUFloatType{2,3} ]
起码在OpenFOAM环境下挂libtorch是成功了。后续所有复杂求解器都可以这么挂。注意我用的是g++9。
我还测试了一下,下面的代码都没问题(gpt写的)
#include <torch/torch.h> #include <iostream> // 定义一个简单的神经网络模型 struct Net : torch::nn::Module { Net() { // 输入层到隐藏层 fc1 = register_module("fc1", torch::nn::Linear(2, 5)); // 隐藏层到输出层 fc2 = register_module("fc2", torch::nn::Linear(5, 1)); } // 前向传播 torch::Tensor forward(torch::Tensor x) { x = torch::relu(fc1(x)); x = torch::sigmoid(fc2(x)); return x; } // 定义模型的层 torch::nn::Linear fc1{nullptr}, fc2{nullptr}; }; int main() { // 创建模型实例 Net model; // 定义损失函数 torch::nn::BCELoss criterion; // 定义优化器 torch::optim::SGD optimizer(model.parameters(), /*lr=*/0.01); // 创建一些训练数据 torch::Tensor inputs = torch::tensor({{0.1, 0.2}, {0.3, 0.4}, {0.5, 0.6}}); torch::Tensor targets = torch::tensor({{0.}, {1.}, {0.}}); // 开始训练 for (size_t epoch = 0; epoch < 1000; ++epoch) { // 前向传播 torch::Tensor outputs = model.forward(inputs); // 计算损失 torch::Tensor loss = criterion(outputs, targets); // 清零梯度 optimizer.zero_grad(); // 反向传播 loss.backward(); // 更新权重 optimizer.step(); // 打印损失 if (epoch % 100 == 0) { std::cout << "Epoch: " << epoch << ", Loss: " << loss.item<float>() << std::endl; } } // 打印最终的模型参数 std::cout << "Final model parameters: " << std::endl; for (const auto& pair : model.named_parameters()) { std::cout << pair.key() << ": " << pair.value() << std::endl; } return 0; }
#include <torch/torch.h> #include <iostream> #include <chrono> int main() { // 定义矩阵大小 const int N = 1000; const int M = 1000; const int K = 1000; // 创建两个随机矩阵 auto A = torch::randn({N, M}); auto B = torch::randn({M, K}); // 计时开始 auto start = std::chrono::steady_clock::now(); // 执行矩阵乘法操作 auto C = torch::mm(A, B); // 计时结束 auto end = std::chrono::steady_clock::now(); auto diff = end - start; // 计算时间差并输出结果 std::cout << "Matrix multiplication took " << std::chrono::duration <double, std::milli> (diff).count() << " ms" << std::endl; return 0; }
-
-
http://dyfluid.com/rhoCentralFoam.html 这个不是传统的离散的 你看一下这个
div(((rho*nuEff)*dev2(T(grad(U)))))
这一项不是对流项,按照linear离散 -
倒数第二个图,这种提示都看不出来具体咋回事
倒数第一个图,我挂libtorch的时候用过那个,你那个挂libtorch了么 -
从你的结论来看,symmetry确实存在切应力,这与我之前的理解是相反的。但是基金会那本书里面也写了,symmetry是所有的场都是symmetry,是一种更严厉的限制。但是目前来看像是相反的。目前我在备课还不能细看。你这个问题(symmetry与slip边界),还有论坛里面有个时间步长越小结果越差的,成了老大难了。。感觉是非常底层的bug。
-
跟气泡多少没关系,主要看气含率,看速度型线。
-
我跑出来的气泡数量比较少
气泡数量不应该是你自己设定的么?
-
@cccrrryyy 我前几天跟学生讨论,感觉监督学习有点像是插值。不过监督学习更准一些。你那面风流模拟,一般用几套CFD的结果?是openfoam+libtorch么
强化学习就不需要cfd跑很多数据,强化学习可以将结果反馈到学习过程里面。简单来说就是比如监督学习需要跑1000套数据再学习。但是强化学习跑10套就可以了。不知道我理解的对不对
-
方程16显性求解可以,不过这个100%要越界。我看她后来方程35强制搞了个在0-1之间。然后加了36,37继续处理。总体来看这个是一个非常不稳定的算法。作者用了各种方法来强制有界。 并且这个是强制有界,因为方程本身就是预测的越界,跟正常的数值求解带来的越界是两回事。
也就是说,正常CFD玩的:一个有界的PDE方程,但是数值导致越界,那么数值处理回去。
这个文章玩的:一个越界的PDE方程,通过数值弄成有界。 -
@crispy 那你看其他库朗数的结果怎么样,1以下的,是时间步长越大,cd越好么
-
也不能说算的不对。我觉得这个Cd应该把高频过滤掉。
不过从时间平均的结果来看,Cd的值正确么。
-
@crispy 0.19那个格式发图看一下Cd
并行计算后reconstructPar重组流场写入报错问题
在超算中(centos7)编译OpenFOAM成功,但无法计算
自己写的求解器出现:浮点数例外 (核心已转储)的问题
并行计算后reconstructPar重组流场写入报错问题
自己写的求解器出现:浮点数例外 (核心已转储)的问题
openfoam如何设置圆形相域?
雾化模拟(reactingFoam)在LES条件下细化网格后遇到的的报错
Tobias书中关于pimple的final松弛因子的设定
多相流interface
论坛最近是不是显示有问题
搅拌桨叶附近压力异常
interFoam的问题
搅拌桨叶附近压力异常
泰勒格林涡求教
请教一下关于OpenFOAM计算速度的问题
搅拌桨叶附近压力异常
snappyHexMesh画边界层
openFoam自定义压力边界条件,codedMixed边界条件的使用
TwoPhaseEularFoam
openFoam自定义压力边界条件,codedMixed边界条件的使用
偏导数的问题
自然对流温度场振荡(异常?)的问题
snappyHexMesh画网格边界层
paraFoam读取不到场信息
OpenFOAM第三方造波包waves2Foam安装
CFD与机器学习基本概念入门
OpenFOAM如何在一个时间步内执行一次计算又把所有量恢复到上一时间步的结果?
极低雷诺数下,PIMPLE迭代初始残差保持为1,降不下来
openFoam postProcess报错
燃烧求解在AMR之后报错
时变的非均匀速度边界条件timeVaryingMappedFixedValue运行发散
泡沫的仿真
interFOAM设置的自由水面不平。左边是六面体,右边是四面体,请问老师们怎么让右边水面平一点
divShemes离散格式的顺序问题
interFOAM设置的自由水面不平。左边是六面体,右边是四面体,请问老师们怎么让右边水面平一点
关于nut和mut的问题
关于nut和mut的问题
CFD与机器学习基本概念入门
李新亮老师的OpenCFD中湍流粘性系数
OpenFOAM外挂libtorch
关于 rhoCentralFoam 中 fvSchemes 设置的疑问。
编译求解器的时候出现undedined reference错误
Stokes流中的圆球绕流的阻力系数,怎么设置才能算准。
鼓泡床参数设置的一个问题
鼓泡床参数设置的一个问题
CFD与机器学习基本概念入门
openfoam中伪时间步下相方程的组建和求解
对时间和网格无关性的研究
对时间和网格无关性的研究
对时间和网格无关性的研究