@pengdi 地面粗糙度的问题,我没有理了,这个不是我主要的研究方向,按标准的系数是没有问题了
SHUKK
帖子
-
中性大气环境湍流动能的自保持 | 附有算例下载 -
原有的湍流模型加上非线性项雷诺应力的问题@李东岳 目前跑出来的结果,有个小范围的浮动。也有可能是我在雷诺应力修正时候做了类似于DES那种,RANS跟LES的混合。
-
原有的湍流模型加上非线性项雷诺应力的问题@李东岳 并行16线程,CFD+pytorch一共花了1个半小时左右,LES的并行36线程大概要10小时左右。CFD+pytorch的本质还是用RANS去跑,pytorch就是提供一个隐式方程,与原RANS湍流方程的时间差不多。当然硬件越好跑的越快。我们组的服务器还是从李老师你那里买的
-
原有的湍流模型加上非线性项雷诺应力的问题libtorch跟OF耦合的问题已解决,纯粹是一个.so文件的名字大小写打错了 。目前1w步跑完结果与LES相似
-
原有的湍流模型加上非线性项雷诺应力的问题@李东岳 上面的步骤是在编译MomentumTransportModels文件夹时候的。同时,我在simpleNNFoam中修改了我的需要连接的linearViscousStrees中的divDevTau(U, S, R),S跟R都已经在 createFields.H中创建了。
// Momentum predictor MRF.correctBoundaryVelocity(U); tmp<fvVectorMatrix> tUEqn ( fvm::div(phi, U) + MRF.DDt(U) + turbulence->divDevTau(U, S, R) // Data driven R-S + viscous component == fvModels.source(U) ); fvVectorMatrix& UEqn = tUEqn.ref(); UEqn.relax(); fvConstraints.constrain(UEqn); if (simple.momentumPredictor()) { solve(UEqn == -fvc::grad(p)); fvConstraints.constrain(U); }
但是我在wmake我的simpleNNFoam中出现了,数据类型不对的问题。
In file included from /home/user3/libtorch/include/c10/util/Exception.h:7, from /home/user3/libtorch/include/ATen/core/Generator.h:11, from /home/user3/libtorch/include/ATen/CPUGeneratorImpl.h:3, from /home/user3/libtorch/include/ATen/Context.h:3, from /home/user3/libtorch/include/ATen/ATen.h:7, from /home/user3/libtorch/include/torch/csrc/api/include/torch/types.h:3, from /home/user3/libtorch/include/torch/script.h:3, from /home/user3/OpenFOAM/user3-9/reynoldsNet/lnInclude/reynoldsNet.H:42, from /home/user3/OpenFOAM/user3-9/src/MomentumTransportModels/momentumTransportModels/lnInclude/linearViscousStress.H:38, from /home/user3/OpenFOAM/user3-9/src/MomentumTransportModels/momentumTransportModels/lnInclude/Stokes.H:39, from /home/user3/OpenFOAM/user3-9/src/MomentumTransportModels/momentumTransportModels/lnInclude/laminarModel.C:27, from /home/user3/OpenFOAM/user3-9/src/MomentumTransportModels/momentumTransportModels/lnInclude/laminarModel.H:193, from /home/user3/OpenFOAM/user3-9/src/MomentumTransportModels/incompressible/lnInclude/kinematicMomentumTransportModel.H:47, from simpleNNFoam.C:66: /home/user3/libtorch/include/c10/util/variant.h:1204:11: error: no matching function for call to 'Foam::data::data(const c10::detail_::impl<c10::SmallVector<c10::SymInt, 5>, at::Tensor>&)' 1204 | data(lib::forward<V>(v)), | ^~~~~~~~~~~~~~~~~~~~~~~~
我查看了 Foam::data::data(const objectRegistry& obr),要的是objectRegistry类,但是在我的reynoldsNet库中已经将libtorch输出的torch::Tensor转换成std::vector<float>然后带入输出,没有将是torch的数据直接带入OF中。这是有数据没按要求来转换吗?
-
原有的湍流模型加上非线性项雷诺应力的问题@李东岳 李老师,我遇到一个wmake的问题。我把我训练完成的神经网络写成一个reynoldsNet库,打算在linearViscousStrees中调用,但是显示了无法识别的问题这是什么导致的?
wmakeLnIncludeAll: running wmakeLnInclude on dependent libraries: unknown option: '-I/home/user3/OpenFOAM/user3-9/reynoldsNet/lnInclude' Usage: wmakeLnInclude [OPTION] [dir] options: -update | -u update -silent | -s use 'silent' mode (do not echo command) -help | -h print the usage Link all the source files in the <dir> into <dir>/lnInclude Note The '-u' option forces an update when the lnInclude directory already exists and changes the default linking from 'ln -s' to 'ln -sf'.
-
中性大气环境湍流动能的自保持 | 附有算例下载@疏影横斜水清浅 应该是壁面粗糙度的问题,这不是我主要的研究方向
-
中性大气环境湍流动能的自保持 | 附有算例下载@疏影横斜水清浅 解决了,就是在地面时候有点保持不了
-
OF中有效粘度nu_t的代码问题@李东岳 多谢李老师
-
OF中有效粘度nu_t的代码问题@李东岳 李老师,我查了一下RANS的相关资料,nu是层流粘度,nut是湍流粘度,
nuEff=nu+nut,nut=Cmu*k^2/epsilon
,那是说在湍流时候,层流粘度nu是趋近于0,nuEff=nut=Cmu*k^2/epsilon
吗?不知道理解是否有问题?还请李老师指教一下。 -
OF中有效粘度nu_t的代码问题@李东岳 李老师,那nu跟nut的表达式是什么,我看OF的源码中没有显示 ,nuEff=Cmu*k^2/epsilon吗?
-
OF中有效粘度nu_t的代码问题各位老师,我问个简单的问题。 ,在RANS中nu_t就是一个简单的公式,但是我看在OF的incompressibleTurbulenceModel.C文件中,定义了好几个nu(),nut(),nuEff(),而在linearViscousStress.C中,只使用了nuEff(),这三个nu_t有什么区别吗?
-
原有的湍流模型加上非线性项雷诺应力的问题@李东岳 是要像李老师学习才对,对OF的代码和耦合还在学习中
-
原有的湍流模型加上非线性项雷诺应力的问题@李东岳 李老师,差不多是个意思,但是我们不打算找出g(i)=f(u)这个公式,我们是打算用神经网络结构来代替这个公式,也就是所谓的隐式公式,使用的神经网络是已经训练完成的,OF只需使用,不用再训练一次。现有的OF湍流模型的线性假设的公式是显式公式,也就是有明确的公式。目前的工作是要让OF程序能识别并使用神经网络来更新g(i),只用调用OF这一个程序。
-
原有的湍流模型加上非线性项雷诺应力的问题@李东岳 李老师理解的没问题。为什么要将pytorch中的神经网络能被OF读取识别?主要是为了解决计算速度过慢的问题。可以理解为通过机器学习,获得训练完成的神经网络,也就是一个有关g(i)隐式的公式,若能被OF识别并有效输出,那我就不用每次迭代计算调用pytorch来进行计算,在两个程序中来回计算,可以直接在OF求解中同步计算,相当于直接提供显式公式的效果。对于速度慢的问题,其实不用担心,我只需调用训练完成的神经网络结构即可,相当于用一个已知的公式获得我所需要的g(i)数据。
-
原有的湍流模型加上非线性项雷诺应力的问题@xpqiu 好的,多谢老师提供的资料。我之前打算是用caffe2来做为耦合的库,但是发现过于久远,可能有一些问题。我先了解一下libtorch的具体情况。
-
原有的湍流模型加上非线性项雷诺应力的问题@李东岳 李老师,现在是可以在pytorch中每一步更新得到g(i),目前的问题是如何将pytorch中的神经网络能被OF读取识别,实现与OF耦合的过程。发散的是之前只在0文件下提供一个不变的标量场的方法。目前打算是将pytorch转变成c++的能识别神经网络库,g(i)的值可以通过这个库直接灌输到OF的每一个迭代步中。
-
原有的湍流模型加上非线性项雷诺应力的问题@xpqiu 是的,应该是这个样的。但是有个问题,就是C++神经网络需要使用类似pytorch这样的环境,单加一个网络结构没办法识别计算,有那些类似pytorch这种的c++的神经网络编程语言吗?或者有什么神经网络语言是跟OF耦合的较好的呢?
-
原有的湍流模型加上非线性项雷诺应力的问题@xpqiu 非常感谢,您的建议。我之前也是修改kepsilon湍流模型的,跟EARSM 模型一样,加了correctNonlinearStress函数。之前算发散的时候,我从g1到g10一个一个添加进去计算,发现只带入g1时候才能计算,并且得出来的效果与kOmegaSST的结果相似的,但是只要带入g2就开始发散了。后来,看之前做的过程时候发现,g(i),也就是g1到g10是一个有关gardU,k,epsilon的函数,目前无法写出其显式表达,应该用外接神经网络结构来计算更新。那为什么只带g1能算呢,因为g1*T1是等于OF的原有线性项假设,相当于没有改变其假设,只是修改了Cmu的值而已。
EARSM 模型的非线性项中,我看它的非线性项写法与我的类似,但是它的bate(i)是有明确的显式公式的,是能随着求解器迭代来计算更新的,而我的是隐式公式,目前没有明确公式。volScalarField beta1 = -N*(2.0*sqr(N) - 7.0*IIW) / Q; volScalarField beta3 = -12.0 * IV / (N * Q); volScalarField beta4 = -2.0 * (sqr(N) - 2.0*IIW) / Q; volScalarField beta6 = -6.0 * N / Q; volScalarField beta9 = 6.0 / Q; volScalarField Cmu = - 0.5 * (beta1 + IIW * beta6); this->nut_ = Cmu * this->k_ * tau; this->nut_.correctBoundaryConditions(); this->nonlinearStress_ = this->k_ * symm( beta3 * ( (W & W) - (1.0/3.0) * IIW * I ) + beta4 * ( (S & W) - (W & S) ) + beta6 * ( (S & W & W) + (W & W & S) - IIW * S - (2.0/3.0) * IV * I) + beta9 * ( (W & S & W & W) - (W & W & S & W) )
现在我要做的内容就让我的g(i)跟它bate(i)一样跟随迭代,为了达到我这个效果,不能单修改湍流模型,还要外加上我的c++神经网络来更新g(i)。目前就是编译的一些内容和步骤有点疑惑,需要请教。
-
原有的湍流模型加上非线性项雷诺应力的问题@李东岳 好的,李老师。我先按您的方法试试。