diff --git a/.github/workflows/regression.yml b/.github/workflows/regression.yml
index 2502204b64c4..cef9d68216ed 100644
--- a/.github/workflows/regression.yml
+++ b/.github/workflows/regression.yml
@@ -30,7 +30,7 @@ jobs:
- config_set: ReverseMPI
flags: '-Denable-autodiff=true -Denable-normal=false -Denable-pywrapper=true -Denable-tests=true --warnlevel=3 --werror'
- config_set: ForwardMPI
- flags: '-Denable-directdiff=true -Denable-normal=false -Denable-tests=true --warnlevel=3 --werror'
+ flags: '-Denable-directdiff=true -Denable-normal=false -Denable-tests=true -Denable-mlpcpp=true --warnlevel=3 --werror'
- config_set: BaseNoMPI
flags: '-Denable-pywrapper=true -Denable-openblas=true -Dwith-mpi=disabled -Denable-mlpcpp=true -Denable-tests=true --warnlevel=3 --werror'
- config_set: ReverseNoMPI
diff --git a/.gitmodules b/.gitmodules
index 2c655cb36da3..4c6d8a819f89 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -27,3 +27,6 @@
[submodule "subprojects/MLPCpp"]
path = subprojects/MLPCpp
url = https://github.com/EvertBunschoten/MLPCpp.git
+[submodule "externals/FADO"]
+ path = externals/FADO
+ url = https://github.com/pcarruscag/FADO.git
diff --git a/AUTHORS.md b/AUTHORS.md
index 511ebcf4b332..48b2140480aa 100644
--- a/AUTHORS.md
+++ b/AUTHORS.md
@@ -136,6 +136,7 @@ Thomas D. Economon
Tim Albring
TobiKattmann
Trent Lukaczyk
+Vikram Bharadwaj
Vinzenz Götz
VivaanKhatri
Wally Maier
diff --git a/Common/include/CConfig.hpp b/Common/include/CConfig.hpp
index b14ffd6f2de1..af7aa99033b5 100644
--- a/Common/include/CConfig.hpp
+++ b/Common/include/CConfig.hpp
@@ -3,14 +3,14 @@
* \brief All the information about the definition of the physical problem.
* The subroutines and functions are in the CConfig.cpp file.
* \author F. Palacios, T. Economon, B. Tracey
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -108,7 +108,6 @@ class CConfig {
su2double Opt_RelaxFactor; /*!< \brief Scale factor for the line search. */
su2double Opt_LineSearch_Bound; /*!< \brief Bounds for the line search. */
su2double StartTime;
- unsigned short SmoothNumGrid; /*!< \brief Smooth the numerical grid. */
bool ContinuousAdjoint, /*!< \brief Flag to know if the code is solving an adjoint problem. */
Viscous, /*!< \brief Flag to know if the code is solving a viscous problem. */
EquivArea, /*!< \brief Flag to know if the code is going to compute and plot the equivalent area. */
@@ -536,9 +535,8 @@ class CConfig {
Kind_TimeIntScheme_Heat, /*!< \brief Time integration for the wave equations. */
Kind_TimeStep_Heat, /*!< \brief Time stepping method for the (fvm) heat equation. */
n_Datadriven_files;
- ENUM_DATADRIVEN_METHOD Kind_DataDriven_Method; /*!< \brief Method used for datset regression in data-driven fluid models. */
- su2double DataDriven_Relaxation_Factor; /*!< \brief Relaxation factor for Newton solvers in data-driven fluid models. */
+ DataDrivenFluid_ParsedOptions datadriven_ParsedOptions; /*!< \brief Options for data-driven fluid analysis. */
STRUCT_TIME_INT Kind_TimeIntScheme_FEA; /*!< \brief Time integration for the FEA equations. */
STRUCT_SPACE_ITE Kind_SpaceIteScheme_FEA; /*!< \brief Iterative scheme for nonlinear structural analysis. */
@@ -700,6 +698,7 @@ class CConfig {
unsigned long StartConv_Iter; /*!< \brief Start convergence criteria at iteration. */
su2double Cauchy_Eps; /*!< \brief Epsilon used for the convergence. */
bool Restart, /*!< \brief Restart solution (for direct, adjoint, and linearized problems).*/
+ Wrt_Restart_Compact, /*!< \brief Write compact restart files with minimum nr. of variables. */
Read_Binary_Restart, /*!< \brief Read binary SU2 native restart files.*/
Wrt_Restart_Overwrite, /*!< \brief Overwrite restart files or append iteration number.*/
Wrt_Surface_Overwrite, /*!< \brief Overwrite surface output files or append iteration number.*/
@@ -804,6 +803,7 @@ class CConfig {
nRefOriginMoment_Z; /*!< \brief Number of Z-coordinate moment computation origins. */
unsigned short nMesh_Box_Size;
short *Mesh_Box_Size; /*!< \brief Array containing the number of grid points in the x-, y-, and z-directions for the analytic RECTANGLE and BOX grid formats. */
+ unsigned short Mesh_Box_PSolFEM; /*!< \brief FEM polynomial degree of the solution for the RECTANGLE and BOX grid formats. */
string Mesh_FileName, /*!< \brief Mesh input file. */
Mesh_Out_FileName, /*!< \brief Mesh output file. */
Solution_FileName, /*!< \brief Flow solution input file. */
@@ -820,8 +820,7 @@ class CConfig {
SurfAdjCoeff_FileName, /*!< \brief Output file with the adjoint variables on the surface. */
SurfSens_FileName, /*!< \brief Output file for the sensitivity on the surface (discrete adjoint). */
VolSens_FileName, /*!< \brief Output file for the sensitivity in the volume (discrete adjoint). */
- ObjFunc_Hess_FileName, /*!< \brief Hessian approximation obtained by the Sobolev smoothing solver. */
- *DataDriven_Method_FileNames; /*!< \brief Dataset information for data-driven fluid models. */
+ ObjFunc_Hess_FileName; /*!< \brief Hessian approximation obtained by the Sobolev smoothing solver. */
bool
Wrt_Performance, /*!< \brief Write the performance summary at the end of a calculation. */
@@ -1004,7 +1003,7 @@ class CConfig {
bool ExtraOutput; /*!< \brief Check if extra output need. */
bool Wall_Functions; /*!< \brief Use wall functions with the turbulence model */
long ExtraHeatOutputZone; /*!< \brief Heat solver zone with extra screen output */
- bool DeadLoad; /*!< \brief Application of dead loads to the FE analysis */
+ bool CentrifugalForce; /*!< \brief Application of centrifugal forces to the FE analysis */
bool PseudoStatic; /*!< \brief Application of dead loads to the FE analysis */
bool SteadyRestart; /*!< \brief Restart from a steady state for FSI problems. */
su2double Newmark_beta, /*!< \brief Parameter alpha for Newmark method. */
@@ -1013,10 +1012,13 @@ class CConfig {
su2double *Int_Coeffs; /*!< \brief Time integration coefficients for structural method. */
unsigned short nElasticityMod, /*!< \brief Number of different values for the elasticity modulus. */
nPoissonRatio, /*!< \brief Number of different values for the Poisson ratio modulus. */
- nMaterialDensity; /*!< \brief Number of different values for the Material density. */
+ nMaterialDensity, /*!< \brief Number of different values for the Material density. */
+ nMaterialThermalExpansion; /*!< \brief Number of different values for thermal expansion coefficient. */
su2double *ElasticityMod, /*!< \brief Value of the elasticity moduli. */
*PoissonRatio, /*!< \brief Value of the Poisson ratios. */
- *MaterialDensity; /*!< \brief Value of the Material densities. */
+ *MaterialDensity, /*!< \brief Value of the Material densities. */
+ *MaterialThermalExpansion, /*!< \brief Value of the thermal expansion coefficients. */
+ MaterialReferenceTemperature; /*!< \brief Value of the reference temperature for thermal expansion. */
unsigned short nElectric_Field, /*!< \brief Number of different values for the electric field in the membrane. */
nDim_Electric_Field; /*!< \brief Dimensionality of the problem. */
unsigned short nDim_RefNode; /*!< \brief Dimensionality of the vector . */
@@ -1109,7 +1111,7 @@ class CConfig {
bool Radiation; /*!< \brief Determines if a radiation model is incorporated. */
su2double CFL_Rad; /*!< \brief CFL Number for the radiation solver. */
- array default_cfl_adapt; /*!< \brief Default CFL adapt param array for the COption class. */
+ array default_cfl_adapt; /*!< \brief Default CFL adapt param array for the COption class. */
su2double vel_init[3], /*!< \brief initial velocity array for the COption class. */
vel_inf[3], /*!< \brief freestream velocity array for the COption class. */
eng_cyl[7], /*!< \brief engine box array for the COption class. */
@@ -1235,28 +1237,7 @@ class CConfig {
unsigned short nSpecies_Init; /*!< \brief Number of entries of SPECIES_INIT */
/*--- Additional flamelet solver options ---*/
- ///TODO: Add python wrapper initialization option
- FLAMELET_INIT_TYPE flame_init_type = FLAMELET_INIT_TYPE::NONE; /*!< \brief Method for solution ignition for flamelet problems. */
- std::array flame_init; /*!< \brief Flame front initialization parameters. */
- std::array spark_init; /*!< \brief Spark ignition initialization parameters. */
- su2double* spark_reaction_rates; /*!< \brief Source terms for flamelet spark ignition option. */
- unsigned short nspark; /*!< \brief Number of source terms for spark initialization. */
- bool preferential_diffusion = false; /*!< \brief Preferential diffusion physics for flamelet solver.*/
-
- /*--- lookup table ---*/
- unsigned short n_scalars = 0; /*!< \brief Number of transported scalars for flamelet LUT approach. */
- unsigned short n_lookups = 0; /*!< \brief Number of lookup variables, for visualization only. */
- unsigned short n_table_sources = 0; /*!< \brief Number of transported scalar source terms for LUT. */
- unsigned short n_user_scalars = 0; /*!< \brief Number of user defined (auxiliary) scalar transport equations. */
- unsigned short n_user_sources = 0; /*!< \brief Number of source terms for user defined (auxiliary) scalar transport equations. */
- unsigned short n_control_vars = 0; /*!< \brief Number of controlling variables (independent variables) for the LUT. */
-
- string* controlling_variable_names;
- string* cv_source_names;
- vector table_scalar_names; /*!< \brief Names of transported scalar variables. */
- string* lookup_names; /*!< \brief Names of passive look-up variables. */
- string* user_scalar_names; /*!< \brief Names of the user defined (auxiliary) transported scalars .*/
- string* user_source_names; /*!< \brief Names of the source terms for the user defined transported scalars. */
+ FluidFlamelet_ParsedOptions flamelet_ParsedOptions; /*!< \brief Additional flamelet solver options */
/*!
* \brief Set the default values of config options not set in the config file using another config object.
@@ -2165,106 +2146,6 @@ class CConfig {
*/
bool GetSpecies_StrongBC() const { return Species_StrongBC; }
- /*!
- * \brief Get the flame initialization.
- * (x1,x2,x3) = flame offset/spark center location.
- * (x4,x5,x6) = flame normal, separating unburnt from burnt or
- * spark radius, spark start iteration, spark duration.
- * (x7) = flame thickness, the length from unburnt to burnt conditions.
- * (x8) = flame burnt thickness, the length to stay at burnt conditions.
- * \return Ignition initialization parameters for the flamelet model.
- */
- const su2double* GetFlameInit() const {
- switch (flame_init_type)
- {
- case FLAMELET_INIT_TYPE::FLAME_FRONT:
- return flame_init.data();
- break;
- case FLAMELET_INIT_TYPE::SPARK:
- return spark_init.data();
- break;
- default:
- return nullptr;
- break;
- }
- }
-
- /*!
- * \brief Get species net reaction rates applied during spark ignition.
- */
- const su2double* GetSpark() const {
- return spark_reaction_rates;
- }
-
- /*!
- * \brief Preferential diffusion combustion problem.
- */
- bool GetPreferentialDiffusion() const { return preferential_diffusion; }
-
- /*!
- * \brief Define preferential diffusion combustion problem.
- */
- inline void SetPreferentialDiffusion(bool input) { preferential_diffusion = input; }
-
- /*!
- * \brief Get the number of control variables for flamelet model.
- */
- unsigned short GetNControlVars() const { return n_control_vars; }
-
- /*!
- * \brief Get the number of total transported scalars for flamelet model.
- */
- unsigned short GetNScalars() const { return n_scalars; }
-
- /*!
- * \brief Get the number of user scalars for flamelet model.
- */
- unsigned short GetNUserScalars() const { return n_user_scalars; }
-
- /*!
- * \brief Get the name of a specific controlling variable.
- */
- const string& GetControllingVariableName(unsigned short i_cv) const {
- return controlling_variable_names[i_cv];
- }
-
- /*!
- * \brief Get the name of the source term variable for a specific controlling variable.
- */
- const string& GetControllingVariableSourceName(unsigned short i_cv) const {
- return cv_source_names[i_cv];
- }
- /*!
- * \brief Get the name of the user scalar.
- */
- const string& GetUserScalarName(unsigned short i_user_scalar) const {
- static const std::string none = "NONE";
- if (n_user_scalars > 0) return user_scalar_names[i_user_scalar]; else return none;
- }
-
- /*!
- * \brief Get the name of the user scalar source term.
- */
- const string& GetUserSourceName(unsigned short i_user_source) const {
- static const std::string none = "NONE";
- if (n_user_sources > 0) return user_source_names[i_user_source]; else return none;
- }
-
- /*!
- * \brief Get the ignition method used for combustion problems.
- */
- FLAMELET_INIT_TYPE GetFlameletInitType() const { return flame_init_type; }
-
- /*!
- * \brief Get the number of transported scalars for combustion.
- */
- unsigned short GetNLookups() const { return n_lookups; }
-
- /*!
- * \brief Get the name of the variable that we want to retrieve from the lookup table.
- */
- const string& GetLookupName(unsigned short i_lookup) const { return lookup_names[i_lookup]; }
-
/*!
* \brief Get the Young's modulus of elasticity.
* \return Value of the Young's modulus of elasticity.
@@ -2389,6 +2270,16 @@ class CConfig {
*/
su2double GetMaterialDensity(unsigned short id_val) const { return MaterialDensity[id_val]; }
+ /*!
+ * \brief Get the thermal expansion coefficient.
+ */
+ su2double GetMaterialThermalExpansion(unsigned short id_val) const { return MaterialThermalExpansion[id_val]; }
+
+ /*!
+ * \brief Temperature at which there is no stress from thermal expansion.
+ */
+ su2double GetMaterialReferenceTemperature() const { return MaterialReferenceTemperature; }
+
/*!
* \brief Compressibility/incompressibility of the solids analysed using the structural solver.
* \return Compressible or incompressible.
@@ -3956,29 +3847,6 @@ class CConfig {
*/
unsigned short GetKind_FluidModel(void) const { return Kind_FluidModel; }
- /*!
- * \brief Datadriven method for EoS evaluation.
- */
- ENUM_DATADRIVEN_METHOD GetKind_DataDriven_Method(void) const { return Kind_DataDriven_Method; }
-
- /*!
- * \brief Get name of the input file for the data-driven fluid model interpolation method.
- * \return Name of the input file for the interpolation method.
- */
- const string* GetDataDriven_FileNames(void) const { return DataDriven_Method_FileNames; }
-
- /*!
- * \brief Get number of listed look-up table or multi-layer perceptron input files.
- * \return Number of listed data-driven method input files.
- */
- unsigned short GetNDataDriven_Files(void) const { return n_Datadriven_files; }
-
- /*!
- * \brief Get Newton solver relaxation factor for data-driven fluid models.
- * \return Newton solver relaxation factor.
- */
- su2double GetRelaxation_DataDriven(void) const { return DataDriven_Relaxation_Factor; }
-
/*!
* \brief Returns the name of the fluid we are using in CoolProp.
*/
@@ -5490,6 +5358,12 @@ class CConfig {
*/
bool GetRead_Binary_Restart(void) const { return Read_Binary_Restart; }
+ /*!
+ * \brief Flag for whether restart files contain only necessary variables.
+ * \return Flag TRUE then the code will write compact restart files.
+ */
+ bool GetWrt_Restart_Compact(void) const { return Wrt_Restart_Compact; }
+
/*!
* \brief Flag for whether restart solution files are overwritten.
* \return Flag for overwriting. If Flag=false, iteration nr is appended to filename
@@ -6318,12 +6192,6 @@ class CConfig {
*/
bool GetAxisymmetric(void) const { return Axisymmetric; }
- /*!
- * \brief Get information about there is a smoothing of the grid coordinates.
- * \return TRUE if there is smoothing of the grid coordinates; otherwise FALSE.
- */
- unsigned short GetSmoothNumGrid(void) const { return SmoothNumGrid; }
-
/*!
* \brief Subtract one to the index of the finest grid (full multigrid strategy).
* \return Change the index of the finest grid.
@@ -8929,10 +8797,9 @@ class CConfig {
su2double GetAitkenDynMinInit(void) const { return AitkenDynMinInit; }
/*!
- * \brief Decide whether to apply dead loads to the model.
- * \return TRUE if the dead loads are to be applied, FALSE otherwise.
+ * \brief Decide whether to apply centrifugal forces to the model.
*/
- bool GetDeadLoad(void) const { return DeadLoad; }
+ bool GetCentrifugalForce(void) const { return CentrifugalForce; }
/*!
* \brief Identifies if the mesh is matching or not (temporary, while implementing interpolation procedures).
@@ -9594,6 +9461,12 @@ class CConfig {
*/
su2double GetMeshBoxOffset(unsigned short val_iDim) const { return mesh_box_offset[val_iDim]; }
+ /*!
+ * \brief Get the polynomial degree of the FEM solution for the analytic RECTANGLE or BOX.
+ * \return The polynomial degree of the FEM solution.
+ */
+ unsigned short GetMeshBoxPSolFEM(void) const { return Mesh_Box_PSolFEM; }
+
/*!
* \brief Get the number of screen output variables requested (maximum 6)
*/
@@ -9920,4 +9793,17 @@ class CConfig {
*/
LM_ParsedOptions GetLMParsedOptions() const { return lmParsedOptions; }
+
+ /*!
+ * \brief Get parsed option data structure for data-driven fluid model.
+ * \return option data structure for data-driven fluid model.
+ */
+ const DataDrivenFluid_ParsedOptions& GetDataDrivenParsedOptions() const { return datadriven_ParsedOptions; }
+
+ /*!
+ * \brief Get parsed option data structure for the flamelet fluid model.
+ * \return option data structure for the flamelet fluid model.
+ */
+ const FluidFlamelet_ParsedOptions& GetFlameletParsedOptions() const { return flamelet_ParsedOptions; }
+
};
diff --git a/Common/include/adt/CADTBaseClass.hpp b/Common/include/adt/CADTBaseClass.hpp
index bed3b53cc1c2..4e38a5daa890 100644
--- a/Common/include/adt/CADTBaseClass.hpp
+++ b/Common/include/adt/CADTBaseClass.hpp
@@ -2,14 +2,14 @@
* \file CADTBaseClass.hpp
* \brief Base class for storing an ADT in an arbitrary number of dimensions.
* \author E. van der Weide
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/adt/CADTComparePointClass.hpp b/Common/include/adt/CADTComparePointClass.hpp
index 6e3e06878f6f..21d139341a97 100644
--- a/Common/include/adt/CADTComparePointClass.hpp
+++ b/Common/include/adt/CADTComparePointClass.hpp
@@ -2,14 +2,14 @@
* \file CADTComparePointClass.hpp
* \brief subroutines for comparing two points in an alternating digital tree (ADT).
* \author E. van der Weide
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/adt/CADTElemClass.hpp b/Common/include/adt/CADTElemClass.hpp
index a85744c7fa7e..05295c30fbcc 100644
--- a/Common/include/adt/CADTElemClass.hpp
+++ b/Common/include/adt/CADTElemClass.hpp
@@ -2,14 +2,14 @@
* \file CADTElemClass.hpp
* \brief Class for storing an ADT of (linear) elements in an arbitrary number of dimensions.
* \author E. van der Weide
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -36,7 +36,7 @@
* \ingroup ADT
* \brief Class for storing an ADT of (linear) elements in an arbitrary number of dimensions.
* \author E. van der Weide
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*/
class CADTElemClass : public CADTBaseClass {
private:
diff --git a/Common/include/adt/CADTNodeClass.hpp b/Common/include/adt/CADTNodeClass.hpp
index 9e8a252d2b28..e82c180ce759 100644
--- a/Common/include/adt/CADTNodeClass.hpp
+++ b/Common/include/adt/CADTNodeClass.hpp
@@ -2,14 +2,14 @@
* \file CADTNodeClass.hpp
* \brief Class for storing the information needed in a node of an ADT.
* \author E. van der Weide
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/adt/CADTPointsOnlyClass.hpp b/Common/include/adt/CADTPointsOnlyClass.hpp
index fabec0d4b8cc..e3da91d448e0 100644
--- a/Common/include/adt/CADTPointsOnlyClass.hpp
+++ b/Common/include/adt/CADTPointsOnlyClass.hpp
@@ -2,14 +2,14 @@
* \file CADTPointsOnlyClass.hpp
* \brief Class for storing an ADT of only points in an arbitrary number of dimensions.
* \author E. van der Weide
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/adt/CBBoxTargetClass.hpp b/Common/include/adt/CBBoxTargetClass.hpp
index 9f78a2529b56..8dc5d5980aa3 100644
--- a/Common/include/adt/CBBoxTargetClass.hpp
+++ b/Common/include/adt/CBBoxTargetClass.hpp
@@ -3,14 +3,14 @@
* \brief Class for storing the information of a possible bounding box candidate
during a minimum distance search.
* \author E. van der Weide
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -35,7 +35,7 @@
* \brief Class for storing the information of a possible bounding box candidate
during a minimum distance search.
* \author E. van der Weide
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*/
struct CBBoxTargetClass {
unsigned long boundingBoxID; /*!< \brief Corresponding bounding box ID. */
diff --git a/Common/include/basic_types/ad_structure.hpp b/Common/include/basic_types/ad_structure.hpp
index de902141e89a..0bd979b9663a 100644
--- a/Common/include/basic_types/ad_structure.hpp
+++ b/Common/include/basic_types/ad_structure.hpp
@@ -2,14 +2,14 @@
* \file ad_structure.hpp
* \brief Main routines for the algorithmic differentiation (AD) structure.
* \author T. Albring, J. Blühdorn
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/basic_types/datatype_structure.hpp b/Common/include/basic_types/datatype_structure.hpp
index 1698cea3f43e..e16c223e8a69 100644
--- a/Common/include/basic_types/datatype_structure.hpp
+++ b/Common/include/basic_types/datatype_structure.hpp
@@ -2,14 +2,14 @@
* \file datatype_structure.hpp
* \brief Headers for generalized datatypes, defines an interface for AD types.
* \author T. Albring
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/code_config.hpp b/Common/include/code_config.hpp
index cbbf2c531535..48625f20bf44 100644
--- a/Common/include/code_config.hpp
+++ b/Common/include/code_config.hpp
@@ -2,14 +2,14 @@
* \file code_config.hpp
* \brief Header file for collecting common macros, definitions and type configurations.
* \author T. Albring, P. Gomes, J. Blühdorn
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/containers/C2DContainer.hpp b/Common/include/containers/C2DContainer.hpp
index 8eb62eb01e12..ced9af94d940 100644
--- a/Common/include/containers/C2DContainer.hpp
+++ b/Common/include/containers/C2DContainer.hpp
@@ -2,14 +2,14 @@
* \file C2DContainer.hpp
* \brief A templated vector/matrix object.
* \author P. Gomes
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/containers/CFastFindAndEraseQueue.hpp b/Common/include/containers/CFastFindAndEraseQueue.hpp
index d41713ca0d7b..69daaa0090df 100644
--- a/Common/include/containers/CFastFindAndEraseQueue.hpp
+++ b/Common/include/containers/CFastFindAndEraseQueue.hpp
@@ -3,14 +3,14 @@
* \brief A queue-type container (push back, pop front), but with
* fast deletion of arbitrary items (possibly in the middle).
* \author P. Gomes
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/containers/CFileReaderLUT.hpp b/Common/include/containers/CFileReaderLUT.hpp
index 3a92543318d6..edbf38941f9a 100644
--- a/Common/include/containers/CFileReaderLUT.hpp
+++ b/Common/include/containers/CFileReaderLUT.hpp
@@ -2,14 +2,14 @@
* \file CFileReaderLUT.hpp
* \brief reading lookup table for tabulated fluid properties
* \author D. Mayer, T. Economon
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/containers/CLookUpTable.hpp b/Common/include/containers/CLookUpTable.hpp
index 37052044530c..a66236bb42f8 100644
--- a/Common/include/containers/CLookUpTable.hpp
+++ b/Common/include/containers/CLookUpTable.hpp
@@ -2,14 +2,14 @@
* \file CLookupTable.hpp
* \brief tabulation of fluid properties
* \author D. Mayer, T. Economon
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/containers/CPyWrapperMatrixView.hpp b/Common/include/containers/CPyWrapperMatrixView.hpp
index bd02adaf747e..9a39ef3badf9 100644
--- a/Common/include/containers/CPyWrapperMatrixView.hpp
+++ b/Common/include/containers/CPyWrapperMatrixView.hpp
@@ -2,14 +2,14 @@
* \file CPyWrapperMatrixView.hpp
* \brief Simple matrix views to use with the python wrapper.
* \author P. Gomes
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/containers/CTrapezoidalMap.hpp b/Common/include/containers/CTrapezoidalMap.hpp
index 98bc41b0caad..5a00ec29b720 100644
--- a/Common/include/containers/CTrapezoidalMap.hpp
+++ b/Common/include/containers/CTrapezoidalMap.hpp
@@ -2,14 +2,14 @@
* \file CTrapezoidalMap.hpp
* \brief Implementation of the trapezoidal map for tabulation and lookup of fluid properties
* \author D. Mayer, T. Economon
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -38,7 +38,7 @@
* \ingroup LookUpInterp
* \brief Construction of trapezoidal map for tabulated lookup
* \author: D. Mayer, T. Economon
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*/
class CTrapezoidalMap {
protected:
diff --git a/Common/include/containers/CVertexMap.hpp b/Common/include/containers/CVertexMap.hpp
index fd25c090f309..1e2e66d57e85 100644
--- a/Common/include/containers/CVertexMap.hpp
+++ b/Common/include/containers/CVertexMap.hpp
@@ -2,14 +2,14 @@
* \file CVertexMap.hpp
* \brief An index to index lookup vector.
* \author P. Gomes
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/containers/container_decorators.hpp b/Common/include/containers/container_decorators.hpp
index 593a18cd2c39..0c2eae1c296d 100644
--- a/Common/include/containers/container_decorators.hpp
+++ b/Common/include/containers/container_decorators.hpp
@@ -3,14 +3,14 @@
* \brief Collection of small classes that decorate C2DContainer to
* augment its functionality, e.g. give it extra dimensions.
* \author P. Gomes
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/fem/fem_cgns_elements.hpp b/Common/include/fem/fem_cgns_elements.hpp
deleted file mode 100644
index f3debaeb0ea3..000000000000
--- a/Common/include/fem/fem_cgns_elements.hpp
+++ /dev/null
@@ -1,198 +0,0 @@
-/*!
- * \file fem_cgns_elements.hpp
- * \brief Headers of the classes and functions for reading CGNS files
- * with high order elements.
- * The functions are in the cgns_elements.cpp file.
- * \author E. van der Weide
- * \version 8.1.0 "Harrier"
- *
- * SU2 Project Website: https://su2code.github.io
- *
- * The SU2 Project is maintained by the SU2 Foundation
- * (http://su2foundation.org)
- *
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
- *
- * SU2 is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * SU2 is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with SU2. If not, see .
- */
-
-#pragma once
-
-#include "../parallelization/mpi_structure.hpp"
-
-#ifdef HAVE_CGNS
-#include "cgnslib.h"
-#endif
-
-#include "../geometry/primal_grid/CPrimalGridFEM.hpp"
-
-/* Forward declaration of CBoundaryFace to avoid problems. */
-class CBoundaryFace;
-
-#ifdef HAVE_CGNS
-#if CGNS_VERSION >= 3300
-
-/*!
- * \class CCGNSElementType
- * \brief Class which stores the CGNS element type info for a connectivity section.
- */
-
-class CCGNSElementType {
- public:
- int connID; /*!< \brief CGNS connectivity ID of this connectivity. */
- ElementType_t elemType; /*!< \brief Element type according to the CGNS convention,
- possibly MIXED. */
- cgsize_t indBeg; /*!< \brief Index of the first element in the CGNS connectivity. */
- cgsize_t indEnd; /*!< \brief Index of the last element in the CGNS connectivity. */
- cgsize_t nElem; /*!< \brief Number of elements present for this element type. */
-
- std::string connName; /*!< \brief Name of this connectivity. */
-
- bool volumeConn; /*!< \brief Whether or not this is a volume connectivity. */
- bool surfaceConn; /*!< \brief Whether or not this is a surface connectivity. */
-
- /* Standard constructor, nothing to be done. */
- CCGNSElementType() {}
-
- /* Destructor, nothing to be done. */
- ~CCGNSElementType() {}
-
- /*--- Member function, which determines the meta data for this element type. ---*/
- void DetermineMetaData(const unsigned short nDim, const int fn, const int iBase, const int iZone, const int iConn);
-
- /*--- Member function, which reads the required boundary connectivity range. ---*/
- void ReadBoundaryConnectivityRange(const int fn, const int iBase, const int iZone, const unsigned long offsetRank,
- const unsigned long nBoundElemRank, const unsigned long startingBoundElemIDRank,
- unsigned long& locBoundElemCount, std::vector& boundElems);
-
- /*--- Member function, which reads the required connectivity range. ---*/
- void ReadConnectivityRange(const int fn, const int iBase, const int iZone, const unsigned long offsetRank,
- const unsigned long nElemRank, const unsigned long startingElemIDRank, CPrimalGrid**& elem,
- unsigned long& locElemCount, unsigned long& nDOFsLoc);
-
- private:
- /*--- Member function, which creates the required data for the given
- element type. ---*/
- void CreateDataElementType(const ElementType_t typeElem, unsigned short& VTK_Type, unsigned short& nPoly,
- unsigned short& nDOFs, std::vector& SU2ToCGNS);
-
- /*--- Member function, which determines the element dimension, i.e. the
- number of parametric coordinates. ---*/
- unsigned short DetermineElementDimension(const int fn, const int iBase, const int iZone);
-
- /*--- Member function, which determines the element dimension when the
- connectivity is mixed. ---*/
- unsigned short DetermineElementDimensionMixed(const int fn, const int iBase, const int iZone);
-
- /*--- Member function, which determines the corresponding index of the
- given element in the stored types. If not present, a new index
- is created. ---*/
- unsigned short IndexInStoredTypes(const ElementType_t typeElem, std::vector& CGNS_Type,
- std::vector& VTK_Type, std::vector& nPoly,
- std::vector& nDOFs,
- std::vector >& SU2ToCGNS);
-
- /*--- Functions to create the conversion data from CGNS format to SU2 format
- for all the supported CGNS elements. ---*/
- void CreateDataNODE(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
- std::vector& SU2ToCGNS);
-
- void CreateDataBAR_2(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
- std::vector& SU2ToCGNS);
-
- void CreateDataBAR_3(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
- std::vector& SU2ToCGNS);
-
- void CreateDataBAR_4(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
- std::vector& SU2ToCGNS);
-
- void CreateDataBAR_5(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
- std::vector& SU2ToCGNS);
-
- void CreateDataTRI_3(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
- std::vector& SU2ToCGNS);
-
- void CreateDataTRI_6(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
- std::vector& SU2ToCGNS);
-
- void CreateDataTRI_10(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
- std::vector& SU2ToCGNS);
-
- void CreateDataTRI_15(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
- std::vector& SU2ToCGNS);
-
- void CreateDataQUAD_4(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
- std::vector& SU2ToCGNS);
-
- void CreateDataQUAD_9(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
- std::vector& SU2ToCGNS);
-
- void CreateDataQUAD_16(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
- std::vector& SU2ToCGNS);
-
- void CreateDataQUAD_25(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
- std::vector& SU2ToCGNS);
-
- void CreateDataTETRA_4(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
- std::vector& SU2ToCGNS);
-
- void CreateDataTETRA_10(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
- std::vector& SU2ToCGNS);
-
- void CreateDataTETRA_20(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
- std::vector& SU2ToCGNS);
-
- void CreateDataTETRA_35(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
- std::vector& SU2ToCGNS);
-
- void CreateDataPYRA_5(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
- std::vector& SU2ToCGNS);
-
- void CreateDataPYRA_14(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
- std::vector& SU2ToCGNS);
-
- void CreateDataPYRA_30(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
- std::vector& SU2ToCGNS);
-
- void CreateDataPYRA_55(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
- std::vector& SU2ToCGNS);
-
- void CreateDataPENTA_6(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
- std::vector& SU2ToCGNS);
-
- void CreateDataPENTA_18(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
- std::vector& SU2ToCGNS);
-
- void CreateDataPENTA_40(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
- std::vector& SU2ToCGNS);
-
- void CreateDataPENTA_75(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
- std::vector& SU2ToCGNS);
-
- void CreateDataHEXA_8(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
- std::vector& SU2ToCGNS);
-
- void CreateDataHEXA_27(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
- std::vector& SU2ToCGNS);
-
- void CreateDataHEXA_64(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
- std::vector& SU2ToCGNS);
-
- void CreateDataHEXA_125(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
- std::vector& SU2ToCGNS);
-};
-#endif
-#endif
-
-using namespace std;
diff --git a/Common/include/fem/fem_gauss_jacobi_quadrature.hpp b/Common/include/fem/fem_gauss_jacobi_quadrature.hpp
index 2b20d9ed8609..927ed016f311 100644
--- a/Common/include/fem/fem_gauss_jacobi_quadrature.hpp
+++ b/Common/include/fem/fem_gauss_jacobi_quadrature.hpp
@@ -6,14 +6,14 @@
All the functions in this class are based on the program JACOBI_RULE
of John Burkardt.
* \author E. van der Weide
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -95,7 +95,7 @@ using namespace std;
* \brief Class used to determine the quadrature points of the Gauss Jacobi
integration rules.
* \author E. van der Weide
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*/
class CGaussJacobiQuadrature {
public:
diff --git a/Common/include/fem/fem_geometry_structure.hpp b/Common/include/fem/fem_geometry_structure.hpp
index 4d3e9cc367d0..71813f96a5bc 100644
--- a/Common/include/fem/fem_geometry_structure.hpp
+++ b/Common/include/fem/fem_geometry_structure.hpp
@@ -3,14 +3,14 @@
* \brief Headers of the main subroutines for creating the geometrical structure for the FEM solver.
* The subroutines and functions are in the fem_geometry_structure.cpp file.
* \author E. van der Weide
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -30,162 +30,17 @@
#include "../geometry/CGeometry.hpp"
#include "fem_standard_element.hpp"
-#ifdef HAVE_CGNS
-#include "fem_cgns_elements.hpp"
-#endif
#include "../wall_model.hpp"
#include "../linear_algebra/blas_structure.hpp"
+#include "../toolboxes/fem/CFaceOfElement.hpp"
using namespace std;
-/*!
- * \class CLong3T
- * \brief Help class used to store three longs as one entity.
- * \version 8.1.0 "Harrier"
- */
-struct CLong3T {
- long long0 = 0; /*!< \brief First long to store in this class. */
- long long1 = 0; /*!< \brief Second long to store in this class. */
- long long2 = 0; /*!< \brief Third long to store in this class. */
-
- CLong3T() = default;
-
- CLong3T(const long a, const long b, const long c) {
- long0 = a;
- long1 = b;
- long2 = c;
- }
-
- bool operator<(const CLong3T& other) const;
-};
-
-/*!
- * \class CReorderElements
- * \brief Class, used to reorder the owned elements after the partitioning.
- * \author E. van der Weide
- * \version 8.1.0 "Harrier"
- */
-class CReorderElements {
- private:
- unsigned long globalElemID; /*!< \brief Global element ID of the element. */
- unsigned short timeLevel; /*!< \brief Time level of the element. Only relevant
- for time accurate local time stepping. */
- bool commSolution; /*!< \brief Whether or not the solution must be
- communicated to other ranks. */
- unsigned short elemType; /*!< \brief Short hand for the element type, Which
- stored info of the VTK_Type, polynomial
- degree of the solution and whether or
- not the Jacobian is constant. */
- public:
- /*!
- * \brief Constructor of the class, set the member variables to the arguments.
- */
- CReorderElements(const unsigned long val_GlobalElemID, const unsigned short val_TimeLevel,
- const bool val_CommSolution, const unsigned short val_VTK_Type, const unsigned short val_nPolySol,
- const bool val_JacConstant);
-
- /*!
- * \brief Default constructor of the class. Disabled.
- */
- CReorderElements(void) = delete;
-
- /*!
- * \brief Less than operator of the class. Needed for the sorting.
- */
- bool operator<(const CReorderElements& other) const;
-
- /*!
- * \brief Function to make available the variable commSolution.
- * \return Whether or not the solution of the element must be communicated.
- */
- inline bool GetCommSolution(void) const { return commSolution; }
-
- /*!
- * \brief Function to make available the element type of the element.
- * \return The value of elemType, which stores the VTK type, polynomial degree
- and whether or not the Jacobian is constant.
- */
- inline unsigned short GetElemType(void) const { return elemType; }
-
- /*!
- * \brief Function to make available the global element ID.
- * \return The global element ID of the element.
- */
- inline unsigned long GetGlobalElemID(void) const { return globalElemID; }
-
- /*!
- * \brief Function to make available the time level.
- * \return The time level of the element.
- */
- inline unsigned short GetTimeLevel(void) const { return timeLevel; }
-
- /*!
- * \brief Function, which sets the value of commSolution.
- * \param[in] val_CommSolution - value to which commSolution must be set.
- */
- inline void SetCommSolution(const bool val_CommSolution) { commSolution = val_CommSolution; }
-};
-
-/*!
- * \class CSortFaces
- * \brief Functor, used for a different sorting of the faces than the < operator
- * of CFaceOfElement.
- * \author E. van der Weide
- * \version 8.1.0 "Harrier"
- */
-class CVolumeElementFEM; // Forward declaration to avoid problems.
-class CSortFaces {
- private:
- unsigned long nVolElemOwned; /*!< \brief Number of locally owned volume elements. */
- unsigned long nVolElemTot; /*!< \brief Total number of local volume elements . */
-
- const CVolumeElementFEM* volElem; /*!< \brief The locally stored volume elements. */
-
- public:
- /*!
- * \brief Constructor of the class. Set the values of the member variables.
- */
- CSortFaces(unsigned long val_nVolElemOwned, unsigned long val_nVolElemTot, const CVolumeElementFEM* val_volElem) {
- nVolElemOwned = val_nVolElemOwned;
- nVolElemTot = val_nVolElemTot;
- volElem = val_volElem;
- }
-
- /*!
- * \brief Default constructor of the class. Disabled.
- */
- CSortFaces(void) = delete;
-
- /*!
- * \brief Operator used for the comparison.
- * \param[in] f0 - First face in the comparison.
- * \param[in] f1 - Second face in the comparison.
- */
- bool operator()(const CFaceOfElement& f0, const CFaceOfElement& f1);
-};
-
-/*!
- * \class CSortBoundaryFaces
- * \brief Functor, used for a different sorting of the faces than the < operator
- * of CSurfaceElementFEM.
- * \author E. van der Weide
- * \version 8.1.0 "Harrier"
- */
-struct CSurfaceElementFEM; // Forward declaration to avoid problems.
-struct CSortBoundaryFaces {
- /*!
- * \brief Operator used for the comparison.
- * \param[in] f0 - First boundary face in the comparison.
- * \param[in] f1 - Second boundary face in the comparison.
- */
- bool operator()(const CSurfaceElementFEM& f0, const CSurfaceElementFEM& f1);
-};
-
/*!
* \class CVolumeElementFEM
* \brief Class to store a volume element for the FEM solver.
* \author E. van der Weide
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*/
class CVolumeElementFEM {
public:
@@ -274,9 +129,9 @@ class CVolumeElementFEM {
/*!
* \class CPointFEM
- * \brief Class to a point for the FEM solver.
+ * \brief Class to store a point for the FEM solver.
* \author E. van der Weide
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*/
struct CPointFEM {
unsigned long globalID; /*!< \brief The global ID of this point in the grid. */
@@ -300,7 +155,7 @@ struct CPointFEM {
* \class CInternalFaceElementFEM
* \brief Class to store an internal face for the FEM solver.
* \author E. van der Weide
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*/
struct CInternalFaceElementFEM {
unsigned short VTK_Type; /*!< \brief Element type using the VTK convention. */
@@ -344,7 +199,7 @@ struct CInternalFaceElementFEM {
* \class CSurfaceElementFEM
* \brief Class to store a surface element for the FEM solver.
* \author E. van der Weide
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*/
struct CSurfaceElementFEM {
unsigned short VTK_Type; /*!< \brief Element type using the VTK convention. */
@@ -405,7 +260,7 @@ struct CSurfaceElementFEM {
* \class CBoundaryFEM
* \brief Class to store a boundary for the FEM solver.
* \author E. van der Weide
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*/
struct CBoundaryFEM {
string markerTag; /*!< \brief Marker tag of this boundary. */
@@ -428,7 +283,7 @@ struct CBoundaryFEM {
* \class CMeshFEM
* \brief Base class for the FEM solver.
* \author E. van der Weide
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*/
class CMeshFEM : public CGeometry {
protected:
@@ -693,7 +548,7 @@ class CMeshFEM : public CGeometry {
* \class CMeshFEM_DG
* \brief Class which contains all the variables for the DG FEM solver.
* \author E. van der Weide
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*/
class CMeshFEM_DG : public CMeshFEM {
protected:
diff --git a/Common/include/fem/fem_standard_element.hpp b/Common/include/fem/fem_standard_element.hpp
index b074dac7d0b0..5e0d5075394d 100644
--- a/Common/include/fem/fem_standard_element.hpp
+++ b/Common/include/fem/fem_standard_element.hpp
@@ -3,14 +3,14 @@
* \brief Headers of the main functions for the FEM standard elements.
* The functions are in the fem_standard_element.cpp file.
* \author E. van der Weide
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -40,7 +40,7 @@ using namespace std;
* \class CFEMStandardElementBase
* \brief Base class for a FEM standard element.
* \author E. van der Weide
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*/
class CFEMStandardElementBase {
protected:
@@ -668,7 +668,7 @@ class CFEMStandardElementBase {
* \class CFEMStandardElement
* \brief Class to define a FEM standard element.
* \author E. van der Weide
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*/
class CFEMStandardElement : public CFEMStandardElementBase {
private:
@@ -990,7 +990,7 @@ class CFEMStandardElement : public CFEMStandardElementBase {
type. This information is used to determine a well balanced partition.
* \param[in] config - Object, which contains the input parameters.
*/
- su2double WorkEstimateMetis(CConfig* config);
+ passivedouble WorkEstimateMetis(CConfig* config);
private:
/*!
@@ -1101,7 +1101,7 @@ class CFEMStandardElement : public CFEMStandardElementBase {
* \class CFEMStandardInternalFace
* \brief Class to define a FEM standard internal face.
* \author E. van der Weide
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*/
class CFEMStandardInternalFace : public CFEMStandardElementBase {
private:
@@ -1420,7 +1420,7 @@ class CFEMStandardInternalFace : public CFEMStandardElementBase {
type. This information is used to determine a well balanced partition.
* \param[in] config - Object, which contains the input parameters.
*/
- su2double WorkEstimateMetis(CConfig* config);
+ passivedouble WorkEstimateMetis(CConfig* config);
private:
/*!
@@ -1434,7 +1434,7 @@ class CFEMStandardInternalFace : public CFEMStandardElementBase {
* \class CFEMStandardBoundaryFace
* \brief Class to define a FEM standard boundary face.
* \author E. van der Weide
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*/
class CFEMStandardBoundaryFace : public CFEMStandardElementBase {
private:
@@ -1636,7 +1636,7 @@ class CFEMStandardBoundaryFace : public CFEMStandardElementBase {
type. This information is used to determine a well balanced partition.
* \param[in] config - Object, which contains the input parameters.
*/
- su2double WorkEstimateMetis(CConfig* config);
+ passivedouble WorkEstimateMetis(CConfig* config);
/*!
* \brief Function, which estimates the additional amount of work for an element
@@ -1645,7 +1645,7 @@ class CFEMStandardBoundaryFace : public CFEMStandardElementBase {
* \param[in] config - Object, which contains the input parameters.
* \param[in] nPointsWF - Number of points to discretize the wall model.
*/
- su2double WorkEstimateMetisWallFunctions(CConfig* config, const unsigned short nPointsWF);
+ passivedouble WorkEstimateMetisWallFunctions(CConfig* config, const unsigned short nPointsWF);
private:
/*!
diff --git a/Common/include/geometry/CDummyGeometry.hpp b/Common/include/geometry/CDummyGeometry.hpp
index 0a50819d6c8c..50ad921999dd 100644
--- a/Common/include/geometry/CDummyGeometry.hpp
+++ b/Common/include/geometry/CDummyGeometry.hpp
@@ -2,14 +2,14 @@
* \file CDummyGeometry.hpp
* \brief Headers of the dummy geometry class used in "dry run" mode.
* \author T. Albring
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/geometry/CGeometry.hpp b/Common/include/geometry/CGeometry.hpp
index 738618ba2cd0..a345f72c046f 100644
--- a/Common/include/geometry/CGeometry.hpp
+++ b/Common/include/geometry/CGeometry.hpp
@@ -3,14 +3,14 @@
* \brief Headers of the main subroutines for creating the geometrical structure.
* The subroutines and functions are in the CGeometry.cpp file.
* \author F. Palacios, T. Economon
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -60,7 +60,6 @@ extern "C" {
#include "dual_grid/CTurboVertex.hpp"
#include "../CConfig.hpp"
-#include "../fem/geometry_structure_fem_part.hpp"
#include "../toolboxes/graph_toolbox.hpp"
#include "../adt/CADTElemClass.hpp"
@@ -244,6 +243,8 @@ class CGeometry {
/*!< \brief Corrected normals on nodes with shared symmetry markers. */
vector>> symmetryNormals;
+ /*!< \brief Bool if boundary-marker is straight(2D)/plane(3D) for each local marker. */
+ vector boundIsStraight;
vector SurfaceAreaCfgFile; /*!< \brief Total Surface area for all markers. */
/*--- Partitioning-specific variables ---*/
@@ -913,14 +914,6 @@ class CGeometry {
*/
inline virtual void SetMultiGridWallTemperature(const CGeometry* fine_grid, unsigned short val_marker) {}
- /*!
- * \brief A virtual member.
- * \param[in] val_nSmooth - Number of smoothing iterations.
- * \param[in] val_smooth_coeff - Relaxation factor.
- * \param[in] config - Definition of the particular problem.
- */
- inline virtual void SetCoord_Smoothing(unsigned short val_nSmooth, su2double val_smooth_coeff, CConfig* config) {}
-
/*!
* \brief A virtual member.
* \param[in] fine_grid - Geometrical definition of the child grid (for multigrid).
@@ -1014,6 +1007,15 @@ class CGeometry {
*/
su2double GetSurfaceArea(const CConfig* config, unsigned short val_marker) const;
+ /*!
+ * \brief Check if a boundary is straight(2D) / plane(3D) for EULER_WALL and SYMMETRY_PLANE
+ * only and store the information in boundIsStraight. For all other boundary types
+ * this will return false and could therfore be wrong. Used ultimately for BC_Slip_Wall.
+ * \param[in] config - Definition of the particular problem.
+ * \param[in] print_on_screen - Boolean whether to print result on screen.
+ */
+ void ComputeSurfStraightness(const CConfig* config, bool print_on_screen);
+
/*!
* \brief Find and store all vertices on a sharp corner in the geometry.
* \param[in] config - Definition of the particular problem.
diff --git a/Common/include/geometry/CMultiGridGeometry.hpp b/Common/include/geometry/CMultiGridGeometry.hpp
index c3e897f7f311..3fd34a6fd4ff 100644
--- a/Common/include/geometry/CMultiGridGeometry.hpp
+++ b/Common/include/geometry/CMultiGridGeometry.hpp
@@ -2,14 +2,14 @@
* \file CMultiGridGeometry.hpp
* \brief Headers of the multigrid geometry class.
* \author F. Palacios, T. Economon
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -123,7 +123,7 @@ class CMultiGridGeometry final : public CGeometry {
void SetRestricted_GridVelocity(const CGeometry* fine_grid) override;
/*!
- * \brief Find and store the closest neighbor to a vertex.
+ * \brief Find and store the closest, most normal, neighbor to a vertex.
* \param[in] config - Definition of the particular problem.
*/
void FindNormal_Neighbor(const CConfig* config) override;
diff --git a/Common/include/geometry/CMultiGridQueue.hpp b/Common/include/geometry/CMultiGridQueue.hpp
index 0e48f9385179..79c0deeb0a00 100644
--- a/Common/include/geometry/CMultiGridQueue.hpp
+++ b/Common/include/geometry/CMultiGridQueue.hpp
@@ -3,14 +3,14 @@
* \brief Header of the multigrid queue class for the FVM solver.
* The subroutines and functions are in the CMultiGridQueue.cpp file.
* \author F. Palacios
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/geometry/CPhysicalGeometry.hpp b/Common/include/geometry/CPhysicalGeometry.hpp
index 8214e4ea7f0d..1148471f1c3e 100644
--- a/Common/include/geometry/CPhysicalGeometry.hpp
+++ b/Common/include/geometry/CPhysicalGeometry.hpp
@@ -2,14 +2,14 @@
* \file CPhysicalGeometry.hpp
* \brief Headers of the physical geometry class used to read meshes from file.
* \author F. Palacios, T. Economon
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -28,8 +28,10 @@
#pragma once
#include "CGeometry.hpp"
-#include "meshreader/CMeshReaderFVM.hpp"
+#include "meshreader/CMeshReaderBase.hpp"
#include "../containers/C2DContainer.hpp"
+#include "../toolboxes/classes_multiple_integers.hpp"
+#include "../toolboxes/fem/CFaceOfElement.hpp"
/*!
* \class CPhysicalGeometry
@@ -285,51 +287,49 @@ class CPhysicalGeometry final : public CGeometry {
* \param[in] val_iZone - Domain to be read from the grid file.
* \param[in] val_nZone - Total number of domains in the grid file.
*/
- void Read_Mesh_FVM(CConfig* config, const string& val_mesh_filename, unsigned short val_iZone,
- unsigned short val_nZone);
+ void Read_Mesh(CConfig* config, const string& val_mesh_filename, unsigned short val_iZone, unsigned short val_nZone);
/*!
- * \brief Reads for the FEM solver the geometry of the grid and adjust the boundary
- * conditions with the configuration file in parallel (for parmetis).
- * \param[in] config - Definition of the particular problem.
- * \param[in] val_mesh_filename - Name of the file with the grid information.
- * \param[in] val_iZone - Domain to be read from the grid file.
- * \param[in] val_nZone - Total number of domains in the grid file.
- */
- void Read_SU2_Format_Parallel_FEM(CConfig* config, const string& val_mesh_filename, unsigned short val_iZone,
- unsigned short val_nZone);
-
- /*!
- * \brief Reads for the FEM solver the geometry of the grid and adjust the boundary
- * conditions with the configuration file in parallel (for parmetis).
- * \param[in] config - Definition of the particular problem.
- * \param[in] val_mesh_filename - Name of the file with the grid information.
- * \param[in] val_iZone - Domain to be read from the grid file.
- * \param[in] val_nZone - Total number of domains in the grid file.
+ * \brief Routine to load the CGNS grid points from a single zone into the proper SU2 data structures.
+ * \param[in] config - definition of the particular problem.
+ * \param[in] mesh - mesh reader object containing the current zone data.
*/
- void Read_CGNS_Format_Parallel_FEM(CConfig* config, const string& val_mesh_filename, unsigned short val_iZone,
- unsigned short val_nZone);
+ void LoadLinearlyPartitionedPoints(CConfig* config, CMeshReaderBase* mesh);
/*!
- * \brief Routine to load the CGNS grid points from a single zone into the proper SU2 data structures.
+ * \brief Routine to load the grid points from a single zone into the proper SU2 data structures for the FEM solver.
* \param[in] config - definition of the particular problem.
* \param[in] mesh - mesh reader object containing the current zone data.
*/
- void LoadLinearlyPartitionedPoints(CConfig* config, CMeshReaderFVM* mesh);
+ void LoadLinearlyPartitionedPointsFEM(CConfig* config, CMeshReaderBase* mesh);
/*!
* \brief Loads the interior volume elements from the mesh reader object into the primal element data structures.
* \param[in] config - definition of the particular problem.
* \param[in] mesh - mesh reader object containing the current zone data.
*/
- void LoadLinearlyPartitionedVolumeElements(CConfig* config, CMeshReaderFVM* mesh);
+ void LoadLinearlyPartitionedVolumeElements(CConfig* config, CMeshReaderBase* mesh);
+
+ /*!
+ * \brief Loads the interior volume elements from the mesh reader object into the primal element data structures for
+ * the FEM solver. \param[in] config - definition of the particular problem. \param[in] mesh - mesh reader object
+ * containing the current zone data.
+ */
+ void LoadLinearlyPartitionedVolumeElementsFEM(CConfig* config, CMeshReaderBase* mesh);
/*!
* \brief Loads the boundary elements (markers) from the mesh reader object into the primal element data structures.
* \param[in] config - definition of the particular problem.
* \param[in] mesh - mesh reader object containing the current zone data.
*/
- void LoadUnpartitionedSurfaceElements(CConfig* config, CMeshReaderFVM* mesh);
+ void LoadUnpartitionedSurfaceElements(CConfig* config, CMeshReaderBase* mesh);
+
+ /*!
+ * \brief Loads the boundary elements (markers) from the mesh reader object into the primal element data structures
+ * for the FEM solver. \param[in] config - definition of the particular problem. \param[in] mesh - mesh reader
+ * object containing the current zone data.
+ */
+ void LoadLinearlyPartitionedSurfaceElementsFEM(CConfig* config, CMeshReaderBase* mesh);
/*!
* \brief Prepares the grid point adjacency based on a linearly partitioned mesh object needed by ParMETIS for graph
@@ -499,6 +499,34 @@ class CPhysicalGeometry final : public CGeometry {
*/
void SetColorFEMGrid_Parallel(CConfig* config) override;
+ /*!
+ * \brief Determine the donor elements for the boundary elements on viscous
+ wall boundaries when wall functions are used.
+ * \param[in] config - Definition of the particular problem.
+ */
+ void DetermineDonorElementsWallFunctions(CConfig* config);
+
+#ifdef HAVE_MPI
+#ifdef HAVE_PARMETIS
+ /*!
+ * \brief Function, which converts the input the format for ParMETIS and calls
+ * ParMETIS to determine the actual colors of the elements.
+ * \param[in] adjacency - Adjacency information of the elements.
+ * \param[in] vwgt - Weights of the vertices of the graph, which are the elements.
+ * \param[in] adjwgt - Weights of the adjacencies of the graph.
+ */
+ void DetermineFEMColorsViaParMETIS(vector >& adjacency, vector& vwgt,
+ vector >& adjwgt);
+#endif
+#endif
+
+ /*!
+ * \brief Determine whether or not the Jacobians of the elements and faces
+ are constant and a length scale of the elements.
+ * \param[in] config - Definition of the particular problem.
+ */
+ void DetermineFEMConstantJacobiansAndLenScale(CConfig* config);
+
/*!
* \brief Compute the weights of the FEM graph for ParMETIS.
* \param[in] config - Definition of the particular problem.
@@ -509,24 +537,44 @@ class CPhysicalGeometry final : public CGeometry {
* \param[out] vwgt - Weights of the vertices of the graph, i.e. the elements.
* \param[out] adjwgt - Weights of the edges of the graph.
*/
- void ComputeFEMGraphWeights(CConfig* config, const vector& localFaces,
- const vector >& adjacency,
- const map& mapExternalElemIDToTimeLevel,
- vector& vwgt, vector >& adjwgt);
+ void DetermineFEMGraphWeights(CConfig* config, const vector& localFaces,
+ const vector >& adjacency,
+ const map& mapExternalElemIDToTimeLevel,
+ vector& vwgt, vector >& adjwgt);
/*!
- * \brief Determine the donor elements for the boundary elements on viscous
- wall boundaries when wall functions are used.
- * \param[in] config - Definition of the particular problem.
+ * \brief Function, which determines the adjacency information of the graph
+ * representation of the grid.
+ * \param[in] localFaces - Vector containing the local matching faces of the FEM grid.
+ * \param[out] adjacency - Vector of vectors to store the adjacency.
*/
- void DetermineDonorElementsWallFunctions(CConfig* config);
+ void DetermineGraphAdjacency(const vector& localFaces, vector >& adjacency);
/*!
- * \brief Determine whether or not the Jacobians of the elements and faces
- are constant and a length scale of the elements.
- * \param[in] config - Definition of the particular problem.
+ * \brief Function, which determines the matching faces of a FEM grid.
+ * \param[in] config - Definition of the particular problem.
+ * \param[out] localFaces - Vector containing the local faces of the FEM grid.
+ * On output the matching faces are stored as one face.
*/
- void DetermineFEMConstantJacobiansAndLenScale(CConfig* config);
+ void DetermineMatchingFacesFEMGrid(const CConfig* config, vector& localFaces);
+
+ /*!
+ * \brief Function, which determines the non-matching faces of a FEM grid.
+ * \param[in] config - Definition of the particular problem.
+ * \param[in,out] localMatchingFaces - Vector containing the local faces of the FEM grid.
+ * On output the non-matching faces are removed.
+ */
+ void DetermineNonMatchingFacesFEMGrid(const CConfig* config, vector& localMatchingFaces);
+
+ /*!
+ * \brief Function, which determines the owner of the internal faces, i.e. which element
+ * is responsible for computing the fluxes through the face.
+ * \param[in] localFaces - Vector, which contains the element faces of this rank.
+ * \param[out] mapExternalElemIDToTimeLevel - Map from the external element ID's to their time level and number of
+ * DOFs.
+ */
+ void DetermineOwnershipInternalFaces(vector& localFaces,
+ map& mapExternalElemIDToTimeLevel);
/*!
* \brief Determine the neighboring information for periodic faces of a FEM grid.
@@ -546,12 +594,11 @@ class CPhysicalGeometry final : public CGeometry {
map& mapExternalElemIDToTimeLevel);
/*!
- * \brief Do an implicit smoothing of the grid coordinates.
- * \param[in] val_nSmooth - Number of smoothing iterations.
- * \param[in] val_smooth_coeff - Relaxation factor.
- * \param[in] config - Definition of the particular problem.
+ * \brief Function, which stores the information of the local matching faces in the
+ * data structures of the local elements.
+ * \param[in] localFaces - Vector, which contains the internal matching faces of this rank.
*/
- void SetCoord_Smoothing(unsigned short val_nSmooth, su2double val_smooth_coeff, CConfig* config) override;
+ void StoreFaceInfoInLocalElements(const vector& localFaces);
/*!
* \brief Compute 3 grid quality metrics: orthogonality angle, dual cell aspect ratio, and dual cell volume ratio.
@@ -560,7 +607,7 @@ class CPhysicalGeometry final : public CGeometry {
void ComputeMeshQualityStatistics(const CConfig* config) override;
/*!
- * \brief Find and store the closest neighbor to a vertex.
+ * \brief Find and store the closest, most normal, neighbor to a vertex.
* \param[in] config - Definition of the particular problem.
*/
void FindNormal_Neighbor(const CConfig* config) override;
diff --git a/Common/include/geometry/dual_grid/CDualGrid.hpp b/Common/include/geometry/dual_grid/CDualGrid.hpp
index cee0b4f68780..7a8c4d41f0a1 100644
--- a/Common/include/geometry/dual_grid/CDualGrid.hpp
+++ b/Common/include/geometry/dual_grid/CDualGrid.hpp
@@ -3,14 +3,14 @@
* \brief Headers of the main subroutines for doing the complete dual grid structure.
* The subroutines and functions are in the CDualGrid.cpp file.
* \author F. Palacios, T. Economon
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/geometry/dual_grid/CEdge.hpp b/Common/include/geometry/dual_grid/CEdge.hpp
index d6b38d59cd3b..a29d0f993d7d 100644
--- a/Common/include/geometry/dual_grid/CEdge.hpp
+++ b/Common/include/geometry/dual_grid/CEdge.hpp
@@ -2,14 +2,14 @@
* \file CEdge.hpp
* \brief Declaration of the edge class CEdge.cpp file.
* \author F. Palacios, T. Economon
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/geometry/dual_grid/CPoint.hpp b/Common/include/geometry/dual_grid/CPoint.hpp
index 17d540a2a7b7..f3912aa2a2de 100644
--- a/Common/include/geometry/dual_grid/CPoint.hpp
+++ b/Common/include/geometry/dual_grid/CPoint.hpp
@@ -3,14 +3,14 @@
* \brief Declaration of the point class that stores geometric and adjacency
* information for dual control volumes.
* \author F. Palacios, T. Economon
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -771,14 +771,14 @@ class CPoint {
}
/*!
- * \brief Get the value of the old coordinates for implicit smoothing.
+ * \brief Get the value of the old coordinates.
* \param[in] iPoint - Index of the point.
* \return Old coordinates at a point.
*/
inline su2double* GetCoord_Old(unsigned long iPoint) { return Coord_Old[iPoint]; }
/*!
- * \brief Set the value of the vector Coord_Old for implicit smoothing.
+ * \brief Set the value of the vector Coord_Old.
* \param[in] iPoint - Index of the point.
* \param[in] coord_old - Value of the coordinates.
*/
@@ -791,27 +791,6 @@ class CPoint {
*/
void SetCoord_Old();
- /*!
- * \brief Get the value of the summed coordinates for implicit smoothing.
- * \param[in] iPoint - Index of the point.
- * \return Sum of coordinates at a point.
- */
- inline su2double* GetCoord_Sum(unsigned long iPoint) { return Coord_Sum[iPoint]; }
-
- /*!
- * \brief Add the value of the coordinates to the Coord_Sum vector for implicit smoothing.
- * \param[in] iPoint - Index of the point.
- * \param[in] coord_sum - Value of the coordinates to add.
- */
- inline void AddCoord_Sum(unsigned long iPoint, const su2double* coord_sum) {
- for (unsigned long iDim = 0; iDim < nDim; iDim++) Coord_Sum(iPoint, iDim) += coord_sum[iDim];
- }
-
- /*!
- * \brief Initialize the vector Coord_Sum.
- */
- void SetCoord_SumZero();
-
/*!
* \brief Get the value of the grid velocity at the point.
* \param[in] iPoint - Index of the point.
diff --git a/Common/include/geometry/dual_grid/CTurboVertex.hpp b/Common/include/geometry/dual_grid/CTurboVertex.hpp
index 605d7d0ca42e..1013441813c0 100644
--- a/Common/include/geometry/dual_grid/CTurboVertex.hpp
+++ b/Common/include/geometry/dual_grid/CTurboVertex.hpp
@@ -3,14 +3,14 @@
* \brief Headers of the main subroutines for doing the complete dual grid structure.
* The subroutines and functions are in the CTurboVertex.cpp file.
* \author F. Palacios, T. Economon
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/geometry/dual_grid/CVertex.hpp b/Common/include/geometry/dual_grid/CVertex.hpp
index 56c195c6e3fe..aaf64b8df2ce 100644
--- a/Common/include/geometry/dual_grid/CVertex.hpp
+++ b/Common/include/geometry/dual_grid/CVertex.hpp
@@ -3,14 +3,14 @@
* \brief Headers of the main subroutines for doing the complete dual grid structure.
* The subroutines and functions are in the CVertex.cpp file.
* \author F. Palacios, T. Economon
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -45,7 +45,8 @@ class CVertex : public CDualGrid {
long PeriodicPoint[5] = {-1}; /*!< \brief Store the periodic point of a boundary (iProcessor, iPoint) */
bool ActDisk_Perimeter = false; /*!< \brief Identify nodes at the perimeter of the actuator disk */
short Rotation_Type; /*!< \brief Type of rotation associated with the vertex (MPI and periodic) */
- unsigned long Normal_Neighbor; /*!< \brief Index of the closest neighbor. */
+ unsigned long Normal_Neighbor; /*!< \brief Index of the closest, most normal, neighbor. */
+ su2double NearestNeighborDist = 0.0; /*!< \brief Distance to nearest internal neighbor that is not a wall. */
su2double Basis_Function[3] = {0.0}; /*!< \brief Basis function values for interpolation across zones. */
public:
@@ -98,7 +99,7 @@ class CVertex : public CDualGrid {
* \brief Get the normal to a face of the control volume asociated with a vertex.
* \return Dimensional normal vector, the modulus is the area of the face.
*/
- inline su2double* GetNormal(void) override { return Normal; }
+ inline su2double* GetNormal() override { return Normal; }
/*!
* \brief Get the ith component of the normal.
@@ -108,7 +109,7 @@ class CVertex : public CDualGrid {
/*!
* \brief Initialize normal vector.
*/
- inline void SetZeroValues(void) override {
+ inline void SetZeroValues() override {
for (unsigned short iDim = 0; iDim < nDim; iDim++) Normal[iDim] = 0.0;
}
@@ -122,7 +123,7 @@ class CVertex : public CDualGrid {
* \brief Get the value of an auxiliary variable for gradient computation.
* \return Value of the auxiliar variable.
*/
- inline su2double GetAuxVar(void) const { return Aux_Var; }
+ inline su2double GetAuxVar() const { return Aux_Var; }
/*!
* \brief Add the value of an auxiliary variable for gradient computation.
@@ -167,7 +168,7 @@ class CVertex : public CDualGrid {
* \brief Get the value of the coordinate variation due to a surface modification.
* \return Variation of the coordinate.
*/
- inline su2double* GetVarCoord(void) { return VarCoord; }
+ inline su2double* GetVarCoord() { return VarCoord; }
/*!
* \brief Set the value of the cartesian coordinate for the vertex.
@@ -181,7 +182,7 @@ class CVertex : public CDualGrid {
* \brief Get the value of the cartesian coordinate for the vertex.
* \return Value of the cartesian coordinate of the vertex.
*/
- inline su2double* GetCoord(void) override { return CartCoord; }
+ inline su2double* GetCoord() override { return CartCoord; }
/*!
* \brief Get the value of the cartesian coordinate for the vertex.
@@ -200,7 +201,7 @@ class CVertex : public CDualGrid {
* \brief Get the type of rotation associated to the vertex.
* \return Value of the rotation that must be applied to the solution of the vertex
*/
- inline short GetRotation_Type(void) const { return Rotation_Type; }
+ inline short GetRotation_Type() const { return Rotation_Type; }
/*!
* \overload
@@ -250,49 +251,49 @@ class CVertex : public CDualGrid {
* \brief Get the value of the periodic point of a vertex.
* \return Value of the periodic point of a vertex.
*/
- inline long GetDonorPoint(void) const { return PeriodicPoint[0]; }
+ inline long GetDonorPoint() const { return PeriodicPoint[0]; }
/*!
* \brief Get the value of the periodic point of a vertex.
* \return Value of the periodic point of a vertex.
*/
- inline long GetDonorMarker(void) const { return PeriodicPoint[4]; }
+ inline long GetDonorMarker() const { return PeriodicPoint[4]; }
/*!
* \brief Get the value of the periodic point of a vertex.
* \return Value of the periodic point of a vertex.
*/
- inline long GetDonorVertex(void) const { return PeriodicPoint[3]; }
+ inline long GetDonorVertex() const { return PeriodicPoint[3]; }
/*!
* \brief Get the value of the periodic point of a vertex.
* \return Value of the periodic point of a vertex.
*/
- inline long GetDonorGlobalIndex(void) const { return PeriodicPoint[2]; }
+ inline long GetDonorGlobalIndex() const { return PeriodicPoint[2]; }
/*!
* \brief Get the value of the periodic point of a vertex.
* \return Value of the periodic point of a vertex.
*/
- inline long GetGlobalDonorPoint(void) const { return PeriodicPoint[2]; }
+ inline long GetGlobalDonorPoint() const { return PeriodicPoint[2]; }
/*!
* \brief Get the value of the periodic point of a vertex.
* \return Value of the periodic point of a vertex.
*/
- inline long GetDonorProcessor(void) const { return PeriodicPoint[1]; }
+ inline long GetDonorProcessor() const { return PeriodicPoint[1]; }
/*!
* \brief Get the value of the periodic point of a vertex, and its somain
* \return Value of the periodic point of a vertex, and the domain.
*/
- inline long* GetPeriodicPointDomain(void) { return PeriodicPoint; }
+ inline long* GetPeriodicPointDomain() { return PeriodicPoint; }
/*!
* \brief Get the value of the periodic point of a vertex, and its somain
* \return Value of the periodic point of a vertex, and the domain.
*/
- inline bool GetActDisk_Perimeter(void) const { return ActDisk_Perimeter; }
+ inline bool GetActDisk_Perimeter() const { return ActDisk_Perimeter; }
/*!
* \brief Set the finite element basis functions needed for interpolation.
@@ -318,5 +319,15 @@ class CVertex : public CDualGrid {
* \brief Get the value of the closest neighbor.
* \return Index of the closest neighbor.
*/
- inline unsigned long GetNormal_Neighbor(void) const { return Normal_Neighbor; }
+ inline unsigned long GetNormal_Neighbor() const { return Normal_Neighbor; }
+
+ /*!
+ * \brief Set the distance of the nearest internal neighbor that is not a wall.
+ */
+ inline void SetNearestNeighborDistance(const su2double& val) { NearestNeighborDist = val; }
+
+ /*!
+ * \brief Get the distance to the nearest internal neighbor that is not a wall.
+ */
+ inline const su2double& GetNearestNeighborDistance() const { return NearestNeighborDist; }
};
diff --git a/Common/include/geometry/elements/CElement.hpp b/Common/include/geometry/elements/CElement.hpp
index 535323ec0c02..d29372828bb2 100644
--- a/Common/include/geometry/elements/CElement.hpp
+++ b/Common/include/geometry/elements/CElement.hpp
@@ -3,14 +3,14 @@
* \brief Main header of the Finite Element structure declaring the abstract
* interface and the available finite element types.
* \author R. Sanchez
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -67,6 +67,8 @@ class CElement {
su2activematrix NodalExtrap; /*!< \brief Coordinates of the nodal points for Gaussian extrapolation. */
su2activematrix NodalStress; /*!< \brief Stress at the nodes. */
+ su2activevector NodalTemperature; /*!< \brief Temperature at the nodes. */
+
/*--- Stiffness and load matrices. ---*/
std::vector Kab; /*!< \brief Structure for the constitutive component of the tangent matrix. */
su2activematrix Mab; /*!< \brief Structure for the nodal components of the mass matrix. */
@@ -151,7 +153,7 @@ class CElement {
* \param[in] iDim - Dimension.
* \param[in] val_CoordRef - Value of the coordinate.
*/
- inline void SetRef_Coord(unsigned short iNode, unsigned short iDim, su2double val_CoordRef) {
+ inline void SetRef_Coord(unsigned short iNode, unsigned short iDim, const su2double& val_CoordRef) {
RefCoord(iNode, iDim) = val_CoordRef;
}
@@ -161,10 +163,22 @@ class CElement {
* \param[in] iDim - Dimension.
* \param[in] val_CoordRef - Value of the coordinate.
*/
- inline void SetCurr_Coord(unsigned short iNode, unsigned short iDim, su2double val_CoordCurr) {
+ inline void SetCurr_Coord(unsigned short iNode, unsigned short iDim, const su2double& val_CoordCurr) {
CurrentCoord(iNode, iDim) = val_CoordCurr;
}
+ /*!
+ * \brief Set the value of the temperature of a node.
+ */
+ inline void SetTemperature(unsigned short iNode, const su2double& val_Temperature) {
+ NodalTemperature[iNode] = val_Temperature;
+ }
+
+ /*!
+ * \brief Set the value of the temperature of all nodes.
+ */
+ inline void SetTemperature(const su2double& val_Temperature) { NodalTemperature = val_Temperature; }
+
/*!
* \brief Get the value of the coordinate of the nodes in the reference configuration.
* \param[in] iNode - Index of node.
@@ -181,6 +195,17 @@ class CElement {
*/
inline su2double GetCurr_Coord(unsigned short iNode, unsigned short iDim) const { return CurrentCoord(iNode, iDim); }
+ /*!
+ * \brief Get the value of the temperature at a Gaussian integration point.
+ */
+ inline su2double GetTemperature(unsigned short iGauss) const {
+ su2double Temperature = 0;
+ for (auto iNode = 0u; iNode < nNodes; ++iNode) {
+ Temperature += GetNi(iNode, iGauss) * NodalTemperature[iNode];
+ }
+ return Temperature;
+ }
+
/*!
* \brief Get the weight of the corresponding Gaussian Point.
* \param[in] iGauss - index of the Gaussian point.
@@ -214,7 +239,9 @@ class CElement {
* \param[in] nodeB - index of Node b.
* \param[in] val_Ks_ab - value of the term that will constitute the diagonal of the stress contribution.
*/
- inline void Add_Mab(unsigned short nodeA, unsigned short nodeB, su2double val_Mab) { Mab(nodeA, nodeB) += val_Mab; }
+ inline void Add_Mab(unsigned short nodeA, unsigned short nodeB, const su2double& val_Mab) {
+ Mab(nodeA, nodeB) += val_Mab;
+ }
/*!
* \brief Add the value of a submatrix K relating nodes a and b, for the constitutive term.
@@ -243,7 +270,7 @@ class CElement {
* \param[in] nodeB - index of Node b.
* \param[in] val_Ks_ab - value of the term that will constitute the diagonal of the stress contribution.
*/
- inline void Add_Ks_ab(unsigned short nodeA, unsigned short nodeB, su2double val_Ks_ab) {
+ inline void Add_Ks_ab(unsigned short nodeA, unsigned short nodeB, const su2double& val_Ks_ab) {
Ks_ab(nodeA, nodeB) += val_Ks_ab;
}
@@ -354,7 +381,7 @@ class CElement {
* \param[in] iVar - Variable index.
* \param[in] val_Stress - Value of the stress added.
*/
- inline void Add_NodalStress(unsigned short iNode, unsigned short iVar, su2double val_Stress) {
+ inline void Add_NodalStress(unsigned short iNode, unsigned short iVar, const su2double& val_Stress) {
NodalStress(iNode, iVar) += val_Stress;
}
@@ -789,7 +816,7 @@ class CQUAD4 final : public CElementWithKnownSizes<4, 4, 2> {
/*!
* \brief Shape functions (Ni) evaluated at point Xi,Eta.
*/
- inline static void ShapeFunctions(su2double Xi, su2double Eta, su2double* Ni) {
+ inline static void ShapeFunctions(const su2double& Xi, const su2double& Eta, su2double* Ni) {
Ni[0] = 0.25 * (1.0 - Xi) * (1.0 - Eta);
Ni[1] = 0.25 * (1.0 + Xi) * (1.0 - Eta);
Ni[2] = 0.25 * (1.0 + Xi) * (1.0 + Eta);
@@ -799,7 +826,7 @@ class CQUAD4 final : public CElementWithKnownSizes<4, 4, 2> {
/*!
* \brief Shape function Jacobian (dNi) evaluated at point Xi,Eta.
*/
- inline static void ShapeFunctionJacobian(su2double Xi, su2double Eta, su2double dNi[][2]) {
+ inline static void ShapeFunctionJacobian(const su2double& Xi, const su2double& Eta, su2double dNi[][2]) {
dNi[0][0] = -0.25 * (1.0 - Eta);
dNi[0][1] = -0.25 * (1.0 - Xi);
dNi[1][0] = 0.25 * (1.0 - Eta);
@@ -900,7 +927,7 @@ class CPYRAM5 final : public CElementWithKnownSizes<5, 5, 3> {
* \ingroup FemAlgos
* \brief Prism element with 6 Gauss Points
* \author R. Sanchez, F. Palacios, A. Bueno, T. Economon, S. Padron.
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*/
class CPRISM6 final : public CElementWithKnownSizes<6, 6, 3> {
private:
diff --git a/Common/include/geometry/elements/CElementProperty.hpp b/Common/include/geometry/elements/CElementProperty.hpp
index 6414af96a250..6f90f1ef422e 100644
--- a/Common/include/geometry/elements/CElementProperty.hpp
+++ b/Common/include/geometry/elements/CElementProperty.hpp
@@ -2,14 +2,14 @@
* \file CElementProperty.hpp
* \brief Light classes to define finite element properties.
* \author R. Sanchez
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -32,7 +32,7 @@
* \ingroup Elasticity_Equations
* \brief Base class for defining element properties.
* \author R. Sanchez
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*/
class CProperty {
protected:
@@ -106,7 +106,7 @@ class CProperty {
* \ingroup Elasticity_Equations
* \brief Class for defining element properties for the structural solver.
* \author R. Sanchez
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*/
class CElementProperty final : public CProperty {
private:
diff --git a/Common/include/geometry/elements/CGaussVariable.hpp b/Common/include/geometry/elements/CGaussVariable.hpp
index cbbf0106d63e..37b10a5b8d84 100644
--- a/Common/include/geometry/elements/CGaussVariable.hpp
+++ b/Common/include/geometry/elements/CGaussVariable.hpp
@@ -2,14 +2,14 @@
* \file CGaussVariable.hpp
* \brief Light-weight class to store Gaussian point information.
* \author R. Sanchez
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -33,7 +33,7 @@
* \class CGaussVariable
* \ingroup FemAlgos
* \brief Main class for defining the gaussian points.
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*/
class CGaussVariable {
protected:
diff --git a/Common/include/geometry/meshreader/CBoxMeshReaderFEM.hpp b/Common/include/geometry/meshreader/CBoxMeshReaderFEM.hpp
new file mode 100644
index 000000000000..821fe96919cb
--- /dev/null
+++ b/Common/include/geometry/meshreader/CBoxMeshReaderFEM.hpp
@@ -0,0 +1,82 @@
+/*!
+ * \file CBoxMeshReaderFEM.hpp
+ * \brief Header file for the class CBoxMeshReaderFEM.
+ * The implementations are in the CBoxMeshReaderFEM.cpp file.
+ * \author T. Economon
+ * \version 8.2.0 "Harrier"
+ *
+ * SU2 Project Website: https://su2code.github.io
+ *
+ * The SU2 Project is maintained by the SU2 Foundation
+ * (http://su2foundation.org)
+ *
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
+ *
+ * SU2 is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * SU2 is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with SU2. If not, see .
+ */
+
+#pragma once
+
+#include "CMeshReaderBase.hpp"
+
+/*!
+ * \class CBoxMeshReaderFEM
+ * \brief Reads a 3D box grid into linear partitions for the finite element solver (FEM).
+ * \author: T. Economon, E. van der Weide
+ */
+class CBoxMeshReaderFEM final : public CMeshReaderBase {
+ private:
+ unsigned long nNode; /*!< \brief Number of grid nodes in the x-direction. */
+ unsigned long mNode; /*!< \brief Number of grid nodes in the y-direction. */
+ unsigned long pNode; /*!< \brief Number of grid nodes in the z-direction. */
+
+ su2double Lx; /*!< \brief Length of the domain in the x-direction. */
+ su2double Ly; /*!< \brief Length of the domain in the y-direction. */
+ su2double Lz; /*!< \brief Length of the domain in the z-direction. */
+
+ su2double Ox; /*!< \brief Offset of the domain from 0.0 in the x-direction. */
+ su2double Oy; /*!< \brief Offset of the domain from 0.0 in the y-direction. */
+ su2double Oz; /*!< \brief Offset of the domain from 0.0 in the z-direction. */
+
+ unsigned short KindElem; /*!< \brief VTK identifier of the interior elements. */
+ unsigned short KindBound; /*!< \brief VTK identifier of the surface elements. */
+
+ unsigned short nPolySol; /*!< \brief Polynomial degree of the solution. */
+
+ /*!
+ * \brief Computes and stores the grid points based on an analytic definition of a box grid.
+ */
+ void ComputeBoxPointCoordinates();
+
+ /*!
+ * \brief Computes and stores the volume element connectivity based on an analytic definition of a box grid.
+ */
+ void ComputeBoxVolumeConnectivity();
+
+ /*!
+ * \brief Computes and stores the surface element connectivity based on an analytic definition of a box grid.
+ */
+ void ComputeBoxSurfaceConnectivity();
+
+ public:
+ /*!
+ * \brief Constructor of the CBoxMeshReaderFEM class.
+ */
+ CBoxMeshReaderFEM(const CConfig* val_config, unsigned short val_iZone, unsigned short val_nZone);
+
+ /*!
+ * \brief Destructor of the CBoxMeshReaderFEM class.
+ */
+ ~CBoxMeshReaderFEM(void) override;
+};
diff --git a/Common/include/geometry/meshreader/CBoxMeshReaderFVM.hpp b/Common/include/geometry/meshreader/CBoxMeshReaderFVM.hpp
index 4c97369ec35e..6bd5a69ad97f 100644
--- a/Common/include/geometry/meshreader/CBoxMeshReaderFVM.hpp
+++ b/Common/include/geometry/meshreader/CBoxMeshReaderFVM.hpp
@@ -3,14 +3,14 @@
* \brief Header file for the class CBoxMeshReaderFVM.
* The implementations are in the CBoxMeshReaderFVM.cpp file.
* \author T. Economon
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -28,14 +28,14 @@
#pragma once
-#include "CMeshReaderFVM.hpp"
+#include "CMeshReaderBase.hpp"
/*!
* \class CBoxMeshReaderFVM
* \brief Reads a 3D box grid into linear partitions for the finite volume solver (FVM).
* \author: T. Economon
*/
-class CBoxMeshReaderFVM : public CMeshReaderFVM {
+class CBoxMeshReaderFVM : public CMeshReaderBase {
private:
unsigned long nNode; /*!< \brief Number of grid nodes in the x-direction. */
unsigned long mNode; /*!< \brief Number of grid nodes in the y-direction. */
@@ -71,7 +71,7 @@ class CBoxMeshReaderFVM : public CMeshReaderFVM {
/*!
* \brief Constructor of the CBoxMeshReaderFVM class.
*/
- CBoxMeshReaderFVM(CConfig* val_config, unsigned short val_iZone, unsigned short val_nZone);
+ CBoxMeshReaderFVM(const CConfig* val_config, unsigned short val_iZone, unsigned short val_nZone);
/*!
* \brief Destructor of the CBoxMeshReaderFVM class.
diff --git a/Common/include/geometry/meshreader/CCGNSElementType.hpp b/Common/include/geometry/meshreader/CCGNSElementType.hpp
new file mode 100644
index 000000000000..73530f127bfe
--- /dev/null
+++ b/Common/include/geometry/meshreader/CCGNSElementType.hpp
@@ -0,0 +1,362 @@
+/*!
+ * \file CCGNSElementType.hpp
+ * \brief Header file for the class CCGNSElementType.
+ * The implementations are in the CCGNSElementType.cpp file.
+ * \author E. van der Weide
+ * \version 8.2.0 "Harrier"
+ *
+ * SU2 Project Website: https://su2code.github.io
+ *
+ * The SU2 Project is maintained by the SU2 Foundation
+ * (http://su2foundation.org)
+ *
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
+ *
+ * SU2 is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * SU2 is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with SU2. If not, see .
+ */
+
+#pragma once
+
+#include
+
+#ifdef HAVE_CGNS
+#include "cgnslib.h"
+#endif
+
+#ifdef HAVE_CGNS
+
+using namespace std;
+
+/*!
+ * \class CCGNSElementType
+ * \brief Class used to convert the CGNS format to SU2 format for high order elements.
+ * \author: E. van der Weide
+ */
+class CCGNSElementType {
+ private:
+ vector CGNSTypeStored; /*!< \brief CGNS element types for which the data is stored. */
+ vector VTKTypeStored; /*!< \brief VTK type of the element. */
+ vector nPolyStored; /*!< \brief Polynomial degree of the element. */
+ vector nDOFsStored; /*!< \brief Number of DOFs of the element. */
+ vector > SU2ToCGNSStored; /*!< \brief Double vector, which stores the conversion
+ from SU2 to CGNS for the type in local numbering. */
+ public:
+ /*--- Standard constructor, nothing to be done. ---*/
+ CCGNSElementType() = default;
+
+ /*--- Destructor, nothing to be done. ---*/
+ ~CCGNSElementType() = default;
+
+ /*!
+ * \brief Converts the connectivity information from CGNS to SU2 format.
+ * \param[in] val_elemType - CGNS elements type to be converted.
+ * \param[in] val_globalID - Global ID of this element.
+ * \param[in] connCGNS - Array with the connectivity of the element in CGNS format.
+ * \param[out] connSU2 - Vector with the connectivity and meta data in SU2 format.
+ */
+ void CGNSToSU2(const ElementType_t val_elemType, const unsigned long val_globalID, const cgsize_t* connCGNS,
+ std::vector& connSU2);
+
+ private:
+ /*!
+ * \brief Converts the connectivity from CGNS to SU2 for a node.
+ * \param[out] VTK_Type - Corresponding VTK type
+ * \param[out] nPoly - Polynomial degree
+ * \param[out] nDOFs - Number of DOFs of the element.
+ * \param[out] SU2ToCGNS - Vector containing the mapping from SU2 to CGNS.
+ */
+ void CreateDataNODE(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
+ vector& SU2ToCGNS);
+
+ /*!
+ * \brief Converts the connectivity from CGNS to SU2 for a Bar2 element.
+ * \param[out] VTK_Type - Corresponding VTK type
+ * \param[out] nPoly - Polynomial degree
+ * \param[out] nDOFs - Number of DOFs of the element.
+ * \param[out] SU2ToCGNS - Vector containing the mapping from SU2 to CGNS.
+ */
+ void CreateDataBAR_2(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
+ vector& SU2ToCGNS);
+
+ /*!
+ * \brief Converts the connectivity from CGNS to SU2 for a Bar3 element.
+ * \param[out] VTK_Type - Corresponding VTK type
+ * \param[out] nPoly - Polynomial degree
+ * \param[out] nDOFs - Number of DOFs of the element.
+ * \param[out] SU2ToCGNS - Vector containing the mapping from SU2 to CGNS.
+ */
+ void CreateDataBAR_3(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
+ vector& SU2ToCGNS);
+
+ /*!
+ * \brief Converts the connectivity from CGNS to SU2 for a Bar4 element.
+ * \param[out] VTK_Type - Corresponding VTK type
+ * \param[out] nPoly - Polynomial degree
+ * \param[out] nDOFs - Number of DOFs of the element.
+ * \param[out] SU2ToCGNS - Vector containing the mapping from SU2 to CGNS.
+ */
+ void CreateDataBAR_4(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
+ vector& SU2ToCGNS);
+
+ /*!
+ * \brief Converts the connectivity from CGNS to SU2 for a Bar5 element.
+ * \param[out] VTK_Type - Corresponding VTK type
+ * \param[out] nPoly - Polynomial degree
+ * \param[out] nDOFs - Number of DOFs of the element.
+ * \param[out] SU2ToCGNS - Vector containing the mapping from SU2 to CGNS.
+ */
+ void CreateDataBAR_5(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
+ vector& SU2ToCGNS);
+
+ /*!
+ * \brief Converts the connectivity from CGNS to SU2 for a Tri3 element.
+ * \param[out] VTK_Type - Corresponding VTK type
+ * \param[out] nPoly - Polynomial degree
+ * \param[out] nDOFs - Number of DOFs of the element.
+ * \param[out] SU2ToCGNS - Vector containing the mapping from SU2 to CGNS.
+ */
+ void CreateDataTRI_3(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
+ vector& SU2ToCGNS);
+
+ /*!
+ * \brief Converts the connectivity from CGNS to SU2 for a Tri6 element.
+ * \param[out] VTK_Type - Corresponding VTK type
+ * \param[out] nPoly - Polynomial degree
+ * \param[out] nDOFs - Number of DOFs of the element.
+ * \param[out] SU2ToCGNS - Vector containing the mapping from SU2 to CGNS.
+ */
+ void CreateDataTRI_6(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
+ vector& SU2ToCGNS);
+
+ /*!
+ * \brief Converts the connectivity from CGNS to SU2 for a Tri10 element.
+ * \param[out] VTK_Type - Corresponding VTK type
+ * \param[out] nPoly - Polynomial degree
+ * \param[out] nDOFs - Number of DOFs of the element.
+ * \param[out] SU2ToCGNS - Vector containing the mapping from SU2 to CGNS.
+ */
+ void CreateDataTRI_10(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
+ vector& SU2ToCGNS);
+
+ /*!
+ * \brief Converts the connectivity from CGNS to SU2 for a Tri15 element.
+ * \param[out] VTK_Type - Corresponding VTK type
+ * \param[out] nPoly - Polynomial degree
+ * \param[out] nDOFs - Number of DOFs of the element.
+ * \param[out] SU2ToCGNS - Vector containing the mapping from SU2 to CGNS.
+ */
+ void CreateDataTRI_15(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
+ vector& SU2ToCGNS);
+
+ /*!
+ * \brief Converts the connectivity from CGNS to SU2 for a Quad4 element.
+ * \param[out] VTK_Type - Corresponding VTK type
+ * \param[out] nPoly - Polynomial degree
+ * \param[out] nDOFs - Number of DOFs of the element.
+ * \param[out] SU2ToCGNS - Vector containing the mapping from SU2 to CGNS.
+ */
+ void CreateDataQUAD_4(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
+ vector& SU2ToCGNS);
+
+ /*!
+ * \brief Converts the connectivity from CGNS to SU2 for a Quad9 element.
+ * \param[out] VTK_Type - Corresponding VTK type
+ * \param[out] nPoly - Polynomial degree
+ * \param[out] nDOFs - Number of DOFs of the element.
+ * \param[out] SU2ToCGNS - Vector containing the mapping from SU2 to CGNS.
+ */
+ void CreateDataQUAD_9(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
+ vector& SU2ToCGNS);
+
+ /*!
+ * \brief Converts the connectivity from CGNS to SU2 for a Quad16 element.
+ * \param[out] VTK_Type - Corresponding VTK type
+ * \param[out] nPoly - Polynomial degree
+ * \param[out] nDOFs - Number of DOFs of the element.
+ * \param[out] SU2ToCGNS - Vector containing the mapping from SU2 to CGNS.
+ */
+ void CreateDataQUAD_16(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
+ vector& SU2ToCGNS);
+
+ /*!
+ * \brief Converts the connectivity from CGNS to SU2 for a Quad25 element.
+ * \param[out] VTK_Type - Corresponding VTK type
+ * \param[out] nPoly - Polynomial degree
+ * \param[out] nDOFs - Number of DOFs of the element.
+ * \param[out] SU2ToCGNS - Vector containing the mapping from SU2 to CGNS.
+ */
+ void CreateDataQUAD_25(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
+ vector& SU2ToCGNS);
+
+ /*!
+ * \brief Converts the connectivity from CGNS to SU2 for a Tetra4 element.
+ * \param[out] VTK_Type - Corresponding VTK type
+ * \param[out] nPoly - Polynomial degree
+ * \param[out] nDOFs - Number of DOFs of the element.
+ * \param[out] SU2ToCGNS - Vector containing the mapping from SU2 to CGNS.
+ */
+ void CreateDataTETRA_4(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
+ vector& SU2ToCGNS);
+
+ /*!
+ * \brief Converts the connectivity from CGNS to SU2 for a Tetra10 element.
+ * \param[out] VTK_Type - Corresponding VTK type
+ * \param[out] nPoly - Polynomial degree
+ * \param[out] nDOFs - Number of DOFs of the element.
+ * \param[out] SU2ToCGNS - Vector containing the mapping from SU2 to CGNS.
+ */
+ void CreateDataTETRA_10(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
+ vector& SU2ToCGNS);
+
+ /*!
+ * \brief Converts the connectivity from CGNS to SU2 for a Tetra20 element.
+ * \param[out] VTK_Type - Corresponding VTK type
+ * \param[out] nPoly - Polynomial degree
+ * \param[out] nDOFs - Number of DOFs of the element.
+ * \param[out] SU2ToCGNS - Vector containing the mapping from SU2 to CGNS.
+ */
+ void CreateDataTETRA_20(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
+ vector& SU2ToCGNS);
+
+ /*!
+ * \brief Converts the connectivity from CGNS to SU2 for a Tetra35 element.
+ * \param[out] VTK_Type - Corresponding VTK type
+ * \param[out] nPoly - Polynomial degree
+ * \param[out] nDOFs - Number of DOFs of the element.
+ * \param[out] SU2ToCGNS - Vector containing the mapping from SU2 to CGNS.
+ */
+ void CreateDataTETRA_35(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
+ vector& SU2ToCGNS);
+
+ /*!
+ * \brief Converts the connectivity from CGNS to SU2 for a Pyra5 element.
+ * \param[out] VTK_Type - Corresponding VTK type
+ * \param[out] nPoly - Polynomial degree
+ * \param[out] nDOFs - Number of DOFs of the element.
+ * \param[out] SU2ToCGNS - Vector containing the mapping from SU2 to CGNS.
+ */
+ void CreateDataPYRA_5(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
+ vector& SU2ToCGNS);
+
+ /*!
+ * \brief Converts the connectivity from CGNS to SU2 for a Pyra14 element.
+ * \param[out] VTK_Type - Corresponding VTK type
+ * \param[out] nPoly - Polynomial degree
+ * \param[out] nDOFs - Number of DOFs of the element.
+ * \param[out] SU2ToCGNS - Vector containing the mapping from SU2 to CGNS.
+ */
+ void CreateDataPYRA_14(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
+ vector& SU2ToCGNS);
+
+ /*!
+ * \brief Converts the connectivity from CGNS to SU2 for a Pyra30 element.
+ * \param[out] VTK_Type - Corresponding VTK type
+ * \param[out] nPoly - Polynomial degree
+ * \param[out] nDOFs - Number of DOFs of the element.
+ * \param[out] SU2ToCGNS - Vector containing the mapping from SU2 to CGNS.
+ */
+ void CreateDataPYRA_30(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
+ vector& SU2ToCGNS);
+
+ /*!
+ * \brief Converts the connectivity from CGNS to SU2 for a Pyra55 element.
+ * \param[out] VTK_Type - Corresponding VTK type
+ * \param[out] nPoly - Polynomial degree
+ * \param[out] nDOFs - Number of DOFs of the element.
+ * \param[out] SU2ToCGNS - Vector containing the mapping from SU2 to CGNS.
+ */
+ void CreateDataPYRA_55(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
+ vector& SU2ToCGNS);
+
+ /*!
+ * \brief Converts the connectivity from CGNS to SU2 for a Penta6 element.
+ * \param[out] VTK_Type - Corresponding VTK type
+ * \param[out] nPoly - Polynomial degree
+ * \param[out] nDOFs - Number of DOFs of the element.
+ * \param[out] SU2ToCGNS - Vector containing the mapping from SU2 to CGNS.
+ */
+ void CreateDataPENTA_6(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
+ vector& SU2ToCGNS);
+
+ /*!
+ * \brief Converts the connectivity from CGNS to SU2 for a Penta18 element.
+ * \param[out] VTK_Type - Corresponding VTK type
+ * \param[out] nPoly - Polynomial degree
+ * \param[out] nDOFs - Number of DOFs of the element.
+ * \param[out] SU2ToCGNS - Vector containing the mapping from SU2 to CGNS.
+ */
+ void CreateDataPENTA_18(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
+ vector& SU2ToCGNS);
+
+ /*!
+ * \brief Converts the connectivity from CGNS to SU2 for a Penta40 element.
+ * \param[out] VTK_Type - Corresponding VTK type
+ * \param[out] nPoly - Polynomial degree
+ * \param[out] nDOFs - Number of DOFs of the element.
+ * \param[out] SU2ToCGNS - Vector containing the mapping from SU2 to CGNS.
+ */
+ void CreateDataPENTA_40(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
+ vector& SU2ToCGNS);
+
+ /*!
+ * \brief Converts the connectivity from CGNS to SU2 for a Penta75 element.
+ * \param[out] VTK_Type - Corresponding VTK type
+ * \param[out] nPoly - Polynomial degree
+ * \param[out] nDOFs - Number of DOFs of the element.
+ * \param[out] SU2ToCGNS - Vector containing the mapping from SU2 to CGNS.
+ */
+ void CreateDataPENTA_75(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
+ vector& SU2ToCGNS);
+
+ /*!
+ * \brief Converts the connectivity from CGNS to SU2 for a Hexa8 element.
+ * \param[out] VTK_Type - Corresponding VTK type
+ * \param[out] nPoly - Polynomial degree
+ * \param[out] nDOFs - Number of DOFs of the element.
+ * \param[out] SU2ToCGNS - Vector containing the mapping from SU2 to CGNS.
+ */
+ void CreateDataHEXA_8(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
+ vector& SU2ToCGNS);
+
+ /*!
+ * \brief Converts the connectivity from CGNS to SU2 for a Hexa27 element.
+ * \param[out] VTK_Type - Corresponding VTK type
+ * \param[out] nPoly - Polynomial degree
+ * \param[out] nDOFs - Number of DOFs of the element.
+ * \param[out] SU2ToCGNS - Vector containing the mapping from SU2 to CGNS.
+ */
+ void CreateDataHEXA_27(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
+ vector& SU2ToCGNS);
+
+ /*!
+ * \brief Converts the connectivity from CGNS to SU2 for a Hexa64 element.
+ * \param[out] VTK_Type - Corresponding VTK type
+ * \param[out] nPoly - Polynomial degree
+ * \param[out] nDOFs - Number of DOFs of the element.
+ * \param[out] SU2ToCGNS - Vector containing the mapping from SU2 to CGNS.
+ */
+ void CreateDataHEXA_64(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
+ vector& SU2ToCGNS);
+
+ /*!
+ * \brief Converts the connectivity from CGNS to SU2 for a Hexa125 element.
+ * \param[out] VTK_Type - Corresponding VTK type
+ * \param[out] nPoly - Polynomial degree
+ * \param[out] nDOFs - Number of DOFs of the element.
+ * \param[out] SU2ToCGNS - Vector containing the mapping from SU2 to CGNS.
+ */
+ void CreateDataHEXA_125(unsigned short& VTK_Type, unsigned short& nPoly, unsigned short& nDOFs,
+ vector& SU2ToCGNS);
+};
+#endif
diff --git a/Common/include/geometry/meshreader/CCGNSMeshReaderBase.hpp b/Common/include/geometry/meshreader/CCGNSMeshReaderBase.hpp
new file mode 100644
index 000000000000..10236a277265
--- /dev/null
+++ b/Common/include/geometry/meshreader/CCGNSMeshReaderBase.hpp
@@ -0,0 +1,108 @@
+/*!
+ * \file CCGNSMeshReaderBase.hpp
+ * \brief Header file for the class CCGNSMeshReaderBase.
+ * The implementations are in the CCGNSMeshReaderBase.cpp file.
+ * \author T. Economon
+ * \version 8.2.0 "Harrier"
+ *
+ * SU2 Project Website: https://su2code.github.io
+ *
+ * The SU2 Project is maintained by the SU2 Foundation
+ * (http://su2foundation.org)
+ *
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
+ *
+ * SU2 is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * SU2 is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with SU2. If not, see .
+ */
+
+#pragma once
+
+#ifdef HAVE_CGNS
+#include "cgnslib.h"
+#endif
+
+#include "CMeshReaderBase.hpp"
+
+/*!
+ * \class CCGNSMeshReaderBase
+ * \brief Base class for the reading of a CGNS zone.
+ * \author: T. Economon
+ */
+class CCGNSMeshReaderBase : public CMeshReaderBase {
+ protected:
+#ifdef HAVE_CGNS
+ int cgnsFileID; /*!< \brief CGNS file identifier. */
+ const int cgnsBase = 1; /*!< \brief CGNS database index (the CGNS reader currently assumes a single database). */
+ const int cgnsZone = 1; /*!< \brief CGNS zone index (and 1 zone in that database). */
+
+ int nSections; /*!< \brief Total number of sections in the CGNS file. */
+
+ vector isInterior; /*!< \brief Vector of booleans to store whether each section in the CGNS file is an interior
+ or boundary section. */
+ vector
+ nElems; /*!< \brief Vector containing the local number of elements found within each CGNS section. */
+ vector elemOffset; /*!< \brief Global ID offset for each interior section (i.e., the total number of
+ global elements that came before it). */
+ vector > connElems; /*!< \brief Vector containing the local element connectivity found within each
+ CGNS section. First index is the section, second contains the connectivity in
+ format [globalID VTK n1 n2 n3 n4 n5 n6 n7 n8] for each element. */
+ vector > sectionNames; /*!< \brief Vector for storing the names of each boundary section (marker). */
+
+ /*!
+ * \brief Open the CGNS file and checks for errors.
+ * \param[in] val_filename - string name of the CGNS file to be read.
+ */
+ void OpenCGNSFile(const string& val_filename);
+
+ /*!
+ * \brief Reads all CGNS database metadata and checks for errors.
+ */
+ void ReadCGNSDatabaseMetadata();
+
+ /*!
+ * \brief Reads all CGNS zone metadata and checks for errors.
+ */
+ void ReadCGNSZoneMetadata();
+
+ /*!
+ * \brief Reads the grid points from a CGNS zone into linear partitions across all ranks.
+ */
+ void ReadCGNSPointCoordinates();
+
+ /*!
+ * \brief Reads the metadata for each CGNS section in a zone and collect information, including the size and whether
+ * it is an interior or boundary section.
+ */
+ void ReadCGNSSectionMetadata();
+
+ /*!
+ * \brief Get the VTK type and string name for a CGNS element type.
+ * \param[in] val_elem_type - CGNS element type.
+ * \param[out] val_vtk_type - VTK type identifier index.
+ * \returns String containing the name of the element type.
+ */
+ string GetCGNSElementType(ElementType_t val_elem_type, int& val_vtk_type);
+#endif
+
+ public:
+ /*!
+ * \brief Constructor of the CCGNSMeshReaderBase class.
+ */
+ CCGNSMeshReaderBase(const CConfig* val_config, unsigned short val_iZone, unsigned short val_nZone);
+
+ /*!
+ * \brief Destructor of the CCGNSMeshReaderBase class.
+ */
+ virtual ~CCGNSMeshReaderBase(void) override;
+};
diff --git a/Common/include/geometry/meshreader/CCGNSMeshReaderFEM.hpp b/Common/include/geometry/meshreader/CCGNSMeshReaderFEM.hpp
new file mode 100644
index 000000000000..25e84bc123db
--- /dev/null
+++ b/Common/include/geometry/meshreader/CCGNSMeshReaderFEM.hpp
@@ -0,0 +1,92 @@
+/*!
+ * \file CCGNSMeshReaderFEM.hpp
+ * \brief Header file for the class CCGNSMeshReaderFEM.
+ * The implementations are in the CCGNSMeshReaderFEM.cpp file.
+ * \author T. Economon
+ * \version 8.2.0 "Harrier"
+ *
+ * SU2 Project Website: https://su2code.github.io
+ *
+ * The SU2 Project is maintained by the SU2 Foundation
+ * (http://su2foundation.org)
+ *
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
+ *
+ * SU2 is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * SU2 is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with SU2. If not, see .
+ */
+
+#pragma once
+
+#include "CCGNSMeshReaderBase.hpp"
+
+/*!
+ * \class CCGNSMeshReaderFEM
+ * \brief Reads a CGNS zone into linear partitions for the finite element solver (FEM).
+ * \author: T. Economon
+ */
+class CCGNSMeshReaderFEM final : public CCGNSMeshReaderBase {
+ private:
+ /*!
+ * \brief Communicates the grid points to the MPI rank where they are needed.
+ */
+ void CommPointCoordinates();
+
+#ifdef HAVE_CGNS
+
+ /*!
+ * \brief Reads the connectivity range from a CGNS section and convert it to the internal format.
+ * \param[in] val_section - CGNS section index.
+ * \param[in] val_firstIndex - Global index of the first element to be stored on this rank.
+ * \param[in] val_lastIndex - Global index of the last element (not included) to be stored on this rank.
+ * \param[inout] elemCount - Counter, which keeps track how many global elements are stored.
+ * \param[inout] localElemCount - Counter, which keeps track how many local elements are stored.
+ * \param[inout] localConn - Vector where the connectivity must be stored.
+ */
+ void ReadCGNSConnectivityRangeSection(const int val_section, const unsigned long val_firstIndex,
+ const unsigned long val_lastIndex, unsigned long& elemCount,
+ unsigned long& localElemCount, vector& localConn);
+
+ /*!
+ * \brief Reads the interior volume elements from one section of a CGNS zone into linear partitions across all ranks.
+ */
+ void ReadCGNSVolumeElementConnectivity();
+
+ /*!
+ * \brief Reads the surface (boundary) elements from one section of a CGNS zone into linear partitions across all
+ * ranks.
+ */
+ void ReadCGNSSurfaceElementConnectivity();
+
+ /*!
+ * \brief Reads the connectivity from a CGNS surface section and select the relevant faces.
+ * \param[in] val_section - CGNS section index.
+ * \param[in] localFaces - The faces of the locally stored volume elements.
+ * \param[out] nSurfElem - Number of local surface elements stored for this surface section.
+ * \param[out] surfConn - Vector to store the connectivity of the surface elements to be stored.
+ */
+ void ReadCGNSSurfaceSection(const int val_section, const vector& localFaces, unsigned long& nSurfElem,
+ vector& surfConn);
+#endif
+
+ public:
+ /*!
+ * \brief Constructor of the CCGNSMeshReaderFEM class.
+ */
+ CCGNSMeshReaderFEM(const CConfig* val_config, unsigned short val_iZone, unsigned short val_nZone);
+
+ /*!
+ * \brief Destructor of the CCGNSMeshReaderFEM class.
+ */
+ ~CCGNSMeshReaderFEM(void) override;
+};
diff --git a/Common/include/geometry/meshreader/CCGNSMeshReaderFVM.hpp b/Common/include/geometry/meshreader/CCGNSMeshReaderFVM.hpp
index 6199cb540d5a..4b4cbb13f8e8 100644
--- a/Common/include/geometry/meshreader/CCGNSMeshReaderFVM.hpp
+++ b/Common/include/geometry/meshreader/CCGNSMeshReaderFVM.hpp
@@ -3,14 +3,14 @@
* \brief Header file for the class CCGNSMeshReaderFVM.
* The implementations are in the CCGNSMeshReaderFVM.cpp file.
* \author T. Economon
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -28,64 +28,16 @@
#pragma once
-#ifdef HAVE_CGNS
-#include "cgnslib.h"
-#endif
-
-#include "CMeshReaderFVM.hpp"
+#include "CCGNSMeshReaderBase.hpp"
/*!
* \class CCGNSMeshReaderFVM
* \brief Reads a CGNS zone into linear partitions for the finite volume solver (FVM).
* \author: T. Economon
*/
-class CCGNSMeshReaderFVM : public CMeshReaderFVM {
+class CCGNSMeshReaderFVM final : public CCGNSMeshReaderBase {
private:
#ifdef HAVE_CGNS
- int cgnsFileID; /*!< \brief CGNS file identifier. */
- const int cgnsBase = 1; /*!< \brief CGNS database index (the CGNS reader currently assumes a single database). */
- const int cgnsZone = 1; /*!< \brief CGNS zone index (and 1 zone in that database). */
-
- int nSections; /*!< \brief Total number of sections in the CGNS file. */
-
- vector isInterior; /*!< \brief Vector of booleans to store whether each section in the CGNS file is an interior
- or boundary section. */
- vector
- nElems; /*!< \brief Vector containing the local number of elements found within each CGNS section. */
- vector elemOffset; /*!< \brief Global ID offset for each interior section (i.e., the total number of
- global elements that came before it). */
- vector > connElems; /*!< \brief Vector containing the local element connectivity found within each
- CGNS section. First index is the section, second contains the connectivity in
- format [globalID VTK n1 n2 n3 n4 n5 n6 n7 n8] for each element. */
- vector > sectionNames; /*!< \brief Vector for storing the names of each boundary section (marker). */
-
- /*!
- * \brief Open the CGNS file and checks for errors.
- * \param[in] val_filename - string name of the CGNS file to be read.
- */
- void OpenCGNSFile(const string& val_filename);
-
- /*!
- * \brief Reads all CGNS database metadata and checks for errors.
- */
- void ReadCGNSDatabaseMetadata();
-
- /*!
- * \brief Reads all CGNS zone metadata and checks for errors.
- */
- void ReadCGNSZoneMetadata();
-
- /*!
- * \brief Reads the grid points from a CGNS zone into linear partitions across all ranks.
- */
- void ReadCGNSPointCoordinates();
-
- /*!
- * \brief Reads the metadata for each CGNS section in a zone and collect information, including the size and whether
- * it is an interior or boundary section.
- */
- void ReadCGNSSectionMetadata();
-
/*!
* \brief Reads the interior volume elements from one section of a CGNS zone into linear partitions across all ranks.
* \param[in] val_section - CGNS section index.
@@ -108,13 +60,6 @@ class CCGNSMeshReaderFVM : public CMeshReaderFVM {
*/
void ReformatCGNSSurfaceConnectivity();
- /*!
- * \brief Get the VTK type and string name for a CGNS element type.
- * \param[in] val_elem_type - CGNS element type.
- * \param[out] val_vtk_type - VTK type identifier index.
- * \returns String containing the name of the element type.
- */
- string GetCGNSElementType(ElementType_t val_elem_type, int& val_vtk_type);
#endif
/*!
@@ -146,7 +91,7 @@ class CCGNSMeshReaderFVM : public CMeshReaderFVM {
/*!
* \brief Constructor of the CCGNSMeshReaderFVM class.
*/
- CCGNSMeshReaderFVM(CConfig* val_config, unsigned short val_iZone, unsigned short val_nZone);
+ CCGNSMeshReaderFVM(const CConfig* val_config, unsigned short val_iZone, unsigned short val_nZone);
/*!
* \brief Destructor of the CCGNSMeshReaderFVM class.
diff --git a/Common/include/geometry/meshreader/CMeshReaderFVM.hpp b/Common/include/geometry/meshreader/CMeshReaderBase.hpp
similarity index 70%
rename from Common/include/geometry/meshreader/CMeshReaderFVM.hpp
rename to Common/include/geometry/meshreader/CMeshReaderBase.hpp
index 7980acf39fd6..420012f873c5 100644
--- a/Common/include/geometry/meshreader/CMeshReaderFVM.hpp
+++ b/Common/include/geometry/meshreader/CMeshReaderBase.hpp
@@ -1,17 +1,17 @@
/*!
- * \file CMeshReaderFVM.hpp
- * \brief Header file for the class CMeshReaderFVM.
- * The implementations are in the CMeshReaderFVM.cpp file.
+ * \file CMeshReaderBase.hpp
+ * \brief Header file for the class CMeshReaderBase.
+ * The implementations are in the CMeshReaderBase.cpp file.
* \author T. Economon
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -31,15 +31,17 @@
#include
+#include "../primal_grid/CPrimalGridFEM.hpp"
+#include "../../toolboxes/fem/CFaceOfElement.hpp"
#include "../../parallelization/mpi_structure.hpp"
#include "../../CConfig.hpp"
/*!
- * \class CMeshReaderFVM
- * \brief Base class for the mesh zone readers of the finite volume solver (FVM).
+ * \class CMeshReaderBase
+ * \brief Base class for the mesh zone readers.
* \author T. Economon
*/
-class CMeshReaderFVM {
+class CMeshReaderBase {
protected:
const int rank; /*!< \brief MPI Rank. */
const int size; /*!< \brief MPI Size. */
@@ -54,6 +56,7 @@ class CMeshReaderFVM {
vector >
localPointCoordinates; /*!< \brief Vector holding the coordinates from the mesh file for the local grid points.
First index is dimension, second is point index. */
+ vector globalPointIDs; /*!< \brief Vector holding the global IDs of the local grid points. */
unsigned long numberOfLocalElements =
0; /*!< \brief Number of local elements within the linear partition on this rank. */
@@ -63,20 +66,39 @@ class CMeshReaderFVM {
unsigned long numberOfMarkers = 0; /*!< \brief Total number of markers contained within the mesh file. */
vector markerNames; /*!< \brief String names for all markers in the mesh file. */
+ vector
+ numberOfLocalSurfaceElements; /*!< \brief Vector containing the number of local surface elements. */
vector >
surfaceElementConnectivity; /*!< \brief Vector containing the surface element connectivity from the mesh file on a
- per-marker basis. Only the master node reads and stores this connectivity. */
+ per-marker basis. For FVM, only the master node reads and stores this connectivity.
+ */
+
+ /*!
+ * \brief Function, which determines the faces of the local volume elements.
+ * \param[out] localFaces - The faces of the locally stored volume elements.
+ */
+ void DetermineFacesVolumeElements(vector& localFaces);
+
+ /*!
+ * \brief Get all the corner points of all the faces of the given element. It must
+ * \param[in] elemInfo - Array, which contains the info of the given element.
+ * \param[out] nFaces - Number of faces of the element.
+ * \param[out] nPointsPerFace - Number of corner points for each of the faces.
+ * \param[out] faceConn - Global IDs of the corner points of the faces.
+ */
+ void GetCornerPointsAllFaces(const unsigned long* elemInfo, unsigned short& numFaces, unsigned short nPointsPerFace[],
+ unsigned long faceConn[6][4]);
public:
/*!
- * \brief Constructor of the CMeshReaderFVM class.
+ * \brief Constructor of the CMeshReaderBase class.
* \param[in] val_config - config object for the current zone.
* \param[in] val_iZone - Current zone index.
* \param[in] val_nZone - Total number of zones.
*/
- CMeshReaderFVM(const CConfig* val_config, unsigned short val_iZone, unsigned short val_nZone);
+ CMeshReaderBase(const CConfig* val_config, unsigned short val_iZone, unsigned short val_nZone);
- virtual ~CMeshReaderFVM() = default;
+ virtual ~CMeshReaderBase() = default;
/*!
* \brief Get the physical dimension of the problem (2 or 3).
@@ -84,6 +106,12 @@ class CMeshReaderFVM {
*/
inline unsigned short GetDimension() const { return dimension; }
+ /*!
+ * \brief Get the global IDs of the local points.
+ * \returns Reference to the vector containing the global points IDs.
+ */
+ inline const vector& GetGlobalPointIDs() const { return globalPointIDs; }
+
/*!
* \brief Get the local point coordinates (linearly partitioned).
* \returns Local point coordinates (linear partitioned).
@@ -99,6 +127,14 @@ class CMeshReaderFVM {
return surfaceElementConnectivity[val_iMarker];
}
+ /*!
+ * \brief Get the number surface elements for all markers.
+ * \returns Reference to the vector containing the number of surface elements for all markers.
+ */
+ inline const vector& GetNumberOfSurfaceElementsAllMarkers() const {
+ return numberOfLocalSurfaceElements;
+ }
+
/*!
* \brief Get the number surface elements for the specified marker.
* \param[in] val_iMarker - current marker index.
diff --git a/Common/include/geometry/meshreader/CRectangularMeshReaderFEM.hpp b/Common/include/geometry/meshreader/CRectangularMeshReaderFEM.hpp
new file mode 100644
index 000000000000..f52db11007cf
--- /dev/null
+++ b/Common/include/geometry/meshreader/CRectangularMeshReaderFEM.hpp
@@ -0,0 +1,79 @@
+/*!
+ * \file CRectangularMeshReaderFEM.hpp
+ * \brief Header file for the class CRectangularMeshReaderFEM.
+ * The implementations are in the CRectangularMeshReaderFEM.cpp file.
+ * \author T. Economon
+ * \version 8.2.0 "Harrier"
+ *
+ * SU2 Project Website: https://su2code.github.io
+ *
+ * The SU2 Project is maintained by the SU2 Foundation
+ * (http://su2foundation.org)
+ *
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
+ *
+ * SU2 is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * SU2 is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with SU2. If not, see .
+ */
+
+#pragma once
+
+#include "CMeshReaderBase.hpp"
+
+/*!
+ * \class CRectangularMeshReaderFEM
+ * \brief Reads a 2D rectangular grid into linear partitions for the finite element solver (FEM).
+ * \author: T. Economon, E. van der Weide
+ */
+class CRectangularMeshReaderFEM : public CMeshReaderBase {
+ private:
+ unsigned long nNode; /*!< \brief Number of grid nodes in the x-direction. */
+ unsigned long mNode; /*!< \brief Number of grid nodes in the y-direction. */
+
+ su2double Lx; /*!< \brief Length of the domain in the x-direction. */
+ su2double Ly; /*!< \brief Length of the domain in the y-direction. */
+
+ su2double Ox; /*!< \brief Offset of the domain from 0.0 in the x-direction. */
+ su2double Oy; /*!< \brief Offset of the domain from 0.0 in the y-direction. */
+
+ unsigned short KindElem; /*!< \brief VTK identifier of the interior elements. */
+ unsigned short KindBound; /*!< \brief VTK identifier of the surface elements. */
+
+ unsigned short nPolySol; /*!< \brief Polynomial degree of the solution. */
+
+ /*!
+ * \brief Computes and stores the grid points based on an analytic definition of a rectangular grid.
+ */
+ void ComputeRectangularPointCoordinates();
+
+ /*!
+ * \brief Computes and stores the volume element connectivity based on an analytic definition of a rectangular grid.
+ */
+ void ComputeRectangularVolumeConnectivity();
+
+ /*!
+ * \brief Computes and stores the surface element connectivity based on an analytic definition of a rectangular grid.
+ */
+ void ComputeRectangularSurfaceConnectivity();
+
+ public:
+ /*!
+ * \brief Constructor of the CRectangularMeshReaderFEM class.
+ */
+ CRectangularMeshReaderFEM(const CConfig* val_config, unsigned short val_iZone, unsigned short val_nZone);
+
+ /*!
+ * \brief Destructor of the CRectangularMeshReaderFEM class.
+ */
+ ~CRectangularMeshReaderFEM(void) override;
+};
diff --git a/Common/include/geometry/meshreader/CRectangularMeshReaderFVM.hpp b/Common/include/geometry/meshreader/CRectangularMeshReaderFVM.hpp
index 54f393b88d8e..fdb8541db670 100644
--- a/Common/include/geometry/meshreader/CRectangularMeshReaderFVM.hpp
+++ b/Common/include/geometry/meshreader/CRectangularMeshReaderFVM.hpp
@@ -3,14 +3,14 @@
* \brief Header file for the class CRectangularMeshReaderFVM.
* The implementations are in the CRectangularMeshReaderFVM.cpp file.
* \author T. Economon
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -28,14 +28,14 @@
#pragma once
-#include "CMeshReaderFVM.hpp"
+#include "CMeshReaderBase.hpp"
/*!
* \class CRectangularMeshReaderFVM
* \brief Reads a 2D rectangular grid into linear partitions for the finite volume solver (FVM).
* \author: T. Economon
*/
-class CRectangularMeshReaderFVM : public CMeshReaderFVM {
+class CRectangularMeshReaderFVM : public CMeshReaderBase {
private:
unsigned long nNode; /*!< \brief Number of grid nodes in the x-direction. */
unsigned long mNode; /*!< \brief Number of grid nodes in the y-direction. */
@@ -69,4 +69,9 @@ class CRectangularMeshReaderFVM : public CMeshReaderFVM {
* \brief Constructor of the CRectangularMeshReaderFVM class.
*/
CRectangularMeshReaderFVM(const CConfig* val_config, unsigned short val_iZone, unsigned short val_nZone);
+
+ /*!
+ * \brief Destructor of the CRectangularMeshReaderFVM class.
+ */
+ ~CRectangularMeshReaderFVM(void) override;
};
diff --git a/Common/include/geometry/meshreader/CSU2ASCIIMeshReaderBase.hpp b/Common/include/geometry/meshreader/CSU2ASCIIMeshReaderBase.hpp
new file mode 100644
index 000000000000..99800d026266
--- /dev/null
+++ b/Common/include/geometry/meshreader/CSU2ASCIIMeshReaderBase.hpp
@@ -0,0 +1,116 @@
+/*!
+ * \file CSU2ASCIIMeshReaderBase.hpp
+ * \brief Header file for the class CSU2ASCIIMeshReaderBase.
+ * The implementations are in the CSU2ASCIIMeshReaderBase.cpp file.
+ * \author T. Economon
+ * \version 8.2.0 "Harrier"
+ *
+ * SU2 Project Website: https://su2code.github.io
+ *
+ * The SU2 Project is maintained by the SU2 Foundation
+ * (http://su2foundation.org)
+ *
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
+ *
+ * SU2 is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * SU2 is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with SU2. If not, see .
+ */
+
+#pragma once
+
+#include
+
+#include "CMeshReaderBase.hpp"
+
+/*!
+ * \class CSU2ASCIIMeshReaderBase
+ * \brief Base class for the reading of a native SU2 ASCII grid.
+ * \author T. Economon
+ */
+class CSU2ASCIIMeshReaderBase : public CMeshReaderBase {
+ protected:
+ enum class FileSection { POINTS, ELEMENTS, MARKERS }; /*!< \brief Different sections of the file. */
+ std::array SectionOrder{}; /*!< \brief Order of the sections in the file. */
+
+ const unsigned short myZone; /*!< \brief Current SU2 zone index. */
+ const unsigned short nZones; /*!< \brief Total number of zones in the SU2 file. */
+
+ const string meshFilename; /*!< \brief Name of the SU2 ASCII mesh file being read. */
+ ifstream mesh_file; /*!< \brief File object for the SU2 ASCII mesh file. */
+
+ bool actuator_disk; /*!< \brief Boolean for whether we have an actuator disk to split. */
+
+ unsigned long ActDiskNewPoints =
+ 0; /*!< \brief Total number of new grid points to add due to actuator disk splitting. */
+
+ su2double Xloc = 0.0; /*!< \brief X-coordinate of the CG of the actuator disk surface. */
+ su2double Yloc = 0.0; /*!< \brief X-coordinate of the CG of the actuator disk surface. */
+ su2double Zloc = 0.0; /*!< \brief X-coordinate of the CG of the actuator disk surface. */
+
+ vector ActDisk_Bool; /*!< \brief Flag to identify the grid points on the actuator disk. */
+
+ vector ActDiskPoint_Back; /*!< \brief Vector containing the global index for the new grid points added
+ to the back of the actuator disk. */
+ vector VolumePoint_Inv; /*!< \brief Vector containing the inverse mapping from the global index to the
+ added point index for the actuator disk. */
+
+ vector CoordXActDisk; /*!< \brief X-coordinates of the new grid points added by splitting the actuator disk
+ (size = ActDiskNewPoints). */
+ vector CoordYActDisk; /*!< \brief Y-coordinates of the new grid points added by splitting the actuator disk
+ (size = ActDiskNewPoints). */
+ vector CoordZActDisk; /*!< \brief Z-coordinates of the new grid points added by splitting the actuator disk
+ (size = ActDiskNewPoints). */
+
+ vector CoordXVolumePoint; /*!< \brief X-coordinates of the volume elements touching the actuator disk. */
+ vector CoordYVolumePoint; /*!< \brief Y-coordinates of the volume elements touching the actuator disk. */
+ vector CoordZVolumePoint; /*!< \brief Z-coordinates of the volume elements touching the actuator disk. */
+
+ /*!
+ * \brief Reads all SU2 ASCII mesh metadata and checks for errors.
+ * \param[in] single_pass - Try to read the contents together with the metadata if the order allows (points before
+ * elements). \param[in,out] config - Problem configuration where some metadata is updated (e.g. AoA). \returns True
+ * if single_pass was successful.
+ */
+ bool ReadMetadata(const bool single_pass, CConfig* config);
+
+ /*!
+ * \brief Reads the grid points from an SU2 zone into linear partitions across all ranks.
+ */
+ virtual void ReadPointCoordinates(const bool single_pass = false);
+
+ /*!
+ * \brief Reads the interior volume elements from one section of an SU2 zone into linear partitions across all ranks.
+ */
+ virtual void ReadVolumeElementConnectivity(const bool single_pass = false);
+
+ /*!
+ * \brief Reads the surface (boundary) elements from the SU2 zone.
+ */
+ virtual void ReadSurfaceElementConnectivity(const bool single_pass = false);
+
+ /*!
+ * \brief Helper function to find the current zone in an SU2 ASCII mesh object.
+ */
+ void FastForwardToMyZone();
+
+ public:
+ /*!
+ * \brief Constructor of the CSU2ASCIIMeshReaderBase class.
+ */
+ CSU2ASCIIMeshReaderBase(CConfig* val_config, unsigned short val_iZone, unsigned short val_nZone);
+
+ /*!
+ * \brief Destructor of the CSU2ASCIIMeshReaderBase class.
+ */
+ virtual ~CSU2ASCIIMeshReaderBase(void) override;
+};
diff --git a/Common/include/geometry/meshreader/CSU2ASCIIMeshReaderFEM.hpp b/Common/include/geometry/meshreader/CSU2ASCIIMeshReaderFEM.hpp
new file mode 100644
index 000000000000..ff9af0b61741
--- /dev/null
+++ b/Common/include/geometry/meshreader/CSU2ASCIIMeshReaderFEM.hpp
@@ -0,0 +1,68 @@
+/*!
+ * \file CSU2ASCIIMeshReaderFEM.hpp
+ * \brief Header file for the class CSU2ASCIIMeshReaderFEM.
+ * The implementations are in the CSU2ASCIIMeshReaderFEM.cpp file.
+ * \author T. Economon, E. van der Weide
+ * \version 8.2.0 "Harrier"
+ *
+ * SU2 Project Website: https://su2code.github.io
+ *
+ * The SU2 Project is maintained by the SU2 Foundation
+ * (http://su2foundation.org)
+ *
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
+ *
+ * SU2 is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * SU2 is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with SU2. If not, see .
+ */
+
+#pragma once
+
+#include
+
+#include "CSU2ASCIIMeshReaderBase.hpp"
+
+/*!
+ * \class CSU2ASCIIMeshReaderFEM
+ * \brief Reads a native SU2 ASCII grid into linear partitions for the finite element solver (FEM).
+ * \author T. Economon, E. van der Weide
+ */
+class CSU2ASCIIMeshReaderFEM : public CSU2ASCIIMeshReaderBase {
+ private:
+ /*!
+ * \brief Reads the grid points from an SU2 zone into linear partitions across all ranks.
+ */
+ void ReadPointCoordinates();
+
+ /*!
+ * \brief Reads the interior volume elements from one section of an SU2 zone into linear partitions across all ranks.
+ */
+ void ReadVolumeElementConnectivity();
+
+ /*!
+ * \brief Reads the surface (boundary) elements from one section of an SU2 zone into linear partitions across all
+ * ranks.
+ */
+ void ReadSurfaceElementConnectivity();
+
+ public:
+ /*!
+ * \brief Constructor of the CSU2ASCIIMeshReaderFEM class.
+ */
+ CSU2ASCIIMeshReaderFEM(CConfig* val_config, unsigned short val_iZone, unsigned short val_nZone);
+
+ /*!
+ * \brief Destructor of the CSU2ASCIIMeshReaderFEM class.
+ */
+ ~CSU2ASCIIMeshReaderFEM(void) override;
+};
diff --git a/Common/include/geometry/meshreader/CSU2ASCIIMeshReaderFVM.hpp b/Common/include/geometry/meshreader/CSU2ASCIIMeshReaderFVM.hpp
index 1be0177b4357..6c66d894af15 100644
--- a/Common/include/geometry/meshreader/CSU2ASCIIMeshReaderFVM.hpp
+++ b/Common/include/geometry/meshreader/CSU2ASCIIMeshReaderFVM.hpp
@@ -3,14 +3,14 @@
* \brief Header file for the class CSU2ASCIIMeshReaderFVM.
* The implementations are in the CSU2ASCIIMeshReaderFVM.cpp file.
* \author T. Economon
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -30,87 +30,28 @@
#include
-#include "CMeshReaderFVM.hpp"
+#include "CSU2ASCIIMeshReaderBase.hpp"
/*!
* \class CSU2ASCIIMeshReaderFVM
* \brief Reads a native SU2 ASCII grid into linear partitions for the finite volume solver (FVM).
* \author T. Economon
*/
-class CSU2ASCIIMeshReaderFVM : public CMeshReaderFVM {
+class CSU2ASCIIMeshReaderFVM : public CSU2ASCIIMeshReaderBase {
private:
- enum class FileSection { POINTS, ELEMENTS, MARKERS }; /*!< \brief Different sections of the file. */
- std::array SectionOrder{}; /*!< \brief Order of the sections in the file. */
-
- const unsigned short myZone; /*!< \brief Current SU2 zone index. */
- const unsigned short nZones; /*!< \brief Total number of zones in the SU2 file. */
-
- const string meshFilename; /*!< \brief Name of the SU2 ASCII mesh file being read. */
- ifstream mesh_file; /*!< \brief File object for the SU2 ASCII mesh file. */
-
- bool actuator_disk; /*!< \brief Boolean for whether we have an actuator disk to split. */
-
- unsigned long ActDiskNewPoints =
- 0; /*!< \brief Total number of new grid points to add due to actuator disk splitting. */
-
- su2double Xloc = 0.0; /*!< \brief X-coordinate of the CG of the actuator disk surface. */
- su2double Yloc = 0.0; /*!< \brief X-coordinate of the CG of the actuator disk surface. */
- su2double Zloc = 0.0; /*!< \brief X-coordinate of the CG of the actuator disk surface. */
-
- vector ActDisk_Bool; /*!< \brief Flag to identify the grid points on the actuator disk. */
-
- vector ActDiskPoint_Back; /*!< \brief Vector containing the global index for the new grid points added
- to the back of the actuator disk. */
- vector VolumePoint_Inv; /*!< \brief Vector containing the inverse mapping from the global index to the
- added point index for the actuator disk. */
-
- vector CoordXActDisk; /*!< \brief X-coordinates of the new grid points added by splitting the actuator disk
- (size = ActDiskNewPoints). */
- vector CoordYActDisk; /*!< \brief Y-coordinates of the new grid points added by splitting the actuator disk
- (size = ActDiskNewPoints). */
- vector CoordZActDisk; /*!< \brief Z-coordinates of the new grid points added by splitting the actuator disk
- (size = ActDiskNewPoints). */
-
- vector CoordXVolumePoint; /*!< \brief X-coordinates of the volume elements touching the actuator disk. */
- vector CoordYVolumePoint; /*!< \brief Y-coordinates of the volume elements touching the actuator disk. */
- vector CoordZVolumePoint; /*!< \brief Z-coordinates of the volume elements touching the actuator disk. */
-
- /*!
- * \brief Reads all SU2 ASCII mesh metadata and checks for errors.
- * \param[in] single_pass - Try to read the contents together with the metadata if the order allows (points before
- * elements). \param[in,out] config - Problem configuration where some metadata is updated (e.g. AoA). \returns True
- * if single_pass was successful.
- */
- bool ReadMetadata(const bool single_pass, CConfig* config);
-
/*!
* \brief Splits a single surface actuator disk boundary into two separate markers (repeated points).
*/
void SplitActuatorDiskSurface();
- /*!
- * \brief Reads the grid points from an SU2 zone into linear partitions across all ranks.
- */
- void ReadPointCoordinates(const bool single_pass = false);
-
- /*!
- * \brief Reads the interior volume elements from one section of an SU2 zone into linear partitions across all ranks.
- */
- void ReadVolumeElementConnectivity(const bool single_pass = false);
-
- /*!
- * \brief Reads the surface (boundary) elements from the SU2 zone.
- */
- void ReadSurfaceElementConnectivity(const bool single_pass = false);
-
- /*!
- * \brief Helper function to find the current zone in an SU2 ASCII mesh object.
- */
- void FastForwardToMyZone();
-
public:
/*!
* \brief Constructor of the CSU2ASCIIMeshReaderFVM class.
*/
CSU2ASCIIMeshReaderFVM(CConfig* val_config, unsigned short val_iZone, unsigned short val_nZone);
+
+ /*!
+ * \brief Destructor of the CSU2ASCIIMeshReaderFVM class.
+ */
+ ~CSU2ASCIIMeshReaderFVM(void) override;
};
diff --git a/Common/include/geometry/primal_grid/CHexahedron.hpp b/Common/include/geometry/primal_grid/CHexahedron.hpp
index edb4f6ca94f1..26754e606cc8 100644
--- a/Common/include/geometry/primal_grid/CHexahedron.hpp
+++ b/Common/include/geometry/primal_grid/CHexahedron.hpp
@@ -3,14 +3,14 @@
* \brief Headers of the main subroutines for storing the primal grid structure.
* The subroutines and functions are in the CHexahedron.cpp file.
* \author F. Palacios
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/geometry/primal_grid/CLine.hpp b/Common/include/geometry/primal_grid/CLine.hpp
index 9720184d85bd..7864bb167ed6 100644
--- a/Common/include/geometry/primal_grid/CLine.hpp
+++ b/Common/include/geometry/primal_grid/CLine.hpp
@@ -3,14 +3,14 @@
* \brief Headers of the main subroutines for storing the primal grid structure.
* The subroutines and functions are in the CLine.cpp file.
* \author F. Palacios
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/geometry/primal_grid/CPrimalGrid.hpp b/Common/include/geometry/primal_grid/CPrimalGrid.hpp
index b27332b04175..380cce819f6a 100644
--- a/Common/include/geometry/primal_grid/CPrimalGrid.hpp
+++ b/Common/include/geometry/primal_grid/CPrimalGrid.hpp
@@ -3,14 +3,14 @@
* \brief Headers of the main subroutines for storing the primal grid structure.
* The subroutines and functions are in the primal_grid_structure.cpp file.
* \author F. Palacios
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/geometry/primal_grid/CPrimalGridBoundFEM.hpp b/Common/include/geometry/primal_grid/CPrimalGridBoundFEM.hpp
index fd7db594f6f6..bb743ccb7d52 100644
--- a/Common/include/geometry/primal_grid/CPrimalGridBoundFEM.hpp
+++ b/Common/include/geometry/primal_grid/CPrimalGridBoundFEM.hpp
@@ -3,14 +3,14 @@
* \brief Headers of the main subroutines for storing the primal grid structure.
* The subroutines and functions are in the CPrimalGridBoundFEM.cpp file.
* \author F. Palacios
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -33,7 +33,7 @@
/*!
* \class CPrimalGridBoundFEM
* \brief Class to define primal grid boundary element for the FEM solver.
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*/
class CPrimalGridBoundFEM final : public CPrimalGrid {
private:
@@ -51,16 +51,9 @@ class CPrimalGridBoundFEM final : public CPrimalGrid {
public:
/*!
* \brief Constructor using data to initialize the boundary element.
- * \param[in] val_elemGlobalID - Global boundary element ID of this element.
- * \param[in] val_domainElementID - Global ID of the corresponding domain element.
- * \param[in] val_VTK_Type - VTK type to indicate the element type
- * \param[in] val_nPolyGrid - Polynomial degree to describe the geometry of the element.
- * \param[in] val_nDOFsGrid - Number of DOFs used to describe the geometry of the element.
- * \param[in] val_nodes - Vector, which contains the global node IDs of the element.
- */
- CPrimalGridBoundFEM(unsigned long val_elemGlobalID, unsigned long val_domainElementID, unsigned short val_VTK_Type,
- unsigned short val_nPolyGrid, unsigned short val_nDOFsGrid,
- std::vector& val_nodes);
+ * \param[in] dataElem - Meta and connectivity data for this element.
+ */
+ CPrimalGridBoundFEM(const unsigned long* dataElem);
/*!
* \brief Get the number of nodes that composes a face of an element.
diff --git a/Common/include/geometry/primal_grid/CPrimalGridFEM.hpp b/Common/include/geometry/primal_grid/CPrimalGridFEM.hpp
index 81c214c78ff6..7927762881f6 100644
--- a/Common/include/geometry/primal_grid/CPrimalGridFEM.hpp
+++ b/Common/include/geometry/primal_grid/CPrimalGridFEM.hpp
@@ -3,14 +3,14 @@
* \brief Headers of the main subroutines for storing the primal grid structure.
* The subroutines and functions are in the CPrimalGridFEM.cpp file.
* \author F. Palacios
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -34,7 +34,7 @@
/*!
* \class CPrimalGridFEM
* \brief Class to define primal grid element for the FEM solver.
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*/
class CPrimalGridFEM final : public CPrimalGrid {
private:
@@ -55,33 +55,10 @@ class CPrimalGridFEM final : public CPrimalGrid {
public:
/*!
* \brief Constructor using data to initialize the element.
- * \param[in] val_elemGlobalID - Global element ID of this element.
- * \param[in] val_VTK_Type - VTK type to indicate the element type
- * \param[in] val_nPolyGrid - Polynomial degree to describe the geometry of the element.
- * \param[in] val_nPolySol - Polynomial degree to describe the solution of the element.
- * \param[in] val_nDOFsGrid - Number of DOFs used to describe the geometry of the element.
- * \param[in] val_nDOFsSol - Number of DOFs used to describe the solution of the element.
- * \param[in] val_offDOfsSol - Global offset of the solution DOFs of the element.
- * \param[in] elem_line - istringstream, which contains the grid node numbers of the element.
+ * \param[in] dataElem - Meta and connectivity data for this element.
+ * \param[in,out] offsetDOFs - The offset of the solution DOFs for this element.
*/
- CPrimalGridFEM(unsigned long val_elemGlobalID, unsigned short val_VTK_Type, unsigned short val_nPolyGrid,
- unsigned short val_nPolySol, unsigned short val_nDOFsGrid, unsigned short val_nDOFsSol,
- unsigned long val_offDOfsSol, std::istringstream& elem_line);
-
- /*!
- * \brief Constructor using data to initialize the element.
- * \param[in] val_elemGlobalID - Global element ID of this element.
- * \param[in] val_VTK_Type - VTK type to indicate the element type
- * \param[in] val_nPolyGrid - Polynomial degree to describe the geometry of the element.
- * \param[in] val_nPolySol - Polynomial degree to describe the solution of the element.
- * \param[in] val_nDOFsGrid - Number of DOFs used to describe the geometry of the element.
- * \param[in] val_nDOFsSol - Number of DOFs used to describe the solution of the element.
- * \param[in] val_offDOfsSol - Global offset of the solution DOFs of the element.
- * \param[in] connGrid - Array, which contains the grid node numbers of the element.
- */
- CPrimalGridFEM(unsigned long val_elemGlobalID, unsigned short val_VTK_Type, unsigned short val_nPolyGrid,
- unsigned short val_nPolySol, unsigned short val_nDOFsGrid, unsigned short val_nDOFsSol,
- unsigned long val_offDOfsSol, const unsigned long* connGrid);
+ CPrimalGridFEM(const unsigned long* dataElem, unsigned long& offsetSolDOFs);
/*!
* \brief Get the number of nodes that composes a face of an element.
diff --git a/Common/include/geometry/primal_grid/CPrism.hpp b/Common/include/geometry/primal_grid/CPrism.hpp
index 08b2b05bebcf..efdbca08f6fd 100644
--- a/Common/include/geometry/primal_grid/CPrism.hpp
+++ b/Common/include/geometry/primal_grid/CPrism.hpp
@@ -3,14 +3,14 @@
* \brief Headers of the main subroutines for storing the primal grid structure.
* The subroutines and functions are in the CPrism.cpp file.
* \author F. Palacios
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/geometry/primal_grid/CPyramid.hpp b/Common/include/geometry/primal_grid/CPyramid.hpp
index 11184b5d0e0a..9481b0d951a0 100644
--- a/Common/include/geometry/primal_grid/CPyramid.hpp
+++ b/Common/include/geometry/primal_grid/CPyramid.hpp
@@ -3,14 +3,14 @@
* \brief Headers of the main subroutines for storing the primal grid structure.
* The subroutines and functions are in the CPyramid.cpp file.
* \author F. Palacios
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/geometry/primal_grid/CQuadrilateral.hpp b/Common/include/geometry/primal_grid/CQuadrilateral.hpp
index 50d0c253b4af..3671b3f4e81a 100644
--- a/Common/include/geometry/primal_grid/CQuadrilateral.hpp
+++ b/Common/include/geometry/primal_grid/CQuadrilateral.hpp
@@ -3,14 +3,14 @@
* \brief Headers of the main subroutines for storing the primal grid structure.
* The subroutines and functions are in the CQuadrilateral.cpp file.
* \author F. Palacios
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/geometry/primal_grid/CTetrahedron.hpp b/Common/include/geometry/primal_grid/CTetrahedron.hpp
index 833cd26bbc69..8f208d1e5170 100644
--- a/Common/include/geometry/primal_grid/CTetrahedron.hpp
+++ b/Common/include/geometry/primal_grid/CTetrahedron.hpp
@@ -3,14 +3,14 @@
* \brief Headers of the main subroutines for storing the primal grid structure.
* The subroutines and functions are in the CTetrahedron.cpp file.
* \author F. Palacios
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/geometry/primal_grid/CTriangle.hpp b/Common/include/geometry/primal_grid/CTriangle.hpp
index a64257646946..7531a66f197b 100644
--- a/Common/include/geometry/primal_grid/CTriangle.hpp
+++ b/Common/include/geometry/primal_grid/CTriangle.hpp
@@ -3,14 +3,14 @@
* \brief Headers of the main subroutines for storing the primal grid structure.
* The subroutines and functions are in the CTriangle.cpp file.
* \author F. Palacios
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/geometry/primal_grid/CVertexMPI.hpp b/Common/include/geometry/primal_grid/CVertexMPI.hpp
index 66b7dc2a2d51..d28dc39374ce 100644
--- a/Common/include/geometry/primal_grid/CVertexMPI.hpp
+++ b/Common/include/geometry/primal_grid/CVertexMPI.hpp
@@ -3,14 +3,14 @@
* \brief Headers of the main subroutines for storing the primal grid structure.
* The subroutines and functions are in the primal_grid_structure.cpp file.
* \author F. Palacios
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/graph_coloring_structure.hpp b/Common/include/graph_coloring_structure.hpp
index c42c5f99048b..a47ccce62628 100644
--- a/Common/include/graph_coloring_structure.hpp
+++ b/Common/include/graph_coloring_structure.hpp
@@ -4,14 +4,14 @@
* coloring of a given graph. The functions are in the
* graph_coloring_structure.cpp file.
* \author E. van der Weide
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -41,7 +41,7 @@ using namespace std;
* \ingroup Graph
* \brief Class, which provides distributed graph coloring algorithms.
* \author: E. van der Weide
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*/
class CGraphColoringStructure {
public:
diff --git a/Common/include/grid_movement/CBSplineBlending.hpp b/Common/include/grid_movement/CBSplineBlending.hpp
index fd8d9065a73b..0fdf126f6f34 100644
--- a/Common/include/grid_movement/CBSplineBlending.hpp
+++ b/Common/include/grid_movement/CBSplineBlending.hpp
@@ -3,14 +3,14 @@
* \brief Headers of the CBSplineBlending class.
* Defines blending using uniform BSplines
* \author T. Albring
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/grid_movement/CBezierBlending.hpp b/Common/include/grid_movement/CBezierBlending.hpp
index 3f0e4be1cc73..5edb44126fb5 100644
--- a/Common/include/grid_movement/CBezierBlending.hpp
+++ b/Common/include/grid_movement/CBezierBlending.hpp
@@ -3,14 +3,14 @@
* \brief Headers of the CBezierBlending class.
* Defines blending using Bernsteinpolynomials (Bezier Curves)
* \author T. Albring
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/grid_movement/CFreeFormBlending.hpp b/Common/include/grid_movement/CFreeFormBlending.hpp
index 6d9c6057cee0..ef69f421eed7 100644
--- a/Common/include/grid_movement/CFreeFormBlending.hpp
+++ b/Common/include/grid_movement/CFreeFormBlending.hpp
@@ -3,14 +3,14 @@
* \brief Headers of the CFreeFormBlending class.
* It is the parent class for the FFD blending function
* \author T. Albring
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/grid_movement/CFreeFormDefBox.hpp b/Common/include/grid_movement/CFreeFormDefBox.hpp
index 42a4b3eddfc4..12c5d7f940b7 100644
--- a/Common/include/grid_movement/CFreeFormDefBox.hpp
+++ b/Common/include/grid_movement/CFreeFormDefBox.hpp
@@ -2,14 +2,14 @@
* \file CFreeFormDefBox.hpp
* \brief Headers of the CFreeFormDefBox class.
* \author F. Palacios & A. Galdran.
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/grid_movement/CGridMovement.hpp b/Common/include/grid_movement/CGridMovement.hpp
index f241c7216377..dad8aace1422 100644
--- a/Common/include/grid_movement/CGridMovement.hpp
+++ b/Common/include/grid_movement/CGridMovement.hpp
@@ -2,14 +2,14 @@
* \file CGridMovement.hpp
* \brief Headers of the CGridMovement class
* \author F. Palacios
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/grid_movement/CSurfaceMovement.hpp b/Common/include/grid_movement/CSurfaceMovement.hpp
index 9d5eacbba342..b39f9698f1d2 100644
--- a/Common/include/grid_movement/CSurfaceMovement.hpp
+++ b/Common/include/grid_movement/CSurfaceMovement.hpp
@@ -2,14 +2,14 @@
* \file CSurfaceMovement.hpp
* \brief Headers of the CSurfaceMovement class.
* \author F. Palacios, T. Economon.
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/grid_movement/CVolumetricMovement.hpp b/Common/include/grid_movement/CVolumetricMovement.hpp
index ce4a90f748f5..9bd9bb1085bb 100644
--- a/Common/include/grid_movement/CVolumetricMovement.hpp
+++ b/Common/include/grid_movement/CVolumetricMovement.hpp
@@ -2,14 +2,14 @@
* \file CVolumetricMovement.hpp
* \brief Headers of the CVolumetricMovement class.
* \author F. Palacios, A. Bueno, T. Economon, S. Padron.
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/interface_interpolation/CInterpolator.hpp b/Common/include/interface_interpolation/CInterpolator.hpp
index 354e5fdb17d8..933867c42f9f 100644
--- a/Common/include/interface_interpolation/CInterpolator.hpp
+++ b/Common/include/interface_interpolation/CInterpolator.hpp
@@ -2,14 +2,14 @@
* \file CInterpolator.hpp
* \brief Base class for multiphysics interpolation.
* \author H. Kline
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/interface_interpolation/CInterpolatorFactory.hpp b/Common/include/interface_interpolation/CInterpolatorFactory.hpp
index 4419e00ffc81..170c5aa381bb 100644
--- a/Common/include/interface_interpolation/CInterpolatorFactory.hpp
+++ b/Common/include/interface_interpolation/CInterpolatorFactory.hpp
@@ -1,14 +1,14 @@
/*!
* \file CInterpolatorFactory.hpp
* \brief Factory to generate interpolator objects.
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/interface_interpolation/CIsoparametric.hpp b/Common/include/interface_interpolation/CIsoparametric.hpp
index fe4a19b1ebd9..b282d2d2a80e 100644
--- a/Common/include/interface_interpolation/CIsoparametric.hpp
+++ b/Common/include/interface_interpolation/CIsoparametric.hpp
@@ -2,14 +2,14 @@
* \file CIsoparametric.hpp
* \brief Isoparametric interpolation using FE shape functions.
* \author P. Gomes
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/interface_interpolation/CMirror.hpp b/Common/include/interface_interpolation/CMirror.hpp
index da545292ab7a..d34286035f24 100644
--- a/Common/include/interface_interpolation/CMirror.hpp
+++ b/Common/include/interface_interpolation/CMirror.hpp
@@ -2,14 +2,14 @@
* \file CMirror.hpp
* \brief Mirror interpolation for the conservative (work-wise) approach in FSI problems.
* \author P. Gomes
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/interface_interpolation/CNearestNeighbor.hpp b/Common/include/interface_interpolation/CNearestNeighbor.hpp
index 7744fdbf1041..83f51eb72945 100644
--- a/Common/include/interface_interpolation/CNearestNeighbor.hpp
+++ b/Common/include/interface_interpolation/CNearestNeighbor.hpp
@@ -2,14 +2,14 @@
* \file CNearestNeighbor.hpp
* \brief Nearest Neighbor interpolation class.
* \author H. Kline
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/interface_interpolation/CRadialBasisFunction.hpp b/Common/include/interface_interpolation/CRadialBasisFunction.hpp
index 0ba29551e233..31a118c83d64 100644
--- a/Common/include/interface_interpolation/CRadialBasisFunction.hpp
+++ b/Common/include/interface_interpolation/CRadialBasisFunction.hpp
@@ -2,14 +2,14 @@
* \file CRadialBasisFunction.hpp
* \brief Radial basis function interpolation.
* \author Joel Ho, P. Gomes
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/interface_interpolation/CSlidingMesh.hpp b/Common/include/interface_interpolation/CSlidingMesh.hpp
index 76aca29dfb18..1289c33f58bf 100644
--- a/Common/include/interface_interpolation/CSlidingMesh.hpp
+++ b/Common/include/interface_interpolation/CSlidingMesh.hpp
@@ -2,14 +2,14 @@
* \file CSlidingMesh.hpp
* \brief Sliding mesh interpolation.
* \author H. Kline
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/linear_algebra/CMatrixVectorProduct.hpp b/Common/include/linear_algebra/CMatrixVectorProduct.hpp
index 3a2078edd03a..586e8abe410b 100644
--- a/Common/include/linear_algebra/CMatrixVectorProduct.hpp
+++ b/Common/include/linear_algebra/CMatrixVectorProduct.hpp
@@ -3,14 +3,14 @@
* \brief Headers for the classes related to sparse matrix-vector product wrappers.
* The actual operations are currently implemented mostly by CSysMatrix.
* \author F. Palacios, J. Hicken, T. Economon
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/linear_algebra/CPastixWrapper.hpp b/Common/include/linear_algebra/CPastixWrapper.hpp
index d98e22d33205..83461b957a7b 100644
--- a/Common/include/linear_algebra/CPastixWrapper.hpp
+++ b/Common/include/linear_algebra/CPastixWrapper.hpp
@@ -3,14 +3,14 @@
* \brief An interface to the INRIA solver PaStiX
* (http://pastix.gforge.inria.fr/files/README-txt.html)
* \author P. Gomes
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/linear_algebra/CPreconditioner.hpp b/Common/include/linear_algebra/CPreconditioner.hpp
index c0f0255c0ab4..9310225179cc 100644
--- a/Common/include/linear_algebra/CPreconditioner.hpp
+++ b/Common/include/linear_algebra/CPreconditioner.hpp
@@ -3,14 +3,14 @@
* \brief Classes related to linear preconditioner wrappers.
* The actual operations are currently implemented mostly by CSysMatrix.
* \author F. Palacios, J. Hicken, T. Economon
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/linear_algebra/CSysMatrix.hpp b/Common/include/linear_algebra/CSysMatrix.hpp
index 815d52e0708c..b026165e9e60 100644
--- a/Common/include/linear_algebra/CSysMatrix.hpp
+++ b/Common/include/linear_algebra/CSysMatrix.hpp
@@ -3,14 +3,14 @@
* \brief Declaration of the block-sparse matrix class.
* The implemtation is in CSysMatrix.cpp.
* \author F. Palacios, A. Bueno, T. Economon, P. Gomes
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -805,10 +805,10 @@ class CSysMatrix {
void EnforceSolutionAtNode(unsigned long node_i, const OtherType* x_i, CSysVector& b);
/*!
- * \brief Version of EnforceSolutionAtNode for a single degree of freedom.
+ * \brief Similar to EnforceSolutionAtNode, but for 0 projection in a given direction.
*/
template
- void EnforceSolutionAtDOF(unsigned long node_i, unsigned long iVar, OtherType x_i, CSysVector& b);
+ void EnforceZeroProjection(unsigned long node_i, const OtherType* n, CSysVector& b);
/*!
* \brief Sets the diagonal entries of the matrix as the sum of the blocks in the corresponding column.
diff --git a/Common/include/linear_algebra/CSysMatrix.inl b/Common/include/linear_algebra/CSysMatrix.inl
index 1247d5ba51e8..34c5d134f3a6 100644
--- a/Common/include/linear_algebra/CSysMatrix.inl
+++ b/Common/include/linear_algebra/CSysMatrix.inl
@@ -5,14 +5,14 @@
* of the .cpp file and so they are hidden to avoid triggering
* recompilation of other units when changes are made here.
* \author F. Palacios, A. Bueno, T. Economon, P. Gomes
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/linear_algebra/CSysSolve.hpp b/Common/include/linear_algebra/CSysSolve.hpp
index 2fa23b363176..2715e81754a4 100644
--- a/Common/include/linear_algebra/CSysSolve.hpp
+++ b/Common/include/linear_algebra/CSysSolve.hpp
@@ -3,14 +3,14 @@
* \brief Headers for the classes related to linear solvers (CG, FGMRES, etc)
* The subroutines and functions are in the CSysSolve.cpp file.
* \author J. Hicken, F. Palacios, T. Economon, P. Gomes
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/linear_algebra/CSysSolve_b.hpp b/Common/include/linear_algebra/CSysSolve_b.hpp
index 2986eace8d00..be9eef6d270e 100644
--- a/Common/include/linear_algebra/CSysSolve_b.hpp
+++ b/Common/include/linear_algebra/CSysSolve_b.hpp
@@ -2,14 +2,14 @@
* \file CSysSolve_b.hpp
* \brief Routines for the linear solver used in the reverse sweep of AD.
* \author T. Albring
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/linear_algebra/CSysVector.hpp b/Common/include/linear_algebra/CSysVector.hpp
index 42b249b11ca5..7b0248b28b6b 100644
--- a/Common/include/linear_algebra/CSysVector.hpp
+++ b/Common/include/linear_algebra/CSysVector.hpp
@@ -3,14 +3,14 @@
* \brief Declararion and inlines of the vector class used in the
* solution of large, distributed, sparse linear systems.
* \author P. Gomes, F. Palacios, J. Hicken, T. Economon
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/linear_algebra/blas_structure.hpp b/Common/include/linear_algebra/blas_structure.hpp
index cf4ec42ef2ae..69fbd1501fa7 100644
--- a/Common/include/linear_algebra/blas_structure.hpp
+++ b/Common/include/linear_algebra/blas_structure.hpp
@@ -4,14 +4,14 @@
operations, which are typically found in the BLAS libraries.
The functions are in the blass_structure.cpp file.
* \author E. van der Weide
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -29,11 +29,6 @@
#pragma once
-/* LIBXSMM include files, if supported. */
-#ifdef HAVE_LIBXSMM
-#include "libxsmm.h"
-#endif
-
class CConfig;
/*!
@@ -41,7 +36,7 @@ class CConfig;
* \ingroup BLAS
* \brief Class, which serves as an interface to the BLAS functionalities needed.
* \author: E. van der Weide
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*/
class CBlasStructure {
public:
@@ -494,8 +489,7 @@ class CBlasStructure {
}
private:
-#if !(defined(HAVE_LIBXSMM) || defined(HAVE_BLAS) || defined(HAVE_MKL)) || \
- (defined(CODI_REVERSE_TYPE) || defined(CODI_FORWARD_TYPE))
+#if !(defined(HAVE_BLAS) || defined(HAVE_MKL)) || (defined(CODI_REVERSE_TYPE) || defined(CODI_FORWARD_TYPE))
/* Blocking parameters for the outer kernel. We multiply mc x kc blocks of
the matrix A with kc x nc panels of the matrix B (this approach is referred
to as `gebp` in the literature). */
diff --git a/Common/include/linear_algebra/vector_expressions.hpp b/Common/include/linear_algebra/vector_expressions.hpp
index cfa06f652964..3c4fa4bd4207 100644
--- a/Common/include/linear_algebra/vector_expressions.hpp
+++ b/Common/include/linear_algebra/vector_expressions.hpp
@@ -2,14 +2,14 @@
* \file vector_expressions.hpp
* \brief Expression templates for vector types with coefficient-wise operations.
* \author P. Gomes
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
diff --git a/Common/include/option_structure.hpp b/Common/include/option_structure.hpp
index ddf570ab6978..223a53da742b 100644
--- a/Common/include/option_structure.hpp
+++ b/Common/include/option_structure.hpp
@@ -2,14 +2,14 @@
* \file option_structure.hpp
* \brief Defines classes for referencing options for easy input in CConfig
* \author J. Hicken, B. Tracey
- * \version 8.1.0 "Harrier"
+ * \version 8.2.0 "Harrier"
*
* SU2 Project Website: https://su2code.github.io
*
* The SU2 Project is maintained by the SU2 Foundation
* (http://su2foundation.org)
*
- * Copyright 2012-2024, SU2 Contributors (cf. AUTHORS.md)
+ * Copyright 2012-2025, SU2 Contributors (cf. AUTHORS.md)
*
* SU2 is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -33,6 +33,7 @@
#include
#include
#include
+#include
#include