From 4bb6d8518f7dbd723c6ce686075fb11f0c068e52 Mon Sep 17 00:00:00 2001
From: Chichi Lalescu <clalesc1@jhu.edu>
Date: Fri, 20 Feb 2015 09:35:14 -0500
Subject: [PATCH] add interleave functionality

---
 src/field_descriptor.cpp | 11 +++++++++++
 src/field_descriptor.hpp |  5 +++++
 2 files changed, 16 insertions(+)

diff --git a/src/field_descriptor.cpp b/src/field_descriptor.cpp
index a11e81df..df101d1b 100644
--- a/src/field_descriptor.cpp
+++ b/src/field_descriptor.cpp
@@ -227,6 +227,17 @@ int field_descriptor::transpose(
     return EXIT_SUCCESS;
 }
 
+int field_descriptor::interleave(
+        float *input,
+        float *output,
+        int dim)
+{
+    for (int k = 0; k < this->local_size; k++)
+        for (int j = 0; j < dim; j++)
+                output[k*dim + j] = input[j*this->local_size + k];
+    return EXIT_SUCCESS;
+}
+
 field_descriptor* field_descriptor::get_transpose()
 {
     int n[this->ndims];
diff --git a/src/field_descriptor.hpp b/src/field_descriptor.hpp
index b8e9c36c..92092099 100644
--- a/src/field_descriptor.hpp
+++ b/src/field_descriptor.hpp
@@ -54,6 +54,11 @@ class field_descriptor
                 fftwf_complex *input,
                 fftwf_complex *output = NULL);
 
+        int interleave(
+                float *input,
+                float *output,
+                int dim);
+
         inline int rank(int i0)
         {
             return i0 / this->subsizes[0];
-- 
GitLab