PINN比较有意思
Wayne
帖子
-
-
上图PINN,下图inr视频压缩。是不是很像?都是输入坐标和时间,用神经网络来学习一种隐式表示。感兴趣的老哥带带我
-
v我50, 我来跑
-
看了下PINN,其实和现在视频编码领域流行的隐式表征方法是一样的。不过隐式表征能直接拿偏微分方程做loss,学会流场,还是感觉挺震撼的。看起来PINN做反问题、实时仿真和流体控制是一把好手
-
最近流体+AI很热门啊,天气预报的工作频繁登上Nature
之前在这里学习过一段时间OpenFOAM,现在专门做AI了。
我主页:
https://air.tsinghua.edu.cn/info/1046/1555.htm
感兴趣的欢迎交流合作。我觉得这个方向主要是CFD部分比较困难,深度学习和PyTorch很容易学。搞AI的人不愿意花时间学CFD,还是比较适合我们做CFD出身的
带我个nature子刊
-
mark
-
@hurricane007 试试,说不定能发个science
-
@程迪 厉害。确实有一些计算机方面的方法可以搞,不过用vtk解决了,多谢!
-
@李东岳 生成的随机坐标与前一个点的值有关
-
准备试试vtk,好像没有信息损失。。
-
发现paraview导出csv然后处理比较简单,虽然这样没有网格信息了,只能基于网格点上的值对任意点的T进行插值
-
目前做一个后处理算法,需要按照随机的位置对计算结果进行采样。后处理中需要用到复杂的算法,目前是基于python的类库实现。
最简单的想法是在python中调用probe,但是这样每采样一次就需要重新从硬盘读取整个网格的结果,太慢。
另一个想法是写一个of的后处理程序,首先读入整个网格的结果进内存,然后调用python代码,有个问题是此时python怎么访问读进来的volScalarField?即:int main(int argc, char *argv[]) { #include "setRootCase.H" #include "createTime.H" #include "createMesh.H" Info<< "Reading field T\n" << endl; volScalarField T ( IOobject ( "T", runTime.timeName(), mesh, IOobject::MUST_READ, IOobject::AUTO_WRITE ), mesh ); 调用一段python,里面有一个函数的功能是:对于python随机生成的坐标(x,y,z),能够返回T[mesh.findCell(point(x,y,z))] }
如果能在python中实现读入mesh和field,以及mesh.findCell功能,问题就简单了。
各位有何想法?多谢!
-
Info<< "Reading field S\n" << endl; volScalarField S //1.48e-5 kg/s ( IOobject ( "S", runTime.timeName(), mesh, IOobject::NO_READ, IOobject::AUTO_WRITE ), mesh, dimensionedScalar("S",dimensionSet(1 ,-3, -1 ,0 ,0 ,0 ,0),0.0) ); forAll(S,i) { S[i]=0; } S[mesh.findCell(point(0,0,0))]=Q.value()/mesh.V()[mesh.findCell(point(0,0,0))];
-
@piteqiu 把这些物性参数都弄成场,然后随便咋赋值。。
-
擦擦,我是先算多孔内的达西流动,然后将结果作为边界条件传给用rans的湍流区。
参考文章:土壤大气耦合的燃气泄漏扩散数值模拟完全实现层流区和湍流区耦合挺麻烦的(除了直接以附加源项的方式模拟多孔区,这种比较简单,fluent是这样搞的),可能也有收敛性的问题。不过我在一些其他代码中见过,如dumux。楼主要是在of里实现了这种耦合边界请借我一用!
-
弄好了。。
-
@金石为开 求个外流场文件配置。我看cfmesh的例子几何都是凹在流场里面,现在我是有几何的CAD,用了surfaceGenerateBoundingBox构建流场后不会生成网格了==
-
@cfd-china 厉害了我的哥
-
厉害了我的哥哥姐姐们
-
move to Gas-dispersion-by-OpenFOAM
-
@wwzhao 套路好深。。
-
-
@chpjz0391 内部界面的地方不需要边界条件吧? 风机抽风的地方给个固定速度?
这就和风场里有个固定风量的电风扇差不多
-
楼主C++炉火纯青
-
@李东岳 服
-
@Elibathe康 电动力学里也有这个
-
服。。
-
@buxiangle2012 label是整形
-
利用正则表达式生成文本分析程序
-
@cfd-china 写文章,做实验。。
-
@cfd-china 数理方程 这门课讲了
-
@cfd-china 数理方程?
-
@金石为开 adjustPhi.H
-
@cfd-china :happy:
-
楼主好人 w-y10@foxmail.com
-
这是啥意思啊
-
@hangsz 一起赚
-
知道了。内部场和边界场不是分开的,所以用等号赋值的时候也就更新了边界场。
-
参考fvOptions 之 semiImplicitSource
。absolute是加在整个Set上的。如下
// Set volume information V_ = 0.0; forAll(cells_, i) { V_ += mesh_.V()[cells_[i]]; } reduce(V_, sumOp<scalar>()); Info<< indent << "- selected " << returnReduce(cells_.size(), sumOp<label>()) << " cell(s) with volume " << V_ << endl;
另外,
fvOptions(rho, he)
中的rho
可能实际上没有使用,如下:template<class Type> void Foam::fv::SemiImplicitSource<Type>::addSup ( const volScalarField& rho, fvMatrix<Type>& eqn, const label fieldi ) { if (debug) { Info<< "SemiImplicitSource<" << pTraits<Type>::typeName << ">::addSup for source " << name_ << endl; } return this->addSup(eqn, fieldi); //又调用了不带rho的addSup函数 }
-
另外,
参考
fvc::div(u)=fvc::div(phi)。对应的代码如下:
template<class Type> tmp < GeometricField <typename innerProduct<vector, Type>::type, fvPatchField, volMesh> > gaussDivScheme<Type>::fvcDiv ( const GeometricField<Type, fvPatchField, volMesh>& vf ) { tmp < GeometricField <typename innerProduct<vector, Type>::type, fvPatchField, volMesh> > tDiv ( fvc::surfaceIntegrate ( this->mesh_.Sf() & this->tinterpScheme_().interpolate(vf) ) ); tDiv().rename("div(" + vf.name() + ')'); return tDiv; }
即
div(U)
的计算方法也是先插值到单元体表面上,然后进行求和。 -
补充一下。
公式乱码刷新一下就行。
fvc::div
代码如下:template<class Type> tmp<GeometricField<Type, fvPatchField, volMesh> > div ( const GeometricField<Type, fvsPatchField, surfaceMesh>& ssf ) { return tmp<GeometricField<Type, fvPatchField, volMesh> > ( new GeometricField<Type, fvPatchField, volMesh> ( "div("+ssf.name()+')', fvc::surfaceIntegrate(ssf) ) ); }
fvc::div(phiHbyA)
就是对单元体表面的phiHbyA进行求和。这个依据高斯定理,相当于对 ∇∙(HbyA) 在单元体上进行积分。所以这个问题的关键是,
div
和laplacian
等操作符是对
\begin{equation}
\nabla \cdot (HbyA^r) = \nabla \cdot(\frac{1}{A_{\mathrm{p},f}} \nabla p^r)
\end{equation}
这个半离散方程进行进一步的离散,即积分。 -
correctBoundaryConditions() { this->setUpToDate(); storeOldTimes(); boundaryField_.evaluate(); }
然后就是具体调用各个边界条件中的evaluate()函数了。
可参考http://www.cfd-online.com/Forums/openfoam-programming-development/129271-how-boundary-conditions-called-openfoam-solvers.html
但是,如果选了calculated边界,边界值就是被算出来的。但是这个值是怎么给定的我暂时不清楚,比如U=d*P,这都是针对体心值的操作,不清楚选了calculated时边界值是如何更新的
-
从代码看这个函数只修正了边界上的流量,没有碰内部场,这样有什么意义吗?就是为了强制边界上总的通量是守恒的?
它好像还起到检查边界条件的作用,感觉主要目的是这个?就是检查这个算例有没有可能最终达到边界上通量的守恒。
它不检查存在给定压力边界(p.needReference()为false)的算例,是默认这种算例能最终达到边界通量的守恒?
-
据说可压缩的压力入口是这么给的:
totalPressure
pressureInletVelocity -
我只想说,请联系我
-
谢谢回答。现在知道把模板参数 typedef 是为了可以输出模板参数的类型。参见C++ traits
-
说多了都是泪
CFD与机器学习基本概念入门
有人对Machine Learning+CFD感兴趣么
有人对Machine Learning+CFD感兴趣么
有人对Machine Learning+CFD感兴趣么
有人对Machine Learning+CFD感兴趣么
感觉读了个假博士
TensorFlow 雨点落入一块方形水池
TensorFlow 雨点落入一块方形水池
按照随机顺序对计算结果进行采样
按照随机顺序对计算结果进行采样
按照随机顺序对计算结果进行采样
按照随机顺序对计算结果进行采样
按照随机顺序对计算结果进行采样
不同的物性参数材料如何制定?
不同的物性参数材料如何制定?
求助-如何使用OpenFOAM进行多孔介质内数值模拟
关于snappy与cfmesh
关于snappy与cfmesh
rhoCentralFoam求解器的问题
关于 phi 和 fvVectorMatrix 的两个问题
darcyGFoam - 达西流动求解器
假的吗?应用基础与工程科学学报官网。。
假的吗?应用基础与工程科学学报官网。。
假的吗?应用基础与工程科学学报官网。。
假的吗?应用基础与工程科学学报官网。。
出口处抽风的边界问题。
面向过程编程和面向对象编程的速度对比
地下室的CFD有志青年
快速多极子展开
行业的重要,远高于你手里的一纸学位证书
有关组分扩散系数
Flex有人了解么?
傅里叶变换求偏微分方程组
傅里叶变换求偏微分方程组
傅里叶变换求偏微分方程组
adjustPhi的作用是检查边界条件?
David Croll Fellow Professor
我自己写了一个求解器,模拟不出现象,谁能帮我看一下
David Croll Fellow Professor
凭什么我辛苦二十年,现在却比别人差那么多(看化学和计算机专业的区别)
关于openFoam中非求解量的边界条件的疑问
fvOptions(rho, Yi)与scalarSemiImplicitSource
《icoFoam解析》中压力修正的代码问题
《icoFoam解析》中压力修正的代码问题
关于openFoam中非求解量的边界条件的疑问
adjustPhi的作用是检查边界条件?
压力入口边界条件
北师大学生性行为调查报告2016版
[C++] VectorSpace.H
凭什么我辛苦二十年,现在却比别人差那么多(看化学和计算机专业的区别)