# Prossible wrong in the LimitedScheme.C ?

 User Name Remember Me Password
 Register Blogs Members List Search Today's Posts Mark Forums Read

 August 24, 2009, 01:38 Prossible wrong in the LimitedScheme.C ? #1 New Member   Liu Huafei Join Date: Mar 2009 Location: Shanghai, China Posts: 20 Rep Power: 8 Prossible wrong in the LimitedScheme.C In LimitedScheme.C template class LimitFunc> tmp LimitedScheme::limiter ( const GeometricField& phi ) const { ..... for internal faces ................. forAll(pLim, face) { label own = owner[face]; label nei = neighbour[face]; pLim[face] = Limiter::limiter ( CDweights[face], this->faceFlux_[face], lPhi[own], lPhi[nei], gradc[own], gradc[nei], C[nei] - C[own] ); } question 1: why the distance vector is C[nei]-C[own], no correction for the nonorthgonal grid? -----------for the boundary---------------------- GeometricField gradc(fvc::grad(lPhi)); forAll(bLim, patchi) { scalarField& pLim = bLim[patchi]; if (bLim[patchi].coupled()) { Field plPhiN = lPhi.boundaryField()[patchi].patchNeighbourField(); Field pGradcN = gradc.boundaryField()[patchi].patchNeighbourField(); // Build the d-vectors vectorField pd = mesh.Sf().boundaryField()[patchi] /( mesh.magSf().boundaryField()[patchi] *mesh.deltaCoeffs().boundaryField()[patchi] ); if (!mesh.orthogonal()) { pd -= mesh.correctionVectors().boundaryField()[patchi] /mesh.deltaCoeffs().boundaryField()[patchi]; } forAll(pLim, face) { pLim[face] = Limiter::limiter ( pCDweights[face], pFaceFlux[face], plPhiP[face], plPhiN[face], pGradcP[face], pGradcN[face], pd[face] ); } } else { pLim = 1.0; } } question 2: The pGradcN[face] is neighbour cell's gradient. For the coupled boundary, for examples,the neighbour cell is virtual N',not the real cell? The virtual N' is got by rotated by N? How can we get the gradient of N'? The gradient of N' is equal to that of N?

 August 24, 2009, 19:53 #2 New Member   Liu Huafei Join Date: Mar 2009 Location: Shanghai, China Posts: 20 Rep Power: 8 For example For the cycle boundary,We have a pair of cell, P and N. We need rotate the N to N' by transformation. On calculation of the limiter function,we need the gradient of N' cell. How can we get it. The gradient function of openFoam doesn't treat the coupled boundary. But the gradient of N' is equal to that of N? We need the transformation of the gradient of N to get the gradient of N' like other vector variable? template void gaussGrad::correctBoundaryConditions ( const GeometricField& vsf, GeometricField ::type, fvPatchField, volMesh >& gGrad){ forAll(vsf.boundaryField(), patchi) { if (!vsf.boundaryField()[patchi].coupled()) { vectorField n = vsf.mesh().Sf().boundaryField()[patchi] /vsf.mesh().magSf().boundaryField()[patchi]; gGrad.boundaryField()[patchi] += n * ( vsf.boundaryField()[patchi].snGrad() - (n & gGrad.boundaryField()[patchi]) ); } } }

 August 24, 2009, 19:54 #3 New Member   Liu Huafei Join Date: Mar 2009 Location: Shanghai, China Posts: 20 Rep Power: 8

August 24, 2009, 19:56
#4
New Member

Liu Huafei
Join Date: Mar 2009
Location: Shanghai, China
Posts: 20
Rep Power: 8
Quote:
 [IMG]file:///c:/Clip_12.jpg[/IMG]
the figure of cycle boundary

 July 22, 2014, 06:41 #5 Member   Yogesh Bapat Join Date: Oct 2010 Posts: 41 Rep Power: 6 Hello Liu, This is very old post from you, but if you can tell if gradients near cyclic AMI boundaries are calculated correctly?

July 23, 2014, 05:05
#6
Senior Member

