CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > General Forums > Main CFD Forum

How to compute gradient for non-orthogonal grids?

Register Blogs Community New Posts Updated Threads Search

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
Old   November 7, 2003, 15:50
Default How to compute gradient for non-orthogonal grids?
  #1
Paul Hsieh
Guest
 
Posts: n/a
HI,

I am reading the CFD book written by Peric (2nd edition). I am confused about calculating gradient of a scalar function when dealing with body-fitted, non-orthogonal grid. Especially, when reading the code that he placed on the internet. This is the piece of code that calculates gradient, it will be highly appreciate if anyone can descibe in "plain english" how the gradient is calculated.

Paul PS: Peric has this code available for download on the internet. I hope that it is OK to put this small piece of code here. -------------------------

FI: scalar function DFX: gradient, X-component DFY: gradient, Y-component FAC: ratio: (cell center to cell face)/(cell center at P to cell center to it's neighbor E) -- Pe/PE IJP: node P IJN: neighbor node E (east side) IJ1: node P IJ2: neight node S (south side) C################################################# ##############

SUBROUTINE GRADCO(FI,DFX,DFY,FAC,IJP,IJN,IJ1,IJ2) C################################################# ############## C This routine calculates contribution to the gradient C vector of a scalar FI at the CV center, arising from C an inner cell face (cell-face value of FI times the C corresponding component of the surface vector). C================================================= ==============C C.....COORDINATES OF POINT ON THE LINE CONNECTING CENTER AND NEIGHBOR, C OLD GRADIENT VECTOR COMPONENTS INTERPOLATED FOR THIS LOCATION C

FACP=1.-FAC

XI=XC(IJN)*FAC+XC(IJP)*FACP

YI=YC(IJN)*FAC+YC(IJP)*FACP

DFXI=DFXO(IJN)*FAC+DFXO(IJP)*FACP

DFYI=DFYO(IJN)*FAC+DFYO(IJP)*FACP C C.....COORDINATES OF THE CELL-FACE CENTER, VARIABLE VALUE THERE C

XF=0.5*(X(IJ1)+X(IJ2))

YF=0.5*(Y(IJ1)+Y(IJ2))

FIE=FI(IJN)*FAC+FI(IJP)*FACP+DFXI*(XF-XI)+DFYI*(YF-YI) C C.....SURFACE VECTOR COMPONENTS, GRADIENT CONTRIBUTION FROM CELL FACE C

RE=(R(IJ1)+R(IJ2))*0.5

SX=(Y(IJ1)-Y(IJ2))*RE

SY=(X(IJ2)-X(IJ1))*RE

DFXE=FIE*SX

DFYE=FIE*SY C C.....ACCUMULATE CONTRIBUTION AT CELL CENTER AND NEIGHBOR C

DFX(IJP)=DFX(IJP)+DFXE

DFY(IJP)=DFY(IJP)+DFYE

DFX(IJN)=DFX(IJN)-DFXE

DFY(IJN)=DFY(IJN)-DFYE C

RETURN

END C

  Reply With Quote

Old   November 9, 2003, 08:08
Default Re: How to compute gradient for non-orthogonal gri
  #2
versi
Guest
 
Posts: n/a
The gradient of a function F at cell center is calculated by Gauss Theorem. \int_Vol{ gadient F dV} == \int_S { F * n_j * dS_j}.

  Reply With Quote

Old   November 9, 2003, 17:22
Default Re: How to compute gradient for non-orthogonal gri
  #3
Paul
Guest
 
Posts: n/a
Hi,

Thanks for the reply. Yes, but, what confuses me is the "correction" due to non-orthogonality. In Peric's book, it mentioned using gradient at previous step when calculating the correction. But, in his code, it looks like it only used gradient at previous step when calculating Fi (function in interests) at e (not E).

Paul
  Reply With Quote

Old   November 11, 2003, 04:52
Default Re: How to compute gradient for non-orthogonal gri
  #4
Onno
Guest
 
Posts: n/a
When dealing with the diffusion term you need the gradient of a property dotted with the face area vector (the dot product between the gradient and the face area vector). Thus "in English", you need the gradient of the property in the direction of the face area vector. On an orthogonal mesh the face area vector points in the direction of the line connection the centres of the two cells bracketing a face. The gradient of your property is simply the difference of the two centre values divided by the distance between the two cell centres.

In the case of the non-orthogonal meshes the face area vector (say A) is decomposed into two vectors, one parallel to the line connection the two cell centres (say D), and the other (say k) such that A=D+k.

The gradient of your property is now multiplied to D + k instead. The portion in the direction of the neighbouring cell centre is similar to the orthogonal mesh case. The non-orthogonal contribution (gradient of the property times k) is treated somewhat differently. This is your question. Versi mentioned the formula for calculating the gradient of your property at a cell centre. Use the formulation for the two cell centres bracketing the face and interpolate this value to the face centre and get the dot product with your vector k. You do this with old iteration level values (as mentioned in your follow up question). Thus the contribution of non-orthogonality is treated "explicitly" and slightly lagged in "time". By the time you have convergence, the values does not change and it does not matter whether you used old or new values. However, the process to convergence might be a tedious one with more under-relaxation. This is the price you pay for grid non-orthogonality.

  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
How to compute the gradient of a scalar as a post-processing ayoros OpenFOAM Post-Processing 16 March 21, 2018 06:02
Pressure Gradient discretisation in MAC curvilinear grids Jodo Main CFD Forum 0 July 12, 2010 05:20
How to compute UDS fourth order gradient Emma66 FLUENT 1 April 27, 2010 05:44
Gradient of Scalar calculation in 3D BFCskew grids james T Phoenics 0 March 28, 2007 07:12
N-S non orthogonal grids Harish Main CFD Forum 4 November 18, 2005 01:05


All times are GMT -4. The time now is 14:54.