求推荐OpenFOAM编程方面的资料或课程。
最好是整个流程讲解得比较全面的。
目前想实现自定义格式的流场数据输出。后续打算开发自定义dsmcFoam求解器。
求推荐OpenFOAM编程方面的资料或课程。
最好是整个流程讲解得比较全面的。
目前想实现自定义格式的流场数据输出。后续打算开发自定义dsmcFoam求解器。
@tens 感谢您的提醒,我再去看看
@tens 感谢您的回复!
您的这段代码是createFields.H中的吧。但是dsmcFoam这个求解器的createFields.H只有两行代码
Info<< nl << "Constructing dsmcCloud " << endl;
dsmcCloud dsmc("dsmc", mesh);
实际上,我后来发现dsmcFoam求解器的流场信息在DSMCCloud.C中定义和计算。但是按理说相同求解器输出的流场参数应该是相同的,但实际上求解器提供的几个案例输出的流场参数是不一样的。比如有的案例中输出了separationOfFreePaths_Ar这个参数,而有的案例就没有。
求问各路大佬,dsmcFoam输出哪些流场文件是由什么控制的。注意到像icoFoam这种求解器是通过fvSolution来设置的,但是dsmcFoam好像并不是。
而且我在使用dsmcFoamPlus时发现,提供的几个案例输出的流场参数也是不一样的。按理说相同求解器输出的哪些流场文件应该是相同的,除非设置了字典文件,然而我在字典文件中并未发现这种设置。
@vien锁 您好,dsmcFoam输出哪些流场文件是由什么控制的。注意到像icoFoam这种求解器是通过fvSolution来设置的,但是dsmcFoam好像并不是。
而且我在使用dsmcFoamPlus时发现,提供的几个案例输出的流场参数也是不一样的。按理说相同求解器输出的哪些流场文件应该是相同的,除非设置了字典文件,然而我在字典文件中并未发现这种设置。
求解器:dsmcFoam
对dsmcRhoN(dsmc粒子数)这个量,给它做时间平均。第2个时间步的dsmcRhoNMean应该是第1个时间步t1和第2两个时间步t2的两个dsmcRhoN的平均值吧?但是输出的结果不是这样的。
比如wedge15Ma5这个算例,t1时刻dsmcRhoN=12,t2时刻dsmcRhoN=10,但t2时刻dsmcRhoNMean却是11.28
文件输出间隔和时间步大小相同。
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: 9
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
format ascii;
class dictionary;
location "system";
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application dsmcFoam;
startFrom startTime;
startTime 0;
stopAt endTime;
endTime 1e-5;
deltaT 1e-6;
writeControl runTime;
writeInterval 1e-6;
purgeWrite 0;
writeFormat ascii;
writePrecision 10;
writeCompression off;
timeFormat general;
timePrecision 6;
runTimeModifiable true;
adjustTimeStep no;
functions
{
fieldAverage1
{
#includeEtc "caseDicts/postProcessing/fields/fieldAverage.cfg"
fields
(
rhoN
rhoM
dsmcRhoN
momentum
linearKE
internalE
iDof
q
fD
);
}
dsmcFields1
{
type dsmcFields;
libs ("liblagrangianFunctionObjects.so");
writeControl writeTime;
}
}
// ************************************************************************* //
问题解决了。使用Ubuntu16.04就行。18.04和20.04都不行。
@bestucan 感谢老师回复!我这就去试试
@李东岳 是的,是一篇SCI文章里的
最近刚开始学习OpenFOAM2.4.0中的dsmcFoamPlus求解器,在运行算例的时候遇到一些报错。有什么比较有效的解决办法吗?
我一共执行了5条命令,在执行以下命令时均没有报错——
blockMesh
dsmcInitialise
decomposePar
mpirun -np 4 dsmcFoamPlus -parallel
在并行计算完成后,需要进行网格重组,执行下面这条命令——
reconstructPar
这时候报错了。该怎么解决呢?