请问有人用过sprayFoam中的下面coneNozzleInjection吗?
-
@upc_ngh 是的
of4.1 injectionmodel.C 489-518// Number of particles per parcel pPtr->nParticle() = setNumberOfParticles ( newParcels, newVolumeFraction, pPtr->d(), pPtr->rho() ); if (pPtr->nParticle() >= 1.0) { parcelsAdded++; massAdded += pPtr->nParticle()*pPtr->mass(); if (pPtr->move(td, dt)) { td.cloud().addParticle(pPtr); } else { delete pPtr; } } else { delayedVolume += pPtr->nParticle()*pPtr->volume(); delete pPtr; }
-
@星星星星晴 非常感谢您的回答,搞清楚这个又有新的问题了,麻烦您再看一眼。
我现在想要在Kinematic这个模板类下想要调用ManualInjection这个模板类的函数,应该怎么去操作,我看网上的回答尝试了友元还有其他方法,还是不行,您有什么好的方法吗?template<class CloudType> void Foam::KinematicCloud<CloudType>::updateCellOccupancy() { // Only build the cellOccupancy if the pointer is set, i.e. it has // been requested before. if (cellOccupancyPtr_.valid()) { buildCellOccupancy(); } }
template<class CloudType> Foam::scalar Foam::ManualInjection<CloudType>::volumeToInject ( const scalar time0, const scalar time1 ) { // All parcels introduced at SOI if ((0.0 >= time0) && (0.0 < time1)) { return this->volumeTotal_; } else { return 0.0; } }
-
@星星星星晴 就是假如我想在kinematic就是第一段代码里面调用ManuaInjection就是第二段代码里面的函数,什么方法比较简单。
template<class CloudType> void Foam::KinematicCloud<CloudType>::updateCellOccupancy() { // Only build the cellOccupancy if the pointer is set, i.e. it has // been requested before. if (cellOccupancyPtr_.valid()) { //buildCellOccupancy();//假如不要这个函数了,想要使用下面这个 return this->volumeTotal_;//这个是Man类下的函数,该怎么去调用 } }
-
@upc_ngh 额,这个我也不太了解,我也是半路出家,你这种修改属于涉及到底层了。。
不过我个人建议,如果能暂时不触及底层就暂时先不触及,因为如果你修改底层的东西了,也需要修改其他模型,否则就报错。无法编译。updateCellOccupancy()这个方程是在哪调用的呢?调用了以后有什么作用,影响到了什么?如果你随便修改这种东西,就算编译通过了,最后计算的东西也不好说。。我一个朋友说过,编程其实不难,难的是你最后选择什么途径去解决问题。如果已经很熟悉在openfoam的框架,然后再去修改底层。。。
如果你确定你需要修改这个地方,看看下面的流程介绍,希望能有帮助
https://openfoamwiki.net/index.php/OpenFOAM_guide/UML/lagrangian其实最重要的问题是,你需要通过manualinjection实现什么效果,你为什么要修改updatecellOccupancy,是想计算theta()?在kinematicparcel中有该计算
-
@dzw05 您好,我也在使用coneNozzleInjection模型进行燃烧室喷雾燃烧模拟,燃烧室进出口的速度边界条件分别为turbulentInlet和pressureInletOutletVelocity,压力边界条件分别为zeroGradient和totalPressure。在进行燃烧室内当量比分析的时候有些疑惑,向您请教下。(1)如果燃油流量是0.1kg/s的话,按照您的解释应该massTotal=0.1,duration=1。在time step size为1e-6s的情况下,也就是每个时间步喷入燃油燃油流量0.1/1*0.000001=1e-7kg,这样只有在喷射时间持续了1s的时候燃油在燃烧室内的质量才能达到0.1kg。本节的这段理解正确么?(2)在计算中一个通流时间为0.02s,受限于计算资源,实际计算过程达不到1s。如果我想在1s之前分析燃烧室内的当量比的话,是不是必须燃油喷射时间超过一个通流时间后才能进行分析呢?在一个通流时间后,喷入燃烧室的燃油流量和流出燃烧室的燃油流量之间的差值可以达到平衡么?(3)关于parcelsPerSecond数目的问题,您说的粒子体积是根据下图中的d进行计算的么?
麻烦您了!谢谢! -
@李东岳 李老师,我想设置喷雾不随时间变化,
flowRateProfile constant 1e-4;
我试着用这个设置命令,算例也能运行。
如果这个命令没有意义不能用那该怎样设置?必须用下面的命令?把时间设得很长?flowRateProfile table ( (0 1e-4) (100000 1e-4) );*/
另外,请教关于文件‘sprayCloudProperties’,有些参数没找到资料,比如
solution { active true; coupled true; transient yes; cellValueSourceCorrection on; maxCo 0.3; sourceTerms { schemes { rho explicit 1; } } interpolationSchemes { rho cell; U cellPoint; } integrationSchemes { U Euler; T analytical; } }
以及
constantProperties { T0 320; // 这个有意义么?只是初始化用么? // place holders for rho0 and Cp0 // - reset from liquid properties using T0 rho0 1000; Cp0 4187; constantVolume false; //这个是干啥用的呢? }
最后,我想用paraview看看输出结果的水滴分布情况,这个怎么查看呢?还有水的质量在空间上的分布?
麻烦李老师了,谢谢。
-
@chengan-wang 请善用谷歌,这些东西在网上都有,只是零碎的,等我忙完这段时间或许会写个关于喷雾模拟的东西,但是现在请善用搜索引擎。而且你需要多读code才明白为什么这个东西是这么设置的
请见谅说的有些直,但是事实如此。