@xpqiu 哇,真的是太感谢您了,您一说我就明白了,我确实是没有写这行代码!
Joker
帖子
-
自定义边界条件遇到的问题 -
自定义边界条件遇到的问题我自己编译了一个边界条件,已经编译成功,且能够顺利的进行计算,但目前遇到一个问题,一旦我开始并行运算,使用decomposePar分块以后,我的关键字fixedU就在分块里面消失了,导致计算无法进行,请问这是什么原因导致的呢,实在是想不到为什么。还请各位大佬替我解答一下,谢谢!
-
codedfixedvalue实现运动边界速度的指定type codedFixedValue; value uniform (0 0 0); // 初始速度 name UM2; // 自定义边界条件名称 codeInclude #{ #include "fvMesh.H" #include "polyPatch.H" #include "fvcMeshPhi.H" #include "addToRunTimeSelectionTable.H" #}; code #{ // 避免重复计算 if (this->updated()) { return; } // 获取网格和边界数据 const fvPatch& p = patch(); const polyPatch& pp = p.patch(); const fvMesh& mesh = internalField().mesh(); // 仅在网格运动时计算(静态网格跳过) if (mesh.moving()) { // 1. 计算上一时刻的面中心坐标 const pointField& oldPoints = mesh.oldPoints(); vectorField oldFc(pp.size()); forAll(oldFc, i) { oldFc[i] = pp[i].centre(oldPoints); // 基于上一时刻节点坐标 } // 2. 计算几何速度(位置变化/时间步长) scalar deltaT = mesh.time().deltaTValue(); vectorField Up = (pp.faceCentres() - oldFc) / deltaT; // 3. 通量修正确保连续性 const volVectorField& U = static_cast<const volVectorField&>(internalField()); scalarField phip = fvc::meshPhi(U, p.index()); // 网格运动产生的通量 vectorField n = p.nf(); // 边界法向量 scalarField magSf = p.magSf(); // 面面积 tmp<scalarField> Un = phip / (magSf + vSmall); // 通量对应的法向速度 // 4. 合成最终速度:几何速度 + 法向修正 // 公式:修正速度 = 原始速度 + 法向*(通量法向速度 - 原始法向分量) vectorField::operator=(Up + n*(Un() - (n & Up))); } // 调用父类方法完成更新 fixedValueFvPatchVectorField::updateCoeffs(); #}; codeOptions #{ -I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude #}; codeLibs #{ -lfiniteVolume \ -lmeshTools #};
请教一下各位大佬,我想要通过codedfixedvalue实现movingwallvelocity这个边界条件的效果,这个代码是我仿照movingwallvelocity边界条件弄得,我用自己写的这个边界条件算了涡激振动,算出来的结果和movingwallvelocity结果几乎没有差别。计算完成后,我将输出结果导入tecplot,可以正常导入,但是切片时会出现以下报错,目前没有找到问题出在哪儿,应该是我写的这个边界条件tecplot无法识别导致的,但我不知道问题出在哪儿。
-
codedFixedValue 入口速度相关问题@chon01 这也只是我的猜测,因为我按了一下计算器,lg和ln函数算出来的结果差距确实比较明显,希望能帮到你吧。
-
codedFixedValue 入口速度相关问题@chon01 我在想有没有可能是他们写错了呢,如果用ln函数算,我认为你的结果是没问题的。但是如果将ln换算成底数为10的lg,好像就可以得到你最开始放的那张图里面的数值了
-
codedFixedValue 入口速度相关问题@chon01 我刚刚用计算器初步算了一下,用ln函数算出来当z=0.5时,u=0.88。用lg函数算出来当z=0.5时,u=0.38,跟你给出来的图是能对上的。这就比较奇怪了,是文献中把公式写错了还是咱们用错了。
-
codedFixedValue 入口速度相关问题你好,我请教一下,别人文章中用的ln函数,你写的是log函数,c++中ln函数是这么写的嘛?
-
openFoam二维计算中输出的力的单位是什么?@xpqiu 好的,谢谢您!
-
openFoam二维计算中输出的力的单位是什么?我最近在使用force函数监测流体作用力的过程中,出现了困惑。
流体作用力的计算应该是对物体表面做压力和粘性力的积分,openFoam在做二维计算时,需要在z方向设置一定的厚度,程序在计算流体作用力时是如何选取宽度的呢?是按照我们设置的厚度去计算,还是针对二维计算会默认取1m?
还有force函数输出的文件中,力的单位是什么?有没有大佬能给我解答一下。谢谢。
-
openFoam动网格求助——displacementlaplacian 的使用@Mina-Lee 好的,谢谢啦。我刚刚试了很久终于试出来了,确实是少给了参数。
-
openFoam动网格求助——displacementlaplacian 的使用@Mina-Lee 您好,可以再请教一下嘛?我扩散方案想试一下exponential,但是他会报错超出EOF,这是什么原因引起的呢?
-
openFoam动网格求助——displacementlaplacian 的使用@Mina-Lee 好的,我再排查一下。
-
openFoam动网格求助——displacementlaplacian 的使用@Mina-Lee 好的,谢谢您。我觉得应该是我扩散方案选的有问题,我再检查检查。
-
openFoam动网格求助——displacementlaplacian 的使用我网格变形是这样的,按照我的想法,整个变形域的网格应该一起变化才对,为什么现在他只压缩第一层网格呢?
-
openFoam动网格求助——displacementlaplacian 的使用@Mina-Lee 您好,我可以再请教您一个问题嘛?我使用了您提供的方法,现在上层网格固定住了,但是我计算过程中直接发散了,我检查了一下,是因为变形网格和静止网格交界处的网格被压缩的很小,而且他只压缩第一层网格,这是为啥呢?还是因为我扩散率选的不对嘛?
-
openFoam动网格求助——displacementlaplacian 的使用@Mina-Lee 谢谢您!
-
openFoam动网格求助——displacementlaplacian 的使用我在使用openFoam动网格的时候,希望能根据文献实现上面的三角形网格不变,下面的正方形网格变形,但是在使用过程中,我发现一旦下面变形区域内的网格变化,便会带动上面的网格一起变形,是否是因为我扩散模型选的有问题,我该如何实现呢?下面是我扩散模型的配置。
-
压力梯度中不可导的点如何处理呢?@yms00yms 不好意思哈,这我真不好说,那个cyclic边界条件我没用过。
-
Openfoam使用SST k-omega湍流模型相关问题。@EricLiu 你用openFoam自带的那个函数去监测y+,别用你自己算的那个,不准。我个人觉得哈
-
Openfoam使用SST k-omega湍流模型相关问题。@EricLiu 你的这些设置没有问题,我觉得是网格的问题,你从层流过渡到湍流,网格要更细一些,你算y+了吗?