@@ -84,8 +84,8 @@ void CFVMFlowSolverBase<V, R>::AeroCoeffsArray::setZero(int i) {
8484
8585template <class V , ENUM_REGIME R>
8686void CFVMFlowSolverBase<V, R>::Allocate(const CConfig& config) {
87- unsigned short iDim, iVar, iMarker ;
88- unsigned long iPoint, iVertex ;
87+ unsigned short iVar;
88+ unsigned long iPoint, iMarker ;
8989
9090 /* --- Define some auxiliar vector related with the residual ---*/
9191
@@ -116,19 +116,16 @@ void CFVMFlowSolverBase<V, R>::Allocate(const CConfig& config) {
116116
117117 /* --- Allocates a 2D array with variable "outer" sizes and init to 0. ---*/
118118
119- auto Alloc2D = [](unsigned long M, const unsigned long * N, su2double** & X) {
120- X = new su2double*[M] ;
121- for (unsigned long i = 0 ; i < M; ++i) X[i] = new su2double[ N[i]]( );
119+ auto Alloc2D = [](unsigned long M, const unsigned long * N, vector<vector< su2double> > & X) {
120+ X. resize (M) ;
121+ for (unsigned long i = 0 ; i < M; ++i) X[i]. resize ( N[i], 0.0 );
122122 };
123123
124124 /* --- Allocates a 3D array with variable "middle" sizes and init to 0. ---*/
125125
126- auto Alloc3D = [](unsigned long M, const unsigned long * N, unsigned long P, su2double***& X) {
127- X = new su2double**[M];
128- for (unsigned long i = 0 ; i < M; ++i) {
129- X[i] = new su2double*[N[i]];
130- for (unsigned long j = 0 ; j < N[i]; ++j) X[i][j] = new su2double[P]();
131- }
126+ auto Alloc3D = [](unsigned long M, const unsigned long * N, unsigned long P, vector<su2activematrix>& X) {
127+ X.resize (M);
128+ for (unsigned long i = 0 ; i < M; ++i) X[i].resize (N[i],P) = su2double (0.0 );
132129 };
133130
134131 /* --- Store the value of the characteristic primitive variables at the boundaries ---*/
@@ -164,25 +161,25 @@ void CFVMFlowSolverBase<V, R>::Allocate(const CConfig& config) {
164161
165162 /* --- Heat flux coefficients. ---*/
166163
167- HF_Visc = new su2double[ nMarker] ;
168- MaxHF_Visc = new su2double[ nMarker] ;
164+ HF_Visc. resize ( nMarker, 0.0 ) ;
165+ MaxHF_Visc. resize ( nMarker, 0.0 ) ;
169166
170- Surface_HF_Visc = new su2double[ config.GetnMarker_Monitoring ()] ;
171- Surface_MaxHF_Visc = new su2double[ config.GetnMarker_Monitoring ()] ;
167+ Surface_HF_Visc. resize ( config.GetnMarker_Monitoring ()) ;
168+ Surface_MaxHF_Visc. resize ( config.GetnMarker_Monitoring ()) ;
172169
173170 /* --- Supersonic coefficients ---*/
174171
175- CNearFieldOF_Inv = new su2double[ nMarker] ;
172+ CNearFieldOF_Inv. resize ( nMarker, 0.0 ) ;
176173
177174 /* --- Initializate quantities for SlidingMesh Interface ---*/
178175
179176 SlidingState = new su2double***[nMarker]();
180- SlidingStateNodes = new int *[nMarker]( );
177+ SlidingStateNodes. resize (nMarker );
181178
182179 for (iMarker = 0 ; iMarker < nMarker; iMarker++) {
183180 if (config.GetMarker_All_KindBC (iMarker) == FLUID_INTERFACE) {
184181 SlidingState[iMarker] = new su2double**[nVertex[iMarker]]();
185- SlidingStateNodes[iMarker] = new int [ nVertex[iMarker]]( );
182+ SlidingStateNodes[iMarker]. resize ( nVertex[iMarker], 0 );
186183
187184 for (iPoint = 0 ; iPoint < nVertex[iMarker]; iPoint++)
188185 SlidingState[iMarker][iPoint] = new su2double*[nPrimVar + 1 ]();
@@ -200,13 +197,9 @@ void CFVMFlowSolverBase<V, R>::Allocate(const CConfig& config) {
200197
201198 /* --- Skin friction in all the markers ---*/
202199
203- CSkinFriction = new su2double**[nMarker];
204- for (iMarker = 0 ; iMarker < nMarker; iMarker++) {
205- CSkinFriction[iMarker] = new su2double*[nDim];
206- for (iDim = 0 ; iDim < nDim; iDim++) {
207- CSkinFriction[iMarker][iDim] = new su2double[nVertex[iMarker]]();
208- }
209- }
200+ CSkinFriction.resize (nMarker);
201+ for (iMarker = 0 ; iMarker < nMarker; iMarker++)
202+ CSkinFriction[iMarker].resize (nDim, nVertex[iMarker]) = su2double (0.0 );
210203
211204 /* --- Wall Shear Stress in all the markers ---*/
212205
@@ -216,14 +209,8 @@ void CFVMFlowSolverBase<V, R>::Allocate(const CConfig& config) {
216209 used for coupling with a solid donor cell ---*/
217210 constexpr auto nHeatConjugateVar = 4u ;
218211
219- HeatConjugateVar = new su2double**[nMarker];
220- for (iMarker = 0 ; iMarker < nMarker; iMarker++) {
221- HeatConjugateVar[iMarker] = new su2double*[nVertex[iMarker]];
222- for (iVertex = 0 ; iVertex < nVertex[iMarker]; iVertex++) {
223- HeatConjugateVar[iMarker][iVertex] = new su2double[nHeatConjugateVar]();
224- HeatConjugateVar[iMarker][iVertex][0 ] = config.GetTemperature_FreeStreamND ();
225- }
226- }
212+ Alloc3D (nMarker, nVertex, nHeatConjugateVar, HeatConjugateVar);
213+ for (auto & x : HeatConjugateVar) x = config.GetTemperature_FreeStreamND ();
227214
228215 if (MGLevel == MESH_0) {
229216 VertexTraction.resize (nMarker);
@@ -385,14 +372,8 @@ void CFVMFlowSolverBase<V, R>::HybridParallelInitialization(const CConfig& confi
385372
386373template <class V , ENUM_REGIME R>
387374CFVMFlowSolverBase<V, R>::~CFVMFlowSolverBase () {
388- unsigned short iMarker, iVar, iDim;
389- unsigned long iVertex;
390-
391- delete[] CNearFieldOF_Inv;
392- delete[] HF_Visc;
393- delete[] MaxHF_Visc;
394- delete[] Surface_HF_Visc;
395- delete[] Surface_MaxHF_Visc;
375+ unsigned short iVar;
376+ unsigned long iMarker, iVertex;
396377
397378 if (SlidingState != nullptr ) {
398379 for (iMarker = 0 ; iMarker < nMarker; iMarker++) {
@@ -408,101 +389,6 @@ CFVMFlowSolverBase<V, R>::~CFVMFlowSolverBase() {
408389 delete[] SlidingState;
409390 }
410391
411- if (SlidingStateNodes != nullptr ) {
412- for (iMarker = 0 ; iMarker < nMarker; iMarker++) {
413- if (SlidingStateNodes[iMarker] != nullptr ) delete[] SlidingStateNodes[iMarker];
414- }
415- delete[] SlidingStateNodes;
416- }
417-
418- if (CPressure != nullptr ) {
419- for (iMarker = 0 ; iMarker < nMarker; iMarker++) delete[] CPressure[iMarker];
420- delete[] CPressure;
421- }
422-
423- if (CPressureTarget != nullptr ) {
424- for (iMarker = 0 ; iMarker < nMarker; iMarker++) delete[] CPressureTarget[iMarker];
425- delete[] CPressureTarget;
426- }
427-
428- if (CharacPrimVar != nullptr ) {
429- for (iMarker = 0 ; iMarker < nMarker; iMarker++) {
430- for (iVertex = 0 ; iVertex < nVertex[iMarker]; iVertex++) delete[] CharacPrimVar[iMarker][iVertex];
431- delete[] CharacPrimVar[iMarker];
432- }
433- delete[] CharacPrimVar;
434- }
435-
436- if (Inlet_Ttotal != nullptr ) {
437- for (iMarker = 0 ; iMarker < nMarker; iMarker++)
438- if (Inlet_Ttotal[iMarker] != nullptr ) delete[] Inlet_Ttotal[iMarker];
439- delete[] Inlet_Ttotal;
440- }
441-
442- if (Inlet_Ptotal != nullptr ) {
443- for (iMarker = 0 ; iMarker < nMarker; iMarker++)
444- if (Inlet_Ptotal[iMarker] != nullptr ) delete[] Inlet_Ptotal[iMarker];
445- delete[] Inlet_Ptotal;
446- }
447-
448- if (Inlet_FlowDir != nullptr ) {
449- for (iMarker = 0 ; iMarker < nMarker; iMarker++) {
450- if (Inlet_FlowDir[iMarker] != nullptr ) {
451- for (iVertex = 0 ; iVertex < nVertex[iMarker]; iVertex++) delete[] Inlet_FlowDir[iMarker][iVertex];
452- delete[] Inlet_FlowDir[iMarker];
453- }
454- }
455- delete[] Inlet_FlowDir;
456- }
457-
458- if (HeatFlux != nullptr ) {
459- for (iMarker = 0 ; iMarker < nMarker; iMarker++) {
460- delete[] HeatFlux[iMarker];
461- }
462- delete[] HeatFlux;
463- }
464-
465- if (HeatFluxTarget != nullptr ) {
466- for (iMarker = 0 ; iMarker < nMarker; iMarker++) {
467- delete[] HeatFluxTarget[iMarker];
468- }
469- delete[] HeatFluxTarget;
470- }
471-
472- if (YPlus != nullptr ) {
473- for (iMarker = 0 ; iMarker < nMarker; iMarker++) {
474- delete[] YPlus[iMarker];
475- }
476- delete[] YPlus;
477- }
478-
479- if (CSkinFriction != nullptr ) {
480- for (iMarker = 0 ; iMarker < nMarker; iMarker++) {
481- for (iDim = 0 ; iDim < nDim; iDim++) {
482- delete[] CSkinFriction[iMarker][iDim];
483- }
484- delete[] CSkinFriction[iMarker];
485- }
486- delete[] CSkinFriction;
487- }
488-
489- if (WallShearStress != nullptr ) {
490- for (iMarker = 0 ; iMarker < nMarker; iMarker++) {
491- delete[] WallShearStress[iMarker];
492- }
493- delete[] WallShearStress;
494- }
495-
496- if (HeatConjugateVar != nullptr ) {
497- for (iMarker = 0 ; iMarker < nMarker; iMarker++) {
498- for (iVertex = 0 ; iVertex < nVertex[iMarker]; iVertex++) {
499- delete[] HeatConjugateVar[iMarker][iVertex];
500- }
501- delete[] HeatConjugateVar[iMarker];
502- }
503- delete[] HeatConjugateVar;
504- }
505-
506392 delete nodes;
507393 delete edgeNumerics;
508394}
@@ -2890,8 +2776,8 @@ void CFVMFlowSolverBase<V, FlowRegime>::Friction_Forces(const CGeometry* geometr
28902776 Allreduce_inplace (nMarkerMon, SurfaceViscCoeff.CMy );
28912777 Allreduce_inplace (nMarkerMon, SurfaceViscCoeff.CMz );
28922778
2893- Allreduce_inplace (nMarkerMon, Surface_HF_Visc);
2894- Allreduce_inplace (nMarkerMon, Surface_MaxHF_Visc);
2779+ Allreduce_inplace (nMarkerMon, Surface_HF_Visc. data () );
2780+ Allreduce_inplace (nMarkerMon, Surface_MaxHF_Visc. data () );
28952781
28962782 delete[] buffer;
28972783 }
0 commit comments