I'm working on a 2D inviscid fluid simulation using a "panel method", with Potential being used to enforce the no-through boundary condition. I'm trying to incorporate the Kutta condition, which says that the pressure above and below an airfoil are equal when the streams meet at the trailing edge, or equivalently that the velocity is smoothly leaving the trailing edge from the top and bottom of the airfoil in the same direction.

It's usually invoked relating to airfoils, and most literature on the subject (eg: Aerodynamics or Modelling of Steady & Unsteady Flow Around 2D Airfoils Using Panel Methods) assumes you know beforehand where your trailing edge is. However, I want to be able to simulate any arbitrary 2D surface (well, as arbitrary as you can get with simple polygons) in any arbitrary unsteady flow.

Is there a generalized version of the Kutta condition that I can use? Something that would work for bluff bodies, airfoils, and any other random shape and still give the proper results?

Or alternatively, is it actually necessary to enforce it if I'm aiming for a purely inviscid flow? A couple of different sources have hinted that it's actually a fudge that enables you to take one of the important aspects of viscous flow without all the rest of the overhead.


1 Answer 1


I can't think of a generalized kutta condition for general shapes. But I can tell you it is useful for bluff bodies, such as cylinders and the like. The thing to realize is that the kutta condition is used to enforce a unique solution in terms of circulation and stagnation point location in place of the infinitely many theoretical ones. I would suggest sticking to relatively "real" aerodynamic shapes, such as airfoils, squares, circles, diamonds, half bodies, and then developing a way to determine your desired stagnation point in the code and enforcing the kutta condition there. Otherwise you can end up with infinite solutions and/or garbage. Sorry if this restricts your plans, but hope it was helpful!

  • $\begingroup$ In the end I just avoided a Kutta condition entirely. The answer then deviates from empirical observation, but this was for something like a game where it doesn't have to match reality, it just has to feel like it matches reality, and the deviation wasn't really noticeable. From my casual understanding, the fact that the Kutta condition is necessary to enforce manually is probably a consequence of assuming entirely inviscid flow, where in reality even supersonic aircraft will have a (very small!) laminar layer between the wing and the air stream which will change the flow slightly. $\endgroup$
    – Jay Lemmon
    Feb 12, 2019 at 15:57
  • $\begingroup$ As I said above, you need the kutta condition to enforce a certain solution, otherwise you have infinite solutions. Physically, it is an artifact of inviscid flow, but numerically it has the property of providing a way to select your vortex strengths. If you coded an unsteady panel method, then the kutta condition is typically how you select the strength of the new vortex rings. From your comment I assume you generated new fixed strength rings? $\endgroup$
    – EMP
    Feb 12, 2019 at 17:32
  • $\begingroup$ I don't generate vortices at all. I just have the N equations from the superposition of the N fundamental solutions for each panel and ignore circulation. I least squares solves these N equations (for robustness, I'm not sure if it's a singular system or not). This is sufficient to generate the pressure field over the shape and calculate forces. The forces don't have much to do with actual real world forces, but I suspect the classic panel method would break down for arbitrary shapes in inviscid flow anyway. $\endgroup$
    – Jay Lemmon
    Feb 13, 2019 at 12:20
  • $\begingroup$ I'm relatively confident that it would not in fact break down for arbitrary shapes, provided you selected a proper kutta condition. The benefit of the vortex ring/panel method is its robustness. $\endgroup$
    – EMP
    Feb 13, 2019 at 17:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.