CFD Online Discussion Forums

CFD Online Discussion Forums (
-   SU2 Shape Design (
-   -   Adjoint Euler Wall Boundary Condition (

amphy404 March 13, 2013 03:24

Adjoint Euler Wall Boundary Condition
I'm looking for more information about the derivation of the adjoint Euler wall boundary condition. In particular, I'm interested in how the terms in the Residuals are derived.

I have read through Anderson & Venkatakrisnan's paper "Aerodynamic Design Optimization on Unstructured Grids with a Continuous Adjoint Formulation", but the wall b.c. in that paper looks a little different from the SU2 code.

Could someone please provide a link to some references?


amphy404 March 22, 2013 02:37


I'm sorry to post again, but I'm still having trouble deciphering how the Euler adjoint wall boundary condition is implemented in function CAdjEulerSolution::BC_Euler_Wall().

Specifically, I'm having trouble understanding the following lines of code.

In the code below, it looks like the boundary equations are being subtracted from the adjoint velocity variables, but why do you do this? I know that the term ( phin - bcn ) should equal to zero from the adjoint boundary condition, so is this code a recursive way to drive this term to zero? Another guess I had was that this was related to Type 2 boundary condition as described in J. Reuther's PhD thesis (Chapter 7, p.176 eq.7.17), but in his thesis the values of Psi were extrapolated from the interior, whereas here it looks like it is just overriding the old values?


/*--- Introduce the boundary condition ---*/
for (iDim = 0; iDim < nDim; iDim++)
    Psi[iDim+1] -= ( phin - bcn ) * UnitaryNormal[iDim];

The residual terms below look very similar to those found in CCentJST_AdjFlow::SetResidual() where the adjoint system is solved for the interior grid. However, I'm not sure I understand how this adjoint boundary system was formulated. Also I noticed that the incompressible residuals are different from the compressible residuals shown below.

/*--- Inner products after introducing BC (Psi has changed) ---*/
phis1 = 0.0; phis2 = Psi[0] + Enthalpy * Psi[nVar-1];
for (iDim = 0; iDim < nDim; iDim++) {
    phis1 -= Normal[iDim]*Psi[iDim+1];
    phis2 += Velocity[iDim]*Psi[iDim+1];

/*--- Flux of the Euler wall ---*/
Residual[0] = ProjVel * Psi[0] - phis2 * ProjVel + phis1 * Gamma_Minus_One * sq_vel;
for (iDim = 0; iDim < nDim; iDim++)
    Residual[iDim+1] = ProjVel * Psi[iDim+1] - phis2 * Normal[iDim] - phis1 * Gamma_Minus_One * Velocity[iDim];
Residual[nVar-1] = ProjVel * Psi[nVar-1] + phis1 * Gamma_Minus_One;

Any help you can provide would be very much appreciated!

Thanks in advance,

fpalacios March 23, 2013 14:29

The continuous adjoint formulation in SU2 is original (inspired by Jameson and Pironneau works, and using classical differential geometry relations). More details can be found in:

Thank you for you interest in SU2,

PS.- The Anderson & Venkatakrisnan's paper is an outstanding one, but they found a limitation in the methodology dealing with the adjoint Navier-Stokes implementation (the need for 2nd order derivatives). We fixed that problem in AIAA_Journal_2007.pdf

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