# rhoCentralFoam: Diffusion correction scheme?

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

May 30, 2016, 17:35
rhoCentralFoam: Diffusion correction scheme?
#1
Member

W. Schuyler Hinman
Join Date: Apr 2013
Posts: 38
Rep Power: 12
Can someone please direct me to a good literature resource on diffusion correction predictor corrector scheme? I am having difficulty with understanding the one implemented in rhoCentralFoam.

I am doing extensive analysis using OpenFOAM, and rhoCentralFOAM in my research. Some of this analysis requires post-processing the transport equations themselves (the details of why are not important for my inquiry). This means regenerating the equations used by the solver. I am having some trouble understanding the implementation.

When I compare the corrector equation (below) to the equation from Greenshields:

Quote:
 solve ( fvm::ddt(rho, U) - fvc::ddt(rho, U) - fvm::laplacian(muEff, U) - fvc::div(tauMC) );
I can't see how this matches the actual equation. In the Greenshields paper ((Link to paper), Equation 19 does not indicate to me a need for both the implicit AND explicit ddt(rho,U) terms.

Similarly in the energy equation, both an implicit and explicit term are included.

Some explanation from those wiser than I would be hugely appreciated.

Schuyler

 November 18, 2016, 23:41 #2 Senior Member   Join Date: Sep 2015 Location: Singapore Posts: 102 Rep Power: 9 Hi there, The 'fvc::ddt(rho,U)' implicit term is the remnant of the predictor step. This is how I understand it. The predictor step solves for: Code: fvm::ddt(rhoU) + fvc::div(phiUp) == 0 So, the results from this step correspond to the following with an updated U from the predictor step: Code: - fvc::ddt(rho*U) = fvc::div(phiUp) Now, they are reintroducing the flux term 'fvc::div(phiUp)' through an updated '- fvc::ddt(rho*U)'. So, when you combine the predictor and corrector steps, you get the correct equation, which should be the case. Please correct me if I'm wrong, though. USV

 November 19, 2016, 12:58 #3 Member   W. Schuyler Hinman Join Date: Apr 2013 Location: Calgary, Alberta, Canada Posts: 38 Rep Power: 12 Completely forgot about this post! Thanks for the reply! Yeah I figured this out while studying for my PhD candidacy exam. The predictor is: Code: solve(fvm::ddt(rhoU) + fvc::div(phiUp)); (viscous term omitted) Then the corrector is: Code: solve ( fvm::ddt(rho, U) - fvc::ddt(rho, U) - fvm::laplacian(muEff, U) - fvc::div(tauMC) ); The corrector equation is the complete momentum equation. But instead of calculating the flux and the pressure gradient explicitly, they calculate: -fvc::ddt(rho, U) - fvm::laplacian(muEff, U) which is equivalent to div(phiUp) - using the predicted velocity field. Therefore the Navier-Stokes are recovered. Schuyler

 November 19, 2016, 21:22 #4 Senior Member   Join Date: Sep 2015 Location: Singapore Posts: 102 Rep Power: 9 No problem. Do you happen to know why they include the viscous term sigmaDotU in the predictor step of the energy equation? Isn't this supposed to be the inviscid predictor step? I am not able yo reconcile the fact that they are interpolating the U in this term using: Code: a_pos*U_pos + a_neg*U_neg where a_pos and a_neg are calculated based on the eigenvalues of the Euler equations (U+c, U-c). I was able to follow the calculation of phi, phiUp and phiEp as the implementation of the Kurganov flux scheme but this little piece above threw me off. I think I'm missing something important here. USV

November 20, 2016, 18:57
#5
Member

W. Schuyler Hinman
Join Date: Apr 2013
Posts: 38
Rep Power: 12
Quote:
 Originally Posted by usv001 No problem. Do you happen to know why they include the viscous term sigmaDotU in the predictor step of the energy equation? Isn't this supposed to be the inviscid predictor step? I am not able yo reconcile the fact that they are interpolating the U in this term using: Code: a_pos*U_pos + a_neg*U_neg where a_pos and a_neg are calculated based on the eigenvalues of the Euler equations (U+c, U-c). I was able to follow the calculation of phi, phiUp and phiEp as the implementation of the Kurganov flux scheme but this little piece above threw me off. I think I'm missing something important here. USV
Good question. I think it is because it is a "diffusion correction scheme". The sigmadotU term (while it is a viscous term) is not a diffusive term in the energy equation it's a work term.

I'm not sure if I totally understand the other part of the question... but the a_pos and a_neg are the flux weighting factors calculated by Equation 9 in the rhoCentralFoam paper (linked in my original post).

Schuyler

 November 22, 2016, 04:05 #6 Senior Member   Join Date: Sep 2015 Location: Singapore Posts: 102 Rep Power: 9 Thanks Schuyler. This has given me a new way of thinking about it. USV

 Tags code, ddt, ddtscheme, predictor corrector, rhocentralfoam