diff --git a/Common/include/CConfig.hpp b/Common/include/CConfig.hpp index 8d5e4f377899..bbb2cf12bf8d 100644 --- a/Common/include/CConfig.hpp +++ b/Common/include/CConfig.hpp @@ -46,6 +46,7 @@ #include "option_structure.hpp" #include "containers/container_decorators.hpp" #include "toolboxes/printing_toolbox.hpp" +#include "tracy_structure.hpp" #ifdef HAVE_CGNS #include "cgnslib.h" @@ -9097,25 +9098,6 @@ class CConfig { */ unsigned long GetNonphysical_Reconstr(void) const { return Nonphys_Reconstr; } - /*! - * \brief Start the timer for profiling subroutines. - * \param[in] val_start_time - the value of the start time. - */ - void Tick(double *val_start_time); - - /*! - * \brief Stop the timer for profiling subroutines and store results. - * \param[in] val_start_time - the value of the start time. - * \param[in] val_function_name - string for the name of the profiled subroutine. - * \param[in] val_group_id - string for the name of the profiled subroutine. - */ - void Tock(double val_start_time, const string& val_function_name, int val_group_id); - - /*! - * \brief Write a CSV file containing the results of the profiling. - */ - void SetProfilingCSV(void); - /*! * \brief Start the timer for profiling subroutines. * \param[in] val_start_time - the value of the start time. diff --git a/Common/include/linear_algebra/CSysSolve.hpp b/Common/include/linear_algebra/CSysSolve.hpp index ddee4f0abc84..9abe78396783 100644 --- a/Common/include/linear_algebra/CSysSolve.hpp +++ b/Common/include/linear_algebra/CSysSolve.hpp @@ -246,6 +246,7 @@ class CSysSolve { */ template void HandleTemporariesIn(const CSysVector& LinSysRes, CSysVector& LinSysSol) { + SU2_ZONE_SCOPED if constexpr (std::is_same_v) { /*--- Same type specialization, temporary variables are not required. ---*/ BEGIN_SU2_OMP_SAFE_GLOBAL_ACCESS { @@ -273,6 +274,7 @@ class CSysSolve { */ template void HandleTemporariesOut(CSysVector& LinSysSol) { + SU2_ZONE_SCOPED if constexpr (std::is_same_v) { /*--- Same type specialization, temporary variables are not required. ---*/ BEGIN_SU2_OMP_SAFE_GLOBAL_ACCESS { diff --git a/Common/include/tracy_structure.hpp b/Common/include/tracy_structure.hpp index 043f9eb06a43..338830845062 100644 --- a/Common/include/tracy_structure.hpp +++ b/Common/include/tracy_structure.hpp @@ -6,7 +6,6 @@ * they can be completely "disabled" when compiling without tracy. * \note Do not include tracy headers explicitly anywhere, use this header instead. * \note To enable tracy, define the TRACY_ENABLE macro during compilation. - * \author Divyaprakash * \version 8.4.0 "Harrier" * * SU2 Project Website: https://su2code.github.io @@ -32,11 +31,16 @@ #pragma once -#ifdef HAVE_TRACY +#ifdef TRACY_ENABLE #include "tracy/Tracy.hpp" -#define SU2_ZONE_SCOPED ZoneScoped -#define SU2_ZONE_SCOPED_N(name) ZoneScopedN(name) +#define SU2_ZONE_SCOPED ZoneScoped; +#define SU2_ZONE_SCOPED_N(name) ZoneScopedN(name); #else #define SU2_ZONE_SCOPED #define SU2_ZONE_SCOPED_N(name) #endif + +#define BEGIN_SU2_ZONE_N(name) \ + { \ + SU2_ZONE_SCOPED_N(name) +#define END_SU2_ZONE } diff --git a/Common/src/CConfig.cpp b/Common/src/CConfig.cpp index 65a84ed437d5..2ba453b197b0 100644 --- a/Common/src/CConfig.cpp +++ b/Common/src/CConfig.cpp @@ -46,11 +46,6 @@ using namespace PrintingToolbox; #endif #endif -vector Profile_Function_tp; /*!< \brief Vector of string names for profiled functions. */ -vector Profile_Time_tp; /*!< \brief Vector of elapsed time for profiled functions. */ -vector Profile_ID_tp; /*!< \brief Vector of group ID number for profiled functions. */ -map > Profile_Map_tp; /*!< \brief Map containing the final results for profiled functions. */ - map GEMM_Profile_MNK; /*!< \brief Map, which maps the GEMM size to the index where the data for this GEMM is stored in several vectors. */ vector GEMM_Profile_NCalls; /*!< \brief Vector, which stores the number of calls to this @@ -59,8 +54,6 @@ vector GEMM_Profile_TotTime; /*!< \brief Total time spent for this vector GEMM_Profile_MinTime; /*!< \brief Minimum time spent for this GEMM size. */ vector GEMM_Profile_MaxTime; /*!< \brief Maximum time spent for this GEMM size. */ -//#pragma omp threadprivate(Profile_Function_tp, Profile_Time_tp, Profile_ID_tp, Profile_Map_tp) - CConfig::CConfig(char case_filename[MAX_STRING_SIZE], SU2_COMPONENT val_software, bool verb_high) { @@ -9953,191 +9946,6 @@ short CConfig::FindInterfaceMarker(unsigned short iInterface) const { return -1; } -void CConfig::Tick(double *val_start_time) { - -#ifdef PROFILE - *val_start_time = SU2_MPI::Wtime(); -#endif - -} - -void CConfig::Tock(double val_start_time, const string& val_function_name, int val_group_id) { - -#ifdef PROFILE - - double val_stop_time = 0.0, val_elapsed_time = 0.0; - - val_stop_time = SU2_MPI::Wtime(); - - /*--- Compute the elapsed time for this subroutine ---*/ - val_elapsed_time = val_stop_time - val_start_time; - - /*--- Store the subroutine name and the elapsed time ---*/ - Profile_Function_tp.push_back(val_function_name); - Profile_Time_tp.push_back(val_elapsed_time); - Profile_ID_tp.push_back(val_group_id); - -#endif - -} - -void CConfig::SetProfilingCSV() { - -#ifdef PROFILE - - int rank = MASTER_NODE; - int size = SINGLE_NODE; -#ifdef HAVE_MPI - SU2_MPI::Comm_rank(SU2_MPI::GetComm(), &rank); - SU2_MPI::Comm_size(SU2_MPI::GetComm(), &size); -#endif - - /*--- Each rank has the same stack trace, so the they have the same - function calls and ordering in the vectors. We're going to reduce - the timings from each rank and extract the avg, min, and max timings. ---*/ - - /*--- First, create a local mapping, so that we can extract the - min and max values for each function. ---*/ - - for (unsigned int i = 0; i < Profile_Function_tp.size(); i++) { - - /*--- Add the function and initialize if not already stored (the ID - only needs to be stored the first time).---*/ - if (Profile_Map_tp.find(Profile_Function_tp[i]) == Profile_Map_tp.end()) { - - vector profile; profile.push_back(i); - Profile_Map_tp.insert(pair >(Profile_Function_tp[i],profile)); - - } else { - - /*--- This function has already been added, so simply increment the - number of calls and total time for this function. ---*/ - - Profile_Map_tp[Profile_Function_tp[i]].push_back(i); - - } - } - - /*--- We now have everything gathered by function name, so we can loop over - each function and store the min/max times. ---*/ - - int map_size = 0; - for (map >::iterator it=Profile_Map_tp.begin(); it!=Profile_Map_tp.end(); ++it) { - map_size++; - } - - /*--- Allocate and initialize memory ---*/ - - double *l_min_red = nullptr, *l_max_red = nullptr, *l_tot_red = nullptr, *l_avg_red = nullptr; - int *n_calls_red = nullptr; - double* l_min = new double[map_size]; - double* l_max = new double[map_size]; - double* l_tot = new double[map_size]; - double* l_avg = new double[map_size]; - int* n_calls = new int[map_size]; - for (int i = 0; i < map_size; i++) - { - l_min[i] = 1e10; - l_max[i] = 0.0; - l_tot[i] = 0.0; - l_avg[i] = 0.0; - n_calls[i] = 0; - } - - /*--- Collect the info for each function from the current rank ---*/ - - int func_counter = 0; - for (map >::iterator it=Profile_Map_tp.begin(); it!=Profile_Map_tp.end(); ++it) { - - for (unsigned int i = 0; i < (it->second).size(); i++) { - n_calls[func_counter]++; - l_tot[func_counter] += Profile_Time_tp[(it->second)[i]]; - if (Profile_Time_tp[(it->second)[i]] < l_min[func_counter]) - l_min[func_counter] = Profile_Time_tp[(it->second)[i]]; - if (Profile_Time_tp[(it->second)[i]] > l_max[func_counter]) - l_max[func_counter] = Profile_Time_tp[(it->second)[i]]; - - } - l_avg[func_counter] = l_tot[func_counter]/((double)n_calls[func_counter]); - func_counter++; - } - - /*--- Now reduce the data ---*/ - - if (rank == MASTER_NODE) { - l_min_red = new double[map_size]; - l_max_red = new double[map_size]; - l_tot_red = new double[map_size]; - l_avg_red = new double[map_size]; - n_calls_red = new int[map_size]; - } - -#ifdef HAVE_MPI - MPI_Reduce(n_calls, n_calls_red, map_size, MPI_INT, MPI_SUM, MASTER_NODE, SU2_MPI::GetComm()); - MPI_Reduce(l_tot, l_tot_red, map_size, MPI_DOUBLE, MPI_SUM, MASTER_NODE, SU2_MPI::GetComm()); - MPI_Reduce(l_avg, l_avg_red, map_size, MPI_DOUBLE, MPI_SUM, MASTER_NODE, SU2_MPI::GetComm()); - MPI_Reduce(l_min, l_min_red, map_size, MPI_DOUBLE, MPI_MIN, MASTER_NODE, SU2_MPI::GetComm()); - MPI_Reduce(l_max, l_max_red, map_size, MPI_DOUBLE, MPI_MAX, MASTER_NODE, SU2_MPI::GetComm()); -#else - memcpy(n_calls_red, n_calls, map_size*sizeof(int)); - memcpy(l_tot_red, l_tot, map_size*sizeof(double)); - memcpy(l_avg_red, l_avg, map_size*sizeof(double)); - memcpy(l_min_red, l_min, map_size*sizeof(double)); - memcpy(l_max_red, l_max, map_size*sizeof(double)); -#endif - - /*--- The master rank will write the file ---*/ - - if (rank == MASTER_NODE) { - - /*--- Take averages over all ranks on the master ---*/ - - for (int i = 0; i < map_size; i++) { - l_tot_red[i] = l_tot_red[i]/(double)size; - l_avg_red[i] = l_avg_red[i]/(double)size; - n_calls_red[i] = n_calls_red[i]/size; - } - - /*--- Now write a CSV file with the processed results ---*/ - - ofstream Profile_File; - Profile_File.precision(15); - Profile_File.open("profiling.csv"); - - /*--- Create the CSV header ---*/ - - Profile_File << "\"Function_Name\", \"N_Calls\", \"Avg_Total_Time\", \"Avg_Time\", \"Min_Time\", \"Max_Time\", \"Function_ID\"" << endl; - - /*--- Loop through the map and write the results to the file ---*/ - - func_counter = 0; - for (map >::iterator it=Profile_Map_tp.begin(); it!=Profile_Map_tp.end(); ++it) { - - Profile_File << scientific << it->first << ", " << n_calls_red[func_counter] << ", " << l_tot_red[func_counter] << ", " << l_avg_red[func_counter] << ", " << l_min_red[func_counter] << ", " << l_max_red[func_counter] << ", " << (int)Profile_ID_tp[(it->second)[0]] << endl; - func_counter++; - } - - Profile_File.close(); - - } - - delete [] l_min; - delete [] l_max; - delete [] l_avg; - delete [] l_tot; - delete [] n_calls; - if (rank == MASTER_NODE) { - delete [] l_min_red; - delete [] l_max_red; - delete [] l_avg_red; - delete [] l_tot_red; - delete [] n_calls_red; - } - -#endif - -} - void CConfig::GEMM_Tick(double *val_start_time) const { #ifdef PROFILE diff --git a/Common/src/linear_algebra/CSysMatrix.cpp b/Common/src/linear_algebra/CSysMatrix.cpp index 1873128def23..5552f6fc801b 100644 --- a/Common/src/linear_algebra/CSysMatrix.cpp +++ b/Common/src/linear_algebra/CSysMatrix.cpp @@ -34,6 +34,8 @@ template CSysMatrix::CSysMatrix() : rank(SU2_MPI::GetRank()), size(SU2_MPI::GetSize()) { + SU2_ZONE_SCOPED + nPoint = nPointDomain = nVar = nEqn = 0; nnz = nnz_ilu = 0; ilu_fill_in = 0; @@ -63,6 +65,8 @@ CSysMatrix::CSysMatrix() : rank(SU2_MPI::GetRank()), size(SU2_MPI::G template CSysMatrix::~CSysMatrix() { + SU2_ZONE_SCOPED + delete[] omp_partitions; MemoryAllocation::aligned_free(ILU_matrix); MemoryAllocation::aligned_free(matrix); @@ -86,6 +90,7 @@ template void CSysMatrix::Initialize(unsigned long npoint, unsigned long npointdomain, unsigned short nvar, unsigned short neqn, bool EdgeConnect, CGeometry* geometry, const CConfig* config, bool needTranspPtr, bool grad_mode) { + SU2_ZONE_SCOPED assert(omp_get_thread_num() == 0 && "Only the master thread is allowed to initialize the matrix."); if (npoint == 0) return; @@ -250,6 +255,7 @@ void CSysMatrix::Initialize(unsigned long npoint, unsigned long npoi template void CSysMatrixComms::Initiate(const CSysVector& x, CGeometry* geometry, const CConfig* config, MPI_QUANTITIES commType) { + SU2_ZONE_SCOPED if (geometry->nP2PSend == 0) return; /*--- Local variables ---*/ @@ -365,6 +371,7 @@ void CSysMatrixComms::Initiate(const CSysVector& x, CGeometry* geometry, cons template void CSysMatrixComms::Complete(CSysVector& x, CGeometry* geometry, const CConfig* config, MPI_QUANTITIES commType) { + SU2_ZONE_SCOPED if (geometry->nP2PRecv == 0) return; /*--- Local variables ---*/ @@ -478,6 +485,7 @@ void CSysMatrixComms::Complete(CSysVector& x, CGeometry* geometry, const CCon template void CSysMatrix::SetValZero() { + SU2_ZONE_SCOPED const auto size = nnz * nVar * nEqn; const auto chunk = roundUpDiv(size, omp_get_num_threads()); const auto begin = chunk * omp_get_thread_num(); @@ -488,6 +496,7 @@ void CSysMatrix::SetValZero() { template void CSysMatrix::SetValDiagonalZero() { + SU2_ZONE_SCOPED SU2_OMP_FOR_STAT(omp_heavy_size) for (auto iPoint = 0ul; iPoint < nPointDomain; ++iPoint) for (auto index = 0ul; index < nVar * nEqn; ++index) matrix[dia_ptr[iPoint] * nVar * nEqn + index] = 0.0; @@ -602,6 +611,7 @@ void CSysMatrix::MatrixInverse(ScalarType* matrix, ScalarType* inver template void CSysMatrix::DeleteValsRowi(unsigned long block_i, unsigned long row) { + SU2_ZONE_SCOPED for (auto index = row_ptr[block_i]; index < row_ptr[block_i + 1]; index++) { for (auto iVar = 0u; iVar < nVar; iVar++) matrix[index * nVar * nVar + row * nVar + iVar] = 0.0; // Delete row values in the block @@ -613,6 +623,7 @@ void CSysMatrix::DeleteValsRowi(unsigned long block_i, unsigned long template void CSysMatrix::MatrixVectorProduct(const CSysVector& vec, CSysVector& prod, CGeometry* geometry, const CConfig* config) const { + SU2_ZONE_SCOPED /*--- Some checks for consistency between CSysMatrix and the CSysVectors ---*/ #ifndef NDEBUG if ((nEqn != vec.GetNVar()) || (nVar != prod.GetNVar())) { @@ -643,6 +654,7 @@ void CSysMatrix::MatrixVectorProduct(const CSysVector& v template void CSysMatrix::BuildJacobiPreconditioner() { + SU2_ZONE_SCOPED /*--- Build Jacobi preconditioner (M = D), compute and store the inverses of the diagonal blocks. ---*/ SU2_OMP_FOR_DYN(omp_heavy_size) for (unsigned long iPoint = 0; iPoint < nPointDomain; iPoint++) @@ -654,6 +666,7 @@ template void CSysMatrix::ComputeJacobiPreconditioner(const CSysVector& vec, CSysVector& prod, CGeometry* geometry, const CConfig* config) const { + SU2_ZONE_SCOPED /*--- Apply Jacobi preconditioner, y = D^{-1} * x, the inverse of the diagonal is already known. ---*/ SU2_OMP_BARRIER SU2_OMP_FOR_DYN(omp_heavy_size) @@ -668,6 +681,7 @@ void CSysMatrix::ComputeJacobiPreconditioner(const CSysVector void CSysMatrix::BuildILUPreconditioner() { + SU2_ZONE_SCOPED /*--- Copy block matrix to compute factorization in-place. ---*/ if (ilu_fill_in == 0) { @@ -766,6 +780,7 @@ void CSysMatrix::BuildILUPreconditioner() { template void CSysMatrix::ComputeILUPreconditioner(const CSysVector& vec, CSysVector& prod, CGeometry* geometry, const CConfig* config) const { + SU2_ZONE_SCOPED /*--- Coherent view of vectors. ---*/ SU2_OMP_BARRIER @@ -823,6 +838,7 @@ template void CSysMatrix::ComputeLU_SGSPreconditioner(const CSysVector& vec, CSysVector& prod, CGeometry* geometry, const CConfig* config) const { + SU2_ZONE_SCOPED /*--- First part of the symmetric iteration: (D+L).x* = b ---*/ /*--- Coherent view of vectors. ---*/ @@ -886,6 +902,7 @@ void CSysMatrix::ComputeLU_SGSPreconditioner(const CSysVector void CSysMatrix::BuildLineletPreconditioner(const CGeometry* geometry, const CConfig* config) { + SU2_ZONE_SCOPED BuildJacobiPreconditioner(); /*--- Allocate working vectors if not done yet. ---*/ @@ -917,6 +934,7 @@ template void CSysMatrix::ComputeLineletPreconditioner(const CSysVector& vec, CSysVector& prod, CGeometry* geometry, const CConfig* config) const { + SU2_ZONE_SCOPED /*--- Coherent view of vectors. ---*/ SU2_OMP_BARRIER @@ -1021,6 +1039,7 @@ void CSysMatrix::ComputeLineletPreconditioner(const CSysVector void CSysMatrix::ComputeResidual(const CSysVector& sol, const CSysVector& f, CSysVector& res) const { + SU2_ZONE_SCOPED SU2_OMP_BARRIER SU2_OMP_FOR_DYN(omp_heavy_size) for (unsigned long iPoint = 0; iPoint < nPointDomain; iPoint++) { @@ -1035,6 +1054,7 @@ template template void CSysMatrix::EnforceSolutionAtNode(const unsigned long node_i, const OtherType* x_i, CSysVector& b) { + SU2_ZONE_SCOPED /*--- Eliminate the row associated with node i (Block_ii = I and all other Block_ij = 0). * To preserve eventual symmetry, also attempt to eliminate the column, if the sparse pattern is not * symmetric the entire column may not be eliminated, the result (matrix and vector) is still correct. @@ -1076,6 +1096,8 @@ void CSysMatrix::EnforceSolutionAtNode(const unsigned long node_i, c template template void CSysMatrix::EnforceZeroProjection(unsigned long node_i, const OtherType* n, CSysVector& b) { + SU2_ZONE_SCOPED + for (auto index = row_ptr[node_i]; index < row_ptr[node_i + 1]; ++index) { const auto node_j = col_ind[index]; @@ -1132,6 +1154,8 @@ void CSysMatrix::EnforceZeroProjection(unsigned long node_i, const O template void CSysMatrix::SetDiagonalAsColumnSum() { + SU2_ZONE_SCOPED + SU2_OMP_FOR_DYN(omp_heavy_size) for (auto iPoint = 0ul; iPoint < nPoint; ++iPoint) { auto block_ii = &matrix[dia_ptr[iPoint] * nVar * nEqn]; @@ -1148,6 +1172,7 @@ void CSysMatrix::SetDiagonalAsColumnSum() { template void CSysMatrix::TransposeInPlace() { + SU2_ZONE_SCOPED assert(nVar == nEqn && "Cannot transpose with nVar != nEqn."); auto swapAndTransp = [](unsigned long n, ScalarType* a, ScalarType* b) { @@ -1223,6 +1248,7 @@ void CSysMatrix::TransposeInPlace() { template void CSysMatrix::MatrixMatrixAddition(ScalarType alpha, const CSysMatrix& B) { + SU2_ZONE_SCOPED /*--- Check that the sparse structure is shared between the two matrices, * comparing pointers is ok as they are obtained from CGeometry. ---*/ bool ok = (row_ptr == B.row_ptr) && (col_ind == B.col_ind) && (nVar == B.nVar) && (nEqn == B.nEqn) && (nnz == B.nnz); @@ -1239,6 +1265,7 @@ void CSysMatrix::MatrixMatrixAddition(ScalarType alpha, const CSysMa template void CSysMatrix::BuildPastixPreconditioner(CGeometry* geometry, const CConfig* config, unsigned short kind_fact) { + SU2_ZONE_SCOPED #ifdef HAVE_PASTIX /*--- Pastix will launch nested threads. ---*/ BEGIN_SU2_OMP_SAFE_GLOBAL_ACCESS { @@ -1255,6 +1282,7 @@ template void CSysMatrix::ComputePastixPreconditioner(const CSysVector& vec, CSysVector& prod, CGeometry* geometry, const CConfig* config) const { + SU2_ZONE_SCOPED #ifdef HAVE_PASTIX SU2_OMP_SAFE_GLOBAL_ACCESS(pastix_wrapper.Solve(vec, prod);) diff --git a/Common/src/linear_algebra/CSysSolve.cpp b/Common/src/linear_algebra/CSysSolve.cpp index 04497a80c79e..d4e1bc95289c 100644 --- a/Common/src/linear_algebra/CSysSolve.cpp +++ b/Common/src/linear_algebra/CSysSolve.cpp @@ -62,6 +62,8 @@ constexpr float linSolEpsilon() { template void LinearCombinationImpl(const unsigned long n, const Vectors& vs, const Weights& ws, CSysVector& v, bool inc = false) { + SU2_ZONE_SCOPED + if (n == 0) { if (!inc) v = ScalarType{}; return; @@ -191,6 +193,7 @@ void CSysSolve::SolveReduced(int n, const su2matrix& Hsb template bool CSysSolve::ModGramSchmidt(bool shared_hsbg, int i, su2matrix& Hsbg, vector>& w) const { + SU2_ZONE_SCOPED const auto thread = omp_get_thread_num(); /*--- If Hsbg is shared by multiple threads calling this function, only one @@ -293,6 +296,8 @@ unsigned long CSysSolve::CG_LinSolver(const CSysVector& const CPreconditioner& precond, ScalarType tol, unsigned long m, ScalarType& residual, bool monitoring, const CConfig* config) const { + SU2_ZONE_SCOPED + const bool masterRank = (SU2_MPI::GetRank() == MASTER_NODE); ScalarType norm_r = 0.0, norm0 = 0.0; unsigned long i = 0; @@ -442,6 +447,8 @@ unsigned long CSysSolve::FGMRES_LinSolver(const CSysVector& precond, ScalarType tol, unsigned long m, ScalarType& residual, bool monitoring, const CConfig* config) const { + SU2_ZONE_SCOPED + const bool masterRank = (SU2_MPI::GetRank() == MASTER_NODE); const bool flexible = !precond.IsIdentity(); /*--- If we call the solver outside of a parallel region, but the number of threads allows, @@ -671,6 +678,7 @@ unsigned long CSysSolve::FGCRODR_LinSolverImpl(const CSysVector; using EigenVector = Eigen::Matrix; @@ -1067,6 +1075,8 @@ unsigned long CSysSolve::BCGSTAB_LinSolver(const CSysVector& precond, ScalarType tol, unsigned long m, ScalarType& residual, bool monitoring, const CConfig* config) const { + SU2_ZONE_SCOPED + const bool masterRank = (SU2_MPI::GetRank() == MASTER_NODE); ScalarType norm_r = 0.0, norm0 = 0.0; unsigned long i = 0; @@ -1240,6 +1250,8 @@ unsigned long CSysSolve::Smoother_LinSolver(const CSysVector& precond, ScalarType tol, unsigned long m, ScalarType& residual, bool monitoring, const CConfig* config) const { + SU2_ZONE_SCOPED + const bool masterRank = (SU2_MPI::GetRank() == MASTER_NODE); const bool fix_iter_mode = tol < eps; ScalarType norm_r = 0.0, norm0 = 0.0; @@ -1394,6 +1406,7 @@ template unsigned long CSysSolve::Solve(CSysMatrix& Jacobian, const CSysVector& LinSysRes, CSysVector& LinSysSol, CGeometry* geometry, const CConfig* config) { + SU2_ZONE_SCOPED /*--- A word about the templated types. It is assumed that the residual and solution vectors are always of su2doubles, meaning that they are active in the discrete adjoint. The same assumption is made in SetExternalSolve. @@ -1610,6 +1623,8 @@ template unsigned long CSysSolve::Solve_b(CSysMatrix& Jacobian, const CSysVector& LinSysRes, CSysVector& LinSysSol, CGeometry* geometry, const CConfig* config, const bool directCall) { + SU2_ZONE_SCOPED + unsigned short KindSolver, KindPrecond; unsigned long MaxIter, IterLinSol = 0; ScalarType SolverTol; diff --git a/Common/src/linear_algebra/CSysVector.cpp b/Common/src/linear_algebra/CSysVector.cpp index 8f767f44ab4c..2a31026a232a 100644 --- a/Common/src/linear_algebra/CSysVector.cpp +++ b/Common/src/linear_algebra/CSysVector.cpp @@ -72,13 +72,14 @@ const su2matrix& CSysVector::multiDot(const std::vector< const size_t i0, const size_t n, const std::vector>& W, const size_t m) { + SU2_ZONE_SCOPED static constexpr size_t BLOCK_SIZE = 1024; static su2matrix shared; if (n == 0 || m == 0) return shared; SU2_OMP_BARRIER - const auto size = V[0].nElmDomain; + const size_t size = V[0].nElmDomain; su2matrix local(n, m); local.setConstant(0); diff --git a/SU2_CFD/include/solvers/CFVMFlowSolverBase.hpp b/SU2_CFD/include/solvers/CFVMFlowSolverBase.hpp index 9f04b0cbaf69..74b240707153 100644 --- a/SU2_CFD/include/solvers/CFVMFlowSolverBase.hpp +++ b/SU2_CFD/include/solvers/CFVMFlowSolverBase.hpp @@ -287,6 +287,7 @@ class CFVMFlowSolverBase : public CSolver { */ inline void FinalizeResidualComputation(const CGeometry *geometry, bool pausePreacc, unsigned long localCounter, CConfig* config) { + SU2_ZONE_SCOPED /*--- Restore preaccumulation and adjoint evaluation state. ---*/ AD::ResumePreaccumulation(pausePreacc); @@ -2434,7 +2435,7 @@ class CFVMFlowSolverBase : public CSolver { return UTau[val_marker][val_vertex]; } - /*! + /*! * \brief Get the eddy viscosity at the wall (wall functions). * \param[in] val_marker - Surface marker where the coefficient is computed. * \param[in] val_vertex - Vertex of the marker val_marker where the coefficient is evaluated. diff --git a/SU2_CFD/include/solvers/CFVMFlowSolverBase.inl b/SU2_CFD/include/solvers/CFVMFlowSolverBase.inl index cc2fa9a9e5ab..2d30f315ba2d 100644 --- a/SU2_CFD/include/solvers/CFVMFlowSolverBase.inl +++ b/SU2_CFD/include/solvers/CFVMFlowSolverBase.inl @@ -84,6 +84,8 @@ void CFVMFlowSolverBase::AeroCoeffsArray::setZero(int i) { template void CFVMFlowSolverBase::Allocate(const CConfig& config) { + SU2_ZONE_SCOPED + /*--- Define some auxiliar vector related with the residual ---*/ Residual_RMS.resize(nVar,0.0); @@ -216,6 +218,8 @@ void CFVMFlowSolverBase::Allocate(const CConfig& config) { template void CFVMFlowSolverBase::AllocateTerribleLegacyTemporaryVariables() { + SU2_ZONE_SCOPED + /*--- Define some auxiliary vectors related to the residual ---*/ Residual = new su2double[nVar](); @@ -247,6 +251,8 @@ void CFVMFlowSolverBase::AllocateTerribleLegacyTemporaryVariables() { template void CFVMFlowSolverBase::CommunicateInitialState(CGeometry* geometry, const CConfig* config) { + SU2_ZONE_SCOPED + /*--- Define solver parameters needed for execution of destructor ---*/ space_centered = (config->GetKind_ConvNumScheme_Flow() == SPACE_CENTERED); @@ -283,6 +289,8 @@ void CFVMFlowSolverBase::CommunicateInitialState(CGeometry* geometry, cons template void CFVMFlowSolverBase::HybridParallelInitialization(const CConfig& config, CGeometry& geometry) { + SU2_ZONE_SCOPED + #ifdef HAVE_OMP /*--- Get the edge coloring. If the expected parallel efficiency becomes too low setup the * reducer strategy. Where one loop is performed over edges followed by a point loop to @@ -370,6 +378,7 @@ void CFVMFlowSolverBase::HybridParallelInitialization(const CConfig& confi template CFVMFlowSolverBase::~CFVMFlowSolverBase() { + SU2_ZONE_SCOPED for (auto& mat : SlidingState) { for (auto ptr : mat) delete [] ptr; @@ -382,6 +391,8 @@ CFVMFlowSolverBase::~CFVMFlowSolverBase() { template void CFVMFlowSolverBase::SetPrimitive_Gradient_GG(CGeometry* geometry, const CConfig* config, bool reconstruction) { + SU2_ZONE_SCOPED + const auto& primitives = nodes->GetPrimitive(); auto& gradient = reconstruction ? nodes->GetGradient_Reconstruction() : nodes->GetGradient_Primitive(); const auto comm = reconstruction? MPI_QUANTITIES::PRIMITIVE_GRAD_REC : MPI_QUANTITIES::PRIMITIVE_GRADIENT; @@ -393,6 +404,8 @@ void CFVMFlowSolverBase::SetPrimitive_Gradient_GG(CGeometry* geometry, con template void CFVMFlowSolverBase::SetPrimitive_Gradient_LS(CGeometry* geometry, const CConfig* config, bool reconstruction) { + SU2_ZONE_SCOPED + /*--- Set a flag for unweighted or weighted least-squares. ---*/ bool weighted; PERIODIC_QUANTITIES commPer; @@ -417,6 +430,8 @@ void CFVMFlowSolverBase::SetPrimitive_Gradient_LS(CGeometry* geometry, con template void CFVMFlowSolverBase::SetPrimitive_Limiter(CGeometry* geometry, const CConfig* config) { + SU2_ZONE_SCOPED + const auto kindLimiter = config->GetKind_SlopeLimit_Flow(); const auto umusclKappa = config->GetMUSCL_Kappa_Flow(); const auto& primitives = nodes->GetPrimitive(); @@ -432,6 +447,7 @@ void CFVMFlowSolverBase::SetPrimitive_Limiter(CGeometry* geometry, const C template void CFVMFlowSolverBase::Viscous_Residual_impl(unsigned long iEdge, CGeometry *geometry, CSolver **solver_container, CNumerics *numerics, CConfig *config) { + SU2_ZONE_SCOPED const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); const bool tkeNeeded = (config->GetKind_Turb_Model() == TURB_MODEL::SST); @@ -494,6 +510,7 @@ void CFVMFlowSolverBase::Viscous_Residual_impl(unsigned long iEdge, CGeome template void CFVMFlowSolverBase::ComputeVerificationError(CGeometry* geometry, CConfig* config) { + SU2_ZONE_SCOPED /*--- The errors only need to be computed on the finest grid. ---*/ if (MGLevel != MESH_0) return; @@ -557,6 +574,8 @@ void CFVMFlowSolverBase::ComputeVerificationError(CGeometry* geometry, CCo template void CFVMFlowSolverBase::ComputeUnderRelaxationFactor(const CConfig* config) { + SU2_ZONE_SCOPED + /* Loop over the solution update given by relaxing the linear system for this nonlinear iteration. */ @@ -594,6 +613,7 @@ void CFVMFlowSolverBase::ComputeUnderRelaxationFactor(const CConfig* confi template void CFVMFlowSolverBase::ImplicitEuler_Iteration(CGeometry *geometry, CSolver**, CConfig *config) { + SU2_ZONE_SCOPED PrepareImplicitIteration(geometry, nullptr, config); @@ -619,6 +639,7 @@ void CFVMFlowSolverBase::ImplicitEuler_Iteration(CGeometry *geometry, CSol template void CFVMFlowSolverBase::ComputeVorticityAndStrainMag(const CConfig& config, const CGeometry *geometry, unsigned short iMesh) { + SU2_ZONE_SCOPED auto& StrainMag = nodes->GetStrainMag(); @@ -703,6 +724,8 @@ void CFVMFlowSolverBase::ComputeVorticityAndStrainMag(const CConfig& confi template void CFVMFlowSolverBase::SetInletAtVertex(const su2double* val_inlet, unsigned short iMarker, unsigned long iVertex) { + SU2_ZONE_SCOPED + /*--- Alias positions within inlet file for readability ---*/ unsigned short T_position = nDim; @@ -724,6 +747,8 @@ void CFVMFlowSolverBase::SetInletAtVertex(const su2double* val_inlet, unsi template su2double CFVMFlowSolverBase::GetInletAtVertex(unsigned short iMarker, unsigned long iVertex, const CGeometry* geometry, su2double* val_inlet) const { + SU2_ZONE_SCOPED + const auto T_position = nDim; const auto P_position = nDim + 1; const auto FlowDir_position = nDim + 2; @@ -742,6 +767,8 @@ su2double CFVMFlowSolverBase::GetInletAtVertex(unsigned short iMarker, uns template void CFVMFlowSolverBase::SetUniformInlet(const CConfig* config, unsigned short iMarker) { + SU2_ZONE_SCOPED + if (config->GetMarker_All_KindBC(iMarker) == INLET_FLOW) { const string Marker_Tag = config->GetMarker_All_TagBound(iMarker); const su2double p_total = config->GetInletPtotal(Marker_Tag); @@ -778,6 +805,8 @@ void CFVMFlowSolverBase::SetUniformInlet(const CConfig* config, unsigned s template void CFVMFlowSolverBase::UpdateCustomBoundaryConditions( CGeometry** geometry_container, CSolver*** solver_container, CConfig *config) { + SU2_ZONE_SCOPED + struct { const CSolver* fine_solver{nullptr}; CSolver* coarse_solver{nullptr}; @@ -822,6 +851,8 @@ template void CFVMFlowSolverBase::LoadRestart_impl(CGeometry **geometry, CSolver ***solver, CConfig *config, int iter, bool update_geo, su2double* SolutionRestart, unsigned short nVar_Restart) { + SU2_ZONE_SCOPED + /*--- Restart the solution from file information ---*/ string restart_filename = config->GetSolution_FileName(); @@ -1007,12 +1038,14 @@ void CFVMFlowSolverBase::LoadRestart_impl(CGeometry **geometry, CSolver ** template void CFVMFlowSolverBase::LoadRestart(CGeometry **geometry, CSolver ***solver, CConfig *config, int iter, bool update_geo) { + SU2_ZONE_SCOPED LoadRestart_impl(geometry, solver, config, iter, update_geo); } template void CFVMFlowSolverBase::SetInitialCondition(CGeometry **geometry, CSolver ***solver_container, CConfig *config, unsigned long TimeIter) { + SU2_ZONE_SCOPED const bool restart = (config->GetRestart() || config->GetRestart_Flow()); const bool rans = (config->GetKind_Turb_Model() != TURB_MODEL::NONE); @@ -1064,6 +1097,8 @@ template void CFVMFlowSolverBase::PushSolutionBackInTime(unsigned long TimeIter, bool restart, bool rans, CSolver*** solver_container, CGeometry** geometry, CConfig* config) { + SU2_ZONE_SCOPED + /*--- Push back the initial condition to previous solution containers for a 1st-order restart or when simply initializing to freestream. ---*/ @@ -1111,6 +1146,8 @@ void CFVMFlowSolverBase::PushSolutionBackInTime(unsigned long TimeIter, bo template void CFVMFlowSolverBase::BC_Sym_Plane(CGeometry* geometry, CSolver** solver_container, CNumerics* conv_numerics, CNumerics* visc_numerics, CConfig* config, unsigned short val_marker) { + SU2_ZONE_SCOPED + const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); const auto iVel = prim_idx.Velocity(); @@ -1272,6 +1309,8 @@ void CFVMFlowSolverBase::BC_Sym_Plane(CGeometry* geometry, CSolve template void CFVMFlowSolverBase::BC_Periodic(CGeometry* geometry, CSolver** solver_container, CNumerics* numerics, CConfig* config) { + SU2_ZONE_SCOPED + /*--- Complete residuals for periodic boundary conditions. We loop over the periodic BCs in matching pairs so that, in the event that there are adjacent periodic markers, the repeated points will have their residuals @@ -1288,6 +1327,8 @@ template void CFVMFlowSolverBase::BC_Fluid_Interface(CGeometry* geometry, CSolver** solver_container, CNumerics* conv_numerics, CNumerics* visc_numerics, CConfig* config) { + SU2_ZONE_SCOPED + unsigned long iVertex, jVertex, iPoint, Point_Normal = 0; unsigned short iDim, iVar, jVar, iMarker, nDonorVertex; @@ -1451,6 +1492,8 @@ void CFVMFlowSolverBase::BC_Fluid_Interface(CGeometry* geometry, template void CFVMFlowSolverBase::BC_Custom(CGeometry* geometry, CSolver** solver_container, CNumerics* conv_numerics, CNumerics* visc_numerics, CConfig* config, unsigned short val_marker) { + SU2_ZONE_SCOPED + /* Check for a verification solution. */ if (VerificationSolution) { @@ -1514,6 +1557,8 @@ template void CFVMFlowSolverBase::EdgeFluxResidual(const CGeometry *geometry, const CSolver* const* solvers, CConfig *config) { + SU2_ZONE_SCOPED + if (!edgeNumerics) { if (!ReducerStrategy && (omp_get_max_threads() > 1) && (config->GetEdgeColoringGroupSize() % Double::Size != 0)) { @@ -1571,6 +1616,7 @@ void CFVMFlowSolverBase::EdgeFluxResidual(const CGeometry *geometry, template void CFVMFlowSolverBase::SumEdgeFluxes(const CGeometry* geometry) { + SU2_ZONE_SCOPED SU2_OMP_FOR_STAT(omp_chunk_size) for (unsigned long iPoint = 0; iPoint < nPoint; ++iPoint) { diff --git a/SU2_CFD/include/solvers/CScalarSolver.inl b/SU2_CFD/include/solvers/CScalarSolver.inl index b02cfacf064c..81f6cdbb55cb 100644 --- a/SU2_CFD/include/solvers/CScalarSolver.inl +++ b/SU2_CFD/include/solvers/CScalarSolver.inl @@ -34,6 +34,8 @@ CScalarSolver::CScalarSolver(CGeometry* geometry, CConfig* config, : CSolver(), Conservative(conservative), prim_idx(config->GetKind_Regime() == ENUM_REGIME::INCOMPRESSIBLE, config->GetNEMOProblem(), geometry->GetnDim(), config->GetnSpecies()) { + SU2_ZONE_SCOPED + nMarker = config->GetnMarker_All(); /*--- Store the number of vertices on each marker for deallocation later ---*/ @@ -89,6 +91,8 @@ CScalarSolver::~CScalarSolver() { template void CScalarSolver::CommonPreprocessing(CGeometry *geometry, const CConfig *config, const bool Output) { + SU2_ZONE_SCOPED + /*--- Define booleans that are solver specific through CConfig's GlobalParams which have to be set in CFluidIteration * before calling these solver functions. ---*/ const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); @@ -129,6 +133,8 @@ template void CScalarSolver::Upwind_Residual(CGeometry* geometry, CSolver** solver_container, CNumerics** numerics_container, CConfig* config, unsigned short iMesh) { + SU2_ZONE_SCOPED + /*--- Define booleans that are solver specific through CConfig's GlobalParams which have to be set in CFluidIteration * before calling these solver functions. ---*/ const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); @@ -343,6 +349,8 @@ void CScalarSolver::Upwind_Residual(CGeometry* geometry, CSolver** template void CScalarSolver::SumEdgeFluxes(CGeometry* geometry) { + SU2_ZONE_SCOPED + const bool nonConservative = EdgeFluxesDiff.GetLocSize() > 0; SU2_OMP_FOR_STAT(omp_chunk_size) @@ -366,6 +374,7 @@ void CScalarSolver::SumEdgeFluxes(CGeometry* geometry) { template void CScalarSolver::BC_Periodic(CGeometry* geometry, CSolver** solver_container, CNumerics* numerics, CConfig* config) { + SU2_ZONE_SCOPED /*--- Complete residuals for periodic boundary conditions. We loop over the periodic BCs in matching pairs so that, in the event that there are adjacent periodic markers, the repeated points will have their residuals @@ -382,7 +391,7 @@ template void CScalarSolver::BC_Far_Field(CGeometry* geometry, CSolver** solver_container, CNumerics* conv_numerics, CNumerics*, CConfig *config, unsigned short val_marker) { - + SU2_ZONE_SCOPED const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); SU2_OMP_FOR_STAT(OMP_MIN_SIZE) @@ -442,6 +451,8 @@ void CScalarSolver::BC_Far_Field(CGeometry* geometry, CSolver** so template void CScalarSolver::SetTime_Step(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, unsigned long Iteration) { + SU2_ZONE_SCOPED + const auto flowNodes = solver_container[FLOW_SOL]->GetNodes(); SU2_OMP_FOR_STAT(omp_chunk_size) @@ -455,6 +466,8 @@ void CScalarSolver::SetTime_Step(CGeometry *geometry, CSolver **so template void CScalarSolver::PrepareImplicitIteration(CGeometry* geometry, CSolver** solver_container, CConfig* config) { + SU2_ZONE_SCOPED + /*--- Set shared residual variables to 0 and declare * local ones for current thread to work on. ---*/ @@ -497,6 +510,8 @@ void CScalarSolver::PrepareImplicitIteration(CGeometry* geometry, template void CScalarSolver::CompleteImplicitIteration(CGeometry* geometry, CSolver** solver_container, CConfig* config) { + SU2_ZONE_SCOPED + ComputeUnderRelaxationFactor(solver_container, config); /*--- Update solution (system written in terms of increments) ---*/ @@ -544,6 +559,8 @@ void CScalarSolver::CompleteImplicitIteration(CGeometry* geometry, template void CScalarSolver::ImplicitEuler_Iteration(CGeometry* geometry, CSolver** solver_container, CConfig* config) { + SU2_ZONE_SCOPED + PrepareImplicitIteration(geometry, solver_container, config); /*--- Solve or smooth the linear system. ---*/ @@ -569,6 +586,8 @@ void CScalarSolver::ImplicitEuler_Iteration(CGeometry* geometry, C template void CScalarSolver::ExplicitEuler_Iteration(CGeometry* geometry, CSolver** solver_container, CConfig* config) { + SU2_ZONE_SCOPED + /*--- Local residual variables for current thread ---*/ su2double resMax[MAXNVAR] = {0.0}, resRMS[MAXNVAR] = {0.0}; unsigned long idxMax[MAXNVAR] = {0}; @@ -598,6 +617,8 @@ template void CScalarSolver::SetResidual_DualTime(CGeometry* geometry, CSolver** solver_container, CConfig* config, unsigned short iRKStep, unsigned short iMesh, unsigned short RunTime_EqSystem) { + SU2_ZONE_SCOPED + const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); const bool first_order = (config->GetTime_Marching() == TIME_MARCHING::DT_STEPPING_1ST); const bool second_order = (config->GetTime_Marching() == TIME_MARCHING::DT_STEPPING_2ND); @@ -839,6 +860,7 @@ template void CScalarSolver::PushSolutionBackInTime(unsigned long TimeIter, bool restart,CSolver*** solver_container, CGeometry** geometry, CConfig* config) { + SU2_ZONE_SCOPED const bool dual_time = config->GetTime_Marching() == TIME_MARCHING::DT_STEPPING_1ST || config->GetTime_Marching() == TIME_MARCHING::DT_STEPPING_2ND; const bool isRestartIter = restart && TimeIter == config->GetRestart_Iter(); diff --git a/SU2_CFD/src/SU2_CFD.cpp b/SU2_CFD/src/SU2_CFD.cpp index e0179ff9333e..a8ebd1884a5c 100644 --- a/SU2_CFD/src/SU2_CFD.cpp +++ b/SU2_CFD/src/SU2_CFD.cpp @@ -26,6 +26,7 @@ */ #include "../include/SU2_CFD.hpp" +#include "../../Common/include/tracy_structure.hpp" /* Include file, needed for the runtime NaN catching. You also have to include feenableexcept(...) below. */ //#include @@ -95,6 +96,7 @@ int main(int argc, char *argv[]) { const bool multizone = config.GetMultizone_Problem(); const bool harmonic_balance = (config.GetTime_Marching() == TIME_MARCHING::HARMONIC_BALANCE); + BEGIN_SU2_ZONE_N("Preprocessing") if (dry_run) { /*--- Dry Run. ---*/ @@ -133,6 +135,7 @@ int main(int argc, char *argv[]) { driver = new CHBDriver(config_file_name, nZone, MPICommunicator); } + END_SU2_ZONE /*--- Launch the main external loop of the solver. ---*/ diff --git a/SU2_CFD/src/drivers/CDiscAdjMultizoneDriver.cpp b/SU2_CFD/src/drivers/CDiscAdjMultizoneDriver.cpp index c41544a8f3a4..f192d8ef9f98 100644 --- a/SU2_CFD/src/drivers/CDiscAdjMultizoneDriver.cpp +++ b/SU2_CFD/src/drivers/CDiscAdjMultizoneDriver.cpp @@ -36,6 +36,7 @@ CDiscAdjMultizoneDriver::CDiscAdjMultizoneDriver(char* confFile, SU2_Comm MPICommunicator) : CMultizoneDriver(confFile, val_nZone, MPICommunicator) { + SU2_ZONE_SCOPED direct_nInst.resize(nZone,1); nInnerIter.resize(nZone); @@ -110,6 +111,7 @@ CDiscAdjMultizoneDriver::CDiscAdjMultizoneDriver(char* confFile, } CDiscAdjMultizoneDriver::~CDiscAdjMultizoneDriver(){ + SU2_ZONE_SCOPED for (iZone = 0; iZone < nZone; iZone++){ for (iInst = 0; iInst < direct_nInst[iZone]; iInst++){ @@ -125,6 +127,7 @@ CDiscAdjMultizoneDriver::~CDiscAdjMultizoneDriver(){ } void CDiscAdjMultizoneDriver::Preprocess(unsigned long TimeIter) { + SU2_ZONE_SCOPED const bool time_domain = driver_config->GetTime_Domain(); @@ -158,6 +161,7 @@ void CDiscAdjMultizoneDriver::Preprocess(unsigned long TimeIter) { } void CDiscAdjMultizoneDriver::StartSolver() { + SU2_ZONE_SCOPED /*--- Start the debug recording mode for the discrete adjoint solver. ---*/ @@ -230,6 +234,7 @@ void CDiscAdjMultizoneDriver::StartSolver() { } void CDiscAdjMultizoneDriver::TapeTest() { + SU2_ZONE_SCOPED if (rank == MASTER_NODE) { cout <<"\n---------------------------- Start Debug Run ----------------------------" << endl; @@ -300,6 +305,7 @@ void CDiscAdjMultizoneDriver::TapeTest() { } int CDiscAdjMultizoneDriver::TapeTestGatherErrors(AD::ErrorReport& error_report) const { + SU2_ZONE_SCOPED int num_errors = AD::GetErrorCount(error_report); int total_errors = 0; @@ -320,6 +326,7 @@ int CDiscAdjMultizoneDriver::TapeTestGatherErrors(AD::ErrorReport& error_report) } bool CDiscAdjMultizoneDriver::Iterate(unsigned short iZone, unsigned long iInnerIter, bool KrylovMode) { + SU2_ZONE_SCOPED config_container[iZone]->SetInnerIter(iInnerIter); @@ -356,6 +363,7 @@ bool CDiscAdjMultizoneDriver::Iterate(unsigned short iZone, unsigned long iInner } void CDiscAdjMultizoneDriver::KrylovInnerIters(unsigned short iZone) { + SU2_ZONE_SCOPED /*--- Use FGMRES to solve the adjoint system, the RHS is -External, * the solution are the iZone adjoint variables + External, @@ -408,6 +416,7 @@ void CDiscAdjMultizoneDriver::KrylovInnerIters(unsigned short iZone) { } void CDiscAdjMultizoneDriver::Run() { + SU2_ZONE_SCOPED const unsigned long nOuterIter = driver_config->GetnOuter_Iter(); const bool time_domain = driver_config->GetTime_Domain(); @@ -581,6 +590,7 @@ void CDiscAdjMultizoneDriver::Run() { } bool CDiscAdjMultizoneDriver::EvaluateObjectiveFunctionGradient() { + SU2_ZONE_SCOPED /*--- Evaluate the objective function gradient w.r.t. the solutions of all zones. ---*/ @@ -614,6 +624,7 @@ bool CDiscAdjMultizoneDriver::EvaluateObjectiveFunctionGradient() { } void CDiscAdjMultizoneDriver::EvaluateSensitivities(unsigned long Iter, bool force_writing) { + SU2_ZONE_SCOPED /*--- SetRecording stores the computational graph on one iteration of the direct problem. Calling it with NONE * as argument ensures that all information from a previous recording is removed. ---*/ @@ -686,6 +697,7 @@ void CDiscAdjMultizoneDriver::EvaluateSensitivities(unsigned long Iter, bool for } void CDiscAdjMultizoneDriver::SetRecording(RECORDING kind_recording, Kind_Tape tape_type, unsigned short record_zone) { + SU2_ZONE_SCOPED AD::Reset(); @@ -802,6 +814,7 @@ void CDiscAdjMultizoneDriver::SetRecording(RECORDING kind_recording, Kind_Tape t } void CDiscAdjMultizoneDriver::DirectIteration(unsigned short iZone, RECORDING kind_recording) { + SU2_ZONE_SCOPED /*--- Do one iteration of the direct solver ---*/ direct_iteration[iZone][INST_0]->Preprocess(output_container[iZone], integration_container, geometry_container, @@ -816,6 +829,7 @@ void CDiscAdjMultizoneDriver::DirectIteration(unsigned short iZone, RECORDING ki } void CDiscAdjMultizoneDriver::SetObjFunction(RECORDING kind_recording) { + SU2_ZONE_SCOPED ObjFunc = 0.0; @@ -875,6 +889,7 @@ void CDiscAdjMultizoneDriver::SetObjFunction(RECORDING kind_recording) { } void CDiscAdjMultizoneDriver::SetAdjObjFunction() { + SU2_ZONE_SCOPED su2double seeding = 1.0; if (config_container[ZONE_0]->GetTime_Domain()) { @@ -899,6 +914,7 @@ void CDiscAdjMultizoneDriver::SetAdjObjFunction() { } void CDiscAdjMultizoneDriver::ComputeAdjoints(unsigned short iZone, bool eval_transfer) { + SU2_ZONE_SCOPED #if defined(CODI_INDEX_REUSE) if (nZone > 1 && rank == MASTER_NODE) { @@ -935,6 +951,7 @@ void CDiscAdjMultizoneDriver::ComputeAdjoints(unsigned short iZone, bool eval_tr } void CDiscAdjMultizoneDriver::InitializeCrossTerms() { + SU2_ZONE_SCOPED if (Cross_Terms.empty()) { Cross_Terms.resize(nZone, vector >(nZone)); @@ -965,6 +982,7 @@ void CDiscAdjMultizoneDriver::InitializeCrossTerms() { } void CDiscAdjMultizoneDriver::HandleDataTransfer() { + SU2_ZONE_SCOPED for(iZone = 0; iZone < nZone; iZone++) { @@ -988,6 +1006,7 @@ void CDiscAdjMultizoneDriver::HandleDataTransfer() { } void CDiscAdjMultizoneDriver::AddSolutionToExternal(unsigned short iZone) { + SU2_ZONE_SCOPED for (unsigned short iSol=0; iSol < MAX_SOLS; iSol++) { auto solver = solver_container[iZone][INST_0][MESH_0][iSol]; @@ -997,6 +1016,7 @@ void CDiscAdjMultizoneDriver::AddSolutionToExternal(unsigned short iZone) { } void CDiscAdjMultizoneDriver::SetExternalToDualTimeDer() { + SU2_ZONE_SCOPED for (unsigned short iZone = 0; iZone < nZone; iZone++) { for (unsigned short iSol=0; iSol < MAX_SOLS; iSol++) { @@ -1008,6 +1028,7 @@ void CDiscAdjMultizoneDriver::SetExternalToDualTimeDer() { } void CDiscAdjMultizoneDriver::AddExternalToSolution(unsigned short iZone) { + SU2_ZONE_SCOPED for (unsigned short iSol=0; iSol < MAX_SOLS; iSol++) { auto solver = solver_container[iZone][INST_0][MESH_0][iSol]; @@ -1017,6 +1038,7 @@ void CDiscAdjMultizoneDriver::AddExternalToSolution(unsigned short iZone) { } void CDiscAdjMultizoneDriver::SetSolutionOldToSolution(unsigned short iZone) { + SU2_ZONE_SCOPED for (unsigned short iSol=0; iSol < MAX_SOLS; iSol++) { auto solver = solver_container[iZone][INST_0][MESH_0][iSol]; @@ -1026,6 +1048,7 @@ void CDiscAdjMultizoneDriver::SetSolutionOldToSolution(unsigned short iZone) { } void CDiscAdjMultizoneDriver::UpdateCrossTerm(unsigned short iZone, unsigned short jZone) { + SU2_ZONE_SCOPED for (unsigned short iSol=0; iSol < MAX_SOLS; iSol++) { auto solver = solver_container[jZone][INST_0][MESH_0][iSol]; @@ -1035,6 +1058,7 @@ void CDiscAdjMultizoneDriver::UpdateCrossTerm(unsigned short iZone, unsigned sho } void CDiscAdjMultizoneDriver::Set_Solution_To_BGSSolution_k(unsigned short iZone) { + SU2_ZONE_SCOPED for (unsigned short iSol=0; iSol < MAX_SOLS; iSol++) { auto solver = solver_container[iZone][INST_0][MESH_0][iSol]; @@ -1044,6 +1068,7 @@ void CDiscAdjMultizoneDriver::Set_Solution_To_BGSSolution_k(unsigned short iZone } void CDiscAdjMultizoneDriver::Set_BGSSolution_k_To_Solution(unsigned short iZone) { + SU2_ZONE_SCOPED for (unsigned short iSol=0; iSol < MAX_SOLS; iSol++) { auto solver = solver_container[iZone][INST_0][MESH_0][iSol]; @@ -1053,6 +1078,7 @@ void CDiscAdjMultizoneDriver::Set_BGSSolution_k_To_Solution(unsigned short iZone } void CDiscAdjMultizoneDriver::SetResidual_BGS(unsigned short iZone) { + SU2_ZONE_SCOPED for (unsigned short iSol=0; iSol < MAX_SOLS; iSol++) { auto solver = solver_container[iZone][INST_0][MESH_0][iSol]; diff --git a/SU2_CFD/src/drivers/CDiscAdjSinglezoneDriver.cpp b/SU2_CFD/src/drivers/CDiscAdjSinglezoneDriver.cpp index ad7255e235f8..d22d842e0f53 100644 --- a/SU2_CFD/src/drivers/CDiscAdjSinglezoneDriver.cpp +++ b/SU2_CFD/src/drivers/CDiscAdjSinglezoneDriver.cpp @@ -121,6 +121,7 @@ CDiscAdjSinglezoneDriver::CDiscAdjSinglezoneDriver(char* confFile, } CDiscAdjSinglezoneDriver::~CDiscAdjSinglezoneDriver() { + SU2_ZONE_SCOPED delete direct_iteration; delete direct_output; @@ -128,6 +129,7 @@ CDiscAdjSinglezoneDriver::~CDiscAdjSinglezoneDriver() { } void CDiscAdjSinglezoneDriver::Preprocess(unsigned long TimeIter) { + SU2_ZONE_SCOPED /*--- Set the current time iteration in the config and also in the driver * because the python interface doesn't offer an explicit way of doing it. ---*/ @@ -152,6 +154,7 @@ void CDiscAdjSinglezoneDriver::Preprocess(unsigned long TimeIter) { } void CDiscAdjSinglezoneDriver::Run() { + SU2_ZONE_SCOPED CQuasiNewtonInvLeastSquares fixPtCorrector; if (config->GetnQuasiNewtonSamples() > 1) { @@ -217,6 +220,7 @@ void CDiscAdjSinglezoneDriver::Run() { } void CDiscAdjSinglezoneDriver::Postprocess() { + SU2_ZONE_SCOPED switch(config->GetKind_Solver()) { @@ -246,6 +250,7 @@ void CDiscAdjSinglezoneDriver::Postprocess() { } void CDiscAdjSinglezoneDriver::SetRecording(RECORDING kind_recording){ + SU2_ZONE_SCOPED AD::Reset(); @@ -313,6 +318,7 @@ void CDiscAdjSinglezoneDriver::SetRecording(RECORDING kind_recording){ } void CDiscAdjSinglezoneDriver::SetAdjObjFunction(){ + SU2_ZONE_SCOPED su2double seeding = 1.0; if (config->GetTime_Domain()) { @@ -335,6 +341,7 @@ void CDiscAdjSinglezoneDriver::SetAdjObjFunction(){ } void CDiscAdjSinglezoneDriver::SetObjFunction(){ + SU2_ZONE_SCOPED ObjFunc = 0.0; @@ -377,6 +384,7 @@ void CDiscAdjSinglezoneDriver::SetObjFunction(){ } void CDiscAdjSinglezoneDriver::DirectRun(RECORDING kind_recording){ + SU2_ZONE_SCOPED /*--- Mesh movement ---*/ @@ -401,6 +409,7 @@ void CDiscAdjSinglezoneDriver::DirectRun(RECORDING kind_recording){ } void CDiscAdjSinglezoneDriver::MainRecording(){ + SU2_ZONE_SCOPED /*--- SetRecording stores the computational graph on one iteration of the direct problem. Calling it with * RECORDING::CLEAR_INDICES as argument ensures that all information from a previous recording is removed. ---*/ @@ -413,6 +422,7 @@ void CDiscAdjSinglezoneDriver::MainRecording(){ } void CDiscAdjSinglezoneDriver::SecondaryRecording(){ + SU2_ZONE_SCOPED /*--- SetRecording stores the computational graph on one iteration of the direct problem. Calling it with * RECORDING::CLEAR_INDICES as argument ensures that all information from a previous recording is removed. ---*/ diff --git a/SU2_CFD/src/drivers/CDriver.cpp b/SU2_CFD/src/drivers/CDriver.cpp index c3620a548997..e87c02d94212 100644 --- a/SU2_CFD/src/drivers/CDriver.cpp +++ b/SU2_CFD/src/drivers/CDriver.cpp @@ -95,18 +95,15 @@ #include "../../include/iteration/CIterationFactory.hpp" #include "../../../Common/include/parallelization/omp_structure.hpp" - #include "../../../Common/include/grid_movement/CVolumetricMovementFactory.hpp" #include -#ifdef VTUNEPROF -#include -#endif #include CDriver::CDriver(char* confFile, unsigned short val_nZone, SU2_Comm MPICommunicator, bool dummy_geo) : CDriverBase(confFile, val_nZone, MPICommunicator), StopCalc(false), fsi(false), fem_solver(false), dry_run(dummy_geo) { + SU2_ZONE_SCOPED /*--- Start timer to track preprocessing for benchmarking. ---*/ @@ -297,6 +294,7 @@ CDriverBase(confFile, val_nZone, MPICommunicator), StopCalc(false), fsi(false), } void CDriver::InitializeContainers(){ + SU2_ZONE_SCOPED /*--- Create pointers to all of the classes that may be used throughout the SU2_CFD code. In general, the pointers are instantiated down a @@ -345,6 +343,7 @@ void CDriver::InitializeContainers(){ void CDriver::Finalize() { + SU2_ZONE_SCOPED const bool wrt_perf = config_container[ZONE_0]->GetWrt_Performance(); @@ -457,10 +456,6 @@ void CDriver::Finalize() { if (rank == MASTER_NODE) cout << "Deleted CVolumetricMovement class." << endl; /*--- Output profiling information ---*/ - // Note that for now this is called only by a single thread, but all - // necessary variables have been made thread private for safety (tick/tock)!! - - config_container[ZONE_0]->SetProfilingCSV(); config_container[ZONE_0]->GEMMProfilingCSV(); /*--- Deallocate config container ---*/ @@ -548,6 +543,7 @@ void CDriver::Finalize() { void CDriver::PreprocessInput(CConfig **&config, CConfig *&driver_config) { + SU2_ZONE_SCOPED char zone_file_name[MAX_STRING_SIZE]; @@ -600,6 +596,7 @@ void CDriver::PreprocessInput(CConfig **&config, CConfig *&driver_config) { } void CDriver::InitializeGeometry(CConfig* config, CGeometry **&geometry, bool dummy){ + SU2_ZONE_SCOPED if (!dummy){ if (rank == MASTER_NODE) @@ -687,6 +684,7 @@ void CDriver::InitializeGeometry(CConfig* config, CGeometry **&geometry, bool du } void CDriver::InitializeGeometryFVM(CConfig *config, CGeometry **&geometry) { + SU2_ZONE_SCOPED unsigned short iZone = config->GetiZone(), iMGlevel; unsigned short requestedMGlevels = config->GetnMGLevels(); @@ -902,6 +900,7 @@ void CDriver::InitializeGeometryFVM(CConfig *config, CGeometry **&geometry) { } void CDriver::InitializeGeometryDGFEM(CConfig* config, CGeometry **&geometry) { + SU2_ZONE_SCOPED /*--- Definition of the geometry class to store the primal grid in the partitioning process. ---*/ /*--- All ranks process the grid and call ParMETIS for partitioning ---*/ @@ -994,6 +993,7 @@ void CDriver::InitializeGeometryDGFEM(CConfig* config, CGeometry **&geometry) { } void CDriver::InitializeSolver(CConfig* config, CGeometry** geometry, CSolver ***&solver) { + SU2_ZONE_SCOPED MAIN_SOLVER kindSolver = config->GetKind_Solver(); @@ -1025,6 +1025,7 @@ void CDriver::InitializeSolver(CConfig* config, CGeometry** geometry, CSolver ** } void CDriver::PreprocessInlet(CSolver ***solver, CGeometry **geometry, CConfig *config) const { + SU2_ZONE_SCOPED /*--- Adjust iteration number for unsteady restarts. ---*/ @@ -1166,6 +1167,7 @@ void CDriver::FinalizeSolver(CSolver ****solver, CGeometry **geometry, } void CDriver::InitializeIntegration(CConfig *config, CSolver **solver, CIntegration **&integration) const { + SU2_ZONE_SCOPED if (rank == MASTER_NODE) cout << endl <<"----------------- Integration Preprocessing ( Zone " << config->GetiZone() <<" ) ------------------" << endl; @@ -1177,6 +1179,7 @@ void CDriver::InitializeIntegration(CConfig *config, CSolver **solver, CIntegrat } void CDriver::FinalizeIntegration(CIntegration ***integration, CGeometry **geometry, CConfig *config, unsigned short val_iInst) { + SU2_ZONE_SCOPED for (unsigned int iSol = 0; iSol < MAX_SOLS; iSol++){ delete integration[val_iInst][iSol]; @@ -1427,6 +1430,7 @@ template void CDriver::InstantiateSpeciesNumericsGetiZone() <<" ) -------------------" << endl; @@ -2352,6 +2356,7 @@ void CDriver::FinalizeNumerics(CNumerics *****numerics, CSolver***, CGeometry**, } void CDriver::PreprocessIteration(CConfig* config, CIteration *&iteration) const { + SU2_ZONE_SCOPED if (rank == MASTER_NODE) cout << endl <<"------------------- Iteration Preprocessing ( Zone " << config->GetiZone() <<" ) ------------------" << endl; @@ -2542,6 +2547,7 @@ void CDriver::InitializeInterface(CConfig **config, CSolver***** solver, CGeomet } void CDriver::PreprocessStaticMesh(const CConfig *config, CGeometry** geometry){ + SU2_ZONE_SCOPED unsigned short iMGlevel, iMGfine; @@ -2587,6 +2593,7 @@ void CDriver::PreprocessStaticMesh(const CConfig *config, CGeometry** geometry){ } void CDriver::PreprocessOutput(CConfig **config, CConfig *driver_config, COutput **&output, COutput *&driver_output){ + SU2_ZONE_SCOPED /*--- Definition of the output class (one for each zone). The output class manages the writing of all restart, volume solution, surface solution, @@ -2757,6 +2764,7 @@ void CDriver::PreprocessTurbomachinery(CConfig** config, CGeometry**** geometry, CDriver::~CDriver() = default; void CDriver::PrintDirectResidual(RECORDING kind_recording) { + SU2_ZONE_SCOPED if (rank != MASTER_NODE || kind_recording != RECORDING::SOLUTION_VARIABLES) return; @@ -2869,16 +2877,14 @@ void CDriver::PrintDirectResidual(RECORDING kind_recording) { CFluidDriver::CFluidDriver(char* confFile, unsigned short val_nZone, SU2_Comm MPICommunicator) : CDriver(confFile, val_nZone, MPICommunicator, false) { + SU2_ZONE_SCOPED Max_Iter = config_container[ZONE_0]->GetnInner_Iter(); } CFluidDriver::~CFluidDriver() = default; void CFluidDriver::StartSolver(){ - -#ifdef VTUNEPROF - __itt_resume(); -#endif + SU2_ZONE_SCOPED /*--- Main external loop of the solver. Within this loop, each iteration ---*/ @@ -2927,13 +2933,11 @@ void CFluidDriver::StartSolver(){ Iter++; } -#ifdef VTUNEPROF - __itt_pause(); -#endif } void CFluidDriver::Preprocess(unsigned long Iter) { + SU2_ZONE_SCOPED /*--- Set the value of the external iteration and physical time. ---*/ @@ -2961,6 +2965,7 @@ void CFluidDriver::Preprocess(unsigned long Iter) { } void CFluidDriver::Run() { + SU2_ZONE_SCOPED unsigned short iZone, jZone; unsigned long IntIter, nIntIter; @@ -3020,6 +3025,7 @@ void CFluidDriver::Run() { } void CFluidDriver::TransferData(unsigned short donorZone, unsigned short targetZone) { + SU2_ZONE_SCOPED auto BroadcastData = [&](unsigned int solIdx) { interface_container[donorZone][targetZone]->BroadcastData(*interpolator_container[donorZone][targetZone].get(), @@ -3038,6 +3044,7 @@ void CFluidDriver::TransferData(unsigned short donorZone, unsigned short targetZ } void CFluidDriver::Update() { + SU2_ZONE_SCOPED for(iZone = 0; iZone < nZone; iZone++) iteration_container[iZone][INST_0]->Update(output_container[iZone], integration_container, geometry_container, @@ -3046,6 +3053,7 @@ void CFluidDriver::Update() { } void CFluidDriver::DynamicMeshUpdate(unsigned long TimeIter) { + SU2_ZONE_SCOPED bool harmonic_balance; @@ -3060,6 +3068,7 @@ void CFluidDriver::DynamicMeshUpdate(unsigned long TimeIter) { } bool CFluidDriver::Monitor(unsigned long ExtIter) { + SU2_ZONE_SCOPED /*--- Synchronization point after a single solver iteration. Compute the wall clock time required. ---*/ @@ -3083,6 +3092,7 @@ bool CFluidDriver::Monitor(unsigned long ExtIter) { } void CFluidDriver::Output(unsigned long InnerIter) { + SU2_ZONE_SCOPED for (iZone = 0; iZone < nZone; iZone++) { const auto inst = config_container[iZone]->GetiInst(); @@ -3114,6 +3124,7 @@ CHBDriver::CHBDriver(char* confFile, } CHBDriver::~CHBDriver() { + SU2_ZONE_SCOPED unsigned short kInst; @@ -3124,6 +3135,7 @@ CHBDriver::~CHBDriver() { void CHBDriver::Run() { + SU2_ZONE_SCOPED /*--- Run a single iteration of a Harmonic Balance problem. Preprocess all all zones before beginning the iteration. ---*/ @@ -3146,6 +3158,7 @@ void CHBDriver::Run() { } void CHBDriver::Update() { + SU2_ZONE_SCOPED for (iInst = 0; iInst < nInstHB; iInst++) { /*--- Compute the harmonic balance terms across all zones ---*/ @@ -3171,6 +3184,7 @@ void CHBDriver::Update() { } void CHBDriver::SetHarmonicBalance(unsigned short iInst) { + SU2_ZONE_SCOPED unsigned short iVar, jInst, iMGlevel; unsigned short nVar = solver_container[ZONE_0][INST_0][MESH_0][FLOW_SOL]->GetnVar(); @@ -3294,6 +3308,7 @@ void CHBDriver::SetHarmonicBalance(unsigned short iInst) { } void CHBDriver::StabilizeHarmonicBalance() { + SU2_ZONE_SCOPED unsigned short i, j, k, iVar, iInst, jInst, iMGlevel; unsigned short nVar = solver_container[ZONE_0][INST_0][MESH_0][FLOW_SOL]->GetnVar(); @@ -3454,6 +3469,7 @@ void CHBDriver::StabilizeHarmonicBalance() { } void CHBDriver::ComputeHBOperator() { + SU2_ZONE_SCOPED const complex J(0.0,1.0); unsigned short i, j, k, iInst; diff --git a/SU2_CFD/src/drivers/CDriverBase.cpp b/SU2_CFD/src/drivers/CDriverBase.cpp index 00f604669040..9691d4feedad 100644 --- a/SU2_CFD/src/drivers/CDriverBase.cpp +++ b/SU2_CFD/src/drivers/CDriverBase.cpp @@ -85,6 +85,7 @@ void CDriverBase::InitializeContainers() { } void CDriverBase::CommonFinalize() { + SU2_ZONE_SCOPED if (numerics_container != nullptr) { for (iZone = 0; iZone < nZone; iZone++) { diff --git a/SU2_CFD/src/drivers/CDummyDriver.cpp b/SU2_CFD/src/drivers/CDummyDriver.cpp index 6e8e66a48299..dd39bfd44516 100644 --- a/SU2_CFD/src/drivers/CDummyDriver.cpp +++ b/SU2_CFD/src/drivers/CDummyDriver.cpp @@ -37,6 +37,8 @@ CDummyDriver::CDummyDriver(char* confFile, } void CDummyDriver::StartSolver(){ + SU2_ZONE_SCOPED + if (rank == MASTER_NODE){ cout << endl <<"------------------------------ Begin Solver -----------------------------" << endl; cout << endl; diff --git a/SU2_CFD/src/drivers/CMultizoneDriver.cpp b/SU2_CFD/src/drivers/CMultizoneDriver.cpp index 3843fe320370..69aa314e88ae 100644 --- a/SU2_CFD/src/drivers/CMultizoneDriver.cpp +++ b/SU2_CFD/src/drivers/CMultizoneDriver.cpp @@ -33,6 +33,7 @@ CMultizoneDriver::CMultizoneDriver(char* confFile, unsigned short val_nZone, SU2_Comm MPICommunicator) : CDriver(confFile, val_nZone, MPICommunicator, false) { + SU2_ZONE_SCOPED /*--- Initialize the counter for TimeIter ---*/ TimeIter = 0; @@ -118,6 +119,7 @@ CMultizoneDriver::CMultizoneDriver(char* confFile, unsigned short val_nZone, SU2 } CMultizoneDriver::~CMultizoneDriver() { + SU2_ZONE_SCOPED for (iZone = 0; iZone < nZone; iZone++){ delete [] init_res[iZone]; @@ -135,6 +137,7 @@ CMultizoneDriver::~CMultizoneDriver() { } void CMultizoneDriver::StartSolver() { + SU2_ZONE_SCOPED /*--- Find out the minimum of all references times and then set each zone to this (same) value. To ensure that all zones run synchronously in time, be it a dimensional or non-dimensionalized one. ---*/ @@ -206,6 +209,7 @@ void CMultizoneDriver::StartSolver() { } void CMultizoneDriver::Preprocess(unsigned long TimeIter) { + SU2_ZONE_SCOPED /*--- Set the current time iteration in the config ---*/ driver_config->SetTimeIter(TimeIter); @@ -278,6 +282,7 @@ void CMultizoneDriver::Preprocess(unsigned long TimeIter) { } void CMultizoneDriver::RunGaussSeidel() { + SU2_ZONE_SCOPED unsigned short UpdateMesh; bool DeformMesh = false; @@ -328,6 +333,7 @@ void CMultizoneDriver::RunGaussSeidel() { } void CMultizoneDriver::RunJacobi() { + SU2_ZONE_SCOPED unsigned short UpdateMesh; bool DeformMesh = false; @@ -388,6 +394,7 @@ void CMultizoneDriver::RunJacobi() { } void CMultizoneDriver::Corrector(unsigned short val_iZone) { + SU2_ZONE_SCOPED if (config_container[val_iZone]->GetRelaxation()) iteration_container[val_iZone][INST_0]->Relaxation(output_container[ZONE_0], integration_container, @@ -396,6 +403,7 @@ void CMultizoneDriver::Corrector(unsigned short val_iZone) { } bool CMultizoneDriver::OuterConvergence(unsigned long OuterIter) { + SU2_ZONE_SCOPED /*--- Update the residual for the all the zones. ---*/ @@ -428,6 +436,7 @@ bool CMultizoneDriver::OuterConvergence(unsigned long OuterIter) { } void CMultizoneDriver::Update() { + SU2_ZONE_SCOPED /*--- For enabling a consistent restart, we need to update the mesh with the interface information that introduces displacements --*/ /*--- Loop over the number of zones (IZONE) ---*/ @@ -453,6 +462,7 @@ void CMultizoneDriver::Update() { } void CMultizoneDriver::Output(unsigned long TimeIter) { + SU2_ZONE_SCOPED /*--- Time the output for performance benchmarking. ---*/ @@ -486,6 +496,7 @@ void CMultizoneDriver::Output(unsigned long TimeIter) { } void CMultizoneDriver::DynamicMeshUpdate(unsigned long TimeIter) { + SU2_ZONE_SCOPED bool AnyDeformMesh = false; @@ -506,6 +517,7 @@ void CMultizoneDriver::DynamicMeshUpdate(unsigned long TimeIter) { } void CMultizoneDriver::DynamicMeshUpdate(unsigned short val_iZone, unsigned long TimeIter) { + SU2_ZONE_SCOPED auto iteration = iteration_container[val_iZone][INST_0]; @@ -531,6 +543,7 @@ void CMultizoneDriver::DynamicMeshUpdate(unsigned short val_iZone, unsigned long } bool CMultizoneDriver::TransferData(unsigned short donorZone, unsigned short targetZone) { + SU2_ZONE_SCOPED bool UpdateMesh = false; @@ -599,10 +612,10 @@ bool CMultizoneDriver::TransferData(unsigned short donorZone, unsigned short tar /*--- Set average value donorZone->targetZone ---*/ interface_container[donorZone][targetZone]->SetAverageValues(solver_container[donorZone][INST_0][MESH_0][FLOW_SOL],solver_container[targetZone][INST_0][MESH_0][FLOW_SOL], donorZone); - + /*--- Set average geometrical properties FROM donorZone IN targetZone ---*/ geometry_container[targetZone][INST_0][MESH_0]->SetAvgTurboGeoValues(config_container[iZone],geometry_container[iZone][INST_0][MESH_0], iZone); - + break; } case NO_TRANSFER: @@ -622,6 +635,7 @@ bool CMultizoneDriver::TransferData(unsigned short donorZone, unsigned short tar void CMultizoneDriver::SetTurboPerformance() { + SU2_ZONE_SCOPED for (auto donorZone = 1u; donorZone < nZone; donorZone++) { interface_container[donorZone][ZONE_0]->SetAverageValues(solver_container[donorZone][INST_0][MESH_0][FLOW_SOL], solver_container[ZONE_0][INST_0][MESH_0][FLOW_SOL], @@ -630,6 +644,7 @@ void CMultizoneDriver::SetTurboPerformance() { } bool CMultizoneDriver::Monitor(unsigned long TimeIter) { + SU2_ZONE_SCOPED /*--- Check whether the inner solver has converged --- */ @@ -675,5 +690,6 @@ bool CMultizoneDriver::Monitor(unsigned long TimeIter) { } bool CMultizoneDriver::GetTimeConvergence() const{ + SU2_ZONE_SCOPED return output_container[ZONE_0]->GetCauchyCorrectedTimeConvergence(config_container[ZONE_0]); } diff --git a/SU2_CFD/src/drivers/CSinglezoneDriver.cpp b/SU2_CFD/src/drivers/CSinglezoneDriver.cpp index 23d6c790db6a..07a65738e07b 100644 --- a/SU2_CFD/src/drivers/CSinglezoneDriver.cpp +++ b/SU2_CFD/src/drivers/CSinglezoneDriver.cpp @@ -44,6 +44,7 @@ CSinglezoneDriver::CSinglezoneDriver(char* confFile, CSinglezoneDriver::~CSinglezoneDriver() = default; void CSinglezoneDriver::StartSolver() { + SU2_ZONE_SCOPED StartTime = SU2_MPI::Wtime(); @@ -103,6 +104,7 @@ void CSinglezoneDriver::StartSolver() { } void CSinglezoneDriver::Preprocess(unsigned long TimeIter) { + SU2_ZONE_SCOPED /*--- Set the current time iteration in the config and also in the driver * because the python interface doesn't offer an explicit way of doing it. ---*/ @@ -154,6 +156,7 @@ void CSinglezoneDriver::Preprocess(unsigned long TimeIter) { } void CSinglezoneDriver::Run() { + SU2_ZONE_SCOPED unsigned long OuterIter = 0; config_container[ZONE_0]->SetOuterIter(OuterIter); @@ -165,6 +168,7 @@ void CSinglezoneDriver::Run() { } void CSinglezoneDriver::Postprocess() { + SU2_ZONE_SCOPED iteration_container[ZONE_0][INST_0]->Postprocess(output_container[ZONE_0], integration_container, geometry_container, solver_container, numerics_container, config_container, surface_movement, grid_movement, FFDBox, ZONE_0, INST_0); @@ -178,6 +182,7 @@ void CSinglezoneDriver::Postprocess() { } void CSinglezoneDriver::Update() { + SU2_ZONE_SCOPED iteration_container[ZONE_0][INST_0]->Update(output_container[ZONE_0], integration_container, geometry_container, solver_container, numerics_container, config_container, @@ -186,6 +191,7 @@ void CSinglezoneDriver::Update() { } void CSinglezoneDriver::Output(unsigned long TimeIter) { + SU2_ZONE_SCOPED /*--- Time the output for performance benchmarking. ---*/ @@ -222,6 +228,7 @@ void CSinglezoneDriver::Output(unsigned long TimeIter) { } void CSinglezoneDriver::DynamicMeshUpdate(unsigned long TimeIter) { + SU2_ZONE_SCOPED auto iteration = iteration_container[ZONE_0][INST_0]; @@ -247,6 +254,7 @@ void CSinglezoneDriver::DynamicMeshUpdate(unsigned long TimeIter) { } bool CSinglezoneDriver::Monitor(unsigned long TimeIter){ + SU2_ZONE_SCOPED unsigned long nInnerIter, InnerIter, nTimeIter; su2double MaxTime, CurTime; @@ -310,5 +318,6 @@ bool CSinglezoneDriver::Monitor(unsigned long TimeIter){ } bool CSinglezoneDriver::GetTimeConvergence() const{ + SU2_ZONE_SCOPED return output_container[ZONE_0]->GetCauchyCorrectedTimeConvergence(config_container[ZONE_0]); } diff --git a/SU2_CFD/src/integration/CFEM_DG_Integration.cpp b/SU2_CFD/src/integration/CFEM_DG_Integration.cpp index 7236558f5d13..bee2fbbf52d9 100644 --- a/SU2_CFD/src/integration/CFEM_DG_Integration.cpp +++ b/SU2_CFD/src/integration/CFEM_DG_Integration.cpp @@ -37,6 +37,7 @@ void CFEM_DG_Integration::SingleGrid_Iteration(CGeometry ****geometry, unsigned short RunTime_EqSystem, unsigned short iZone, unsigned short iInst) { + SU2_ZONE_SCOPED unsigned short iMesh, iStep; unsigned short SolContainer_Position = config[iZone]->GetContainerPosition(RunTime_EqSystem); @@ -143,6 +144,7 @@ void CFEM_DG_Integration::Space_Integration(CGeometry *geometry, CConfig *config, unsigned short iMesh, unsigned short iStep, unsigned short RunTime_EqSystem) { + SU2_ZONE_SCOPED unsigned short MainSolver = config->GetContainerPosition(RunTime_EqSystem); @@ -163,6 +165,7 @@ void CFEM_DG_Integration::Space_Integration(CGeometry *geometry, void CFEM_DG_Integration::Time_Integration(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iStep, unsigned short RunTime_EqSystem) { + SU2_ZONE_SCOPED unsigned short MainSolver = config->GetContainerPosition(RunTime_EqSystem); diff --git a/SU2_CFD/src/integration/CIntegration.cpp b/SU2_CFD/src/integration/CIntegration.cpp index b3cfdfbfb0b3..436d81a3d810 100644 --- a/SU2_CFD/src/integration/CIntegration.cpp +++ b/SU2_CFD/src/integration/CIntegration.cpp @@ -30,6 +30,7 @@ CIntegration::CIntegration() { + SU2_ZONE_SCOPED rank = SU2_MPI::GetRank(); size = SU2_MPI::GetSize(); } @@ -40,6 +41,8 @@ void CIntegration::Space_Integration(CGeometry *geometry, CConfig *config, unsigned short iMesh, unsigned short iRKStep, unsigned short RunTime_EqSystem) { + SU2_ZONE_SCOPED + unsigned short iMarker, KindBC; unsigned short MainSolver = config->GetContainerPosition(RunTime_EqSystem); @@ -207,6 +210,7 @@ void CIntegration::Space_Integration(CGeometry *geometry, void CIntegration::Time_Integration(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iRKStep, unsigned short RunTime_EqSystem) { + SU2_ZONE_SCOPED unsigned short MainSolver = config->GetContainerPosition(RunTime_EqSystem); @@ -228,6 +232,7 @@ void CIntegration::Time_Integration(CGeometry *geometry, CSolver **solver_contai } void CIntegration::SetDualTime_Geometry(CGeometry *geometry, CSolver *mesh_solver, const CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED SU2_OMP_PARALLEL { @@ -247,6 +252,7 @@ void CIntegration::SetDualTime_Geometry(CGeometry *geometry, CSolver *mesh_solve } void CIntegration::SetDualTime_Solver(const CGeometry *geometry, CSolver *solver, const CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED SU2_OMP_PARALLEL { diff --git a/SU2_CFD/src/integration/CIntegrationFactory.cpp b/SU2_CFD/src/integration/CIntegrationFactory.cpp index d665c5b2889f..8df00fb873d4 100644 --- a/SU2_CFD/src/integration/CIntegrationFactory.cpp +++ b/SU2_CFD/src/integration/CIntegrationFactory.cpp @@ -34,6 +34,7 @@ CIntegration** CIntegrationFactory::CreateIntegrationContainer(MAIN_SOLVER kindMainSolver, const CSolver* const* solver_container){ + SU2_ZONE_SCOPED auto **integration = new CIntegration* [MAX_SOLS](); @@ -48,6 +49,7 @@ CIntegration** CIntegrationFactory::CreateIntegrationContainer(MAIN_SOLVER kindM } CIntegration* CIntegrationFactory::CreateIntegration(INTEGRATION_TYPE integrationType){ + SU2_ZONE_SCOPED CIntegration *integration = nullptr; diff --git a/SU2_CFD/src/integration/CMultiGridIntegration.cpp b/SU2_CFD/src/integration/CMultiGridIntegration.cpp index d721e74c0e7a..35eb24e3aa7b 100644 --- a/SU2_CFD/src/integration/CMultiGridIntegration.cpp +++ b/SU2_CFD/src/integration/CMultiGridIntegration.cpp @@ -80,6 +80,7 @@ static void adaptMGDampingFactor(const unsigned short* performed, } void CMultiGridIntegration::adaptRestrictionDamping(CConfig* config) { + SU2_ZONE_SCOPED const auto& mgOpts = config->GetMGOptions(); const unsigned short nMGLevels = config->GetnMGLevels(); adaptMGDampingFactor( @@ -92,6 +93,7 @@ void CMultiGridIntegration::adaptRestrictionDamping(CConfig* config) { } void CMultiGridIntegration::adaptProlongationDamping(CConfig* config) { + SU2_ZONE_SCOPED /*--- Post-smoothing directly measures whether the corrected fine-grid solution * is well-behaved after prolongation. If it exits early, increase damping. * If it stagnates at max iters, decrease damping. ---*/ @@ -110,6 +112,7 @@ void CMultiGridIntegration::adaptProlongationDamping(CConfig* config) { passivedouble CMultiGridIntegration::computeMultigridCFL(CConfig* config, unsigned short iMesh, passivedouble CFL_fine, passivedouble CFL_coarse_current, passivedouble rms_res_coarse) { + SU2_ZONE_SCOPED const bool wasActive = AD::BeginPassive(); @@ -241,6 +244,7 @@ void CMultiGridIntegration::MultiGrid_Iteration(CGeometry ****geometry, unsigned short RunTime_EqSystem, unsigned short iZone, unsigned short iInst) { + SU2_ZONE_SCOPED bool direct; switch (config[iZone]->GetKind_Solver()) { @@ -452,6 +456,7 @@ void CMultiGridIntegration::MultiGrid_Cycle(CGeometry ****geometry, unsigned short RunTime_EqSystem, unsigned short iZone, unsigned short iInst) { + SU2_ZONE_SCOPED CConfig* config = config_container[iZone]; @@ -560,6 +565,7 @@ void CMultiGridIntegration::PreSmoothing(unsigned short RunTime_EqSystem, unsigned short iMesh, unsigned short iZone, unsigned short iRKLimit) { + SU2_ZONE_SCOPED const auto& mgOpts = config->GetMGOptions(); const bool classical_rk4 = (config->GetKind_TimeIntScheme() == CLASSICAL_RK4_EXPLICIT); @@ -654,6 +660,7 @@ void CMultiGridIntegration::PostSmoothing(unsigned short RunTime_EqSystem, CConfig *config, unsigned short iMesh, unsigned short iRKLimit) { + SU2_ZONE_SCOPED const auto& mgOpts = config->GetMGOptions(); const bool classical_rk4 = (config->GetKind_TimeIntScheme() == CLASSICAL_RK4_EXPLICIT); @@ -739,6 +746,7 @@ void CMultiGridIntegration::PostSmoothing(unsigned short RunTime_EqSystem, void CMultiGridIntegration::GetProlongated_Correction(unsigned short RunTime_EqSystem, CSolver *sol_fine, CSolver *sol_coarse, CGeometry *geo_fine, CGeometry *geo_coarse, CConfig *config) { + SU2_ZONE_SCOPED const su2double *Solution_Fine = nullptr, *Solution_Coarse = nullptr; const unsigned short nVar = sol_coarse->GetnVar(); @@ -818,6 +826,7 @@ void CMultiGridIntegration::GetProlongated_Correction(unsigned short RunTime_EqS void CMultiGridIntegration::SmoothProlongated_Correction(unsigned short RunTime_EqSystem, CSolver *solver, CGeometry *geometry, unsigned short val_nSmooth, su2double val_smooth_coeff, CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED /*--- Check if there is work to do. ---*/ if (val_nSmooth == 0) return; @@ -904,6 +913,7 @@ void CMultiGridIntegration::SmoothProlongated_Correction(unsigned short RunTime_ void CMultiGridIntegration::SetProlongated_Correction(CSolver *sol_fine, CGeometry *geo_fine, CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED su2double *Solution_Fine, *Residual_Fine; const unsigned short nVar = sol_fine->GetnVar(); @@ -941,6 +951,7 @@ void CMultiGridIntegration::SetProlongated_Correction(CSolver *sol_fine, CGeomet void CMultiGridIntegration::SetProlongated_Solution(unsigned short RunTime_EqSystem, CSolver *sol_fine, CSolver *sol_coarse, CGeometry *geo_fine, CGeometry *geo_coarse, CConfig *config) { + SU2_ZONE_SCOPED SU2_OMP_FOR_STAT(roundUpDiv(geo_coarse->GetnPointDomain(), omp_get_num_threads())) for (auto Point_Coarse = 0ul; Point_Coarse < geo_coarse->GetnPointDomain(); Point_Coarse++) { @@ -954,6 +965,7 @@ void CMultiGridIntegration::SetProlongated_Solution(unsigned short RunTime_EqSys void CMultiGridIntegration::SetForcing_Term(CSolver *sol_fine, CSolver *sol_coarse, CGeometry *geo_fine, CGeometry *geo_coarse, CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED const su2double *Residual_Fine; @@ -1000,6 +1012,7 @@ void CMultiGridIntegration::SetForcing_Term(CSolver *sol_fine, CSolver *sol_coar } void CMultiGridIntegration::SetResidual_Term(CGeometry *geometry, CSolver *solver) { + SU2_ZONE_SCOPED AD::StartNoSharedReading(); SU2_OMP_FOR_STAT(roundUpDiv(geometry->GetnPointDomain(), omp_get_num_threads())) @@ -1012,6 +1025,7 @@ void CMultiGridIntegration::SetResidual_Term(CGeometry *geometry, CSolver *solve void CMultiGridIntegration::SetRestricted_Solution(unsigned short RunTime_EqSystem, CSolver *sol_fine, CSolver *sol_coarse, CGeometry *geo_fine, CGeometry *geo_coarse, CConfig *config) { + SU2_ZONE_SCOPED const unsigned short Solver_Position = config->GetContainerPosition(RunTime_EqSystem); const bool grid_movement = config->GetGrid_Movement(); @@ -1068,6 +1082,7 @@ void CMultiGridIntegration::SetRestricted_Solution(unsigned short RunTime_EqSyst void CMultiGridIntegration::SetRestricted_Gradient(unsigned short RunTime_EqSystem, CSolver *sol_fine, CSolver *sol_coarse, CGeometry *geo_fine, CGeometry *geo_coarse, CConfig *config) { + SU2_ZONE_SCOPED const unsigned short nDim = geo_coarse->GetnDim(); const unsigned short nVar = sol_coarse->GetnVar(); @@ -1107,6 +1122,7 @@ void CMultiGridIntegration::NonDimensional_Parameters(CGeometry **geometry, CSol CNumerics ****numerics_container, CConfig *config, unsigned short FinestMesh, unsigned short RunTime_EqSystem, su2double *monitor) { + SU2_ZONE_SCOPED BEGIN_SU2_OMP_SAFE_GLOBAL_ACCESS switch (RunTime_EqSystem) { @@ -1157,6 +1173,7 @@ void CMultiGridIntegration::NonDimensional_Parameters(CGeometry **geometry, CSol void CMultiGridIntegration::Adjoint_Setup(CGeometry ****geometry, CSolver *****solver_container, CConfig **config, unsigned short RunTime_EqSystem, unsigned long Iteration, unsigned short iZone) { + SU2_ZONE_SCOPED if ((RunTime_EqSystem != RUNTIME_ADJFLOW_SYS) || (Iteration != 0)) return; diff --git a/SU2_CFD/src/integration/CNewtonIntegration.cpp b/SU2_CFD/src/integration/CNewtonIntegration.cpp index bf15a7b6ddff..50bd1d3db2b6 100644 --- a/SU2_CFD/src/integration/CNewtonIntegration.cpp +++ b/SU2_CFD/src/integration/CNewtonIntegration.cpp @@ -62,6 +62,7 @@ class CPreconditionerWrapper final : public CPreconditioner { CNewtonIntegration::~CNewtonIntegration() { delete preconditioner; } void CNewtonIntegration::Setup() { + SU2_ZONE_SCOPED auto iparam = config->GetNewtonKrylovIntParam(); auto dparam = config->GetNewtonKrylovDblParam(); @@ -115,6 +116,7 @@ void CNewtonIntegration::Setup() { } void CNewtonIntegration::PerturbSolution(const CSysVector& dir, Scalar mag) { + SU2_ZONE_SCOPED SU2_OMP_FOR_STAT(omp_chunk_size) for (auto iPoint = 0ul; iPoint < geometry->GetnPoint(); ++iPoint) { @@ -126,6 +128,7 @@ void CNewtonIntegration::PerturbSolution(const CSysVector& dir, Scalar m } void CNewtonIntegration::ComputeResiduals(ResEvalType type) { + SU2_ZONE_SCOPED /*--- Save the default integration scheme, and force to explicit if required. ---*/ auto TimeIntScheme = config->GetKind_TimeIntScheme(); @@ -149,6 +152,7 @@ void CNewtonIntegration::ComputeResiduals(ResEvalType type) { } void CNewtonIntegration::ComputeFinDiffStep() { + SU2_ZONE_SCOPED static su2double rmsSol; su2double rmsSol_loc = 0.0; @@ -177,6 +181,8 @@ void CNewtonIntegration::ComputeFinDiffStep() { void CNewtonIntegration::MultiGrid_Iteration(CGeometry ****geometry_, CSolver *****solvers_, CNumerics ******numerics_, CConfig **config_, unsigned short EqSystem, unsigned short iZone, unsigned short iInst) { + SU2_ZONE_SCOPED + config = config_[iZone]; solvers = solvers_[iZone][iInst][MESH_0]; geometry = geometry_[iZone][iInst][MESH_0]; @@ -328,6 +334,7 @@ void CNewtonIntegration::MultiGrid_Iteration(CGeometry ****geometry_, CSolver ** } void CNewtonIntegration::MatrixFreeProduct(const CSysVector& u, CSysVector& v) { + SU2_ZONE_SCOPED Scalar factor = finDiffStep / u.norm(); @@ -360,6 +367,7 @@ void CNewtonIntegration::MatrixFreeProduct(const CSysVector& u, CSysVect } void CNewtonIntegration::Preconditioner(const CSysVector& u, CSysVector& v) const { + SU2_ZONE_SCOPED if (preconditioner) { Scalar eps = SU2_TYPE::GetValue(precondTol); diff --git a/SU2_CFD/src/integration/CSingleGridIntegration.cpp b/SU2_CFD/src/integration/CSingleGridIntegration.cpp index 7f588fe5352e..8dd21b0d682d 100644 --- a/SU2_CFD/src/integration/CSingleGridIntegration.cpp +++ b/SU2_CFD/src/integration/CSingleGridIntegration.cpp @@ -35,6 +35,7 @@ void CSingleGridIntegration::SingleGrid_Iteration(CGeometry ****geometry, CSolve CNumerics ******numerics_container, CConfig **config, unsigned short RunTime_EqSystem, unsigned short iZone, unsigned short iInst) { + SU2_ZONE_SCOPED const unsigned short Solver_Position = config[iZone]->GetContainerPosition(RunTime_EqSystem); @@ -109,6 +110,8 @@ void CSingleGridIntegration::SingleGrid_Iteration(CGeometry ****geometry, CSolve void CSingleGridIntegration::SetRestricted_Solution(unsigned short RunTime_EqSystem, CSolver *sol_fine, CSolver *sol_coarse, CGeometry *geo_fine, CGeometry *geo_coarse, CConfig *config) { + SU2_ZONE_SCOPED + CSolver::MultigridRestriction(*geo_fine, sol_fine->GetNodes()->GetSolution(), *geo_coarse, sol_coarse->GetNodes()->GetSolution()); sol_coarse->InitiateComms(geo_coarse, config, MPI_QUANTITIES::SOLUTION); @@ -117,6 +120,7 @@ void CSingleGridIntegration::SetRestricted_Solution(unsigned short RunTime_EqSys void CSingleGridIntegration::SetRestricted_EddyVisc(unsigned short RunTime_EqSystem, CSolver *sol_fine, CSolver *sol_coarse, CGeometry *geo_fine, CGeometry *geo_coarse, CConfig *config) { + SU2_ZONE_SCOPED unsigned long iVertex, Point_Fine, Point_Coarse; unsigned short iMarker, iChildren; diff --git a/SU2_CFD/src/integration/CStructuralIntegration.cpp b/SU2_CFD/src/integration/CStructuralIntegration.cpp index c550a11b37c3..9ed44fc8501f 100644 --- a/SU2_CFD/src/integration/CStructuralIntegration.cpp +++ b/SU2_CFD/src/integration/CStructuralIntegration.cpp @@ -34,6 +34,7 @@ void CStructuralIntegration::Structural_Iteration(CGeometry ****geometry, CSolve CNumerics ******numerics_container, CConfig **config, unsigned short RunTime_EqSystem, unsigned short iZone, unsigned short iInst) { + SU2_ZONE_SCOPED unsigned short SolContainer_Position = config[iZone]->GetContainerPosition(RunTime_EqSystem); @@ -69,6 +70,7 @@ void CStructuralIntegration::Structural_Iteration(CGeometry ****geometry, CSolve void CStructuralIntegration::Space_Integration_FEM(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics, CConfig *config, unsigned short RunTime_EqSystem) { + SU2_ZONE_SCOPED const bool first_iter = (config->GetInnerIter() == 0); const bool linear_analysis = (config->GetGeometricConditions() == STRUCT_DEFORMATION::SMALL); const auto IterativeScheme = config->GetKind_SpaceIteScheme_FEA(); @@ -127,6 +129,7 @@ void CStructuralIntegration::Space_Integration_FEM(CGeometry *geometry, CSolver void CStructuralIntegration::Time_Integration_FEM(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics, CConfig *config, unsigned short RunTime_EqSystem) { + SU2_ZONE_SCOPED unsigned short iMarker; unsigned short MainSolver = config->GetContainerPosition(RunTime_EqSystem); @@ -186,6 +189,7 @@ void CStructuralIntegration::Time_Integration_FEM(CGeometry *geometry, CSolver * } void CStructuralIntegration::SetDualTime_Solver(const CGeometry *geometry, CSolver *solver, const CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED const bool fsi = config->GetFSI_Simulation(); diff --git a/SU2_CFD/src/iteration/CAdjFluidIteration.cpp b/SU2_CFD/src/iteration/CAdjFluidIteration.cpp index 1c8b4cfb9a10..735330bd5953 100644 --- a/SU2_CFD/src/iteration/CAdjFluidIteration.cpp +++ b/SU2_CFD/src/iteration/CAdjFluidIteration.cpp @@ -32,6 +32,7 @@ void CAdjFluidIteration::Preprocess(COutput* output, CIntegration**** integratio CSolver***** solver, CNumerics****** numerics, CConfig** config, CSurfaceMovement** surface_movement, CVolumetricMovement*** grid_movement, CFreeFormDefBox*** FFDBox, unsigned short val_iZone, unsigned short val_iInst) { + SU2_ZONE_SCOPED unsigned short iMesh; bool harmonic_balance = (config[ZONE_0]->GetTime_Marching() == TIME_MARCHING::HARMONIC_BALANCE); bool dynamic_mesh = config[ZONE_0]->GetGrid_Movement(); @@ -132,6 +133,7 @@ void CAdjFluidIteration::Iterate(COutput* output, CIntegration**** integration, CSolver***** solver, CNumerics****** numerics, CConfig** config, CSurfaceMovement** surface_movement, CVolumetricMovement*** grid_movement, CFreeFormDefBox*** FFDBox, unsigned short val_iZone, unsigned short val_iInst) { + SU2_ZONE_SCOPED const auto kind_solver = config[val_iZone]->GetKind_Solver(); switch (kind_solver) { case MAIN_SOLVER::ADJ_EULER: @@ -162,6 +164,7 @@ void CAdjFluidIteration::Update(COutput* output, CIntegration**** integration, C CSolver***** solver, CNumerics****** numerics, CConfig** config, CSurfaceMovement** surface_movement, CVolumetricMovement*** grid_movement, CFreeFormDefBox*** FFDBox, unsigned short val_iZone, unsigned short val_iInst) { + SU2_ZONE_SCOPED /*--- Dual time stepping strategy ---*/ if ((config[val_iZone]->GetTime_Marching() == TIME_MARCHING::DT_STEPPING_1ST) || diff --git a/SU2_CFD/src/iteration/CDiscAdjFEAIteration.cpp b/SU2_CFD/src/iteration/CDiscAdjFEAIteration.cpp index a1425be3b7ff..395ea6bbae29 100644 --- a/SU2_CFD/src/iteration/CDiscAdjFEAIteration.cpp +++ b/SU2_CFD/src/iteration/CDiscAdjFEAIteration.cpp @@ -32,12 +32,14 @@ #include "../../include/output/COutput.hpp" CDiscAdjFEAIteration::CDiscAdjFEAIteration(const CConfig *config) : CIteration(config), CurrentRecording(NONE) { + SU2_ZONE_SCOPED if (config->GetWeakly_Coupled_Heat()) { DiscAdjHeatIteration = new CDiscAdjHeatIteration(config); } } CDiscAdjFEAIteration::~CDiscAdjFEAIteration() { + SU2_ZONE_SCOPED delete DiscAdjHeatIteration; } @@ -45,6 +47,7 @@ void CDiscAdjFEAIteration::Preprocess(COutput* output, CIntegration**** integrat CSolver***** solver, CNumerics****** numerics, CConfig** config, CSurfaceMovement** surface_movement, CVolumetricMovement*** grid_movement, CFreeFormDefBox*** FFDBox, unsigned short iZone, unsigned short iInst) { + SU2_ZONE_SCOPED auto solvers0 = solver[iZone][iInst][MESH_0]; auto geometry0 = geometry[iZone][iInst][MESH_0]; auto dirNodes = solvers0[FEA_SOL]->GetNodes(); @@ -106,6 +109,7 @@ void CDiscAdjFEAIteration::Preprocess(COutput* output, CIntegration**** integrat void CDiscAdjFEAIteration::LoadDynamic_Solution(CGeometry**** geometry, CSolver***** solver, CConfig** config, unsigned short iZone, unsigned short iInst, int val_DirectIter) { + SU2_ZONE_SCOPED /*--- Set to false to prevent updating Solution_time_n when loading primal solutions of unsteady cases. ---*/ const bool update_geo = false; auto*** solvers = solver[iZone][iInst]; @@ -124,6 +128,7 @@ void CDiscAdjFEAIteration::LoadDynamic_Solution(CGeometry**** geometry, CSolver* void CDiscAdjFEAIteration::IterateDiscAdj(CGeometry**** geometry, CSolver***** solver, CConfig** config, unsigned short iZone, unsigned short iInst, bool CrossTerm) { + SU2_ZONE_SCOPED /*--- Extract the adjoints of the conservative input variables and store them for the next iteration ---*/ for (const auto iSol : {ADJFEA_SOL, ADJHEAT_SOL}) { @@ -136,6 +141,7 @@ void CDiscAdjFEAIteration::IterateDiscAdj(CGeometry**** geometry, CSolver***** s void CDiscAdjFEAIteration::RegisterInput(CSolver***** solver, CGeometry**** geometry, CConfig** config, unsigned short iZone, unsigned short iInst, RECORDING kind_recording) { + SU2_ZONE_SCOPED if (kind_recording != RECORDING::MESH_COORDS) { for (const auto iSol : {ADJFEA_SOL, ADJHEAT_SOL}) { if (auto* sol = solver[iZone][iInst][MESH_0][iSol]; sol != nullptr) { @@ -157,6 +163,7 @@ void CDiscAdjFEAIteration::RegisterInput(CSolver***** solver, CGeometry**** geom void CDiscAdjFEAIteration::SetDependencies(CSolver***** solver, CGeometry**** geometry, CNumerics****** numerics, CConfig** config, unsigned short iZone, unsigned short iInst, RECORDING kind_recording) { + SU2_ZONE_SCOPED if (DiscAdjHeatIteration) { DiscAdjHeatIteration->SetDependencies(solver, geometry, numerics, config, iZone, iInst, kind_recording); } @@ -278,6 +285,7 @@ void CDiscAdjFEAIteration::SetDependencies(CSolver***** solver, CGeometry**** ge void CDiscAdjFEAIteration::RegisterOutput(CSolver***** solver, CGeometry**** geometry, CConfig** config, unsigned short iZone, unsigned short iInst) { + SU2_ZONE_SCOPED /*--- Register solution variables as output of the iteration. ---*/ for (const auto iSol : {ADJFEA_SOL, ADJHEAT_SOL}) { if (auto* sol = solver[iZone][iInst][MESH_0][iSol]; sol != nullptr) { @@ -288,6 +296,7 @@ void CDiscAdjFEAIteration::RegisterOutput(CSolver***** solver, CGeometry**** geo void CDiscAdjFEAIteration::InitializeAdjoint(CSolver***** solver, CGeometry**** geometry, CConfig** config, unsigned short iZone, unsigned short iInst) { + SU2_ZONE_SCOPED /*--- Initialize the adjoints of the solution variables. ---*/ AD::ResizeAdjoints(); @@ -304,6 +313,7 @@ bool CDiscAdjFEAIteration::Monitor(COutput* output, CIntegration**** integration CSolver***** solver, CNumerics****** numerics, CConfig** config, CSurfaceMovement** surface_movement, CVolumetricMovement*** grid_movement, CFreeFormDefBox*** FFDBox, unsigned short iZone, unsigned short iInst) { + SU2_ZONE_SCOPED /*--- Write the convergence history (only screen output) ---*/ output->SetHistoryOutput(geometry[iZone][INST_0][MESH_0], solver[iZone][INST_0][MESH_0], config[iZone], @@ -317,6 +327,7 @@ void CDiscAdjFEAIteration::Postprocess(COutput* output, CIntegration**** integra CSolver***** solver, CNumerics****** numerics, CConfig** config, CSurfaceMovement** surface_movement, CVolumetricMovement*** grid_movement, CFreeFormDefBox*** FFDBox, unsigned short iZone, unsigned short iInst) { + SU2_ZONE_SCOPED auto solvers0 = solver[iZone][iInst][MESH_0]; // TEST: for implementation of python framework in standalone structural problems diff --git a/SU2_CFD/src/iteration/CDiscAdjFluidIteration.cpp b/SU2_CFD/src/iteration/CDiscAdjFluidIteration.cpp index a10f7c4505f9..fa3b5242713d 100644 --- a/SU2_CFD/src/iteration/CDiscAdjFluidIteration.cpp +++ b/SU2_CFD/src/iteration/CDiscAdjFluidIteration.cpp @@ -32,6 +32,7 @@ void CDiscAdjFluidIteration::Preprocess(COutput* output, CIntegration**** integr CSolver***** solver, CNumerics****** numerics, CConfig** config, CSurfaceMovement** surface_movement, CVolumetricMovement*** grid_movement, CFreeFormDefBox*** FFDBox, unsigned short iZone, unsigned short iInst) { + SU2_ZONE_SCOPED StartTime = SU2_MPI::Wtime(); const auto TimeIter = config[iZone]->GetTimeIter(); @@ -277,6 +278,7 @@ void CDiscAdjFluidIteration::Preprocess(COutput* output, CIntegration**** integr void CDiscAdjFluidIteration::LoadUnsteady_Solution(CGeometry**** geometry, CSolver***** solver, CConfig** config, unsigned short iZone, unsigned short iInst, int DirectIter) { + SU2_ZONE_SCOPED auto solvers = solver[iZone][iInst]; auto geometries = geometry[iZone][iInst]; @@ -324,6 +326,7 @@ void CDiscAdjFluidIteration::LoadUnsteady_Solution(CGeometry**** geometry, CSolv void CDiscAdjFluidIteration::IterateDiscAdj(CGeometry**** geometry, CSolver***** solver, CConfig** config, unsigned short iZone, unsigned short iInst, bool CrossTerm) { + SU2_ZONE_SCOPED auto solvers0 = solver[iZone][iInst][MESH_0]; auto geometry0 = geometry[iZone][iInst][MESH_0]; @@ -357,6 +360,7 @@ void CDiscAdjFluidIteration::IterateDiscAdj(CGeometry**** geometry, CSolver***** void CDiscAdjFluidIteration::InitializeAdjoint(CSolver***** solver, CGeometry**** geometry, CConfig** config, unsigned short iZone, unsigned short iInst) { + SU2_ZONE_SCOPED auto solvers0 = solver[iZone][iInst][MESH_0]; auto geometry0 = geometry[iZone][iInst][MESH_0]; @@ -399,6 +403,7 @@ void CDiscAdjFluidIteration::InitializeAdjoint(CSolver***** solver, CGeometry*** void CDiscAdjFluidIteration::RegisterInput(CSolver***** solver, CGeometry**** geometry, CConfig** config, unsigned short iZone, unsigned short iInst, RECORDING kind_recording) { + SU2_ZONE_SCOPED auto solvers0 = solver[iZone][iInst][MESH_0]; auto geometry0 = geometry[iZone][iInst][MESH_0]; @@ -458,6 +463,7 @@ void CDiscAdjFluidIteration::RegisterInput(CSolver***** solver, CGeometry**** ge void CDiscAdjFluidIteration::SetDependencies(CSolver***** solver, CGeometry**** geometry, CNumerics****** numerics, CConfig** config, unsigned short iZone, unsigned short iInst, RECORDING kind_recording) { + SU2_ZONE_SCOPED auto solvers0 = solver[iZone][iInst][MESH_0]; auto geometry0 = geometry[iZone][iInst][MESH_0]; @@ -515,6 +521,7 @@ void CDiscAdjFluidIteration::SetDependencies(CSolver***** solver, CGeometry**** void CDiscAdjFluidIteration::RegisterOutput(CSolver***** solver, CGeometry**** geometry, CConfig** config, unsigned short iZone, unsigned short iInst) { + SU2_ZONE_SCOPED auto solvers0 = solver[iZone][iInst][MESH_0]; auto geometry0 = geometry[iZone][iInst][MESH_0]; @@ -549,6 +556,7 @@ bool CDiscAdjFluidIteration::Monitor(COutput* output, CIntegration**** integrati CSolver***** solver, CNumerics****** numerics, CConfig** config, CSurfaceMovement** surface_movement, CVolumetricMovement*** grid_movement, CFreeFormDefBox*** FFDBox, unsigned short iZone, unsigned short iInst) { + SU2_ZONE_SCOPED StopTime = SU2_MPI::Wtime(); UsedTime = StopTime - StartTime; diff --git a/SU2_CFD/src/iteration/CDiscAdjHeatIteration.cpp b/SU2_CFD/src/iteration/CDiscAdjHeatIteration.cpp index 39ff006857de..cbf7d9718d83 100644 --- a/SU2_CFD/src/iteration/CDiscAdjHeatIteration.cpp +++ b/SU2_CFD/src/iteration/CDiscAdjHeatIteration.cpp @@ -32,6 +32,7 @@ void CDiscAdjHeatIteration::Preprocess(COutput* output, CIntegration**** integra CSolver***** solver, CNumerics****** numerics, CConfig** config, CSurfaceMovement** surface_movement, CVolumetricMovement*** grid_movement, CFreeFormDefBox*** FFDBox, unsigned short val_iZone, unsigned short val_iInst) { + SU2_ZONE_SCOPED const auto TimeIter = config[val_iZone]->GetTimeIter(); const bool dual_time_1st = (config[val_iZone]->GetTime_Marching() == TIME_MARCHING::DT_STEPPING_1ST); @@ -125,6 +126,7 @@ void CDiscAdjHeatIteration::Preprocess(COutput* output, CIntegration**** integra void CDiscAdjHeatIteration::LoadUnsteady_Solution(CGeometry**** geometry, CSolver***** solver, CConfig** config, unsigned short val_iZone, unsigned short val_iInst, int val_DirectIter) { + SU2_ZONE_SCOPED auto solvers = solver[val_iZone][val_iInst]; auto geometries = geometry[val_iZone][val_iInst]; @@ -148,6 +150,7 @@ void CDiscAdjHeatIteration::LoadUnsteady_Solution(CGeometry**** geometry, CSolve void CDiscAdjHeatIteration::IterateDiscAdj(CGeometry**** geometry, CSolver***** solver, CConfig** config, unsigned short val_iZone, unsigned short val_iInst, bool CrossTerm) { + SU2_ZONE_SCOPED solver[val_iZone][val_iInst][MESH_0][ADJHEAT_SOL]->ExtractAdjoint_Solution(geometry[val_iZone][val_iInst][MESH_0], config[val_iZone], CrossTerm); @@ -155,6 +158,7 @@ void CDiscAdjHeatIteration::IterateDiscAdj(CGeometry**** geometry, CSolver***** void CDiscAdjHeatIteration::InitializeAdjoint(CSolver***** solver, CGeometry**** geometry, CConfig** config, unsigned short iZone, unsigned short iInst) { + SU2_ZONE_SCOPED /*--- Initialize the adjoints the solution variables ---*/ @@ -166,6 +170,7 @@ void CDiscAdjHeatIteration::InitializeAdjoint(CSolver***** solver, CGeometry**** void CDiscAdjHeatIteration::RegisterInput(CSolver***** solver, CGeometry**** geometry, CConfig** config, unsigned short iZone, unsigned short iInst, RECORDING kind_recording) { + SU2_ZONE_SCOPED auto solvers0 = solver[iZone][iInst][MESH_0]; auto geometry0 = geometry[iZone][iInst][MESH_0]; @@ -194,6 +199,7 @@ void CDiscAdjHeatIteration::RegisterInput(CSolver***** solver, CGeometry**** geo void CDiscAdjHeatIteration::SetDependencies(CSolver***** solver, CGeometry**** geometry, CNumerics****** numerics, CConfig** config, unsigned short iZone, unsigned short iInst, RECORDING kind_recording) { + SU2_ZONE_SCOPED auto solvers0 = solver[iZone][iInst][MESH_0]; auto geometries = geometry[iZone][iInst]; @@ -219,6 +225,7 @@ void CDiscAdjHeatIteration::SetDependencies(CSolver***** solver, CGeometry**** g void CDiscAdjHeatIteration::RegisterOutput(CSolver***** solver, CGeometry**** geometry, CConfig** config, unsigned short iZone, unsigned short iInst) { + SU2_ZONE_SCOPED solver[iZone][iInst][MESH_0][ADJHEAT_SOL]->RegisterOutput(geometry[iZone][iInst][MESH_0], config[iZone]); } @@ -227,6 +234,7 @@ bool CDiscAdjHeatIteration::Monitor(COutput* output, CIntegration**** integratio CSolver***** solver, CNumerics****** numerics, CConfig** config, CSurfaceMovement** surface_movement, CVolumetricMovement*** grid_movement, CFreeFormDefBox*** FFDBox, unsigned short val_iZone, unsigned short val_iInst) { + SU2_ZONE_SCOPED output->SetHistoryOutput(geometry[val_iZone][INST_0][MESH_0], solver[val_iZone][INST_0][MESH_0], config[val_iZone], config[val_iZone]->GetTimeIter(), config[val_iZone]->GetOuterIter(), diff --git a/SU2_CFD/src/iteration/CFEAIteration.cpp b/SU2_CFD/src/iteration/CFEAIteration.cpp index 42e8e485f71e..03280fdd4b95 100644 --- a/SU2_CFD/src/iteration/CFEAIteration.cpp +++ b/SU2_CFD/src/iteration/CFEAIteration.cpp @@ -32,6 +32,7 @@ void CFEAIteration::Iterate(COutput* output, CIntegration**** integration, CGeom CNumerics****** numerics, CConfig** config, CSurfaceMovement** surface_movement, CVolumetricMovement*** grid_movement, CFreeFormDefBox*** FFDBox, unsigned short val_iZone, unsigned short val_iInst) { + SU2_ZONE_SCOPED bool StopCalc = false; unsigned long IntIter = 0; @@ -200,6 +201,7 @@ void CFEAIteration::Update(COutput* output, CIntegration**** integration, CGeome CNumerics****** numerics, CConfig** config, CSurfaceMovement** surface_movement, CVolumetricMovement*** grid_movement, CFreeFormDefBox*** FFDBox, unsigned short val_iZone, unsigned short val_iInst) { + SU2_ZONE_SCOPED CSolver* feaSolver = solver[val_iZone][val_iInst][MESH_0][FEA_SOL]; /*----------------- Update structural solver ----------------------*/ @@ -220,6 +222,7 @@ void CFEAIteration::Predictor(COutput* output, CIntegration**** integration, CGe CSolver***** solver, CNumerics****** numerics, CConfig** config, CSurfaceMovement** surface_movement, CVolumetricMovement*** grid_movement, CFreeFormDefBox*** FFDBox, unsigned short val_iZone, unsigned short val_iInst) { + SU2_ZONE_SCOPED CSolver* feaSolver = solver[val_iZone][val_iInst][MESH_0][FEA_SOL]; feaSolver->PredictStruct_Displacement(geometry[val_iZone][val_iInst][MESH_0], config[val_iZone]); @@ -229,6 +232,7 @@ void CFEAIteration::Relaxation(COutput* output, CIntegration**** integration, CG CSolver***** solver, CNumerics****** numerics, CConfig** config, CSurfaceMovement** surface_movement, CVolumetricMovement*** grid_movement, CFreeFormDefBox*** FFDBox, unsigned short val_iZone, unsigned short val_iInst) { + SU2_ZONE_SCOPED CSolver* feaSolver = solver[val_iZone][val_iInst][MESH_0][FEA_SOL]; /*-------------------- Aitken's relaxation ------------------------*/ @@ -247,6 +251,7 @@ bool CFEAIteration::Monitor(COutput* output, CIntegration**** integration, CGeom CNumerics****** numerics, CConfig** config, CSurfaceMovement** surface_movement, CVolumetricMovement*** grid_movement, CFreeFormDefBox*** FFDBox, unsigned short val_iZone, unsigned short val_iInst) { + SU2_ZONE_SCOPED StopTime = SU2_MPI::Wtime(); UsedTime = StopTime - StartTime; @@ -262,6 +267,7 @@ void CFEAIteration::Solve(COutput* output, CIntegration**** integration, CGeomet CNumerics****** numerics, CConfig** config, CSurfaceMovement** surface_movement, CVolumetricMovement*** grid_movement, CFreeFormDefBox*** FFDBox, unsigned short val_iZone, unsigned short val_iInst) { + SU2_ZONE_SCOPED /*------------------ Structural subiteration ----------------------*/ Iterate(output, integration, geometry, solver, numerics, config, surface_movement, grid_movement, FFDBox, val_iZone, val_iInst); diff --git a/SU2_CFD/src/iteration/CFEMFluidIteration.cpp b/SU2_CFD/src/iteration/CFEMFluidIteration.cpp index d2bf2845cb5d..711d86a12151 100644 --- a/SU2_CFD/src/iteration/CFEMFluidIteration.cpp +++ b/SU2_CFD/src/iteration/CFEMFluidIteration.cpp @@ -32,6 +32,7 @@ void CFEMFluidIteration::Preprocess(COutput* output, CIntegration**** integratio CSolver***** solver, CNumerics****** numerics, CConfig** config, CSurfaceMovement** surface_movement, CVolumetricMovement*** grid_movement, CFreeFormDefBox*** FFDBox, unsigned short val_iZone, unsigned short val_iInst) { + SU2_ZONE_SCOPED unsigned long TimeIter = config[ZONE_0]->GetTimeIter(); const bool restart = (config[ZONE_0]->GetRestart() || config[ZONE_0]->GetRestart_Flow()); @@ -45,6 +46,7 @@ void CFEMFluidIteration::Iterate(COutput* output, CIntegration**** integration, CSolver***** solver, CNumerics****** numerics, CConfig** config, CSurfaceMovement** surface_movement, CVolumetricMovement*** grid_movement, CFreeFormDefBox*** FFDBox, unsigned short val_iZone, unsigned short val_iInst) { + SU2_ZONE_SCOPED /*--- Update global parameters ---*/ const auto kind_solver = config[val_iZone]->GetKind_Solver(); diff --git a/SU2_CFD/src/iteration/CFluidIteration.cpp b/SU2_CFD/src/iteration/CFluidIteration.cpp index 7231e3f4b6cf..91cb81d55041 100644 --- a/SU2_CFD/src/iteration/CFluidIteration.cpp +++ b/SU2_CFD/src/iteration/CFluidIteration.cpp @@ -32,6 +32,8 @@ void CFluidIteration::Preprocess(COutput* output, CIntegration**** integration, CSolver***** solver, CNumerics****** numerics, CConfig** config, CSurfaceMovement** surface_movement, CVolumetricMovement*** grid_movement, CFreeFormDefBox*** FFDBox, unsigned short val_iZone, unsigned short val_iInst) { + SU2_ZONE_SCOPED + unsigned long TimeIter = config[val_iZone]->GetTimeIter(); bool fsi = config[val_iZone]->GetFSI_Simulation(); @@ -56,6 +58,7 @@ void CFluidIteration::Iterate(COutput* output, CIntegration**** integration, CGe CSolver***** solver, CNumerics****** numerics, CConfig** config, CSurfaceMovement** surface_movement, CVolumetricMovement*** grid_movement, CFreeFormDefBox*** FFDBox, unsigned short val_iZone, unsigned short val_iInst) { + SU2_ZONE_SCOPED const bool unsteady = (config[val_iZone]->GetTime_Marching() == TIME_MARCHING::DT_STEPPING_1ST) || (config[val_iZone]->GetTime_Marching() == TIME_MARCHING::DT_STEPPING_2ND); @@ -155,7 +158,7 @@ void CFluidIteration::Update(COutput* output, CIntegration**** integration, CGeo CNumerics****** numerics, CConfig** config, CSurfaceMovement** surface_movement, CVolumetricMovement*** grid_movement, CFreeFormDefBox*** FFDBox, unsigned short val_iZone, unsigned short val_iInst) { - unsigned short iMesh; + SU2_ZONE_SCOPED /*--- Dual time stepping strategy ---*/ @@ -163,7 +166,7 @@ void CFluidIteration::Update(COutput* output, CIntegration**** integration, CGeo (config[val_iZone]->GetTime_Marching() == TIME_MARCHING::DT_STEPPING_2ND)) { /*--- Update dual time solver on all mesh levels ---*/ - for (iMesh = 0; iMesh <= config[val_iZone]->GetnMGLevels(); iMesh++) { + for (unsigned short iMesh = 0; iMesh <= config[val_iZone]->GetnMGLevels(); iMesh++) { integration[val_iZone][val_iInst][FLOW_SOL]->SetDualTime_Solver(geometry[val_iZone][val_iInst][iMesh], solver[val_iZone][val_iInst][iMesh][FLOW_SOL], config[val_iZone], iMesh); @@ -216,14 +219,12 @@ bool CFluidIteration::Monitor(COutput* output, CIntegration**** integration, CGe CSolver***** solver, CNumerics****** numerics, CConfig** config, CSurfaceMovement** surface_movement, CVolumetricMovement*** grid_movement, CFreeFormDefBox*** FFDBox, unsigned short val_iZone, unsigned short val_iInst) { - bool StopCalc = false; + SU2_ZONE_SCOPED StopTime = SU2_MPI::Wtime(); - UsedTime = StopTime - StartTime; - - /*--- Turbomachinery Specific Montior ---*/ + /*--- Turbomachinery Specific Montior ---*/ if (config[ZONE_0]->GetBoolTurbomachinery()){ if (val_iZone == config[ZONE_0]->GetnZone()-1) { ComputeTurboPerformance(solver, geometry, config, config[val_iZone]->GetnInner_Iter()); @@ -248,7 +249,7 @@ bool CFluidIteration::Monitor(COutput* output, CIntegration**** integration, CGe config[val_iZone], config[val_iZone]->GetTimeIter(), config[val_iZone]->GetOuterIter(), config[val_iZone]->GetInnerIter()); - StopCalc = output->GetConvergence(); + auto StopCalc = output->GetConvergence(); /* --- Checking convergence of Fixed CL mode to target CL, and perform finite differencing if needed --*/ @@ -261,6 +262,8 @@ bool CFluidIteration::Monitor(COutput* output, CIntegration**** integration, CGe } void CFluidIteration::UpdateRamp(CGeometry**** geometry_container, CConfig** config_container, unsigned long iter, unsigned short iZone, RAMP_TYPE ramp_flag) { + SU2_ZONE_SCOPED + /*--- Generic function for handling ramps ---*/ // Grid updates (i.e. rotation/translation) handled seperately to boundary (i.e. pressure/mass flow) updates auto* config = config_container[iZone]; @@ -362,6 +365,8 @@ void CFluidIteration::UpdateRamp(CGeometry**** geometry_container, CConfig** con } void CFluidIteration::ComputeTurboPerformance(CSolver***** solver, CGeometry**** geometry_container, CConfig** config_container, unsigned long ExtIter) { + SU2_ZONE_SCOPED + unsigned short nDim = geometry_container[ZONE_0][INST_0][MESH_0]->GetnDim(); unsigned short nBladesRow = config_container[ZONE_0]->GetnMarker_Turbomachinery(); unsigned short iBlade=0, iSpan; @@ -398,6 +403,7 @@ void CFluidIteration::Postprocess(COutput* output, CIntegration**** integration, CSolver***** solver, CNumerics****** numerics, CConfig** config, CSurfaceMovement** surface_movement, CVolumetricMovement*** grid_movement, CFreeFormDefBox*** FFDBox, unsigned short val_iZone, unsigned short val_iInst) { + SU2_ZONE_SCOPED /*--- Temporary: enable only for single-zone driver. This should be removed eventually when generalized. ---*/ if (!config[val_iZone]->GetMultizone_Problem()) { @@ -412,6 +418,8 @@ void CFluidIteration::Solve(COutput* output, CIntegration**** integration, CGeom CNumerics****** numerics, CConfig** config, CSurfaceMovement** surface_movement, CVolumetricMovement*** grid_movement, CFreeFormDefBox*** FFDBox, unsigned short val_iZone, unsigned short val_iInst) { + SU2_ZONE_SCOPED + /*--- Boolean to determine if we are running a static or dynamic case ---*/ bool steady = !config[val_iZone]->GetTime_Domain(); @@ -457,6 +465,8 @@ void CFluidIteration::Solve(COutput* output, CIntegration**** integration, CGeom } void CFluidIteration::SetWind_GustField(CConfig* config, CGeometry** geometry, CSolver*** solver) { + SU2_ZONE_SCOPED + // The gust is imposed on the flow field via the grid velocities. This method called the Field Velocity Method is // described in the NASA TM–2012-217771 - Development, Verification and Use of Gust Modeling in the NASA Computational // Fluid Dynamics Code FUN3D the desired gust is prescribed as the negative of the grid velocity. @@ -604,6 +614,8 @@ void CFluidIteration::SetWind_GustField(CConfig* config, CGeometry** geometry, C void CFluidIteration::InitializeVortexDistribution(unsigned long& nVortex, vector& x0, vector& y0, vector& vort_strength, vector& r_core) { + SU2_ZONE_SCOPED + /*--- Read in Vortex Distribution ---*/ std::string line; std::ifstream file; @@ -637,6 +649,7 @@ void CFluidIteration::InitializeVortexDistribution(unsigned long& nVortex, vecto } bool CFluidIteration::MonitorFixed_CL(COutput *output, CGeometry *geometry, CSolver **solver, CConfig *config) { + SU2_ZONE_SCOPED CSolver* flow_solver= solver[FLOW_SOL]; @@ -661,6 +674,7 @@ bool CFluidIteration::MonitorFixed_CL(COutput *output, CGeometry *geometry, CSol } void CFluidIteration::SetDualTime_Aeroelastic(CConfig* config) const { + SU2_ZONE_SCOPED /*--- Store old aeroelastic solutions ---*/ diff --git a/SU2_CFD/src/iteration/CHeatIteration.cpp b/SU2_CFD/src/iteration/CHeatIteration.cpp index e1f83c557140..df2b30b6cbef 100644 --- a/SU2_CFD/src/iteration/CHeatIteration.cpp +++ b/SU2_CFD/src/iteration/CHeatIteration.cpp @@ -32,6 +32,7 @@ void CHeatIteration::Iterate(COutput* output, CIntegration**** integration, CGeo CNumerics****** numerics, CConfig** config, CSurfaceMovement** surface_movement, CVolumetricMovement*** grid_movement, CFreeFormDefBox*** FFDBox, unsigned short val_iZone, unsigned short val_iInst) { + SU2_ZONE_SCOPED /*--- Update global parameters ---*/ @@ -45,6 +46,7 @@ void CHeatIteration::Update(COutput* output, CIntegration**** integration, CGeom CNumerics****** numerics, CConfig** config, CSurfaceMovement** surface_movement, CVolumetricMovement*** grid_movement, CFreeFormDefBox*** FFDBox, unsigned short val_iZone, unsigned short val_iInst) { + SU2_ZONE_SCOPED /*--- Update dual time solver ---*/ if ((config[val_iZone]->GetTime_Marching() == TIME_MARCHING::DT_STEPPING_1ST) || diff --git a/SU2_CFD/src/iteration/CIteration.cpp b/SU2_CFD/src/iteration/CIteration.cpp index 2726872258c2..bbb35c27a7be 100644 --- a/SU2_CFD/src/iteration/CIteration.cpp +++ b/SU2_CFD/src/iteration/CIteration.cpp @@ -33,6 +33,8 @@ void CIteration::SetGrid_Movement(CGeometry** geometry, CSurfaceMovement* surface_movement, CVolumetricMovement* grid_movement, CSolver*** solver, CConfig* config, unsigned long IntIter, unsigned long TimeIter) { + SU2_ZONE_SCOPED + unsigned short Kind_Grid_Movement = config->GetKind_GridMovement(); bool adjoint = config->GetContinuous_Adjoint(); @@ -92,7 +94,7 @@ void CIteration::SetGrid_Movement(CGeometry** geometry, CSurfaceMovement* surfac if (config->GetSurface_Movement(AEROELASTIC) || config->GetSurface_Movement(AEROELASTIC_RIGID_MOTION) || config->GetSurface_Movement(MOVING_WALL)) { /*--- Apply rigid mesh transformation to entire grid first, if necessary ---*/ - + if (IntIter == 0) { if (Kind_Grid_Movement == AEROELASTIC_RIGID_MOTION) { @@ -181,6 +183,7 @@ void CIteration::SetGrid_Movement(CGeometry** geometry, CSurfaceMovement* surfac void CIteration::SetMesh_Deformation(CGeometry** geometry, CSolver** solver, CNumerics*** numerics, CConfig* config, RECORDING kind_recording) { + SU2_ZONE_SCOPED if (!config->GetDeform_Mesh()) return; /*--- Perform the elasticity mesh movement ---*/ @@ -206,6 +209,7 @@ void CIteration::SetMesh_Deformation(CGeometry** geometry, CSolver** solver, CNu void CIteration::Output(COutput* output, CGeometry**** geometry, CSolver***** solver, CConfig** config, unsigned long InnerIter, bool StopCalc, unsigned short val_iZone, unsigned short val_iInst) { + SU2_ZONE_SCOPED output->SetResultFiles(geometry[val_iZone][INST_0][MESH_0], config[val_iZone], solver[val_iZone][INST_0][MESH_0], InnerIter); } diff --git a/SU2_CFD/src/iteration/CIterationFactory.cpp b/SU2_CFD/src/iteration/CIterationFactory.cpp index f691dde4328f..827f4937af94 100644 --- a/SU2_CFD/src/iteration/CIterationFactory.cpp +++ b/SU2_CFD/src/iteration/CIterationFactory.cpp @@ -38,6 +38,7 @@ #include "../../include/iteration/CFEAIteration.hpp" CIteration* CIterationFactory::CreateIteration(MAIN_SOLVER kindSolver, const CConfig* config){ + SU2_ZONE_SCOPED CIteration *iteration = nullptr; diff --git a/SU2_CFD/src/iteration/CTurboIteration.cpp b/SU2_CFD/src/iteration/CTurboIteration.cpp index 3d95b895ed8f..caca932b2c73 100644 --- a/SU2_CFD/src/iteration/CTurboIteration.cpp +++ b/SU2_CFD/src/iteration/CTurboIteration.cpp @@ -33,6 +33,7 @@ void CTurboIteration::Preprocess(COutput* output, CIntegration**** integration, CSolver***** solver, CNumerics****** numerics, CConfig** config, CSurfaceMovement** surface_movement, CVolumetricMovement*** grid_movement, CFreeFormDefBox*** FFDBox, unsigned short val_iZone, unsigned short val_iInst) { + SU2_ZONE_SCOPED /*--- Average quantities at the inflow and outflow boundaries ---*/ solver[val_iZone][val_iInst][MESH_0][FLOW_SOL]->TurboAverageProcess( solver[val_iZone][val_iInst][MESH_0], geometry[val_iZone][val_iInst][MESH_0], config[val_iZone], INFLOW); @@ -49,6 +50,7 @@ void CTurboIteration::Postprocess(COutput* output, CIntegration**** integration, CSolver***** solver, CNumerics****** numerics, CConfig** config, CSurfaceMovement** surface_movement, CVolumetricMovement*** grid_movement, CFreeFormDefBox*** FFDBox, unsigned short val_iZone, unsigned short val_iInst) { + SU2_ZONE_SCOPED /*--- Average quantities at the inflow and outflow boundaries ---*/ solver[val_iZone][val_iInst][MESH_0][FLOW_SOL]->TurboAverageProcess( solver[val_iZone][val_iInst][MESH_0], geometry[val_iZone][val_iInst][MESH_0], config[val_iZone], INFLOW); @@ -61,6 +63,7 @@ void CTurboIteration::Postprocess(COutput* output, CIntegration**** integration, } void CTurboIteration::InitTurboPerformance(CGeometry* geometry, CConfig** config, CFluidModel* fluid) { + SU2_ZONE_SCOPED TurbomachineryPerformance = std::make_shared(config, *geometry, *fluid); TurbomachineryStagePerformance = std::make_shared(*fluid); } \ No newline at end of file diff --git a/SU2_CFD/src/solvers/CAdjEulerSolver.cpp b/SU2_CFD/src/solvers/CAdjEulerSolver.cpp index a96a131f553f..bfe558952e84 100644 --- a/SU2_CFD/src/solvers/CAdjEulerSolver.cpp +++ b/SU2_CFD/src/solvers/CAdjEulerSolver.cpp @@ -30,6 +30,7 @@ #include "../../../Common/include/toolboxes/geometry_toolbox.hpp" CAdjEulerSolver::CAdjEulerSolver() : CSolver() { + SU2_ZONE_SCOPED /*--- Array initialization ---*/ Phi_Inf = nullptr; @@ -47,6 +48,7 @@ CAdjEulerSolver::CAdjEulerSolver() : CSolver() { } CAdjEulerSolver::CAdjEulerSolver(CGeometry *geometry, CConfig *config, unsigned short iMesh) : CSolver() { + SU2_ZONE_SCOPED unsigned long iPoint, iVertex, iMarker, jMarker; string text_line, mesh_filename; unsigned short iDim, iVar; @@ -335,6 +337,7 @@ CAdjEulerSolver::CAdjEulerSolver(CGeometry *geometry, CConfig *config, unsigned } CAdjEulerSolver::~CAdjEulerSolver() { + SU2_ZONE_SCOPED unsigned short iVar, iMarker; delete [] Phi_Inf; @@ -364,6 +367,7 @@ CAdjEulerSolver::~CAdjEulerSolver() { void CAdjEulerSolver::SetTime_Step(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, unsigned long Iteration) { + SU2_ZONE_SCOPED /*--- Use the flow solution to update the time step * The time step depends on the characteristic velocity, which is the same @@ -372,6 +376,7 @@ void CAdjEulerSolver::SetTime_Step(CGeometry *geometry, CSolver **solver_contain } void CAdjEulerSolver::Set_MPI_ActDisk(CSolver **solver_container, CGeometry *geometry, CConfig *config) { + SU2_ZONE_SCOPED unsigned long iter, iPoint, iVertex, jVertex, iPointTotal, Buffer_Send_nPointTotal = 0, iGlobalIndex, iGlobal; @@ -654,6 +659,7 @@ void CAdjEulerSolver::Set_MPI_ActDisk(CSolver **solver_container, CGeometry *geo } void CAdjEulerSolver::SetForceProj_Vector(CGeometry *geometry, CSolver **solver_container, CConfig *config) { + SU2_ZONE_SCOPED su2double *ForceProj_Vector, x = 0.0, y = 0.0, z = 0.0, *Normal, CD, CL, Cp, CpTarget, CT, CQ, x_origin, y_origin, z_origin, WDrag, Area, invCD, CLCD2, invCQ, CTRCQ2; @@ -877,6 +883,7 @@ void CAdjEulerSolver::SetForceProj_Vector(CGeometry *geometry, CSolver **solver_ } void CAdjEulerSolver::SetInitialCondition(CGeometry **geometry, CSolver ***solver_container, CConfig *config, unsigned long TimeIter) { + SU2_ZONE_SCOPED const bool restart = config->GetRestart(); const bool dual_time = ((config->GetTime_Marching() == TIME_MARCHING::DT_STEPPING_1ST) || @@ -904,6 +911,7 @@ void CAdjEulerSolver::SetInitialCondition(CGeometry **geometry, CSolver ***solve } void CAdjEulerSolver::Preprocessing(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, unsigned short iRKStep, unsigned short RunTime_EqSystem, bool Output) { + SU2_ZONE_SCOPED unsigned long iPoint, nonPhysicalPoints = 0; su2double SharpEdge_Distance; @@ -993,6 +1001,7 @@ void CAdjEulerSolver::Preprocessing(CGeometry *geometry, CSolver **solver_contai void CAdjEulerSolver::Centered_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh, unsigned short iRKStep) { + SU2_ZONE_SCOPED CNumerics* numerics = numerics_container[CONV_TERM]; @@ -1067,6 +1076,7 @@ void CAdjEulerSolver::Centered_Residual(CGeometry *geometry, CSolver **solver_co void CAdjEulerSolver::Upwind_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED CNumerics* numerics = numerics_container[CONV_TERM]; @@ -1207,6 +1217,7 @@ void CAdjEulerSolver::Upwind_Residual(CGeometry *geometry, CSolver **solver_cont void CAdjEulerSolver::Source_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED CNumerics* numerics = numerics_container[SOURCE_FIRST_TERM]; @@ -1312,9 +1323,11 @@ void CAdjEulerSolver::Source_Residual(CGeometry *geometry, CSolver **solver_cont void CAdjEulerSolver::Source_Template(CGeometry *geometry, CSolver **solver_container, CNumerics *numerics, CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED } void CAdjEulerSolver::SetCentered_Dissipation_Sensor(CGeometry *geometry, CConfig *config) { + SU2_ZONE_SCOPED unsigned long iPoint; su2double SharpEdge_Distance, eps, ds, scale, Sensor, Param_Kappa_2, Param_Kappa_4; @@ -1350,6 +1363,7 @@ void CAdjEulerSolver::SetCentered_Dissipation_Sensor(CGeometry *geometry, CConfi void CAdjEulerSolver::ExplicitRK_Iteration(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iRKStep) { + SU2_ZONE_SCOPED su2double *Residual, *Res_TruncError, Vol, Delta, Res; unsigned short iVar; unsigned long iPoint; @@ -1386,6 +1400,7 @@ void CAdjEulerSolver::ExplicitRK_Iteration(CGeometry *geometry, CSolver **solver } void CAdjEulerSolver::ExplicitEuler_Iteration(CGeometry *geometry, CSolver **solver_container, CConfig *config) { + SU2_ZONE_SCOPED su2double *local_Residual, *local_Res_TruncError, Vol, Delta, Res; unsigned short iVar; unsigned long iPoint; @@ -1420,6 +1435,7 @@ void CAdjEulerSolver::ExplicitEuler_Iteration(CGeometry *geometry, CSolver **sol } void CAdjEulerSolver::ImplicitEuler_Iteration(CGeometry *geometry, CSolver **solver_container, CConfig *config) { + SU2_ZONE_SCOPED unsigned short iVar; unsigned long iPoint; @@ -1498,6 +1514,7 @@ void CAdjEulerSolver::ImplicitEuler_Iteration(CGeometry *geometry, CSolver **sol } void CAdjEulerSolver::Inviscid_Sensitivity(CGeometry *geometry, CSolver **solver_container, CNumerics *numerics, CConfig *config) { + SU2_ZONE_SCOPED unsigned long iVertex, iPoint, Neigh; unsigned short iPos, jPos; @@ -1967,6 +1984,7 @@ void CAdjEulerSolver::Inviscid_Sensitivity(CGeometry *geometry, CSolver **solver } void CAdjEulerSolver::Smooth_Sensitivity(CGeometry *geometry, CSolver **solver_container, CNumerics *numerics, CConfig *config) { + SU2_ZONE_SCOPED unsigned short iMarker; unsigned long iVertex, jVertex, nVertex, iPoint; su2double **A, *b, Sens, *ArchLength, *Coord_begin, *Coord_end, dist; @@ -2099,6 +2117,7 @@ void CAdjEulerSolver::Smooth_Sensitivity(CGeometry *geometry, CSolver **solver_c void CAdjEulerSolver::SetFarfield_AoA(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, bool Output) { + SU2_ZONE_SCOPED unsigned long Iter_Fixed_CL = config->GetUpdate_AoA_Iter_Limit(); unsigned long InnerIter = config->GetInnerIter(); @@ -2209,6 +2228,7 @@ void CAdjEulerSolver::BC_Euler_Wall(CGeometry *geometry, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED unsigned long iVertex, iPoint; su2double *d = nullptr, *Normal, *U, *Psi_Aux, ProjVel = 0.0, bcn, vn = 0.0, Area, *UnitNormal; @@ -2348,6 +2368,7 @@ void CAdjEulerSolver::BC_Euler_Wall(CGeometry *geometry, void CAdjEulerSolver::BC_Sym_Plane(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED unsigned long iVertex, iPoint; su2double *Normal, ProjVel = 0.0, vn = 0.0, Area, *UnitNormal, @@ -2505,6 +2526,7 @@ void CAdjEulerSolver::BC_Sym_Plane(CGeometry *geometry, CSolver **solver_contain } void CAdjEulerSolver::BC_Far_Field(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED unsigned long iVertex, iPoint, Point_Normal; unsigned short iVar, iDim; @@ -2613,6 +2635,7 @@ void CAdjEulerSolver::BC_Far_Field(CGeometry *geometry, CSolver **solver_contain void CAdjEulerSolver::BC_Supersonic_Inlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED unsigned short iVar, iDim; unsigned long iVertex, iPoint, Point_Normal; su2double *V_inlet, *V_domain, *Normal, *Psi_domain, *Psi_inlet; @@ -2731,6 +2754,7 @@ void CAdjEulerSolver::BC_Supersonic_Inlet(CGeometry *geometry, CSolver **solver_ void CAdjEulerSolver::BC_Supersonic_Outlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED unsigned short iVar, iDim; unsigned long iVertex, iPoint, Point_Normal; su2double *V_outlet, *V_domain, *Normal, *Psi_domain, *Psi_outlet; @@ -2848,6 +2872,7 @@ void CAdjEulerSolver::BC_Supersonic_Outlet(CGeometry *geometry, CSolver **solver } void CAdjEulerSolver::BC_Inlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED unsigned short iVar, iDim; unsigned long iVertex, iPoint, Point_Normal; @@ -3027,6 +3052,7 @@ void CAdjEulerSolver::BC_Inlet(CGeometry *geometry, CSolver **solver_container, } void CAdjEulerSolver::BC_Outlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED unsigned short iVar, iDim; unsigned long iVertex, iPoint, Point_Normal; @@ -3317,6 +3343,7 @@ void CAdjEulerSolver::BC_Outlet(CGeometry *geometry, CSolver **solver_container, } void CAdjEulerSolver::BC_Engine_Inflow(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED su2double *Normal, *V_domain, *V_inflow, *Psi_domain, *Psi_inflow, P_Fan, Velocity[3], Velocity2, Density, Vn, UnitNormal[3], Area, a1; @@ -3439,6 +3466,7 @@ void CAdjEulerSolver::BC_Engine_Inflow(CGeometry *geometry, CSolver **solver_con } void CAdjEulerSolver::BC_Engine_Exhaust(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED unsigned long iVertex, iPoint, Point_Normal; su2double *Normal, *V_domain, *V_exhaust, *Psi_domain, *Psi_exhaust; @@ -3516,6 +3544,7 @@ void CAdjEulerSolver::BC_Engine_Exhaust(CGeometry *geometry, CSolver **solver_co } void CAdjEulerSolver::BC_ActDisk_Inlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED su2double *Normal, *V_domain, *V_inlet, *Psi_domain, *Psi_inlet; unsigned short iVar, iDim; @@ -3646,6 +3675,7 @@ void CAdjEulerSolver::BC_ActDisk_Inlet(CGeometry *geometry, CSolver **solver_con } void CAdjEulerSolver::BC_ActDisk_Outlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED unsigned long iVertex, iPoint, GlobalIndex_inlet, GlobalIndex; su2double *Normal, *V_domain, *V_outlet, *Psi_domain, *Psi_outlet; @@ -3736,11 +3766,13 @@ void CAdjEulerSolver::BC_ActDisk_Outlet(CGeometry *geometry, CSolver **solver_co void CAdjEulerSolver::BC_ActDisk(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker, bool val_inlet_surface) { + SU2_ZONE_SCOPED } void CAdjEulerSolver::SetResidual_DualTime(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iRKStep, unsigned short iMesh, unsigned short RunTime_EqSystem) { + SU2_ZONE_SCOPED unsigned short iVar, jVar; unsigned long iPoint; su2double *U_time_nM1, *U_time_n, *U_time_nP1, Volume_nM1, Volume_n, Volume_nP1, TimeStep; @@ -3800,6 +3832,7 @@ void CAdjEulerSolver::SetResidual_DualTime(CGeometry *geometry, CSolver **solver } void CAdjEulerSolver::LoadRestart(CGeometry **geometry, CSolver ***solver, CConfig *config, int val_iter, bool val_update_geo) { + SU2_ZONE_SCOPED /*--- Restart the solution from file information ---*/ unsigned short iDim, iVar, iMesh; @@ -3901,6 +3934,7 @@ void CAdjEulerSolver::LoadRestart(CGeometry **geometry, CSolver ***solver, CConf } void CAdjEulerSolver::SetAuxVar_Surface_Gradient(CGeometry *geometry, const CConfig *config) { + SU2_ZONE_SCOPED unsigned short iDim, jDim, iNeigh, iMarker; unsigned short nDim = geometry->GetnDim(); diff --git a/SU2_CFD/src/solvers/CAdjNSSolver.cpp b/SU2_CFD/src/solvers/CAdjNSSolver.cpp index f2ad14257e46..3305ebff89f6 100644 --- a/SU2_CFD/src/solvers/CAdjNSSolver.cpp +++ b/SU2_CFD/src/solvers/CAdjNSSolver.cpp @@ -33,6 +33,7 @@ CAdjNSSolver::CAdjNSSolver() : CAdjEulerSolver() { } CAdjNSSolver::CAdjNSSolver(CGeometry *geometry, CConfig *config, unsigned short iMesh) : CAdjEulerSolver() { + SU2_ZONE_SCOPED unsigned long iPoint, iVertex; string text_line, mesh_filename; unsigned short iDim, iVar, iMarker; @@ -291,6 +292,7 @@ CAdjNSSolver::~CAdjNSSolver() = default; void CAdjNSSolver::SetTime_Step(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, unsigned long Iteration) { + SU2_ZONE_SCOPED /*--- Use the flow solution to update the time step * The time step depends on the characteristic velocity, which is the same @@ -300,6 +302,7 @@ void CAdjNSSolver::SetTime_Step(CGeometry *geometry, CSolver **solver_container, } void CAdjNSSolver::Preprocessing(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, unsigned short iRKStep, unsigned short RunTime_EqSystem, bool Output) { + SU2_ZONE_SCOPED unsigned long iPoint, nonPhysicalPoints = 0; su2double SharpEdge_Distance; @@ -390,6 +393,7 @@ void CAdjNSSolver::Preprocessing(CGeometry *geometry, CSolver **solver_container void CAdjNSSolver::Viscous_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh, unsigned short iRKStep) { + SU2_ZONE_SCOPED CNumerics* numerics = numerics_container[VISC_TERM]; @@ -440,6 +444,7 @@ void CAdjNSSolver::Viscous_Residual(CGeometry *geometry, CSolver **solver_contai void CAdjNSSolver::Source_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED CNumerics* numerics = numerics_container[SOURCE_FIRST_TERM]; CNumerics* second_numerics = numerics_container[SOURCE_SECOND_TERM]; @@ -581,6 +586,7 @@ void CAdjNSSolver::Source_Residual(CGeometry *geometry, CSolver **solver_contain } void CAdjNSSolver::Viscous_Sensitivity(CGeometry *geometry, CSolver **solver_container, CNumerics *numerics, CConfig *config) { + SU2_ZONE_SCOPED unsigned long iVertex, iPoint; unsigned short iDim, jDim, iMarker, iPos, jPos; @@ -1163,6 +1169,7 @@ void CAdjNSSolver::Viscous_Sensitivity(CGeometry *geometry, CSolver **solver_con } void CAdjNSSolver::BC_HeatFlux_Wall(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED unsigned short iDim, iVar, jVar, jDim; unsigned long iVertex, iPoint, Point_Normal; @@ -1525,6 +1532,7 @@ void CAdjNSSolver::BC_HeatFlux_Wall(CGeometry *geometry, CSolver **solver_contai void CAdjNSSolver::BC_Isothermal_Wall(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED unsigned long iVertex, iPoint; unsigned short iDim, iVar, jVar, jDim; diff --git a/SU2_CFD/src/solvers/CAdjTurbSolver.cpp b/SU2_CFD/src/solvers/CAdjTurbSolver.cpp index bd5bfe3000ed..4e331049c020 100644 --- a/SU2_CFD/src/solvers/CAdjTurbSolver.cpp +++ b/SU2_CFD/src/solvers/CAdjTurbSolver.cpp @@ -31,6 +31,7 @@ CAdjTurbSolver::CAdjTurbSolver() : CSolver() {} CAdjTurbSolver::CAdjTurbSolver(CGeometry *geometry, CConfig *config, unsigned short iMesh) : CSolver() { + SU2_ZONE_SCOPED adjoint = true; @@ -164,10 +165,12 @@ CAdjTurbSolver::CAdjTurbSolver(CGeometry *geometry, CConfig *config, unsigned sh } CAdjTurbSolver::~CAdjTurbSolver() { + SU2_ZONE_SCOPED delete nodes; } void CAdjTurbSolver::BC_HeatFlux_Wall(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED unsigned long iPoint, iVertex; @@ -192,6 +195,7 @@ void CAdjTurbSolver::BC_HeatFlux_Wall(CGeometry *geometry, CSolver **solver_cont } void CAdjTurbSolver::BC_Isothermal_Wall(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED unsigned long iPoint, iVertex; @@ -216,6 +220,7 @@ void CAdjTurbSolver::BC_Isothermal_Wall(CGeometry *geometry, CSolver **solver_co } void CAdjTurbSolver::BC_Far_Field(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED unsigned long iPoint, iVertex; for (iVertex = 0; iVertex < geometry->nVertex[val_marker]; iVertex++) { @@ -243,17 +248,10 @@ void CAdjTurbSolver::BC_Far_Field(CGeometry *geometry, CSolver **solver_containe } void CAdjTurbSolver::Preprocessing(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, unsigned short iRKStep, unsigned short RunTime_EqSystem, bool Output) { - unsigned long iPoint; - - for (iPoint = 0; iPoint < nPoint; iPoint++) { - - /*--- Initialize the residual vector ---*/ - LinSysRes.SetBlock_Zero(iPoint); - - } - + SU2_ZONE_SCOPED - /*--- Initialize the Jacobian matrices ---*/ + LinSysRes.SetValZero(); + /*--- Initialize the Jacobian matrices ---*/ Jacobian.SetValZero(); /*--- Gradient of the adjoint turbulent variables ---*/ @@ -268,6 +266,7 @@ void CAdjTurbSolver::Preprocessing(CGeometry *geometry, CSolver **solver_contain void CAdjTurbSolver::Upwind_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED CNumerics* numerics = numerics_container[CONV_TERM]; @@ -317,6 +316,7 @@ void CAdjTurbSolver::Upwind_Residual(CGeometry *geometry, CSolver **solver_conta void CAdjTurbSolver::Viscous_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh, unsigned short iRKStep) { + SU2_ZONE_SCOPED CNumerics* numerics = numerics_container[VISC_TERM]; @@ -366,6 +366,7 @@ void CAdjTurbSolver::Viscous_Residual(CGeometry *geometry, CSolver **solver_cont void CAdjTurbSolver::Source_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED CNumerics* numerics = numerics_container[SOURCE_FIRST_TERM]; //CNumerics* second_numerics = numerics_container[SOURCE_SECOND_TERM]; @@ -453,6 +454,7 @@ void CAdjTurbSolver::Source_Residual(CGeometry *geometry, CSolver **solver_conta } void CAdjTurbSolver::ImplicitEuler_Iteration(CGeometry *geometry, CSolver **solver_container, CConfig *config) { + SU2_ZONE_SCOPED unsigned short iVar; unsigned long iPoint; diff --git a/SU2_CFD/src/solvers/CBaselineSolver.cpp b/SU2_CFD/src/solvers/CBaselineSolver.cpp index 642b77c599f8..35057edba4ef 100644 --- a/SU2_CFD/src/solvers/CBaselineSolver.cpp +++ b/SU2_CFD/src/solvers/CBaselineSolver.cpp @@ -34,6 +34,7 @@ CBaselineSolver::CBaselineSolver() : CSolver() { } CBaselineSolver::CBaselineSolver(CGeometry *geometry, CConfig *config) { + SU2_ZONE_SCOPED nPoint = geometry->GetnPoint(); @@ -57,6 +58,7 @@ CBaselineSolver::CBaselineSolver(CGeometry *geometry, CConfig *config) { } CBaselineSolver::CBaselineSolver(CGeometry *geometry, CConfig *config, unsigned short val_nvar, vector field_names) { + SU2_ZONE_SCOPED /*--- Define geometry constants in the solver structure ---*/ @@ -75,6 +77,7 @@ CBaselineSolver::CBaselineSolver(CGeometry *geometry, CConfig *config, unsigned } void CBaselineSolver::SetOutputVariables(CGeometry *geometry, CConfig *config) { + SU2_ZONE_SCOPED /*--- Open the restart file and extract the nVar and field names. ---*/ @@ -350,6 +353,7 @@ void CBaselineSolver::SetOutputVariables(CGeometry *geometry, CConfig *config) { } void CBaselineSolver::LoadRestart(CGeometry **geometry, CSolver ***solver, CConfig *config, int val_iter, bool val_update_geo) { + SU2_ZONE_SCOPED /*--- Restart the solution from file information ---*/ @@ -485,6 +489,7 @@ void CBaselineSolver::LoadRestart(CGeometry **geometry, CSolver ***solver, CConf } void CBaselineSolver::LoadRestart_FSI(CGeometry *geometry, CConfig *config, int val_iter) { + SU2_ZONE_SCOPED /*--- Restart the solution from file information ---*/ string filename; @@ -553,5 +558,6 @@ void CBaselineSolver::LoadRestart_FSI(CGeometry *geometry, CConfig *config, int } CBaselineSolver::~CBaselineSolver() { + SU2_ZONE_SCOPED delete nodes; } diff --git a/SU2_CFD/src/solvers/CBaselineSolver_FEM.cpp b/SU2_CFD/src/solvers/CBaselineSolver_FEM.cpp index 82b5abd052af..5990270c85d4 100644 --- a/SU2_CFD/src/solvers/CBaselineSolver_FEM.cpp +++ b/SU2_CFD/src/solvers/CBaselineSolver_FEM.cpp @@ -32,6 +32,7 @@ CBaselineSolver_FEM::CBaselineSolver_FEM() : CSolver() { } CBaselineSolver_FEM::CBaselineSolver_FEM(CGeometry *geometry, CConfig *config) { + SU2_ZONE_SCOPED /*--- Define geometry constants in the solver structure ---*/ @@ -86,6 +87,7 @@ CBaselineSolver_FEM::CBaselineSolver_FEM(CGeometry *geometry, CConfig *config) { } void CBaselineSolver_FEM::SetOutputVariables(CGeometry *geometry, CConfig *config) { + SU2_ZONE_SCOPED /*--- Open the restart file and extract the nVar and field names. ---*/ @@ -311,6 +313,7 @@ void CBaselineSolver_FEM::SetOutputVariables(CGeometry *geometry, CConfig *confi } void CBaselineSolver_FEM::LoadRestart(CGeometry **geometry, CSolver ***solver, CConfig *config, int val_iter, bool val_update_geo) { + SU2_ZONE_SCOPED /*--- Restart the solution from file information ---*/ unsigned short iVar; diff --git a/SU2_CFD/src/solvers/CDiscAdjFEASolver.cpp b/SU2_CFD/src/solvers/CDiscAdjFEASolver.cpp index db83d25257ea..d7177bbb50ce 100644 --- a/SU2_CFD/src/solvers/CDiscAdjFEASolver.cpp +++ b/SU2_CFD/src/solvers/CDiscAdjFEASolver.cpp @@ -29,6 +29,7 @@ CDiscAdjFEASolver::CDiscAdjFEASolver(CGeometry *geometry, CConfig *config, CSolver *direct_solver, unsigned short Kind_Solver, unsigned short iMesh) : CSolver() { + SU2_ZONE_SCOPED adjoint = true; @@ -123,6 +124,7 @@ CDiscAdjFEASolver::CDiscAdjFEASolver(CGeometry *geometry, CConfig *config, CSolv CDiscAdjFEASolver::~CDiscAdjFEASolver() { delete nodes; } void CDiscAdjFEASolver::SetRecording(CGeometry* geometry, CConfig *config){ + SU2_ZONE_SCOPED /*--- Reset the solution to the initial (converged) solution ---*/ @@ -146,6 +148,7 @@ void CDiscAdjFEASolver::SetRecording(CGeometry* geometry, CConfig *config){ } void CDiscAdjFEASolver::RegisterSolution(CGeometry *geometry, CConfig *config){ + SU2_ZONE_SCOPED const bool input = true; const bool dynamic = config->GetTime_Domain(); @@ -164,6 +167,7 @@ void CDiscAdjFEASolver::RegisterSolution(CGeometry *geometry, CConfig *config){ } void CDiscAdjFEASolver::RegisterVariables(CGeometry *geometry, CConfig *config, bool reset){ + SU2_ZONE_SCOPED /*--- Register element-based values as input ---*/ @@ -213,6 +217,7 @@ void CDiscAdjFEASolver::RegisterVariables(CGeometry *geometry, CConfig *config, } void CDiscAdjFEASolver::RegisterOutput(CGeometry *geometry, CConfig *config){ + SU2_ZONE_SCOPED const bool input = false; @@ -223,6 +228,7 @@ void CDiscAdjFEASolver::RegisterOutput(CGeometry *geometry, CConfig *config){ } void CDiscAdjFEASolver::ExtractAdjoint_Solution(CGeometry *geometry, CConfig *config, bool CrossTerm) { + SU2_ZONE_SCOPED /*--- Set the old solution, for multi-zone problems this is done after computing the * residuals, otherwise the per-zone-residuals do not make sense, as on entry Solution @@ -279,6 +285,7 @@ void CDiscAdjFEASolver::ExtractAdjoint_Solution(CGeometry *geometry, CConfig *co } void CDiscAdjFEASolver::ExtractAdjoint_Variables(CGeometry *geometry, CConfig *config){ + SU2_ZONE_SCOPED if (KindDirect_Solver != RUNTIME_FEA_SYS) return; @@ -305,6 +312,7 @@ void CDiscAdjFEASolver::ExtractAdjoint_Variables(CGeometry *geometry, CConfig *c } void CDiscAdjFEASolver::SetAdjoint_Output(CGeometry *geometry, CConfig *config){ + SU2_ZONE_SCOPED const bool dynamic = config->GetTime_Domain(); const bool deform_mesh = (config->GetnMarker_Deform_Mesh() > 0); @@ -338,6 +346,7 @@ void CDiscAdjFEASolver::SetAdjoint_Output(CGeometry *geometry, CConfig *config){ } void CDiscAdjFEASolver::Preprocessing(CGeometry *geometry, CSolver **solver_container, CConfig *config_container, unsigned short iMesh, unsigned short iRKStep, unsigned short RunTime_EqSystem, bool Output){ + SU2_ZONE_SCOPED if (config_container->GetTime_Domain()) { for (auto iPoint = 0ul; iPoint < nPoint; iPoint++) @@ -347,6 +356,7 @@ void CDiscAdjFEASolver::Preprocessing(CGeometry *geometry, CSolver **solver_cont } void CDiscAdjFEASolver::SetSensitivity(CGeometry *geometry, CConfig *config, CSolver*){ + SU2_ZONE_SCOPED const bool time_domain = config->GetTime_Domain(); @@ -390,6 +400,7 @@ void CDiscAdjFEASolver::SetSensitivity(CGeometry *geometry, CConfig *config, CSo } void CDiscAdjFEASolver::ReadDV(const CConfig *config) { + SU2_ZONE_SCOPED string filename; ifstream properties_file; @@ -458,6 +469,7 @@ void CDiscAdjFEASolver::ReadDV(const CConfig *config) { } void CDiscAdjFEASolver::LoadRestart(CGeometry **geometry, CSolver ***solver, CConfig *config, int val_iter, bool val_update_geo) { + SU2_ZONE_SCOPED /*--- Restart the solution from file information ---*/ diff --git a/SU2_CFD/src/solvers/CDiscAdjMeshSolver.cpp b/SU2_CFD/src/solvers/CDiscAdjMeshSolver.cpp index a7c37f0ece02..cdfade30aa55 100644 --- a/SU2_CFD/src/solvers/CDiscAdjMeshSolver.cpp +++ b/SU2_CFD/src/solvers/CDiscAdjMeshSolver.cpp @@ -29,6 +29,7 @@ #include "../../include/variables/CDiscAdjMeshBoundVariable.hpp" CDiscAdjMeshSolver::CDiscAdjMeshSolver(CGeometry *geometry, CConfig *config, CSolver *direct_solver) : CSolver() { + SU2_ZONE_SCOPED nVar = geometry->GetnDim(); nDim = geometry->GetnDim(); @@ -86,6 +87,7 @@ CDiscAdjMeshSolver::CDiscAdjMeshSolver(CGeometry *geometry, CConfig *config, CSo CDiscAdjMeshSolver::~CDiscAdjMeshSolver() { delete nodes; } void CDiscAdjMeshSolver::SetRecording(CGeometry* geometry, CConfig *config){ + SU2_ZONE_SCOPED /*--- Reset the solution to the initial (converged) solution ---*/ @@ -98,6 +100,7 @@ void CDiscAdjMeshSolver::SetRecording(CGeometry* geometry, CConfig *config){ } void CDiscAdjMeshSolver::RegisterSolution(CGeometry *geometry, CConfig *config){ + SU2_ZONE_SCOPED /*--- Register reference mesh coordinates ---*/ direct_solver->GetNodes()->Register_MeshCoord(); @@ -105,6 +108,7 @@ void CDiscAdjMeshSolver::RegisterSolution(CGeometry *geometry, CConfig *config){ } void CDiscAdjMeshSolver::RegisterVariables(CGeometry *geometry, CConfig *config, bool reset){ + SU2_ZONE_SCOPED /*--- Register boundary displacements as input. * Except for FSI, where they are determined by the FEA solver. ---*/ @@ -115,6 +119,7 @@ void CDiscAdjMeshSolver::RegisterVariables(CGeometry *geometry, CConfig *config, } void CDiscAdjMeshSolver::ExtractAdjoint_Solution(CGeometry *geometry, CConfig *config, bool CrossTerm){ + SU2_ZONE_SCOPED /*--- Extract the sensitivities of the mesh coordinates ---*/ @@ -136,6 +141,7 @@ void CDiscAdjMeshSolver::ExtractAdjoint_Solution(CGeometry *geometry, CConfig *c } void CDiscAdjMeshSolver::ExtractAdjoint_Variables(CGeometry *geometry, CConfig *config){ + SU2_ZONE_SCOPED /*--- Extract the sensitivities of the boundary displacements, except for FSI. ---*/ @@ -155,6 +161,7 @@ void CDiscAdjMeshSolver::ExtractAdjoint_Variables(CGeometry *geometry, CConfig * } void CDiscAdjMeshSolver::SetSensitivity(CGeometry *geometry, CConfig *config, CSolver *solver) { + SU2_ZONE_SCOPED SU2_OMP_PARALLEL { @@ -200,5 +207,6 @@ void CDiscAdjMeshSolver::SetSensitivity(CGeometry *geometry, CConfig *config, CS } void CDiscAdjMeshSolver::LoadRestart(CGeometry **geometry, CSolver ***solver, CConfig *config, int val_iter, bool val_update_geo) { + SU2_ZONE_SCOPED } diff --git a/SU2_CFD/src/solvers/CDiscAdjSolver.cpp b/SU2_CFD/src/solvers/CDiscAdjSolver.cpp index 5f6d8beecac9..b6eda0fe729e 100644 --- a/SU2_CFD/src/solvers/CDiscAdjSolver.cpp +++ b/SU2_CFD/src/solvers/CDiscAdjSolver.cpp @@ -31,6 +31,7 @@ CDiscAdjSolver::CDiscAdjSolver(CGeometry *geometry, CConfig *config, CSolver *direct_sol, unsigned short Kind_Solver, unsigned short iMesh) : CSolver() { + SU2_ZONE_SCOPED /*-- Store some information about direct solver ---*/ @@ -115,6 +116,7 @@ CDiscAdjSolver::CDiscAdjSolver(CGeometry *geometry, CConfig *config, CSolver *di CDiscAdjSolver::~CDiscAdjSolver() { delete nodes; } void CDiscAdjSolver::SetRecording(CGeometry* geometry, CConfig *config){ + SU2_ZONE_SCOPED const bool time_n1_needed = config->GetTime_Marching() == TIME_MARCHING::DT_STEPPING_2ND; const bool time_n_needed = (config->GetTime_Marching() == TIME_MARCHING::DT_STEPPING_1ST) || time_n1_needed; @@ -153,6 +155,7 @@ void CDiscAdjSolver::SetRecording(CGeometry* geometry, CConfig *config){ } void CDiscAdjSolver::RegisterSolution(CGeometry *geometry, CConfig *config) { + SU2_ZONE_SCOPED const bool time_n1_needed = (config->GetTime_Marching() == TIME_MARCHING::DT_STEPPING_2ND); const bool time_n_needed = (config->GetTime_Marching() == TIME_MARCHING::DT_STEPPING_1ST) || time_n1_needed; @@ -173,6 +176,7 @@ void CDiscAdjSolver::RegisterSolution(CGeometry *geometry, CConfig *config) { } void CDiscAdjSolver::RegisterVariables(CGeometry *geometry, CConfig *config, bool reset) { + SU2_ZONE_SCOPED BEGIN_SU2_OMP_SAFE_GLOBAL_ACCESS { @@ -296,6 +300,7 @@ void CDiscAdjSolver::RegisterVariables(CGeometry *geometry, CConfig *config, boo } void CDiscAdjSolver::RegisterOutput(CGeometry *geometry, CConfig *config) { + SU2_ZONE_SCOPED /*--- Register variables as output of the solver iteration. Boolean false indicates that an output is registered ---*/ @@ -305,6 +310,7 @@ void CDiscAdjSolver::RegisterOutput(CGeometry *geometry, CConfig *config) { } void CDiscAdjSolver::ExtractAdjoint_Solution(CGeometry *geometry, CConfig *config, bool CrossTerm) { + SU2_ZONE_SCOPED const bool time_n1_needed = config->GetTime_Marching() == TIME_MARCHING::DT_STEPPING_2ND; const bool time_n_needed = (config->GetTime_Marching() == TIME_MARCHING::DT_STEPPING_1ST) || time_n1_needed; @@ -392,6 +398,7 @@ void CDiscAdjSolver::ExtractAdjoint_Solution(CGeometry *geometry, CConfig *confi } void CDiscAdjSolver::ExtractAdjoint_Variables(CGeometry *geometry, CConfig *config) { + SU2_ZONE_SCOPED BEGIN_SU2_OMP_SAFE_GLOBAL_ACCESS { @@ -460,6 +467,7 @@ void CDiscAdjSolver::ExtractAdjoint_Variables(CGeometry *geometry, CConfig *conf } void CDiscAdjSolver::SetAdjoint_Output(CGeometry *geometry, CConfig *config) { + SU2_ZONE_SCOPED const bool dual_time = (config->GetTime_Marching() == TIME_MARCHING::DT_STEPPING_1ST || config->GetTime_Marching() == TIME_MARCHING::DT_STEPPING_2ND); @@ -493,6 +501,7 @@ void CDiscAdjSolver::SetAdjoint_Output(CGeometry *geometry, CConfig *config) { } void CDiscAdjSolver::SetSensitivity(CGeometry *geometry, CConfig *config, CSolver*) { + SU2_ZONE_SCOPED AD::BeginUseAdjoints(); @@ -534,6 +543,7 @@ void CDiscAdjSolver::SetSensitivity(CGeometry *geometry, CConfig *config, CSolve } void CDiscAdjSolver::SetSurface_Sensitivity(CGeometry *geometry, CConfig *config) { + SU2_ZONE_SCOPED SU2_OMP_MASTER for (auto& x : Sens_Geo) x = 0.0; @@ -596,6 +606,8 @@ void CDiscAdjSolver::SetSurface_Sensitivity(CGeometry *geometry, CConfig *config void CDiscAdjSolver::Preprocessing(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, unsigned short iRKStep, unsigned short RunTime_EqSystem, bool Output) { + SU2_ZONE_SCOPED + SU2_OMP_MASTER config->SetGlobalParam(config->GetKind_Solver(), RunTime_EqSystem); END_SU2_OMP_MASTER @@ -619,6 +631,7 @@ void CDiscAdjSolver::Preprocessing(CGeometry *geometry, CSolver **solver_contain } void CDiscAdjSolver::LoadRestart(CGeometry **geometry, CSolver ***solver, CConfig *config, int val_iter, bool val_update_geo) { + SU2_ZONE_SCOPED /*--- Restart the solution from file information ---*/ diff --git a/SU2_CFD/src/solvers/CEulerSolver.cpp b/SU2_CFD/src/solvers/CEulerSolver.cpp index 3f8d642e9c6e..fb3d4f744584 100644 --- a/SU2_CFD/src/solvers/CEulerSolver.cpp +++ b/SU2_CFD/src/solvers/CEulerSolver.cpp @@ -41,6 +41,7 @@ CEulerSolver::CEulerSolver(CGeometry *geometry, CConfig *config, unsigned short iMesh, const bool navier_stokes) : CFVMFlowSolverBase(*geometry, *config) { + SU2_ZONE_SCOPED /*--- Based on the navier_stokes boolean, determine if this constructor is * being called by itself, or by its derived class CNSSolver. ---*/ @@ -358,11 +359,13 @@ CEulerSolver::CEulerSolver(CGeometry *geometry, CConfig *config, } CEulerSolver::~CEulerSolver() { + SU2_ZONE_SCOPED for(auto& model : FluidModel) delete model; } void CEulerSolver::InstantiateEdgeNumerics(const CSolver* const* solver_container, const CConfig* config) { + SU2_ZONE_SCOPED BEGIN_SU2_OMP_SAFE_GLOBAL_ACCESS { @@ -384,6 +387,7 @@ void CEulerSolver::InstantiateEdgeNumerics(const CSolver* const* solver_containe } void CEulerSolver::InitTurboContainers(CGeometry *geometry, CConfig *config){ + SU2_ZONE_SCOPED /*--- Initialize quantities for the average process for internal flow ---*/ @@ -458,6 +462,7 @@ void CEulerSolver::InitTurboContainers(CGeometry *geometry, CConfig *config){ } void CEulerSolver::Set_MPI_ActDisk(CSolver **solver_container, CGeometry *geometry, CConfig *config) { + SU2_ZONE_SCOPED unsigned long iter, iPoint, iVertex, jVertex, iPointTotal, Buffer_Send_nPointTotal = 0; @@ -782,6 +787,7 @@ void CEulerSolver::Set_MPI_ActDisk(CSolver **solver_container, CGeometry *geomet } void CEulerSolver::SetNondimensionalization(CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED su2double Temperature_FreeStream = 0.0, Mach2Vel_FreeStream = 0.0, ModVel_FreeStream = 0.0, Energy_FreeStream = 0.0, ModVel_FreeStreamND = 0.0, Velocity_Reynolds = 0.0, @@ -1427,6 +1433,7 @@ void CEulerSolver::SetNondimensionalization(CConfig *config, unsigned short iMes } void CEulerSolver::SetReferenceValues(const CConfig& config) { + SU2_ZONE_SCOPED /*--- Evaluate reference values for non-dimensionalization. For dynamic meshes, use the motion Mach number as a reference value for computing the force coefficients. @@ -1455,6 +1462,7 @@ void CEulerSolver::SetReferenceValues(const CConfig& config) { } void CEulerSolver::SetInitialCondition(CGeometry **geometry, CSolver ***solver_container, CConfig *config, unsigned long TimeIter) { + SU2_ZONE_SCOPED const bool restart = (config->GetRestart() || config->GetRestart_Flow()); const bool SubsonicEngine = config->GetSubsonicEngine(); @@ -1580,6 +1588,7 @@ void CEulerSolver::SetInitialCondition(CGeometry **geometry, CSolver ***solver_c void CEulerSolver::CommonPreprocessing(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, unsigned short iRKStep, unsigned short RunTime_EqSystem, bool Output) { + SU2_ZONE_SCOPED bool cont_adjoint = config->GetContinuous_Adjoint(); bool disc_adjoint = config->GetDiscrete_Adjoint(); @@ -1669,6 +1678,7 @@ void CEulerSolver::CommonPreprocessing(CGeometry *geometry, CSolver **solver_con void CEulerSolver::Preprocessing(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, unsigned short iRKStep, unsigned short RunTime_EqSystem, bool Output) { + SU2_ZONE_SCOPED const auto InnerIter = config->GetInnerIter(); const bool muscl = config->GetMUSCL_Flow() && (iMesh == MESH_0); const bool center = (config->GetKind_ConvNumScheme_Flow() == SPACE_CENTERED); @@ -1701,6 +1711,7 @@ void CEulerSolver::Preprocessing(CGeometry *geometry, CSolver **solver_container } unsigned long CEulerSolver::SetPrimitive_Variables(CSolver **solver_container, const CConfig *config) { + SU2_ZONE_SCOPED /*--- Number of non-physical points, local to the thread, needs * further reduction if function is called in parallel ---*/ @@ -1729,6 +1740,7 @@ unsigned long CEulerSolver::SetPrimitive_Variables(CSolver **solver_container, c void CEulerSolver::SetTime_Step(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, unsigned long Iteration) { + SU2_ZONE_SCOPED /*--- Define an object to compute the speed of sound. ---*/ struct SoundSpeed { @@ -1784,12 +1796,14 @@ void CEulerSolver::SetTime_Step(CGeometry *geometry, CSolver **solver_container, void CEulerSolver::Centered_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh, unsigned short iRKStep) { + SU2_ZONE_SCOPED EdgeFluxResidual(geometry, solver_container, config); } void CEulerSolver::Upwind_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED const bool ideal_gas = (config->GetKind_FluidModel() == STANDARD_AIR) || (config->GetKind_FluidModel() == IDEAL_GAS); @@ -2004,6 +2018,7 @@ void CEulerSolver::Upwind_Residual(CGeometry *geometry, CSolver **solver_contain void CEulerSolver::ComputeConsistentExtrapolation(CFluidModel *fluidModel, unsigned short nDim, su2double *primitive, su2double *secondary) { + SU2_ZONE_SCOPED const CEulerVariable::CIndices prim_idx(nDim, 0); const su2double density = primitive[prim_idx.Density()]; const su2double pressure = primitive[prim_idx.Pressure()]; @@ -2021,6 +2036,7 @@ void CEulerSolver::ComputeConsistentExtrapolation(CFluidModel *fluidModel, unsig void CEulerSolver::LowMachPrimitiveCorrection(CFluidModel *fluidModel, unsigned short nDim, su2double *primitive_i, su2double *primitive_j) { + SU2_ZONE_SCOPED unsigned short iDim; su2double velocity2_i = 0.0; @@ -2059,6 +2075,7 @@ void CEulerSolver::LowMachPrimitiveCorrection(CFluidModel *fluidModel, unsigned void CEulerSolver::Source_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED const bool implicit = config->GetKind_TimeIntScheme() == EULER_IMPLICIT; const bool viscous = config->GetViscous(); @@ -2311,6 +2328,7 @@ void CEulerSolver::Source_Residual(CGeometry *geometry, CSolver **solver_contain void CEulerSolver::Source_Template(CGeometry *geometry, CSolver **solver_container, CNumerics *numerics, CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED /* This method should be used to call any new source terms for a particular problem*/ /* This method calls the new child class in CNumerics, where the new source term should be implemented. */ @@ -2324,6 +2342,7 @@ void CEulerSolver::Source_Template(CGeometry *geometry, CSolver **solver_contain } void CEulerSolver::SetMax_Eigenvalue(CGeometry *geometry, const CConfig *config) { + SU2_ZONE_SCOPED /*--- Define an object to compute the speed of sound. ---*/ struct SoundSpeed { @@ -2344,6 +2363,7 @@ void CEulerSolver::SetMax_Eigenvalue(CGeometry *geometry, const CConfig *config) } void CEulerSolver::SetUndivided_Laplacian(CGeometry *geometry, const CConfig *config) { + SU2_ZONE_SCOPED /*--- Loop domain points. ---*/ @@ -2391,6 +2411,7 @@ void CEulerSolver::SetUndivided_Laplacian(CGeometry *geometry, const CConfig *co } void CEulerSolver::SetCentered_Dissipation_Sensor(CGeometry *geometry, const CConfig *config) { + SU2_ZONE_SCOPED /*--- Define an object for the sensor variable, pressure. ---*/ struct SensVar { @@ -2404,6 +2425,7 @@ void CEulerSolver::SetCentered_Dissipation_Sensor(CGeometry *geometry, const CCo } void CEulerSolver::SetUpwind_Ducros_Sensor(CGeometry *geometry, CConfig *config){ + SU2_ZONE_SCOPED SU2_OMP_FOR_STAT(omp_chunk_size) for (unsigned long iPoint = 0; iPoint < geometry->GetnPoint(); iPoint++) { @@ -2456,22 +2478,26 @@ void CEulerSolver::SetUpwind_Ducros_Sensor(CGeometry *geometry, CConfig *config) void CEulerSolver::ExplicitRK_Iteration(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iRKStep) { + SU2_ZONE_SCOPED Explicit_Iteration(geometry, solver_container, config, iRKStep); } void CEulerSolver::ClassicalRK4_Iteration(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iRKStep) { + SU2_ZONE_SCOPED Explicit_Iteration(geometry, solver_container, config, iRKStep); } void CEulerSolver::ExplicitEuler_Iteration(CGeometry *geometry, CSolver **solver_container, CConfig *config) { + SU2_ZONE_SCOPED Explicit_Iteration(geometry, solver_container, config, 0); } void CEulerSolver::PrepareImplicitIteration(CGeometry *geometry, CSolver**, CConfig *config) { + SU2_ZONE_SCOPED struct LowMachPrec { const CEulerSolver* solver; @@ -2493,12 +2519,14 @@ void CEulerSolver::PrepareImplicitIteration(CGeometry *geometry, CSolver**, CCon } void CEulerSolver::CompleteImplicitIteration(CGeometry *geometry, CSolver**, CConfig *config) { + SU2_ZONE_SCOPED CompleteImplicitIteration_impl(geometry, config); } void CEulerSolver::SetPreconditioner(const CConfig *config, unsigned long iPoint, su2double delta, su2activematrix& preconditioner) const { + SU2_ZONE_SCOPED unsigned short iDim, jDim, iVar, jVar; su2double local_Mach, rho, enthalpy, soundspeed, sq_vel; @@ -2555,6 +2583,7 @@ void CEulerSolver::SetPreconditioner(const CConfig *config, unsigned long iPoint } void CEulerSolver::GetPower_Properties(CGeometry *geometry, CConfig *config, unsigned short iMesh, bool Output) { + SU2_ZONE_SCOPED unsigned short iDim, iMarker, jMarker; unsigned long iVertex, iPoint; @@ -3485,6 +3514,7 @@ void CEulerSolver::GetPower_Properties(CGeometry *geometry, CConfig *config, uns void CEulerSolver::SetActDisk_BCThrust(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, bool Output) { + SU2_ZONE_SCOPED su2double Massflow = 0.0 , Target_Massflow = 0.0, DragMinusThrust = 0.0 , Target_DragMinusThrust = 0.0, Target_NetThrust = 0.0, BCThrust = 0.0, BCThrust_inc = 0.0; @@ -3932,6 +3962,7 @@ void CEulerSolver::SetActDisk_BCThrust(CGeometry *geometry, CSolver **solver_con void CEulerSolver::ReadActDisk_InputFile(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, bool Output) { + SU2_ZONE_SCOPED /*--- Input file provides force coefficients distributions along disk radius. Initialization necessary only at initial iteration. ---*/ @@ -4132,6 +4163,7 @@ void CEulerSolver::ReadActDisk_InputFile(CGeometry *geometry, CSolver **solver_c void CEulerSolver::SetActDisk_BEM_VLAD(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, bool Output) { + SU2_ZONE_SCOPED /*! * \function SetActDisk_BEM_VLAD @@ -4558,6 +4590,7 @@ void CEulerSolver::SetActDisk_BEM_VLAD(CGeometry *geometry, CSolver **solver_con void CEulerSolver::SetFarfield_AoA(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, bool Output) { + SU2_ZONE_SCOPED const auto InnerIter = config->GetInnerIter(); /* --- Initialize values at first iteration --- */ @@ -4603,6 +4636,7 @@ void CEulerSolver::SetFarfield_AoA(CGeometry *geometry, CSolver **solver_contain } bool CEulerSolver::FixedCL_Convergence(CConfig* config, bool convergence) { + SU2_ZONE_SCOPED const su2double Target_CL = config->GetTarget_CL(); const auto curr_iter = config->GetInnerIter(); const auto Iter_dCL_dAlpha = config->GetIter_dCL_dAlpha(); @@ -4704,6 +4738,7 @@ bool CEulerSolver::FixedCL_Convergence(CConfig* config, bool convergence) { } void CEulerSolver::SetCoefficient_Gradients(CConfig *config) const{ + SU2_ZONE_SCOPED const su2double AoA = config->GetAoA(); @@ -4728,6 +4763,7 @@ void CEulerSolver::SetCoefficient_Gradients(CConfig *config) const{ } void CEulerSolver::Evaluate_ObjFunc(const CConfig *config, CSolver**) { + SU2_ZONE_SCOPED unsigned short iMarker_Monitoring, Kind_ObjFunc; su2double Weight_ObjFunc; @@ -4783,6 +4819,7 @@ void CEulerSolver::Evaluate_ObjFunc(const CConfig *config, CSolver**) { void CEulerSolver::BC_Far_Field(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED unsigned short iDim; unsigned long iVertex, iPoint, Point_Normal; @@ -5040,6 +5077,7 @@ void CEulerSolver::BC_Far_Field(CGeometry *geometry, CSolver **solver_container, void CEulerSolver::BC_Riemann(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED const string Marker_Tag = config->GetMarker_All_TagBound(val_marker); const bool viscous = config->GetViscous(), @@ -5468,6 +5506,7 @@ void CEulerSolver::BC_Riemann(CGeometry *geometry, CSolver **solver_container, void CEulerSolver::BC_TurboRiemann(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED unsigned short iDim, iVar, jVar, kVar, iSpan; unsigned long iPoint, Point_Normal, oldVertex, iVertex; @@ -5982,6 +6021,7 @@ void CEulerSolver::BC_TurboRiemann(CGeometry *geometry, CSolver **solver_contain } void CEulerSolver::PreprocessBC_Giles(CGeometry *geometry, CConfig *config, CNumerics *conv_numerics, unsigned short marker_flag) { + SU2_ZONE_SCOPED /* Implementation of Fuorier Transformations for non-regfelcting BC will come soon */ su2double cj_inf,cj_out1, cj_out2, Density_i, Pressure_i, *turboNormal, *turboVelocity, *Velocity_i, AverageSoundSpeed; su2double *deltaprim, *cj, TwoPiThetaFreq_Pitch, pitch, theta, deltaTheta; @@ -6149,6 +6189,7 @@ void CEulerSolver::PreprocessBC_Giles(CGeometry *geometry, CConfig *config, CNum void CEulerSolver::BC_Giles(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED unsigned short iDim, iVar, jVar, iSpan; unsigned long iPoint, Point_Normal, oldVertex, k, kend, kend_max, iVertex; @@ -6906,6 +6947,7 @@ void CEulerSolver::BC_Giles(CGeometry *geometry, CSolver **solver_container, CNu void CEulerSolver::BC_Inlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED unsigned short iDim; su2double P_Total, T_Total, Velocity[MAXNDIM], Velocity2, H_Total, Temperature, Riemann, Pressure, Density, Energy, Flow_Dir[MAXNDIM], Mach2, SoundSpeed2, SoundSpeed_Total2, Vel_Mag, @@ -7195,6 +7237,7 @@ void CEulerSolver::BC_Inlet(CGeometry *geometry, CSolver **solver_container, void CEulerSolver::BC_Outlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED unsigned short iVar, iDim; unsigned long iVertex, iPoint; su2double Pressure, P_Exit, Velocity[3], @@ -7369,6 +7412,7 @@ void CEulerSolver::BC_Outlet(CGeometry *geometry, CSolver **solver_container, void CEulerSolver::BC_Supersonic_Inlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED const su2double Gas_Constant = config->GetGas_ConstantND(); const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); const auto Marker_Tag = config->GetMarker_All_TagBound(val_marker); @@ -7457,6 +7501,7 @@ void CEulerSolver::BC_Supersonic_Inlet(CGeometry *geometry, CSolver **solver_con void CEulerSolver::BC_Supersonic_Outlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED unsigned short iDim; unsigned long iVertex, iPoint; su2double *V_outlet, *V_domain; @@ -7576,6 +7621,7 @@ void CEulerSolver::BC_Supersonic_Outlet(CGeometry *geometry, CSolver **solver_co } void CEulerSolver::BC_Engine_Inflow(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED unsigned short iDim; unsigned long iVertex, iPoint; @@ -7806,6 +7852,7 @@ void CEulerSolver::BC_Engine_Inflow(CGeometry *geometry, CSolver **solver_contai } void CEulerSolver::BC_Engine_Exhaust(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED unsigned short iDim; unsigned long iVertex, iPoint; @@ -8058,6 +8105,7 @@ void CEulerSolver::BC_Engine_Exhaust(CGeometry *geometry, CSolver **solver_conta void CEulerSolver::BC_ActDisk_Inlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED unsigned short Kind_ActDisk = config->GetKind_ActDisk(); @@ -8072,6 +8120,7 @@ void CEulerSolver::BC_ActDisk_Inlet(CGeometry *geometry, CSolver **solver_contai void CEulerSolver::BC_ActDisk_Outlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED unsigned short Kind_ActDisk = config->GetKind_ActDisk(); @@ -8086,6 +8135,7 @@ void CEulerSolver::BC_ActDisk_Outlet(CGeometry *geometry, CSolver **solver_conta void CEulerSolver::BC_ActDisk(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker, bool val_inlet_surface) { + SU2_ZONE_SCOPED unsigned short iDim; unsigned long iVertex, iPoint, GlobalIndex_donor, GlobalIndex; @@ -8497,6 +8547,7 @@ void CEulerSolver::BC_ActDisk(CGeometry *geometry, CSolver **solver_container, C void CEulerSolver::BC_ActDisk_VariableLoad(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker, bool val_inlet_surface) { + SU2_ZONE_SCOPED /*! * \function BC_ActDisk_VariableLoad @@ -8737,6 +8788,7 @@ void CEulerSolver::BC_ActDisk_VariableLoad(CGeometry *geometry, CSolver **solver } void CEulerSolver::PrintVerificationError(const CConfig *config) const { + SU2_ZONE_SCOPED if ((rank != MASTER_NODE) || (MGLevel != MESH_0)) return; @@ -8775,6 +8827,7 @@ void CEulerSolver::PrintVerificationError(const CConfig *config) const { } void CEulerSolver::SetFreeStream_Solution(const CConfig *config) { + SU2_ZONE_SCOPED SU2_OMP_FOR_STAT(omp_chunk_size) for (auto iPoint = 0u; iPoint < nPoint; iPoint++) { nodes->SetSolution(iPoint,0, Density_Inf); @@ -8787,6 +8840,7 @@ void CEulerSolver::SetFreeStream_Solution(const CConfig *config) { } void CEulerSolver::SetFreeStream_TurboSolution(CConfig *config) { + SU2_ZONE_SCOPED const su2double Alpha = config->GetAoA()*PI_NUMBER/180.0; const auto Mach = config->GetMach(); @@ -8818,6 +8872,7 @@ void CEulerSolver::SetFreeStream_TurboSolution(CConfig *config) { } void CEulerSolver::PreprocessAverage(CSolver **solver, CGeometry *geometry, CConfig *config, unsigned short marker_flag) { + SU2_ZONE_SCOPED const auto nSpanWiseSections = config->GetnSpanWiseSections(); const auto iZone = config->GetiZone(); @@ -8955,6 +9010,7 @@ void CEulerSolver::PreprocessAverage(CSolver **solver, CGeometry *geometry, CCon void CEulerSolver::TurboAverageProcess(CSolver **solver, CGeometry *geometry, CConfig *config, unsigned short marker_flag) { + SU2_ZONE_SCOPED const auto average_process = config->GetKind_AverageProcess(); const auto performance_average_process = config->GetKind_PerformanceAverageProcess(); @@ -9333,6 +9389,7 @@ void CEulerSolver::TurboAverageProcess(CSolver **solver, CGeometry *geometry, CC void CEulerSolver::MixedOut_Average(CConfig *config, su2double val_init_pressure, const su2double *val_Averaged_Flux, const su2double *val_normal, su2double& pressure_mix, su2double& density_mix) { + SU2_ZONE_SCOPED const auto relax_factor = config->GetMixedout_Coeff(0); const auto toll = config->GetMixedout_Coeff(1); @@ -9377,6 +9434,7 @@ void CEulerSolver::MixedOut_Average(CConfig *config, su2double val_init_pressure } void CEulerSolver::GatherInOutAverageValues(CConfig *config, CGeometry *geometry){ + SU2_ZONE_SCOPED unsigned short iMarker, iMarkerTP; unsigned short iSpan; diff --git a/SU2_CFD/src/solvers/CFEASolver.cpp b/SU2_CFD/src/solvers/CFEASolver.cpp index eb13264f6225..a683d90e4e41 100644 --- a/SU2_CFD/src/solvers/CFEASolver.cpp +++ b/SU2_CFD/src/solvers/CFEASolver.cpp @@ -37,6 +37,7 @@ using namespace GeometryToolbox; CFEASolver::CFEASolver(LINEAR_SOLVER_MODE mesh_deform_mode) : CFEASolverBase(mesh_deform_mode) { + SU2_ZONE_SCOPED Total_CFEA = 0.0; WAitken_Dyn = 0.0; @@ -49,6 +50,7 @@ CFEASolver::CFEASolver(LINEAR_SOLVER_MODE mesh_deform_mode) : CFEASolverBase(mes } CFEASolver::CFEASolver(CGeometry *geometry, CConfig *config) : CFEASolverBase(geometry, config) { + SU2_ZONE_SCOPED bool dynamic = config->GetTime_Domain(); config->SetDelta_UnstTimeND(config->GetDelta_UnstTime()); @@ -220,6 +222,7 @@ CFEASolver::CFEASolver(CGeometry *geometry, CConfig *config) : CFEASolverBase(ge } CFEASolver::~CFEASolver() { + SU2_ZONE_SCOPED if (element_properties != nullptr) { for (unsigned long iElem = 0; iElem < nElement; iElem++) @@ -238,6 +241,7 @@ CFEASolver::~CFEASolver() { } void CFEASolver::HybridParallelInitialization(CGeometry* geometry) { + SU2_ZONE_SCOPED #ifdef HAVE_OMP /*--- Get the element coloring. ---*/ @@ -283,6 +287,7 @@ void CFEASolver::HybridParallelInitialization(CGeometry* geometry) { } void CFEASolver::Set_ElementProperties(CGeometry *geometry, CConfig *config) { + SU2_ZONE_SCOPED const bool topology_mode = config->GetTopology_Optimization(); @@ -389,6 +394,7 @@ void CFEASolver::Set_ElementProperties(CGeometry *geometry, CConfig *config) { } void CFEASolver::Set_Prestretch(CGeometry *geometry, CConfig *config) { + SU2_ZONE_SCOPED const auto iZone = config->GetiZone(); const auto nZone = geometry->GetnZone(); @@ -463,6 +469,7 @@ void CFEASolver::Set_Prestretch(CGeometry *geometry, CConfig *config) { } void CFEASolver::Set_ReferenceGeometry(CGeometry *geometry, CConfig *config) { + SU2_ZONE_SCOPED const auto iZone = config->GetiZone(); const auto file_format = config->GetRefGeom_FileFormat(); @@ -536,6 +543,7 @@ void CFEASolver::Set_ReferenceGeometry(CGeometry *geometry, CConfig *config) { } void CFEASolver::Set_VertexEliminationSchedule(CGeometry *geometry, const vector& markers) { + SU2_ZONE_SCOPED /*--- Store global point indices of essential BC markers. ---*/ vector myPoints; @@ -553,6 +561,7 @@ void CFEASolver::Set_VertexEliminationSchedule(CGeometry *geometry, const vector void CFEASolver::Preprocessing(CGeometry *geometry, CSolver **solver_container, CConfig *config, CNumerics **numerics, unsigned short iMesh, unsigned long Iteration, unsigned short RunTime_EqSystem, bool Output) { + SU2_ZONE_SCOPED const bool dynamic = config->GetTime_Domain(); const bool disc_adj_fem = (config->GetKind_Solver() == MAIN_SOLVER::DISC_ADJ_FEM); @@ -613,6 +622,7 @@ void CFEASolver::Preprocessing(CGeometry *geometry, CSolver **solver_container, } void CFEASolver::SetInitialCondition(CGeometry **geometry, CSolver ***solver_container, CConfig *config, unsigned long TimeIter) { + SU2_ZONE_SCOPED SU2_OMP_PARALLEL { @@ -642,6 +652,7 @@ void CFEASolver::SetInitialCondition(CGeometry **geometry, CSolver ***solver_con } void CFEASolver::Compute_StiffMatrix(CGeometry *geometry, CNumerics **numerics, const CConfig *config) { + SU2_ZONE_SCOPED const bool topology_mode = config->GetTopology_Optimization(); const su2double simp_exponent = config->GetSIMP_Exponent(); @@ -737,6 +748,7 @@ void CFEASolver::Compute_StiffMatrix(CGeometry *geometry, CNumerics **numerics, } void CFEASolver::Compute_StiffMatrix_NodalStressRes(CGeometry *geometry, CNumerics **numerics, const CConfig *config) { + SU2_ZONE_SCOPED const bool prestretch_fem = config->GetPrestretch(); const bool de_effects = config->GetDE_Effects(); @@ -883,6 +895,7 @@ void CFEASolver::Compute_StiffMatrix_NodalStressRes(CGeometry *geometry, CNumeri } void CFEASolver::Compute_MassMatrix(const CGeometry *geometry, CNumerics **numerics, const CConfig *config) { + SU2_ZONE_SCOPED const bool topology_mode = config->GetTopology_Optimization(); const su2double simp_minstiff = config->GetSIMP_MinStiffness(); @@ -974,6 +987,7 @@ void CFEASolver::Compute_MassMatrix(const CGeometry *geometry, CNumerics **numer } void CFEASolver::Compute_MassRes(const CGeometry *geometry, CNumerics **numerics, const CConfig *config) { + SU2_ZONE_SCOPED const bool topology_mode = config->GetTopology_Optimization(); const su2double simp_minstiff = config->GetSIMP_MinStiffness(); @@ -1054,6 +1068,7 @@ void CFEASolver::Compute_MassRes(const CGeometry *geometry, CNumerics **numerics } void CFEASolver::Compute_NodalStressRes(CGeometry *geometry, CNumerics **numerics, const CConfig *config) { + SU2_ZONE_SCOPED const bool prestretch_fem = config->GetPrestretch(); @@ -1151,6 +1166,7 @@ void CFEASolver::Compute_NodalStressRes(CGeometry *geometry, CNumerics **numeric } void CFEASolver::Compute_NodalStress(CGeometry *geometry, CNumerics **numerics, const CConfig *config) { + SU2_ZONE_SCOPED const bool prestretch_fem = config->GetPrestretch(); @@ -1431,6 +1447,7 @@ void CFEASolver::Compute_NodalStress(CGeometry *geometry, CNumerics **numerics, } void CFEASolver::Compute_BodyForces(CGeometry *geometry, CNumerics **numerics, const CConfig *config) { + SU2_ZONE_SCOPED const su2double t_ref = config->GetTemperature_Ref(); @@ -1514,6 +1531,7 @@ void CFEASolver::Compute_BodyForces(CGeometry *geometry, CNumerics **numerics, c } void CFEASolver::Compute_IntegrationConstants(const CConfig *config) { + SU2_ZONE_SCOPED su2double Delta_t= config->GetDelta_UnstTime(); @@ -1562,6 +1580,7 @@ void CFEASolver::Compute_IntegrationConstants(const CConfig *config) { void CFEASolver::BC_Clamped(CGeometry *geometry, const CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED const bool dynamic = config->GetTime_Domain(); const su2double zeros[MAXNVAR] = {0.0}; @@ -1594,6 +1613,7 @@ void CFEASolver::BC_Clamped(CGeometry *geometry, const CConfig *config, unsigned } void CFEASolver::BC_Clamped_Post(CGeometry *geometry, const CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED bool dynamic = config->GetTime_Domain(); @@ -1630,6 +1650,7 @@ void SubtractProjection(unsigned short nDim, const su2double* n, const Read& rea } void CFEASolver::BC_Sym_Plane(CGeometry *geometry, const CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED if (geometry->GetnElem_Bound(val_marker) == 0) return; const bool dynamic = config->GetTime_Domain(); @@ -1691,6 +1712,7 @@ void CFEASolver::BC_Sym_Plane(CGeometry *geometry, const CConfig *config, unsign } void CFEASolver::BC_DispDir(CGeometry *geometry, const CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED unsigned short iDim; @@ -1757,6 +1779,7 @@ CSysVector computeLinearResidual(const CSysMatrix& A, } void CFEASolver::Postprocessing(CGeometry *geometry, CConfig *config, CNumerics **numerics, bool of_comp_mode) { + SU2_ZONE_SCOPED /*--- Compute the objective function. ---*/ @@ -1859,6 +1882,7 @@ void CFEASolver::Postprocessing(CGeometry *geometry, CConfig *config, CNumerics } void CFEASolver::BC_Normal_Load(CGeometry *geometry, const CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED /*--- Determine whether the load conditions are applied in the reference or in the current configuration. ---*/ @@ -1953,6 +1977,7 @@ void CFEASolver::BC_Normal_Load(CGeometry *geometry, const CConfig *config, unsi } void CFEASolver::BC_Dir_Load(CGeometry *geometry, const CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED auto TagBound = config->GetMarker_All_TagBound(val_marker); su2double LoadDirVal = config->GetLoad_Dir_Value(TagBound); @@ -2014,6 +2039,7 @@ void CFEASolver::BC_Dir_Load(CGeometry *geometry, const CConfig *config, unsigne } void CFEASolver::BC_Damper(CGeometry *geometry, const CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED const su2double dampConst = config->GetDamper_Constant(config->GetMarker_All_TagBound(val_marker)); @@ -2071,6 +2097,7 @@ void CFEASolver::BC_Damper(CGeometry *geometry, const CConfig *config, unsigned } su2double CFEASolver::Compute_LoadCoefficient(su2double CurrentTime, su2double RampTime, const CConfig *config){ + SU2_ZONE_SCOPED su2double LoadCoeff = 1.0; @@ -2144,6 +2171,7 @@ su2double CFEASolver::Compute_LoadCoefficient(su2double CurrentTime, su2double R } void CFEASolver::ImplicitNewmark_Iteration(const CGeometry *geometry, CNumerics **numerics, const CConfig *config) { + SU2_ZONE_SCOPED const bool first_iter = (config->GetInnerIter() == 0); const bool dynamic = (config->GetTime_Domain()); @@ -2230,6 +2258,7 @@ void CFEASolver::ImplicitNewmark_Iteration(const CGeometry *geometry, CNumerics } void CFEASolver::ImplicitNewmark_Update(const CGeometry *geometry, const CConfig *config) { + SU2_ZONE_SCOPED const bool dynamic = (config->GetTime_Domain()); @@ -2280,6 +2309,7 @@ void CFEASolver::ImplicitNewmark_Update(const CGeometry *geometry, const CConfig } void CFEASolver::ImplicitNewmark_Relaxation(const CGeometry *geometry, const CConfig *config) { + SU2_ZONE_SCOPED const bool dynamic = (config->GetTime_Domain()); @@ -2331,6 +2361,7 @@ void CFEASolver::ImplicitNewmark_Relaxation(const CGeometry *geometry, const CCo void CFEASolver::GeneralizedAlpha_Iteration(const CGeometry *geometry, CNumerics **numerics, const CConfig *config) { + SU2_ZONE_SCOPED const bool first_iter = (config->GetInnerIter() == 0); const bool dynamic = (config->GetTime_Domain()); @@ -2442,6 +2473,7 @@ void CFEASolver::GeneralizedAlpha_Iteration(const CGeometry *geometry, CNumerics } void CFEASolver::GeneralizedAlpha_UpdateDisp(const CGeometry *geometry, const CConfig *config) { + SU2_ZONE_SCOPED /*--- Update displacement components of the solution. ---*/ @@ -2454,6 +2486,7 @@ void CFEASolver::GeneralizedAlpha_UpdateDisp(const CGeometry *geometry, const CC } void CFEASolver::GeneralizedAlpha_UpdateSolution(const CGeometry *geometry, const CConfig *config) { + SU2_ZONE_SCOPED const su2double alpha_f = config->Get_Int_Coeffs(2); const su2double alpha_m = config->Get_Int_Coeffs(3); @@ -2509,6 +2542,7 @@ void CFEASolver::GeneralizedAlpha_UpdateSolution(const CGeometry *geometry, cons } void CFEASolver::GeneralizedAlpha_UpdateLoads(const CGeometry *geometry, const CConfig *config) { + SU2_ZONE_SCOPED /*--- Set the load conditions of the time step n+1 as the load conditions for time step n ---*/ nodes->Set_SurfaceLoad_Res_n(); @@ -2517,6 +2551,7 @@ void CFEASolver::GeneralizedAlpha_UpdateLoads(const CGeometry *geometry, const C } void CFEASolver::Solve_System(CGeometry *geometry, CConfig *config) { + SU2_ZONE_SCOPED /*--- Enforce solution at some halo points possibly not covered by essential BC markers. ---*/ CSysMatrixComms::Initiate(LinSysSol, geometry, config); @@ -2551,6 +2586,7 @@ void CFEASolver::Solve_System(CGeometry *geometry, CConfig *config) { void CFEASolver::PredictStruct_Displacement(CGeometry *geometry, const CConfig *config) { + SU2_ZONE_SCOPED const unsigned short predOrder = config->GetPredictorOrder(); const su2double Delta_t = config->GetDelta_UnstTime(); @@ -2602,6 +2638,7 @@ void CFEASolver::PredictStruct_Displacement(CGeometry *geometry, const CConfig * } void CFEASolver::ComputeAitken_Coefficient(CGeometry *geometry, const CConfig *config, unsigned long iOuterIter) { + SU2_ZONE_SCOPED unsigned long iPoint, iDim; su2double rbuf_numAitk = 0, sbuf_numAitk = 0; @@ -2692,6 +2729,7 @@ void CFEASolver::ComputeAitken_Coefficient(CGeometry *geometry, const CConfig *c } void CFEASolver::SetAitken_Relaxation(CGeometry *geometry, const CConfig *config) { + SU2_ZONE_SCOPED const su2double WAitken = WAitken_Dyn; const bool dynamic = config->GetTime_Domain(); @@ -2734,6 +2772,7 @@ void CFEASolver::SetAitken_Relaxation(CGeometry *geometry, const CConfig *config void CFEASolver::OutputForwardModeGradient(const CConfig *config, bool newFile, su2double fun, su2double fun_avg, su2double der, su2double der_avg) const { + SU2_ZONE_SCOPED if (rank != MASTER_NODE) return; bool dynamic = config->GetTime_Domain(); @@ -2802,6 +2841,7 @@ void CFEASolver::OutputForwardModeGradient(const CConfig *config, bool newFile, } void CFEASolver::Compute_OFRefGeom(CGeometry *geometry, const CConfig *config){ + SU2_ZONE_SCOPED bool fsi = config->GetFSI_Simulation(); unsigned long TimeIter = config->GetTimeIter(); @@ -2874,6 +2914,7 @@ void CFEASolver::Compute_OFRefGeom(CGeometry *geometry, const CConfig *config){ } void CFEASolver::Compute_OFRefNode(CGeometry *geometry, const CConfig *config){ + SU2_ZONE_SCOPED bool fsi = config->GetFSI_Simulation(); unsigned long TimeIter = config->GetTimeIter(); @@ -2918,6 +2959,7 @@ void CFEASolver::Compute_OFRefNode(CGeometry *geometry, const CConfig *config){ void CFEASolver::Compute_OFVolFrac(CGeometry *geometry, const CConfig *config) { + SU2_ZONE_SCOPED /*--- Perform a volume average of the physical density of the elements for topology optimization ---*/ su2double total_volume = 0.0, integral = 0.0, discreteness = 0.0; @@ -2960,6 +3002,7 @@ void CFEASolver::Compute_OFVolFrac(CGeometry *geometry, const CConfig *config) void CFEASolver::Compute_OFCompliance(CGeometry *geometry, const CConfig *config) { + SU2_ZONE_SCOPED /*--- If the loads are being applied incrementaly ---*/ const bool incremental_load = config->GetIncrementalLoad(); @@ -3011,6 +3054,7 @@ void CFEASolver::Compute_OFCompliance(CGeometry *geometry, const CConfig *config } void CFEASolver::Stiffness_Penalty(CGeometry *geometry, CNumerics **numerics, CConfig *config){ + SU2_ZONE_SCOPED if (config->GetTotalDV_Penalty() == 0.0) { /*--- No need to go into expensive computations. ---*/ @@ -3096,6 +3140,7 @@ void CFEASolver::Stiffness_Penalty(CGeometry *geometry, CNumerics **numerics, CC } void CFEASolver::LoadRestart(CGeometry **geometry, CSolver ***solver, CConfig *config, int val_iter, bool val_update_geo) { + SU2_ZONE_SCOPED const bool dynamic = config->GetTime_Domain(); const bool fluid_structure = config->GetFSI_Simulation(); @@ -3194,6 +3239,7 @@ void CFEASolver::LoadRestart(CGeometry **geometry, CSolver ***solver, CConfig *c void CFEASolver::RegisterVariables(CGeometry *geometry, CConfig *config, bool reset) { + SU2_ZONE_SCOPED /*--- Register the element density to get the derivatives required for material-based topology optimization, this is done here because element_properties is a member of CFEASolver only. ---*/ @@ -3205,6 +3251,7 @@ void CFEASolver::RegisterVariables(CGeometry *geometry, CConfig *config, bool re void CFEASolver::ExtractAdjoint_Variables(CGeometry *geometry, CConfig *config) { + SU2_ZONE_SCOPED /*--- Extract and output derivatives for topology optimization, this is done here because element_properties is a member of CFEASolver only and the output structure only supports nodal values (these are elemental). ---*/ @@ -3250,6 +3297,7 @@ void CFEASolver::ExtractAdjoint_Variables(CGeometry *geometry, CConfig *config) void CFEASolver::FilterElementDensities(CGeometry *geometry, const CConfig *config) { + SU2_ZONE_SCOPED /*--- Apply a filter to the design densities of the elements to generate the physical densities which are the ones used to penalize their stiffness. ---*/ diff --git a/SU2_CFD/src/solvers/CFEASolverBase.cpp b/SU2_CFD/src/solvers/CFEASolverBase.cpp index 6d903ea0d448..b275ce376f5a 100644 --- a/SU2_CFD/src/solvers/CFEASolverBase.cpp +++ b/SU2_CFD/src/solvers/CFEASolverBase.cpp @@ -29,6 +29,7 @@ #include CFEASolverBase::CFEASolverBase(LINEAR_SOLVER_MODE mesh_deform_mode) : CSolver(mesh_deform_mode) { + SU2_ZONE_SCOPED nElement = 0; nDim = 0; @@ -43,6 +44,7 @@ CFEASolverBase::CFEASolverBase(LINEAR_SOLVER_MODE mesh_deform_mode) : CSolver(me } CFEASolverBase::CFEASolverBase(CGeometry *geometry, CConfig *config, LINEAR_SOLVER_MODE mesh_deform_mode) : CSolver(mesh_deform_mode) { + SU2_ZONE_SCOPED nElement = geometry->GetnElem(); nDim = geometry->GetnDim(); @@ -58,6 +60,7 @@ CFEASolverBase::CFEASolverBase(CGeometry *geometry, CConfig *config, LINEAR_SOLV } CFEASolverBase::~CFEASolverBase() { + SU2_ZONE_SCOPED if (element_container != nullptr) { for (unsigned int iVar = 0; iVar < MAX_TERMS; iVar++) { @@ -72,6 +75,7 @@ CFEASolverBase::~CFEASolverBase() { } void CFEASolverBase::CommunicateExtraEliminationVertices(const CGeometry* geometry, vector& myPoints) { + SU2_ZONE_SCOPED /*--- communicate the boundary points ---*/ diff --git a/SU2_CFD/src/solvers/CFEM_DG_EulerSolver.cpp b/SU2_CFD/src/solvers/CFEM_DG_EulerSolver.cpp index 3f7694a0cbee..8b21eb4009c7 100644 --- a/SU2_CFD/src/solvers/CFEM_DG_EulerSolver.cpp +++ b/SU2_CFD/src/solvers/CFEM_DG_EulerSolver.cpp @@ -39,6 +39,7 @@ SIZE_ARR_NORM = 8 }; CFEM_DG_EulerSolver::CFEM_DG_EulerSolver() : CSolver() { + SU2_ZONE_SCOPED /*--- Basic array initialization ---*/ @@ -73,6 +74,7 @@ CFEM_DG_EulerSolver::CFEM_DG_EulerSolver() : CSolver() { } CFEM_DG_EulerSolver::CFEM_DG_EulerSolver(CConfig *config, unsigned short val_nDim, unsigned short iMesh) : CSolver() { + SU2_ZONE_SCOPED /*--- Basic array initialization ---*/ @@ -119,6 +121,7 @@ CFEM_DG_EulerSolver::CFEM_DG_EulerSolver(CConfig *config, unsigned short val_nDi } CFEM_DG_EulerSolver::CFEM_DG_EulerSolver(CGeometry *geometry, CConfig *config, unsigned short iMesh) : CSolver() { + SU2_ZONE_SCOPED /*--- Array initialization ---*/ FluidModel = nullptr; @@ -731,6 +734,7 @@ CFEM_DG_EulerSolver::CFEM_DG_EulerSolver(CGeometry *geometry, CConfig *config, u } CFEM_DG_EulerSolver::~CFEM_DG_EulerSolver() { + SU2_ZONE_SCOPED delete FluidModel; delete blasFunctions; @@ -772,6 +776,7 @@ CFEM_DG_EulerSolver::~CFEM_DG_EulerSolver() { void CFEM_DG_EulerSolver::SetNondimensionalization(CConfig *config, unsigned short iMesh, const bool writeOutput) { + SU2_ZONE_SCOPED su2double Temperature_FreeStream = 0.0, Mach2Vel_FreeStream = 0.0, ModVel_FreeStream = 0.0, Energy_FreeStream = 0.0, ModVel_FreeStreamND = 0.0, Velocity_Reynolds = 0.0, @@ -1391,6 +1396,7 @@ void CFEM_DG_EulerSolver::SetNondimensionalization(CConfig *config, void CFEM_DG_EulerSolver::DetermineGraphDOFs(const CMeshFEM *FEMGeometry, CConfig *config) { + SU2_ZONE_SCOPED /*-------------------------------------------------------------------*/ /* Step 1: Determine the number of owned DOFs per rank in cumulative */ @@ -1711,6 +1717,7 @@ void CFEM_DG_EulerSolver::DetermineGraphDOFs(const CMeshFEM *FEMGeometry, void CFEM_DG_EulerSolver::MetaDataJacobianComputation(const CMeshFEM *FEMGeometry, const vector &colorLocalDOFs) { + SU2_ZONE_SCOPED /*--------------------------------------------------------------------------*/ /*--- Part 1: Convert the coloring information of the DOFs to the ---*/ @@ -1916,6 +1923,7 @@ void CFEM_DG_EulerSolver::MetaDataJacobianComputation(const CMeshFEM *FEMGeom } void CFEM_DG_EulerSolver::SetUpTaskList(CConfig *config) { + SU2_ZONE_SCOPED /* Check whether an ADER space-time step must be carried out. When only a spatial Jacobian is computed this is false per definition. */ @@ -2553,6 +2561,7 @@ void CFEM_DG_EulerSolver::SetUpTaskList(CConfig *config) { void CFEM_DG_EulerSolver::Prepare_MPI_Communication(const CMeshFEM *FEMGeometry, CConfig *config) { + SU2_ZONE_SCOPED /*--- Get the communication information from DG_Geometry. Note that for a FEM DG discretization the communication entities of FEMGeometry contain @@ -2790,6 +2799,7 @@ void CFEM_DG_EulerSolver::Prepare_MPI_Communication(const CMeshFEM *FEMGeometry, void CFEM_DG_EulerSolver::Initiate_MPI_Communication(CConfig *config, const unsigned short timeLevel) { + SU2_ZONE_SCOPED #ifdef HAVE_MPI /* Check if there is anything to communicate. */ @@ -2857,6 +2867,7 @@ void CFEM_DG_EulerSolver::Initiate_MPI_Communication(CConfig *config, bool CFEM_DG_EulerSolver::Complete_MPI_Communication(CConfig *config, const unsigned short timeLevel, const bool commMustBeCompleted) { + SU2_ZONE_SCOPED /* Set the pointer to the memory, whose data must be communicated. This depends on the time integration scheme used. For ADER the data of @@ -2998,6 +3009,7 @@ bool CFEM_DG_EulerSolver::Complete_MPI_Communication(CConfig *config, void CFEM_DG_EulerSolver::Initiate_MPI_ReverseCommunication(CConfig *config, const unsigned short timeLevel) { + SU2_ZONE_SCOPED /* Set the pointer to the residual to be communicated. */ su2double *resComm; @@ -3104,6 +3116,7 @@ void CFEM_DG_EulerSolver::Initiate_MPI_ReverseCommunication(CConfig *config, bool CFEM_DG_EulerSolver::Complete_MPI_ReverseCommunication(CConfig *config, const unsigned short timeLevel, const bool commMustBeCompleted) { + SU2_ZONE_SCOPED /* Set the pointer to the residual to be communicated. */ su2double *resComm; if(config->GetKind_TimeIntScheme_Flow() == ADER_DG) resComm = VecTotResDOFsADER.data(); @@ -3197,6 +3210,7 @@ bool CFEM_DG_EulerSolver::Complete_MPI_ReverseCommunication(CConfig *config, } void CFEM_DG_EulerSolver::SetInitialCondition(CGeometry **geometry, CSolver ***solver_container, CConfig *config, unsigned long TimeIter) { + SU2_ZONE_SCOPED /*--- Check if a verification solution is to be computed. ---*/ if ((VerificationSolution) && (TimeIter == 0)) { @@ -3221,6 +3235,7 @@ void CFEM_DG_EulerSolver::SetInitialCondition(CGeometry **geometry, CSolver ***s } void CFEM_DG_EulerSolver::Preprocessing(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, unsigned short iStep, unsigned short RunTime_EqSystem, bool Output) { + SU2_ZONE_SCOPED unsigned long ErrorCounter = 0; @@ -3505,6 +3520,7 @@ void CFEM_DG_EulerSolver::Postprocessing(CGeometry *geometry, CSolver **solver_c void CFEM_DG_EulerSolver::ComputeSpatialJacobian(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics, CConfig *config, unsigned short iMesh, unsigned short RunTime_EqSystem) { + SU2_ZONE_SCOPED /* Write a message that the Jacobian is being computed. */ if(rank == MASTER_NODE) { @@ -3663,12 +3679,14 @@ void CFEM_DG_EulerSolver::ComputeSpatialJacobian(CGeometry *geometry, CSolver * } void CFEM_DG_EulerSolver::Set_OldSolution() { + SU2_ZONE_SCOPED for(unsigned long i=0; iGetTime_Marching() == TIME_MARCHING::TIME_STEPPING; @@ -3834,6 +3853,7 @@ void CFEM_DG_EulerSolver::CheckTimeSynchronization(CConfig *config, const su2double TimeSync, su2double &timeEvolved, bool &syncTimeReached) { + SU2_ZONE_SCOPED /* Check if this is the first time this check is carried out and determine the new time evolved. */ @@ -3870,6 +3890,7 @@ void CFEM_DG_EulerSolver::CheckTimeSynchronization(CConfig *config, void CFEM_DG_EulerSolver::ProcessTaskList_DG(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics, CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED /* Easier storage of the number of time levels.. */ const unsigned short nTimeLevels = config->GetnLevels_TimeAccurateLTS(); @@ -4183,6 +4204,7 @@ void CFEM_DG_EulerSolver::ProcessTaskList_DG(CGeometry *geometry, CSolver **sol void CFEM_DG_EulerSolver::ADER_SpaceTimeIntegration(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics, CConfig *config, unsigned short iMesh, unsigned short RunTime_EqSystem) { + SU2_ZONE_SCOPED /* Preprocessing. */ Preprocessing(geometry, solver_container, config, iMesh, 0, RunTime_EqSystem, false); TolerancesADERPredictorStep(); @@ -4195,6 +4217,7 @@ void CFEM_DG_EulerSolver::ADER_SpaceTimeIntegration(CGeometry *geometry, CSolve } void CFEM_DG_EulerSolver::TolerancesADERPredictorStep() { + SU2_ZONE_SCOPED /* Determine the maximum values of the conservative variables of the locally stored DOFs. Make a distinction between 2D and 3D for @@ -4251,6 +4274,7 @@ void CFEM_DG_EulerSolver::ADER_DG_PredictorStep(CConfig *config, const unsigned long elemBeg, const unsigned long elemEnd, su2double *workArray) { + SU2_ZONE_SCOPED /* Get the data of the ADER time integration scheme. */ const unsigned short nTimeDOFs = config->GetnTimeDOFsADER_DG(); @@ -4778,6 +4802,7 @@ void CFEM_DG_EulerSolver::ADER_DG_AliasedPredictorResidual_2D(CConfig const unsigned short NPad, su2double *res, su2double *work) { + SU2_ZONE_SCOPED /* Get the necessary information from the standard element. */ const unsigned short ind = elem->indStandardElement; @@ -5023,6 +5048,7 @@ void CFEM_DG_EulerSolver::ADER_DG_AliasedPredictorResidual_3D(CConfig const unsigned short NPad, su2double *res, su2double *work) { + SU2_ZONE_SCOPED /* Get the necessary information from the standard element. */ const unsigned short ind = elem->indStandardElement; @@ -5304,6 +5330,7 @@ void CFEM_DG_EulerSolver::ADER_DG_NonAliasedPredictorResidual_2D(CConfig const unsigned short NPad, su2double *res, su2double *work) { + SU2_ZONE_SCOPED /* Set the pointers for solAndGradInt and divFlux to work. The same array can be used for both help arrays. */ @@ -5513,6 +5540,7 @@ void CFEM_DG_EulerSolver::ADER_DG_NonAliasedPredictorResidual_3D(CConfig const unsigned short NPad, su2double *res, su2double *work) { + SU2_ZONE_SCOPED /* Set the pointers for solAndGradInt and divFlux to work. The same array can be used for both help arrays. */ @@ -5750,6 +5778,7 @@ void CFEM_DG_EulerSolver::ADER_DG_TimeInterpolatePredictorSol(CConfig const unsigned long *adjElem, const bool secondPartTimeInt, su2double *solTimeLevel) { + SU2_ZONE_SCOPED /*--------------------------------------------------------------------------*/ /*--- Step 1: Interpolate the solution to the given integration point ---*/ @@ -5835,6 +5864,7 @@ void CFEM_DG_EulerSolver::Shock_Capturing_DG(CConfig *config, const unsigned long elemBeg, const unsigned long elemEnd, su2double *workArray) { + SU2_ZONE_SCOPED /*--- Run shock capturing algorithm ---*/ switch( config->GetKind_FEM_DG_Shock() ) { @@ -5851,6 +5881,7 @@ void CFEM_DG_EulerSolver::Volume_Residual(CConfig *config, const unsigned long elemBeg, const unsigned long elemEnd, su2double *workArray) { + SU2_ZONE_SCOPED /*--- Determine whether a body force term is present. ---*/ bool body_force = config->GetBody_Force(); @@ -6231,6 +6262,7 @@ void CFEM_DG_EulerSolver::Boundary_Conditions(const unsigned short timeLevel, CNumerics **numerics, const bool haloInfoNeededForBC, su2double *workArray){ + SU2_ZONE_SCOPED /* Loop over all boundaries. */ for (unsigned short iMarker = 0; iMarker < config->GetnMarker_All(); iMarker++) { @@ -6316,6 +6348,7 @@ void CFEM_DG_EulerSolver::ResidualFaces(CConfig *config, unsigned long &indResFaces, CNumerics *numerics, su2double *workArray) { + SU2_ZONE_SCOPED /* Determine the number of faces that are treated simultaneously in the matrix products to obtain good gemm performance. */ @@ -6439,6 +6472,7 @@ void CFEM_DG_EulerSolver::InviscidFluxesInternalMatchingFace( su2double *solIntR, su2double *fluxes, CNumerics *numerics) { + SU2_ZONE_SCOPED /* Set the pointer solFace to fluxes. This is just for readability, as the same memory can be used for the storage of the solution of the DOFs of @@ -6576,6 +6610,7 @@ void CFEM_DG_EulerSolver::AccumulateSpaceTimeResidualADEROwnedElem( CConfig *config, const unsigned short timeLevel, const unsigned short intPoint) { + SU2_ZONE_SCOPED /* Compute half the integration weight. The reason for doing this is that the given integration weight is based on the normalized interval [-1..1], i.e. @@ -6649,6 +6684,7 @@ void CFEM_DG_EulerSolver::AccumulateSpaceTimeResidualADERHaloElem( CConfig *config, const unsigned short timeLevel, const unsigned short intPoint) { + SU2_ZONE_SCOPED /* Compute half the integration weight. The reason for doing this is that the given integration weight is based on the normalized interval [-1..1], i.e. @@ -6710,6 +6746,7 @@ void CFEM_DG_EulerSolver::AccumulateSpaceTimeResidualADERHaloElem( void CFEM_DG_EulerSolver::CreateFinalResidual(const unsigned short timeLevel, const bool ownedElements) { + SU2_ZONE_SCOPED /* Determine the element range for which the final residual must be created. */ @@ -6757,6 +6794,7 @@ void CFEM_DG_EulerSolver::MultiplyResidualByInverseMassMatrix( const unsigned long elemBeg, const unsigned long elemEnd, su2double *workArray) { + SU2_ZONE_SCOPED /*--- Set the reference to the correct residual. This depends whether or not the ADER scheme is used. ---*/ @@ -6797,6 +6835,7 @@ void CFEM_DG_EulerSolver::MultiplyResidualByInverseMassMatrix( } void CFEM_DG_EulerSolver::Pressure_Forces(const CGeometry* geometry, const CConfig* config) { + SU2_ZONE_SCOPED /* Allocate the memory for the work array and initialize it to zero to avoid warnings in debug mode about uninitialized memory when padding is applied. */ @@ -7209,6 +7248,7 @@ void CFEM_DG_EulerSolver::Pressure_Forces(const CGeometry* geometry, const CConf void CFEM_DG_EulerSolver::ExplicitRK_Iteration(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iRKStep) { + SU2_ZONE_SCOPED const su2double RK_AlphaCoeff = config->Get_Alpha_RKStep(iRKStep); const unsigned short nRKStages = config->GetnRKStep(); @@ -7257,6 +7297,7 @@ void CFEM_DG_EulerSolver::ExplicitRK_Iteration(CGeometry *geometry, CSolver **so void CFEM_DG_EulerSolver::ClassicalRK4_Iteration(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iRKStep) { + SU2_ZONE_SCOPED /*--- Hard-coded classical RK4 coefficients. Will be added to config. ---*/ su2double RK_FuncCoeff[4] = {1.0/6.0, 1.0/3.0, 1.0/3.0, 1.0/6.0}; @@ -7309,6 +7350,7 @@ void CFEM_DG_EulerSolver::ClassicalRK4_Iteration(CGeometry *geometry, CSolver ** void CFEM_DG_EulerSolver::SetResidual_RMS_FEM(CGeometry *geometry, CConfig *config) { + SU2_ZONE_SCOPED /* Initialize the residuals to zero. */ SetResToZero(); @@ -7393,6 +7435,7 @@ void CFEM_DG_EulerSolver::SetResidual_RMS_FEM(CGeometry *geometry, void CFEM_DG_EulerSolver::ComputeVerificationError(CGeometry *geometry, CConfig *config) { + SU2_ZONE_SCOPED /*--- The errors only need to be computed on the finest grid. ---*/ if(MGLevel != MESH_0) return; @@ -7497,6 +7540,7 @@ void CFEM_DG_EulerSolver::ComputeVerificationError(CGeometry *geometry, void CFEM_DG_EulerSolver::ADER_DG_Iteration(const unsigned long elemBeg, const unsigned long elemEnd) { + SU2_ZONE_SCOPED /*--- Update the solution by looping over the given range of volume elements. ---*/ @@ -7522,6 +7566,7 @@ void CFEM_DG_EulerSolver::BoundaryStates_Euler_Wall(CConfig *co const CSurfaceElementFEM *surfElem, const su2double *solIntL, su2double *solIntR) { + SU2_ZONE_SCOPED /*--- Apply the inviscid wall boundary conditions to compute the right state in the integration points. There are two options. Either the @@ -7590,6 +7635,7 @@ void CFEM_DG_EulerSolver::BoundaryStates_Inlet(CConfig *config, unsigned short val_marker, const su2double *solIntL, su2double *solIntR) { + SU2_ZONE_SCOPED /*--- Retrieve the specified total conditions for this inlet. ---*/ string Marker_Tag = config->GetMarker_All_TagBound(val_marker); @@ -7705,6 +7751,7 @@ void CFEM_DG_EulerSolver::BoundaryStates_Outlet(CConfig *config unsigned short val_marker, const su2double *solIntL, su2double *solIntR) { + SU2_ZONE_SCOPED /*--- Retrieve the specified back pressure for this outlet. Nondimensionalize, if necessary. ---*/ @@ -7782,6 +7829,7 @@ void CFEM_DG_EulerSolver::BoundaryStates_Riemann(CConfig *confi unsigned short val_marker, const su2double *solIntL, su2double *solIntR) { + SU2_ZONE_SCOPED /* Retrieve the corresponding string for this marker. */ string Marker_Tag = config->GetMarker_All_TagBound(val_marker); @@ -8216,6 +8264,7 @@ void CFEM_DG_EulerSolver::BC_Euler_Wall(CConfig *config, su2double *resFaces, CNumerics *conv_numerics, su2double *workArray) { + SU2_ZONE_SCOPED /* Initialization of the counter in resFaces. */ unsigned long indResFaces = 0; @@ -8280,6 +8329,7 @@ void CFEM_DG_EulerSolver::BC_Far_Field(CConfig *config, su2double *resFaces, CNumerics *conv_numerics, su2double *workArray) { + SU2_ZONE_SCOPED /* Initialization of the counter in resFaces. */ unsigned long indResFaces = 0; @@ -8350,6 +8400,7 @@ void CFEM_DG_EulerSolver::BC_Sym_Plane(CConfig *config, su2double *resFaces, CNumerics *conv_numerics, su2double *workArray) { + SU2_ZONE_SCOPED /* Initialization of the counter in resFaces. */ unsigned long indResFaces = 0; @@ -8480,6 +8531,7 @@ void CFEM_DG_EulerSolver::BC_Supersonic_Outlet(CConfig *config, su2double *resFaces, CNumerics *conv_numerics, su2double *workArray) { + SU2_ZONE_SCOPED /* Initialization of the counter in resFaces. */ unsigned long indResFaces = 0; @@ -8546,6 +8598,7 @@ void CFEM_DG_EulerSolver::BC_Inlet(CConfig *config, CNumerics *conv_numerics, unsigned short val_marker, su2double *workArray) { + SU2_ZONE_SCOPED /* Initialization of the counter in resFaces. */ unsigned long indResFaces = 0; @@ -8610,6 +8663,7 @@ void CFEM_DG_EulerSolver::BC_Outlet(CConfig *config, CNumerics *conv_numerics, unsigned short val_marker, su2double *workArray) { + SU2_ZONE_SCOPED /* Initialization of the counter in resFaces. */ unsigned long indResFaces = 0; @@ -8674,6 +8728,7 @@ void CFEM_DG_EulerSolver::BC_Riemann(CConfig *config, CNumerics *conv_numerics, unsigned short val_marker, su2double *workArray) { + SU2_ZONE_SCOPED /* Initialization of the counter in resFaces. */ unsigned long indResFaces = 0; @@ -8737,6 +8792,7 @@ void CFEM_DG_EulerSolver::BC_Custom(CConfig *config, su2double *resFaces, CNumerics *conv_numerics, su2double *workArray) { + SU2_ZONE_SCOPED /* Initialization of the counter in resFaces. */ unsigned long indResFaces = 0; @@ -8829,6 +8885,7 @@ void CFEM_DG_EulerSolver::ResidualInviscidBoundaryFace( su2double *fluxes, su2double *resFaces, unsigned long &indResFaces) { + SU2_ZONE_SCOPED /*--- Get the required information from the standard face, which is the same for all faces considered. ---*/ @@ -8907,6 +8964,7 @@ void CFEM_DG_EulerSolver::LeftStatesIntegrationPointsBoundaryFace( const CSurfaceElementFEM *surfElem, su2double *solFace, su2double *solIntL) { + SU2_ZONE_SCOPED /* Get the required information from the corresponding standard face, which is the same for all simultaneously treated faces. */ @@ -8956,6 +9014,7 @@ void CFEM_DG_EulerSolver::ComputeInviscidFluxesFace(CConfig *config const su2double *solR, su2double *fluxes, CNumerics *numerics) { + SU2_ZONE_SCOPED /* Easier storage of the specific heat ratio. */ const su2double gm1 = Gamma_Minus_One; @@ -9474,6 +9533,7 @@ void CFEM_DG_EulerSolver::ComputeInviscidFluxesFace(CConfig *config } void CFEM_DG_EulerSolver::LoadRestart(CGeometry **geometry, CSolver ***solver, CConfig *config, int val_iter, bool val_update_geo) { + SU2_ZONE_SCOPED /*--- Restart the solution from file information ---*/ unsigned short iVar; diff --git a/SU2_CFD/src/solvers/CFEM_DG_NSSolver.cpp b/SU2_CFD/src/solvers/CFEM_DG_NSSolver.cpp index 7cec6d049207..0639bb057571 100644 --- a/SU2_CFD/src/solvers/CFEM_DG_NSSolver.cpp +++ b/SU2_CFD/src/solvers/CFEM_DG_NSSolver.cpp @@ -34,6 +34,7 @@ SIZE_ARR_NORM = 8 }; CFEM_DG_NSSolver::CFEM_DG_NSSolver() : CFEM_DG_EulerSolver() { + SU2_ZONE_SCOPED /*--- Basic array initialization ---*/ CD_Visc = nullptr; CL_Visc = nullptr; CSF_Visc = nullptr; CEff_Visc = nullptr; @@ -53,6 +54,7 @@ CFEM_DG_NSSolver::CFEM_DG_NSSolver() : CFEM_DG_EulerSolver() { CFEM_DG_NSSolver::CFEM_DG_NSSolver(CGeometry *geometry, CConfig *config, unsigned short iMesh) : CFEM_DG_EulerSolver(geometry, config, iMesh) { + SU2_ZONE_SCOPED /*--- Array initialization ---*/ CD_Visc = nullptr; CL_Visc = nullptr; CSF_Visc = nullptr; CEff_Visc = nullptr; @@ -153,6 +155,7 @@ CFEM_DG_NSSolver::CFEM_DG_NSSolver(CGeometry *geometry, CConfig *config, unsigne } CFEM_DG_NSSolver::~CFEM_DG_NSSolver() { + SU2_ZONE_SCOPED delete [] CD_Visc; delete [] CL_Visc; @@ -183,6 +186,7 @@ CFEM_DG_NSSolver::~CFEM_DG_NSSolver() { } void CFEM_DG_NSSolver::Friction_Forces(const CGeometry* geometry, const CConfig* config) { + SU2_ZONE_SCOPED /* Allocate the memory for the work array and initialize it to zero to avoid warnings in debug mode about uninitialized memory when padding is applied. */ @@ -893,6 +897,7 @@ void CFEM_DG_NSSolver::Friction_Forces(const CGeometry* geometry, const CConfig* void CFEM_DG_NSSolver::SetTime_Step(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, unsigned long Iteration) { + SU2_ZONE_SCOPED /* Check whether or not a time stepping scheme is used. */ const bool time_stepping = config->GetTime_Marching() == TIME_MARCHING::TIME_STEPPING; @@ -1310,6 +1315,7 @@ void CFEM_DG_NSSolver::ADER_DG_AliasedPredictorResidual_2D(CConfig const unsigned short NPad, su2double *res, su2double *work) { + SU2_ZONE_SCOPED /* Constant factor present in the heat flux vector. */ const su2double factHeatFlux_Lam = Gamma/Prandtl_Lam; const su2double factHeatFlux_Turb = Gamma/Prandtl_Turb; @@ -1634,6 +1640,7 @@ void CFEM_DG_NSSolver::ADER_DG_AliasedPredictorResidual_3D(CConfig const unsigned short NPad, su2double *res, su2double *work) { + SU2_ZONE_SCOPED /* Constant factor present in the heat flux vector. */ const su2double factHeatFlux_Lam = Gamma/Prandtl_Lam; const su2double factHeatFlux_Turb = Gamma/Prandtl_Turb; @@ -2022,6 +2029,7 @@ void CFEM_DG_NSSolver::ADER_DG_NonAliasedPredictorResidual_2D(CConfig const unsigned short NPad, su2double *res, su2double *work) { + SU2_ZONE_SCOPED /* Constant factor present in the heat flux vector, the inverse of the specific heat at constant volume and ratio lambdaOverMu. */ @@ -2414,6 +2422,7 @@ void CFEM_DG_NSSolver::ADER_DG_NonAliasedPredictorResidual_3D(CConfig const unsigned short NPad, su2double *res, su2double *work) { + SU2_ZONE_SCOPED /* Constant factor present in the heat flux vector, the inverse of the specific heat at constant volume and ratio lambdaOverMu. */ @@ -2974,6 +2983,7 @@ void CFEM_DG_NSSolver::Shock_Capturing_DG(CConfig *config, const unsigned long elemBeg, const unsigned long elemEnd, su2double *workArray) { + SU2_ZONE_SCOPED /*--- Run shock capturing algorithm ---*/ switch( config->GetKind_FEM_DG_Shock() ) { @@ -2988,6 +2998,7 @@ void CFEM_DG_NSSolver::Shock_Capturing_DG(CConfig *config, void CFEM_DG_NSSolver::Shock_Capturing_DG_Persson(const unsigned long elemBeg, const unsigned long elemEnd, su2double *workArray) { + SU2_ZONE_SCOPED /*--- Dummy variable for storing shock sensor value temporarily ---*/ su2double sensorVal, sensorLowerBound, machNorm, machMax; @@ -3150,6 +3161,7 @@ void CFEM_DG_NSSolver::Volume_Residual(CConfig *config, const unsigned long elemBeg, const unsigned long elemEnd, su2double *workArray) { + SU2_ZONE_SCOPED /*--- Determine whether a body force term is present. ---*/ bool body_force = config->GetBody_Force(); @@ -3728,6 +3740,7 @@ void CFEM_DG_NSSolver::ResidualFaces(CConfig *config, unsigned long &indResFaces, CNumerics *numerics, su2double *workArray) { + SU2_ZONE_SCOPED /* Determine the number of faces that are treated simultaneously in the matrix products to obtain good gemm performance. */ @@ -4146,6 +4159,7 @@ void CFEM_DG_NSSolver::ViscousNormalFluxFace(const CVolumeElementFEM *adjVolElem su2double *viscNormFluxes, su2double *viscosityInt, su2double *kOverCvInt) { + SU2_ZONE_SCOPED /* Multiplication factor for the heat flux. It is set to zero if the wall heat flux is prescribed, such that the computed heat flux is zero, and to one otherwise. */ @@ -4312,6 +4326,7 @@ void CFEM_DG_NSSolver::ViscousNormalFluxIntegrationPoint_2D(const su2double *sol su2double &Viscosity, su2double &kOverCv, su2double *normalFlux) { + SU2_ZONE_SCOPED /* Constant factor present in the heat flux vector, namely the ratio of thermal conductivity and viscosity. */ @@ -4398,6 +4413,7 @@ void CFEM_DG_NSSolver::ViscousNormalFluxIntegrationPoint_3D(const su2double *sol su2double &Viscosity, su2double &kOverCv, su2double *normalFlux) { + SU2_ZONE_SCOPED /* Constant factor present in the heat flux vector, namely the ratio of thermal conductivity and viscosity. */ @@ -4509,6 +4525,7 @@ void CFEM_DG_NSSolver::PenaltyTermsFluxFace(const unsigned short indFaceChunk, const su2double lenScale1, const su2double *metricNormalsFace, su2double *penaltyFluxes) { + SU2_ZONE_SCOPED /* Constant ratio of the second viscosity and the viscosity itself. */ const su2double lambdaOverMu = -TWO3; @@ -4629,6 +4646,7 @@ void CFEM_DG_NSSolver::SymmetrizingFluxesFace(const unsigned short indFaceChunk, const su2double *kOverCvInt1, const su2double *metricNormalsFace, su2double *symmFluxes) { + SU2_ZONE_SCOPED /* Constant ratio of the second viscosity and the viscosity itself. */ const su2double lambdaOverMu = -TWO3; @@ -4868,6 +4886,7 @@ void CFEM_DG_NSSolver::TransformSymmetrizingFluxes(const unsigned short indFaceC const su2double *weights, const su2double *metricCoorFace, su2double *paramFluxes) { + SU2_ZONE_SCOPED /*--- Transform the fluxes, such that they must be multiplied with the gradients w.r.t. the parametric coordinates rather than the @@ -4985,6 +5004,7 @@ void CFEM_DG_NSSolver::BC_Euler_Wall(CConfig *config, su2double *resFaces, CNumerics *conv_numerics, su2double *workArray){ + SU2_ZONE_SCOPED /* Initialization of the counter in resFaces. */ unsigned long indResFaces = 0; @@ -5051,6 +5071,7 @@ void CFEM_DG_NSSolver::BC_Far_Field(CConfig *config, su2double *resFaces, CNumerics *conv_numerics, su2double *workArray){ + SU2_ZONE_SCOPED /* Initialization of the counter in resFaces. */ unsigned long indResFaces = 0; @@ -5123,6 +5144,7 @@ void CFEM_DG_NSSolver::BC_Sym_Plane(CConfig *config, su2double *resFaces, CNumerics *conv_numerics, su2double *workArray){ + SU2_ZONE_SCOPED /* Initialization of the counter in resFaces. */ unsigned long indResFaces = 0; @@ -5528,6 +5550,7 @@ void CFEM_DG_NSSolver::BC_Supersonic_Outlet(CConfig *config, su2double *resFaces, CNumerics *conv_numerics, su2double *workArray){ + SU2_ZONE_SCOPED /* Initialization of the counter in resFaces. */ unsigned long indResFaces = 0; @@ -5596,6 +5619,7 @@ void CFEM_DG_NSSolver::BC_Inlet(CConfig *config, CNumerics *conv_numerics, unsigned short val_marker, su2double *workArray) { + SU2_ZONE_SCOPED /* Initialization of the counter in resFaces. */ unsigned long indResFaces = 0; @@ -5662,6 +5686,7 @@ void CFEM_DG_NSSolver::BC_Outlet(CConfig *config, CNumerics *conv_numerics, unsigned short val_marker, su2double *workArray) { + SU2_ZONE_SCOPED /* Initialization of the counter in resFaces. */ unsigned long indResFaces = 0; @@ -5728,6 +5753,7 @@ void CFEM_DG_NSSolver::BC_HeatFlux_Wall(CConfig *config, CNumerics *conv_numerics, unsigned short val_marker, su2double *workArray) { + SU2_ZONE_SCOPED /* Set the factor for the wall velocity. For factWallVel = 0, the right state contains the wall velocity. For factWallVel = 1.0, the velocity of the @@ -5860,6 +5886,7 @@ void CFEM_DG_NSSolver::BC_Isothermal_Wall(CConfig *config, CNumerics *conv_numerics, unsigned short val_marker, su2double *workArray) { + SU2_ZONE_SCOPED /* Set the factor for the wall velocity. For factWallVel = 0, the right state contains the wall velocity. For factWallVel = 1.0, the velocity of the @@ -5977,6 +6004,7 @@ void CFEM_DG_NSSolver::BC_Riemann(CConfig *config, CNumerics *conv_numerics, unsigned short val_marker, su2double *workArray) { + SU2_ZONE_SCOPED /* Initialization of the counter in resFaces. */ unsigned long indResFaces = 0; @@ -6042,6 +6070,7 @@ void CFEM_DG_NSSolver::BC_Custom(CConfig *config, su2double *resFaces, CNumerics *conv_numerics, su2double *workArray) { + SU2_ZONE_SCOPED /* Initialization of the counter in resFaces. */ unsigned long indResFaces = 0; @@ -6142,6 +6171,7 @@ void CFEM_DG_NSSolver::ViscousBoundaryFacesBCTreatment( su2double *resFaces, unsigned long &indResFaces, CWallModel *wallModel) { + SU2_ZONE_SCOPED /*--- Get the information from the standard element, which is the same for all the faces in the chunks considered. ---*/ @@ -6201,6 +6231,7 @@ void CFEM_DG_NSSolver::ComputeViscousFluxesBoundaryFaces( su2double *viscFluxes, su2double *viscosityInt, su2double *kOverCvInt) { + SU2_ZONE_SCOPED /*---------------------------------------------------------------------------*/ /*--- Step 1: Compute the gradients of the conservative variables in the ---*/ @@ -6274,6 +6305,7 @@ void CFEM_DG_NSSolver::WallTreatmentViscousFluxes( su2double *viscosityInt, su2double *kOverCvInt, CWallModel *wallModel) { + SU2_ZONE_SCOPED /* Loop over the simultaneously treated faces. */ for(unsigned short l=0; l } // namespace CGradientSmoothingSolverDetails CGradientSmoothingSolver::CGradientSmoothingSolver(CGeometry *geometry, CConfig *config) : CFEASolverBase(LINEAR_SOLVER_MODE::GRADIENT_MODE) { + SU2_ZONE_SCOPED unsigned int marker_count = 0; unsigned long iPoint; @@ -164,6 +165,7 @@ CGradientSmoothingSolver::CGradientSmoothingSolver(CGeometry *geometry, CConfig } CGradientSmoothingSolver::~CGradientSmoothingSolver() { + SU2_ZONE_SCOPED delete nodes; @@ -171,6 +173,7 @@ CGradientSmoothingSolver::~CGradientSmoothingSolver() { void CGradientSmoothingSolver::ApplyGradientSmoothingVolume(CGeometry* geometry, CNumerics* numerics, const CConfig* config) { + SU2_ZONE_SCOPED /*--- current dimension if we run consecutive on each dimension ---*/ unsigned int iDim = 0; @@ -213,6 +216,7 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingVolume(CGeometry* geometry, void CGradientSmoothingSolver::ApplyGradientSmoothingSurface(CGeometry* geometry, CNumerics* numerics, const CConfig* config) { + SU2_ZONE_SCOPED /*--- Set vector and sparse matrix to 0 ---*/ LinSysSol.SetValZero(); LinSysRes.SetValZero(); @@ -246,6 +250,7 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingDV(CGeometry* geometry, CNu CSurfaceMovement* surface_movement, CVolumetricMovement* grid_movement, CConfig* config, su2double** Gradient) { + SU2_ZONE_SCOPED unsigned nDVtotal=config->GetnDV_Total(); unsigned column, row; unsigned long iPoint; @@ -363,6 +368,7 @@ void CGradientSmoothingSolver::ApplyGradientSmoothingDV(CGeometry* geometry, CNu } void CGradientSmoothingSolver::Compute_StiffMatrix(CGeometry* geometry, CNumerics* numerics, const CConfig* config) { + SU2_ZONE_SCOPED unsigned long iElem, iNode; unsigned int iDim, nNodes = 0, NelNodes, jNode; std::array indexNode; @@ -423,6 +429,7 @@ void CGradientSmoothingSolver::Compute_StiffMatrix(CGeometry* geometry, CNumeric void CGradientSmoothingSolver::Compute_Surface_StiffMatrix(CGeometry* geometry, CNumerics* numerics, const CConfig* config, unsigned long val_marker, unsigned int nSurfDim) { + SU2_ZONE_SCOPED unsigned long iElem, iPoint, iVertex, iDim, iSurfDim; unsigned int iNode, jNode, nNodes = 0, NelNodes; std::array indexNode; @@ -487,6 +494,7 @@ void CGradientSmoothingSolver::Compute_Surface_StiffMatrix(CGeometry* geometry, } void CGradientSmoothingSolver::Compute_Residual(CGeometry* geometry, const CConfig* config) { + SU2_ZONE_SCOPED unsigned long iElem; unsigned int iDim, iNode, nNodes = 0; int EL_KIND = 0; @@ -545,6 +553,7 @@ void CGradientSmoothingSolver::Compute_Residual(CGeometry* geometry, const CConf void CGradientSmoothingSolver::Compute_Surface_Residual(CGeometry* geometry, const CConfig* config, unsigned long val_marker) { + SU2_ZONE_SCOPED unsigned long iElem, iPoint, iVertex; unsigned int iDim, iNode, nNodes = 0; int EL_KIND = 0; @@ -600,6 +609,7 @@ void CGradientSmoothingSolver::Compute_Surface_Residual(CGeometry* geometry, con } void CGradientSmoothingSolver::Impose_BC(const CGeometry* geometry, const CConfig* config) { + SU2_ZONE_SCOPED unsigned int iMarker; /*--- Get the boundary markers and iterate over them @@ -613,6 +623,7 @@ void CGradientSmoothingSolver::Impose_BC(const CGeometry* geometry, const CConfi } void CGradientSmoothingSolver::BC_Dirichlet(const CGeometry* geometry, const CConfig* config, unsigned int val_marker) { + SU2_ZONE_SCOPED unsigned long iPoint, iVertex; const su2double zeros[MAXNDIM] = {0.0}; @@ -631,6 +642,7 @@ void CGradientSmoothingSolver::BC_Dirichlet(const CGeometry* geometry, const CCo void CGradientSmoothingSolver::BC_Surface_Dirichlet(const CGeometry* geometry, const CConfig* config, unsigned int val_marker) { + SU2_ZONE_SCOPED unsigned long iPoint, iVertex; const su2double zeros[MAXNDIM] = {0.0}; @@ -648,6 +660,7 @@ void CGradientSmoothingSolver::BC_Surface_Dirichlet(const CGeometry* geometry, c } void CGradientSmoothingSolver::Solve_Linear_System(CGeometry* geometry, const CConfig* config) { + SU2_ZONE_SCOPED /* For MPI prescribe vector entries across the ranks before solving the system. * Analog to FEA solver this is only done for the solution */ CSysMatrixComms::Initiate(LinSysSol, geometry, config); @@ -675,6 +688,7 @@ template CSysMatrixVectorProduct CGradientSmoothingSolver::GetStiffnessMatrixVectorProduct(CGeometry* geometry, CNumerics* numerics, const CConfig* config) { + SU2_ZONE_SCOPED /*--- Compute the sparse stiffness matrix ---*/ if (config->GetSmoothOnSurface()) { @@ -692,6 +706,7 @@ CSysMatrixVectorProduct CGradientSmoothingSolver::GetStiffnessMatri } void CGradientSmoothingSolver::CalculateOriginalGradient(CGeometry *geometry, CVolumetricMovement *grid_movement, CConfig *config, su2double** Gradient) { + SU2_ZONE_SCOPED unsigned int iDV, iDV_Value, iDV_index; @@ -717,6 +732,7 @@ void CGradientSmoothingSolver::CalculateOriginalGradient(CGeometry *geometry, CV } void CGradientSmoothingSolver::RecordTapeAndCalculateOriginalGradient(CGeometry *geometry, CSurfaceMovement *surface_movement, CVolumetricMovement *grid_movement, CConfig *config, su2double **Gradient) { + SU2_ZONE_SCOPED /*--- Record the parameterization on the AD tape. ---*/ if (rank == MASTER_NODE) cout << " calculate the original gradient" << endl; @@ -728,6 +744,7 @@ void CGradientSmoothingSolver::RecordTapeAndCalculateOriginalGradient(CGeometry } void CGradientSmoothingSolver::OutputDVGradient(const CConfig* config, string out_file) { + SU2_ZONE_SCOPED unsigned iDV; if (rank == MASTER_NODE) { /*--- For multizone append zone number to filename. ---*/ @@ -745,6 +762,7 @@ void CGradientSmoothingSolver::OutputDVGradient(const CConfig* config, string ou } void CGradientSmoothingSolver::RecordParameterizationJacobian(CGeometry *geometry, CSurfaceMovement *surface_movement, CSysVector& registeredCoord, CConfig *config) { + SU2_ZONE_SCOPED unsigned int nDim, nMarker, nDV, nDV_Value, nPoint, nVertex; unsigned int iDV, iDV_Value, iMarker, iPoint, iVertex, iDim; @@ -803,6 +821,7 @@ void CGradientSmoothingSolver::RecordParameterizationJacobian(CGeometry *geometr } void CGradientSmoothingSolver::ProjectDVtoMesh(CGeometry *geometry, std::vector& seeding, CSysVector& result, CSysVector& registeredCoord, CConfig *config) { + SU2_ZONE_SCOPED unsigned int nDim, nMarker, nDV, nDV_Value, nVertex; unsigned int iDV, iDV_Value, iDV_index, iMarker, iVertex, iPoint, iDim; @@ -842,6 +861,7 @@ void CGradientSmoothingSolver::ProjectDVtoMesh(CGeometry *geometry, std::vector< } void CGradientSmoothingSolver::ProjectMeshToDV(CGeometry *geometry, CSysVector& sensitivity, std::vector& output, CSysVector& registeredCoord, CConfig *config) { + SU2_ZONE_SCOPED /*--- adjoint surface deformation ---*/ @@ -888,6 +908,7 @@ void CGradientSmoothingSolver::ProjectMeshToDV(CGeometry *geometry, CSysVector myPoints; @@ -992,6 +1016,7 @@ void CGradientSmoothingSolver::Set_VertexEliminationSchedule(CGeometry* geometry } void CGradientSmoothingSolver::Complete_Surface_StiffMatrix(const CGeometry* geometry) { + SU2_ZONE_SCOPED /*--- Assembling the stiffness matrix on the design surface means the Jacobian is the identity for nodes inside the domain. ---*/ for (unsigned long iPoint = 0ul; iPoint < geometry->GetnPointDomain(); iPoint++){ diff --git a/SU2_CFD/src/solvers/CHeatSolver.cpp b/SU2_CFD/src/solvers/CHeatSolver.cpp index 6e127a984485..49235895307d 100644 --- a/SU2_CFD/src/solvers/CHeatSolver.cpp +++ b/SU2_CFD/src/solvers/CHeatSolver.cpp @@ -36,6 +36,7 @@ template class CScalarSolver; CHeatSolver::CHeatSolver(CGeometry *geometry, CConfig *config, unsigned short iMesh) : CScalarSolver(geometry, config, false), flow(config->GetFluidProblem()) { + SU2_ZONE_SCOPED /*--- Dimension of the problem --> temperature is the only conservative variable ---*/ @@ -173,6 +174,7 @@ CHeatSolver::CHeatSolver(CGeometry *geometry, CConfig *config, unsigned short iM void CHeatSolver::Preprocessing(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, unsigned short iRKStep, unsigned short RunTime_EqSystem, bool Output) { + SU2_ZONE_SCOPED SU2_OMP_SAFE_GLOBAL_ACCESS(config->SetGlobalParam(config->GetKind_Solver(), RunTime_EqSystem);) CommonPreprocessing(geometry, config, Output); @@ -190,6 +192,7 @@ void CHeatSolver::Preprocessing(CGeometry *geometry, CSolver **solver_container, void CHeatSolver::LoadRestart(CGeometry **geometry, CSolver ***solver, CConfig *config, int val_iter, bool val_update_geo) { + SU2_ZONE_SCOPED string restart_filename = config->GetSolution_FileName(); BEGIN_SU2_OMP_SAFE_GLOBAL_ACCESS { @@ -278,6 +281,7 @@ void CHeatSolver::LoadRestart(CGeometry **geometry, CSolver ***solver, CConfig * void CHeatSolver::Upwind_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED /*--- For solid heat transfer there is no convection. ---*/ if (!flow) return; CScalarSolver::Upwind_Residual(geometry, solver_container, numerics_container, config, iMesh); @@ -285,6 +289,7 @@ void CHeatSolver::Upwind_Residual(CGeometry *geometry, CSolver **solver_containe void CHeatSolver::Viscous_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh, unsigned short iRKStep) { + SU2_ZONE_SCOPED /*--- For fluid problems the viscous residual is included in the convective residual. ---*/ if (flow) return; const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); @@ -317,6 +322,7 @@ void CHeatSolver::Viscous_Residual(CGeometry *geometry, CSolver **solver_contain void CHeatSolver::Source_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED /*--- Regular source terms go here. ---*/ /*--- ... ---*/ @@ -330,6 +336,7 @@ void CHeatSolver::Source_Residual(CGeometry *geometry, CSolver **solver_containe void CHeatSolver::Set_Heatflux_Areas(CGeometry *geometry, CConfig *config) { + SU2_ZONE_SCOPED BEGIN_SU2_OMP_SAFE_GLOBAL_ACCESS { @@ -390,6 +397,7 @@ void CHeatSolver::Set_Heatflux_Areas(CGeometry *geometry, CConfig *config) { void CHeatSolver::BC_Isothermal_Wall(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED const auto Marker_Tag = config->GetMarker_All_TagBound(val_marker); su2double Twall = config->GetIsothermal_Temperature(Marker_Tag) / config->GetTemperature_Ref(); @@ -407,6 +415,7 @@ void CHeatSolver::BC_Isothermal_Wall(CGeometry *geometry, CSolver **solver_conta void CHeatSolver::BC_HeatFlux_Wall(CGeometry* geometry, CSolver** solver_container, CNumerics* conv_numerics, CNumerics* visc_numerics, CConfig* config, unsigned short val_marker) { + SU2_ZONE_SCOPED const auto Marker_Tag = config->GetMarker_All_TagBound(val_marker); const bool IsPyCustom = config->GetMarker_All_PyCustom(val_marker); @@ -434,6 +443,7 @@ void CHeatSolver::BC_HeatFlux_Wall(CGeometry* geometry, CSolver** solver_contain void CHeatSolver::BC_Inlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED if (!flow) return; const bool viscous = config->GetViscous(); @@ -494,6 +504,7 @@ void CHeatSolver::BC_Inlet(CGeometry *geometry, CSolver **solver_container, CNum void CHeatSolver::BC_Outlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED if (!flow) return; const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); @@ -548,6 +559,7 @@ void CHeatSolver::BC_Outlet(CGeometry *geometry, CSolver **solver_container, } void CHeatSolver::BC_ConjugateHeat_Interface(CGeometry *geometry, CSolver **solver_container, CNumerics *numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); const su2double Temperature_Ref = config->GetTemperature_Ref(); @@ -612,6 +624,7 @@ void CHeatSolver::BC_ConjugateHeat_Interface(CGeometry *geometry, CSolver **solv } void CHeatSolver::Heat_Fluxes(CGeometry *geometry, CSolver **solver_container, CConfig *config) { + SU2_ZONE_SCOPED unsigned long iPointNormal; unsigned short Boundary, Monitoring; @@ -726,6 +739,7 @@ void CHeatSolver::Heat_Fluxes(CGeometry *geometry, CSolver **solver_container, C void CHeatSolver::SetTime_Step(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, unsigned long Iteration) { + SU2_ZONE_SCOPED const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); const bool time_stepping = (config->GetTime_Marching() == TIME_MARCHING::TIME_STEPPING); @@ -935,6 +949,7 @@ void CHeatSolver::SetTime_Step(CGeometry *geometry, CSolver **solver_container, } void CHeatSolver::SetInitialCondition(CGeometry **geometry, CSolver ***solver_container, CConfig *config, unsigned long TimeIter) { + SU2_ZONE_SCOPED const bool restart = (config->GetRestart() || config->GetRestart_Flow()); const bool dual_time = ((config->GetTime_Marching() == TIME_MARCHING::DT_STEPPING_1ST) || @@ -983,6 +998,7 @@ void CHeatSolver::SetInitialCondition(CGeometry **geometry, CSolver ***solver_co void CHeatSolver::SetResidual_DualTime(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iRKStep, unsigned short iMesh, unsigned short RunTime_EqSystem) { + SU2_ZONE_SCOPED if (flow) { CScalarSolver::SetResidual_DualTime(geometry, solver_container, config, iRKStep, iMesh, RunTime_EqSystem); return; diff --git a/SU2_CFD/src/solvers/CIncEulerSolver.cpp b/SU2_CFD/src/solvers/CIncEulerSolver.cpp index 5ba375e74896..b7896ae4380d 100644 --- a/SU2_CFD/src/solvers/CIncEulerSolver.cpp +++ b/SU2_CFD/src/solvers/CIncEulerSolver.cpp @@ -40,6 +40,7 @@ CIncEulerSolver::CIncEulerSolver(CGeometry *geometry, CConfig *config, unsigned short iMesh, const bool navier_stokes) : CFVMFlowSolverBase(*geometry, *config) { + SU2_ZONE_SCOPED /*--- Based on the navier_stokes boolean, determine if this constructor is * being called by itself, or by its derived class CIncNSSolver. ---*/ @@ -228,11 +229,13 @@ CIncEulerSolver::CIncEulerSolver(CGeometry *geometry, CConfig *config, unsigned } CIncEulerSolver::~CIncEulerSolver() { + SU2_ZONE_SCOPED for(auto& model : FluidModel) delete model; } void CIncEulerSolver::SetNondimensionalization(CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED su2double Temperature_FreeStream = 0.0, ModVel_FreeStream = 0.0,Energy_FreeStream = 0.0, ModVel_FreeStreamND = 0.0, Omega_FreeStream = 0.0, Omega_FreeStreamND = 0.0, Viscosity_FreeStream = 0.0, @@ -927,6 +930,7 @@ void CIncEulerSolver::SetNondimensionalization(CConfig *config, unsigned short i } void CIncEulerSolver::SetReferenceValues(const CConfig& config) { + SU2_ZONE_SCOPED /*--- Evaluate reference values for non-dimensionalization. For dimensional or non-dim based on initial values, use the far-field state (inf). For a custom non-dim based @@ -956,6 +960,7 @@ void CIncEulerSolver::SetReferenceValues(const CConfig& config) { void CIncEulerSolver::CommonPreprocessing(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, unsigned short iRKStep, unsigned short RunTime_EqSystem, bool Output) { + SU2_ZONE_SCOPED const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); const bool center = (config->GetKind_ConvNumScheme_Flow() == SPACE_CENTERED); @@ -1015,6 +1020,7 @@ void CIncEulerSolver::CommonPreprocessing(CGeometry *geometry, CSolver **solver_ void CIncEulerSolver::Preprocessing(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, unsigned short iRKStep, unsigned short RunTime_EqSystem, bool Output) { + SU2_ZONE_SCOPED const auto InnerIter = config->GetInnerIter(); const bool muscl = config->GetMUSCL_Flow() && (iMesh == MESH_0); const bool center = (config->GetKind_ConvNumScheme_Flow() == SPACE_CENTERED); @@ -1047,6 +1053,7 @@ void CIncEulerSolver::Preprocessing(CGeometry *geometry, CSolver **solver_contai } unsigned long CIncEulerSolver::SetPrimitive_Variables(CSolver **solver_container, const CConfig *config) { + SU2_ZONE_SCOPED unsigned long iPoint, nonPhysicalPoints = 0; @@ -1072,6 +1079,7 @@ unsigned long CIncEulerSolver::SetPrimitive_Variables(CSolver **solver_container void CIncEulerSolver::SetTime_Step(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, unsigned long Iteration) { + SU2_ZONE_SCOPED /*--- Define an object to compute the speed of sound. ---*/ struct SoundSpeed { @@ -1126,6 +1134,7 @@ void CIncEulerSolver::SetTime_Step(CGeometry *geometry, CSolver **solver_contain void CIncEulerSolver::Centered_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh, unsigned short iRKStep) { + SU2_ZONE_SCOPED CNumerics* numerics = numerics_container[CONV_TERM + omp_get_thread_num()*MAX_TERMS]; @@ -1221,6 +1230,7 @@ void CIncEulerSolver::Centered_Residual(CGeometry *geometry, CSolver **solver_co void CIncEulerSolver::Upwind_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED CNumerics* numerics = numerics_container[CONV_TERM + omp_get_thread_num()*MAX_TERMS]; @@ -1390,6 +1400,7 @@ void CIncEulerSolver::Upwind_Residual(CGeometry *geometry, CSolver **solver_cont void CIncEulerSolver::ComputeConsistentExtrapolation(CFluidModel* fluidModel, unsigned short nDim, const su2double* scalar, su2double* primitive) { + SU2_ZONE_SCOPED const CIncEulerVariable::CIndices prim_idx(nDim, 0); const su2double enthalpy = primitive[prim_idx.Enthalpy()]; fluidModel->SetTDState_h(enthalpy, scalar); @@ -1400,6 +1411,7 @@ void CIncEulerSolver::ComputeConsistentExtrapolation(CFluidModel* fluidModel, un void CIncEulerSolver::Source_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED /*--- Pick one numerics object per thread. ---*/ CNumerics* numerics = numerics_container[SOURCE_FIRST_TERM + omp_get_thread_num()*MAX_TERMS]; @@ -1874,6 +1886,7 @@ void CIncEulerSolver::Source_Residual(CGeometry *geometry, CSolver **solver_cont void CIncEulerSolver::Source_Template(CGeometry *geometry, CSolver **solver_container, CNumerics *numerics, CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED /* This method should be used to call any new source terms for a particular problem*/ /* This method calls the new child class in CNumerics, where the new source term should be implemented. */ @@ -1887,6 +1900,7 @@ void CIncEulerSolver::Source_Template(CGeometry *geometry, CSolver **solver_cont } void CIncEulerSolver::SetMax_Eigenvalue(CGeometry *geometry, const CConfig *config) { + SU2_ZONE_SCOPED /*--- Define an object to compute the speed of sound. ---*/ struct SoundSpeed { @@ -1907,6 +1921,7 @@ void CIncEulerSolver::SetMax_Eigenvalue(CGeometry *geometry, const CConfig *conf } void CIncEulerSolver::SetCentered_Dissipation_Sensor(CGeometry *geometry, const CConfig *config) { + SU2_ZONE_SCOPED /*--- Define an object for the sensor variable, density. ---*/ struct SensVar { @@ -1923,6 +1938,7 @@ void CIncEulerSolver::SetCentered_Dissipation_Sensor(CGeometry *geometry, const template FORCEINLINE void CIncEulerSolver::Explicit_Iteration(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iRKStep) { + SU2_ZONE_SCOPED struct Precond { const CIncEulerSolver* solver; su2activematrix matrix; @@ -1949,22 +1965,26 @@ FORCEINLINE void CIncEulerSolver::Explicit_Iteration(CGeometry *geometry, CSolve void CIncEulerSolver::ExplicitRK_Iteration(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iRKStep) { + SU2_ZONE_SCOPED Explicit_Iteration(geometry, solver_container, config, iRKStep); } void CIncEulerSolver::ClassicalRK4_Iteration(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iRKStep) { + SU2_ZONE_SCOPED Explicit_Iteration(geometry, solver_container, config, iRKStep); } void CIncEulerSolver::ExplicitEuler_Iteration(CGeometry *geometry, CSolver **solver_container, CConfig *config) { + SU2_ZONE_SCOPED Explicit_Iteration(geometry, solver_container, config, 0); } void CIncEulerSolver::PrepareImplicitIteration(CGeometry *geometry, CSolver**, CConfig *config) { + SU2_ZONE_SCOPED struct IncPrec { const CIncEulerSolver* solver; @@ -1984,12 +2004,14 @@ void CIncEulerSolver::PrepareImplicitIteration(CGeometry *geometry, CSolver**, C } void CIncEulerSolver::CompleteImplicitIteration(CGeometry *geometry, CSolver**, CConfig *config) { + SU2_ZONE_SCOPED CompleteImplicitIteration_impl(geometry, config); } void CIncEulerSolver::SetBeta_Parameter(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED static su2double MaxVel2; const su2double epsilon2_default = 4.1; @@ -2031,6 +2053,7 @@ void CIncEulerSolver::SetBeta_Parameter(CGeometry *geometry, CSolver **solver_co void CIncEulerSolver::SetRangePressure(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED static su2double MinP, MaxP; if (iMesh == MESH_0) { @@ -2067,6 +2090,7 @@ void CIncEulerSolver::SetRangePressure(CGeometry *geometry, CSolver **solver_con void CIncEulerSolver::SetPreconditioner(const CConfig *config, unsigned long iPoint, su2double delta, su2activematrix& Preconditioner) const { + SU2_ZONE_SCOPED unsigned short iDim, jDim, iVar, jVar; @@ -2179,6 +2203,7 @@ void CIncEulerSolver::SetPreconditioner(const CConfig *config, unsigned long iPo void CIncEulerSolver::BC_Far_Field(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED unsigned short iDim; unsigned long iVertex, iPoint, Point_Normal; @@ -2318,6 +2343,7 @@ void CIncEulerSolver::BC_Far_Field(CGeometry *geometry, CSolver **solver_contain void CIncEulerSolver::BC_Inlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED unsigned short iDim; unsigned long iVertex, iPoint; unsigned long Point_Normal; @@ -2581,6 +2607,7 @@ void CIncEulerSolver::BC_Inlet(CGeometry *geometry, CSolver **solver_container, void CIncEulerSolver::BC_Outlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED unsigned short iDim; unsigned long iVertex, iPoint, Point_Normal; su2double *V_outlet, *V_domain, P_Outlet = 0.0, P_domain; @@ -2788,6 +2815,7 @@ void CIncEulerSolver::BC_Outlet(CGeometry *geometry, CSolver **solver_container, void CIncEulerSolver::SetResidual_DualTime(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iRKStep, unsigned short iMesh, unsigned short RunTime_EqSystem) { + SU2_ZONE_SCOPED /*--- Local variables ---*/ @@ -3018,6 +3046,7 @@ void CIncEulerSolver::SetResidual_DualTime(CGeometry *geometry, CSolver **solver } void CIncEulerSolver::GetOutlet_Properties(CGeometry *geometry, CConfig *config, unsigned short iMesh, bool Output) { + SU2_ZONE_SCOPED unsigned short iDim, iMarker; unsigned long iVertex, iPoint; @@ -3229,6 +3258,7 @@ void CIncEulerSolver::GetOutlet_Properties(CGeometry *geometry, CConfig *config, } void CIncEulerSolver::PrintVerificationError(const CConfig *config) const { + SU2_ZONE_SCOPED if ((rank != MASTER_NODE) || (MGLevel != MESH_0)) return; @@ -3269,6 +3299,7 @@ void CIncEulerSolver::PrintVerificationError(const CConfig *config) const { } void CIncEulerSolver::LoadRestart(CGeometry **geometry, CSolver ***solver, CConfig *config, int val_iter, bool val_update_geo) { + SU2_ZONE_SCOPED /*--- Adjust the number of solution variables in the restart. We always carry a space in nVar for the energy equation in the solver, but we only @@ -3288,6 +3319,7 @@ void CIncEulerSolver::LoadRestart(CGeometry **geometry, CSolver ***solver, CConf } void CIncEulerSolver::SetFreeStream_Solution(const CConfig *config){ + SU2_ZONE_SCOPED SU2_OMP_FOR_STAT(omp_chunk_size) for (unsigned long iPoint = 0; iPoint < nPoint; iPoint++){ nodes->SetSolution(iPoint,0, Pressure_Inf); @@ -3301,6 +3333,7 @@ void CIncEulerSolver::SetFreeStream_Solution(const CConfig *config){ } unsigned long CIncEulerSolver::RegisterSolutionExtra(bool input, const CConfig* config) { + SU2_ZONE_SCOPED if (config->GetKind_Streamwise_Periodic() == ENUM_STREAMWISE_PERIODIC::MASSFLOW) { if (input) AD::RegisterInput(SPvals.Streamwise_Periodic_PressureDrop); else AD::RegisterOutput(SPvalsUpdated.Streamwise_Periodic_PressureDrop); @@ -3310,12 +3343,14 @@ unsigned long CIncEulerSolver::RegisterSolutionExtra(bool input, const CConfig* } void CIncEulerSolver::SetAdjoint_SolutionExtra(const su2activevector& adj_sol, const CConfig* config) { + SU2_ZONE_SCOPED if (config->GetKind_Streamwise_Periodic() == ENUM_STREAMWISE_PERIODIC::MASSFLOW) { SU2_TYPE::SetDerivative(SPvalsUpdated.Streamwise_Periodic_PressureDrop, SU2_TYPE::GetValue(adj_sol[0])); } } void CIncEulerSolver::ExtractAdjoint_SolutionExtra(su2activevector& adj_sol, const CConfig* config) { + SU2_ZONE_SCOPED if (config->GetKind_Streamwise_Periodic() == ENUM_STREAMWISE_PERIODIC::MASSFLOW) { adj_sol[0] = SU2_TYPE::GetDerivative(SPvals.Streamwise_Periodic_PressureDrop); } diff --git a/SU2_CFD/src/solvers/CIncNSSolver.cpp b/SU2_CFD/src/solvers/CIncNSSolver.cpp index dc02968fda4f..92a5ba01ba4a 100644 --- a/SU2_CFD/src/solvers/CIncNSSolver.cpp +++ b/SU2_CFD/src/solvers/CIncNSSolver.cpp @@ -37,6 +37,7 @@ template class CFVMFlowSolverBaseGetInnerIter(); const bool muscl = config->GetMUSCL_Flow() && (iMesh == MESH_0); @@ -118,6 +120,7 @@ void CIncNSSolver::Preprocessing(CGeometry *geometry, CSolver **solver_container void CIncNSSolver::GetStreamwise_Periodic_Properties(const CGeometry *geometry, CConfig *config, const unsigned short iMesh) { + SU2_ZONE_SCOPED /*---------------------------------------------------------------------------------------------*/ // 1. Evaluate massflow, area avg density & Temperature and Area at streamwise periodic outlet. @@ -233,6 +236,7 @@ void CIncNSSolver::GetStreamwise_Periodic_Properties(const CGeometry *geometry, void CIncNSSolver::Compute_Streamwise_Periodic_Recovered_Values(CConfig *config, const CGeometry *geometry, const unsigned short iMesh) { + SU2_ZONE_SCOPED const bool energy = (config->GetEnergy_Equation() && config->GetStreamwise_Periodic_Temperature()); const auto InnerIter = config->GetInnerIter(); @@ -273,6 +277,7 @@ void CIncNSSolver::Compute_Streamwise_Periodic_Recovered_Values(CConfig *config, void CIncNSSolver::Viscous_Residual(unsigned long iEdge, CGeometry *geometry, CSolver **solver_container, CNumerics *numerics, CConfig *config) { + SU2_ZONE_SCOPED const bool energy_multicomponent = config->GetKind_FluidModel() == FLUID_MIXTURE && config->GetEnergy_Equation(); /*--- Contribution to heat flux due to enthalpy diffusion for multicomponent and reacting flows ---*/ @@ -287,6 +292,7 @@ void CIncNSSolver::Viscous_Residual(unsigned long iEdge, CGeometry *geometry, CS void CIncNSSolver::Compute_Enthalpy_Diffusion(unsigned long iEdge, CGeometry* geometry, CSolver** solver_container, CNumerics* numerics, const int n_species, const bool implicit) { + SU2_ZONE_SCOPED CVariable* speciesNodes = solver_container[SPECIES_SOL]->GetNodes(); /*--- Points in edge ---*/ @@ -356,6 +362,7 @@ void CIncNSSolver::Compute_Enthalpy_Diffusion(unsigned long iEdge, CGeometry* ge } unsigned long CIncNSSolver::SetPrimitive_Variables(CSolver **solver_container, const CConfig *config) { + SU2_ZONE_SCOPED unsigned long iPoint, nonPhysicalPoints = 0; su2double eddy_visc = 0.0, turb_ke = 0.0, DES_LengthScale = 0.0; @@ -409,6 +416,7 @@ unsigned long CIncNSSolver::SetPrimitive_Variables(CSolver **solver_container, c void CIncNSSolver::BC_Wall_Generic(const CGeometry *geometry, const CConfig *config, unsigned short val_marker, unsigned short kind_boundary) { + SU2_ZONE_SCOPED const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); const bool energy = config->GetEnergy_Equation(); @@ -580,23 +588,27 @@ void CIncNSSolver::BC_Wall_Generic(const CGeometry *geometry, const CConfig *con void CIncNSSolver::BC_HeatFlux_Wall(CGeometry *geometry, CSolver**, CNumerics*, CNumerics*, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED BC_Wall_Generic(geometry, config, val_marker, HEAT_FLUX); } void CIncNSSolver::BC_Isothermal_Wall(CGeometry *geometry, CSolver**, CNumerics*, CNumerics*, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED BC_Wall_Generic(geometry, config, val_marker, ISOTHERMAL); } void CIncNSSolver::BC_HeatTransfer_Wall(const CGeometry *geometry, const CConfig *config, const unsigned short val_marker) { + SU2_ZONE_SCOPED BC_Wall_Generic(geometry, config, val_marker, HEAT_TRANSFER); } void CIncNSSolver::BC_ConjugateHeat_Interface(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED const su2double Temperature_Ref = config->GetTemperature_Ref(); const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); @@ -704,6 +716,7 @@ void CIncNSSolver::BC_ConjugateHeat_Interface(CGeometry *geometry, CSolver **sol } void CIncNSSolver::SetTau_Wall_WF(CGeometry *geometry, CSolver **solver_container, const CConfig *config) { + SU2_ZONE_SCOPED /*--- The wall function implemented herein is based on Nichols and Nelson, AIAA J. v32 n6 2004. ---*/ unsigned long notConvergedCounter = 0; /*--- Counts the number of wall cells that are not converged ---*/ diff --git a/SU2_CFD/src/solvers/CMeshSolver.cpp b/SU2_CFD/src/solvers/CMeshSolver.cpp index 94792e9c1831..4d51042c2665 100644 --- a/SU2_CFD/src/solvers/CMeshSolver.cpp +++ b/SU2_CFD/src/solvers/CMeshSolver.cpp @@ -34,6 +34,7 @@ using namespace GeometryToolbox; CMeshSolver::CMeshSolver(CGeometry *geometry, CConfig *config) : CFEASolver(LINEAR_SOLVER_MODE::MESH_DEFORM) { + SU2_ZONE_SCOPED /*--- Initialize some booleans that determine the kind of problem at hand. ---*/ @@ -170,6 +171,7 @@ CMeshSolver::CMeshSolver(CGeometry *geometry, CConfig *config) : CFEASolver(LINE } void CMeshSolver::SetMinMaxVolume(CGeometry *geometry, CConfig *config, bool updated) { + SU2_ZONE_SCOPED /*--- This routine is for post processing, it does not need to be recorded. ---*/ const bool wasActive = AD::BeginPassive(); @@ -282,6 +284,7 @@ void CMeshSolver::SetMinMaxVolume(CGeometry *geometry, CConfig *config, bool upd } void CMeshSolver::SetWallDistance(CGeometry *geometry, CConfig *config) { + SU2_ZONE_SCOPED /*--- Initialize min and max distance ---*/ @@ -411,6 +414,7 @@ void CMeshSolver::SetWallDistance(CGeometry *geometry, CConfig *config) { } void CMeshSolver::SetMesh_Stiffness(CNumerics **numerics, CConfig *config){ + SU2_ZONE_SCOPED if (stiffness_set) return; @@ -468,6 +472,7 @@ void CMeshSolver::SetMesh_Stiffness(CNumerics **numerics, CConfig *config){ } void CMeshSolver::DeformMesh(CGeometry **geometry, CNumerics **numerics, CConfig *config){ + SU2_ZONE_SCOPED if (multizone) nodes->Set_BGSSolution_k(); @@ -535,6 +540,7 @@ void CMeshSolver::DeformMesh(CGeometry **geometry, CNumerics **numerics, CConfig } void CMeshSolver::UpdateGridCoord(CGeometry *geometry, const CConfig *config){ + SU2_ZONE_SCOPED /*--- Update the grid coordinates using the solution of the linear system ---*/ @@ -561,6 +567,7 @@ void CMeshSolver::UpdateGridCoord(CGeometry *geometry, const CConfig *config){ } void CMeshSolver::ComputeGridVelocity_FromBoundary(CGeometry **geometry, CNumerics **numerics, CConfig *config){ + SU2_ZONE_SCOPED if (config->GetnZone() == 1) SU2_MPI::Error("It is not possible to compute grid velocity from boundary velocity for single zone problems.\n" @@ -610,6 +617,7 @@ void CMeshSolver::ComputeGridVelocity_FromBoundary(CGeometry **geometry, CNumeri } void CMeshSolver::ComputeGridVelocity(CGeometry **geometry, const CConfig *config) const { + SU2_ZONE_SCOPED /*--- Compute the velocity of each node. ---*/ @@ -647,6 +655,7 @@ void CMeshSolver::ComputeGridVelocity(CGeometry **geometry, const CConfig *confi } void CMeshSolver::BC_Deforming(CGeometry *geometry, const CConfig *config, unsigned short val_marker, bool velocity){ + SU2_ZONE_SCOPED for (auto iVertex = 0ul; iVertex < geometry->nVertex[val_marker]; iVertex++) { const auto iPoint = geometry->vertex[val_marker][iVertex]->GetNode(); @@ -663,6 +672,7 @@ void CMeshSolver::BC_Deforming(CGeometry *geometry, const CConfig *config, unsig } void CMeshSolver::SetBoundaryDisplacements(CGeometry *geometry, CConfig *config, bool velocity_transfer){ + SU2_ZONE_SCOPED /* Surface motions are not applied during discrete adjoint runs as the corresponding * boundary displacements are computed when loading the primal solution, and it @@ -749,12 +759,14 @@ void CMeshSolver::SetBoundaryDisplacements(CGeometry *geometry, CConfig *config, } void CMeshSolver::SetDualTime_Mesh(){ + SU2_ZONE_SCOPED nodes->Set_Solution_time_n1(); nodes->Set_Solution_time_n(); } void CMeshSolver::LoadRestart(CGeometry **geometry, CSolver ***solver, CConfig *config, int val_iter, bool val_update_geo) { + SU2_ZONE_SCOPED /*--- Read the restart data from either an ASCII or binary SU2 file. ---*/ @@ -857,6 +869,7 @@ void CMeshSolver::LoadRestart(CGeometry **geometry, CSolver ***solver, CConfig * } void CMeshSolver::RestartOldGeometry(CGeometry *geometry, const CConfig *config) { + SU2_ZONE_SCOPED /*--- This function is intended for dual time simulations ---*/ @@ -954,6 +967,7 @@ void CMeshSolver::RestartOldGeometry(CGeometry *geometry, const CConfig *config) } void CMeshSolver::Surface_Pitching(CGeometry *geometry, CConfig *config, unsigned long iter) { + SU2_ZONE_SCOPED su2double deltaT, time_new, time_old, Lref; su2double Center[3] = {0.0}, VarCoord[3] = {0.0}, Omega[3] = {0.0}, Ampl[3] = {0.0}, Phase[3] = {0.0}; @@ -1087,6 +1101,7 @@ void CMeshSolver::Surface_Pitching(CGeometry *geometry, CConfig *config, unsigne } void CMeshSolver::Surface_Rotating(CGeometry *geometry, CConfig *config, unsigned long iter) { + SU2_ZONE_SCOPED su2double deltaT, time_new, time_old, Lref; su2double VarCoordAbs[3] = {0.0}; @@ -1268,6 +1283,7 @@ void CMeshSolver::Surface_Rotating(CGeometry *geometry, CConfig *config, unsigne } void CMeshSolver::Surface_Plunging(CGeometry *geometry, CConfig *config, unsigned long iter) { + SU2_ZONE_SCOPED su2double deltaT, time_new, time_old, Lref; su2double Center[3] = {0.0}, VarCoord[3] = {0.0}, Omega[3] = {0.0}, Ampl[3] = {0.0}; @@ -1395,6 +1411,7 @@ void CMeshSolver::Surface_Plunging(CGeometry *geometry, CConfig *config, unsigne } void CMeshSolver::Surface_Translating(CGeometry *geometry, CConfig *config, unsigned long iter) { + SU2_ZONE_SCOPED su2double deltaT, time_new, time_old; su2double Center[3] = {0.0}, VarCoord[3] = {0.0}; diff --git a/SU2_CFD/src/solvers/CNEMOEulerSolver.cpp b/SU2_CFD/src/solvers/CNEMOEulerSolver.cpp index 0d76dadf59e7..35ced04d3faa 100644 --- a/SU2_CFD/src/solvers/CNEMOEulerSolver.cpp +++ b/SU2_CFD/src/solvers/CNEMOEulerSolver.cpp @@ -35,6 +35,7 @@ CNEMOEulerSolver::CNEMOEulerSolver(CGeometry *geometry, CConfig *config, unsigned short iMesh, const bool navier_stokes) : CFVMFlowSolverBase(*geometry, *config) { + SU2_ZONE_SCOPED /*--- Based on the navier_stokes boolean, determine if this constructor is * being called by itself, or by its derived class CNEMONSSolver. ---*/ @@ -229,6 +230,7 @@ CNEMOEulerSolver::CNEMOEulerSolver(CGeometry *geometry, CConfig *config, } CNEMOEulerSolver::~CNEMOEulerSolver() { + SU2_ZONE_SCOPED delete node_infty; delete FluidModel; @@ -237,6 +239,7 @@ CNEMOEulerSolver::~CNEMOEulerSolver() { void CNEMOEulerSolver::CommonPreprocessing(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, unsigned short iRKStep, unsigned short RunTime_EqSystem, bool Output) { + SU2_ZONE_SCOPED const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); const bool center = (config->GetKind_ConvNumScheme_Flow() == SPACE_CENTERED); @@ -287,6 +290,7 @@ void CNEMOEulerSolver::Preprocessing(CGeometry *geometry, CSolver **solver_conta CConfig *config, unsigned short iMesh, unsigned short iRKStep, unsigned short RunTime_EqSystem, bool Output) { + SU2_ZONE_SCOPED const unsigned long InnerIter = config->GetInnerIter(); const bool muscl = config->GetMUSCL_Flow() && (iMesh == MESH_0); const bool limiter = (config->GetKind_SlopeLimit_Flow() != LIMITER::NONE) && (InnerIter <= config->GetLimiterIter()); @@ -315,6 +319,7 @@ void CNEMOEulerSolver::Preprocessing(CGeometry *geometry, CSolver **solver_conta } unsigned long CNEMOEulerSolver::SetPrimitive_Variables(CSolver **solver_container, CConfig *config, bool Output) { + SU2_ZONE_SCOPED unsigned long nonPhysicalPoints = 0; bool nonphysical = true; @@ -340,6 +345,7 @@ unsigned long CNEMOEulerSolver::SetPrimitive_Variables(CSolver **solver_containe void CNEMOEulerSolver::SetTime_Step(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, unsigned long Iteration) { + SU2_ZONE_SCOPED /*--- Define an object to compute the speed of sound. ---*/ struct SoundSpeed { @@ -390,6 +396,7 @@ void CNEMOEulerSolver::SetTime_Step(CGeometry *geometry, CSolver **solver_contai } void CNEMOEulerSolver::SetMax_Eigenvalue(CGeometry *geometry, CConfig *config) { + SU2_ZONE_SCOPED /*--- Define an object to compute the speed of sound. ---*/ struct SoundSpeed { @@ -411,6 +418,7 @@ void CNEMOEulerSolver::SetMax_Eigenvalue(CGeometry *geometry, CConfig *config) { void CNEMOEulerSolver::Centered_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh, unsigned short iRKStep) { + SU2_ZONE_SCOPED CNumerics* numerics = numerics_container[CONV_TERM]; @@ -460,6 +468,7 @@ void CNEMOEulerSolver::Centered_Residual(CGeometry *geometry, CSolver **solver_c void CNEMOEulerSolver::Upwind_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED /*--- Set booleans based on config settings ---*/ const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); @@ -641,6 +650,7 @@ void CNEMOEulerSolver::Upwind_Residual(CGeometry *geometry, CSolver **solver_con su2double CNEMOEulerSolver::ComputeConsistentExtrapolation(CNEMOGas *fluidmodel, unsigned short nSpecies, su2double *V, su2double* dPdU, su2double* dTdU, su2double* dTvedU, su2double* val_eves, su2double *val_Cvves) { + SU2_ZONE_SCOPED //NOTE: TODO - this doesnt compute Cvves/ dPdU,etc.yet @@ -672,6 +682,7 @@ su2double CNEMOEulerSolver::ComputeConsistentExtrapolation(CNEMOGas *fluidmodel, } void CNEMOEulerSolver::RecomputeConservativeVector(su2double *U, const su2double *V) const { + SU2_ZONE_SCOPED /*---Useful variables ---*/ vector rhos; @@ -708,6 +719,7 @@ void CNEMOEulerSolver::RecomputeConservativeVector(su2double *U, const su2double } bool CNEMOEulerSolver::CheckNonPhys(const su2double *V) const { + SU2_ZONE_SCOPED /*--- Set booleans ---*/ bool nonPhys = false; @@ -741,6 +753,7 @@ bool CNEMOEulerSolver::CheckNonPhys(const su2double *V) const { } void CNEMOEulerSolver::Source_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED /*--- Assign booleans ---*/ bool err = false; @@ -895,22 +908,26 @@ void CNEMOEulerSolver::Source_Residual(CGeometry *geometry, CSolver **solver_con void CNEMOEulerSolver::ExplicitRK_Iteration(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iRKStep) { + SU2_ZONE_SCOPED Explicit_Iteration(geometry, solver_container, config, iRKStep); } void CNEMOEulerSolver::ClassicalRK4_Iteration(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iRKStep) { + SU2_ZONE_SCOPED Explicit_Iteration(geometry, solver_container, config, iRKStep); } void CNEMOEulerSolver::ExplicitEuler_Iteration(CGeometry *geometry, CSolver **solver_container, CConfig *config) { + SU2_ZONE_SCOPED Explicit_Iteration(geometry, solver_container, config, 0); } void CNEMOEulerSolver::PrepareImplicitIteration(CGeometry *geometry, CSolver**, CConfig *config) { + SU2_ZONE_SCOPED struct DummyPrec { const bool active = false; @@ -921,11 +938,13 @@ void CNEMOEulerSolver::PrepareImplicitIteration(CGeometry *geometry, CSolver**, } void CNEMOEulerSolver::CompleteImplicitIteration(CGeometry *geometry, CSolver**, CConfig *config) { + SU2_ZONE_SCOPED CompleteImplicitIteration_impl(geometry, config); } void CNEMOEulerSolver::ComputeUnderRelaxationFactor(const CConfig *config) { + SU2_ZONE_SCOPED /* Loop over the solution update given by relaxing the linear system for this nonlinear iteration. */ @@ -980,6 +999,7 @@ void CNEMOEulerSolver::ComputeUnderRelaxationFactor(const CConfig *config) { } void CNEMOEulerSolver::SetNondimensionalization(CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED su2double Temperature_FreeStream = 0.0, Temperature_ve_FreeStream = 0.0, Mach2Vel_FreeStream = 0.0, @@ -1385,6 +1405,7 @@ void CNEMOEulerSolver::SetNondimensionalization(CConfig *config, unsigned short } void CNEMOEulerSolver::SetReferenceValues(const CConfig& config) { + SU2_ZONE_SCOPED DynamicPressureRef = 0.5 * Density_Inf * GeometryToolbox::SquaredNorm(nDim, Velocity_Inf); @@ -1398,6 +1419,7 @@ void CNEMOEulerSolver::SetReferenceValues(const CConfig& config) { void CNEMOEulerSolver::BC_Sym_Plane(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED /*--- Allocate the necessary vector structures ---*/ su2double Normal[MAXNDIM] = {0.0}, UnitNormal[MAXNDIM] = {0.0}; @@ -1499,6 +1521,7 @@ void CNEMOEulerSolver::BC_Far_Field(CGeometry *geometry, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED /*--- Allocate arrays ---*/ su2double Normal[MAXNDIM] = {0.0}; @@ -1612,6 +1635,7 @@ void CNEMOEulerSolver::BC_Far_Field(CGeometry *geometry, void CNEMOEulerSolver::BC_Inlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED SU2_MPI::Error("BC_INLET: Not operational in NEMO.", CURRENT_FUNCTION); unsigned short RHO_INDEX, nSpecies; @@ -1893,6 +1917,7 @@ void CNEMOEulerSolver::BC_Inlet(CGeometry *geometry, CSolver **solver_container, void CNEMOEulerSolver::BC_Outlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED su2double UnitNormal[MAXNDIM] = {0.0}; vector rhos; @@ -2145,6 +2170,7 @@ void CNEMOEulerSolver::BC_Outlet(CGeometry *geometry, CSolver **solver_container void CNEMOEulerSolver::BC_Supersonic_Inlet( CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED /*--- Supersonic inlet flow: there are no outgoing characteristics, so all flow variables can be imposed at the inlet. @@ -2289,6 +2315,7 @@ void CNEMOEulerSolver::BC_Supersonic_Inlet( void CNEMOEulerSolver::BC_Supersonic_Outlet( CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED /*--- Supersonic outlet flow: there are no ingoing characteristics, so all flow variables can should be interpolated from the domain. ---*/ @@ -2346,6 +2373,7 @@ void CNEMOEulerSolver::BC_Supersonic_Outlet( } void CNEMOEulerSolver::SetPressureDiffusionSensor(CGeometry *geometry, CConfig *config) { + SU2_ZONE_SCOPED const auto P_INDEX = nodes->GetPIndex(); diff --git a/SU2_CFD/src/solvers/CNEMONSSolver.cpp b/SU2_CFD/src/solvers/CNEMONSSolver.cpp index 44ede662420f..3d368ca52f62 100644 --- a/SU2_CFD/src/solvers/CNEMONSSolver.cpp +++ b/SU2_CFD/src/solvers/CNEMONSSolver.cpp @@ -37,6 +37,7 @@ template class CFVMFlowSolverBase CNEMONSSolver::CNEMONSSolver(CGeometry *geometry, CConfig *config, unsigned short iMesh) : CNEMOEulerSolver(geometry, config, iMesh, true) { + SU2_ZONE_SCOPED Viscosity_Inf = config->GetViscosity_FreeStreamND(); Prandtl_Lam = config->GetPrandtl_Lam(); @@ -56,6 +57,7 @@ CNEMONSSolver::CNEMONSSolver(CGeometry *geometry, CConfig *config, unsigned shor void CNEMONSSolver::Preprocessing(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, unsigned short iRKStep, unsigned short RunTime_EqSystem, bool Output) { + SU2_ZONE_SCOPED const auto InnerIter = config->GetInnerIter(); const bool limiter = (config->GetKind_SlopeLimit_Flow() != LIMITER::NONE) && (InnerIter <= config->GetLimiterIter()); @@ -108,6 +110,7 @@ void CNEMONSSolver::Preprocessing(CGeometry *geometry, CSolver **solver_containe } unsigned long CNEMONSSolver::SetPrimitive_Variables(CSolver **solver_container,CConfig *config, bool Output) { + SU2_ZONE_SCOPED /*--- Number of non-physical points, local to the thread, needs * further reduction if function is called in parallel ---*/ @@ -144,6 +147,7 @@ unsigned long CNEMONSSolver::SetPrimitive_Variables(CSolver **solver_container,C } void CNEMONSSolver::SetPrimitive_Gradient_GG(CGeometry *geometry, const CConfig *config, bool reconstruction) { + SU2_ZONE_SCOPED auto& gradient = reconstruction ? nodes->GetGradient_Reconstruction() : nodes->GetGradient_Primitive(); const auto comm = reconstruction? MPI_QUANTITIES::PRIMITIVE_GRAD_REC : MPI_QUANTITIES::PRIMITIVE_GRADIENT; @@ -174,6 +178,7 @@ void CNEMONSSolver::Viscous_Residual(CGeometry *geometry, CNumerics **numerics_container, CConfig *config, unsigned short iMesh, unsigned short iRKStep) { + SU2_ZONE_SCOPED const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); CNumerics* numerics = numerics_container[VISC_TERM]; @@ -245,6 +250,7 @@ void CNEMONSSolver::BC_HeatFluxNonCatalytic_Wall(CGeometry *geometry, CNumerics *sour_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED /*--- Local variables ---*/ const auto Marker_Tag = config->GetMarker_All_TagBound(val_marker); @@ -327,6 +333,7 @@ void CNEMONSSolver::BC_HeatFlux_Wall(CGeometry *geometry, CNumerics *sour_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED bool catalytic = config->GetCatalytic_Wall(val_marker); @@ -344,6 +351,7 @@ void CNEMONSSolver::BC_HeatFluxCatalytic_Wall(CGeometry *geometry, CNumerics *sour_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED SU2_MPI::Error("BC_HEATFLUX with catalytic wall: Not operational in NEMO.", CURRENT_FUNCTION); //TODO: SCALE WITH EDDY VISC @@ -508,6 +516,7 @@ void CNEMONSSolver::BC_HeatFluxCatalytic_Wall(CGeometry *geometry, void CNEMONSSolver::BC_Isothermal_Wall(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *sour_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED bool catalytic = config->GetCatalytic_Wall(val_marker); @@ -525,6 +534,7 @@ void CNEMONSSolver::BC_IsothermalNonCatalytic_Wall(CGeometry *geometry, CNumerics *sour_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); const bool ionization = config->GetIonization(); @@ -649,6 +659,7 @@ void CNEMONSSolver::BC_IsothermalCatalytic_Wall(CGeometry *geometry, CNumerics *sour_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED /*--- Call standard isothermal BC to apply no-slip and energy b.c.'s ---*/ BC_IsothermalNonCatalytic_Wall(geometry, solver_container, conv_numerics, @@ -844,6 +855,7 @@ void CNEMONSSolver::BC_Smoluchowski_Maxwell(CGeometry *geometry, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED const bool ionization = config->GetIonization(); @@ -990,6 +1002,7 @@ void CNEMONSSolver::BC_Smoluchowski_Maxwell(CGeometry *geometry, } void CNEMONSSolver::SetTau_Wall_WF(CGeometry *geometry, CSolver **solver_container, const CConfig *config) { + SU2_ZONE_SCOPED SU2_MPI::Error("Wall Functions not yet operational in NEMO.", CURRENT_FUNCTION); } diff --git a/SU2_CFD/src/solvers/CNSSolver.cpp b/SU2_CFD/src/solvers/CNSSolver.cpp index bb2dfc268d21..83bbca46256f 100644 --- a/SU2_CFD/src/solvers/CNSSolver.cpp +++ b/SU2_CFD/src/solvers/CNSSolver.cpp @@ -38,6 +38,7 @@ template class CFVMFlowSolverBase; CNSSolver::CNSSolver(CGeometry *geometry, CConfig *config, unsigned short iMesh) : CEulerSolver(geometry, config, iMesh, true) { + SU2_ZONE_SCOPED /*--- This constructor only allocates/inits what is extra to CEulerSolver. ---*/ @@ -69,6 +70,7 @@ CNSSolver::CNSSolver(CGeometry *geometry, CConfig *config, unsigned short iMesh) void CNSSolver::Preprocessing(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, unsigned short iRKStep, unsigned short RunTime_EqSystem, bool Output) { + SU2_ZONE_SCOPED const auto InnerIter = config->GetInnerIter(); const bool muscl = config->GetMUSCL_Flow() && (iMesh == MESH_0); @@ -126,6 +128,7 @@ void CNSSolver::Preprocessing(CGeometry *geometry, CSolver **solver_container, C } unsigned long CNSSolver::SetPrimitive_Variables(CSolver **solver_container, const CConfig *config) { + SU2_ZONE_SCOPED /*--- Number of non-physical points, local to the thread, needs * further reduction if function is called in parallel ---*/ @@ -172,11 +175,13 @@ unsigned long CNSSolver::SetPrimitive_Variables(CSolver **solver_container, cons void CNSSolver::Viscous_Residual(unsigned long iEdge, CGeometry *geometry, CSolver **solver_container, CNumerics *numerics, CConfig *config) { + SU2_ZONE_SCOPED Viscous_Residual_impl(iEdge, geometry, solver_container, numerics, config); } void CNSSolver::Buffet_Monitoring(const CGeometry *geometry, const CConfig *config) { + SU2_ZONE_SCOPED unsigned long iVertex, iMarker; unsigned short iMarker_Monitoring; @@ -265,6 +270,7 @@ void CNSSolver::Buffet_Monitoring(const CGeometry *geometry, const CConfig *conf } void CNSSolver::Evaluate_ObjFunc(const CConfig *config, CSolver**) { + SU2_ZONE_SCOPED unsigned short iMarker_Monitoring, Kind_ObjFunc; su2double Weight_ObjFunc; @@ -292,6 +298,7 @@ void CNSSolver::Evaluate_ObjFunc(const CConfig *config, CSolver**) { } void CNSSolver::SetRoe_Dissipation(CGeometry *geometry, CConfig *config){ + SU2_ZONE_SCOPED const unsigned short kind_roe_dissipation = config->GetKind_RoeLowDiss(); @@ -320,6 +327,7 @@ void CNSSolver::AddDynamicGridResidualContribution(unsigned long iPoint, unsigne su2double Area, const su2double* GridVel, su2double** Jacobian_i, su2double& Res_Conv, su2double& Res_Visc) const { + SU2_ZONE_SCOPED su2double ProjGridVel = Area * GeometryToolbox::DotProduct(nDim, GridVel, UnitNormal); @@ -411,17 +419,20 @@ void CNSSolver::AddDynamicGridResidualContribution(unsigned long iPoint, unsigne void CNSSolver::BC_HeatFlux_Wall(CGeometry *geometry, CSolver**, CNumerics*, CNumerics*, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED BC_HeatFlux_Wall_Generic(geometry, config, val_marker, HEAT_FLUX); } void CNSSolver::BC_HeatTransfer_Wall(const CGeometry *geometry, const CConfig *config, const unsigned short val_marker) { + SU2_ZONE_SCOPED BC_HeatFlux_Wall_Generic(geometry, config, val_marker, HEAT_TRANSFER); } void CNSSolver::BC_HeatFlux_Wall_Generic(const CGeometry* geometry, const CConfig* config, unsigned short val_marker, unsigned short kind_boundary) { + SU2_ZONE_SCOPED /*--- Identify the boundary by string name and get the specified wall heat flux from config as well as the wall function treatment. ---*/ @@ -580,6 +591,7 @@ su2double CNSSolver::GetCHTWallTemperature(const CConfig* config, unsigned short unsigned long iVertex, su2double thermal_conductivity, su2double dist_ij, su2double There, su2double Temperature_Ref) const { + SU2_ZONE_SCOPED /*--- Compute the normal gradient in temperature using Twall ---*/ @@ -614,6 +626,7 @@ su2double CNSSolver::GetCHTWallTemperature(const CConfig* config, unsigned short void CNSSolver::BC_Isothermal_Wall_Generic(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker, bool cht_mode) { + SU2_ZONE_SCOPED const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); const su2double Temperature_Ref = config->GetTemperature_Ref(); @@ -769,15 +782,18 @@ void CNSSolver::BC_Isothermal_Wall_Generic(CGeometry *geometry, CSolver **solver void CNSSolver::BC_Isothermal_Wall(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED BC_Isothermal_Wall_Generic(geometry, solver_container, conv_numerics, visc_numerics, config, val_marker); } void CNSSolver::BC_ConjugateHeat_Interface(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED BC_Isothermal_Wall_Generic(geometry, solver_container, conv_numerics, nullptr, config, val_marker, true); } void CNSSolver::SetTau_Wall_WF(CGeometry *geometry, CSolver **solver_container, const CConfig *config) { + SU2_ZONE_SCOPED /*--- The wall function implemented herein is based on Nichols and Nelson, AIAA J. v32 n6 2004. ---*/ diff --git a/SU2_CFD/src/solvers/CRadP1Solver.cpp b/SU2_CFD/src/solvers/CRadP1Solver.cpp index dacf863afc13..7ec855629842 100644 --- a/SU2_CFD/src/solvers/CRadP1Solver.cpp +++ b/SU2_CFD/src/solvers/CRadP1Solver.cpp @@ -30,10 +30,12 @@ #include "../../../Common/include/toolboxes/geometry_toolbox.hpp" CRadP1Solver::CRadP1Solver() : CRadSolver() { + SU2_ZONE_SCOPED } CRadP1Solver::CRadP1Solver(CGeometry* geometry, CConfig *config) : CRadSolver(geometry, config) { + SU2_ZONE_SCOPED unsigned short iVar; unsigned short direct_diff = config->GetDirectDiff(); @@ -131,12 +133,14 @@ CRadP1Solver::CRadP1Solver(CGeometry* geometry, CConfig *config) : CRadSolver(ge } CRadP1Solver::~CRadP1Solver() { + SU2_ZONE_SCOPED delete nodes; } void CRadP1Solver::Preprocessing(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, unsigned short iRKStep, unsigned short RunTime_EqSystem, bool Output) { + SU2_ZONE_SCOPED unsigned long iPoint; @@ -160,6 +164,7 @@ void CRadP1Solver::Preprocessing(CGeometry *geometry, CSolver **solver_container } void CRadP1Solver::Postprocessing(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED unsigned long iPoint; su2double Energy, Temperature; @@ -189,6 +194,7 @@ void CRadP1Solver::Postprocessing(CGeometry *geometry, CSolver **solver_containe void CRadP1Solver::Viscous_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh, unsigned short iRKStep) { + SU2_ZONE_SCOPED CNumerics* numerics = numerics_container[VISC_TERM]; @@ -228,6 +234,7 @@ void CRadP1Solver::Viscous_Residual(CGeometry *geometry, CSolver **solver_contai void CRadP1Solver::Source_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED CNumerics* numerics = numerics_container[SOURCE_FIRST_TERM]; @@ -265,6 +272,7 @@ void CRadP1Solver::Source_Residual(CGeometry *geometry, CSolver **solver_contain void CRadP1Solver::BC_Isothermal_Wall(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED unsigned short iVar, jVar; unsigned long iVertex, iPoint; @@ -339,6 +347,7 @@ void CRadP1Solver::BC_Isothermal_Wall(CGeometry *geometry, CSolver **solver_cont } void CRadP1Solver::BC_Far_Field(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED unsigned short iVar, jVar; unsigned long iVertex, iPoint; @@ -414,6 +423,7 @@ void CRadP1Solver::BC_Far_Field(CGeometry *geometry, CSolver **solver_container, void CRadP1Solver::BC_Marshak(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED unsigned short iVar, jVar; unsigned long iVertex, iPoint; @@ -489,6 +499,7 @@ void CRadP1Solver::BC_Marshak(CGeometry *geometry, CSolver **solver_container, C void CRadP1Solver::ImplicitEuler_Iteration(CGeometry *geometry, CSolver **solver_container, CConfig *config) { + SU2_ZONE_SCOPED unsigned short iVar; unsigned long iPoint, IterLinSol = 0; @@ -566,6 +577,7 @@ void CRadP1Solver::ImplicitEuler_Iteration(CGeometry *geometry, CSolver **solver void CRadP1Solver::SetTime_Step(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, unsigned long Iteration) { + SU2_ZONE_SCOPED unsigned short iMarker; unsigned long iEdge, iVertex, iPoint = 0, jPoint = 0; diff --git a/SU2_CFD/src/solvers/CRadSolver.cpp b/SU2_CFD/src/solvers/CRadSolver.cpp index 9735b7c78074..0a42fba6d6f2 100644 --- a/SU2_CFD/src/solvers/CRadSolver.cpp +++ b/SU2_CFD/src/solvers/CRadSolver.cpp @@ -29,10 +29,12 @@ #include "../../include/variables/CRadVariable.hpp" CRadSolver::CRadSolver() : CSolver() { + SU2_ZONE_SCOPED } CRadSolver::CRadSolver(CGeometry* geometry, CConfig *config) : CSolver() { + SU2_ZONE_SCOPED Absorption_Coeff = config->GetAbsorption_Coeff(); Scattering_Coeff = config->GetScattering_Coeff(); @@ -42,6 +44,7 @@ CRadSolver::CRadSolver(CGeometry* geometry, CConfig *config) : CSolver() { } void CRadSolver::SetVolumetricHeatSource(CGeometry *geometry, CConfig *config) { + SU2_ZONE_SCOPED unsigned long iPoint; unsigned short iDim; @@ -72,6 +75,7 @@ void CRadSolver::SetVolumetricHeatSource(CGeometry *geometry, CConfig *config) { } void CRadSolver::LoadRestart(CGeometry **geometry, CSolver ***solver, CConfig *config, int val_iter, bool val_update_geo) { + SU2_ZONE_SCOPED /*--- Restart the solution from file information ---*/ diff --git a/SU2_CFD/src/solvers/CSolver.cpp b/SU2_CFD/src/solvers/CSolver.cpp index 0ff0f125c1a1..5a5bf0caaffb 100644 --- a/SU2_CFD/src/solvers/CSolver.cpp +++ b/SU2_CFD/src/solvers/CSolver.cpp @@ -51,6 +51,7 @@ CSolver::CSolver(LINEAR_SOLVER_MODE linear_solver_mode) : System(linear_solver_mode) { + SU2_ZONE_SCOPED rank = SU2_MPI::GetRank(); size = SU2_MPI::GetSize(); @@ -120,6 +121,7 @@ CSolver::CSolver(LINEAR_SOLVER_MODE linear_solver_mode) : System(linear_solver_m } CSolver::~CSolver() { + SU2_ZONE_SCOPED unsigned short iVar; @@ -194,6 +196,7 @@ void CSolver::GetPeriodicCommCountAndType(const CConfig* config, unsigned short &MPI_TYPE, unsigned short &ICOUNT, unsigned short &JCOUNT) const { + SU2_ZONE_SCOPED switch (commType) { case PERIODIC_VOLUME: COUNT_PER_POINT = 1; @@ -336,6 +339,7 @@ void CSolver::InitiatePeriodicComms(CGeometry *geometry, const CConfig *config, unsigned short val_periodic_index, unsigned short commType) { + SU2_ZONE_SCOPED /*--- Check for dummy communication. ---*/ @@ -999,6 +1003,7 @@ void CSolver::CompletePeriodicComms(CGeometry *geometry, const CConfig *config, unsigned short val_periodic_index, unsigned short commType) { + SU2_ZONE_SCOPED /*--- Check for dummy communication. ---*/ @@ -1331,6 +1336,7 @@ void CSolver::GetCommCountAndType(const CConfig* config, MPI_QUANTITIES commType, unsigned short &COUNT_PER_POINT, unsigned short &MPI_TYPE) const { + SU2_ZONE_SCOPED switch (commType) { case MPI_QUANTITIES::SOLUTION: case MPI_QUANTITIES::SOLUTION_OLD: @@ -1412,6 +1418,7 @@ namespace CommHelpers { void CSolver::InitiateComms(CGeometry *geometry, const CConfig *config, MPI_QUANTITIES commType) { + SU2_ZONE_SCOPED /*--- Local variables ---*/ @@ -1554,6 +1561,7 @@ void CSolver::InitiateComms(CGeometry *geometry, void CSolver::CompleteComms(CGeometry *geometry, const CConfig *config, MPI_QUANTITIES commType) { + SU2_ZONE_SCOPED /*--- Local variables ---*/ @@ -1703,6 +1711,7 @@ void CSolver::CompleteComms(CGeometry *geometry, } void CSolver::ResetCFLAdapt() { + SU2_ZONE_SCOPED NonLinRes_Series.clear(); Old_Func = 0; New_Func = 0; @@ -1713,6 +1722,7 @@ void CSolver::ResetCFLAdapt() { void CSolver::AdaptCFLNumber(CGeometry **geometry, CSolver ***solver_container, CConfig *config) { + SU2_ZONE_SCOPED /* Adapt the CFL number on all multigrid levels using an exponential progression with under-relaxation approach. */ @@ -1951,6 +1961,7 @@ void CSolver::AdaptCFLNumber(CGeometry **geometry, } void CSolver::SetResidual_RMS(const CGeometry *geometry, const CConfig *config) { + SU2_ZONE_SCOPED if (geometry->GetMGLevel() != MESH_0) return; @@ -2012,6 +2023,7 @@ void CSolver::SetResidual_RMS(const CGeometry *geometry, const CConfig *config) } void CSolver::SetResidual_BGS(const CGeometry *geometry, const CConfig *config) { + SU2_ZONE_SCOPED if (geometry->GetMGLevel() != MESH_0) return; @@ -2054,6 +2066,7 @@ void CSolver::SetResidual_BGS(const CGeometry *geometry, const CConfig *config) } void CSolver::SetRotatingFrame_GCL(CGeometry *geometry, const CConfig *config) { + SU2_ZONE_SCOPED /*--- Loop interior points ---*/ @@ -2116,6 +2129,7 @@ void CSolver::SetRotatingFrame_GCL(CGeometry *geometry, const CConfig *config) { } void CSolver::SetAuxVar_Gradient_GG(CGeometry *geometry, const CConfig *config) { + SU2_ZONE_SCOPED const auto& solution = base_nodes->GetAuxVar(); auto& gradient = base_nodes->GetAuxVarGradient(); @@ -2125,6 +2139,7 @@ void CSolver::SetAuxVar_Gradient_GG(CGeometry *geometry, const CConfig *config) } void CSolver::SetAuxVar_Gradient_LS(CGeometry *geometry, const CConfig *config) { + SU2_ZONE_SCOPED bool weighted = true; const auto& solution = base_nodes->GetAuxVar(); @@ -2136,6 +2151,7 @@ void CSolver::SetAuxVar_Gradient_LS(CGeometry *geometry, const CConfig *config) } void CSolver::SetSolution_Gradient_GG(CGeometry *geometry, const CConfig *config, short idxVel, bool reconstruction) { + SU2_ZONE_SCOPED const auto& solution = base_nodes->GetSolution(); auto& gradient = reconstruction? base_nodes->GetGradient_Reconstruction() : base_nodes->GetGradient(); @@ -2145,6 +2161,7 @@ void CSolver::SetSolution_Gradient_GG(CGeometry *geometry, const CConfig *config } void CSolver::SetSolution_Gradient_LS(CGeometry *geometry, const CConfig *config, short idxVel, bool reconstruction) { + SU2_ZONE_SCOPED /*--- Set a flag for unweighted or weighted least-squares. ---*/ bool weighted; @@ -2168,6 +2185,7 @@ void CSolver::SetSolution_Gradient_LS(CGeometry *geometry, const CConfig *config } void CSolver::SetUndivided_Laplacian(CGeometry *geometry, const CConfig *config) { + SU2_ZONE_SCOPED /*--- Loop domain points. ---*/ @@ -2213,6 +2231,7 @@ void CSolver::SetUndivided_Laplacian(CGeometry *geometry, const CConfig *config) } void CSolver::Add_External_To_Solution() { + SU2_ZONE_SCOPED for (unsigned long iPoint = 0; iPoint < nPoint; iPoint++) { base_nodes->AddSolution(iPoint, base_nodes->Get_External(iPoint)); } @@ -2221,6 +2240,7 @@ void CSolver::Add_External_To_Solution() { } void CSolver::Add_Solution_To_External() { + SU2_ZONE_SCOPED for (unsigned long iPoint = 0; iPoint < nPoint; iPoint++) { base_nodes->Add_External(iPoint, base_nodes->GetSolution(iPoint)); } @@ -2229,6 +2249,7 @@ void CSolver::Add_Solution_To_External() { } void CSolver::Update_Cross_Term(CConfig *config, su2passivematrix &cross_term) { + SU2_ZONE_SCOPED /*--- This method is for discrete adjoint solvers and it is used in multi-physics * contexts, "cross_term" is the old value, the new one is in "Solution". @@ -2255,6 +2276,7 @@ void CSolver::Update_Cross_Term(CConfig *config, su2passivematrix &cross_term) { } void CSolver::SetGridVel_Gradient(CGeometry *geometry, const CConfig *config) const { + SU2_ZONE_SCOPED /// TODO: No comms needed for this gradient? The Rmatrix should be allocated somewhere. @@ -2267,6 +2289,7 @@ void CSolver::SetGridVel_Gradient(CGeometry *geometry, const CConfig *config) co } void CSolver::SetSolution_Limiter(CGeometry *geometry, const CConfig *config) { + SU2_ZONE_SCOPED const auto kindLimiter = config->GetKind_SlopeLimit(); const auto umusclKappa = config->GetMUSCL_Kappa(); @@ -2281,6 +2304,7 @@ void CSolver::SetSolution_Limiter(CGeometry *geometry, const CConfig *config) { } void CSolver::Gauss_Elimination(su2double** A, su2double* rhs, unsigned short nVar) { + SU2_ZONE_SCOPED short iVar, jVar, kVar; su2double weight, aux; @@ -2315,6 +2339,7 @@ void CSolver::Gauss_Elimination(su2double** A, su2double* rhs, unsigned short nV } void CSolver::Aeroelastic(CSurfaceMovement *surface_movement, CGeometry *geometry, CConfig *config, unsigned long TimeIter) { + SU2_ZONE_SCOPED /*--- Variables used for Aeroelastic case ---*/ @@ -2395,6 +2420,7 @@ void CSolver::Aeroelastic(CSurfaceMovement *surface_movement, CGeometry *geometr } void CSolver::SetUpTypicalSectionWingModel(vector >& Phi, vector& omega, CConfig *config) { + SU2_ZONE_SCOPED /*--- Retrieve values from the config file ---*/ su2double w_h = config->GetAeroelastic_Frequency_Plunge(); @@ -2473,6 +2499,7 @@ void CSolver::SetUpTypicalSectionWingModel(vector >& Phi, vect } void CSolver::SolveTypicalSectionWingModel(CGeometry *geometry, su2double Cl, su2double Cm, CConfig *config, unsigned short iMarker, vector& displacements) { + SU2_ZONE_SCOPED /*--- The aeroelastic model solved in this routine is the typical section wing model The details of the implementation are similar to those found in J.J. Alonso @@ -2595,6 +2622,7 @@ void CSolver::SolveTypicalSectionWingModel(CGeometry *geometry, su2double Cl, su } void CSolver::Restart_OldGeometry(CGeometry *geometry, CConfig *config) const { + SU2_ZONE_SCOPED BEGIN_SU2_OMP_SAFE_GLOBAL_ACCESS { @@ -2754,6 +2782,7 @@ void CSolver::Restart_OldGeometry(CGeometry *geometry, CConfig *config) const { } void CSolver::Read_SU2_Restart_ASCII(CGeometry *geometry, const CConfig *config, string val_filename) { + SU2_ZONE_SCOPED ifstream restart_file; string text_line, Tag; @@ -2916,6 +2945,7 @@ void CSolver::Read_SU2_Restart_ASCII(CGeometry *geometry, const CConfig *config, } void CSolver::Read_SU2_Restart_Binary(CGeometry *geometry, const CConfig *config, string val_filename) { + SU2_ZONE_SCOPED char str_buf[CGNS_STRING_SIZE], fname[100]; strcpy(fname, val_filename.c_str()); @@ -3147,6 +3177,7 @@ void CSolver::Read_SU2_Restart_Binary(CGeometry *geometry, const CConfig *config } void CSolver::InterpolateRestartData(const CGeometry *geometry, const CConfig *config) { + SU2_ZONE_SCOPED if (geometry->GetGlobal_nPointDomain() == 0) return; @@ -3351,6 +3382,7 @@ void CSolver::InterpolateRestartData(const CGeometry *geometry, const CConfig *c } void CSolver::Read_SU2_Restart_Metadata(CGeometry *geometry, CConfig *config, bool adjoint, const string& val_filename) const { + SU2_ZONE_SCOPED su2double AoA_ = config->GetAoA(); su2double AoS_ = config->GetAoS(); @@ -3560,6 +3592,7 @@ void CSolver::LoadInletProfile(CGeometry **geometry, int val_iter, unsigned short val_kind_solver, unsigned short val_kind_marker) const { + SU2_ZONE_SCOPED /*-- First, set the solver and marker kind for the particular problem at hand. Note that, in the future, these routines can be used for any solver @@ -4012,6 +4045,7 @@ void CSolver::LoadInletProfile(CGeometry **geometry, void CSolver::ComputeVertexTractions(CGeometry *geometry, const CConfig *config){ + SU2_ZONE_SCOPED const bool viscous_flow = config->GetViscous(); const su2double Pressure_Inf = config->GetPressure_FreeStreamND(); @@ -4063,6 +4097,7 @@ void CSolver::ComputeVertexTractions(CGeometry *geometry, const CConfig *config) } void CSolver::RegisterVertexTractions(CGeometry *geometry, const CConfig *config){ + SU2_ZONE_SCOPED unsigned short iMarker, iDim; unsigned long iVertex, iPoint; @@ -4094,6 +4129,7 @@ void CSolver::RegisterVertexTractions(CGeometry *geometry, const CConfig *config } void CSolver::SetVertexTractionsAdjoint(CGeometry *geometry, const CConfig *config){ + SU2_ZONE_SCOPED unsigned short iMarker, iDim; unsigned long iVertex, iPoint; @@ -4130,6 +4166,7 @@ void CSolver::SetVertexTractionsAdjoint(CGeometry *geometry, const CConfig *conf void CSolver::SetVerificationSolution(unsigned short nDim, unsigned short nVar, CConfig *config) { + SU2_ZONE_SCOPED /*--- Determine the verification solution to be set and allocate memory for the corresponding class. ---*/ @@ -4165,6 +4202,7 @@ void CSolver::SetVerificationSolution(unsigned short nDim, } void CSolver::ComputeResidual_Multizone(const CGeometry *geometry, const CConfig *config){ + SU2_ZONE_SCOPED SU2_OMP_PARALLEL { @@ -4214,6 +4252,7 @@ void CSolver::ComputeResidual_Multizone(const CGeometry *geometry, const CConfig } void CSolver::BasicLoadRestart(CGeometry *geometry, const CConfig *config, const string& filename, unsigned long skipVars) { + SU2_ZONE_SCOPED /*--- Read and store the restart metadata. ---*/ @@ -4260,6 +4299,7 @@ void CSolver::BasicLoadRestart(CGeometry *geometry, const CConfig *config, const } void CSolver::SavelibROM(CGeometry *geometry, CConfig *config, bool converged) { + SU2_ZONE_SCOPED #if defined(HAVE_LIBROM) && !defined(CODI_FORWARD_TYPE) && !defined(CODI_REVERSE_TYPE) const bool unsteady = config->GetTime_Domain(); diff --git a/SU2_CFD/src/solvers/CSpeciesFlameletSolver.cpp b/SU2_CFD/src/solvers/CSpeciesFlameletSolver.cpp index d2143ba8d1d8..de8d5e618531 100644 --- a/SU2_CFD/src/solvers/CSpeciesFlameletSolver.cpp +++ b/SU2_CFD/src/solvers/CSpeciesFlameletSolver.cpp @@ -36,6 +36,7 @@ CSpeciesFlameletSolver::CSpeciesFlameletSolver(CGeometry* geometry, CConfig* config, unsigned short iMesh) : CSpeciesSolver(geometry, config, true) { + SU2_ZONE_SCOPED /*--- Retrieve options from config. ---*/ flamelet_config_options = config->GetFlameletParsedOptions(); @@ -70,6 +71,7 @@ CSpeciesFlameletSolver::CSpeciesFlameletSolver(CGeometry* geometry, CConfig* con void CSpeciesFlameletSolver::Preprocessing(CGeometry* geometry, CSolver** solver_container, CConfig* config, unsigned short iMesh, unsigned short iRKStep, unsigned short RunTime_EqSystem, bool Output) { + SU2_ZONE_SCOPED unsigned long n_not_in_domain_local = 0, n_not_in_domain_global = 0; vector scalars_vector(nVar); unsigned long spark_iter_start, spark_duration; @@ -152,6 +154,7 @@ void CSpeciesFlameletSolver::Preprocessing(CGeometry* geometry, CSolver** solver void CSpeciesFlameletSolver::SetInitialCondition(CGeometry** geometry, CSolver*** solver_container, CConfig* config, unsigned long ExtIter) { + SU2_ZONE_SCOPED const bool restart = (config->GetRestart() || config->GetRestart_Flow()); bool flame_front_ignition = (flamelet_config_options.ignition_method == FLAMELET_INIT_TYPE::FLAME_FRONT); @@ -320,6 +323,7 @@ void CSpeciesFlameletSolver::SetInitialCondition(CGeometry** geometry, CSolver** } void CSpeciesFlameletSolver::SetPreconditioner(CGeometry* geometry, CSolver** solver_container, CConfig* config) { + SU2_ZONE_SCOPED const bool variable_density = (config->GetVariable_Density_Model()); const bool implicit = (config->GetKind_TimeIntScheme_Flow() == EULER_IMPLICIT); @@ -383,6 +387,7 @@ void CSpeciesFlameletSolver::SetPreconditioner(CGeometry* geometry, CSolver** so void CSpeciesFlameletSolver::Source_Residual(CGeometry* geometry, CSolver** solver_container, CNumerics** numerics_container, CConfig* config, unsigned short iMesh) { + SU2_ZONE_SCOPED SU2_OMP_FOR_STAT(omp_chunk_size) for (auto i_point = 0u; i_point < nPointDomain; i_point++) { @@ -400,6 +405,7 @@ void CSpeciesFlameletSolver::Source_Residual(CGeometry* geometry, CSolver** solv void CSpeciesFlameletSolver::BC_Inlet(CGeometry* geometry, CSolver** solver_container, CNumerics* conv_numerics, CNumerics* visc_numerics, CConfig* config, unsigned short val_marker) { + SU2_ZONE_SCOPED string Marker_Tag = config->GetMarker_All_TagBound(val_marker); su2double temp_inlet = config->GetInletTtotal(Marker_Tag); @@ -421,6 +427,7 @@ void CSpeciesFlameletSolver::BC_Inlet(CGeometry* geometry, CSolver** solver_cont void CSpeciesFlameletSolver::BC_Isothermal_Wall_Generic(CGeometry* geometry, CSolver** solver_container, CNumerics* conv_numerics, CNumerics* visc_numerics, CConfig* config, unsigned short val_marker, bool cht_mode) { + SU2_ZONE_SCOPED const bool implicit = config->GetKind_TimeIntScheme_Flow() == EULER_IMPLICIT; const string Marker_Tag = config->GetMarker_All_TagBound(val_marker); CFluidModel* fluid_model_local = solver_container[FLOW_SOL]->GetFluidModel(); @@ -505,17 +512,20 @@ void CSpeciesFlameletSolver::BC_Isothermal_Wall_Generic(CGeometry* geometry, CSo void CSpeciesFlameletSolver::BC_Isothermal_Wall(CGeometry* geometry, CSolver** solver_container, CNumerics* conv_numerics, CNumerics* visc_numerics, CConfig* config, unsigned short val_marker) { + SU2_ZONE_SCOPED BC_Isothermal_Wall_Generic(geometry, solver_container, conv_numerics, visc_numerics, config, val_marker); } void CSpeciesFlameletSolver::BC_ConjugateHeat_Interface(CGeometry* geometry, CSolver** solver_container, CNumerics* conv_numerics, CConfig* config, unsigned short val_marker) { + SU2_ZONE_SCOPED BC_Isothermal_Wall_Generic(geometry, solver_container, conv_numerics, nullptr, config, val_marker, true); } unsigned long CSpeciesFlameletSolver::SetScalarSources(const CConfig* config, CFluidModel* fluid_model_local, unsigned long iPoint, const vector& scalars) { + SU2_ZONE_SCOPED /*--- Compute total source terms from the production and consumption. ---*/ vector table_sources(flamelet_config_options.n_control_vars + 2 * flamelet_config_options.n_user_scalars); @@ -544,6 +554,7 @@ unsigned long CSpeciesFlameletSolver::SetScalarSources(const CConfig* config, CF unsigned long CSpeciesFlameletSolver::SetScalarLookUps(CFluidModel* fluid_model_local, unsigned long iPoint, const vector& scalars) { + SU2_ZONE_SCOPED /*--- Retrieve the passive look-up variables from the manifold. ---*/ unsigned long misses{0}; /*--- Skip if no passive look-ups are listed ---*/ @@ -562,6 +573,7 @@ unsigned long CSpeciesFlameletSolver::SetScalarLookUps(CFluidModel* fluid_model_ unsigned long CSpeciesFlameletSolver::SetPreferentialDiffusionScalars(CFluidModel* fluid_model_local, unsigned long iPoint, const vector& scalars) { + SU2_ZONE_SCOPED /*--- Retrieve the preferential diffusion scalar values from the manifold. ---*/ vector beta_scalar(FLAMELET_PREF_DIFF_SCALARS::N_BETA_TERMS); @@ -575,6 +587,7 @@ unsigned long CSpeciesFlameletSolver::SetPreferentialDiffusionScalars(CFluidMode void CSpeciesFlameletSolver::Viscous_Residual(const unsigned long iEdge, const CGeometry* geometry, CSolver** solver_container, CNumerics* numerics, const CConfig* config) { + SU2_ZONE_SCOPED /*--- Overloaded viscous residual method which accounts for preferential diffusion. ---*/ const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT), PreferentialDiffusion = flamelet_config_options.preferential_diffusion; @@ -751,6 +764,7 @@ void CSpeciesFlameletSolver::Viscous_Residual(const unsigned long iEdge, const C unsigned long CSpeciesFlameletSolver::GetEnthFromTemp(CFluidModel* fluid_model, su2double const val_temp, const su2double* scalar_solution, su2double* val_enth) { + SU2_ZONE_SCOPED /*--- convergence criterion for temperature in [K], high accuracy needed for restarts. ---*/ su2double delta_temp_final = 0.001; su2double enth_iter = scalar_solution[I_ENTH]; @@ -792,6 +806,7 @@ unsigned long CSpeciesFlameletSolver::GetEnthFromTemp(CFluidModel* fluid_model, } su2double CSpeciesFlameletSolver::GetBurntProgressVariable(CFluidModel* fluid_model, const su2double* scalar_solution) { + SU2_ZONE_SCOPED su2double scalars[MAXNVAR], delta = 1e-3; for (auto iVar = 0u; iVar < nVar; iVar++) scalars[iVar] = scalar_solution[iVar]; bool outside = false; diff --git a/SU2_CFD/src/solvers/CSpeciesSolver.cpp b/SU2_CFD/src/solvers/CSpeciesSolver.cpp index 2857bdc7fd54..4e629d1d2ada 100644 --- a/SU2_CFD/src/solvers/CSpeciesSolver.cpp +++ b/SU2_CFD/src/solvers/CSpeciesSolver.cpp @@ -37,6 +37,7 @@ template class CScalarSolver; CSpeciesSolver::CSpeciesSolver(CGeometry* geometry, CConfig* config, unsigned short iMesh) : CScalarSolver(geometry, config, true) { + SU2_ZONE_SCOPED /*--- Dimension of the problem. ---*/ @@ -92,6 +93,7 @@ CSpeciesSolver::CSpeciesSolver(CGeometry* geometry, CConfig* config, unsigned sh void CSpeciesSolver::Initialize(CGeometry* geometry, CConfig* config, unsigned short iMesh, unsigned short nVar) { + SU2_ZONE_SCOPED /*--- Store if an implicit scheme is used, for use during periodic boundary conditions. ---*/ SetImplicitPeriodic(config->GetKind_TimeIntScheme_Species() == EULER_IMPLICIT); @@ -192,6 +194,7 @@ void CSpeciesSolver::Initialize(CGeometry* geometry, CConfig* config, unsigned s void CSpeciesSolver::LoadRestart(CGeometry** geometry, CSolver*** solver, CConfig* config, int val_iter, bool val_update_geo) { + SU2_ZONE_SCOPED /*--- Restart the solution from file information ---*/ string restart_filename = config->GetSolution_FileName(); @@ -306,6 +309,7 @@ void CSpeciesSolver::LoadRestart(CGeometry** geometry, CSolver*** solver, CConfi void CSpeciesSolver::Preprocessing(CGeometry* geometry, CSolver** solver_container, CConfig* config, unsigned short iMesh, unsigned short iRKStep, unsigned short RunTime_EqSystem, bool Output) { + SU2_ZONE_SCOPED SU2_OMP_SAFE_GLOBAL_ACCESS(config->SetGlobalParam(config->GetKind_Solver(), RunTime_EqSystem);) SU2_OMP_FOR_STAT(omp_chunk_size) @@ -330,6 +334,7 @@ void CSpeciesSolver::Preprocessing(CGeometry* geometry, CSolver** solver_contain void CSpeciesSolver::Viscous_Residual(const unsigned long iEdge, const CGeometry* geometry, CSolver** solver_container, CNumerics* numerics, const CConfig* config) { + SU2_ZONE_SCOPED /*--- Define an object to set solver specific numerics contribution. ---*/ auto SolverSpecificNumerics = [&](unsigned long iPoint, unsigned long jPoint) { /*--- Mass diffusivity coefficients. ---*/ @@ -344,6 +349,7 @@ void CSpeciesSolver::Viscous_Residual(const unsigned long iEdge, const CGeometry void CSpeciesSolver::BC_Inlet(CGeometry* geometry, CSolver** solver_container, CNumerics* conv_numerics, CNumerics* visc_numerics, CConfig* config, unsigned short val_marker) { + SU2_ZONE_SCOPED const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); string Marker_Tag = config->GetMarker_All_TagBound(val_marker); @@ -421,17 +427,20 @@ void CSpeciesSolver::BC_Inlet(CGeometry* geometry, CSolver** solver_container, C void CSpeciesSolver::BC_Isothermal_Wall(CGeometry* geometry, CSolver** solver_container, CNumerics* conv_numerics, CNumerics* visc_numerics, CConfig* config, unsigned short val_marker) { + SU2_ZONE_SCOPED BC_Wall_Generic(geometry, solver_container, config, val_marker); } void CSpeciesSolver::BC_HeatFlux_Wall(CGeometry* geometry, CSolver** solver_container, CNumerics* conv_numerics, CNumerics* visc_numerics, CConfig* config, unsigned short val_marker) { + SU2_ZONE_SCOPED BC_Wall_Generic(geometry, solver_container, config, val_marker); } void CSpeciesSolver::BC_Wall_Generic(CGeometry* geometry, CSolver** solver_container, CConfig* config, unsigned short val_marker) { + SU2_ZONE_SCOPED const bool implicit = config->GetKind_TimeIntScheme_Flow() == EULER_IMPLICIT; const bool py_custom = config->GetMarker_All_PyCustom(val_marker); @@ -486,6 +495,7 @@ void CSpeciesSolver::BC_Wall_Generic(CGeometry* geometry, CSolver** solver_conta void CSpeciesSolver::SetInletAtVertex(const su2double *val_inlet, unsigned short iMarker, unsigned long iVertex) { + SU2_ZONE_SCOPED for (unsigned short iVar = 0; iVar < nVar; iVar++) Inlet_SpeciesVars[iMarker][iVertex][iVar] = val_inlet[Inlet_Position+iVar]; @@ -494,6 +504,7 @@ void CSpeciesSolver::SetInletAtVertex(const su2double *val_inlet, su2double CSpeciesSolver::GetInletAtVertex(unsigned short iMarker, unsigned long iVertex, const CGeometry* geometry, su2double* val_inlet) const { + SU2_ZONE_SCOPED for (unsigned short iVar = 0; iVar < nVar; iVar++) val_inlet[Inlet_Position + iVar] = Inlet_SpeciesVars[iMarker][iVertex][iVar]; @@ -505,6 +516,7 @@ su2double CSpeciesSolver::GetInletAtVertex(unsigned short iMarker, unsigned long } void CSpeciesSolver::SetUniformInlet(const CConfig* config, unsigned short iMarker) { + SU2_ZONE_SCOPED /*--- Find BC string to the numeric-identifier. ---*/ if (config->GetMarker_All_KindBC(iMarker) == INLET_FLOW || config->GetMarker_All_KindBC(iMarker) == SUPERSONIC_INLET) { const string Marker_Tag = config->GetMarker_All_TagBound(iMarker); @@ -518,6 +530,7 @@ void CSpeciesSolver::SetUniformInlet(const CConfig* config, unsigned short iMark void CSpeciesSolver::BC_Outlet(CGeometry* geometry, CSolver** solver_container, CNumerics* conv_numerics, CNumerics* visc_numerics, CConfig* config, unsigned short val_marker) { + SU2_ZONE_SCOPED const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); @@ -597,6 +610,7 @@ void CSpeciesSolver::BC_Outlet(CGeometry* geometry, CSolver** solver_container, void CSpeciesSolver::Source_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); const bool axisymmetric = config->GetAxisymmetric(); @@ -653,6 +667,7 @@ void CSpeciesSolver::Source_Residual(CGeometry *geometry, CSolver **solver_conta } void CSpeciesSolver::SetInitialCondition(CGeometry **geometry, CSolver ***solver_container, CConfig *config, unsigned long TimeIter) { + SU2_ZONE_SCOPED const bool restart = config->GetRestart() || config->GetRestart_Flow(); diff --git a/SU2_CFD/src/solvers/CTransLMSolver.cpp b/SU2_CFD/src/solvers/CTransLMSolver.cpp index 38356c86a59e..21469b71d507 100644 --- a/SU2_CFD/src/solvers/CTransLMSolver.cpp +++ b/SU2_CFD/src/solvers/CTransLMSolver.cpp @@ -40,6 +40,7 @@ CTransLMSolver::CTransLMSolver(CGeometry *geometry, CConfig *config, unsigned short iMesh) : CTurbSolver(geometry, config, true) { + SU2_ZONE_SCOPED unsigned long iPoint; ifstream restart_file; string text_line; @@ -174,6 +175,7 @@ CTransLMSolver::CTransLMSolver(CGeometry *geometry, CConfig *config, unsigned sh void CTransLMSolver::Preprocessing(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, unsigned short iRKStep, unsigned short RunTime_EqSystem, bool Output) { + SU2_ZONE_SCOPED SU2_OMP_SAFE_GLOBAL_ACCESS(config->SetGlobalParam(config->GetKind_Solver(), RunTime_EqSystem);) /*--- Upwind second order reconstruction and gradients ---*/ @@ -181,6 +183,7 @@ void CTransLMSolver::Preprocessing(CGeometry *geometry, CSolver **solver_contain } void CTransLMSolver::Postprocessing(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED /*--- Compute LM model gradients. ---*/ @@ -265,6 +268,7 @@ void CTransLMSolver::Postprocessing(CGeometry *geometry, CSolver **solver_contai void CTransLMSolver::Viscous_Residual(const unsigned long iEdge, const CGeometry* geometry, CSolver** solver_container, CNumerics* numerics, const CConfig* config) { + SU2_ZONE_SCOPED /*--- Define an object to set solver specific numerics contribution. ---*/ @@ -278,6 +282,7 @@ void CTransLMSolver::Viscous_Residual(const unsigned long iEdge, const CGeometry void CTransLMSolver::Source_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); @@ -360,10 +365,12 @@ void CTransLMSolver::Source_Residual(CGeometry *geometry, CSolver **solver_conta void CTransLMSolver::Source_Template(CGeometry *geometry, CSolver **solver_container, CNumerics *numerics, CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED } void CTransLMSolver::BC_HeatFlux_Wall(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); @@ -420,6 +427,7 @@ void CTransLMSolver::BC_HeatFlux_Wall(CGeometry *geometry, CSolver **solver_cont void CTransLMSolver::BC_Isothermal_Wall(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED BC_HeatFlux_Wall(geometry, solver_container, conv_numerics, visc_numerics, config, val_marker); @@ -427,6 +435,7 @@ void CTransLMSolver::BC_Isothermal_Wall(CGeometry *geometry, CSolver **solver_co void CTransLMSolver::BC_Inlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); /*--- Loop over all the vertices on this boundary marker ---*/ @@ -495,11 +504,13 @@ void CTransLMSolver::BC_Inlet(CGeometry *geometry, CSolver **solver_container, C void CTransLMSolver::BC_Outlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED BC_Far_Field(geometry, solver_container, conv_numerics, visc_numerics, config, val_marker); } void CTransLMSolver::LoadRestart(CGeometry** geometry, CSolver*** solver, CConfig* config, int val_iter, bool val_update_geo) { + SU2_ZONE_SCOPED string restart_filename = config->GetSolution_FileName(); diff --git a/SU2_CFD/src/solvers/CTurbSASolver.cpp b/SU2_CFD/src/solvers/CTurbSASolver.cpp index 232373707623..65066e32e942 100644 --- a/SU2_CFD/src/solvers/CTurbSASolver.cpp +++ b/SU2_CFD/src/solvers/CTurbSASolver.cpp @@ -34,6 +34,7 @@ CTurbSASolver::CTurbSASolver(CGeometry *geometry, CConfig *config, unsigned short iMesh, CFluidModel* FluidModel) : CTurbSolver(geometry, config, false) { + SU2_ZONE_SCOPED unsigned long iPoint; su2double Density_Inf, Viscosity_Inf, Factor_nu_Inf, Factor_nu_Engine, Factor_nu_ActDisk; @@ -175,6 +176,7 @@ CTurbSASolver::CTurbSASolver(CGeometry *geometry, CConfig *config, unsigned shor void CTurbSASolver::Preprocessing(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, unsigned short iRKStep, unsigned short RunTime_EqSystem, bool Output) { + SU2_ZONE_SCOPED SU2_OMP_SAFE_GLOBAL_ACCESS(config->SetGlobalParam(config->GetKind_Solver(), RunTime_EqSystem);) const auto kind_hybridRANSLES = config->GetKind_HybridRANSLES(); @@ -208,6 +210,7 @@ void CTurbSASolver::Preprocessing(CGeometry *geometry, CSolver **solver_containe } void CTurbSASolver::Postprocessing(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED const su2double cv1_3 = 7.1*7.1*7.1, cR1 = 0.5, rough_const = 0.03; @@ -295,6 +298,7 @@ void CTurbSASolver::Postprocessing(CGeometry *geometry, CSolver **solver_contain void CTurbSASolver::Viscous_Residual(const unsigned long iEdge, const CGeometry* geometry, CSolver** solver_container, CNumerics* numerics, const CConfig* config) { + SU2_ZONE_SCOPED /*--- Define an object to set solver specific numerics contribution. ---*/ auto SolverSpecificNumerics = [&](unsigned long iPoint, unsigned long jPoint) { @@ -309,6 +313,7 @@ void CTurbSASolver::Viscous_Residual(const unsigned long iEdge, const CGeometry* void CTurbSASolver::Source_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED bool axisymmetric = config->GetAxisymmetric(); @@ -439,10 +444,12 @@ void CTurbSASolver::Source_Residual(CGeometry *geometry, CSolver **solver_contai void CTurbSASolver::Source_Template(CGeometry *geometry, CSolver **solver_container, CNumerics *numerics, CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED } void CTurbSASolver::BC_HeatFlux_Wall(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED /*--- Evaluate nu tilde at the closest point to the surface using the wall functions. ---*/ @@ -517,6 +524,7 @@ void CTurbSASolver::BC_HeatFlux_Wall(CGeometry *geometry, CSolver **solver_conta void CTurbSASolver::BC_Isothermal_Wall(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED BC_HeatFlux_Wall(geometry, solver_container, conv_numerics, visc_numerics, config, val_marker); @@ -524,6 +532,7 @@ void CTurbSASolver::BC_Isothermal_Wall(CGeometry *geometry, CSolver **solver_con void CTurbSASolver::BC_Inlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); @@ -648,6 +657,7 @@ void CTurbSASolver::BC_Inlet(CGeometry *geometry, CSolver **solver_container, CN void CTurbSASolver::BC_Outlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); @@ -739,6 +749,7 @@ void CTurbSASolver::BC_Outlet(CGeometry *geometry, CSolver **solver_container, C void CTurbSASolver::BC_Engine_Inflow(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); @@ -828,6 +839,7 @@ void CTurbSASolver::BC_Engine_Inflow(CGeometry *geometry, CSolver **solver_conta void CTurbSASolver::BC_Engine_Exhaust(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); @@ -917,12 +929,14 @@ void CTurbSASolver::BC_Engine_Exhaust(CGeometry *geometry, CSolver **solver_cont void CTurbSASolver::BC_ActDisk_Inlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED BC_ActDisk(geometry, solver_container, conv_numerics, visc_numerics, config, val_marker, true); } void CTurbSASolver::BC_ActDisk_Outlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED BC_ActDisk(geometry, solver_container, conv_numerics, visc_numerics, config, val_marker, false); } @@ -930,6 +944,7 @@ void CTurbSASolver::BC_ActDisk_Outlet(CGeometry *geometry, CSolver **solver_cont void CTurbSASolver::BC_ActDisk(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker, bool val_inlet_surface) { + SU2_ZONE_SCOPED const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); @@ -1067,6 +1082,7 @@ void CTurbSASolver::BC_ActDisk(CGeometry *geometry, CSolver **solver_container, void CTurbSASolver::BC_Inlet_MixingPlane(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); const auto nSpanWiseSections = config->GetnSpanWiseSections(); @@ -1162,6 +1178,7 @@ void CTurbSASolver::BC_Inlet_MixingPlane(CGeometry *geometry, CSolver **solver_c void CTurbSASolver::BC_Inlet_Turbo(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); const auto nSpanWiseSections = config->GetnSpanWiseSections(); @@ -1267,6 +1284,7 @@ void CTurbSASolver::BC_Inlet_Turbo(CGeometry *geometry, CSolver **solver_contain void CTurbSASolver::SetTurbVars_WF(CGeometry *geometry, CSolver **solver_container, const CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); @@ -1347,6 +1365,7 @@ void CTurbSASolver::SetTurbVars_WF(CGeometry *geometry, CSolver **solver_contain } void CTurbSASolver::SetDES_LengthScale(CSolver **solver, CGeometry *geometry, CConfig *config){ + SU2_ZONE_SCOPED const auto kindHybridRANSLES = config->GetKind_HybridRANSLES(); @@ -1529,6 +1548,7 @@ void CTurbSASolver::SetDES_LengthScale(CSolver **solver, CGeometry *geometry, CC void CTurbSASolver::SetInletAtVertex(const su2double *val_inlet, unsigned short iMarker, unsigned long iVertex) { + SU2_ZONE_SCOPED Inlet_TurbVars[iMarker][iVertex][0] = val_inlet[nDim+2+nDim]; @@ -1536,6 +1556,7 @@ void CTurbSASolver::SetInletAtVertex(const su2double *val_inlet, su2double CTurbSASolver::GetInletAtVertex(unsigned short iMarker, unsigned long iVertex, const CGeometry* geometry, su2double* val_inlet) const { + SU2_ZONE_SCOPED const auto position = nDim + 2 + nDim; val_inlet[position] = Inlet_TurbVars[iMarker][iVertex][0]; @@ -1547,6 +1568,7 @@ su2double CTurbSASolver::GetInletAtVertex(unsigned short iMarker, unsigned long } void CTurbSASolver::SetUniformInlet(const CConfig* config, unsigned short iMarker) { + SU2_ZONE_SCOPED if (config->GetMarker_All_KindBC(iMarker) == INLET_FLOW) { for (unsigned long iVertex = 0; iVertex < nVertex[iMarker]; iVertex++) { Inlet_TurbVars[iMarker][iVertex][0] = GetNuTilde_Inf(); @@ -1555,6 +1577,7 @@ void CTurbSASolver::SetUniformInlet(const CConfig* config, unsigned short iMarke } void CTurbSASolver::ComputeUnderRelaxationFactor(CSolver** solver_container, const CConfig *config) { + SU2_ZONE_SCOPED /* Apply the turbulent under-relaxation to the SA variants. The SA_NEG model is more robust due to allowing for negative nu_tilde, diff --git a/SU2_CFD/src/solvers/CTurbSSTSolver.cpp b/SU2_CFD/src/solvers/CTurbSSTSolver.cpp index 7cd7c2505213..4f1212d62867 100644 --- a/SU2_CFD/src/solvers/CTurbSSTSolver.cpp +++ b/SU2_CFD/src/solvers/CTurbSSTSolver.cpp @@ -34,6 +34,7 @@ CTurbSSTSolver::CTurbSSTSolver(CGeometry *geometry, CConfig *config, unsigned short iMesh) : CTurbSolver(geometry, config, true) { + SU2_ZONE_SCOPED unsigned long iPoint; ifstream restart_file; string text_line; @@ -197,6 +198,7 @@ CTurbSSTSolver::CTurbSSTSolver(CGeometry *geometry, CConfig *config, unsigned sh void CTurbSSTSolver::Preprocessing(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh, unsigned short iRKStep, unsigned short RunTime_EqSystem, bool Output) { + SU2_ZONE_SCOPED SU2_OMP_SAFE_GLOBAL_ACCESS(config->SetGlobalParam(config->GetKind_Solver(), RunTime_EqSystem);) /*--- Upwind second order reconstruction and gradients ---*/ @@ -205,6 +207,7 @@ void CTurbSSTSolver::Preprocessing(CGeometry *geometry, CSolver **solver_contain void CTurbSSTSolver::Postprocessing(CGeometry *geometry, CSolver **solver_container, CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED const su2double a1 = constants[7]; @@ -289,6 +292,7 @@ void CTurbSSTSolver::Postprocessing(CGeometry *geometry, CSolver **solver_contai void CTurbSSTSolver::Viscous_Residual(const unsigned long iEdge, const CGeometry* geometry, CSolver** solver_container, CNumerics* numerics, const CConfig* config) { + SU2_ZONE_SCOPED /*--- Define an object to set solver specific numerics contribution. ---*/ auto SolverSpecificNumerics = [&](unsigned long iPoint, unsigned long jPoint) { @@ -303,6 +307,7 @@ void CTurbSSTSolver::Viscous_Residual(const unsigned long iEdge, const CGeometry void CTurbSSTSolver::Source_Residual(CGeometry *geometry, CSolver **solver_container, CNumerics **numerics_container, CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED bool axisymmetric = config->GetAxisymmetric(); @@ -398,10 +403,12 @@ void CTurbSSTSolver::Source_Residual(CGeometry *geometry, CSolver **solver_conta void CTurbSSTSolver::Source_Template(CGeometry *geometry, CSolver **solver_container, CNumerics *numerics, CConfig *config, unsigned short iMesh) { + SU2_ZONE_SCOPED } void CTurbSSTSolver::BC_HeatFlux_Wall(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); @@ -515,6 +522,7 @@ void CTurbSSTSolver::BC_HeatFlux_Wall(CGeometry *geometry, CSolver **solver_cont void CTurbSSTSolver::SetTurbVars_WF(CGeometry *geometry, CSolver **solver_container, const CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); @@ -576,6 +584,7 @@ void CTurbSSTSolver::SetTurbVars_WF(CGeometry *geometry, CSolver **solver_contai void CTurbSSTSolver::BC_Isothermal_Wall(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED BC_HeatFlux_Wall(geometry, solver_container, conv_numerics, visc_numerics, config, val_marker); @@ -583,6 +592,7 @@ void CTurbSSTSolver::BC_Isothermal_Wall(CGeometry *geometry, CSolver **solver_co void CTurbSSTSolver::BC_Inlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); @@ -716,6 +726,7 @@ void CTurbSSTSolver::BC_Inlet(CGeometry *geometry, CSolver **solver_container, C void CTurbSSTSolver::BC_Outlet(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); @@ -813,6 +824,7 @@ void CTurbSSTSolver::BC_Outlet(CGeometry *geometry, CSolver **solver_container, void CTurbSSTSolver::BC_Inlet_MixingPlane(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); @@ -905,6 +917,7 @@ void CTurbSSTSolver::BC_Inlet_MixingPlane(CGeometry *geometry, CSolver **solver_ void CTurbSSTSolver::BC_Inlet_Turbo(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); @@ -1017,6 +1030,7 @@ void CTurbSSTSolver::BC_Inlet_Turbo(CGeometry *geometry, CSolver **solver_contai void CTurbSSTSolver::SetInletAtVertex(const su2double *val_inlet, unsigned short iMarker, unsigned long iVertex) { + SU2_ZONE_SCOPED Inlet_TurbVars[iMarker][iVertex][0] = val_inlet[nDim+2+nDim]; Inlet_TurbVars[iMarker][iVertex][1] = val_inlet[nDim+2+nDim+1]; @@ -1025,6 +1039,7 @@ void CTurbSSTSolver::SetInletAtVertex(const su2double *val_inlet, su2double CTurbSSTSolver::GetInletAtVertex(unsigned short iMarker, unsigned long iVertex, const CGeometry* geometry, su2double* val_inlet) const { + SU2_ZONE_SCOPED const auto tke_position = nDim + 2 + nDim; const auto omega_position = tke_position + 1; val_inlet[tke_position] = Inlet_TurbVars[iMarker][iVertex][0]; @@ -1037,6 +1052,7 @@ su2double CTurbSSTSolver::GetInletAtVertex(unsigned short iMarker, unsigned long return GeometryToolbox::Norm(nDim, Normal);} void CTurbSSTSolver::SetUniformInlet(const CConfig* config, unsigned short iMarker) { + SU2_ZONE_SCOPED if (config->GetMarker_All_KindBC(iMarker) == INLET_FLOW) { for (unsigned long iVertex = 0; iVertex < nVertex[iMarker]; iVertex++) { Inlet_TurbVars[iMarker][iVertex][0] = GetTke_Inf(); @@ -1047,6 +1063,7 @@ void CTurbSSTSolver::SetUniformInlet(const CConfig* config, unsigned short iMark } void CTurbSSTSolver::ComputeUnderRelaxationFactor(CSolver** solver_container, const CConfig *config) { + SU2_ZONE_SCOPED const su2double allowableRatio = config->GetMaxUpdateFractionSST(); diff --git a/SU2_CFD/src/solvers/CTurbSolver.cpp b/SU2_CFD/src/solvers/CTurbSolver.cpp index 121c004c104d..697b6d0a1c38 100644 --- a/SU2_CFD/src/solvers/CTurbSolver.cpp +++ b/SU2_CFD/src/solvers/CTurbSolver.cpp @@ -35,17 +35,20 @@ template class CScalarSolver; CTurbSolver::CTurbSolver(CGeometry* geometry, CConfig *config, bool conservative) : CScalarSolver(geometry, config, conservative) { + SU2_ZONE_SCOPED /*--- Store if an implicit scheme is used, for use during periodic boundary conditions. ---*/ SetImplicitPeriodic(config->GetKind_TimeIntScheme_Turb() == EULER_IMPLICIT); } CTurbSolver::~CTurbSolver() { + SU2_ZONE_SCOPED for (auto& mat : SlidingState) { for (auto ptr : mat) delete [] ptr; } } void CTurbSolver::BC_Riemann(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED string Marker_Tag = config->GetMarker_All_TagBound(val_marker); @@ -61,6 +64,7 @@ void CTurbSolver::BC_Riemann(CGeometry *geometry, CSolver **solver_container, CN } void CTurbSolver::BC_TurboRiemann(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED string Marker_Tag = config->GetMarker_All_TagBound(val_marker); @@ -77,6 +81,7 @@ void CTurbSolver::BC_TurboRiemann(CGeometry *geometry, CSolver **solver_containe void CTurbSolver::BC_Giles(CGeometry *geometry, CSolver **solver_container, CNumerics *conv_numerics, CNumerics *visc_numerics, CConfig *config, unsigned short val_marker) { + SU2_ZONE_SCOPED string Marker_Tag = config->GetMarker_All_TagBound(val_marker); @@ -102,6 +107,7 @@ void CTurbSolver::BC_Giles(CGeometry *geometry, CSolver **solver_container, CNum void CTurbSolver::LoadRestart(CGeometry** geometry, CSolver*** solver, CConfig* config, int val_iter, bool val_update_geo) { + SU2_ZONE_SCOPED /*--- Restart the solution from file information ---*/ string restart_filename = config->GetSolution_FileName(); @@ -234,6 +240,7 @@ void CTurbSolver::LoadRestart(CGeometry** geometry, CSolver*** solver, CConfig* } void CTurbSolver::Impose_Fixed_Values(const CGeometry *geometry, const CConfig *config){ + SU2_ZONE_SCOPED const bool implicit = (config->GetKind_TimeIntScheme() == EULER_IMPLICIT); /*--- Check whether turbulence quantities are fixed to far-field values on a half-plane. ---*/ @@ -269,6 +276,7 @@ void CTurbSolver::Impose_Fixed_Values(const CGeometry *geometry, const CConfig * } unsigned long CTurbSolver::RegisterSolutionExtra(bool input, const CConfig* config) { + SU2_ZONE_SCOPED /*--- Register muT as input/output of a RANS iteration. ---*/ nodes->RegisterEddyViscosity(input); @@ -278,6 +286,7 @@ unsigned long CTurbSolver::RegisterSolutionExtra(bool input, const CConfig* conf } void CTurbSolver::ComputeUnderRelaxationFactorHelper(CSolver** solver_container, su2double allowableRatio) { + SU2_ZONE_SCOPED /* Loop over the solution update given by relaxing the linear system for this nonlinear iteration. */ diff --git a/meson.build b/meson.build index 5a46b12431f5..831e282ca7e4 100644 --- a/meson.build +++ b/meson.build @@ -133,10 +133,10 @@ if get_option('enable-autodiff') and not omp endif # Add Tracy dependency if enabled -if get_option('enable-tracy') +if get_option('tracy_enable') tracy_dep = dependency('tracy', static: true) su2_deps += tracy_dep - su2_cpp_args += '-DHAVE_TRACY' + su2_cpp_args += '-DTRACY_ENABLE' # Add build type check if get_option('buildtype') != 'debugoptimized' @@ -404,7 +404,7 @@ message('''--------------------------------------------------------------------- '''.format(get_option('prefix')+'/bin', meson.project_source_root(), get_option('enable-tecio'), get_option('enable-cgns'), get_option('enable-autodiff'), get_option('enable-directdiff'), get_option('enable-pywrapper'), get_option('enable-mkl'), get_option('enable-openblas'), get_option('enable-pastix'), get_option('enable-mixedprec'), get_option('enable-librom'), get_option('enable-coolprop'), - get_option('enable-mlpcpp'), get_option('enable-tracy'), meson.project_build_root().startswith(meson.project_source_root()) ? meson.project_build_root().split('/')[-1] : meson.project_build_root())) + get_option('enable-mlpcpp'), get_option('tracy_enable'), meson.project_build_root().startswith(meson.project_source_root()) ? meson.project_build_root().split('/')[-1] : meson.project_build_root())) if get_option('enable-mpp') if get_option('install-mpp') diff --git a/meson_options.txt b/meson_options.txt index f460f6b1e139..4eba410a0013 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -28,4 +28,4 @@ option('opdi-shared-read-opt', type : 'boolean', value : true, description : 'Op option('librom_root', type : 'string', value : '', description: 'libROM base directory') option('enable-librom', type : 'boolean', value : false, description: 'enable LLNL libROM support') option('static-cgns-deps', type : 'boolean', value : false, description: 'prefer static or dynamic (default) libraries for CGNS dependencies') -option('enable-tracy', type: 'boolean', value: false, description: 'Enable Tracy profiling support') +option('tracy_enable', type: 'boolean', value: false, description: 'Enable Tracy profiling support') diff --git a/subprojects/tracy.wrap b/subprojects/tracy.wrap index b410c1419ea1..e45c6ad75fd3 100644 --- a/subprojects/tracy.wrap +++ b/subprojects/tracy.wrap @@ -1,4 +1,4 @@ [wrap-git] url = https://github.com/wolfpld/tracy.git -revision = master +revision = v0.12.2 depth = 1