请问有人用过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中有该计算