@@ -2053,15 +2053,12 @@ void CEulerSolver::Source_Residual(CGeometry *geometry, CSolver **solver_contain
20532053 /* --- Pick one numerics object per thread. ---*/
20542054 CNumerics* numerics = numerics_container[SOURCE_FIRST_TERM + omp_get_thread_num ()*MAX_TERMS];
20552055
2056- unsigned short iVar;
2057- unsigned long iPoint;
2058-
20592056 if (body_force) {
20602057
20612058 /* --- Loop over all points ---*/
20622059 AD::StartNoSharedReading ();
20632060 SU2_OMP_FOR_STAT (omp_chunk_size)
2064- for (iPoint = 0 ; iPoint < nPointDomain; iPoint++) {
2061+ for (auto iPoint = 0 ; iPoint < nPointDomain; iPoint++) {
20652062
20662063 /* --- Load the conservative variables ---*/
20672064 numerics->SetConservative (nodes->GetSolution (iPoint),
@@ -2091,7 +2088,7 @@ void CEulerSolver::Source_Residual(CGeometry *geometry, CSolver **solver_contain
20912088 /* --- Loop over all points ---*/
20922089 AD::StartNoSharedReading ();
20932090 SU2_OMP_FOR_DYN (omp_chunk_size)
2094- for (iPoint = 0 ; iPoint < nPointDomain; iPoint++) {
2091+ for (auto iPoint = 0 ; iPoint < nPointDomain; iPoint++) {
20952092
20962093 /* --- Load the conservative variables ---*/
20972094 numerics->SetConservative (nodes->GetSolution (iPoint),
@@ -2124,7 +2121,7 @@ void CEulerSolver::Source_Residual(CGeometry *geometry, CSolver **solver_contain
21242121 /* --- loop over points ---*/
21252122 AD::StartNoSharedReading ();
21262123 SU2_OMP_FOR_DYN (omp_chunk_size)
2127- for (iPoint = 0 ; iPoint < nPointDomain; iPoint++) {
2124+ for (auto iPoint = 0 ; iPoint < nPointDomain; iPoint++) {
21282125
21292126 /* --- Set solution ---*/
21302127 numerics->SetConservative (nodes->GetSolution (iPoint), nodes->GetSolution (iPoint));
@@ -2177,7 +2174,7 @@ void CEulerSolver::Source_Residual(CGeometry *geometry, CSolver **solver_contain
21772174
21782175 /* --- loop over points ---*/
21792176 SU2_OMP_FOR_DYN (omp_chunk_size)
2180- for (iPoint = 0 ; iPoint < nPointDomain; iPoint++) {
2177+ for (auto iPoint = 0 ; iPoint < nPointDomain; iPoint++) {
21812178
21822179 /* --- Set solution ---*/
21832180 numerics->SetConservative (nodes->GetSolution (iPoint), nodes->GetSolution (iPoint));
@@ -2200,13 +2197,13 @@ void CEulerSolver::Source_Residual(CGeometry *geometry, CSolver **solver_contain
22002197
22012198 /* --- loop over points ---*/
22022199 SU2_OMP_FOR_STAT (omp_chunk_size)
2203- for (iPoint = 0 ; iPoint < nPointDomain; iPoint++) {
2200+ for (auto iPoint = 0 ; iPoint < nPointDomain; iPoint++) {
22042201
22052202 /* --- Get control volume ---*/
22062203 su2double Volume = geometry->nodes ->GetVolume (iPoint);
22072204
22082205 /* --- Get stored time spectral source term and add to residual ---*/
2209- for (iVar = 0 ; iVar < nVar; iVar++) {
2206+ for (auto iVar = 0 ; iVar < nVar; iVar++) {
22102207 LinSysRes (iPoint,iVar) += Volume * nodes->GetHarmonicBalance_Source (iPoint,iVar);
22112208 }
22122209 }
@@ -2223,7 +2220,7 @@ void CEulerSolver::Source_Residual(CGeometry *geometry, CSolver **solver_contain
22232220
22242221 /* --- set vorticity magnitude as auxilliary variable ---*/
22252222 SU2_OMP_FOR_STAT (omp_chunk_size)
2226- for (iPoint = 0 ; iPoint < nPoint; iPoint++) {
2223+ for (auto iPoint = 0 ; iPoint < nPoint; iPoint++) {
22272224 const su2double VorticityMag = max (GeometryToolbox::Norm (3 , nodes->GetVorticity (iPoint)), 1e-12 );
22282225 nodes->SetAuxVar (iPoint, 0 , VorticityMag);
22292226 }
@@ -2233,7 +2230,7 @@ void CEulerSolver::Source_Residual(CGeometry *geometry, CSolver **solver_contain
22332230 SetAuxVar_Gradient_GG (geometry, config);
22342231
22352232 SU2_OMP_FOR_DYN (omp_chunk_size)
2236- for (iPoint = 0 ; iPoint < nPointDomain; iPoint++) {
2233+ for (auto iPoint = 0 ; iPoint < nPointDomain; iPoint++) {
22372234 second_numerics->SetPrimitive (nodes->GetPrimitive (iPoint), nullptr );
22382235 second_numerics->SetVorticity (nodes->GetVorticity (iPoint), nullptr );
22392236 second_numerics->SetAuxVarGrad (nodes->GetAuxVarGradient (iPoint), nullptr );
@@ -2260,7 +2257,7 @@ void CEulerSolver::Source_Residual(CGeometry *geometry, CSolver **solver_contain
22602257
22612258 /* --- Loop over points ---*/
22622259 SU2_OMP_FOR_DYN (omp_chunk_size)
2263- for (iPoint = 0 ; iPoint < nPointDomain; iPoint++) {
2260+ for (auto iPoint = 0 ; iPoint < nPointDomain; iPoint++) {
22642261
22652262 /* --- Get control volume size. ---*/
22662263 su2double Volume = geometry->nodes ->GetVolume (iPoint);
@@ -2273,14 +2270,34 @@ void CEulerSolver::Source_Residual(CGeometry *geometry, CSolver **solver_contain
22732270 VerificationSolution->GetMMSSourceTerm (coor, time, sourceMan.data ());
22742271
22752272 /* --- Compute the residual for this control volume and subtract. ---*/
2276- for (iVar = 0 ; iVar < nVar; iVar++) {
2273+ for (auto iVar = 0 ; iVar < nVar; iVar++) {
22772274 LinSysRes (iPoint,iVar) -= sourceMan[iVar]*Volume;
22782275 }
22792276 }
22802277 END_SU2_OMP_FOR
22812278 }
22822279 }
22832280
2281+ /* --- Custom user defined source term (from the python wrapper) ---*/
2282+ if (config->GetPyCustom_Source () ) {
2283+ SU2_OMP_FOR_STAT (omp_chunk_size)
2284+ for (auto iPoint = 0 ; iPoint < nPointDomain; iPoint++) {
2285+
2286+ /* --- Load the volume of the dual mesh cell ---*/
2287+
2288+ numerics->SetVolume (geometry->nodes ->GetVolume (iPoint));
2289+
2290+ /* --- Get control volume size. ---*/
2291+ su2double Volume = geometry->nodes ->GetVolume (iPoint);
2292+
2293+ /* --- Compute the residual for this control volume and subtract. ---*/
2294+ for (auto iVar = 0 ; iVar < nVar; iVar++) {
2295+ LinSysRes (iPoint, iVar) += nodes->GetUserDefinedSource (iPoint)[iVar] * Volume;
2296+ }
2297+ }
2298+ END_SU2_OMP_FOR
2299+ }
2300+
22842301 AD::EndNoSharedReading ();
22852302}
22862303
0 commit comments