+#if HAVE_OPENMP
+ double x_start = xmin + (colStart * xinc);
+ for (PElemConstIterator pelem = m_listPElem.begin(); pelem != m_listPElem.end(); pelem++) {
+ const PhantomElement& rPElem = **pelem;
+ #pragma omp parallel for
+ for (int ix = 0; ix < colCount; ix++) {
+ double x = x_start + ix * xinc;
+ int iColStore = ix + iStorageOffset;
+ ImageFileColumn vCol = v[iColStore];
+
+ double y = ymin;
+ for (int iy = 0; iy < ny; iy++, y += yinc) {
+ double dAtten = 0;
+ double xi = x + kxofs;
+ for (int kx = 0; kx < nsample; kx++, xi += kxinc) {
+ double yi = y + kyofs;
+ for (int ky = 0; ky < nsample; ky++, yi += kyinc) {
+ if (rPElem.isPointInside (xi, yi, PHM_COORD))
+ dAtten += rPElem.atten();
+ } // ky
+ } // kx
+ *vCol++ += dAtten;
+ } /* iy */
+ } /* ix */
+ } /* pelem */
+
+#else
+