- **OpenFOAM Running, Solving & CFD**
(*https://www.cfd-online.com/Forums/openfoam-solving/*)

- - **Gradient operator implicit discretization**
(*https://www.cfd-online.com/Forums/openfoam-solving/59717-gradient-operator-implicit-discretization.html*)

In order to build a solver forIn 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? |

Yep, looks correct, should worYep, 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 |

ignore second & mesh.Sf()
ignore second & mesh.Sf()
P & M |

Implicit gradient operator:
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 |

The equation I need to discretThe 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)". |

Hrv, thanks, does make sense. 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 |

Ok thanks
so it seems it cOk thanks
so it seems it could not work. |

yes, it can
you can't have 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 |

Sorry but I did not get what JSorry but I did not get what Jasak was writing so I guessed it would not have worked.
Thank you again. |

Hi Diego,
I think that "s" 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 |

Hi
This might be a dumb queHi
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 |

Do you know CFX? They implemeDo 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 |

Thank you Hrv!
I guess thisThank 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 |

Quote:
Thanks |

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. |

All times are GMT -4. The time now is 19:02. |