Tushar Chourushi
Join Date: Jul 2009
Location: IIT-Indore, India
Posts: 318
Blog Entries: 1
Rep Power: 9
Quote:
 Originally Posted by liuhuafei Prossible wrong in the LimitedScheme.C In LimitedScheme.C template class LimitFunc> tmp LimitedScheme::limiter ( const GeometricField& phi ) const { ..... for internal faces ................. forAll(pLim, face) { label own = owner[face]; label nei = neighbour[face]; pLim[face] = Limiter::limiter ( CDweights[face], this->faceFlux_[face], lPhi[own], lPhi[nei], gradc[own], gradc[nei], C[nei] - C[own] ); } question 1: why the distance vector is C[nei]-C[own], no correction for the nonorthgonal grid? -----------for the boundary---------------------- GeometricField gradc(fvc::grad(lPhi)); forAll(bLim, patchi) { scalarField& pLim = bLim[patchi]; if (bLim[patchi].coupled()) { Field plPhiN = lPhi.boundaryField()[patchi].patchNeighbourField(); Field pGradcN = gradc.boundaryField()[patchi].patchNeighbourField(); // Build the d-vectors vectorField pd = mesh.Sf().boundaryField()[patchi] /( mesh.magSf().boundaryField()[patchi] *mesh.deltaCoeffs().boundaryField()[patchi] ); if (!mesh.orthogonal()) { pd -= mesh.correctionVectors().boundaryField()[patchi] /mesh.deltaCoeffs().boundaryField()[patchi]; } forAll(pLim, face) { pLim[face] = Limiter::limiter ( pCDweights[face], pFaceFlux[face], plPhiP[face], plPhiN[face], pGradcP[face], pGradcN[face], pd[face] ); } } else { pLim = 1.0; } } question 2: The pGradcN[face] is neighbour cell's gradient. For the coupled boundary, for examples,the neighbour cell is virtual N',not the real cell? The virtual N' is got by rotated by N? How can we get the gradient of N'? The gradient of N' is equal to that of N?

......

LimitedScheme is actually correct, Prof. H. Jasak used different technique.

Have you seen Prof. H. Jasak PhD thesis?

It is recommended to check his explanation for these face variable calculation. You will get answer to all your queries.

In your case may be this boundary condition could be problematic but not Limitedscheme.

Anyways..
-
Best Luck!

 July 23, 2014, 05:46 #7 Member   Yogesh Bapat Join Date: Oct 2010 Posts: 41 Rep Power: 6 Hello Tushar, Can you please elaborate which section in thesis you are talking about? Are you talking about interpolation schemes? To give you more background on my question, I am trying pressure jump BC(This is derived from cyclicAMI). I am not able to converge simulation if I do not use faceLimited gradients. Moment I switch on cellLimited gradient simulation diverges,. Even with faceLimited if I change form "faceLimited Gauss linear 1.0" to "faceLimited Gauss linear 0.99" simulation diverges. Regards, -Yogesh

 July 23, 2014, 06:55 #8 Senior Member   Tushar Chourushi Join Date: Jul 2009 Location: IIT-Indore, India Posts: 318 Blog Entries: 1 Rep Power: 9 Hello Yogesh, I don't understand why you are writing your problem case to me. I answered the previous post of "liuhuafei", as he specifically pointed "Possible wrong in the LimitedScheme.C ?". I clarified that post as there isn't any mistake with the code. (reference for same can be understood by reading the PhD thesis of Prof. H. Jasak) About your case, you didn't mention any detail so it's hard to guess how come your case failed. - Best Luck!

 July 23, 2014, 07:08 #9 Member   Yogesh Bapat Join Date: Oct 2010 Posts: 41 Rep Power: 6 Hello Tushar, I thought you are replying to my post, as liuhuafei's post is very old. -Yogesh

 July 23, 2014, 07:22 #10 Senior Member   Tushar Chourushi Join Date: Jul 2009 Location: IIT-Indore, India Posts: 318 Blog Entries: 1 Rep Power: 9 Hello Yogesh, If you wish to share your problem case then you can post here. I will try to see if I can help you. - Best Regards!

 Thread Tools Display Modes Linear Mode

 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 OffTrackbacks are On Pingbacks are On Refbacks are On Forum Rules

 Similar Threads Thread Thread Starter Forum Replies Last Post Neo FLUENT 1 March 31, 2013 15:00 Manoj Kumar FLUENT 1 August 11, 2012 04:03 srihari FLUENT 0 February 9, 2009 10:00 Harry Qiu FLUENT 1 June 29, 2001 05:53 olivia FLUENT 1 June 23, 2001 17:06

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

 Contact Us - CFD Online - Top