@@ -71,9 +71,10 @@ FORCEINLINE Double musclReconstruction(const GradType& grad,
7171 const Double delta,
7272 size_t iVar,
7373 Double kappa,
74- Double relax) {
74+ Double relax,
75+ Double ramp_val) {
7576 const Double proj = dot (grad[iVar], vector_ij);
76- return relax * umusclProjection (proj, delta, kappa);
77+ return ramp_val * relax * umusclProjection (proj, delta, kappa);
7778}
7879
7980/* !
@@ -86,7 +87,8 @@ FORCEINLINE void musclUnlimited(Int iPoint,
8687 const Gradient_t& gradient,
8788 CPair<VarType>& V,
8889 Double kappa,
89- Double relax) {
90+ Double relax,
91+ Double ramp_val) {
9092 constexpr auto nVarGrad = nVarGrad_ > 0 ? nVarGrad_ : VarType::nVar;
9193
9294 auto grad_i = gatherVariables<nVarGrad,nDim>(iPoint, gradient);
@@ -97,8 +99,8 @@ FORCEINLINE void musclUnlimited(Int iPoint,
9799 const Double delta_ij = V.j .all (iVar) - V.i .all (iVar);
98100
99101 /* --- U-MUSCL reconstructed variables ---*/
100- const Double proj_i = musclReconstruction (grad_i, vector_ij, delta_ij, iVar, kappa, relax);
101- const Double proj_j = musclReconstruction (grad_j, vector_ij, delta_ij, iVar, kappa, relax);
102+ const Double proj_i = musclReconstruction (grad_i, vector_ij, delta_ij, iVar, kappa, relax, ramp_val );
103+ const Double proj_j = musclReconstruction (grad_j, vector_ij, delta_ij, iVar, kappa, relax, ramp_val );
102104
103105 /* --- Apply reconstruction: V_L = V_i + 0.5 * dV_ij^kap ---*/
104106 V.i .all (iVar) += 0.5 * proj_i;
@@ -117,7 +119,8 @@ FORCEINLINE void musclPointLimited(Int iPoint,
117119 const Gradient_t& gradient,
118120 CPair<VarType>& V,
119121 Double kappa,
120- Double relax) {
122+ Double relax,
123+ Double ramp_val) {
121124 constexpr auto nVarGrad = nVarGrad_ > 0 ? nVarGrad_ : VarType::nVar;
122125
123126 auto lim_i = gatherVariables<nVarGrad>(iPoint, limiter);
@@ -131,8 +134,8 @@ FORCEINLINE void musclPointLimited(Int iPoint,
131134 const Double delta_ij = V.j .all (iVar) - V.i .all (iVar);
132135
133136 /* --- U-MUSCL reconstructed variables ---*/
134- const Double proj_i = musclReconstruction (grad_i, vector_ij, delta_ij, iVar, kappa, relax);
135- const Double proj_j = musclReconstruction (grad_j, vector_ij, delta_ij, iVar, kappa, relax);
137+ const Double proj_i = musclReconstruction (grad_i, vector_ij, delta_ij, iVar, kappa, relax, ramp_val );
138+ const Double proj_j = musclReconstruction (grad_j, vector_ij, delta_ij, iVar, kappa, relax, ramp_val );
136139
137140 /* --- Apply reconstruction: V_L = V_i + 0.5 * lim * dV_ij^kap ---*/
138141 V.i .all (iVar) += 0.5 * lim_i (iVar) * proj_i;
@@ -150,7 +153,8 @@ FORCEINLINE void musclEdgeLimited(Int iPoint,
150153 const Gradient_t& gradient,
151154 CPair<VarType>& V,
152155 Double kappa,
153- Double relax) {
156+ Double relax,
157+ Double ramp_val) {
154158 constexpr auto nVarGrad = nVarGrad_ > 0 ? nVarGrad_ : VarType::nVar;
155159
156160 auto grad_i = gatherVariables<nVarGrad,nDim>(iPoint, gradient);
@@ -162,8 +166,8 @@ FORCEINLINE void musclEdgeLimited(Int iPoint,
162166 const Double delta_ij_2 = pow (delta_ij, 2 ) + 1e-6 ;
163167
164168 /* --- U-MUSCL reconstructed variables ---*/
165- const Double proj_i = musclReconstruction (grad_i, vector_ij, delta_ij, iVar, kappa, relax);
166- const Double proj_j = musclReconstruction (grad_j, vector_ij, delta_ij, iVar, kappa, relax);
169+ const Double proj_i = musclReconstruction (grad_i, vector_ij, delta_ij, iVar, kappa, relax, ramp_val );
170+ const Double proj_j = musclReconstruction (grad_j, vector_ij, delta_ij, iVar, kappa, relax, ramp_val );
167171
168172 // / TODO: Customize the limiter function.
169173 const Double lim_i = (delta_ij_2 + proj_i*delta_ij) / (pow (proj_i,2 ) + delta_ij_2);
@@ -200,7 +204,8 @@ FORCEINLINE CPair<ReconVarType> reconstructPrimitives(Int iEdge, Int iPoint, Int
200204 LIMITER limiterType,
201205 const CPair<PrimVarType>& V1st,
202206 const VectorDbl<nDim>& vector_ij,
203- const VariableType& solution) {
207+ const VariableType& solution,
208+ const su2double& ramp_val) {
204209 static_assert (ReconVarType::nVar <= PrimVarType::nVar);
205210
206211 const auto & gradients = solution.GetGradient_Reconstruction ();
@@ -218,13 +223,13 @@ FORCEINLINE CPair<ReconVarType> reconstructPrimitives(Int iEdge, Int iPoint, Int
218223 constexpr auto nVarGrad = ReconVarType::nVar - 2 ;
219224 switch (limiterType) {
220225 case LIMITER::NONE:
221- musclUnlimited<nVarGrad>(iPoint, jPoint, vector_ij, gradients, V, kappa, relax);
226+ musclUnlimited<nVarGrad>(iPoint, jPoint, vector_ij, gradients, V, kappa, relax, ramp_val );
222227 break ;
223228 case LIMITER::VAN_ALBADA_EDGE:
224- musclEdgeLimited<nVarGrad>(iPoint, jPoint, vector_ij, gradients, V, kappa, relax);
229+ musclEdgeLimited<nVarGrad>(iPoint, jPoint, vector_ij, gradients, V, kappa, relax, ramp_val );
225230 break ;
226231 default :
227- musclPointLimited<nVarGrad>(iPoint, jPoint, vector_ij, limiters, gradients, V, kappa, relax);
232+ musclPointLimited<nVarGrad>(iPoint, jPoint, vector_ij, limiters, gradients, V, kappa, relax, ramp_val );
228233 break ;
229234 }
230235 /* --- Recompute density using the reconstructed pressure and temperature. ---*/
0 commit comments