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

Understanding fvm::Sp()

Register Blogs Community New Posts Updated Threads Search

Like Tree35Likes
  • 1 Post By Hyu
  • 34 Post By Simon Lapointe

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   May 22, 2010, 07:17
Default Understanding fvm::Sp()
  #1
Hyu
New Member
 
Join Date: May 2010
Posts: 2
Rep Power: 0
Hyu is on a distinguished road
I was reading the code for the LaunderSharmaKE model (incompressible), then I ran into this:

Code:
  tmp<fvScalarMatrix> epsEqn
    (
        fvm::ddt(epsilonTilda_)
      + fvm::div(phi_, epsilonTilda_)
      - fvm::laplacian(DepsilonEff(), epsilonTilda_)
     ==
        C1_*G*epsilonTilda_/k_
      - fvm::Sp(C2_*f2()*epsilonTilda_/k_, epsilonTilda_)
      + E
    );
I have a question: Why is one term represented with fvm::Sp() and the others (though pretty similar) are not?
Kummi likes this.
Hyu is offline   Reply With Quote

Old   May 22, 2010, 07:43
Default
  #2
Member
 
Simon Lapointe
Join Date: May 2009
Location: Québec, Qc, Canada
Posts: 33
Rep Power: 17
Simon Lapointe is on a distinguished road
fvm::Sp makes the source term implicit so it contributes to the diagonal. This can help convergence when the source term is negative on the rhs (sink term). This is the case in the equation you've shown.

The two other source terms are positive on the rhs and therefore left explicit. Making them implicit would reduce the diagonal dominance of the matrix and probably cause problems to the solver.

Hope this helps
Elham, Bufacchi, D.R. and 31 others like this.
Simon Lapointe is offline   Reply With Quote

Old   May 22, 2010, 09:38
Default
  #3
Hyu
New Member
 
Join Date: May 2010
Posts: 2
Rep Power: 0
Hyu is on a distinguished road
Thank you for your fast and complete answer. That is wat I wanted to know.
Hyu is offline   Reply With Quote

Old   May 26, 2010, 10:21
Default
  #4
Member
 
Costas K
Join Date: Nov 2009
Location: UK
Posts: 51
Rep Power: 17
thekay is on a distinguished road
Send a message via ICQ to thekay Send a message via MSN to thekay
On the basis of the above explanation, is it advised to have the pressure on the right hand side of the equation to solve, in an expression that is treated implicitly, or the opposite? For instance the hEqn.H of buoyantSimpleFoam, has pressure under fvc:
Code:
fvm::div(phi, h)
      - fvm::Sp(fvc::div(phi), h)
      - fvm::laplacian(turbulence->alphaEff(), h)
     ==
        fvc::div(phi/fvc::interpolate(rho)*fvc::interpolate(p))
      - p*fvc::div(phi/fvc::interpolate(rho))
thekay is offline   Reply With Quote

Old   February 9, 2016, 13:44
Default Question about the source term
  #5
Member
 
Saurabh Tandon
Join Date: Nov 2015
Location: Austin
Posts: 43
Rep Power: 11
STutexas is on a distinguished road
Hi
I have another question about the fvm::Sp() term in the equation. If you this source term in any equation:

fvm::Sp(C2, u), where u is velocity, can C2 be a tensor or a tensor field?

If not, can anyone suggest how to code an-isotropic, hetorgeneous term in the equation.

Thank you.
STutexas is offline   Reply With Quote

Old   July 26, 2016, 00:11
Default I am having the same problem
  #6
New Member
 
Mateus Palharini Schwalbert
Join Date: May 2011
Posts: 22
Rep Power: 15
mateusps is on a distinguished road
Hello,

I have the same doubt as STutexas: how to code an anisotropic, heterogeneous term in the source term in the momentum equation.

I see the fvm::Sp(tensor,vector) does not work. I took a look at the porousSimpleFoam code, which does this in adding the porous resistance term. But porousSimpleFoam code deals with this in a different manner, through adding an addResistance function, which I don't quite understand (I'm new here).

Any ideas on how to code an anisotropic, heterogeneous term in the source term in the momentum equation?

Did you solve this problem, STutexas?
mateusps is offline   Reply With Quote

Old   July 26, 2016, 02:09
Default
  #7
Member
 
Saurabh Tandon
Join Date: Nov 2015
Location: Austin
Posts: 43
Rep Power: 11
STutexas is on a distinguished road
Hi Mateus

It seems that fvm::Sp() can only take in vectors and not tensors. Defining a tensor does not work .
I tried the following approach: Use fvc::Sp() and define your term as constant source term in the RHS of the vector equation. Then iterate over the equation several times until the values converge.

I hope it helps. Let me know if you come up with another method to solve this.

Thank you.
STutexas is offline   Reply With Quote

Reply


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
Problem understanding rhoPisoFoam MatP OpenFOAM Running, Solving & CFD 1 May 15, 2010 14:21
Help using an understanding y+ siw CFX 4 October 4, 2009 11:23
Understanding of channelOodles and oodles solver fs82 OpenFOAM 1 September 23, 2009 11:36
understanding dual-time stepping srinath Main CFD Forum 1 August 11, 2008 12:05
Help understanding Memory Allocation Factor Todd CFX 1 March 6, 2008 14:27


All times are GMT -4. The time now is 10:37.