Airfoil boundary condition
Hi Guys, I've been working on some finite difference codes recently to solve the flow around an airfoil. I have a code that works and have been trying to improve the accuracy of the solution. To begin with I'm solving transonic flow around a symmetrical airfoil (parabolic arc) with no angle of attack.
The flow is 2D and inviscid so my airfoil boundary condition is that of tangential flow, i.e. the airfoil surface must be a streamline of the flow. For the purpose of this discussion the equation can be written as:
D(x) + phi_yy = 0
where D(x) is a finite difference operator that deals only with the x-derivatives. This is one step of an ADI scheme; the step I'm considering now is the x-sweep where the solution 'phi' is determined along a row of the domain. The phi_yy term represents the second derivative of phi with respect to y. The D(x) term is not a problem but I'm having some confusion over which operator to use for phi_yy.
The original code locates the airfoil between two rows of gridlines. Central differencing is used for phi_yy: ph_yy(i,j)=(phi(i,j+1)-2*phi(i,j)+phi(i,j-1))/dy^2 for every node apart from those adjacent to the airfoil. Near the airfoil the tangential flow condition must be included into the phi_yy operator and for the node j=f (immediately above the airfoil) I use
phi_yy(i,f)=[phi(i,f+1)-phi(i,f)) - phi_y(upper surface)]/dy
I know the slope of the airfoil surface and so this boundary condition allows the airfoil to influence the flow around it. This boundary condition is only first order accurate. In order to determine phi on the actual airfoil surfaces I interpolate from above(below) to find phi on upper(lower) surfaces.
Recently I upgraded the code and included a line of nodes on the upper and lower airfoil surfaces. I am solving exactly the same equations as before and am using the same grid spacing (although the grid now contains two rows), the phi_yy operator is replaced with a second order version. In what follows I'm using u to indicate nodes on the upper surface.
phi_yy(i,u)=A*(phi(I,u+2)-phi(I,u+1)) + B(phi(I,u+1)-phi(u,u)) + C*phi_y(y=0+)
i.e, 2nd order one sided differencing, where A,B & C are constants which depend on the grid spacing.
My problem is that when I run the two versions of the code the older version converges more quickly and plotting the results shows that the tangential flow condition is satisfied. The second (more accurate?) version converges more slowly and does not satisfy the tangential flow condition.
I am not sure why this could be the case, the two codes are identical other than the way in which the tangential flow condition is specified; the second code doesn't involve interpolation and uses a higher order approximation for phi_yy but seems to give less accurate results!
I have derived the 2nd order difference operator from first principles and checked my result in a handy textbook so I doubt the problem has arisen from my application of the boundary condition.
If anyone could offer some advice then I'd be extremely grateful,
Many thanks Frank
P.S. Sorry about the long post!
Re: Airfoil boundary condition
Do you use a mapping to resolve or do you write the
equations in curvilinear coordinates and resolve ?
|All times are GMT -4. The time now is 18:44.|