-
Notifications
You must be signed in to change notification settings - Fork 969
Description
I'm a junior student and a new CFDer.
I'v been testing upwind scheme in QuickStart and found that CUSP scheme diverged. Below is some important configuration information
Firstly I just changed convective scheme of "inv_NACA0012.cfg" in QuickStart to CUSP and SU2 diverged directly. Configuration information lies below.(CFL = 4.0)
% Mach number (non-dimensional, based on the free-stream values)
MACH_NUMBER= 0.8
%
% Angle of attack (degrees)
AOA= 1.25
%
% -------------------------- MULTIGRID PARAMETERS -----------------------------%
%
% Multi-Grid Levels (0 = no multi-grid)
MGLEVEL= 3
%
% Multi-grid cycle (V_CYCLE, W_CYCLE, FULLMG_CYCLE)
MGCYCLE= W_CYCLE
%
% Multi-Grid PreSmoothing Level
MG_PRE_SMOOTH= ( 1, 2, 3, 3 )
%
% Multi-Grid PostSmoothing Level
MG_POST_SMOOTH= ( 0, 0, 0, 0 )
%
% Jacobi implicit smoothing of the correction
MG_CORRECTION_SMOOTH= ( 0, 0, 0, 0 )
%
% Damping factor for the residual restriction
MG_DAMP_RESTRICTION= 1.0
%
% Damping factor for the correction prolongation
MG_DAMP_PROLONGATION= 1.0
% -------------------- FLOW NUMERICAL METHOD DEFINITION -----------------------%
%
% Convective numerical method (JST, LAX-FRIEDRICH, CUSP, ROE, AUSM, HLLC,
% TURKEL_PREC, MSW)
CONV_NUM_METHOD_FLOW= CUSP
%
% Spatial numerical order integration (1ST_ORDER, 2ND_ORDER, 2ND_ORDER_LIMITER)
%
SPATIAL_ORDER_FLOW= 2ND_ORDER_LIMITER
%
% Slope limiter (VENKATAKRISHNAN, MINMOD)
SLOPE_LIMITER_FLOW= VENKATAKRISHNAN
%
% 1st, 2nd and 4th order artificial dissipation coefficients
AD_COEFF_FLOW= ( 0.15, 0.5, 0.02 )
%
% Time discretization (RUNGE-KUTTA_EXPLICIT, EULER_IMPLICIT, EULER_EXPLICIT)
TIME_DISCRE_FLOW= EULER_IMPLICIT

When I modify CFL number to 1.0, SU2 doesn't diverged but oscillating at 10^-5 order

I forced it stopped and compare result with JST scheme:
CUSP(3Level multigrid)
Total CL: 0.336272
Total CD: 0.0220499
JST (3Level multigrid)
Total CL: 0.326933
Total CD: 0.0213497
The result is acceptable.
But when I change the limiter to"BARTH_JESPERSEN"(The configuration file doesn't show it)
(still CFL = 1.0; Same multigrid configuration)
SU2 converged quickly.

What's more, the result is also acceptable.
Based on above results, I set no multigrid working.
SU2 still oscillating when CFL number is 4.0 (Both VENKATAKRISHNAN and BARTH_JESPERSEN limiter)
BARTH_JESPERSEN

VENKATAKRISHNAN

Analogously, I set CFL to 1 again.
But VENKATAKRISHNAN converged but BARTH_JESPERSEN still oscillating.
I don't why CUSP occur this situation. Is there any bug in multigrid, limiter and CUSP scheme?
I know my ability and knowledge are limited, but I still try to read the code. Some simple "bugs" I've found but I doubt it.
In numerics_direct_mean.cpp , I've read compute_residual of CUSP and found something doubtly.
At line 643
for (iDim = 0; iDim < nDim; iDim++) {
Velocity_i[iDim] = V_i[iDim+1];
Velocity_j[iDim] = V_j[iDim+1];
sq_vel_i += 0.5*Velocity_i[iDim]Velocity_i[iDim];
sq_vel_j += 0.5Velocity_j[iDim]*Velocity_j[iDim];
}
SoundSpeed_i = sqrt(GammaGamma_Minus_One(Energy_i-0.5sq_vel_i));
SoundSpeed_j = sqrt(GammaGamma_Minus_One*(Energy_j-0.5*sq_vel_j));
Here I assume is computing Roe-Sound-Speed, but sq_vel_j's coefficient is not 1/4 but 1/2.
sqrt(GammaGamma_Minus_One(Energy_j-0.5*sq_vel_j))
And I don't know whether it's suitable to mix original CUSP and simplified CUSP.
Here, in computing dissipation parameters, SU2 used a simplified Lamda
LamdaNeg = ProjVelocity - MeanSoundSpeed;
LamdaPos = ProjVelocity + MeanSoundSpeed;
I've read paper and there are two kind of computing-dissipation-parameter method, SU2 seems mixed them. Whether it's legal?
At line 729
if ((Beta > 0.0) && ((0.0 < Mach) && (Mach < 1.0))) Nu_c = - (1.0-Beta)*LamdaNeg;
In Computational Fluid Dynamics (Computational Fluid Dynamics: Principles and Applications (Third Edition)[J]. Computational Fluid Dynamics Principles & Applications, 2015:ix.)
Nu_c seems to be - (1.0+Beta)*LamdaNeg.
And I want to know which configuration is suit for this condition, thanks~
That's all my confusion. I don't know where I've done wrong and where I've misunderstood. :)