dsmcFoamPlus定义非定常边界条件的方法
-
我希望我算例中的自由来流条件随着时间变化。在 dsmcFoamPlus 中,边界由 boundariesDict 字典文件控制,通过使用其自带的 dsmcFreeStreamInflowFieldPatch 模型,用户可以在 0 文件夹中导入 boundaryXXX 文件,设置速度、温度和密度的各边界上条件。参考:https://github.com/hystrath/hyStrath/issues/84
boundaryField { patch1 { type uniformFixedValue; uniformValue tableFile; uniformValueCoeffs { file "myFileName"; } } }
我在这三个边界控制文件中将入口的 patch 类型设为 uniformFixedValue,并用一个 table 文件存储对应时刻边界上物理量的值,以期望实现一个随时间变化的来流条件。开始运行后,没有出现报错。根据各时间步文件夹中的 boundaryXXX 文件来看,uniformFixedValue 的设置被正确读取,但并没有实际体现在边界的数值(计算结果)上。目前来看,dsmcFoamPlus 会选取 table 文件中某一个时间的值赋给边界,然后定常运算(通常是 0 时刻)。我猜测 dsmcFreeStreamInflowFieldPatch 并不能适用于随时间变化的边界条件。请问有人能帮助我解决这个问题么?
-
@做在江湖
0
文件夹比如速度U
的设置如下所示。保存不同时刻的结果,看U
文件的inlet
数据是否差异,看看是否读取成功。或者能否改用
pisoFoam
试算一下,看看是否能读取不同时刻的数据。如果可以,那就说明是dsmcFoam
的问题。再看看dsmcFoam
中是否对inlet
边界有额外的操作,使得每个时刻只用了第一个时刻的数据?timeVaryingMappedFixedValue
这个边界,如果controlDict
设置的endTime
大于所提供的数据文件夹最大的时刻,比如endTime=9s
,boundaryData
提供数据到2s
,计算到2s
后就只会按照提供最后2s
时刻的数据一直算下去。boundaryField { inlet { type timeVaryingMappedFixedValue; offset (0 0 0); setAverage off; mapMethod nearest; //planarInterpolation, nearest }
-
@coolhhh 您好,关于不同时刻 inlet 的结果,使用 timeVaryingMappedFixedValue 时不同时刻数据没有差异,这显然不太正常。而用 uniformFixedValue 时则有差异。但二者都没能改变 inlet 上的 U 值计算结果(该边界模型,物理量的边界条件和物理量的值分开存放)。同样的设置我在 pimpleFoam 算例中是能实现的,因此大概率还是求解器导致的问题。我现在在尝试读 dsmcFoamPlus 中边界条件的源代码,看看能否找到原因。dsmcFreeStreamInflowFieldPatch.C dsmcFreeStreamInflowFieldPatch.H
另外我将 endTime 与数据文件夹最大时刻相等,问题仍然存在,我想可以排除这个因素。 -
@做在江湖 保存
dsmcFoam
不同时刻结果,比如0.5s
的结果,此时0.5s
结果的U
文件中,inlet
面的边界条件是否还是timeVaryingMappedFixedValue
类型,还是更改了其他的?我曾经
0
文件设置了timeVaryingMappedFixedValue
,pisoFoam
求解器中想通过一些操作改变入口加载的速度,但似乎没有成功,都依然最后按照timeVaryingMappedFixedValue
加载的风速进行计算。也可能是我当时哪里没写对现在你的问题确实像是
dsmcFoam
改变了timeVaryingMappedFixedValue
-
@做在江湖 我测试了of2206一个自带算例
freeSpaceStream
,测试boundaryU
设置timeVaryingMappedFixedValue
,dsmcFoam
计算结果确实只加载了第0
时间步的结果,但不同时刻保存的结果都是value nonuniform List<vector>
inlet { type timeVaryingMappedFixedValue; fieldTable boundaryU; mapMethod nearest; offset constant (0 0 0); value nonuniform List<vector> 256 ( (299.1814153 29.37670706 68.29947456) (299.4299067 29.62701704 68.44470993) (299.6766025 29.87764649 68.59053715)
pisoFoam
的pEqn.H
有U.correctBoundaryConditions()
更新边界值。简单看了dsmcFoam
求解器代码,没有correctBoundaryConditions
,不太清楚是否跟这个有关