@@ -73,7 +73,8 @@ FORCEINLINE Double musclReconstruction(const GradType& grad,
7373 const Double delta,
7474 size_t iVar,
7575 Double kappa,
76- Double relax) {
76+ Double relax,
77+ Double ramp_val) {
7778 const Double proj = dot (grad[iVar], vector_ij);
7879 return relax * umusclProjection (proj, delta, kappa);
7980}
@@ -88,7 +89,8 @@ FORCEINLINE void musclUnlimited(Int iPoint,
8889 const Gradient_t& gradient,
8990 CPair<VarType>& V,
9091 Double kappa,
91- Double relax) {
92+ Double relax,
93+ Double ramp_val) {
9294 constexpr auto nVarGrad = nVarGrad_ > 0 ? nVarGrad_ : VarType::nVar;
9395
9496 auto grad_i = gatherVariables<nVarGrad,nDim>(iPoint, gradient);
@@ -99,8 +101,8 @@ FORCEINLINE void musclUnlimited(Int iPoint,
99101 const Double delta_ij = V.j .all (iVar) - V.i .all (iVar);
100102
101103 /* --- U-MUSCL reconstructed variables ---*/
102- const Double proj_i = musclReconstruction (grad_i, vector_ij, delta_ij, iVar, kappa, relax);
103- const Double proj_j = musclReconstruction (grad_j, vector_ij, delta_ij, iVar, kappa, relax);
104+ const Double proj_i = musclReconstruction (grad_i, vector_ij, delta_ij, iVar, kappa, relax, ramp_val );
105+ const Double proj_j = musclReconstruction (grad_j, vector_ij, delta_ij, iVar, kappa, relax, ramp_val );
104106
105107 /* --- Apply reconstruction: V_L = V_i + 0.5 * dV_ij^kap ---*/
106108 V.i .all (iVar) += 0.5 * proj_i;
@@ -119,7 +121,8 @@ FORCEINLINE void musclPointLimited(Int iPoint,
119121 const Gradient_t& gradient,
120122 CPair<VarType>& V,
121123 Double kappa,
122- Double relax) {
124+ Double relax,
125+ Double ramp_val) {
123126 constexpr auto nVarGrad = nVarGrad_ > 0 ? nVarGrad_ : VarType::nVar;
124127
125128 auto lim_i = gatherVariables<nVarGrad>(iPoint, limiter);
@@ -133,8 +136,8 @@ FORCEINLINE void musclPointLimited(Int iPoint,
133136 const Double delta_ij = V.j .all (iVar) - V.i .all (iVar);
134137
135138 /* --- U-MUSCL reconstructed variables ---*/
136- const Double proj_i = musclReconstruction (grad_i, vector_ij, delta_ij, iVar, kappa, relax);
137- const Double proj_j = musclReconstruction (grad_j, vector_ij, delta_ij, iVar, kappa, relax);
139+ const Double proj_i = musclReconstruction (grad_i, vector_ij, delta_ij, iVar, kappa, relax, ramp_val );
140+ const Double proj_j = musclReconstruction (grad_j, vector_ij, delta_ij, iVar, kappa, relax, ramp_val );
138141
139142 /* --- Apply reconstruction: V_L = V_i + 0.5 * lim * dV_ij^kap ---*/
140143 V.i .all (iVar) += 0.5 * lim_i (iVar) * proj_i;
@@ -152,7 +155,8 @@ FORCEINLINE void musclEdgeLimited(Int iPoint,
152155 const Gradient_t& gradient,
153156 CPair<VarType>& V,
154157 Double kappa,
155- Double relax) {
158+ Double relax,
159+ Double ramp_val) {
156160 constexpr auto nVarGrad = nVarGrad_ > 0 ? nVarGrad_ : VarType::nVar;
157161
158162 auto grad_i = gatherVariables<nVarGrad,nDim>(iPoint, gradient);
@@ -164,8 +168,8 @@ FORCEINLINE void musclEdgeLimited(Int iPoint,
164168 const Double delta_ij_2 = pow (delta_ij, 2 ) + 1e-6 ;
165169
166170 /* --- U-MUSCL reconstructed variables ---*/
167- const Double proj_i = musclReconstruction (grad_i, vector_ij, delta_ij, iVar, kappa, relax);
168- const Double proj_j = musclReconstruction (grad_j, vector_ij, delta_ij, iVar, kappa, relax);
171+ const Double proj_i = musclReconstruction (grad_i, vector_ij, delta_ij, iVar, kappa, relax, ramp_val );
172+ const Double proj_j = musclReconstruction (grad_j, vector_ij, delta_ij, iVar, kappa, relax, ramp_val );
169173
170174 // / TODO: Customize the limiter function.
171175 const Double lim_i = (delta_ij_2 + proj_i*delta_ij) / (pow (proj_i,2 ) + delta_ij_2);
@@ -202,7 +206,8 @@ FORCEINLINE CPair<ReconVarType> reconstructPrimitives(Int iEdge, Int iPoint, Int
202206 LIMITER limiterType,
203207 const CPair<PrimVarType>& V1st,
204208 const VectorDbl<nDim>& vector_ij,
205- const VariableType& solution) {
209+ const VariableType& solution,
210+ const su2double& ramp_val) {
206211 static_assert (ReconVarType::nVar <= PrimVarType::nVar);
207212
208213 const auto & gradients = solution.GetGradient_Reconstruction ();
@@ -220,13 +225,13 @@ FORCEINLINE CPair<ReconVarType> reconstructPrimitives(Int iEdge, Int iPoint, Int
220225 constexpr auto nVarGrad = ReconVarType::nVar - 2 ;
221226 switch (limiterType) {
222227 case LIMITER::NONE:
223- musclUnlimited<nVarGrad>(iPoint, jPoint, vector_ij, gradients, V, kappa, relax);
228+ musclUnlimited<nVarGrad>(iPoint, jPoint, vector_ij, gradients, V, kappa, relax, ramp_val );
224229 break ;
225230 case LIMITER::VAN_ALBADA_EDGE:
226- musclEdgeLimited<nVarGrad>(iPoint, jPoint, vector_ij, gradients, V, kappa, relax);
231+ musclEdgeLimited<nVarGrad>(iPoint, jPoint, vector_ij, gradients, V, kappa, relax, ramp_val );
227232 break ;
228233 default :
229- musclPointLimited<nVarGrad>(iPoint, jPoint, vector_ij, limiters, gradients, V, kappa, relax);
234+ musclPointLimited<nVarGrad>(iPoint, jPoint, vector_ij, limiters, gradients, V, kappa, relax, ramp_val );
230235 break ;
231236 }
232237 V.i .density () = V.i .pressure () / (gasConst * V.i .temperature ());
0 commit comments