diff --git a/Common/include/CConfig.hpp b/Common/include/CConfig.hpp index 910be2231ac..a9e2e76fad0 100644 --- a/Common/include/CConfig.hpp +++ b/Common/include/CConfig.hpp @@ -183,8 +183,10 @@ class CConfig { nMarker_NearFieldBound, /*!< \brief Number of near field boundary markers. */ nMarker_ActDiskInlet, /*!< \brief Number of actuator disk inlet markers. */ nMarker_ActDiskOutlet, /*!< \brief Number of actuator disk outlet markers. */ - nMarker_ActDiskBemInlet, /*!< \brief Number of actuator disk BEM inlet markers. */ - nMarker_ActDiskBemOutlet, /*!< \brief Number of actuator disk BEM outlet markers. */ + nMarker_ActDiskBemInlet_CG, /*!< \brief Number of actuator disk BEM inlet markers passed to MARKER_ACTDISK_BEM_CG. */ + nMarker_ActDiskBemOutlet_CG, /*!< \brief Number of actuator disk BEM outlet markers passed to MARKER_ACTDISK_BEM_CG. */ + nMarker_ActDiskBemInlet_Axis, /*!< \brief Number of actuator disk BEM inlet markers passed to MARKER_ACTDISK_BEM_AXIS. */ + nMarker_ActDiskBemOutlet_Axis, /*!< \brief Number of actuator disk BEM outlet markers passed to MARKER_ACTDISK_BEM_AXIS. */ nMarker_Deform_Mesh_Sym_Plane, /*!< \brief Number of markers with symmetric deformation */ nMarker_Deform_Mesh, /*!< \brief Number of deformable markers at the boundary. */ nMarker_Fluid_Load, /*!< \brief Number of markers in which the flow load is computed/employed. */ @@ -241,8 +243,10 @@ class CConfig { *Marker_CHTInterface, /*!< \brief Conjugate heat transfer interface markers. */ *Marker_ActDiskInlet, /*!< \brief Actuator disk inlet markers. */ *Marker_ActDiskOutlet, /*!< \brief Actuator disk outlet markers. */ - *Marker_ActDiskBemInlet, /*!< \brief Actuator disk BEM inlet markers. */ - *Marker_ActDiskBemOutlet, /*!< \brief Actuator disk BEM outlet markers. */ + *Marker_ActDiskBemInlet_CG, /*!< \brief Actuator disk BEM inlet markers passed to MARKER_ACTDISK_BEM_CG. */ + *Marker_ActDiskBemOutlet_CG, /*!< \brief Actuator disk BEM outlet markers passed to MARKER_ACTDISK_BEM_CG. */ + *Marker_ActDiskBemInlet_Axis, /*!< \brief Actuator disk BEM inlet markers passed to MARKER_ACTDISK_BEM_AXIS. */ + *Marker_ActDiskBemOutlet_Axis, /*!< \brief Actuator disk BEM outlet markers passed to MARKER_ACTDISK_BEM_AXIS. */ *Marker_Inlet, /*!< \brief Inlet flow markers. */ *Marker_Inlet_Species, /*!< \brief Inlet species markers. */ *Marker_Inlet_Turb, /*!< \brief Inlet turbulent markers. */ diff --git a/Common/include/geometry/meshreader/CBoxMeshReaderFVM.hpp b/Common/include/geometry/meshreader/CBoxMeshReaderFVM.hpp index 1c99fe92da8..098ff704219 100644 --- a/Common/include/geometry/meshreader/CBoxMeshReaderFVM.hpp +++ b/Common/include/geometry/meshreader/CBoxMeshReaderFVM.hpp @@ -76,5 +76,5 @@ class CBoxMeshReaderFVM : public CMeshReaderFVM { /*! * \brief Destructor of the CBoxMeshReaderFVM class. */ - ~CBoxMeshReaderFVM(void); + ~CBoxMeshReaderFVM(void) override; }; diff --git a/Common/include/geometry/meshreader/CCGNSMeshReaderFVM.hpp b/Common/include/geometry/meshreader/CCGNSMeshReaderFVM.hpp index f655993208a..03ea4089ae5 100644 --- a/Common/include/geometry/meshreader/CCGNSMeshReaderFVM.hpp +++ b/Common/include/geometry/meshreader/CCGNSMeshReaderFVM.hpp @@ -148,5 +148,5 @@ class CCGNSMeshReaderFVM : public CMeshReaderFVM { /*! * \brief Destructor of the CCGNSMeshReaderFVM class. */ - ~CCGNSMeshReaderFVM(void); + ~CCGNSMeshReaderFVM(void) override; }; diff --git a/Common/include/geometry/meshreader/CMeshReaderFVM.hpp b/Common/include/geometry/meshreader/CMeshReaderFVM.hpp index d5b934c7de0..643470551db 100644 --- a/Common/include/geometry/meshreader/CMeshReaderFVM.hpp +++ b/Common/include/geometry/meshreader/CMeshReaderFVM.hpp @@ -76,6 +76,8 @@ class CMeshReaderFVM { */ CMeshReaderFVM(const CConfig* val_config, unsigned short val_iZone, unsigned short val_nZone); + virtual ~CMeshReaderFVM() = default; + /*! * \brief Get the physical dimension of the problem (2 or 3). * \returns Physical dimension of the problem. diff --git a/Common/include/option_structure.inl b/Common/include/option_structure.inl index bafdb71332f..7bf4907c79c 100644 --- a/Common/include/option_structure.inl +++ b/Common/include/option_structure.inl @@ -1696,7 +1696,22 @@ class COptionActDisk : public COptionBase { this->name = name; } - ~COptionActDisk() override{}; + ~COptionActDisk() override { + for (int i = 0; i < this->inlet_size; i++) { + if (this->press_jump) delete[] this->press_jump[i]; + if (this->temp_jump) delete[] this->temp_jump[i]; + if (this->omega) delete[] this->omega[i]; + } + delete[] press_jump; + delete[] temp_jump; + delete[] omega; + + delete[] marker_inlet; + delete[] marker_outlet; + + SetDefault(); + } + string SetValue(const vector& option_value) override { COptionBase::SetValue(option_value); const int mod_num = 8; diff --git a/Common/src/CConfig.cpp b/Common/src/CConfig.cpp index 86a0d31e456..eb66a2347d7 100644 --- a/Common/src/CConfig.cpp +++ b/Common/src/CConfig.cpp @@ -1535,12 +1535,12 @@ void CConfig::SetConfig_Options() { /*!\brief MARKER_ACTDISK_BEM_CG\n DESCRIPTION: Actuator disk CG for blade element momentum (BEM) method. \ingroup Config*/ addActDiskBemOption("MARKER_ACTDISK_BEM_CG", - nMarker_ActDiskBemInlet, nMarker_ActDiskBemOutlet, Marker_ActDiskBemInlet, Marker_ActDiskBemOutlet, + nMarker_ActDiskBemInlet_CG, nMarker_ActDiskBemOutlet_CG, Marker_ActDiskBemInlet_CG, Marker_ActDiskBemOutlet_CG, ActDiskBem_CG[0], ActDiskBem_CG[1], ActDiskBem_CG[2]); /*!\brief MARKER_ACTDISK_BEM_AXIS\n DESCRIPTION: Actuator disk axis for blade element momentum (BEM) method. \ingroup Config*/ addActDiskBemOption("MARKER_ACTDISK_BEM_AXIS", - nMarker_ActDiskBemInlet, nMarker_ActDiskBemOutlet, Marker_ActDiskBemInlet, Marker_ActDiskBemOutlet, + nMarker_ActDiskBemInlet_Axis, nMarker_ActDiskBemOutlet_Axis, Marker_ActDiskBemInlet_Axis, Marker_ActDiskBemOutlet_Axis, ActDiskBem_Axis[0], ActDiskBem_Axis[1], ActDiskBem_Axis[2]); /*!\brief ACTDISK_FILENAME \n DESCRIPTION: Input file for a specified actuator disk (w/ extension) \n DEFAULT: actdiskinput.dat \ingroup Config*/ @@ -3589,6 +3589,28 @@ void CConfig::SetPostprocessing(SU2_COMPONENT val_software, unsigned short val_i || (Kind_ActDisk == POWER)) ActDisk_Jump = RATIO; + if(Marker_ActDiskBemInlet_CG && Marker_ActDiskBemInlet_Axis){ + if(nMarker_ActDiskBemInlet_CG != nMarker_ActDiskBemInlet_Axis){ + SU2_MPI::Error("Marker lists supplied to MARKER_ACTDISK_BEM_CG and MARKER_ACTDISK_BEM_AXIS must be identical.", CURRENT_FUNCTION); + } + for(iMarker=0; iMarker TurbomachineryPerformance; /*!< \brief turbo performance calculator. */ - CTurbomachineryStagePerformance* TurbomachineryStagePerformance; /*!< \brief turbo stage performance calculator. */ + std::shared_ptr TurbomachineryStagePerformance; /*!< \brief turbo stage performance calculator. */ public: /*! diff --git a/SU2_CFD/include/output/CFlowCompOutput.hpp b/SU2_CFD/include/output/CFlowCompOutput.hpp index 9b624d4bfee..5a1242e18cc 100644 --- a/SU2_CFD/include/output/CFlowCompOutput.hpp +++ b/SU2_CFD/include/output/CFlowCompOutput.hpp @@ -109,7 +109,7 @@ class CFlowCompOutput final: public CFlowOutput { * \param[in] TurboPerf - Turboperformance class * \param[in] config - Definition of the particular problem */ - void SetTurboMultiZonePerformance_Output(CTurbomachineryStagePerformance* TurboStagePerf, std::shared_ptr TurboPerf, CConfig *config) override; + void SetTurboMultiZonePerformance_Output(std::shared_ptr TurboStagePerf, std::shared_ptr TurboPerf, CConfig *config) override; /*! * \brief Loads the turboperformacne history data @@ -117,7 +117,7 @@ class CFlowCompOutput final: public CFlowOutput { * \param[in] TurboPerf - Turboperformance class * \param[in] config - Definition of the particular problem */ - void LoadTurboHistoryData(CTurbomachineryStagePerformance* TurboStagePerf, std::shared_ptr TurboPerf, CConfig *config) override; + void LoadTurboHistoryData(std::shared_ptr TurboStagePerf, std::shared_ptr TurboPerf, CConfig *config) override; /*! * \brief Write the kinematic and thermodynamic variables at each spanwise division diff --git a/SU2_CFD/include/output/COutput.hpp b/SU2_CFD/include/output/COutput.hpp index 08a4f6be9fe..ec082021724 100644 --- a/SU2_CFD/include/output/COutput.hpp +++ b/SU2_CFD/include/output/COutput.hpp @@ -394,7 +394,7 @@ class COutput { * \param[in] val_iInst - Index of the instance layer */ void SetHistoryOutput(CGeometry ****geometry, CSolver *****solver_container, CConfig **config, - CTurbomachineryStagePerformance* TurboStagePerf, + std::shared_ptr TurboStagePerf, std::shared_ptr TurboPerf, unsigned short val_iZone, unsigned long TimeIter, unsigned long OuterIter, unsigned long InnerIter, unsigned short val_iInst); @@ -973,7 +973,7 @@ class COutput { * \param[in] TurboPerf - Turboperformance class * \param[in] config - Definition of the particular problem */ - inline virtual void SetTurboMultiZonePerformance_Output(CTurbomachineryStagePerformance* TurboStagePerf, std::shared_ptr TurboPerf, CConfig *config) {} + inline virtual void SetTurboMultiZonePerformance_Output(std::shared_ptr TurboStagePerf, std::shared_ptr TurboPerf, CConfig *config) {} /*! * \brief Loads the turboperformacne history data @@ -981,7 +981,7 @@ class COutput { * \param[in] TurboPerf - Turboperformance class * \param[in] config - Definition of the particular problem */ - inline virtual void LoadTurboHistoryData(CTurbomachineryStagePerformance* TurboStagePerf, std::shared_ptr TurboPerf, CConfig *config) {} + inline virtual void LoadTurboHistoryData(std::shared_ptr TurboStagePerf, std::shared_ptr TurboPerf, CConfig *config) {} /*! * \brief Write the kinematic and thermodynamic variables at each spanwise division diff --git a/SU2_CFD/include/solvers/CAdjEulerSolver.hpp b/SU2_CFD/include/solvers/CAdjEulerSolver.hpp index 97e46646b9d..0934817a553 100644 --- a/SU2_CFD/include/solvers/CAdjEulerSolver.hpp +++ b/SU2_CFD/include/solvers/CAdjEulerSolver.hpp @@ -49,8 +49,8 @@ class CAdjEulerSolver : public CSolver { *Sens_Press, /*!< \brief Pressure sensitivity coefficient for each boundary. */ *Sens_Temp, /*!< \brief Temperature sensitivity coefficient for each boundary. */ *Sens_BPress, /*!< \brief Back pressure sensitivity coefficient for each boundary. */ - **CSensitivity, /*!< \brief Shape sensitivity coefficient for each boundary and vertex. */ - ***DonorAdjVar; /*!< \brief Value of the donor variables at each boundary. */ + **CSensitivity; /*!< \brief Shape sensitivity coefficient for each boundary and vertex. */ + vector>> DonorAdjVar; /*!< \brief Value of the donor variables at each boundary. */ su2double Total_Sens_Mach; /*!< \brief Total mach sensitivity coefficient for all the boundaries. */ su2double Total_Sens_AoA; /*!< \brief Total angle of attack sensitivity coefficient for all the boundaries. */ su2double Total_Sens_Geo; /*!< \brief Total shape sensitivity coefficient for all the boundaries. */ @@ -63,7 +63,7 @@ class CAdjEulerSolver : public CSolver { su2double Gamma_Minus_One; /*!< \brief Fluids's Gamma - 1.0 . */ su2double *FlowPrimVar_i, /*!< \brief Store the flow solution at point i. */ *FlowPrimVar_j; /*!< \brief Store the flow solution at point j. */ - unsigned long **DonorGlobalIndex; /*!< \brief Value of the donor global index. */ + vector> DonorGlobalIndex; /*!< \brief Value of the donor global index. */ su2double pnorm, Area_Monitored; /*!< \brief Store the total area of the monitored outflow surface (used for normalization in continuous adjoint outflow conditions) */ @@ -219,8 +219,8 @@ class CAdjEulerSolver : public CSolver { * \param[in] val_vertex - Vertex of the marker val_marker where the coefficient is evaluated. * \return Value of the pressure coefficient. */ - inline su2double *GetDonorAdjVar(unsigned short val_marker, unsigned long val_vertex) const { - return DonorAdjVar[val_marker][val_vertex]; + inline const su2double* GetDonorAdjVar(unsigned short val_marker, unsigned long val_vertex) const { + return DonorAdjVar[val_marker][val_vertex].data(); } /*! diff --git a/SU2_CFD/include/solvers/CFVMFlowSolverBase.inl b/SU2_CFD/include/solvers/CFVMFlowSolverBase.inl index c2af5a18d82..ea4cb537142 100644 --- a/SU2_CFD/include/solvers/CFVMFlowSolverBase.inl +++ b/SU2_CFD/include/solvers/CFVMFlowSolverBase.inl @@ -979,10 +979,8 @@ void CFVMFlowSolverBase::LoadRestart_impl(CGeometry **geometry, CSolver ** { /*--- Delete the class memory that is used to load the restart. ---*/ - delete [] Restart_Vars; - Restart_Vars = nullptr; - delete [] Restart_Data; - Restart_Data = nullptr; + Restart_Vars = decltype(Restart_Vars){}; + Restart_Data = decltype(Restart_Data){}; } END_SU2_OMP_SAFE_GLOBAL_ACCESS } diff --git a/SU2_CFD/include/solvers/CSolver.hpp b/SU2_CFD/include/solvers/CSolver.hpp index 9134c901174..e57ba8aa3e0 100644 --- a/SU2_CFD/include/solvers/CSolver.hpp +++ b/SU2_CFD/include/solvers/CSolver.hpp @@ -133,10 +133,10 @@ class CSolver { su2activevector iPoint_UndLapl; /*!< \brief Auxiliary variable for the undivided Laplacians. */ su2activevector jPoint_UndLapl; /*!< \brief Auxiliary variable for the undivided Laplacians. */ - int *Restart_Vars; /*!< \brief Auxiliary structure for holding the number of variables and points in a restart. */ - int Restart_ExtIter; /*!< \brief Auxiliary structure for holding the external iteration offset from a restart. */ - passivedouble *Restart_Data; /*!< \brief Auxiliary structure for holding the data values from a restart. */ - unsigned short nOutputVariables; /*!< \brief Number of variables to write. */ + vector Restart_Vars; /*!< \brief Auxiliary structure for holding the number of variables and points in a restart. */ + int Restart_ExtIter; /*!< \brief Auxiliary structure for holding the external iteration offset from a restart. */ + vector Restart_Data; /*!< \brief Auxiliary structure for holding the data values from a restart. */ + unsigned short nOutputVariables; /*!< \brief Number of variables to write. */ unsigned long nMarker; /*!< \brief Total number of markers using the grid information. */ vector nVertex; /*!< \brief Store nVertex at each marker for deallocation */ diff --git a/SU2_CFD/src/iteration/CDiscAdjFEAIteration.cpp b/SU2_CFD/src/iteration/CDiscAdjFEAIteration.cpp index 733c2e58671..a8440cfd310 100644 --- a/SU2_CFD/src/iteration/CDiscAdjFEAIteration.cpp +++ b/SU2_CFD/src/iteration/CDiscAdjFEAIteration.cpp @@ -30,11 +30,9 @@ #include "../../include/solvers/CFEASolver.hpp" #include "../../include/output/COutput.hpp" -CDiscAdjFEAIteration::CDiscAdjFEAIteration(const CConfig *config) : CIteration(config), CurrentRecording(NONE) { - fem_iteration = new CFEAIteration(config); -} +CDiscAdjFEAIteration::CDiscAdjFEAIteration(const CConfig *config) : CIteration(config), CurrentRecording(NONE) {} -CDiscAdjFEAIteration::~CDiscAdjFEAIteration() = default; +CDiscAdjFEAIteration::~CDiscAdjFEAIteration() {} void CDiscAdjFEAIteration::Preprocess(COutput* output, CIntegration**** integration, CGeometry**** geometry, CSolver***** solver, CNumerics****** numerics, CConfig** config, diff --git a/SU2_CFD/src/iteration/CTurboIteration.cpp b/SU2_CFD/src/iteration/CTurboIteration.cpp index 196fa52f55a..47b10704b25 100644 --- a/SU2_CFD/src/iteration/CTurboIteration.cpp +++ b/SU2_CFD/src/iteration/CTurboIteration.cpp @@ -62,5 +62,5 @@ void CTurboIteration::Postprocess(COutput* output, CIntegration**** integration, void CTurboIteration::InitTurboPerformance(CGeometry* geometry, CConfig** config, CFluidModel* fluid) { TurbomachineryPerformance = std::make_shared(config, *geometry, *fluid); - TurbomachineryStagePerformance = new CTurbomachineryStagePerformance(*fluid); + TurbomachineryStagePerformance = std::make_shared(*fluid); } diff --git a/SU2_CFD/src/numerics/continuous_adjoint/adj_diffusion.cpp b/SU2_CFD/src/numerics/continuous_adjoint/adj_diffusion.cpp index 8a407c2caa8..3ddc659a5eb 100644 --- a/SU2_CFD/src/numerics/continuous_adjoint/adj_diffusion.cpp +++ b/SU2_CFD/src/numerics/continuous_adjoint/adj_diffusion.cpp @@ -54,6 +54,7 @@ CAvgGrad_AdjFlow::~CAvgGrad_AdjFlow() { delete [] Mean_GradPsiE; for (unsigned short iDim = 0; iDim < nDim; iDim++) delete [] Mean_GradPhi[iDim]; + delete [] Mean_GradPhi; } void CAvgGrad_AdjFlow::ComputeResidual(su2double *val_residual_i, su2double *val_residual_j, diff --git a/SU2_CFD/src/numerics/elasticity/CFEANonlinearElasticity.cpp b/SU2_CFD/src/numerics/elasticity/CFEANonlinearElasticity.cpp index 418566611f9..fbead6e7c81 100644 --- a/SU2_CFD/src/numerics/elasticity/CFEANonlinearElasticity.cpp +++ b/SU2_CFD/src/numerics/elasticity/CFEANonlinearElasticity.cpp @@ -214,6 +214,9 @@ CFEANonlinearElasticity::~CFEANonlinearElasticity() { delete [] EField_Ref_Mod; delete [] EField_Curr_Unit; + if (maxwell_stress) { + delete [] ke_DE_i; + } } diff --git a/SU2_CFD/src/output/CFlowCompOutput.cpp b/SU2_CFD/src/output/CFlowCompOutput.cpp index c44ee947ead..f9bae62f895 100644 --- a/SU2_CFD/src/output/CFlowCompOutput.cpp +++ b/SU2_CFD/src/output/CFlowCompOutput.cpp @@ -545,7 +545,7 @@ void CFlowCompOutput::SetTurboPerformance_Output(std::shared_ptr T cout< TurboPerf, CConfig *config) { +void CFlowCompOutput::SetTurboMultiZonePerformance_Output(std::shared_ptr TurboStagePerf, std::shared_ptr TurboPerf, CConfig *config) { stringstream TurboMZPerf; @@ -575,7 +575,7 @@ void CFlowCompOutput::SetTurboMultiZonePerformance_Output(CTurbomachineryStagePe } -void CFlowCompOutput::LoadTurboHistoryData(CTurbomachineryStagePerformance* TurboStagePerf, std::shared_ptr TurboPerf, CConfig *config) { +void CFlowCompOutput::LoadTurboHistoryData(std::shared_ptr TurboStagePerf, std::shared_ptr TurboPerf, CConfig *config) { auto BladePerformance = TurboPerf->GetBladesPerformances(); for (unsigned short iZone = 0; iZone <= config->GetnZone()-1; iZone++) { auto nSpan = config->GetnSpan_iZones(iZone); diff --git a/SU2_CFD/src/output/COutput.cpp b/SU2_CFD/src/output/COutput.cpp index 99f6203074a..5171a2e7cad 100644 --- a/SU2_CFD/src/output/COutput.cpp +++ b/SU2_CFD/src/output/COutput.cpp @@ -227,7 +227,7 @@ void COutput::SetHistoryOutput(CGeometry *geometry, } -void COutput::SetHistoryOutput(CGeometry ****geometry, CSolver *****solver, CConfig **config, CTurbomachineryStagePerformance* TurboStagePerf, std::shared_ptr TurboPerf, unsigned short val_iZone, unsigned long TimeIter, unsigned long OuterIter, unsigned long InnerIter, unsigned short val_iInst){ +void COutput::SetHistoryOutput(CGeometry ****geometry, CSolver *****solver, CConfig **config, std::shared_ptr(TurboStagePerf), std::shared_ptr TurboPerf, unsigned short val_iZone, unsigned long TimeIter, unsigned long OuterIter, unsigned long InnerIter, unsigned short val_iInst){ unsigned long Iter= InnerIter; diff --git a/SU2_CFD/src/solvers/CAdjEulerSolver.cpp b/SU2_CFD/src/solvers/CAdjEulerSolver.cpp index 4e7ff5b2098..c35da679086 100644 --- a/SU2_CFD/src/solvers/CAdjEulerSolver.cpp +++ b/SU2_CFD/src/solvers/CAdjEulerSolver.cpp @@ -43,8 +43,6 @@ CAdjEulerSolver::CAdjEulerSolver() : CSolver() { CSensitivity = nullptr; FlowPrimVar_i = nullptr; FlowPrimVar_j = nullptr; - DonorAdjVar = nullptr; - DonorGlobalIndex = nullptr; } @@ -85,8 +83,6 @@ CAdjEulerSolver::CAdjEulerSolver(CGeometry *geometry, CConfig *config, unsigned CSensitivity = nullptr; FlowPrimVar_i = nullptr; FlowPrimVar_j = nullptr; - DonorAdjVar = nullptr; - DonorGlobalIndex = nullptr; /*--- Set the gamma value ---*/ Gamma = config->GetGamma(); @@ -138,9 +134,6 @@ CAdjEulerSolver::CAdjEulerSolver(CGeometry *geometry, CConfig *config, unsigned jPoint_UndLapl.resize(nPoint); } - /*--- Define some auxiliary vectors related to the geometry ---*/ - Vector_i = new su2double[nDim]; Vector_j = new su2double[nDim]; - /*--- Point to point Jacobians. These are always defined because they are also used for sensitivity calculations. ---*/ Jacobian_i = new su2double* [nVar]; @@ -188,25 +181,19 @@ CAdjEulerSolver::CAdjEulerSolver(CGeometry *geometry, CConfig *config, unsigned /*--- Store the value of the characteristic primitive variables at the boundaries ---*/ - DonorAdjVar = new su2double** [nMarker]; + DonorAdjVar.resize(nMarker); for (iMarker = 0; iMarker < nMarker; iMarker++) { - DonorAdjVar[iMarker] = new su2double* [geometry->nVertex[iMarker]]; + DonorAdjVar[iMarker].resize(geometry->nVertex[iMarker]); for (iVertex = 0; iVertex < geometry->nVertex[iMarker]; iVertex++) { - DonorAdjVar[iMarker][iVertex] = new su2double [nVar]; - for (iVar = 0; iVar < nVar; iVar++) { - DonorAdjVar[iMarker][iVertex][iVar] = 0.0; - } + DonorAdjVar[iMarker][iVertex].resize(nVar, 0.0); } } /*--- Store the value of the characteristic primitive variables index at the boundaries ---*/ - DonorGlobalIndex = new unsigned long* [nMarker]; + DonorGlobalIndex.resize(nMarker); for (iMarker = 0; iMarker < nMarker; iMarker++) { - DonorGlobalIndex[iMarker] = new unsigned long [geometry->nVertex[iMarker]]; - for (iVertex = 0; iVertex < geometry->nVertex[iMarker]; iVertex++) { - DonorGlobalIndex[iMarker][iVertex] = 0; - } + DonorGlobalIndex[iMarker].resize(geometry->nVertex[iMarker],0); } Sens_Geo = new su2double[nMarker]; @@ -3911,10 +3898,8 @@ void CAdjEulerSolver::LoadRestart(CGeometry **geometry, CSolver ***solver, CConf /*--- Delete the class memory that is used to load the restart. ---*/ - delete [] Restart_Vars; - delete [] Restart_Data; - Restart_Vars = nullptr; Restart_Data = nullptr; - + Restart_Vars = decltype(Restart_Vars){}; + Restart_Data = decltype(Restart_Data){}; } void CAdjEulerSolver::SetAuxVar_Surface_Gradient(CGeometry *geometry, const CConfig *config) { diff --git a/SU2_CFD/src/solvers/CAdjNSSolver.cpp b/SU2_CFD/src/solvers/CAdjNSSolver.cpp index 50ca5438e92..546c4baccf6 100644 --- a/SU2_CFD/src/solvers/CAdjNSSolver.cpp +++ b/SU2_CFD/src/solvers/CAdjNSSolver.cpp @@ -154,25 +154,19 @@ CAdjNSSolver::CAdjNSSolver(CGeometry *geometry, CConfig *config, unsigned short /*--- Store the value of the characteristic primitive variables at the boundaries ---*/ - DonorAdjVar = new su2double** [nMarker]; + DonorAdjVar.resize(nMarker); for (iMarker = 0; iMarker < nMarker; iMarker++) { - DonorAdjVar[iMarker] = new su2double* [geometry->nVertex[iMarker]]; + DonorAdjVar[iMarker].resize(geometry->nVertex[iMarker]); for (iVertex = 0; iVertex < geometry->nVertex[iMarker]; iVertex++) { - DonorAdjVar[iMarker][iVertex] = new su2double [nVar]; - for (iVar = 0; iVar < nVar; iVar++) { - DonorAdjVar[iMarker][iVertex][iVar] = 0.0; - } + DonorAdjVar[iMarker][iVertex].resize(nVar, 0.0); } } /*--- Store the value of the characteristic primitive variables at the boundaries ---*/ - DonorGlobalIndex = new unsigned long* [nMarker]; + DonorGlobalIndex.resize(nMarker); for (iMarker = 0; iMarker < nMarker; iMarker++) { - DonorGlobalIndex[iMarker] = new unsigned long [geometry->nVertex[iMarker]]; - for (iVertex = 0; iVertex < geometry->nVertex[iMarker]; iVertex++) { - DonorGlobalIndex[iMarker][iVertex] = 0; - } + DonorGlobalIndex[iMarker].resize(geometry->nVertex[iMarker],0); } Sens_Geo = new su2double[nMarker]; diff --git a/SU2_CFD/src/solvers/CBaselineSolver.cpp b/SU2_CFD/src/solvers/CBaselineSolver.cpp index 7d9e483d633..7b2f05c06e2 100644 --- a/SU2_CFD/src/solvers/CBaselineSolver.cpp +++ b/SU2_CFD/src/solvers/CBaselineSolver.cpp @@ -480,10 +480,8 @@ void CBaselineSolver::LoadRestart(CGeometry **geometry, CSolver ***solver, CConf /*--- Delete the class memory that is used to load the restart. ---*/ - delete [] Restart_Vars; - delete [] Restart_Data; - Restart_Vars = nullptr; Restart_Data = nullptr; - + Restart_Vars = decltype(Restart_Vars){}; + Restart_Data = decltype(Restart_Data){}; } void CBaselineSolver::LoadRestart_FSI(CGeometry *geometry, CConfig *config, int val_iter) { diff --git a/SU2_CFD/src/solvers/CBaselineSolver_FEM.cpp b/SU2_CFD/src/solvers/CBaselineSolver_FEM.cpp index 19247b9ced1..acb26ba1e83 100644 --- a/SU2_CFD/src/solvers/CBaselineSolver_FEM.cpp +++ b/SU2_CFD/src/solvers/CBaselineSolver_FEM.cpp @@ -379,10 +379,8 @@ void CBaselineSolver_FEM::LoadRestart(CGeometry **geometry, CSolver ***solver, C /*--- Delete the class memory that is used to load the restart. ---*/ - delete [] Restart_Vars; - delete [] Restart_Data; - Restart_Vars = nullptr; Restart_Data = nullptr; - + Restart_Vars = decltype(Restart_Vars){}; + Restart_Data = decltype(Restart_Data){}; } CBaselineSolver_FEM::~CBaselineSolver_FEM() = default; diff --git a/SU2_CFD/src/solvers/CFEASolver.cpp b/SU2_CFD/src/solvers/CFEASolver.cpp index 507ebbf4d47..5934bc7f0ee 100644 --- a/SU2_CFD/src/solvers/CFEASolver.cpp +++ b/SU2_CFD/src/solvers/CFEASolver.cpp @@ -3142,9 +3142,8 @@ void CFEASolver::LoadRestart(CGeometry **geometry, CSolver ***solver, CConfig *c /*--- Delete the class memory that is used to load the restart. ---*/ - delete [] Restart_Vars; Restart_Vars = nullptr; - delete [] Restart_Data; Restart_Data = nullptr; - + Restart_Vars = decltype(Restart_Vars){}; + Restart_Data = decltype(Restart_Data){}; } void CFEASolver::RegisterVariables(CGeometry *geometry, CConfig *config, bool reset) diff --git a/SU2_CFD/src/solvers/CFEM_DG_EulerSolver.cpp b/SU2_CFD/src/solvers/CFEM_DG_EulerSolver.cpp index 42562cf6ba0..8c55d205bb1 100644 --- a/SU2_CFD/src/solvers/CFEM_DG_EulerSolver.cpp +++ b/SU2_CFD/src/solvers/CFEM_DG_EulerSolver.cpp @@ -9571,8 +9571,6 @@ void CFEM_DG_EulerSolver::LoadRestart(CGeometry **geometry, CSolver ***solver, C /*--- Delete the class memory that is used to load the restart. ---*/ - delete [] Restart_Vars; - delete [] Restart_Data; - Restart_Vars = nullptr; Restart_Data = nullptr; - + Restart_Vars = decltype(Restart_Vars){}; + Restart_Data = decltype(Restart_Data){}; } diff --git a/SU2_CFD/src/solvers/CHeatSolver.cpp b/SU2_CFD/src/solvers/CHeatSolver.cpp index a1335a0d8a3..045510ddae7 100644 --- a/SU2_CFD/src/solvers/CHeatSolver.cpp +++ b/SU2_CFD/src/solvers/CHeatSolver.cpp @@ -265,10 +265,8 @@ void CHeatSolver::LoadRestart(CGeometry **geometry, CSolver ***solver, CConfig * /*--- Delete the class memory that is used to load the restart. ---*/ BEGIN_SU2_OMP_SAFE_GLOBAL_ACCESS { - delete[] Restart_Vars; - Restart_Vars = nullptr; - delete[] Restart_Data; - Restart_Data = nullptr; + Restart_Vars = decltype(Restart_Vars){}; + Restart_Data = decltype(Restart_Data){}; } END_SU2_OMP_SAFE_GLOBAL_ACCESS } diff --git a/SU2_CFD/src/solvers/CMeshSolver.cpp b/SU2_CFD/src/solvers/CMeshSolver.cpp index 20b8269e118..dc57fd6ce02 100644 --- a/SU2_CFD/src/solvers/CMeshSolver.cpp +++ b/SU2_CFD/src/solvers/CMeshSolver.cpp @@ -857,9 +857,8 @@ void CMeshSolver::LoadRestart(CGeometry **geometry, CSolver ***solver, CConfig * /*--- Delete the class memory that is used to load the restart. ---*/ - delete [] Restart_Vars; Restart_Vars = nullptr; - delete [] Restart_Data; Restart_Data = nullptr; - + Restart_Vars = decltype(Restart_Vars){}; + Restart_Data = decltype(Restart_Data){}; } void CMeshSolver::RestartOldGeometry(CGeometry *geometry, const CConfig *config) { @@ -956,8 +955,8 @@ void CMeshSolver::RestartOldGeometry(CGeometry *geometry, const CConfig *config) /*--- Delete the class memory that is used to load the restart. ---*/ - delete [] Restart_Vars; Restart_Vars = nullptr; - delete [] Restart_Data; Restart_Data = nullptr; + Restart_Vars = decltype(Restart_Vars){}; + Restart_Data = decltype(Restart_Data){}; InitiateComms(geometry, config, CommType); CompleteComms(geometry, config, CommType); diff --git a/SU2_CFD/src/solvers/CRadSolver.cpp b/SU2_CFD/src/solvers/CRadSolver.cpp index 26256446773..4546e107118 100644 --- a/SU2_CFD/src/solvers/CRadSolver.cpp +++ b/SU2_CFD/src/solvers/CRadSolver.cpp @@ -160,8 +160,6 @@ void CRadSolver::LoadRestart(CGeometry **geometry, CSolver ***solver, CConfig *c /*--- Delete the class memory that is used to load the restart. ---*/ - delete [] Restart_Vars; - delete [] Restart_Data; - Restart_Vars = nullptr; Restart_Data = nullptr; - + Restart_Vars = decltype(Restart_Vars){}; + Restart_Data = decltype(Restart_Data){}; } diff --git a/SU2_CFD/src/solvers/CSolver.cpp b/SU2_CFD/src/solvers/CSolver.cpp index 5cd2fd93425..9077101eff2 100644 --- a/SU2_CFD/src/solvers/CSolver.cpp +++ b/SU2_CFD/src/solvers/CSolver.cpp @@ -86,8 +86,6 @@ CSolver::CSolver(LINEAR_SOLVER_MODE linear_solver_mode) : System(linear_solver_m Jacobian_ij = nullptr; Jacobian_ji = nullptr; Jacobian_jj = nullptr; - Restart_Vars = nullptr; - Restart_Data = nullptr; base_nodes = nullptr; nOutputVariables = 0; ResLinSolver = 0.0; @@ -144,6 +142,7 @@ CSolver::~CSolver() { delete [] Res_Visc; delete [] Res_Sour; delete [] Res_Conv_i; + delete [] Res_Conv_j; delete [] Res_Visc_i; delete [] Res_Visc_j; @@ -183,8 +182,8 @@ CSolver::~CSolver() { delete [] Jacobian_jj; } - delete [] Restart_Vars; - delete [] Restart_Data; + Restart_Vars = decltype(Restart_Vars){}; + Restart_Data = decltype(Restart_Data){}; delete VerificationSolution; } @@ -2738,7 +2737,7 @@ void CSolver::Read_SU2_Restart_ASCII(CGeometry *geometry, const CConfig *config, int counter = 0; fields.clear(); - Restart_Vars = new int[5]; + Restart_Vars.resize(5); string error_string = "Note: ASCII restart files must be in CSV format since v7.0.\n" "Check https://su2code.github.io/docs/Guide-to-v7 for more information."; @@ -2857,7 +2856,7 @@ void CSolver::Read_SU2_Restart_ASCII(CGeometry *geometry, const CConfig *config, /*--- Allocate memory for the restart data. ---*/ - Restart_Data = new passivedouble[Restart_Vars[1]*geometry->GetnPointDomain()]; + Restart_Data.resize(Restart_Vars[1]*geometry->GetnPointDomain()); /*--- Read all lines in the restart file and extract data. ---*/ @@ -2898,7 +2897,7 @@ void CSolver::Read_SU2_Restart_Binary(CGeometry *geometry, const CConfig *config val_filename += ".dat"; strcpy(fname, val_filename.c_str()); const int nRestart_Vars = 5; - Restart_Vars = new int[nRestart_Vars]; + Restart_Vars.resize(nRestart_Vars); fields.clear(); #ifndef HAVE_MPI @@ -2917,7 +2916,7 @@ void CSolver::Read_SU2_Restart_Binary(CGeometry *geometry, const CConfig *config /*--- First, read the number of variables and points. ---*/ - ret = fread(Restart_Vars, sizeof(int), nRestart_Vars, fhw); + ret = fread(Restart_Vars.data(), sizeof(int), nRestart_Vars, fhw); if (ret != (unsigned long)nRestart_Vars) { SU2_MPI::Error("Error reading restart file.", CURRENT_FUNCTION); } @@ -2953,11 +2952,11 @@ void CSolver::Read_SU2_Restart_Binary(CGeometry *geometry, const CConfig *config /*--- For now, create a temp 1D buffer to read the data from file. ---*/ - Restart_Data = new passivedouble[nFields*nPointFile]; + Restart_Data.resize(nFields*nPointFile); /*--- Read in the data for the restart at all local points. ---*/ - ret = fread(Restart_Data, sizeof(passivedouble), nFields*nPointFile, fhw); + ret = fread(Restart_Data.data(), sizeof(passivedouble), nFields*nPointFile, fhw); if (ret != nFields*nPointFile) { SU2_MPI::Error("Error reading restart file.", CURRENT_FUNCTION); } @@ -2986,11 +2985,11 @@ void CSolver::Read_SU2_Restart_Binary(CGeometry *geometry, const CConfig *config variable string names here. Only the master rank reads the header. ---*/ if (rank == MASTER_NODE) - MPI_File_read(fhw, Restart_Vars, nRestart_Vars, MPI_INT, MPI_STATUS_IGNORE); + MPI_File_read(fhw, Restart_Vars.data(), nRestart_Vars, MPI_INT, MPI_STATUS_IGNORE); /*--- Broadcast the number of variables to all procs and store clearly. ---*/ - SU2_MPI::Bcast(Restart_Vars, nRestart_Vars, MPI_INT, MASTER_NODE, SU2_MPI::GetComm()); + SU2_MPI::Bcast(Restart_Vars.data(), nRestart_Vars, MPI_INT, MASTER_NODE, SU2_MPI::GetComm()); /*--- Check that this is an SU2 binary file. SU2 binary files have the hex representation of "SU2" as the first int in the file. ---*/ @@ -3099,11 +3098,11 @@ void CSolver::Read_SU2_Restart_Binary(CGeometry *geometry, const CConfig *config /*--- For now, create a temp 1D buffer to read the data from file. ---*/ const int bufSize = nBlock*blocklen[0]; - Restart_Data = new passivedouble[bufSize]; + Restart_Data.resize(bufSize); /*--- Collective call for all ranks to read from their view simultaneously. ---*/ - MPI_File_read_all(fhw, Restart_Data, bufSize, MPI_DOUBLE, &status); + MPI_File_read_all(fhw, Restart_Data.data(), bufSize, MPI_DOUBLE, &status); /*--- All ranks close the file after writing. ---*/ @@ -3186,8 +3185,7 @@ void CSolver::InterpolateRestartData(const CGeometry *geometry, const CConfig *c sendBuf(iPoint,iVar) = Restart_Data[iPointDonor*nFields+iVar]; } - delete [] Restart_Data; - Restart_Data = nullptr; + Restart_Data = decltype(Restart_Data){}; /*--- Make room to receive donor data from other ranks, and to map it to target points. ---*/ @@ -3302,7 +3300,7 @@ void CSolver::InterpolateRestartData(const CGeometry *geometry, const CConfig *c /*--- Move to Restart_Data in ascending order of global index, which is how a matching restart would have been read. ---*/ - Restart_Data = new passivedouble[nPointDomain*nFields]; + Restart_Data.resize(nPointDomain*nFields); Restart_Vars[2] = nPointDomain; int counter = 0; @@ -4214,8 +4212,8 @@ void CSolver::BasicLoadRestart(CGeometry *geometry, const CConfig *config, const /*--- Delete the class memory that is used to load the restart. ---*/ - delete [] Restart_Vars; Restart_Vars = nullptr; - delete [] Restart_Data; Restart_Data = nullptr; + Restart_Vars = decltype(Restart_Vars){}; + Restart_Data = decltype(Restart_Data){}; /*--- Detect a wrong solution file ---*/ diff --git a/SU2_CFD/src/solvers/CSpeciesSolver.cpp b/SU2_CFD/src/solvers/CSpeciesSolver.cpp index 3d5c5406a3b..7af78a47a7d 100644 --- a/SU2_CFD/src/solvers/CSpeciesSolver.cpp +++ b/SU2_CFD/src/solvers/CSpeciesSolver.cpp @@ -284,10 +284,8 @@ void CSpeciesSolver::LoadRestart(CGeometry** geometry, CSolver*** solver, CConfi BEGIN_SU2_OMP_SAFE_GLOBAL_ACCESS { /*--- Delete the class memory that is used to load the restart. ---*/ - delete[] Restart_Vars; - Restart_Vars = nullptr; - delete[] Restart_Data; - Restart_Data = nullptr; + Restart_Vars = decltype(Restart_Vars){}; + Restart_Data = decltype(Restart_Data){}; } END_SU2_OMP_SAFE_GLOBAL_ACCESS } diff --git a/SU2_CFD/src/solvers/CTransLMSolver.cpp b/SU2_CFD/src/solvers/CTransLMSolver.cpp index 7d8fb2485a9..619655af692 100644 --- a/SU2_CFD/src/solvers/CTransLMSolver.cpp +++ b/SU2_CFD/src/solvers/CTransLMSolver.cpp @@ -592,10 +592,8 @@ void CTransLMSolver::LoadRestart(CGeometry** geometry, CSolver*** solver, CConfi BEGIN_SU2_OMP_SAFE_GLOBAL_ACCESS { /*--- Delete the class memory that is used to load the restart. ---*/ - delete[] Restart_Vars; - Restart_Vars = nullptr; - delete[] Restart_Data; - Restart_Data = nullptr; + Restart_Vars.clear(); + Restart_Data.clear(); } END_SU2_OMP_SAFE_GLOBAL_ACCESS diff --git a/SU2_CFD/src/solvers/CTurbSolver.cpp b/SU2_CFD/src/solvers/CTurbSolver.cpp index 3277cd443e0..95a405408ef 100644 --- a/SU2_CFD/src/solvers/CTurbSolver.cpp +++ b/SU2_CFD/src/solvers/CTurbSolver.cpp @@ -196,10 +196,8 @@ void CTurbSolver::LoadRestart(CGeometry** geometry, CSolver*** solver, CConfig* BEGIN_SU2_OMP_SAFE_GLOBAL_ACCESS { /*--- Delete the class memory that is used to load the restart. ---*/ - delete[] Restart_Vars; - Restart_Vars = nullptr; - delete[] Restart_Data; - Restart_Data = nullptr; + Restart_Vars = decltype(Restart_Vars){}; + Restart_Data = decltype(Restart_Data){}; } END_SU2_OMP_SAFE_GLOBAL_ACCESS }