@李东岳 在 可凝气体的冷凝数值模拟 中说:
@杨英狄 在 可凝气体的冷凝数值模拟 中说:
高温水蒸气在液态水中的冷凝及流动
不太好理解。水蒸气在水里冷凝然后流动?
李老师您好,我想做高温空气或燃气从喷管流出后水蒸气遇冷凝结雾化的仿真,您有没有了解的求解器比较适用这个问题?谢谢
@李东岳 在 可凝气体的冷凝数值模拟 中说:
@杨英狄 在 可凝气体的冷凝数值模拟 中说:
高温水蒸气在液态水中的冷凝及流动
不太好理解。水蒸气在水里冷凝然后流动?
李老师您好,我想做高温空气或燃气从喷管流出后水蒸气遇冷凝结雾化的仿真,您有没有了解的求解器比较适用这个问题?谢谢
圆孔区域速度为1,其它区域为0
inlet非均一分布
大家好,我用blockMesh生成了一个长方体,想在某一个固体壁面上开一个圆孔作为速度入口边界条件,是否有相似的例子?
谢谢大家
@李东岳 在 chtMultiRegionFoam中使用snappyhexmesh划分网格导致toposet设置的规则平面不平整 中说:
要是很接近地面,就需要局部细化网格,要不就会出现这个问题
也就是说在整个大背景内部,画一个长方体区域进行加密,并能包裹住这个椭球体,是吧?
@李东岳 在 chtMultiRegionFoam中使用snappyhexmesh划分网格导致toposet设置的规则平面不平整 中说:
blockMesh细化一下就好了
那这个物体要是很接近地面呢,如果用blockMesh设置背景网格会不会太多了
大家好,
我先用blockMesh生成背景网格,椭球体在空气中,地面上方,与空气发生共轭传热,所以我进一步使用snappyhexmesh划分网格,
geometry
{
target.stl
{
type triSurfaceMesh;
name target;
}
};
对椭球体区域进行加密
refinementRegions
{
target
{
mode inside;
levels ((1E15 5));
}
}
locationInMesh ( 39 39 59 ) ;
我设置了不同的levels ((1E15 0)); levels ((1E15 3)); levels ((1E15 5));
之后使用toposet分别定义物体和地面
{
name target;
type cellSet;
action new;
source surfaceToCell;
sourceInfo
{
file "constant/triSurface/target.stl";
outsidePoints ((39 39 59));
includeCut false;
includeInside true;
includeOutside false;
nearDistance -1;
curvature -100;
}
}
{
name target;
type cellZoneSet;
action new;
source setToCellZone;
set target; // cellSet
}
{
name floor;
type cellSet;
action new;
source boxToCell;
box (0 0 -2)(41 41 0);
}
{
name floor;
type cellZoneSet;
action new;
source setToCellZone;
set floor;
}



