diff --git a/src/support/mo_math_utilities.cpp b/src/support/mo_math_utilities.cpp index a8ccce4578870b2fc381de44c49bbea33cae1d0a..f82cd2723c857e75fb0821805b2bb75061d78d88 100644 --- a/src/support/mo_math_utilities.cpp +++ b/src/support/mo_math_utilities.cpp @@ -14,9 +14,8 @@ void tdma_solver_vec(double *a, double *b, double *c, double *d, int nrows = endidx - startidx; int ncols = elev - slev; - // Temporary arrays for c-prime and d-prime - std::vector<double> cp(nrows * ncols, 0.0); - std::vector<double> dp(nrows * ncols, 0.0); + double* cp = new double[nrows * ncols]; + double* dp = new double[nrows * ncols]; // Helper function to access 2D arrays stored as 1D auto idx = [&](int row, int col) { return col * nrows + row; }; @@ -68,6 +67,9 @@ void tdma_solver_vec(double *a, double *b, double *c, double *d, #pragma acc wait(acc_queue) } + // Free memory at the end + delete[] cp; + delete[] dp; // End timing auto end_time = std::chrono::high_resolution_clock::now(); std::chrono::duration<double> elapsed_time = end_time - start_time;