|
[Sponsors] |
July 23, 2012, 06:55 |
|
#22 |
Member
Tibor Nyers
Join Date: Jul 2010
Location: Hungary
Posts: 91
Rep Power: 17 |
Hi,
unfortunately I have mixed up the correct solver with an old one with errors. A thunder storm killed the hard disk with the new, correct version and I posted my obsolete one - always back up, and correct old stuff as well ... So the correct scalar equation with sources: Code:
tmp<fvScalarMatrix> TEqn ( fvm::ddt(T) + fvm::div(phi, T) - fvm::laplacian(DTEff, T) == sources(T) ); Code:
sources.constrain(TEqn()); Add sourcesProperties folder to your constant folder with entries: Code:
age { type scalarExplicitSource; active on; timeStart 0.0; duration 1.0; selectionMode all; scalarExplicitSourceCoeffs { volumeMode specific; injectionRate { T 1; } } } I double-checked this solution, and it gives the exact values of the solver that Andrew King has attached a while back. Andrew, thanks for your solution, quite useful! About the term in the laplacian, I "borrowed" the idea from Daniel C, here's what he said about the issue. I set DT to zero since I don't want additional diffusion. I don't know if this method can be used in a steady-state case since there's no explicit time stepping. But if the solution matches the transient version more or less than it can be valid. WARNING: I don't validated any result to real world tests. Feel free to correct the solver, add your thoughts, thank you! About your question: if the flow is laminar, incompressible and you now the inlet properties (velocity / flow rate), I think it's just some basic calculations and it depends on the geometry of the diffusor. When the flow is turbulent I don't know how to calculate it, maybe there's some good approximations out there. |
|
April 23, 2013, 14:07 |
|
#23 |
Senior Member
Ehsan
Join Date: Oct 2012
Location: Iran
Posts: 2,208
Rep Power: 27 |
Hi
also it seems a dead thread.but I hope not and propound my question! I have a inflow patch and need a lot to know if the inflowing fluid has reached to outflow patch or not. preferably by rhoPimpleFoam. both the fluid that rest in the channel at first(internalField) and the fluid is entering are the same (air) but entering air has more pressure and temperature. is it possible to track entering air particles through the unsteady case I have? to give more information if is important to answer the case is a rectangular tube with one inflow and one outflow patch. how to modify the files in this thread in my case?
__________________
Injustice Anywhere is a Threat for Justice Everywhere.Martin Luther King. To Be or Not To Be,Thats the Question! The Only Stupid Question Is the One that Goes Unasked. |
|
April 23, 2013, 14:36 |
|
#24 | |
Super Moderator
Tobias Holzmann
Join Date: Oct 2010
Location: Bad Wörishofen
Posts: 2,711
Blog Entries: 6
Rep Power: 52 |
Quote:
you can use implement a conserved scalar transport equation for that! At the beginning your scalar is 1 at the inlet and the rest is zero. While simulating your scalar is transported through the domain. In your case you should only use the transport due to convection and so you can have a look when the scalar reaches the outlet! Hope its helpful. Tobi |
||
April 23, 2013, 14:44 |
|
#25 |
Senior Member
Ehsan
Join Date: Oct 2012
Location: Iran
Posts: 2,208
Rep Power: 27 |
Hi Tobias
thanks for rapid reply! I haven't modified a solver to solve for a new equation. then could you please guide me. I've added this in createFields: Code:
volScalarField age ( IOobject ( "age", runTime.timeName(), mesh, IOobject::MUST_READ, IOobject::AUTO_WRITE ), mesh ); in the folder of solver I have to add this: Code:
// --- Scalar Transport volScalarField DTEff = DT+turbulence->muEff()/0.7; tmp<fvScalarMatrix> AgeEqn ( fvm::ddt(rho,Age) + fvm::div(phi, Age) == dimensionedScalar("AgeSource", Age.dimensions()*dimensionSet(1,-3,-1,0,0), 1) //- fvm::laplacian(DTEff, Age) ); AgeEqn().relax(); sources.constrain(AgeEqn()); AgeEqn().solve(); and what should be assign for DT?and also change nut to mut(since my case is compressible,unsteady) correct? (does it work if I switch to a turbulent case too?)
__________________
Injustice Anywhere is a Threat for Justice Everywhere.Martin Luther King. To Be or Not To Be,Thats the Question! The Only Stupid Question Is the One that Goes Unasked. Last edited by immortality; April 23, 2013 at 15:47. |
|
April 23, 2013, 17:40 |
|
#26 |
Super Moderator
Tobias Holzmann
Join Date: Oct 2010
Location: Bad Wörishofen
Posts: 2,711
Blog Entries: 6
Rep Power: 52 |
Hi,
have a look at my solver: https://github.com/shor-ty/scalarRhoSimpleFoam Then use the scalarEqn.H and the entry in the createFields.H for your own pimple solver! If there are any problems ask me! Have a nice evening, Tobi |
|
April 24, 2013, 08:23 |
|
#27 |
Senior Member
Ehsan
Join Date: Oct 2012
Location: Iran
Posts: 2,208
Rep Power: 27 |
thanks.
1)I can't download.this error occurs: Code:
https://github.com/shor-ty/scalarRhoSimpleFoam.git bash: https://github.com/shor-ty/scalarRhoSimpleFoam.git: No such file or directory Code:
// --- Scalar transport tmp<fvScalarMatrix> SEqn ( ( fvm::div(phi, S) - fvm::Sp(fvc::div(phi), S) - fvm::laplacian(turbulence->muEff(), S) ) ); SEqn().relax(); SEqn().solve(mesh.solver("S")); should I delete laplacian term totally?why you have not done this to delete laplacian term?then how can account for turbulence? 4)what does this term is added?what does do? Code:
- fvm::Sp(fvc::div(phi), S)
__________________
Injustice Anywhere is a Threat for Justice Everywhere.Martin Luther King. To Be or Not To Be,Thats the Question! The Only Stupid Question Is the One that Goes Unasked. Last edited by immortality; April 24, 2013 at 10:17. |
|
April 24, 2013, 14:47 |
|
#28 |
Senior Member
Ehsan
Join Date: Oct 2012
Location: Iran
Posts: 2,208
Rep Power: 27 |
hi
could you please help me with questions?
__________________
Injustice Anywhere is a Threat for Justice Everywhere.Martin Luther King. To Be or Not To Be,Thats the Question! The Only Stupid Question Is the One that Goes Unasked. |
|
April 24, 2013, 15:22 |
|
#29 |
Super Moderator
Tobias Holzmann
Join Date: Oct 2010
Location: Bad Wörishofen
Posts: 2,711
Blog Entries: 6
Rep Power: 52 |
Hi,
i was at work till now. 1. on my computer the github link is working! 2. you have to set ddt into that equation; in my case I used the SIMPLE algo (steady-state; ddt = 0) 3. let the diffusion term in your case 4. thats a numerical trick for stabilisation |
|
April 24, 2013, 18:30 |
|
#31 |
Senior Member
Ehsan
Join Date: Oct 2012
Location: Iran
Posts: 2,208
Rep Power: 27 |
thanks.then can you please give me a more description (or there is a source and internet link for that) about the term you has added for more stability.because may it be necessary to give some description in my thesis about each of terms in equations.
__________________
Injustice Anywhere is a Threat for Justice Everywhere.Martin Luther King. To Be or Not To Be,Thats the Question! The Only Stupid Question Is the One that Goes Unasked. |
|
April 25, 2013, 03:01 |
|
#33 |
Senior Member
Ehsan
Join Date: Oct 2012
Location: Iran
Posts: 2,208
Rep Power: 27 |
ok.thank you.that would be nice.then i wait untill you come back.
and what does that expression argument in parenthesis in solve() function mean?is that for cases we have moving mesh? Code:
SEqn().solve(mesh.solver("S"));
__________________
Injustice Anywhere is a Threat for Justice Everywhere.Martin Luther King. To Be or Not To Be,Thats the Question! The Only Stupid Question Is the One that Goes Unasked. Last edited by immortality; April 25, 2013 at 08:27. |
|
April 25, 2013, 08:43 |
|
#34 |
Senior Member
Ehsan
Join Date: Oct 2012
Location: Iran
Posts: 2,208
Rep Power: 27 |
and also in rhoPimpleFoam solver below is the position of gasEquation.H suitable(several times it solves) or it is better to be after pimple.loop() to solve one time each time step?
Code:
int main(int argc, char *argv[]) { #include "setRootCase.H" #include "createTime.H" #include "createMesh.H" pimpleControl pimple(mesh); #include "createFields.H" #include "createFvOptions.H" #include "initContinuityErrs.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Info<< "\nStarting time loop\n" << endl; while (runTime.run()) { #include "readTimeControls.H" #include "compressibleCourantNo.H" #include "setDeltaT.H" runTime++; Info<< "Time = " << runTime.timeName() << nl << endl; if (pimple.nCorrPIMPLE() <= 1) { #include "rhoEqn.H" } // --- Pressure-velocity PIMPLE corrector loop while (pimple.loop()) { #include "UEqn.H" #include "EEqn.H" // --- Pressure corrector loop while (pimple.correct()) { #include "pEqn.H" } if (pimple.turbCorr()) { turbulence->correct(); } #include "gasEqn.H" } //Cp.write(); runTime.write(); Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s" << " ClockTime = " << runTime.elapsedClockTime() << " s" << nl << endl; } Info<< "End\n" << endl; return 0; }
__________________
Injustice Anywhere is a Threat for Justice Everywhere.Martin Luther King. To Be or Not To Be,Thats the Question! The Only Stupid Question Is the One that Goes Unasked. |
|
April 25, 2013, 11:12 |
|
#35 |
Senior Member
Ehsan
Join Date: Oct 2012
Location: Iran
Posts: 2,208
Rep Power: 27 |
hello again
excuse me for questions. I run the case but gas(scalar value) is not between 0 and 1 as the snapshot. how to resolve? thanks.
__________________
Injustice Anywhere is a Threat for Justice Everywhere.Martin Luther King. To Be or Not To Be,Thats the Question! The Only Stupid Question Is the One that Goes Unasked. |
|
April 25, 2013, 12:17 |
|
#36 | |
Super Moderator
Tobias Holzmann
Join Date: Oct 2010
Location: Bad Wörishofen
Posts: 2,711
Blog Entries: 6
Rep Power: 52 |
Quote:
http://www.cfd-online.com/Forums/ope...tml#post407482 |
||
April 25, 2013, 12:57 |
|
#37 |
Senior Member
Ehsan
Join Date: Oct 2012
Location: Iran
Posts: 2,208
Rep Power: 27 |
yes.at last i put the name gas in return of S.because air flowing in has a higher pressure and temperature than air in domain.shouln't it be between 0 and 1
__________________
Injustice Anywhere is a Threat for Justice Everywhere.Martin Luther King. To Be or Not To Be,Thats the Question! The Only Stupid Question Is the One that Goes Unasked. |
|
April 25, 2013, 13:32 |
|
#39 |
Senior Member
Ehsan
Join Date: Oct 2012
Location: Iran
Posts: 2,208
Rep Power: 27 |
i have set it 1 for inflow and 0 for initial condition as you told.
Maybe because my case is compressible a change should be done. The dimension is zero[0 0 0 0 0 0].is it correct?
__________________
Injustice Anywhere is a Threat for Justice Everywhere.Martin Luther King. To Be or Not To Be,Thats the Question! The Only Stupid Question Is the One that Goes Unasked. |
|
April 25, 2013, 14:41 |
|
#40 |
Super Moderator
Tobias Holzmann
Join Date: Oct 2010
Location: Bad Wörishofen
Posts: 2,711
Blog Entries: 6
Rep Power: 52 |
I am a bit confused couse the tutorial added in my git repo is not the one i build for that. Its the CO/H2/N2 mesh
well maybe I have time to resolve that mesh but first I reset my computer for Arch Linux |
|
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
air bubble is disappear increasing time using vof | xujjun | CFX | 9 | June 9, 2009 08:59 |
local age of air in starccm+ | Mike23 | Siemens | 3 | September 20, 2008 12:16 |
[Indoor Air Quality]How do I calcauate "Age of Air | Young | CFX | 6 | April 29, 2008 00:14 |
age of air | teddy | Siemens | 3 | February 9, 2007 10:41 |
Age of Air In Star-CD | Ted Crilly | Siemens | 1 | February 19, 2005 20:50 |