|
[Sponsors] |
error adding void fraction into the solver & Error when chemistry is on |
|
LinkBack | Thread Tools | Search this Thread | Display Modes |
November 25, 2015, 09:47 |
error adding void fraction into the solver & Error when chemistry is on
|
#1 |
New Member
César Augusto Corrêa Miguéis
Join Date: Nov 2013
Location: Rio de Janeiro, Brasil
Posts: 26
Rep Power: 12 |
Hi Shuai! Did you have any progress?
I started to modify the coalChemistryFoam code to include the void fraction into the transport equations. In the coalChemistryFoam.c file I included the following code: Code:
// Update continuous phase volume fraction field alpha = max(1.0 - coalCloud.theta() - limestoneCloud.theta(), 0.01); alpha.correctBoundaryConditions(); alphaf = fvc::interpolate(alpha); alphaPhi = alphaf*phi; So, I modified the UEqn.h file into this (I'm gonna show only the modified part): Code:
fvVectorMatrix UEqn ( fvm::ddt(rho*alpha, U) + fvm::div(alphaPhi, U) + alpha*fvc::grad(p) + alpha*turbulence->divDevRhoReff(U) + alpha*rho.dimensionedInternalField()*g == coalParcels.SU(U) + limestoneParcels.SU(U) + fvOptions(rho, U) ); Code:
{ fvScalarMatrix rhoEqn ( fvm::ddt(alpha,rho) + fvc::div(alpha,phi) == coalParcels.Srho(rho) limestoneParcels.Srho(rho) + fvOptions(rho) ); fvOptions.constrain(rhoEqn); rhoEqn.solve(); fvOptions.correct(rho); } ); Code:
{ volScalarField& he = thermo.he(); fvScalarMatrix EEqn ( fvm::ddt(alpha*rho, he) + mvConvection->fvmDiv(alphaPhi, he) + fvc::ddt(alpha*rho, K) + fvc::div(alphaPhi, K) + ( he.name() == "e" ? fvc::div ( fvc::absolute(phi/fvc::interpolate(rho), U), p, "div(phiv,p)" ) : -dpdt ) - fvm::laplacian(turbulence->alphaEff(), he) == combustion->Sh() + coalParcels.Sh(he) + limestoneParcels.Sh(he) + radiation->Sh(thermo) + fvOptions(rho, he) ); I'm stucked in this part: Code:
+ ( he.name() == "e" ? fvc::div ( fvc::absolute(phi/fvc::interpolate(rho), U), p, "div(phiv,p)" ) : -dpdt ) Thanks in advance to everybody and regards from Brazil! [ Moderator note: Moved from this thread: http://www.cfd-online.com/Forums/ope...ification.html - Reason: consolidation of the ongoing development ]
__________________
César Miguéis Mechanical Engineer MSc. Student at COPPE/UFRJ Last edited by wyldckat; December 19, 2015 at 14:37. Reason: see "Moderator note:" |
|
December 7, 2015, 09:46 |
|
#2 |
New Member
César Augusto Corrêa Miguéis
Join Date: Nov 2013
Location: Rio de Janeiro, Brasil
Posts: 26
Rep Power: 12 |
Hi everybody! I understood that part of the code in the EEqn file. It works like an if statement, depending if you are using the internal energy or the enthalpy form of the equation.
But I decided to give a few steps back and changed back the transport equations files and the coalCollidingChemistryFoam.c file to its original forms (without the void fraction term). Than, using the DDPMFoam createFields.H file, I added the following code to my createFields.H file (in my coalCollidingChemistryFoam solver): Code:
volScalarField alphac ( IOobject ( "alpha", runTime.timeName(), mesh, IOobject::READ_IF_PRESENT, IOobject::AUTO_WRITE ), mesh, dimensionedScalar("0", dimless, 0) ); // Update alphac from the particle locations alphac = max(1.0 - coalCloud.theta() - limestoneCloud.theta(), 0.01); alphac.correctBoundaryConditions(); surfaceScalarField alphaf("alphaf", fvc::interpolate(alphac)); surfaceScalarField alphaPhi("alphaPhi", alphacf*phi); Code:
template<class CloudType> inline const Foam::tmp<Foam::volScalarField> Foam::KinematicCloud<CloudType>::theta() const { tmp<volScalarField> ttheta ( new volScalarField ( IOobject ( this->name() + ":theta", this->db().time().timeName(), this->db(), IOobject::NO_READ, IOobject::NO_WRITE, false ), mesh_, dimensionedScalar("zero", dimless, 0.0), zeroGradientFvPatchScalarField::typeName ) ); volScalarField& theta = ttheta(); forAllConstIter(typename KinematicCloud<CloudType>, *this, iter) { const parcelType& p = iter(); const label cellI = p.cell(); theta[cellI] += p.nParticle()*p.volume(); } theta.internalField() /= mesh_.V(); theta.correctBoundaryConditions(); return ttheta; } Code:
In file included from coalCollidingChemistryFoam.C:60:0: createFields.H: In function ‘int main(int, char**)’: createFields.H:158:33: error: expected primary-expression before ‘.’ token alphac = max(1.0 - coalCloud.theta() - limestoneCloud.theta(), 0.01); ^ createFields.H:158:58: error: expected primary-expression before ‘.’ token alphac = max(1.0 - coalCloud.theta() - limestoneCloud.theta(), 0.01);
__________________
César Miguéis Mechanical Engineer MSc. Student at COPPE/UFRJ |
|
December 10, 2015, 11:06 |
Error when chemistry is on
|
#3 |
New Member
César Augusto Corrêa Miguéis
Join Date: Nov 2013
Location: Rio de Janeiro, Brasil
Posts: 26
Rep Power: 12 |
Hi everybody! I'm facing some problems trying to use a modified version of the coalChemistryFoam. Actually, the only modification is that I added de coliidingcloud functionalty to the existing clouds in the solver. When I try to run a test case with the chemistry off (in the chemistryProperties dictionary) the simulation seems to run fine, but I got this awkward segmentation fault message at the end of the simulation (I'm running with the debug mode on, I don't know if this is normal in this case):
Code:
Courant Number mean: 0.0005176025851 max: 0.0009561949486 Time = 0.51 Solving 2-D cloud coalCloud1 Cloud: coalCloud1 Current number of parcels = 0 Current mass in system = 0 Linear momentum = (0 0 0) |Linear momentum| = 0 Linear kinetic energy = 0 model1: number of parcels added = 0 mass introduced = 0 Parcels absorbed into film = 0 New film detached parcels = 0 Rotational kinetic energy = 0 Temperature min/max = 0, 0 Mass transfer phase change = 0 Mass transfer devolatilisation = 0 Mass transfer surface reaction = 0 Solving 2-D cloud limestoneCloud1 Cloud: limestoneCloud1 Current number of parcels = 3999 Current mass in system = 0.02544053877 Linear momentum = (-1.662093206e-10 1.717083916e-06 -3.123240113e-23) |Linear momentum| = 1.717083924e-06 Linear kinetic energy = 1.912975865e-10 model1: number of parcels added = 3999 mass introduced = 0.02544053877 Parcels absorbed into film = 0 New film detached parcels = 0 Rotational kinetic energy = 1.338558325e-11 Temperature min/max = 1050, 1050 Mass transfer phase change = 0 Mass transfer devolatilisation = 0 Mass transfer surface reaction = 0 diagonal: Solving for rho, Initial residual = 0, Final residual = 0, No Iterations 0 PIMPLE: iteration 1 smoothSolver: Solving for Ux, Initial residual = 3.761590054e-05, Final residual = 1.759845486e-11, No Iterations 1 smoothSolver: Solving for Uy, Initial residual = 0.0005122043079, Final residual = 6.075660447e-10, No Iterations 1 smoothSolver: Solving for O2, Initial residual = 0.000142167633, Final residual = 1.842070411e-11, No Iterations 1 smoothSolver: Solving for CH4, Initial residual = 0, Final residual = 0, No Iterations 0 smoothSolver: Solving for H2, Initial residual = 0, Final residual = 0, No Iterations 0 smoothSolver: Solving for CO2, Initial residual = 0, Final residual = 0, No Iterations 0 smoothSolver: Solving for H2O, Initial residual = 1.440929044e-05, Final residual = 6.77561168e-12, No Iterations 1 smoothSolver: Solving for CO, Initial residual = 0, Final residual = 0, No Iterations 0 smoothSolver: Solving for h, Initial residual = 1.641411891e-05, Final residual = 6.341277215e-12, No Iterations 1 DICPCG: Solving for G, Initial residual = 1.051953276e-05, Final residual = 9.68720358e-06, No Iterations 1 T gas min/max = 423, 670 GAMG: Solving for p, Initial residual = 0.0007027171936, Final residual = 4.680406051e-08, No Iterations 1 diagonal: Solving for rho, Initial residual = 0, Final residual = 0, No Iterations 0 time step continuity errors : sum local = 2.667785662e-12, global = -1.082159283e-12, cumulative = 6.086472557e-10 GAMG: Solving for p, Initial residual = 4.64293344e-08, Final residual = 4.64293344e-08, No Iterations 0 diagonal: Solving for rho, Initial residual = 0, Final residual = 0, No Iterations 0 time step continuity errors : sum local = 2.645289414e-12, global = -1.06343173e-12, cumulative = 6.07583824e-10 GAMG: Solving for p, Initial residual = 4.642803206e-08, Final residual = 4.642803206e-08, No Iterations 0 diagonal: Solving for rho, Initial residual = 0, Final residual = 0, No Iterations 0 time step continuity errors : sum local = 2.645217289e-12, global = -1.063380117e-12, cumulative = 6.065204439e-10 smoothSolver: Solving for epsilon, Initial residual = 0.0001250561599, Final residual = 1.1478023e-10, No Iterations 1 smoothSolver: Solving for k, Initial residual = 9.382222441e-05, Final residual = 1.34367301e-10, No Iterations 1 ExecutionTime = 918.53 s ClockTime = 919 s End Segmentation fault (core dumped) Code:
diagonal: Solving for rho, Initial residual = 0, Final residual = 0, No Iterations 0 PIMPLE: iteration 1 smoothSolver: Solving for Ux, Initial residual = 3.782030516e-05, Final residual = 1.763957979e-11, No Iterations 1 smoothSolver: Solving for Uy, Initial residual = 0.0005098285544, Final residual = 6.043577897e-10, No Iterations 1 --> FOAM FATAL ERROR: attempt to access element from zero sized list From function UList<T>::checkIndex(const label) in file /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/OpenFOAM/lnInclude/UListI.H at line 103. FOAM aborting #0 Foam::error::printStack(Foam::Ostream&) at ~/OpenFOAM/OpenFOAM-2.3.x/src/OSspecific/POSIX/printStack.C:219 #1 Foam::error::abort() at ~/OpenFOAM/OpenFOAM-2.3.x/src/OpenFOAM/lnInclude/error.C:249 #2 Foam::Ostream& Foam::operator<< <Foam::error>(Foam::Ostream&, Foam::errorManip<Foam::error>) at ~/OpenFOAM/OpenFOAM-2.3.x/src/OpenFOAM/lnInclude/errorManip.H:85 (discriminator 3) #3 Foam::UList<Foam::Reaction<Foam::sutherlandTransport<Foam::species::thermo<Foam::janafThermo<Foam::perfectGas<Foam::specie> >, Foam::sensibleEnthalpy> > >::specieCoeffs>::checkIndex(int) const at ~/OpenFOAM/OpenFOAM-2.3.x/src/OpenFOAM/lnInclude/UListI.H:103 #4 Foam::UList<Foam::Reaction<Foam::sutherlandTransport<Foam::species::thermo<Foam::janafThermo<Foam::perfectGas<Foam::specie> >, Foam::sensibleEnthalpy> > >::specieCoeffs>::operator[](int) const at ~/OpenFOAM/OpenFOAM-2.3.x/src/OpenFOAM/lnInclude/UListI.H:200 #5 Foam::chemistryModel<Foam::psiChemistryModel, Foam::sutherlandTransport<Foam::species::thermo<Foam::janafThermo<Foam::perfectGas<Foam::specie> >, Foam::sensibleEnthalpy> > >::omega(Foam::Reaction<Foam::sutherlandTransport<Foam::species::thermo<Foam::janafThermo<Foam::perfectGas<Foam::specie> >, Foam::sensibleEnthalpy> > > const&, Foam::Field<double> const&, double, double, double&, double&, int&, double&, double&, int&) const at ~/OpenFOAM/OpenFOAM-2.3.x/src/thermophysicalModels/chemistryModel/lnInclude/chemistryModel.C:230 (discriminator 1) #6 Foam::chemistryModel<Foam::psiChemistryModel, Foam::sutherlandTransport<Foam::species::thermo<Foam::janafThermo<Foam::perfectGas<Foam::specie> >, Foam::sensibleEnthalpy> > >::omega(Foam::Field<double> const&, double, double) const at ~/OpenFOAM/OpenFOAM-2.3.x/src/thermophysicalModels/chemistryModel/lnInclude/chemistryModel.C:114 (discriminator 1) #7 Foam::chemistryModel<Foam::psiChemistryModel, Foam::sutherlandTransport<Foam::species::thermo<Foam::janafThermo<Foam::perfectGas<Foam::specie> >, Foam::sensibleEnthalpy> > >::jacobian(double, Foam::Field<double> const&, Foam::Field<double>&, Foam::SquareMatrix<double>&) const at ~/OpenFOAM/OpenFOAM-2.3.x/src/thermophysicalModels/chemistryModel/lnInclude/chemistryModel.C:347 (discriminator 1) #8 Foam::seulex::solve(double&, Foam::Field<double>&, Foam::ODESolver::stepState&) const at ~/OpenFOAM/OpenFOAM-2.3.x/src/ODE/ODESolvers/seulex/seulex.C:240 #9 Foam::ODESolver::solve(double, double, Foam::Field<double>&, double&) const at ~/OpenFOAM/OpenFOAM-2.3.x/src/ODE/ODESolvers/ODESolver/ODESolver.C:125 #10 Foam::ode<Foam::chemistryModel<Foam::psiChemistryModel, Foam::sutherlandTransport<Foam::species::thermo<Foam::janafThermo<Foam::perfectGas<Foam::specie> >, Foam::sensibleEnthalpy> > > >::solve(Foam::Field<double>&, double&, double&, double&, double&) const at ~/OpenFOAM/OpenFOAM-2.3.x/src/thermophysicalModels/chemistryModel/lnInclude/ode.C:75 #11 double Foam::chemistryModel<Foam::psiChemistryModel, Foam::sutherlandTransport<Foam::species::thermo<Foam::janafThermo<Foam::perfectGas<Foam::specie> >, Foam::sensibleEnthalpy> > >::solve<Foam::UniformField<double> >(Foam::UniformField<double> const&) at ~/OpenFOAM/OpenFOAM-2.3.x/src/thermophysicalModels/chemistryModel/lnInclude/chemistryModel.C:815 #12 Foam::chemistryModel<Foam::psiChemistryModel, Foam::sutherlandTransport<Foam::species::thermo<Foam::janafThermo<Foam::perfectGas<Foam::specie> >, Foam::sensibleEnthalpy> > >::solve(double) at ~/OpenFOAM/OpenFOAM-2.3.x/src/thermophysicalModels/chemistryModel/lnInclude/chemistryModel.C:841 #13 Foam::combustionModels::laminar<Foam::combustionModels::psiChemistryCombustion>::correct() at ~/OpenFOAM/OpenFOAM-2.3.x/src/combustionModels/lnInclude/laminar.C:111 #14 Foam::combustionModels::PaSR<Foam::combustionModels::psiChemistryCombustion>::correct() at ~/OpenFOAM/OpenFOAM-2.3.x/src/combustionModels/PaSR/PaSR.C:73 #15 ? at ~/OpenFOAM/cesar-2.3.x/ccf_colrq/coalCollidingChemistryFoam/YEqn.H:15 #16 __libc_start_main in "/lib/x86_64-linux-gnu/libc.so.6" #17 ? at ??:? Aborted (core dumped)
__________________
César Miguéis Mechanical Engineer MSc. Student at COPPE/UFRJ |
|
December 14, 2015, 07:56 |
error adding void fraction into the solver
|
#4 |
New Member
César Augusto Corrêa Miguéis
Join Date: Nov 2013
Location: Rio de Janeiro, Brasil
Posts: 26
Rep Power: 12 |
Hi Bruno! Can you help me in this thread: http://www.cfd-online.com/Forums/ope...ification.html ? I'm getting an error while trying to insert the void fraction term into the solver!
[ Moderator note: moved from http://www.cfd-online.com/Forums/ope...istryfoam.html ]
__________________
César Miguéis Mechanical Engineer MSc. Student at COPPE/UFRJ Last edited by wyldckat; December 19, 2015 at 14:39. Reason: see "Moderator note:" |
|
December 19, 2015, 14:47 |
|
#5 | ||
Retired Super Moderator
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 10,980
Blog Entries: 45
Rep Power: 128 |
Greetings César,
I've moved your posts on this topic into a single thread, to make it easier to keep track of everything related to this topic of yours. First issue: Quote:
Code:
Info<< "Constructing kinematicCloud " << kinematicCloudName << endl; basicKinematicTypeCloud kinematicCloud ( kinematicCloudName, rhoc, Uc, muc, g ); Code:
Info<< "\nConstructing coal cloud" << endl; coalCloud coalParcels ( "coalCloud1", rho, U, g, slgThermo ); Info<< "\nConstructing limestone cloud" << endl; basicThermoCloud limestoneParcels ( "limestoneCloud1", rho, U, g, slgThermo ); Code:
// Update alphac from the particle locations alphac = max(1.0 - coalParcels.theta() - limestoneParcels.theta(), 0.01); Quote:
Both situations have crashes related to incorrect memory accesses, but it's hard to ascertain if both are for the same reason or not. The second crash seems to be because there is an incorrectly defined cloud file somewhere. Best regards, Bruno
__________________
|
|||
December 28, 2015, 07:49 |
Hi,cmigueis
|
#6 |
New Member
Shuai Wang
Join Date: Mar 2014
Posts: 26
Rep Power: 12 |
hi, cmigueis,
Did you receive my reply via E-mail about adding the void fraction into coalChemistryFoam? I think I have accomplished it. If you receive it, I want to discuss with you about how to do in the nest step. WANG |
|
December 28, 2015, 09:03 |
Thanks
|
#7 |
New Member
César Augusto Corrêa Miguéis
Join Date: Nov 2013
Location: Rio de Janeiro, Brasil
Posts: 26
Rep Power: 12 |
Dear Bruno and Shuai, thanks a lot for your replies, and sorry for the long time it took me to answer to it! I'm studying for this exam (which is not about cfd/gasification) so I'm a little bit slow on the code development right now (but I did not abandoned it!)
Shuai, I received your email and started to analize the code (I'm attaching the code to this reply, so anyone can see and contribute to it, ok?). It seems to me that you added the void fraction, but you only consider one cloud in the domain, right? And I think that the species transport equation also needs the void fraction term. I'm more than happy to discuss with you the next steps! I was thinking about the chemistry part of the solver. Based on the Ku work (or Oevermann and Gerber work's also), we need to implement the pyrolysis models and the heterogeneous reactions. About the collisions models, althought it takes the p-p and p-w collisions into account the solver uses a more simplified model than the soft sphere model. I was talking about this with a few people who has good OpenFOAM knowledge and they told me to try to use the CFDEM ( http://www.cfdem.com/ ) package/addon. What do you think about it? Bruno and Shuai, again, thanks for the help! I hope you had a great christmas, and wish you'll have a happy new year!
__________________
César Miguéis Mechanical Engineer MSc. Student at COPPE/UFRJ |
|
December 28, 2015, 22:11 |
voida fraction, chemical reactions, conductive heat transfer
|
#8 |
New Member
Shuai Wang
Join Date: Mar 2014
Posts: 26
Rep Power: 12 |
Dear cmigueis, thanks for your reply, I am happy to hear that you will continue to do it. I agree with you about sharing the codes.
At first, I only consider one cloud (coalCloud) in the code for simplification, however, it is easy to take limestoneCloud into account in the code. Secondly, as your advice, the species transport equations also need void fraction, I will deal with this aspect in the next few days. Thirdly, about chemistry part, I think we should take heterogeneous reactions as below into account: C + 0.5O2 --> CO; K1 is the rate constant C + CO2 --> 2CO; K2 is the rate constant C + H2O --> CO+H2; K3 is the rate constant In general, the pyrolysis (devolatilization) model is one of the most important models in chemical part, the devolatilization rate is modeled using a single step first-order Arrhenius reaction in Ku or Abani & Ghoniem's work. I think we can adopt this model in the first step. About the collisions model, p-p or p-w collisions are taken into account in the solver, however, the heat transfer between p-p or p-w collision are not considered in the OpenFOAM, the widely used models as below: Static conductive heat transfer between the colliding pair with zero relative velocity proposed by Batchelor & O’Brien and modified by Cheng (attachments); Conductive heat transfer between the colliding pair with non-zero relative velocity proposed by Sun & Chen and modified by Zhou (attachments). Which can refer to the CFDEM, however, I think it will difficult to do it. In a word, add void fraction into species transport equations, then develop heterogeneous reactions, finally develop conductive heat transfer between colliding p-p and p-w, which is my strategy to develop a four-way coupling solver to resolver coal combustion or biomass gasification. Best regards! WANG |
|
January 3, 2016, 15:29 |
Questions
|
#9 |
New Member
César Augusto Corrêa Miguéis
Join Date: Nov 2013
Location: Rio de Janeiro, Brasil
Posts: 26
Rep Power: 12 |
Hi Wang! I totally agree with your strategy! At first I wouldn't add the conductive heat transfer between p-p and p-w, but it seems to be a good improvement of the code! Until the end of january I will be a little bit slower with the code development, because of my exam, but I'll try to work on it whenever I can.
I was studying your code and I have some questions: 1- How the coalCloudList works? It means that I can have more than 1 coal cloud? 2- Can you explain this part of the code in coalChemistryFoam.C file? Code:
fvVectorMatrix cloudSU(coalParcels.SU(U)); volVectorField cloudVolSUSu ( IOobject ( "cloudVolSUSu", runTime.timeName(), mesh ), mesh, dimensionedVector ( "0", cloudSU.dimensions()/dimVolume, vector::zero ), zeroGradientFvPatchVectorField::typeName ); cloudVolSUSu.internalField() = -cloudSU.source()/mesh.V(); cloudVolSUSu.correctBoundaryConditions(); cloudSU.source() = vector::zero; I saw your question about the Ergun/Wen-Yu drag relation, I'll try to find out how to solve this! Regards!
__________________
César Miguéis Mechanical Engineer MSc. Student at COPPE/UFRJ |
|
January 3, 2016, 23:06 |
|
#10 | |
New Member
Shuai Wang
Join Date: Mar 2014
Posts: 26
Rep Power: 12 |
Hi cmigueis! I have already finished the heterogeneous reactions (i.e. surface reaction of char): C + O2, C + CO2 and C + H2O. About your questions:
1. I think if you want to use more than one coal cloud, you can specify them as the coalCloud1, coalCloud2…., and define them in createCloud.H. 2. This part is the same with DPMFoam, and frankly speaking, I don’t understand it completely. 3. In the EEqn.H: Quote:
Yesterday I solved the drag model problem. In the file makeThermoParcelForces.H, I added the ErgunWenYuDrag, thus it can be selected in the runTimeSelection. Then I set a case as the work conducted by Ku et al. (2015 CES), however, when it run to 0.32s, it crashed, which might result from many factors: discretization scheme, boundary conditions…… I will handle it in the next few days, and I will share the codes after it run with no problems. Best regards! Wang Last edited by Shuai_W; January 4, 2016 at 00:54. |
||
January 8, 2016, 11:02 |
Congratulations and more questions!
|
#11 |
New Member
César Augusto Corrêa Miguéis
Join Date: Nov 2013
Location: Rio de Janeiro, Brasil
Posts: 26
Rep Power: 12 |
Wow! Thanks for the reply and congratulations for the very fast advances on the development of the code!
About the multiple coal clouds, it means that if a define the bed as a coal cloud also (varying the composition of the particles, let's say only char is present and the name is coalCloud2, coalCloud1 is the coal/biomass injection cloud), then it's unnecessary to add the terms of another cloud into the equation? I mean, when the void fraction is calculated using the 1-coalParcels.Theta() relation, the coalParcels.Theta() will compute the sum of the coalCloud1 and coalCloud2 volume fractions? Or the source terms in the conservation equations (like coalParcels.Sh(he) in the energy equation) will represent the sum of the source terms relative to both coalClouds? Best regards!
__________________
César Miguéis Mechanical Engineer MSc. Student at COPPE/UFRJ |
|
January 8, 2016, 20:23 |
Errors about coalCollidingChemistryFoam
|
#12 | ||
New Member
Shuai Wang
Join Date: Mar 2014
Posts: 26
Rep Power: 12 |
Dear cmigueis,
In a sense, the physical process of your simulation is co-combustion of coal and biomass. Since these two materials (fuel) have different thermal parameters (e.g., surface reaction coefficients, devolatilization coefficients), thus I think they should be defined as two clouds, named coalCloud1 and biomassCloud1, which is child-class of coalCloud, Quote:
alpha = max(1.0 - coalParcels.theta() - biomassParcels.theta(), 0.01); The source terms should be expressed as coalParcels.Sh() + biomassParcels.Sh(). During last few days, I have fixed some bugs about my codes, however, errors still exist when the coal devolatilization happens: Quote:
Best regards! Wang |
|||
January 11, 2016, 11:52 |
|
#13 |
New Member
César Augusto Corrêa Miguéis
Join Date: Nov 2013
Location: Rio de Janeiro, Brasil
Posts: 26
Rep Power: 12 |
Thanks for the reply, Wang! I agree with what you said about my case! But let's say I have a situation where I have to implement two different coal clouds (coalCloud1 and coalCloud2), the terms like coalParcels.Sh(he) will already represent the sum of the contributions relative to both coalClouds?
If you want, send me the solver, libraries and the test case that you are trying to run, then I can test here different case setups and numerical schemes to see if we can solve the devolatilization problem! Best regards!
__________________
César Miguéis Mechanical Engineer MSc. Student at COPPE/UFRJ |
|
January 17, 2016, 03:18 |
void fraction
|
#14 |
New Member
Shuai Wang
Join Date: Mar 2014
Posts: 26
Rep Power: 12 |
Hi, cmigueis,
I have two questions, please give me some advice. 1) As we know, we should add void fraction to UEqn.H, YEqn.H…, but how about pEqn.H. When we build the pressure equation, whether we should add void fraction to it or not? 2) In UEqn.H, in “+ *turbulence->divDevRhoReff(U)”, it should be written as “+ alpha*turbulence->divDevRhoReff(U)”. 3) Should we add void fraction to source terms? It seems like we do not take void fraction into account when we calculate source terms. (In UEqn.H: “coalParcels.SU(U) + limestoneParcels.SU(U) + fvOptions(rho, U)”) Best regards! Wang |
|
March 9, 2016, 20:34 |
|
#15 | |
New Member
César Augusto Corrêa Miguéis
Join Date: Nov 2013
Location: Rio de Janeiro, Brasil
Posts: 26
Rep Power: 12 |
Hi Wang and everybody!
Quote:
__________________
César Miguéis Mechanical Engineer MSc. Student at COPPE/UFRJ |
||
March 9, 2016, 21:15 |
|
#16 |
New Member
César Augusto Corrêa Miguéis
Join Date: Nov 2013
Location: Rio de Janeiro, Brasil
Posts: 26
Rep Power: 12 |
Bruno, Wang and everybody, I'm trying to adapt the turbulence equation (the k-e model) so it take the void fraction in account.
I modified the original versions of the k-e files, but I still can't compile it. I thing the difficulty of it is because of the addition of another parameter (the void fraction fied) which is incompatible with a lot of functions that the k-e model depends on. Anyone can suggest a strategy to implement this new turbulence model? I saw some turbulence models modifications on the internet, but none that introduces another field that is calculated outside the turbulence model. Thanks in advance to everybody! Here are the files: vfkEpsilon.C Code:
#include "vfkEpsilon.H" #include "addToRunTimeSelectionTable.H" #include "backwardsCompatibilityWallFunctions.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { namespace compressible { namespace RASModels { // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // defineTypeNameAndDebug(vfkEpsilon, 0); addToRunTimeSelectionTable(RASModel, vfkEpsilon, dictionary); // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // vfkEpsilon::vfkEpsilon ( const volScalarField& alpha, const volScalarField& rho, const volVectorField& U, const surfaceScalarField& phi, const fluidThermo& thermophysicalModel, const word& turbulenceModelName, const word& modelName ) : RASModel(modelName, alpha, rho, U, phi, thermophysicalModel, turbulenceModelName), Cmu_ ( dimensioned<scalar>::lookupOrAddToDict ( "Cmu", coeffDict_, 0.09 ) ), C1_ ( dimensioned<scalar>::lookupOrAddToDict ( "C1", coeffDict_, 1.44 ) ), C2_ ( dimensioned<scalar>::lookupOrAddToDict ( "C2", coeffDict_, 1.92 ) ), C3_ ( dimensioned<scalar>::lookupOrAddToDict ( "C3", coeffDict_, -0.33 ) ), sigmak_ ( dimensioned<scalar>::lookupOrAddToDict ( "sigmak", coeffDict_, 1.0 ) ), sigmaEps_ ( dimensioned<scalar>::lookupOrAddToDict ( "sigmaEps", coeffDict_, 1.3 ) ), Prt_ ( dimensioned<scalar>::lookupOrAddToDict ( "Prt", coeffDict_, 1.0 ) ), k_ ( IOobject ( "k", runTime_.timeName(), mesh_, IOobject::NO_READ, IOobject::AUTO_WRITE ), autoCreateK("k", mesh_) ), epsilon_ ( IOobject ( "epsilon", runTime_.timeName(), mesh_, IOobject::NO_READ, IOobject::AUTO_WRITE ), autoCreateEpsilon("epsilon", mesh_) ), mut_ ( IOobject ( "mut", runTime_.timeName(), mesh_, IOobject::NO_READ, IOobject::AUTO_WRITE ), autoCreateMut("mut", mesh_) ), alphat_ ( IOobject ( "alphat", runTime_.timeName(), mesh_, IOobject::NO_READ, IOobject::AUTO_WRITE ), autoCreateAlphat("alphat", mesh_) ) { bound(k_, kMin_); bound(epsilon_, epsilonMin_); mut_ = Cmu_*rho_*sqr(k_)/epsilon_; mut_.correctBoundaryConditions(); alphat_ = mut_/Prt_; alphat_.correctBoundaryConditions(); printCoeffs(); } // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // tmp<volSymmTensorField> vfkEpsilon::R() const { return tmp<volSymmTensorField> ( new volSymmTensorField ( IOobject ( "R", runTime_.timeName(), mesh_, IOobject::NO_READ, IOobject::NO_WRITE ), ((2.0/3.0)*I)*k_ - (mut_/rho_)*dev(twoSymm(fvc::grad(U_))), k_.boundaryField().types() ) ); } tmp<volSymmTensorField> vfkEpsilon::devRhoReff() const { return tmp<volSymmTensorField> ( new volSymmTensorField ( IOobject ( "devRhoReff", runTime_.timeName(), mesh_, IOobject::NO_READ, IOobject::NO_WRITE ), -muEff()*dev(twoSymm(fvc::grad(U_))) ) ); } tmp<fvVectorMatrix> vfkEpsilon::divDevRhoReff(volVectorField& U) const { return ( - fvm::laplacian(muEff(), U) - fvc::div(muEff()*dev2(T(fvc::grad(U)))) ); } bool vfkEpsilon::read() { if (RASModel::read()) { Cmu_.readIfPresent(coeffDict()); C1_.readIfPresent(coeffDict()); C2_.readIfPresent(coeffDict()); C3_.readIfPresent(coeffDict()); sigmak_.readIfPresent(coeffDict()); sigmaEps_.readIfPresent(coeffDict()); Prt_.readIfPresent(coeffDict()); return true; } else { return false; } } void vfkEpsilon::correct() { if (!turbulence_) { // Re-calculate viscosity mut_ = rho_*Cmu_*sqr(k_)/epsilon_; mut_.correctBoundaryConditions(); // Re-calculate thermal diffusivity alphat_ = mut_/Prt_; alphat_.correctBoundaryConditions(); return; } RASModel::correct(); volScalarField divU(fvc::div(phi_/fvc::interpolate(rho_))); if (mesh_.moving()) { divU += fvc::div(mesh_.phi()); } tmp<volTensorField> tgradU = fvc::grad(U_); volScalarField G(GName(), mut_*(tgradU() && dev(twoSymm(tgradU())))); tgradU.clear(); // Update epsilon and G at the wall epsilon_.boundaryField().updateCoeffs(); // Dissipation equation tmp<fvScalarMatrix> epsEqn ( fvm::ddt(alpha_*rho_, epsilon_) + fvm::div(alpha_*phi_, epsilon_) - fvm::laplacian(alpha_*DepsilonEff(), epsilon_) == alpha_*C1_*G*epsilon_/k_ - fvm::SuSp(alpha_*((2.0/3.0)*C1_ + C3_)*rho_*divU, epsilon_) - fvm::Sp(alpha_*C2_*rho_*epsilon_/k_, epsilon_) ); epsEqn().relax(); epsEqn().boundaryManipulate(epsilon_.boundaryField()); solve(epsEqn); bound(epsilon_, epsilonMin_); // Turbulent kinetic energy equation tmp<fvScalarMatrix> kEqn ( fvm::ddt(alpha_*rho_, k_) + fvm::div(alpha_*phi_, k_) - fvm::laplacian(alpha_*DkEff(), k_) == alpha_*G - fvm::SuSp(alpha_*(2.0/3.0)*rho_*divU, k_) - fvm::Sp(alpha_*rho_*epsilon_/k_, k_) ); kEqn().relax(); solve(kEqn); bound(k_, kMin_); // Re-calculate viscosity mut_ = rho_*Cmu_*sqr(k_)/epsilon_; mut_.correctBoundaryConditions(); // Re-calculate thermal diffusivity alphat_ = mut_/Prt_; alphat_.correctBoundaryConditions(); } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace RASModels } // End namespace compressible } // End namespace Foam // ************************************************************************* // Code:
#ifndef compressiblevfkEpsilon_H #define compressiblevfkEpsilon_H #include "RASModel.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // namespace Foam { namespace compressible { namespace RASModels { /*---------------------------------------------------------------------------*\ Class vfkEpsilon Declaration \*---------------------------------------------------------------------------*/ class vfkEpsilon : public RASModel { protected: // Protected data // Model coefficients dimensionedScalar Cmu_; dimensionedScalar C1_; dimensionedScalar C2_; dimensionedScalar C3_; dimensionedScalar sigmak_; dimensionedScalar sigmaEps_; dimensionedScalar Prt_; // Fields volScalarField k_; volScalarField epsilon_; volScalarField mut_; volScalarField alphat_; public: //- Runtime type information TypeName("vfkEpsilon"); // Constructors //- Construct from components vfkEpsilon ( const volScalarField& alpha, const volScalarField& rho, const volVectorField& U, const surfaceScalarField& phi, const fluidThermo& thermophysicalModel, const word& turbulenceModelName = turbulenceModel::typeName, const word& modelName = typeName ); //- Destructor virtual ~vfkEpsilon() {} // Member Functions //- Return the effective diffusivity for k tmp<volScalarField> DkEff() const { return tmp<volScalarField> ( new volScalarField("DkEff", mut_/sigmak_ + mu()) ); } //- Return the effective diffusivity for epsilon tmp<volScalarField> DepsilonEff() const { return tmp<volScalarField> ( new volScalarField("DepsilonEff", mut_/sigmaEps_ + mu()) ); } //- Return the turbulence viscosity virtual tmp<volScalarField> mut() const { return mut_; } //- Return the turbulence thermal diffusivity virtual tmp<volScalarField> alphat() const { return alphat_; } //- Return the turbulence kinetic energy virtual tmp<volScalarField> k() const { return k_; } //- Return the turbulence kinetic energy dissipation rate virtual tmp<volScalarField> epsilon() const { return epsilon_; } //- Return the Reynolds stress tensor virtual tmp<volSymmTensorField> R() const; //- Return the effective stress tensor including the laminar stress virtual tmp<volSymmTensorField> devRhoReff() const; //- Return the source term for the momentum equation virtual tmp<fvVectorMatrix> divDevRhoReff(volVectorField& U) const; //- Solve the turbulence equations and correct the turbulence viscosity virtual void correct(); //- Read RASProperties dictionary virtual bool read(); }; // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // } // End namespace RASModels } // End namespace compressible } // End namespace Foam // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // #endif // ************************************************************************* // Make/files Code:
/* RAS turbulence models */ vfkEpsilon/vfkEpsilon.C LIB = $(FOAM_LIBBIN)/libmyCompressibleRASModels Make/options Code:
EXE_INC = \ -I$(LIB_SRC)/turbulenceModels \ -I$(LIB_SRC)/turbulenceModels/compressible/RAS/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/solidThermo/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \ LIB_LIBS = \ -lcompressibleTurbulenceModel \ -lcompressibleRASModels \ -lfiniteVolume \ -lfluidThermophysicalModels \ -lspecie \ -lmeshTools
__________________
César Miguéis Mechanical Engineer MSc. Student at COPPE/UFRJ |
|
March 9, 2016, 21:16 |
|
#17 |
New Member
César Augusto Corrêa Miguéis
Join Date: Nov 2013
Location: Rio de Janeiro, Brasil
Posts: 26
Rep Power: 12 |
here is the output when I try to compile it:
Code:
cesar@cesarnotebook:~/OpenFOAM/cesar-2.3.x/custom/src/turbulenceModels/compressible/RAS$ wmake wmakeLnInclude: linking include files to ./lnInclude Making dependency list for source file vfkEpsilon/vfkEpsilon.C SOURCE=vfkEpsilon/vfkEpsilon.C ; g++ -m64 -Dlinux64 -DWM_DP -Wall -Wextra -Wno-unused-parameter -Wold-style-cast -Wnon-virtual-dtor -O0 -fdefault-inline -ggdb3 -DFULLDEBUG -DNoRepository -ftemplate-depth-100 -I/home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/turbulenceModels -I/home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/turbulenceModels/compressible/RAS/lnInclude -I/home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/thermophysicalModels/basic/lnInclude -I/home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/thermophysicalModels/solidThermo/lnInclude -I/home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/finiteVolume/lnInclude -I/home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/meshTools/lnInclude -IlnInclude -I. -I/home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/OpenFOAM/lnInclude -I/home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/OSspecific/POSIX/lnInclude -fPIC -c $SOURCE -o Make/linux64GccDPDebug/vfkEpsilon.o vfkEpsilon/vfkEpsilon.C: In constructor ‘Foam::compressible::RASModels::vfkEpsilon::vfkEpsilon(const volScalarField&, const volScalarField&, const volVectorField&, const surfaceScalarField&, const Foam::fluidThermo&, const Foam::word&, const Foam::word&)’: vfkEpsilon/vfkEpsilon.C:171:5: error: no matching function for call to ‘Foam::compressible::RASModel::RASModel(const Foam::word&, const volScalarField&, const volScalarField&, const volVectorField&, const surfaceScalarField&, const Foam::fluidThermo&, const Foam::word&)’ ) ^ vfkEpsilon/vfkEpsilon.C:171:5: note: candidates are: In file included from vfkEpsilon/vfkEpsilon.H:63:0, from vfkEpsilon/vfkEpsilon.C:26: /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/turbulenceModels/compressible/RAS/lnInclude/RASModel.H:142:9: note: Foam::compressible::RASModel::RASModel(const Foam::word&, const volScalarField&, const volVectorField&, const surfaceScalarField&, const Foam::fluidThermo&, const Foam::word&) RASModel ^ /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/turbulenceModels/compressible/RAS/lnInclude/RASModel.H:142:9: note: candidate expects 6 arguments, 7 provided /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/turbulenceModels/compressible/RAS/lnInclude/RASModel.H:109:9: note: Foam::compressible::RASModel::RASModel(const Foam::compressible::RASModel&) RASModel(const RASModel&); ^ /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/turbulenceModels/compressible/RAS/lnInclude/RASModel.H:109:9: note: candidate expects 1 argument, 7 provided vfkEpsilon/vfkEpsilon.C: In member function ‘virtual void Foam::compressible::RASModels::vfkEpsilon::correct()’: vfkEpsilon/vfkEpsilon.C:294:18: error: ‘alpha_’ was not declared in this scope fvm::ddt(alpha_*rho_, epsilon_) ^ In file included from /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/OpenFOAM/lnInclude/token.H:49:0, from /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/OpenFOAM/lnInclude/Istream.H:47, from /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/OpenFOAM/lnInclude/ISstream.H:39, from /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/OpenFOAM/lnInclude/IOstreams.H:38, from /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/OpenFOAM/lnInclude/VectorSpace.C:27, from /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/OpenFOAM/lnInclude/VectorSpace.H:171, from /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/OpenFOAM/lnInclude/Vector.H:44, from /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/OpenFOAM/lnInclude/vector.H:39, from /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/OpenFOAM/lnInclude/fieldTypes.H:35, from /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/OpenFOAM/lnInclude/primitiveFieldsFwd.H:36, from /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/turbulenceModels/compressible/turbulenceModel/turbulenceModel.H:47, from /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/turbulenceModels/compressible/RAS/lnInclude/RASModel.H:45, from vfkEpsilon/vfkEpsilon.H:63, from vfkEpsilon/vfkEpsilon.C:26: /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/turbulenceModels/compressible/RAS/lnInclude/RASModel.H: In instantiation of ‘static Foam::autoPtr<Foam::compressible::RASModel> Foam::compressible::RASModel::adddictionaryConstructorToTable<RASModelType>::New(const volScalarField&, const volVectorField&, const surfaceScalarField&, const Foam::fluidThermo&, const Foam::word&) [with RASModelType = Foam::compressible::RASModels::vfkEpsilon; Foam::volScalarField = Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh>; Foam::volVectorField = Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh>; Foam::surfaceScalarField = Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh>]’: /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/turbulenceModels/compressible/RAS/lnInclude/RASModel.H:123:9: required from ‘Foam::compressible::RASModel::adddictionaryConstructorToTable<RASModelType>::adddictionaryConstructorToTable(const Foam::word&) [with RASModelType = Foam::compressible::RASModels::vfkEpsilon]’ vfkEpsilon/vfkEpsilon.C:43:1: required from here /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/OpenFOAM/lnInclude/runTimeSelectionTables.H:76:66: error: no matching function for call to ‘Foam::compressible::RASModels::vfkEpsilon::vfkEpsilon(const volScalarField&, const volVectorField&, const surfaceScalarField&, const Foam::fluidThermo&, const Foam::word&)’ return autoPtr< baseType >(new baseType##Type parList); \ ^ /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/turbulenceModels/compressible/RAS/lnInclude/RASModel.H:123:9: note: in expansion of macro ‘declareRunTimeSelectionTable’ declareRunTimeSelectionTable ^ /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/OpenFOAM/lnInclude/runTimeSelectionTables.H:76:66: note: candidates are: return autoPtr< baseType >(new baseType##Type parList); \ ^ /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/turbulenceModels/compressible/RAS/lnInclude/RASModel.H:123:9: note: in expansion of macro ‘declareRunTimeSelectionTable’ declareRunTimeSelectionTable ^ vfkEpsilon/vfkEpsilon.C:47:1: note: Foam::compressible::RASModels::vfkEpsilon::vfkEpsilon(const volScalarField&, const volScalarField&, const volVectorField&, const surfaceScalarField&, const Foam::fluidThermo&, const Foam::word&, const Foam::word&) vfkEpsilon::vfkEpsilon ^ vfkEpsilon/vfkEpsilon.C:47:1: note: no known conversion for argument 2 from ‘const volVectorField {aka const Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh>}’ to ‘const volScalarField& {aka const Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh>&}’ In file included from vfkEpsilon/vfkEpsilon.C:26:0: vfkEpsilon/vfkEpsilon.H:78:7: note: Foam::compressible::RASModels::vfkEpsilon::vfkEpsilon(const Foam::compressible::RASModels::vfkEpsilon&) class vfkEpsilon ^ vfkEpsilon/vfkEpsilon.H:78:7: note: candidate expects 1 argument, 5 provided In file included from /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/OpenFOAM/lnInclude/token.H:49:0, from /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/OpenFOAM/lnInclude/Istream.H:47, from /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/OpenFOAM/lnInclude/ISstream.H:39, from /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/OpenFOAM/lnInclude/IOstreams.H:38, from /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/OpenFOAM/lnInclude/VectorSpace.C:27, from /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/OpenFOAM/lnInclude/VectorSpace.H:171, from /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/OpenFOAM/lnInclude/Vector.H:44, from /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/OpenFOAM/lnInclude/vector.H:39, from /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/OpenFOAM/lnInclude/fieldTypes.H:35, from /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/OpenFOAM/lnInclude/primitiveFieldsFwd.H:36, from /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/turbulenceModels/compressible/turbulenceModel/turbulenceModel.H:47, from /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/turbulenceModels/compressible/RAS/lnInclude/RASModel.H:45, from vfkEpsilon/vfkEpsilon.H:63, from vfkEpsilon/vfkEpsilon.C:26: /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/turbulenceModels/compressible/RAS/lnInclude/RASModel.H: In static member function ‘static Foam::autoPtr<Foam::compressible::RASModel> Foam::compressible::RASModel::adddictionaryConstructorToTable<RASModelType>::New(const volScalarField&, const volVectorField&, const surfaceScalarField&, const Foam::fluidThermo&, const Foam::word&) [with RASModelType = Foam::compressible::RASModels::vfkEpsilon; Foam::volScalarField = Foam::GeometricField<double, Foam::fvPatchField, Foam::volMesh>; Foam::volVectorField = Foam::GeometricField<Foam::Vector<double>, Foam::fvPatchField, Foam::volMesh>; Foam::surfaceScalarField = Foam::GeometricField<double, Foam::fvsPatchField, Foam::surfaceMesh>]’: /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/OpenFOAM/lnInclude/runTimeSelectionTables.H:77:9: warning: control reaches end of non-void function [-Wreturn-type] } \ ^ /home/cesar/OpenFOAM/OpenFOAM-2.3.x/src/turbulenceModels/compressible/RAS/lnInclude/RASModel.H:123:9: note: in expansion of macro ‘declareRunTimeSelectionTable’ declareRunTimeSelectionTable ^ make: *** [Make/linux64GccDPDebug/vfkEpsilon.o] Error 1 cesar@cesarnotebook:~/OpenFOAM/cesar-2.3.x/custom/src/turbulenceModels/compressible/RAS$
__________________
César Miguéis Mechanical Engineer MSc. Student at COPPE/UFRJ |
|
March 13, 2016, 14:58 |
|
#18 |
Retired Super Moderator
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 10,980
Blog Entries: 45
Rep Power: 128 |
Quick answer @cmigueis: You cannot simply add a new argument to the constructor of the turbulence model, because the base class "RASModel" does not have this option.
You have two choices:
__________________
|
|
May 10, 2016, 19:32 |
Missing piece
|
#19 |
New Member
TN
Join Date: Nov 2015
Location: TN, USA
Posts: 9
Rep Power: 10 |
Thank you, everyone.
Your posts have been informative. However, I looked at the developed collidingCoalCloud and realised that it does not accept the mu value during creation. As a result, I think it is perhaps the needed piece to have an effective DEM simulation, as mu is needed to calculate some particle behaviors like drag. Does anyone have an idea on how to include mu in the creation of collidingCoalCloud. Thank you. |
|
June 14, 2016, 02:25 |
|
#20 | |
Member
Ping Chang
Join Date: Feb 2016
Location: Perth
Posts: 93
Rep Power: 10 |
Quote:
Have you finally solved your problem? I mean add the collidingcloud to coalchemsitryFoam. I am trying to add collidingcloud to simplereactingFoam, do I need to add alphac in the solver? Kinds Regards, Ping |
||
Thread Tools | Search this Thread |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
OpenFoam_compressibleInterFoam solver_calculation void fraction in the Outlet | sahar_rf | OpenFOAM Post-Processing | 0 | August 20, 2014 12:13 |
void fraction | talib | Main CFD Forum | 0 | March 1, 2012 15:25 |
[blockMesh] BlockMeshmergePatchPairs | hjasak | OpenFOAM Meshing & Mesh Conversion | 11 | August 15, 2008 07:36 |
OpenFoam 14 installation problem | gfcoppola | OpenFOAM Installation | 20 | November 2, 2007 13:38 |
compressible two phase flow in CFX4.4 | youngan | CFX | 0 | July 1, 2003 23:32 |