|
[Sponsors] |
![]() |
![]() |
#1 |
New Member
Join Date: Jul 2010
Posts: 3
Rep Power: 16 ![]() |
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 |
|
![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
David Gaden
Join Date: Apr 2009
Location: Winnipeg, Canada
Posts: 437
Rep Power: 22 ![]() |
Just a guess... it looks like it might be non-orthogonal correction...?
|
|
![]() |
![]() |
![]() |
![]() |
#3 |
Member
Kevin Maki
Join Date: Mar 2009
Location: Ann Arbor, MI, USA
Posts: 43
Rep Power: 17 ![]() |
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 |
|
![]() |
![]() |
![]() |
![]() |
#4 |
Member
Sung-Eun Kim
Join Date: Mar 2009
Posts: 76
Rep Power: 17 ![]() |
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.
|
|
![]() |
![]() |
![]() |
![]() |
#5 |
New Member
Thibault Pringuey
Join Date: Mar 2009
Posts: 17
Rep Power: 17 ![]() |
Hello,
I have had a look at the fvc::reconstruct method. Please find attached an attempt to explain it. Cheers, Thibault |
|
![]() |
![]() |
![]() |
![]() |
#6 |
Senior Member
|
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.
__________________
Best regards, Dr. Alexander VAKHRUSHEV Christian Doppler Laboratory for "Metallurgical Applications of Magnetohydrodynamics" Simulation and Modelling of Metallurgical Processes Department of Metallurgy University of Leoben http://smmp.unileoben.ac.at |
|
![]() |
![]() |
![]() |
![]() |
#7 |
Member
Charlie
Join Date: Dec 2010
Location: USA
Posts: 85
Rep Power: 15 ![]() |
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? |
|
![]() |
![]() |
![]() |
![]() |
#8 |
New Member
Xavier Pivan
Join Date: May 2015
Posts: 10
Rep Power: 11 ![]() |
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 |
|
![]() |
![]() |
![]() |
![]() |
#9 |
Senior Member
Kyle Mooney
Join Date: Jul 2009
Location: San Francisco, CA USA
Posts: 323
Rep Power: 18 ![]() |
There could be several sources of numerical dissipation. To start make sure you have achieved mesh convergence and using 2nd order discretization.
|
|
![]() |
![]() |
![]() |
![]() |
#10 |
New Member
Michael
Join Date: Feb 2015
Posts: 18
Rep Power: 11 ![]() |
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 ? |
|
![]() |
![]() |
![]() |
![]() |
#11 |
New Member
Michael
Join Date: Feb 2015
Posts: 18
Rep Power: 11 ![]() |
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)
|
|
![]() |
![]() |
![]() |
![]() |
#12 |
Senior Member
Dongyue Li
Join Date: Jun 2012
Location: Beijing, China
Posts: 844
Rep Power: 18 ![]() |
1. The fvc::reconstruct() function was used to smooth oscillation by combining usage of fvc::snGrad(). Typically you can write either 1) fvc::grad(p) or 2) fvc::reconstruct(fvc::snGrad(p)*mesh.magSf()). But the result is different. The first method uses a extended stencil whereas the second one employs a compact stencil. Thereafter the oscillation can be avoided by the second one (fvc::reconstruct method). Similar technique can be also found if you think why we discretize the laplacian term as fvc::laplacian() instead of div(grad()).
2. What it do is simply \sum U_p \cdot S_f = \sum phi, the reason you see there is because inv() function cannot handle velocity. 3. The order of it is influenced by the scheme of snGrad function. Therefore, orthogonal grids provide the best accuracy. ![]() ![]()
__________________
My OpenFOAM algorithm website: http://dyfluid.com By far the largest Chinese CFD-based forum: http://www.cfd-china.com/category/6/openfoam We provide lots of clusters to Chinese customers, and we are considering to do business overseas: http://dyfluid.com/DMCmodel.html |
|
![]() |
![]() |
![]() |
![]() |
#13 |
Senior Member
Tomislav Maric
Join Date: Mar 2009
Location: Darmstadt, Germany
Posts: 284
Blog Entries: 5
Rep Power: 21 ![]() |
The fvc::reconstruct is only second order accurate, if the field that is reconstructed is regular enough to be approximated by Taylor series up to second-order. For example, the velocity at the fluid interface is not regular enough, as it is only C^0 continuous at the fluid interface - it has a kink there - so Taylor series do not apply at the interface.
We checked fvc::reconstruct a bit in our latest paper on Level Set / Front Tracking, see section "3.4. Surface tension force reconstruction" in the linked PDF. The error estimate corresponds to the numerical error exactly for a smooth velocity field, and for the velocity field from the Hadamard-Rybczynsky flow, which confirms the estimate. fvc::reconstruct is used in flows with variable density to reconstruct things like the force term resulting from the decomposition pressure into the dynamic and hydrostatic part, or the cell-centered surface tension force source term, cell-centered velocity at the end of the internal iteration, etc. All these fields are not C^2 continuous in multiphase flows. arXiv version of the paper is here OpenFOAM tests for generating convergence data are here. The data from the paper is here.
__________________
When asking a question, prepare a SSCCE. |
|
![]() |
![]() |
![]() |
![]() |
#14 |
Senior Member
Santiago Marquez Damian
Join Date: Aug 2009
Location: Santa Fe, Santa Fe, Argentina
Posts: 452
Rep Power: 24 ![]() |
Hello, we discuss the foundation of fvc::reconstruct and other reconstruction techniques here,
https://www.sciencedirect.com/scienc...21999118301931 please let me now if someone needs a copy. Regards!
__________________
Santiago MÁRQUEZ DAMIÁN, Ph.D. Research Scientist Research Center for Computational Methods (CIMEC) - CONICET/UNL Tel: 54-342-4511594 Int. 7032 Colectora Ruta Nac. 168 / Paraje El Pozo (3000) Santa Fe - Argentina. http://www.cimec.org.ar |
|
![]() |
![]() |
![]() |
![]() |
#15 | |
Senior Member
Tomislav Maric
Join Date: Mar 2009
Location: Darmstadt, Germany
Posts: 284
Blog Entries: 5
Rep Power: 21 ![]() |
Quote:
Thanks, I wasn't aware of this paper!
__________________
When asking a question, prepare a SSCCE. |
||
![]() |
![]() |
![]() |
![]() |
#16 |
Senior Member
Santiago Marquez Damian
Join Date: Aug 2009
Location: Santa Fe, Santa Fe, Argentina
Posts: 452
Rep Power: 24 ![]() |
You're welcome. Big fan of your papers and work.
State of the art concerning "spurious currents" in interFOAM Regards!
__________________
Santiago MÁRQUEZ DAMIÁN, Ph.D. Research Scientist Research Center for Computational Methods (CIMEC) - CONICET/UNL Tel: 54-342-4511594 Int. 7032 Colectora Ruta Nac. 168 / Paraje El Pozo (3000) Santa Fe - Argentina. http://www.cimec.org.ar |
|
![]() |
![]() |
![]() |
![]() |
#17 |
Senior Member
Tomislav Maric
Join Date: Mar 2009
Location: Darmstadt, Germany
Posts: 284
Blog Entries: 5
Rep Power: 21 ![]() |
Thanks!
![]() ![]()
__________________
When asking a question, prepare a SSCCE. |
|
![]() |
![]() |
![]() |
![]() |
#18 |
New Member
behnamCheraghi
Join Date: Feb 2021
Posts: 14
Rep Power: 5 ![]() |
I think that the following link is very useful for understanding the fvc::reconstruct operation:
https://github.com/wyldckat/reconstr...te-fields/wiki |
|
![]() |
![]() |
![]() |
|
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
About Phase Coupled SIMPLE (PC-SIMPLE) algorithm | Yan Kai | Main CFD Forum | 0 | April 18, 2007 03:48 |
About Phase Coupled SIMPLE (PC-SIMPLE) algorithm | Yan Kai | FLUENT | 0 | April 13, 2007 23:17 |
mach-uniform algorithm for LES/DNS | ilyas | Main CFD Forum | 0 | February 22, 2007 10:53 |
LES algorithm | James Fluroe | Main CFD Forum | 2 | December 27, 2001 17:51 |
SIMPLE algorithm | Jonathan Castro | Main CFD Forum | 3 | December 10, 1999 04:59 |