CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   SU2 (https://www.cfd-online.com/Forums/su2/)
-   -   JST Artificial Dissipation (https://www.cfd-online.com/Forums/su2/111862-jst-artificial-dissipation.html)

 amphy404 January 16, 2013 21:58

JST Artificial Dissipation

Hi,

I was looking through the JST artificial dissipation code implemented in the function CCentJST_Flow::SetResidual() in numerics_convective.cpp.

I have not been able to find references for some of the scaling factors used in the JST artificial dissipation code.

Can you explain the meaning of "StretchingFactor", "sc2" and "sc4"? Alternatively, can you point out the paper that this is from? Do they have something to do with the aspect ratio of the elements?

Code:

```Local_Lambda_i = (fabs(ProjVelocity_i)+SoundSpeed_i*Area); Local_Lambda_j = (fabs(ProjVelocity_j)+SoundSpeed_j*Area); MeanLambda = 0.5*(Local_Lambda_i+Local_Lambda_j);   Phi_i = pow(Lambda_i/(4.0*MeanLambda+EPS), Param_p); Phi_j = pow(Lambda_j/(4.0*MeanLambda+EPS), Param_p);    StretchingFactor = 4.0*Phi_i*Phi_j/(Phi_i+Phi_j+EPS);   sc2 = 3.0*(double(Neighbor_i)+double(Neighbor_j))/(double(Neighbor_i)*double(Neighbor_j)); sc4 = sc2*sc2/4.0; Epsilon_2 = Param_Kappa_2*0.5*(Sensor_i+Sensor_j)*sc2; Epsilon_4 = max(0.0, Param_Kappa_4-Epsilon_2)*sc4; /*--- Compute viscous part of the residual ---*/ for (iVar = 0; iVar < nVar; iVar++)     val_resvisc[iVar] = (Epsilon_2*Diff_U[iVar] - Epsilon_4*Diff_Lapl[iVar])*StretchingFactor*MeanLambda;```
Additionally for the papers I have read, the calculation of "Epsilon_2" is,
Code:

`Epsilon_2 = Param_Kappa_2*max(Sensor_i, Sensor_j);`
Whereas, in the SU2 code, it is the average of the sensor values. Is this done in order to reduce the sensitivity of the sensors?

Thanks,
KW

 praveen January 17, 2013 04:29

I would also like to know more about this scheme.

This may be a basic question since I am not very familiar with JST scheme. The JST scheme in SU2 also has first order dissipation, e.g., the config files have

Code:

```% 1st, 2nd and 4th order artificial dissipation coefficients AD_COEFF_FLOW= ( 0.15, 0.5, 0.02 )```
What does first order dissipation mean in this context ? The AIAA paper does not clarify how these three coefficients appear in the scheme, I can only see the second and fourth order dissipation explained in the paper.

 fpalacios January 18, 2013 22:32

Quote:
 Originally Posted by praveen (Post 402376) I would also like to know more about this scheme. This may be a basic question since I am not very familiar with JST scheme. The JST scheme in SU2 also has first order dissipation, e.g., the config files have Code: ```% 1st, 2nd and 4th order artificial dissipation coefficients AD_COEFF_FLOW= ( 0.15, 0.5, 0.02 )``` What does first order dissipation mean in this context ? The AIAA paper does not clarify how these three coefficients appear in the scheme, I can only see the second and fourth order dissipation explained in the paper.
The first number (0.15) is the coefficient that SU2 uses in the multigrid levels, where only a first order spatial discretization (Lax–Friedrichs) is used.

Cheers,
Francisco

 fpalacios January 18, 2013 22:44

Quote:
 Originally Posted by amphy404 (Post 402336) Hi, I was looking through the JST artificial dissipation code implemented in the function CCentJST_Flow::SetResidual() in numerics_convective.cpp. I have not been able to find references for some of the scaling factors used in the JST artificial dissipation code. Can you explain the meaning of "StretchingFactor", "sc2" and "sc4"? Alternatively, can you point out the paper that this is from? Do they have something to do with the aspect ratio of the elements? Code: ```Local_Lambda_i = (fabs(ProjVelocity_i)+SoundSpeed_i*Area); Local_Lambda_j = (fabs(ProjVelocity_j)+SoundSpeed_j*Area); MeanLambda = 0.5*(Local_Lambda_i+Local_Lambda_j);   Phi_i = pow(Lambda_i/(4.0*MeanLambda+EPS), Param_p); Phi_j = pow(Lambda_j/(4.0*MeanLambda+EPS), Param_p);    StretchingFactor = 4.0*Phi_i*Phi_j/(Phi_i+Phi_j+EPS);   sc2 = 3.0*(double(Neighbor_i)+double(Neighbor_j))/(double(Neighbor_i)*double(Neighbor_j)); sc4 = sc2*sc2/4.0; Epsilon_2 = Param_Kappa_2*0.5*(Sensor_i+Sensor_j)*sc2; Epsilon_4 = max(0.0, Param_Kappa_4-Epsilon_2)*sc4; /*--- Compute viscous part of the residual ---*/ for (iVar = 0; iVar < nVar; iVar++)     val_resvisc[iVar] = (Epsilon_2*Diff_U[iVar] - Epsilon_4*Diff_Lapl[iVar])*StretchingFactor*MeanLambda;``` Additionally for the papers I have read, the calculation of "Epsilon_2" is, Code: `Epsilon_2 = Param_Kappa_2*max(Sensor_i, Sensor_j);` Whereas, in the SU2 code, it is the average of the sensor values. Is this done in order to reduce the sensitivity of the sensors? Thanks, KW
As you know, there is not a direct translation from the classical JST method in structured grids to the unstructured world, and probably each unstructured code has a slightly different implementation based on Jameson, Martinelli and Mavriplis works.

Cheers,
Francisco

 nwpukaka January 20, 2016 00:20

Hi,

I am also curious with the following code:

/*--- Computes differences btw. Laplacians and conservative variables,
with a correction for the enthalpy ---*/
Diff_U[nVar-1] = Density_i*Enthalpy_i-Density_j*Enthalpy_j;

I guess this is used for the artificial diffusion term of energy conservation equation, but why do you change from total energy to enthalpy?

Thank you,
Kan

 All times are GMT -4. The time now is 21:52.