我想做振荡流的 LES,即通道中没有平均分量的正弦流。为了在不使用长通道的情况下以较低的目数获得完全发展的流动,我想将其映射回下游的某个位置或从出口回收。
对于正弦曲线,我在 RANS 中使用了 codedFixedValue。对于映射,我可以使用类似于 PitzDailyMapped 教程中的 mappedpatch 之类的东西。
是否可以以某种方式将映射的入口与 codedFixedValue 结合起来?
也欢迎任何其他减少计算工作量的建议。
谢谢
SM
我想做振荡流的 LES,即通道中没有平均分量的正弦流。为了在不使用长通道的情况下以较低的目数获得完全发展的流动,我想将其映射回下游的某个位置或从出口回收。
对于正弦曲线,我在 RANS 中使用了 codedFixedValue。对于映射,我可以使用类似于 PitzDailyMapped 教程中的 mappedpatch 之类的东西。
是否可以以某种方式将映射的入口与 codedFixedValue 结合起来?
也欢迎任何其他减少计算工作量的建议。
谢谢
SM
我会继续扩展codedFixedValue边界条件,您已经可以使用一些行直接从其代码访问映射的入口补丁。下面是一个愚蠢的例子,应该说明访问。请注意,赋值运算符的说法是我自己编的,唯一的目的是为了说明工作原理。上面的几行是重要的。
您首先定义入口补丁名称并获取对网格的 const 引用。之后创建对速度场的 const 引用,该引用从对象注册表中查找。下一步查找补丁名称并将相应的补丁 ID 存储为标签,然后下一行将重用该标签来访问入口补丁的边界字段。
myPatch
{
type codedFixedValue;
value uniform 0;
redirectType rampedFixedValue; // name of generated BC
code
#{
const word coupledPatchName("INLET");
const fvMesh& mesh(dimensionedInternalField().mesh());
const volVectorField& U(db().lookupObject<volVectorField>("U");
const label coupledPatchID(mesh.boundaryMesh().findPatchID(coupledPatchName));
const vectorField& UbCoupled(U.boundaryField()[coupledPatchID]);
operator==(10*vector::one*max(mag(UbCoupled)));
#};
}
我希望这对您的问题有所帮助,否则请大声疾呼。