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,不太清楚是否跟这个有关
 
			