diff --git a/src/trapping/cfrfme.cpp b/src/trapping/cfrfme.cpp index 5901be17f7a617910bc6b3e4413a5bc8eaa879cb..24a780ccf95d82906e07538be6b34bb9c1a24f66 100644 --- a/src/trapping/cfrfme.cpp +++ b/src/trapping/cfrfme.cpp @@ -374,14 +374,15 @@ void frfme(string data_file, string output_path) { #ifdef USE_NVTX nvtxRangePop(); #endif - dcomplex *vec_w = new dcomplex[nkv * nkv](); - dcomplex **w = new dcomplex*[nkv]; - for (int wi = 0; wi < nkv; wi++) w[wi] = vec_w + wi * nkv; #ifdef USE_NVTX nvtxRangePush("j80 loop"); #endif +#pragma omp parallel for for (int j80 = jlmf; j80 <= jlml; j80++) { - int wk_index = 0; + dcomplex *vec_w = new dcomplex[nkv * nkv](); + dcomplex **w = new dcomplex*[nkv]; + for (int wi = 0; wi < nkv; wi++) w[wi] = vec_w + wi * nkv; + int wk_index = (j80 - jlmf) * nkv * nkv; for (int jy50 = 0; jy50 < nkv; jy50++) { for (int jx50 = 0; jx50 < nkv; jx50++) { for (int wi = 0; wi < nlmmt; wi++) wk[wi] = tt1->vec_wk[wk_index++]; @@ -419,9 +420,9 @@ void frfme(string data_file, string output_path) { } // ix65 loop } // iy70 loop } // iz75 loop + delete[] vec_w; + delete[] w; } // j80 loop - delete[] vec_w; - delete[] w; #ifdef USE_NVTX nvtxRangePop(); #endif