@李东岳 在 SHM为什么生成两个90度垂直面的边界层很烂? 中说:
确实是这样。snappyHexMesh的边界层不好加已经是老大难了。目前主力开发人员J不在.org那面,在.com那面。你要不要试试.com的openfoam。我也做不到调节一个参数就能搞定,如果网格少可以上传上来我试试,你也可可以调试一下网格参数那些。要不就是把stl尖角处理成圆角
原来是这样呀,快放弃SHM了,已经在研究ICEM画了,谢谢老师!
@李东岳 在 SHM为什么生成两个90度垂直面的边界层很烂? 中说:
确实是这样。snappyHexMesh的边界层不好加已经是老大难了。目前主力开发人员J不在.org那面,在.com那面。你要不要试试.com的openfoam。我也做不到调节一个参数就能搞定,如果网格少可以上传上来我试试,你也可可以调试一下网格参数那些。要不就是把stl尖角处理成圆角
原来是这样呀,快放弃SHM了,已经在研究ICEM画了,谢谢老师!
@尚善若水 在 SHM为什么生成两个90度垂直面的边界层很烂? 中说:
用com版本的,亲测org处理尖角不好调,com的生成速度还快。
您好,我现在用的就是V2312,这种尖角问题您是怎么解决的呢?
求大佬解答,卡了很久了TuT@李东岳
如题,我在SHM生成两个面,这两个面互相垂直,边界层在角区生成的很烂,甚至几何都变形了
边界层参数都计算过,没问题,我觉得问题出在了featureAngle这里,但是我无论调大调小都是这样?只要两个面的边界层一相交就变形了,单个生成一个面的边界层是可以的。
附代码:
addLayersControls
{
layers
{
"(ground|Inner)"
{
nSurfaceLayers 20;
}
}
relativeSizes false;
firstLayerThickness 1.2e-5;
expansionRatio 1.1733;
minThickness 0.001;//最小总层厚度
featureAngle 360;
maxFaceThicknessRatio 0.5;
slipFeatureAngle 30;
nLayerIter 50;//最大边界层迭代数
nRelaxedIter 20;//最大松弛迭代次数
nRelaxIter 5;
nGrow 0;
nSmoothSurfaceNormals 1;
nSmoothNormals 3;
nSmoothThickness 10;
}
多次调试发现就错在mesh.C().internalField()这个调用上
我想编译各个网格点位置矢量,采用了
(mesh.C().internalField() - SRF->origin())
可是一直编译报错。。。
@Voynich 在 fvOptions(Urel)和SRF->Su()具体说明在哪儿? 中说:
SRF->Su()
是和坐标系相关的源项,就是你公式的最后两项,fvOptions(Urel)
是自定义的源项。
谢谢,昨天研究了一下已经找到了
各位大佬,最近在看SRFsimpleFoam源码,想改求解器,源码中UrelEqn.H中动量预测方程多了SRF->Su()与fvOptions(Urel)这两项,找了半天也没找到相关说明,求解答。
tmp<fvVectorMatrix> tUrelEqn
(
fvm::div(phi, Urel)
+ turbulence->divDevReff(Urel)
+ SRF->Su()
==
fvOptions(Urel)
);
fvVectorMatrix& UrelEqn = tUrelEqn.ref();
另外,SRF求解器是求解相对坐标系下NS方程,那方程不应该长这样
感觉在UrelEqn.H等源代码中没体现出来呀??
@李东岳 在 非定常CFL数相关问题 中说:
S参考 http://dyfluid.com/tensors.html#id2
B不用管 计算出来的你那个小写的s是传输的标量
哦哦,看了一下小写s确实是一个传输的标量,在pitzDaily案例里面使用了scalarTransport去求解,那么小写s在LES这个里面到底是什么呢??麻烦老师再解答一下,谢谢老师
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object s;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 0;
boundaryField
{
inlet
{
type fixedValue;
value uniform 1;
}
outlet
{
type inletOutlet;
inletValue uniform 0;
value uniform 0;
}
upperWall
{
type zeroGradient;
}
lowerWall
{
type zeroGradient;
}
frontAndBack
{
type empty;
}
}
明白了,谢谢老师!
老师还有一个问题想再问一下,LES输入0文件夹里面,k是不是就是ksgs亚格子湍动能,这个s是什么呀?是亚格子应力里面的涡的应变率Sij吗?
还有在选择WALE模型时还会有B文件。
@李东岳 在 非定常CFL数相关问题 中说:
- dt=1e-5确实很常见,因此我们说不要把某个网格做的特别小。
- 另外Co计算的是局部速度,可能你那个地方网格特别小,但是速度也小(比如边角处)
确实,刚看了一下,老师说的有道理。
老师我还有一个疑惑,非定常URANS是不是不用管网格无关性这个东西,就如果我RANS做网格无关性得出800W才达到了网格无关,然后我去算URANS,此时如果速度真很大、网格尺度又很小,为了达到CFL数要求就只能去改网格了。
另外我看到LES有这样一段话:“在LES中我们无法进行网格无关性验证,这时候唯一的标准往往就是是否解析了80%的湍动能”
求助各位大佬
CFL数定义如下:
而一般在非定常计算时要求CFL<1,保证时间步长内流体运动距离小于矩形网格单位长度。那么问题来了,如果我的网格特别细密,想捕捉一个网格尺度的涡,或者为了计算精度而做了800W网格,这就导致一个网格尺度在0.25mm,然而最高流速又在10m/s,那算出来时间步长都在10-5次方了,这该怎么办呀??
@D-Benjamin 在 请教OpenFOAM获得某个面域(faceZone)的平均温度的方法 中说:
我想使用functions获得某个面域平均温度,于是自己写了如下代码:
surfaceFieldValue_out_core { type surfaceFieldValue; libs ("libfieldFunctionObjects.so"); log true; writeControl writeTime; writeFields true; regionType faceZone; name out_core; operation weightedAreaAverage; surfaceFormat foam; fields ( T ); }
然而,运行之后报错,如下所示:
[4] --> FOAM FATAL ERROR: [4] surfaceFieldValue surfaceFieldValue_in_core: faceZone(in_core): Unable to process internal faces for volume field T
似乎体积场的值不可以进行面域平均,这样的话,获得“面域平均”值该如何做到呢?望各位大佬不吝赐教,谢谢!
您好,请问您这个报错怎么解决的?我现在也是自己定义了一个内部面faceZone,我理解的这个报错是因为OF是有限体积法,物理量值都存在网格cell中心,导致取的内部面没有物理量值。
如下图,我想求这个通道中心线上的温度沿程分布,需要先求每个截面的面积平均温度,再取这条线的温度沿程平均值。这该怎么做到呢,查了一下现有的工具确实做不了呀,求大佬解答,谢谢。
下面是求面平均值,目前还只能求patch的平均,不能求沿程任意截面的
surfaceAve
{
type surfaceFieldValue;
libs ("libfieldFunctionObjects.so");
writeControl writeTime;
writeFields true;
surfaceFormat raw;
regionType patch;//(faceZone patch functionObjectSurface sampledSurface)
name inlet;
operation areaAverage;
fields
(
T
);
}
@李东岳 在 OpenFOAM我想refine多个set,或者监测多个patch,这里该怎么写呀?? 中说:
可以放多个flowratepatch
老师,咋能放多个呢,controlDict目录也只能放一个同名的flowratepatch文件呀,就算在flowratepatch文件里面写两个,它也只执行一个patch
name inlet;
writeControl timeStep;
writeInterval 1;
name outlet;
writeControl timeStep;
writeInterval 1;
#includeEtc "caseDicts/postProcessing/flowRate/flowRatePatch.cfg"
@李东岳 在 OpenFOAM我想refine多个set,或者监测多个patch,这里该怎么写呀?? 中说:
你可以把多个set合并成一个set
哦哦,谢谢!这个明白了,那flowratepatch监测,试了一下没法同时监测两个面呀TuT
如下代码,我想refine多个set集合,或者flowRatePatch多个name patch,这种该怎么写呀??试了几个都不行。。。。求助
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object refineMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
set c0;//集合名字
coordinateSystem global;//全局坐标系
globalCoeffs
{
tan1 (1 0 0);//X方向
tan2 (0 1 0);//Y方向,Z方向自动生成
}
name inlet,outlet;
writeControl timeStep;
writeInterval 1;
#includeEtc "caseDicts/postProcessing/flowRate/flowRatePatch.cfg"
@xpqiu 在 ParaView切片问题?? 中说:
切完之后再用 clip ,或者 先用 Select Cells Through,选定你想显示的网格,再用 extract selection 把选定的网格提取出来单独显示即可。
明白了,谢谢!!!!