
[Sponsors] 
November 29, 2006, 05:54 
In order to build a solver for

#1 
New Member
diego n.
Join Date: Mar 2009
Posts: 17
Rep Power: 7 
In order to build a solver for combustion I need to discretize the radiative transfer equation.
The RTE contains the term: s*grad(I) where I is a scalar and s a vector. My problem comes from the gradient operator for which is avaible only the explicit representation but I need an implicit form to solve for I. So I have thought to use some math and rewrite it in a form containg operator having an implicit discretization such as divergence: s*grad(I)=div(s*I)I*div(s) Should it work? 

November 29, 2006, 07:32 
Yep, looks correct, should wor

#2 
Senior Member
Markus Hartinger
Join Date: Mar 2009
Posts: 102
Rep Power: 7 
Yep, looks correct, should work.
surfaceScalarField sf = fvc::surfaceInterpolate(s)& mesh.Sf(); & mesh.Sf() s * grad(I) := fvm::div(sf, I)  fvm::Sp(fvc::div(fs), I); the 'Sp'  thing adds a coefficient to the diagonal of the implicit matrix. Taking this opportunity, why is there no implicit grad implementation? Anybody? pierre and markus 

November 29, 2006, 07:34 
ignore second & mesh.Sf()

#3 
Senior Member
Markus Hartinger
Join Date: Mar 2009
Posts: 102
Rep Power: 7 
ignore second & mesh.Sf()
P & M 

November 29, 2006, 07:50 
Implicit gradient operator:

#4 
Senior Member
Hrvoje Jasak
Join Date: Mar 2009
Location: London, England
Posts: 1,729
Rep Power: 20 
Implicit gradient operator:
 firstly, the diagonal would be zero.  secondly, the matrix coefficients would be vectors for a gradient and vectors transpose for a divergence  thirdly, you cannot solve the equation grad(thingy) = rhs beucase the diagonal of the gradient matrix equals zero for a uniform mesh Implicit gradient matrix makes sense only for implicit block coupled (e.g. pressure velocity) algorithms, and I'm pretty sure noone is quite there yet with OpenFOAM. Hrv
__________________
Hrvoje Jasak 

November 29, 2006, 08:54 
The equation I need to discret

#5 
New Member
diego n.
Join Date: Mar 2009
Posts: 17
Rep Power: 7 
The equation I need to discretize is not
s*grad(I)=div(s*I)I*div(s) but it contains the "s*grad(I)" that I have thought to sobstitute it with "div(s*I)I*div(s)". 

November 29, 2006, 09:24 
Hrv, thanks, does make sense.

#6 
Senior Member
Markus Hartinger
Join Date: Mar 2009
Posts: 102
Rep Power: 7 
Hrv, thanks, does make sense.
Diego, we decribed the implementation of "s*grad(I)" as "div(s*I)I*div(s)", which would be one of the terms for the matrix setup (:= means defined as) fvScalarMatrix yourEqn ( ... + fvm::div(sf, I)  fvm::Sp(fvc::div(fs), I) ... ); PM 

November 29, 2006, 09:35 
Ok thanks
so it seems it c

#7 
New Member
diego n.
Join Date: Mar 2009
Posts: 17
Rep Power: 7 
Ok thanks
so it seems it could not work. 

November 29, 2006, 09:48 
yes, it can
you can't have

#8 
Senior Member
Markus Hartinger
Join Date: Mar 2009
Posts: 102
Rep Power: 7 
yes, it can
you can't have the term "s*grad(I)" implicitly, but you can replace that with the term you suggested "div(s*I)I*div(s)", for which we gave the actual implementation. The "fvm::"prefix means in Foamspeak implicit. More precise, it is the "fvm" namespace in which all implicit functions for the Finite Volume Method (fvm) are defined. "fvc::" denotes "Finite Volume Calculus", all explicit stuff. So again, your reasoning is right, you can do it as you suggested. P & M 

November 29, 2006, 09:55 
Sorry but I did not get what J

#9 
New Member
diego n.
Join Date: Mar 2009
Posts: 17
Rep Power: 7 
Sorry but I did not get what Jasak was writing so I guessed it would not have worked.
Thank you again. 

December 27, 2006, 06:23 
Hi Diego,
I think that "s"

#10 
New Member
matteo cerutti
Join Date: Mar 2009
Location: Florence, Tuscany, Italy
Posts: 10
Rep Power: 7 
Hi Diego,
I think that "s" is a const vector, once u have decided the direction of the radiation... so div(s) must be equal to zero. So, I think u can write: s&grad(I) = div(sI) bye M 

May 2, 2007, 05:52 
Hi
This might be a dumb que

#11 
Member
Erik Arlemark
Join Date: Mar 2009
Location: Eindhoven, Netherlands
Posts: 47
Rep Power: 7 
Hi
This might be a dumb question but is this why the pressure is solved in a semidiscretised form of the momentum equation (A and H decompositions and solving through Jacobi metod) i.e. to find another way of implementing an implicit form of grad(p)? /Erik 

May 2, 2007, 05:58 
Do you know CFX? They impleme

#12 
Senior Member
Hrvoje Jasak
Join Date: Mar 2009
Location: London, England
Posts: 1,729
Rep Power: 20 
Do you know CFX? They implement a pressurebased block solver and they indeed have an implicit grad (and div!) to form a 2x2 block matrix system.
No such thing in OpenFOAM at the moment. Hrv
__________________
Hrvoje Jasak 

May 2, 2007, 06:22 
Thank you Hrv!
I guess this

#13 
Member
Erik Arlemark
Join Date: Mar 2009
Location: Eindhoven, Netherlands
Posts: 47
Rep Power: 7 
Thank you Hrv!
I guess this is the reason for the special treatment of grad(p) then. I dont know about CFX. I am fairly new to the field of CFD and keen on using and learning more about OpenFOAM. My problem is that I am trying to implement a different momentum equation involving gradients of density as well as the gradient of pressure. I would like to know how to formulate this in a similar manner to the one done in the PISOloop. Ive looked through your Ph.D and found some information on the subject but I would like to see some DOC (if available) on how to get the momentum equation in the semidiscretised form. Is such DOC available to your knowledge? regards /Erik 

Thread Tools  
Display Modes  


Similar Threads  
Thread  Thread Starter  Forum  Replies  Last Post 
FvPatchScalarField access operator  maka  OpenFOAM  3  July 1, 2008 08:32 
Implicit Formulation of Velocity Gradient  stefan82  OpenFOAM Running, Solving & CFD  1  August 9, 2007 11:09 
Operator Splitting.  Maria.  Main CFD Forum  5  September 17, 2005 22:10 
Operator precedence  hemph  OpenFOAM  1  September 13, 2005 12:40 
a math operator in UDF  lichun Dong  FLUENT  7  June 18, 2005 22:04 