11/* !
2- * \file CScalarSolver.cpp
2+ * \file CScalarSolver.inl
33 * \brief Main subrotuines of CScalarSolver class
4- * \author F. Palacios, A. Bueno
54 * \version 7.2.0 "Blackbird"
65 *
76 * SU2 Project Website: https://su2code.github.io
3029#include " ../../../Common/include/parallelization/omp_structure.hpp"
3130#include " ../../../Common/include/toolboxes/geometry_toolbox.hpp"
3231
33- CScalarSolver::CScalarSolver (bool conservative) : CSolver(), Conservative(conservative) {}
32+ template <class TVariable >
33+ CScalarSolver<TVariable>::CScalarSolver(bool conservative) : CSolver(), Conservative(conservative) {}
3434
35- CScalarSolver::CScalarSolver (CGeometry* geometry, CConfig* config, bool conservative)
35+ template <class TVariable >
36+ CScalarSolver<TVariable>::CScalarSolver(CGeometry* geometry, CConfig* config, bool conservative)
3637 : CSolver(), Conservative(conservative) {
3738 nMarker = config->GetnMarker_All ();
3839
@@ -74,9 +75,11 @@ CScalarSolver::CScalarSolver(CGeometry* geometry, CConfig* config, bool conserva
7475 }
7576}
7677
77- CScalarSolver::~CScalarSolver () { delete nodes; }
78+ template <class TVariable >
79+ CScalarSolver<TVariable>::~CScalarSolver () { delete nodes; }
7880
79- void CScalarSolver::Upwind_Residual (CGeometry* geometry, CSolver** solver_container, CNumerics** numerics_container,
81+ template <class TVariable >
82+ void CScalarSolver<TVariable>::Upwind_Residual(CGeometry* geometry, CSolver** solver_container, CNumerics** numerics_container,
8083 CConfig* config, unsigned short iMesh) {
8184 const bool implicit = (config->GetKind_TimeIntScheme () == EULER_IMPLICIT);
8285 const bool muscl = config->GetMUSCL_Turb ();
@@ -236,7 +239,8 @@ void CScalarSolver::Upwind_Residual(CGeometry* geometry, CSolver** solver_contai
236239 }
237240}
238241
239- void CScalarSolver::SumEdgeFluxes (CGeometry* geometry) {
242+ template <class TVariable >
243+ void CScalarSolver<TVariable>::SumEdgeFluxes(CGeometry* geometry) {
240244 SU2_OMP_FOR_STAT (omp_chunk_size)
241245 for (unsigned long iPoint = 0 ; iPoint < nPoint; ++iPoint) {
242246 LinSysRes.SetBlock_Zero (iPoint);
@@ -251,7 +255,8 @@ void CScalarSolver::SumEdgeFluxes(CGeometry* geometry) {
251255 END_SU2_OMP_FOR
252256}
253257
254- void CScalarSolver::BC_Periodic (CGeometry* geometry, CSolver** solver_container, CNumerics* numerics, CConfig* config) {
258+ template <class TVariable >
259+ void CScalarSolver<TVariable>::BC_Periodic(CGeometry* geometry, CSolver** solver_container, CNumerics* numerics, CConfig* config) {
255260 /* --- Complete residuals for periodic boundary conditions. We loop over
256261 the periodic BCs in matching pairs so that, in the event that there are
257262 adjacent periodic markers, the repeated points will have their residuals
@@ -264,7 +269,8 @@ void CScalarSolver::BC_Periodic(CGeometry* geometry, CSolver** solver_container,
264269 }
265270}
266271
267- void CScalarSolver::PrepareImplicitIteration (CGeometry* geometry, CSolver** solver_container, CConfig* config) {
272+ template <class TVariable >
273+ void CScalarSolver<TVariable>::PrepareImplicitIteration(CGeometry* geometry, CSolver** solver_container, CConfig* config) {
268274 const auto flowNodes = solver_container[FLOW_SOL]->GetNodes ();
269275
270276 /* --- Set shared residual variables to 0 and declare
@@ -323,7 +329,8 @@ void CScalarSolver::PrepareImplicitIteration(CGeometry* geometry, CSolver** solv
323329 SetResidual_RMS (geometry, config);
324330}
325331
326- void CScalarSolver::CompleteImplicitIteration (CGeometry* geometry, CSolver** solver_container, CConfig* config) {
332+ template <class TVariable >
333+ void CScalarSolver<TVariable>::CompleteImplicitIteration(CGeometry* geometry, CSolver** solver_container, CConfig* config) {
327334 const bool compressible = (config->GetKind_Regime () == ENUM_REGIME::COMPRESSIBLE);
328335
329336 const auto flowNodes = solver_container[FLOW_SOL]->GetNodes ();
@@ -369,7 +376,8 @@ void CScalarSolver::CompleteImplicitIteration(CGeometry* geometry, CSolver** sol
369376 CompleteComms (geometry, config, SOLUTION_EDDY);
370377}
371378
372- void CScalarSolver::ImplicitEuler_Iteration (CGeometry* geometry, CSolver** solver_container, CConfig* config) {
379+ template <class TVariable >
380+ void CScalarSolver<TVariable>::ImplicitEuler_Iteration(CGeometry* geometry, CSolver** solver_container, CConfig* config) {
373381 PrepareImplicitIteration (geometry, solver_container, config);
374382
375383 /* --- Solve or smooth the linear system. ---*/
@@ -393,7 +401,8 @@ void CScalarSolver::ImplicitEuler_Iteration(CGeometry* geometry, CSolver** solve
393401 CompleteImplicitIteration (geometry, solver_container, config);
394402}
395403
396- void CScalarSolver::SetResidual_DualTime (CGeometry* geometry, CSolver** solver_container, CConfig* config,
404+ template <class TVariable >
405+ void CScalarSolver<TVariable>::SetResidual_DualTime(CGeometry* geometry, CSolver** solver_container, CConfig* config,
397406 unsigned short iRKStep, unsigned short iMesh,
398407 unsigned short RunTime_EqSystem) {
399408 const bool implicit = (config->GetKind_TimeIntScheme () == EULER_IMPLICIT);
@@ -632,7 +641,8 @@ void CScalarSolver::SetResidual_DualTime(CGeometry* geometry, CSolver** solver_c
632641 } // end dynamic grid
633642}
634643
635- void CScalarSolver::LoadRestart (CGeometry** geometry, CSolver*** solver, CConfig* config, int val_iter,
644+ template <class TVariable >
645+ void CScalarSolver<TVariable>::LoadRestart(CGeometry** geometry, CSolver*** solver, CConfig* config, int val_iter,
636646 bool val_update_geo) {
637647 /* --- Restart the solution from file information ---*/
638648
0 commit comments