|
[Sponsors] |
one parcel contains too many particles after breakup |
|
LinkBack | Thread Tools | Search this Thread | Display Modes |
April 14, 2015, 03:36 |
one parcel contains too many particles after breakup
|
#1 |
New Member
Join Date: Apr 2015
Posts: 8
Rep Power: 10 |
I use sprayFoam to simulate water droplet's breakup,the breakup model is ETAB and KHRT model,when the parcel was injected into air ,it contains only one particle,but after
breakup the number of particle in one parcel is more than 1000。 (1) I think too many particles in one parcel will influence the droplet's distribution,especially when the water was injected into supersonic flow. (2)I'm not sure whether it's a bug or not,I want to control the number of particle in one parcel less than 50,but I don't know how to do it. (3)Is there some way to add some new parcels to make sure the number of particle in one parcel is less than 50? |
|
April 15, 2015, 12:04 |
|
#2 | |
Senior Member
Armin
Join Date: Feb 2011
Location: Helsinki, Finland
Posts: 156
Rep Power: 19 |
Quote:
Othwerwise, have a look at the KHRT model. -Armin |
||
April 16, 2015, 23:05 |
|
#3 | |
New Member
Join Date: Apr 2015
Posts: 8
Rep Power: 10 |
Quote:
(1) if one parcel contains more than 2 particles,a childParcel will be added.nParticel of the childParcel is half of parenParcel.nParticle and mass of parenParcel will be reduced. The code is: scalar massDrop = pow3(d)*rhopi6; nParticle = mass/massDrop; if (nParticle >= 2) addParcel = true; d = cbrt(massDrop/rhopi6); ms = 0.0; dChild = cbrt(massDrop/rhopi6); massChild = 0.5*nParticle*pow3(dChild)*rhopi6; mass -= massChild; nParticle-=0.5*nParticle; } I add this code at the end of RT breakup and KHindex breakup. (2)Since the addParcel function is realized in SprayParcel.C,I think change the code in SprayParcel.C is more effective than in KHRT model.The code is: while(this->nParticle()>6) { SprayParcel<ParcelType>* myaddchild = new SprayParcel<ParcelType>(*this); myaddchild->nParticle() =5; td.cloud().addParticle(myaddchild); this->mass()-=5*3.14*1000*pow3(this->d())/6; this->nParticle()-=5; } I add this code after calcBreakup(td, dt, cellI); but it doesn't work.I don't no how to solve it.Can you give me some advice. Thank you verymuch. |
||
April 17, 2015, 04:09 |
|
#4 | |
Senior Member
Armin
Join Date: Feb 2011
Location: Helsinki, Finland
Posts: 156
Rep Power: 19 |
Please, use the CODE tags!
Some beginners guidelines are given here: http://www.cfd-online.com/Forums/ope...tml#post424508 Quote:
Besides, changes in SprayParcel.C would affect all breakup models, something you clearly don't want to do when evaluating different models. There is also not really any benefit concerning the computational efficiency! |
||
April 18, 2015, 22:30 |
|
#5 | |
New Member
Join Date: Apr 2015
Posts: 8
Rep Power: 10 |
Quote:
(1)I have changed the code in KHRT model.I tried two methods,but I think it have some problems. The first one(The red word is my code): Code:
if ((tc > 0) || (lambdaRT < d) ) { tc += dt; } // characteristic RT breakup time scalar tauRT = cTau_/(omegaRT + VSMALL); // check if we have RT breakup if ((tc > tauRT) && (lambdaRT < d)) { tc = -GREAT; scalar nDrops = d/lambdaRT; d = cbrt(d3/nDrops); scalar massDrop = pow3(d)*rhopi6; nParticle = mass/massDrop; if (nParticle >= 2) { addParcel = true; d = cbrt(massDrop/rhopi6); ms = 0.0; dChild = cbrt(massDrop/rhopi6); massChild = 0.5*nParticle*pow3(dChild)*rhopi6; mass -= massChild; nParticle-=0.5*nParticle; } } The second one: Code:
if ((tc > 0) || (lambdaRT < d) ) { tc += dt; } // characteristic RT breakup time scalar tauRT = cTau_/(omegaRT + VSMALL); // check if we have RT breakup if ((tc > tauRT) && (lambdaRT < d)) { tc = -GREAT; scalar nDrops = d/lambdaRT; d = cbrt(d3/nDrops); scalar massDrop = pow3(d)*rhopi6; nParticle = mass/massDrop; if (nParticle >= 51) { addParcel = true; d = cbrt(massDrop/rhopi6); ms = 0.0; dChild = cbrt(massDrop/rhopi6); massChild = 50*pow3(dChild)*rhopi6; mass -= massChild; nParticle-=50; } } (2)The code I have changed inSprayParcel.C Code:
if (liquidCore() > 0.5) { calcAtomization(td, dt, cellI); // Preserve the total mass/volume by increasing the number of // particles in parcels due to breakup scalar d2 = this->d(); this->nParticle() *= pow3(d1/d2); } else { calcBreakup(td, dt, cellI); } while(this->nParticle()>51) { SprayParcel<ParcelType>* myaddchild = new SprayParcel<ParcelType>(*this); myaddchild->nParticle() =50; td.cloud().addParticle(myaddchild); this->mass()-=50*rhopi6*pow3(this->d()); this->nParticle()-=50; } } Thank you very much. Last edited by xuebao123; April 19, 2015 at 08:55. |
||
April 22, 2015, 05:59 |
|
#6 |
Senior Member
Armin
Join Date: Feb 2011
Location: Helsinki, Finland
Posts: 156
Rep Power: 19 |
Without knowing what goes wrong it's pretty difficult to say why. Any error message?
(Before posting the error message/log, please read the guidelines on how to do that properly.) |
|
Thread Tools | Search this Thread |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
how to determine the number of particles injected. | welch | FLUENT | 2 | January 18, 2024 05:08 |
trying to simulate two-phase jet flow with particles in surface injection | ajkratos | FLUENT | 5 | March 3, 2015 22:33 |
allocating some particles to a parcel in DPM | morihangi | FLUENT | 0 | October 24, 2012 09:08 |
particles model | ati_ros61 | FLOW-3D | 3 | December 6, 2009 17:03 |
WAVE & TAB breakup inconsistency | Orrin | FLUENT | 0 | January 7, 2009 12:02 |