CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > Software User Forums > OpenFOAM

Radiation Model

Register Blogs Members List Search Today's Posts Mark Forums Read

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   May 18, 2006, 08:25
Default Hi, I am trying to program a
  #1
julienh
Guest
 
Posts: n/a
Hi,
I am trying to program a radiation model using the Gibb's method (spherical harmonics)

I used the "reactingFoam" solver, where I had a file IEqn.H with the following radiation equation :

{

fvScalarMatrix IEqn

(

fvm::laplacian(I)
- (I/(4*boltzmannCoeff)
+ pow(T,4))*(12*pow(knu,2 *boltzmannCoeff)

==
m

);

IEqn.relax();

IEqn.solve();

thermo->correct();

}

where I is the radiativ intensity I wanted to get from this equation

After the compilation, when I execute reactingFoam, I get this message :


--> FOAM FATAL ERROR : gradientInternalCoeffs cannot be called for a calculatedFvPatchField.

You are probably trying to solve for a field with a calculated or default boundary conditions.

From function calculatedFvPatchField<type>::gradientInternalCoef fs() const in file fields/fvPatchFields/basicFvPatchFields/calculated/calculatedFvPatchField.H at line 174.


In order to solve the I equation, I need of course some boundary conditions. I though the file I in the "0" directory of the case with the initial and boundary conditions was enough but it is apparently not the case.

I try to see in the code an equation file like UEqn.H or hEqn.H but I did not see how the boundary equations are coded

Could somebody give me some advices please ?

Thank you in advance

Julienh
  Reply With Quote

Old   May 18, 2006, 09:26
Default Looks like one of the b.c.-s t
  #2
Senior Member
 
Hrvoje Jasak
Join Date: Mar 2009
Location: London, England
Posts: 1,907
Rep Power: 33
hjasak will become famous soon enough
Looks like one of the b.c.-s that you specify in 0/I is not correct or that the field I has been created by calculation rather then read in. Have a look at the place where I is created and pay attention to the MUST_READ and only a mesh argument after the IOobject. For example:

volScalarField I
(
IOobject
(
"I",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
),
mesh
);


Yours should look exactly the same.

Hrv
__________________
Hrvoje Jasak
Providing commercial FOAM/OpenFOAM and CFD Consulting: http://wikki.co.uk
hjasak is offline   Reply With Quote

Old   May 18, 2006, 11:13
Default Hi, Thank you for this quick
  #3
julienh
Guest
 
Posts: n/a
Hi,
Thank you for this quick answer. I have exactly the same thing for I in the creatField file.
I tried to change the boundary conditions but nothing work, I still have the same error about boundary conditions

Best regards

julienh
  Reply With Quote

Old   May 18, 2006, 17:55
Default Hi Julien, it can be a troubl
  #4
Member
 
Tommaso Lucchini
Join Date: Mar 2009
Posts: 87
Rep Power: 17
lucchini is on a distinguished road
Hi Julien,
it can be a trouble of field definition (or in the createFields or the 0 directory), or a trouble when you try to solve the equation.
Could you paste here how is defined I in the 0 directory? And how did you define it in the createFields?
What is m?
thanks. bye
Tommaso
lucchini is offline   Reply With Quote

Old   May 19, 2006, 08:24
Default Hi, I found the mistake, I h
  #5
julienh
Guest
 
Posts: n/a
Hi,
I found the mistake, I had a problem in the calculation of the emissivity, my code works quite well now and calculates the radiativ energy field.

I will now try to couple this equation with the basic thermal equation because the convective part of the energy flow emitted by a flame has a direct influence on the radiativ part.

But I have difficulties to find where the thermal equation is coded. Does somebody know ?

Best regards

julienh
  Reply With Quote

Old   May 23, 2006, 05:28
Default Usually hEqn.H
  #6
Senior Member
 
Mattijs Janssens
Join Date: Mar 2009
Posts: 1,419
Rep Power: 26
mattijs is on a distinguished road
Usually hEqn.H
mattijs is offline   Reply With Quote

Old   June 22, 2006, 07:51
Default As you have it coded, I believ
  #7
Senior Member
 
Michael Prinkey
Join Date: Mar 2009
Location: Pittsburgh PA
Posts: 363
Rep Power: 25
mprinkey will become famous soon enough
As you have it coded, I believe the (I/(4*boltzmannCoeff)) term is being treated as an explicit source term and ending up on the RHS. I think what you want to do is use fvm::Sp() to linearize that term and place it on the center coefficient instead. That should improve solution stability.
mprinkey is offline   Reply With Quote

Old   June 23, 2006, 04:57
Default Hello, Thank you for this
  #8
julienh
Guest
 
Posts: n/a
Hello,

Thank you for this quick answer.

I tried to do it with fvm::Sp() but it did not work. But I found one of my mistakes. The maxDeltaT was to large to satisfy the convergence criteria. Now it works but my model uses a fixed value of the optical thickness L and now I want my model to calculate L for each cell with the formula L = (2/3)*(volume of the cell)^(1/3)

I coded : volScalarField L = (2/3)*pow (mesh.V(), (1/3)) but it did not work.

Could somebody help me please ?

Thank you in advance

Best regards

Julienh
  Reply With Quote

Old   June 23, 2006, 05:09
Default Try volScalarField L = (2.
  #9
Senior Member
 
Eugene de Villiers
Join Date: Mar 2009
Posts: 725
Rep Power: 21
eugene is on a distinguished road
Try

volScalarField L = (2.0/3.0)*Foam::pow(mesh.V(), (1.0/3.0));

If you do this
a = (1/3)
a = 0

Because you are doing integer division.
eugene is offline   Reply With Quote

Old   June 23, 2006, 09:46
Default Thank you very much ! It works
  #10
julienh
Guest
 
Posts: n/a
Thank you very much ! It works like this.

So my very simplified radiation model enables me to calculate the radiation flux I inside my combustion chamber. But to do it, I put boundary conditions for I in the 0 file like fixedValue or zeroGradient. However, the goal of my work is to calculate the field I on the wall of a furnace. The idea is to modify the wallHeatFlux file to add the radiatif flux to the convectif flux. But to do that, instead a BC like zeroGradient for I, I need to put a BC (I0) which is the solution of a new equation :

(emissivityWall/4)*I0 - boltzmannCoeff*emissivityWall*Twall^4=(1/(3*a))*grad(I(0))

Am I obliged to create a new BC class to do that or is there a other way to do it ?

Can somebody give me some advice please ?

Thank you in advance

Best regards

JulienH
  Reply With Quote

Old   June 27, 2006, 04:36
Default Hello, So, I can calculate th
  #11
julienh
Guest
 
Posts: n/a
Hello,
So, I can calculate the radiation flux within the furnace if I put existing boundary conditions like zeroGradient. But I need to put a calculated value for the boundary condition Iwall of field I. The code calculates Iwall but now I want to put Iwall as a boundary condition for I. So, I think I must code a new BC class. This class must just enable me to fill the /0 field for I like this :

internalField uniform 25000;

boundayField
{
walls
{
type boundaryConditionsforI;
value Iwall;
}
}

It is perhaps easy to do that butI am not a very good programmer.

Could somebody give me some advise to program my own bounday conditions class please ?

Thank you in advance

Julien Heintz
  Reply With Quote

Old   June 28, 2006, 11:16
Default Hello, Finally, I think I do
  #12
julienh
Guest
 
Posts: n/a
Hello,
Finally, I think I do not need to do my own boundary condition class for the field I so I tried to do it differently : here the code I had to my radiation solver in order to calculate the boundary field Iwall :

Info<< "\nCreate new boundary condition\n" << endl;


label inletPatchID = mesh.boundaryMesh().findPatchID("walls");

fvPatchScalarField& Iwall = I.boundaryField()[inletPatchID];

forAll(Iwall, faceI)
{

surfaceScalarField Iwall((0.6/epsilonWall)*fvc::snGrad(I) + 4*5.67e-8*pow(Tparoi,4));

I.boundaryField()[faceI] = Iwall;
}

I.write();

Info<< "\n ExecutionTime = " << runTime.elapsedCpuTime() << " s\n" << endl;

}


but it doesn't work. The field I is calculated but the boundary values of I remain constant, equal to the value I put in the 0/I file.

What am I doing wrong ?


Thank you in advance

julienh
  Reply With Quote

Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Radiation P1 Model with Spectral Model: Multigray A. Thellmann CFX 0 October 25, 2008 13:44
Radiation Model - Spectral Model Ray CFX 3 April 10, 2006 10:33
Help: Radiation model MANOJKUMAR FLUENT 4 November 24, 2005 03:45
How to use radiation model with porous model? jacky CFX 0 December 17, 2002 23:51
DO model for RADIATION Davide FLUENT 0 October 21, 2001 04:13


All times are GMT -4. The time now is 13:16.