@HITSC30 icem不是很熟练,我去试一下
ice_flow
帖子
-
尖角附近的网格过度 -
尖角附近的网格过度@msm 我试一下哈,多谢多谢
-
STAR-CCM+网格转换后,checkMesh报错1.我猜是symmetry这个边界条件,试一下改成wall,然后在0文件夹里自己定义上下的slip边界条件。openfoam会对生成的网格编号进行检查,外部软件的网格节点编号和blockMesh的逻辑不一样。
2.可能是前后的empty边界问题,你可以在starccm里生成3D网格后,重新在openfoam里extrude来生成前后empty边界
类似这样
constructFrom patch;
sourceCase "../w3-d_hc1-3";
sourcePatches (symFront);// If construct from patch: patch to use for back (can be same as sourcePatch)
exposedPatchName symBack;// Flip surface normals before usage. Valid only for extrude from surface or
// patch.
flipNormals false;//- Linear extrusion in point-normal direction
extrudeModel linearNormal;nLayers 1;
expansionRatio 1.0;
linearNormalCoeffs
{
thickness 1;
}// Do front and back need to be merged? Usually only makes sense for 360
// degree wedges.
mergeFaces false; //true;// Merge small edges. Fraction of bounding box.
mergeTol 0; -
OpenFOAM mapFields命令无效你这两个map的网格不一致,是对应不上的
-
尖角附近的网格过度@李东岳 边界层想要横平竖直,这个角上的边界层如果按照之前的做法,扩展后的最后一层特别宽,就导致它相邻的三角形网格是钝角三角形。所以希望能控制它沿着几何轮廓法向扩展,其余的部分用三角形网格填充。
-
尖角附近的网格过度@HITSC30 这里分块分不出来,请教一下方向。
-
foam-extend-4.0 pisoFoam 计算二维圆柱绕流@Gunther
您好,想了解切割体网格是怎样绘制的(这个网格更接近snanpy出来的网格),定向网格里没有这个选项,是通过绘制二维网格后转换的吗。
可以识别,多面体四面体都可以。paraview里关闭这个选项就可以正常显示了。
-
foam-extend-4.0 pisoFoam 计算二维圆柱绕流您好,我使用starccm绘制网格导入openfoam后计算会出现误差,CL值不在零轴附近波动(相同的设置计算blockMESH绘制的网格没有这个问题)。
我是在starccm中通过定向网格直接绘制的三维网格,然后用ccm26ToFoam转化,想请教是什么原因。 -
尖角附近的网格过度各位老师好,
我用starccm处理边界层的时候遇到下面这个问题,尖角附近的边界层会变形,有什么办法可以自定义边界层吗。
上图是自动边界层,我希望调整成下面的边界层。
-
openfoam viv 网格变形1.根据现有的结果计算一下局部库朗数,看看是否是突变的速度导致的网格变形。(尝试调整一下时间项的离散方案)
2.用比较稀疏的网格尝试计算,看看能否承受变形(去掉边界层)
3.松弛因子accelerationRelaxation 0.4;可以再调整,网格变形方式也可以尝试调整。
大概是这些方向,如果都不行。那么可以考虑使用重叠网格方案,对于刚体运动是一定可行的。 -
量纲不匹配我对你这个方程不太熟悉,你自己可以对照原方程检查量纲。如果没弄错的话,
在 TEqn 方程中,fvm::ddt(T) 的维度应该是 [1 0 -3 1 0 0 0](即温度的时间导数,单位是 K/s)。fvm::div(phiFluid[i], T) 的维度应该是 [1 0 -3 1 0 0 0](即对流项,单位是 K/s)。
fvm::laplacian(alphaEff, T) 的维度应该是 [1 0 -3 1 0 0 0](即扩散项,单位是 K/s)。
rad.ST(rhoCp, T) 的维度应该是 [1 0 -3 1 0 0 0](即辐射源项,单位是 K/s)
要让 rad.ST(rhoCp, T) 的返回值与方程中其他项的维度一致,可以检查 rad.ST 的实现或传入的参数(rhoCp)。大概是这个思路。
-
使用fieldAverage,求解器正常运行,但没有输出fieldAverage工@xumengxin 对的,是这段时间窗口的平均值,对应的窗口值应该也有保存。
-
量纲不匹配 -
使用fieldAverage,求解器正常运行,但没有输出fieldAverage工用这个试一下
fieldAverage1 { type fieldAverage; functionObjectLibs ("libfieldFunctionObjects.so"); resetOnRestart true; resetOnOutput false; outputControl outputTime; fields ( U { mean on; prime2Mean on; base time;//iteration windowType exact;//计算精确窗口平均值 window 4000; allowRestart true; } p { mean on; prime2Mean on; base time;//iteration windowType exact;//计算精确窗口平均值 window 4000; allowRestart true; } ); }
-
openfoam中伪时间步下相方程的组建和求解@Shihang-Chen
你好,我在做类似的代码。想请教伪时间步植入后,计算结果中出现松弛要怎么处理(计算的周期和实际周期不一致)。我是在动量方程中加入的隐式伪时间步。
-
如何在动网格(被动运动)过程中施加主动运动(指定的冲击,类似脉冲函数)@lwjetmann 多谢,我自己增加了一个solver,确实是可行的。
-
如何在动网格(被动运动)过程中施加主动运动(指定的冲击,类似脉冲函数)各位老师好,
我想要在运动系统中增加一个冲击位移,尝试了很多办法不能实现。
静止系统中的冲击可以用自定义边界条件来实现,我尝试了一个简单脉冲函数,可以很好的反映这个冲击。如下在pointDisplacement文件中自定义待冲击的边界即可
{ type codedFixedValue; value uniform (0 0 0); // 初始位移 name pulseDisplacement; // 自定义边界条件的名称 code #{ const scalar t = this->db().time().value(); const scalar t0 = 5; // 位移脉冲的发生时刻 const vector pulseAmplitude = vector(0, 0.001, 0); // 脉冲幅度 if (t >= t0 && t < t0 + this->db().time().deltaT().value()) { operator==(pulseAmplitude); } else { operator==(vector::zero); } #}; }
但是6DOF运动中,pointDisplacement会被占用,他必须定义为sixdofsover里的边界(例如caculate)。这样上面静止系统的方案就不可行了。
我又尝试在pimpleFoam主程序中将位移写为附加项,想在6dof更新状态时加上去if (currentTime >= pulseTime && currentTime < pulseTime + runTime.deltaT().value()) { // 获取当前位移状态 vector currentDisplacement = motion.centreOfRotation(); // 获取当前的中心位置 // 将脉冲位移量叠加到当前位移 vector newDisplacement = currentDisplacement + pulseDisplacement; // 使用 transform() 更新刚体的位置 tensor identity(1, 0, 0, 0, 1, 0, 0, 0, 1); // 单位张量,不涉及旋转 // 调用合适的方法来更新位移 motion.update(false, newDisplacement, vector(0, 0, 0), runTime.deltaT().value(), runTime.deltaT().value()); // 调用更新方法 Info << "Pulse applied at time " << currentTime << " with displacement: " << pulseDisplacement << endl; }
这个方案也不可行,我估计是6dof不仅涉及到刚体位置的变换还有对应网格的更新。请各位老师帮忙看下。
-
如何在弹簧模型的基础上叠加运动各位老师好,
我想实现弹簧固定的模型上再耦合给定的运动,例如固定刚度的刚体在特定的时间范围上指定一个位移。位移是离散的数据,也可以拟合出函数。
弹簧模型可以在sixDof里实现,通过定义pointDisplacement文件中的边界类型为如下type sixDoFRigidBodyDisplacement;
可以实现弹簧的定义。
但是问题在于特定的时间范围上指定一个位移,我想到的方法也是在pointDisplacement文件中自定义边界条件实现type codedFixedValue;
这样分开定义都可以实现,叠加在一起就矛盾了。各位老师有相关的经验吗,是否有其他的实现方案。
-
求不稳定流动的稳态解@李东岳
基本理论是通过增加时间步长来尝试滤波,大致的时间步长对应的CFL在5左右,所以我想先用pimple试一下。
这里不是CFL=0.01,是实际应用时CFL只能在1以下,再提高CFL就会发散了。这个0.01是CFL=1对应的时间步长。另外想请问老师设置较大的CFL有什么要求吗,我是直接在controlDict里设置了maxCo。 -
求不稳定流动的稳态解@李东岳
谢谢老师,那是我的计算设置有问题吗。
文章链接贴在下面
http://dx.doi.org/10.4236/ojfd.2015.52021