|
[Sponsors] |
Gradient operator implicit discretization |
|
LinkBack | Thread Tools | Search this Thread | Display Modes |
November 29, 2006, 06:54 |
In order to build a solver for
|
#1 |
New Member
diego n.
Join Date: Mar 2009
Posts: 17
Rep Power: 17 |
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, 08:32 |
Yep, looks correct, should wor
|
#2 |
Senior Member
Markus Hartinger
Join Date: Mar 2009
Posts: 102
Rep Power: 17 |
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, 08:34 |
ignore second & mesh.Sf()
|
#3 |
Senior Member
Markus Hartinger
Join Date: Mar 2009
Posts: 102
Rep Power: 17 |
ignore second & mesh.Sf()
P & M |
|
November 29, 2006, 08:50 |
Implicit gradient operator:
|
#4 |
Senior Member
Hrvoje Jasak
Join Date: Mar 2009
Location: London, England
Posts: 1,907
Rep Power: 33 |
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 Providing commercial FOAM/OpenFOAM and CFD Consulting: http://wikki.co.uk |
|
November 29, 2006, 09:54 |
The equation I need to discret
|
#5 |
New Member
diego n.
Join Date: Mar 2009
Posts: 17
Rep Power: 17 |
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, 10:24 |
Hrv, thanks, does make sense.
|
#6 |
Senior Member
Markus Hartinger
Join Date: Mar 2009
Posts: 102
Rep Power: 17 |
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, 10:35 |
Ok thanks
so it seems it c
|
#7 |
New Member
diego n.
Join Date: Mar 2009
Posts: 17
Rep Power: 17 |
Ok thanks
so it seems it could not work. |
|
November 29, 2006, 10:48 |
yes, it can
you can't have
|
#8 |
Senior Member
Markus Hartinger
Join Date: Mar 2009
Posts: 102
Rep Power: 17 |
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 Foam-speak 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, 10:55 |
Sorry but I did not get what J
|
#9 |
New Member
diego n.
Join Date: Mar 2009
Posts: 17
Rep Power: 17 |
Sorry but I did not get what Jasak was writing so I guessed it would not have worked.
Thank you again. |
|
December 27, 2006, 07:23 |
Hi Diego,
I think that "s"
|
#10 |
New Member
matteo cerutti
Join Date: Mar 2009
Location: Florence, Tuscany, Italy
Posts: 10
Rep Power: 17 |
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, 06:52 |
Hi
This might be a dumb que
|
#11 |
Member
Erik Arlemark
Join Date: Mar 2009
Location: Eindhoven, Netherlands
Posts: 47
Rep Power: 17 |
Hi
This might be a dumb question but is this why the pressure is solved in a semi-discretised 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, 06:58 |
Do you know CFX? They impleme
|
#12 |
Senior Member
Hrvoje Jasak
Join Date: Mar 2009
Location: London, England
Posts: 1,907
Rep Power: 33 |
Do you know CFX? They implement a pressure-based 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 Providing commercial FOAM/OpenFOAM and CFD Consulting: http://wikki.co.uk |
|
May 2, 2007, 07:22 |
Thank you Hrv!
I guess this
|
#13 |
Member
Erik Arlemark
Join Date: Mar 2009
Location: Eindhoven, Netherlands
Posts: 47
Rep Power: 17 |
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 PISO-loop. 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 semi-discretised form. Is such DOC available to your knowledge? regards /Erik |
|
November 5, 2015, 04:51 |
|
#14 | |
New Member
Manuel do Nascimento
Join Date: May 2012
Posts: 14
Rep Power: 14 |
Quote:
Thanks |
||
October 9, 2017, 13:08 |
|
#15 |
New Member
Michael
Join Date: Feb 2015
Posts: 18
Rep Power: 11 |
Even if it has passed quite a few time since this post I'll answer anyway.
If you discretize your gradient with a finite Volume Method and sum the values over the faces of your control volume, the value at your control volume center cancels out for a regular grid. |
|
November 2, 2017, 05:50 |
|
#16 |
New Member
Roman G.
Join Date: Apr 2017
Posts: 16
Rep Power: 9 |
I came across the same problem after discretizing of the gradient of an scalar.
The gradient of a scalar is discretized as Where the lower f indicates the value of the scalar at the faces F represents the neighboring nodes For an weight of 0.5 So the gradient can be written as For a structured grid we can assume that the normal vector of one face must be the normal vector of another face just in the opposite direction We can see that in the discretized form the center point of the owner vanishes The obtained matrix wont have any diagonal elements. |
|
July 22, 2020, 06:59 |
|
#17 |
New Member
Markus Bösenhofer
Join Date: Mar 2016
Posts: 2
Rep Power: 0 |
I stumbled across this thread while searching for a way to discretize a somehow similar problem. I need to discretize the following term:
Rearranging the divergence term: gives results in the following discretization: The implementation of the first term of the RHS should be: Code:
fvm::div(phi,c) Code:
fvm::Sp(fvc::grad(c),phi) Has anybody of you an idea on how to correctly discretize RHS? |
|
February 25, 2022, 13:26 |
|
#18 |
New Member
Christian Ernst
Join Date: Oct 2021
Posts: 1
Rep Power: 0 |
Hello mboesi,
did you already solve your problem? I'm facing the same issue. With kind regards Christian |
|
February 27, 2022, 10:02 |
|
#19 |
Senior Member
Michael Alletto
Join Date: Jun 2018
Location: Bremen
Posts: 616
Rep Power: 16 |
Quote:
|
|
August 27, 2022, 11:44 |
|
#20 |
New Member
FengShawn
Join Date: Jul 2022
Location: USA
Posts: 1
Rep Power: 0 |
has anybody solved this problem?
Last edited by FengShawn; August 31, 2022 at 12:49. |
|
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
FvPatchScalarField access operator | maka | OpenFOAM | 3 | July 1, 2008 09:32 |
Implicit Formulation of Velocity Gradient | stefan82 | OpenFOAM Running, Solving & CFD | 1 | August 9, 2007 12:09 |
Operator Splitting. | Maria. | Main CFD Forum | 5 | September 17, 2005 23:10 |
Operator precedence | hemph | OpenFOAM | 1 | September 13, 2005 13:40 |
a math operator in UDF | lichun Dong | FLUENT | 7 | June 18, 2005 23:04 |