CFD Online Discussion Forums (http://www.cfd-online.com/Forums/)
-   OpenFOAM Programming & Development (http://www.cfd-online.com/Forums/openfoam-programming-development/)
-   -   fvc::reconstruct( ) algorithm (http://www.cfd-online.com/Forums/openfoam-programming-development/77943-fvc-reconstruct-algorithm.html)

 tetraeder July 8, 2010 04:36

fvc::reconstruct( ) algorithm

Hi Foamers,

I am trying to figure out how the fvc::reconstruct( ) algorithm works. My first thought was:
Sum up the facefluxes multiplied with the facenormal over a cell and divide it by the sum of the magnitude of the facevector components of every face of the cell.
The algorithm in the "fvcReconstruct.C" file seems far more complex then my thought:

inv(surfaceSum(sqr(mesh.Sf())/mesh.magSf()))
& surfaceSum((mesh.Sf()/mesh.magSf())*ssf)

The second line is what I expected, but the first line is a little mystery to me.
Can anybody explain this to my, please?

Rainer

 marupio July 8, 2010 09:31

Just a guess... it looks like it might be non-orthogonal correction...?

 kjmaki July 9, 2010 11:15

Rainer, I agree with your description. The first line finds one over the square of the components of the area. The second line has the the components of the area in the numerator, so the result is just one over the area times the sum of what ever you are reconstructing. This is what you want for a face-area-weighted average.

There is another post by Henry which is relevant here:

http://www.cfd-online.com/Forums/ope...integrate.html

Kevin

 sek March 16, 2011 13:27

I am also puzzled by what fvc:reconstruct does. Has anyone here figured what it does? It seems it is not based on any mathematical identity (like Gauss theorem), but some sort of approximation.

 thibault_pringuey January 16, 2012 13:06

fvc::reconstruct explaination

1 Attachment(s)
Hello,

I have had a look at the fvc::reconstruct method. Please find attached an attempt to explain it.

Cheers,

Thibault

 makaveli_lcf January 17, 2012 05:00

Thibault, excellent! Thank you for you work! Currently I am working on improving my model introducing a reconstruction for them... So hope to find some advantage on using it, will post some general conclusions.

 cheng1988sjtu August 27, 2014 13:56

Hi makaveli_lcf,

Did you find any advantage using fvc::reconstruct ?

In my experience, using fvc::reconstruct seems too dissipative? need to find out what cause the dissipation, maybe due to the face-weighted averaging ?

Just curious, did you find anything similar?

Quote:
 Originally Posted by makaveli_lcf (Post 339669) Thibault, excellent! Thank you for you work! Currently I am working on improving my model introducing a reconstruction for them... So hope to find some advantage on using it, will post some general conclusions.

 Navip July 22, 2015 23:41

Hi Cheng,

Did you figure out why renconstruct was too dissipative ?
I'm trying to reproduce an experiment with settlingFOAM everything work except that my system dissipate too much and then the velocities are not strong enough. reconstruct might be a start.

Thanks

 kmooney July 26, 2015 23:11

There could be several sources of numerical dissipation. To start make sure you have achieved mesh convergence and using 2nd order discretization.

Quote:
 Originally Posted by Navip (Post 556614) Hi Cheng, Did you figure out why renconstruct was too dissipative ? I'm trying to reproduce an experiment with settlingFOAM everything work except that my system dissipate too much and then the velocities are not strong enough. reconstruct might be a start. Thanks

 allett02015 September 22, 2015 05:37

I think that fvc::reconstruct is dissipative because it is first order accurate.

It assumes Sum_f n_f ( S_f * u_p) = Sum_f n_f ( S_f * u_f) which is accurate up to irst order.

I have another question:

What is the difference between the method used to reconstruct the velocity at the cell center from the face center used in fvc::reconstruct and simply calculating it by Sum_f 1/|S_f| phi_f n_f ?

 allett02015 October 27, 2015 06:33

I have to add that the fvc::reconstruct is second order accurate for orthogonal grids. It can be seen by a Taylorseries expansion of the face velocity, i.e., U_f = U_c + dU/dx_c delta x + ... and inserting it into the relation sum n_f (S_f * u_c) = sum n_f (S_f * u_f)

 All times are GMT -4. The time now is 05:52.