reactingParcelFoam中颗粒间碰撞参数
-
开门见山,问3个问题:
第一个问题1、在reactingParcelFoam或coalChemistryFoam中颗粒间的碰撞参数在哪修改?计算过程颗粒间碰撞回弹的感觉不大对。
第二个问题2、能否在coalCloud.H中修改为这样,添加CollidingCloud,同样在coalParcel.H中添加CollidingParcel?尝试后编译库文件通过,但是编译coalChemistryFoam失败。#ifndef coalCloud_H #define coalCloud_H #include "Cloud.H" #include "KinematicCloud.H" #include "CollidingCloud.H" #include "ThermoCloud.H" #include "ReactingCloud.H" #include "ReactingMultiphaseCloud.H" #include "coalParcel.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { typedef ReactingMultiphaseCloud < ReactingCloud < ThermoCloud < CollidingCloud < KinematicCloud < Cloud < coalParcel > > > > > > coalCloud; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #endif
第三个问题3、patchInteractionModel和collisionModel中的wallModel(如模型wallSpringSliderDashpot)有什么区别?
OpenFOAM用的还不熟,目前想在reactingParcelFoam中加入表面反应模型,模拟沉积CVD过程。计算的喷动床,感觉颗粒间的碰撞过程不大对,请高手指点!!!非常感谢,感谢!!!!!!
-
错误信息:
sigma@ma:lib$ ld libcoalDepositionDemo.so ld: warning: cannot find entry symbol _start; not setting start address ld: libcoalDepositionDemo.so: undefined reference to `Foam::Cloud<Foam::ReactingMultiphaseParcel<Foam::ReactingParcel<Foam::ThermoParcel<Foam::CollidingParcel<Foam::KinematicParcel<Foam::particle> > > > > >::typeName' ld: libcoalDepositionDemo.so: undefined reference to `Foam::ParticleForce<Foam::KinematicCloud<Foam::Cloud<Foam::ReactingMultiphaseParcel<Foam::ReactingParcel<Foam::ThermoParcel<Foam::CollidingParcel<Foam::KinematicParcel<Foam::particle> > > > > > > >::dictionaryConstructorTablePtr_' ld: libcoalDepositionDemo.so: undefined reference to `Foam::Cloud<Foam::ReactingMultiphaseParcel<Foam::ReactingParcel<Foam::ThermoParcel<Foam::CollidingParcel<Foam::KinematicParcel<Foam::particle> > > > > >::debug' ld: libcoalDepositionDemo.so: undefined reference to `Foam::ReactingMultiphaseParcel<Foam::ReactingParcel<Foam::ThermoParcel<Foam::CollidingParcel<Foam::KinematicParcel<Foam::particle> > > > >::typeName' ld: libcoalDepositionDemo.so: undefined reference to `Foam::SurfaceReactionModel<Foam::ReactingMultiphaseCloud<Foam::ReactingCloud<Foam::ThermoCloud<Foam::CollidingCloud<Foam::KinematicCloud<Foam::Cloud<Foam::ReactingMultiphaseParcel<Foam::ReactingParcel<Foam::ThermoParcel<Foam::CollidingParcel<Foam::KinematicParcel<Foam::particle> > > > > > > > > > > >::dictionaryConstructorTablePtr_' ld: libcoalDepositionDemo.so: undefined reference to `Foam::PhaseChangeModel<Foam::ReactingCloud<Foam::ThermoCloud<Foam::CollidingCloud<Foam::KinematicCloud<Foam::Cloud<Foam::ReactingMultiphaseParcel<Foam::ReactingParcel<Foam::ThermoParcel<Foam::CollidingParcel<Foam::KinematicParcel<Foam::particle> > > > > > > > > > >::dictionaryConstructorTablePtr_' ld: libcoalDepositionDemo.so: undefined reference to `Foam::ThermoParcel<Foam::CollidingParcel<Foam::KinematicParcel<Foam::particle> > >::typeName' ld: libcoalDepositionDemo.so: undefined reference to `Foam::ThermoParcel<Foam::CollidingParcel<Foam::KinematicParcel<Foam::particle> > >::debug' ld: libcoalDepositionDemo.so: undefined reference to `Foam::DispersionModel<Foam::KinematicCloud<Foam::Cloud<Foam::ReactingMultiphaseParcel<Foam::ReactingParcel<Foam::ThermoParcel<Foam::CollidingParcel<Foam::KinematicParcel<Foam::particle> > > > > > > >::dictionaryConstructorTablePtr_' ld: libcoalDepositionDemo.so: undefined reference to `Foam::ReactingParcel<Foam::ThermoParcel<Foam::CollidingParcel<Foam::KinematicParcel<Foam::particle> > > >::debug' ld: libcoalDepositionDemo.so: undefined reference to `Foam::StochasticCollisionModel<Foam::KinematicCloud<Foam::Cloud<Foam::ReactingMultiphaseParcel<Foam::ReactingParcel<Foam::ThermoParcel<Foam::CollidingParcel<Foam::KinematicParcel<Foam::particle> > > > > > > >::dictionaryConstructorTablePtr_' ld: libcoalDepositionDemo.so: undefined reference to `Foam::SurfaceReactionModel<Foam::ReactingMultiphaseCloud<Foam::ReactingCloud<Foam::ThermoCloud<Foam::CollidingCloud<Foam::KinematicCloud<Foam::Cloud<Foam::ReactingMultiphaseParcel<Foam::ReactingParcel<Foam::ThermoParcel<Foam::CollidingParcel<Foam::KinematicParcel<Foam::particle> > > > > > > > > > > >::typeName' ld: libcoalDepositionDemo.so: undefined reference to `Foam::InjectionModel<Foam::KinematicCloud<Foam::Cloud<Foam::ReactingMultiphaseParcel<Foam::ReactingParcel<Foam::ThermoParcel<Foam::CollidingParcel<Foam::KinematicParcel<Foam::particle> > > > > > > >::dictionaryConstructorTablePtr_' ld: libcoalDepositionDemo.so: undefined reference to `Foam::CloudFunctionObject<Foam::KinematicCloud<Foam::Cloud<Foam::ReactingMultiphaseParcel<Foam::ReactingParcel<Foam::ThermoParcel<Foam::CollidingParcel<Foam::KinematicParcel<Foam::particle> > > > > > > >::typeName' ld: libcoalDepositionDemo.so: undefined reference to `Foam::CompositionModel<Foam::ReactingCloud<Foam::ThermoCloud<Foam::CollidingCloud<Foam::KinematicCloud<Foam::Cloud<Foam::ReactingMultiphaseParcel<Foam::ReactingParcel<Foam::ThermoParcel<Foam::CollidingParcel<Foam::KinematicParcel<Foam::particle> > > > > > > > > > >::dictionaryConstructorTablePtr_' ld: libcoalDepositionDemo.so: undefined reference to `Foam::SurfaceReactionModel<Foam::ReactingMultiphaseCloud<Foam::ReactingCloud<Foam::ThermoCloud<Foam::CollidingCloud<Foam::KinematicCloud<Foam::Cloud<Foam::ReactingMultiphaseParcel<Foam::ReactingParcel<Foam::ThermoParcel<Foam::CollidingParcel<Foam::KinematicParcel<Foam::particle> > > > > > > > > > > >::constructdictionaryConstructorTables()' ld: libcoalDepositionDemo.so: undefined reference to `Foam::SurfaceFilmModel<Foam::KinematicCloud<Foam::Cloud<Foam::ReactingMultiphaseParcel<Foam::ReactingParcel<Foam::ThermoParcel<Foam::CollidingParcel<Foam::KinematicParcel<Foam::particle> > > > > > > >::dictionaryConstructorTablePtr_' ld: libcoalDepositionDemo.so: undefined reference to `Foam::CloudFunctionObject<Foam::KinematicCloud<Foam::Cloud<Foam::ReactingMultiphaseParcel<Foam::ReactingParcel<Foam::ThermoParcel<Foam::CollidingParcel<Foam::KinematicParcel<Foam::particle> > > > > > > >::dictionaryConstructorTablePtr_' ld: libcoalDepositionDemo.so: undefined reference to `Foam::ParticleForce<Foam::KinematicCloud<Foam::Cloud<Foam::ReactingMultiphaseParcel<Foam::ReactingParcel<Foam::ThermoParcel<Foam::CollidingParcel<Foam::KinematicParcel<Foam::particle> > > > > > > >::typeName' ld: libcoalDepositionDemo.so: undefined reference to `Foam::SurfaceReactionModel<Foam::ReactingMultiphaseCloud<Foam::ReactingCloud<Foam::ThermoCloud<Foam::CollidingCloud<Foam::KinematicCloud<Foam::Cloud<Foam::ReactingMultiphaseParcel<Foam::ReactingParcel<Foam::ThermoParcel<Foam::CollidingParcel<Foam::KinematicParcel<Foam::particle> > > > > > > > > > > >::destroydictionaryConstructorTables()' ld: libcoalDepositionDemo.so: undefined reference to `Foam::PatchInteractionModel<Foam::KinematicCloud<Foam::Cloud<Foam::ReactingMultiphaseParcel<Foam::ReactingParcel<Foam::ThermoParcel<Foam::CollidingParcel<Foam::KinematicParcel<Foam::particle> > > > > > > >::dictionaryConstructorTablePtr_' ld: libcoalDepositionDemo.so: undefined reference to `Foam::DevolatilisationModel<Foam::ReactingMultiphaseCloud<Foam::ReactingCloud<Foam::ThermoCloud<Foam::CollidingCloud<Foam::KinematicCloud<Foam::Cloud<Foam::ReactingMultiphaseParcel<Foam::ReactingParcel<Foam::ThermoParcel<Foam::CollidingParcel<Foam::KinematicParcel<Foam::particle> > > > > > > > > > > >::dictionaryConstructorTablePtr_' ld: libcoalDepositionDemo.so: undefined reference to `Foam::HeatTransferModel<Foam::ThermoCloud<Foam::CollidingCloud<Foam::KinematicCloud<Foam::Cloud<Foam::ReactingMultiphaseParcel<Foam::ReactingParcel<Foam::ThermoParcel<Foam::CollidingParcel<Foam::KinematicParcel<Foam::particle> > > > > > > > > >::dictionaryConstructorTablePtr_' ld: libcoalDepositionDemo.so: undefined reference to `Foam::ReactingParcel<Foam::ThermoParcel<Foam::CollidingParcel<Foam::KinematicParcel<Foam::particle> > > >::typeName' ld: libcoalDepositionDemo.so: undefined reference to `Foam::CollisionModel<Foam::CollidingCloud<Foam::KinematicCloud<Foam::Cloud<Foam::ReactingMultiphaseParcel<Foam::ReactingParcel<Foam::ThermoParcel<Foam::CollidingParcel<Foam::KinematicParcel<Foam::particle> > > > > > > > >::dictionaryConstructorTablePtr_'
-
此帖终结!!!此帖终结!!!此帖终结!!!
想得有点简单了,coalChemistryFoam和DPMFoam求解的方程有差别,coalChemistryFoam是two-way coupling,DPMFoam是four-way coupling,cfd-online论坛上有人讲了这个问题,简单的添加CollidingCloud是行不通的。
感谢!!!粘帖原文
“Dear cmigueis,
Thank you for your quick reply.
First of all, I mean that your work can model reacting dilute two-phase flow, but not reacting dense two-phase flow. We can see in DPMFoam solver, there is an “alphac” in the mass and momentum equations of Ueqn.H, which mean the void fraction (voidage). However, in coalChemistryFoam, there isn’t a void fraction. That is, even though you implement coal cloud collisions into coalChemitryFoam, it look like DPM model in ANSYS Fluent, but not a CFD-DEM model with reaction, you should also implement “alphac”(voidage) into mass, momentum and energy equations.
For more details, you can have a look at article “Ku X, Li T, Løvås T. CFD–DEM simulation of biomass gasification with steam in a fluidized bed reactor [J]. Chemical Engineering Science, 2015, 122: 270-283.” or “Zhou H, Flamant G, Gauthier D. DEM-LES simulation of coal combustion in a bubbling fluidized bed Part II: coal combustion at the particle level [J]. Chemical Engineering Science, 2004, 59(20): 4205-4215.”, in these work, four-way coupling CFD-DEM with reaction were adopted to simulate a fluidized bed. The former is accomplished on OpenFOAM framework.
In my opinion, if you want to model dense phase reacting flow like above literature, I think DPMFoam combined with coalChemistryFoam can achieve it, which is the work I want to do and I am doing. Generally speaking, DPMFoam has already had parcels collisions and it is CFD-DEM method which can be used in cold fluidized bed modeling. If you only model pulverized coal combustion (that is, reacting dilute two-phase flow), four-way coupling is not necessary.
Best regards! ” -
@来瓶热阔落
有区别的,一个修正系数的差别。在heatTransferModel.C文件(~src/lagrangian/intermediate/submodels/Thermodynamic/HeatTransferModel/HeatTransferModel/)中,第47行先查询BirdCorrection是True或False,然后注意第92行判断BirdCorrection是否为真。如果为真,换热系数htc就乘以一个修正系数;如果为假,跳过if语句,也就是直接用这个公式:
$ h=Nu*k/d $38 template<class CloudType> 39 Foam::HeatTransferModel<CloudType>::HeatTransferModel 40 ( 41 const dictionary& dict, 42 CloudType& owner, 43 const word& type 44 ) 45 : 46 CloudSubModelBase<CloudType>(owner, dict, typeName, type), 47 BirdCorrection_(this->coeffDict().lookup("BirdCorrection")) 48 {} 78 template<class CloudType> 79 Foam::scalar Foam::HeatTransferModel<CloudType>::htc 80 ( 81 const scalar dp, 82 const scalar Re, 83 const scalar Pr, 84 const scalar kappa, 85 const scalar NCpW 86 ) const 87 { 88 const scalar Nu = this->Nu(Re, Pr); 89 90 scalar htc = Nu*kappa/dp; 91 92 if (BirdCorrection_ && (mag(htc) > rootVSmall) && (mag(NCpW) > rootVSmall)) 93 { 94 const scalar phit = min(NCpW/htc, 50); 95 if (phit > 0.001) 96 { 97 htc *= phit/(exp(phit) - 1.0); 98 } 99 } 100 101 return htc; 102 }
-
@wangfei9088 非常感谢