diff --git a/MathLib/LinAlg/Solvers/CGParallel.cpp b/MathLib/LinAlg/Solvers/CGParallel.cpp
index 8c74cb401b417a826497ae0c9ae0d4ab25cea24d..98014dbad6d022ee3c3ce6671c6544fc0298ac37 100644
--- a/MathLib/LinAlg/Solvers/CGParallel.cpp
+++ b/MathLib/LinAlg/Solvers/CGParallel.cpp
@@ -71,17 +71,17 @@ unsigned CGParallel(CRSMatrix<double,unsigned> const * mat, double const * const
 		std::cout << "Step " << l << ", resid=" << resid / nrmb << std::endl;
 #endif
 
+		// r^ = C r
+		// rhat = r
+//		blas::copy(N, r, rhat);
+		#pragma omp parallel for
+		for (k = 0; k < N; k++) {
+			rhat[k] = r[k];
+		}
+		mat->precondApply(rhat);
+
 		#pragma omp parallel
 		{
-			// r^ = C r
-			// rhat = r
-//			blas::copy(N, r, rhat);
-			#pragma omp parallel for
-			for (k = 0; k < N; k++) {
-				rhat[k] = r[k];
-			}
-			mat->precondApply(rhat);
-
 			// rho = r * r^;
 			rho = scpr(r, rhat, N);