From 44af19b426850e48c5d943dfc9403e9745c02a60 Mon Sep 17 00:00:00 2001
From: Giovanni La Mura <giovanni.lamura@inaf.it>
Date: Tue, 16 Jan 2024 18:55:16 +0100
Subject: [PATCH] Fix binary TM output axis order and write values as double
 pairs

---
 src/sphere/sphere.cpp | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/src/sphere/sphere.cpp b/src/sphere/sphere.cpp
index 448002d2..2e179fc5 100644
--- a/src/sphere/sphere.cpp
+++ b/src/sphere/sphere.cpp
@@ -294,10 +294,17 @@ void sphere(string config_file, string data_file, string output_path) {
 	    ttms.write(reinterpret_cast<char *>(&vk), sizeof(double));
 	    ttms.write(reinterpret_cast<char *>(&exri), sizeof(double));
 	    for (int lmi = 0; lmi < gconf->l_max; lmi++) {
-	      complex<double> element1 = -1.0 / c1->rmi[0][lmi];
-	      complex<double> element2 = -1.0 / c1->rei[0][lmi];
-	      ttms.write(reinterpret_cast<char *>(&element1), sizeof(complex<double>));
-	      ttms.write(reinterpret_cast<char *>(&element2), sizeof(complex<double>));
+	      complex<double> element1 = -1.0 / c1->rmi[lmi][0];
+	      complex<double> element2 = -1.0 / c1->rei[lmi][0];
+	      double vreal, vimag;
+	      vreal = element1.real();
+	      vimag = element1.imag();
+	      ttms.write(reinterpret_cast<char *>(&vreal), sizeof(double));
+	      ttms.write(reinterpret_cast<char *>(&vimag), sizeof(double));
+	      vreal = element2.real();
+	      vimag = element2.imag();
+	      ttms.write(reinterpret_cast<char *>(&vreal), sizeof(double));
+	      ttms.write(reinterpret_cast<char *>(&vimag), sizeof(double));
 	    }
 	    ttms.write(reinterpret_cast<char *>(&(sconf->radii_of_spheres[0])), sizeof(double));
 	    ttms.close();
-- 
GitLab