随着level增加,网格越接近椭球体,但地面越来越不平整,该如何解决?
希望能得到帮助
@黄昏晓为谁破 在 第三代涡识别方法liutex的Fortran程序运行出错原因,求助 中说:
@Vortex学习 我没用过Fortran程序计算Rortex,不过我的方法可以借鉴下,就是使用Tecplot打开Fluent结果,并导出基于节点的data文件,里面只包含xyz坐标以及UVW速度,然后我是在matlab中进行处理获得的R值以及矢量值,在替换data文件里的数值,最后再使用Tecplot打开data文件。这样可以处理较大网格量的数据,不过这个网格量得取决于Tecplot软件,我之前有个2000万的网格,Tecplot无法打开,我就很无奈了。
您好,这么多节点的UVW速度,如何在matlab里面计算速度梯度张量呢?
@李东岳 我看了您提供的PINN算例,感觉目前还没有真正跟of结合起来,是吧?只不过用了of的c++编译环境,可以这么理解么?
@李东岳 谢谢李老师
@李东岳 李老师,http://dyfluid.com/pinn.html ,#include "output.H"这个文件能补充上传么,想研究一下您的完整代码,谢谢
@李东岳 在 OpenFOAM libtorch tutorial step by step 中说:
更新gcc之后你openfoam就编译不了了。那你尝试安装老版本的libtorch吧
李老师,我用的是ubuntu18.04,Of2.4.0,您有推荐的libtorch版本么
@李东岳 就是想把离散点数据
-17.00000000 -59.58333206 0.00000000 302.77685547
-17.00000000 -62.50000000 0.00000000 302.77685547
-17.00000000 -65.41666412 0.00000000 302.77685547
-17.00000000 -68.33333588 0.00000000 302.77685547
-17.00000000 -71.25000000 0.00000000 302.77685547
-17.00000000 -74.16666412 0.00000000 302.77682495
-17.00000000 -77.08333588 0.00000000 302.77679443
-17.00000000 -80.00000000 0.00000000 302.77664185
整理成这样:
VARIABLES = "X""Y""Z"
Nodes=39888, Elements=78526, ZONETYPE=FETriangle
-17.00000000 -59.58333206 0.00000000 302.77685547
-17.00000000 -62.50000000 0.00000000 302.77685547
-17.00000000 -65.41666412 0.00000000 302.77685547
-17.00000000 -68.33333588 0.00000000 302.77685547
-17.00000000 -71.25000000 0.00000000 302.77685547
-17.00000000 -74.16666412 0.00000000 302.77682495
-17.00000000 -77.08333588 0.00000000 302.77679443
-17.00000000 -80.00000000 0.00000000 302.77664185
1 2 3
3 4 1
5 6 2
2 1 5
7 8 6
6 5 7
@Prometheus10 谢谢哈,我主要目的是建立节点数据之间的关联,三角形,缩放只能是个视觉上的平面。
用paraview或tecplot那能不能把曲面上的数据投影到一个规则的矩形平面上呢?
大家好,
我目前用starccm做了一个仿真,数据能用tecplot导出ZONETYPE=FEPolygon形式,如何进一步转换成ZONETYPE=FETriangle?
谢谢。
大家好,目前我可以输出温度场的三维数据,比如
我想垂直于z轴做100个等间距垂直切面,在每个切面上对温度求积分并取平均值。
\begin{equation}
\int_{A} T dx dy /A
\end{equation}
然后沿着z轴画出一条温度平均值曲线。
谢谢大家!
@李东岳 非常感谢李老师,终于搞定,能输出数据了,但还需要进一步验证是否正确。差点放弃想升级新版本of。
volScalarField& summass = const_cast<volScalarField&>(p.mesh().objectRegistry::lookupObject<volScalarField>("summass"));
const label cellIp = p.cell();
scalar& PPC = summass.internalField() [cellIp];
PPC += p.nParticle()*p.mass();
希望对以后需要的朋友有点借鉴作用。特别感谢 @星星星星晴 不厌其烦的解答
@李东岳 李老师,这句命令
volScalarField& summass = p.mesh().objectRegistry::lookupObjectRef<volScalarField>("summass");
又报错了
lnInclude/ParticleCollector.C:745:71: error: ‘class Foam::objectRegistry’ has no member named ‘lookupObjectRef’
volScalarField& summass = p.mesh().objectRegistry::lookupObjectRef<volScalarField>("summass");
@李东岳 李老师,还是不行
const volScalarField& summass = p.mesh().objectRegistry::lookupObject<volScalarField>("summass");
const label cellIp = p.cell();
summass.internalField() [cellIp] += p.nParticle()*p.mass();
编译出错
lnInclude/ParticleCollector.C:749:38: error: assignment of read-only location ‘(&(& summass)->Foam::GeometricField<Type, PatchField, GeoMesh>::internalField<double, Foam::fvPatchField, Foam::volMesh>())->Foam::Field<double>::<anonymous>.Foam::List<double>::<anonymous>.Foam::UList<T>::operator[]<double>(((Foam::label)cellIp))’
summass.internalField() [cellIp] += p.nParticle()*p.mass();
^
lnInclude/ParticleCollector.C: In instantiation of ‘void Foam::ParticleCollector<CloudType>::postMove(Foam::ParticleCollector<CloudType>::parcelType&, Foam::label, Foam::scalar, const point&, bool&) [with CloudType = Foam::KinematicCloud<Foam::Cloud<Foam::CollidingParcel<Foam::KinematicParcel<Foam::particle> > > >; Foam::ParticleCollector<CloudType>::parcelType = Foam::CollidingParcel<Foam::KinematicParcel<Foam::particle> >; Foam::label = int; Foam::scalar = double; Foam::point = Foam::Vector<double>]’:
parcels/derived/basicKinematicCollidingParcel/makeBasicKinematicCollidingParcelSubmodels.C:53:1: required from here
lnInclude/ParticleCollector.C:749:38: error: assignment of read-only location ‘(&(& summass)->Foam::GeometricField<Type, PatchField, GeoMesh>::internalField<double, Foam::fvPatchField, Foam::volMesh>())->Foam::Field<double>::<anonymous>.Foam::List<double>::<anonymous>.Foam::UList<T>::operator[]<double>(((Foam::label)cellIp))’
summass.internalField() [cellIp] += p.nParticle()*p.mass();