From 0e3f6a8c625ed0dc04d782adc2fa82b7e6fe1ada Mon Sep 17 00:00:00 2001
From: Walter Van Herck <w.van.herck@fz-juelich.de>
Date: Tue, 24 Oct 2017 16:01:13 +0200
Subject: [PATCH] Export polarization of Beam to Python and use scientific
 double for external field in Python

---
 Core/Export/ExportToPython.cpp | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/Core/Export/ExportToPython.cpp b/Core/Export/ExportToPython.cpp
index e54b2ace3a3..87f547ed9e4 100644
--- a/Core/Export/ExportToPython.cpp
+++ b/Core/Export/ExportToPython.cpp
@@ -658,9 +658,9 @@ std::string ExportToPython::defineMultiLayers() const
         if (external_field.mag()>0.0) {
             std::string field_name = it->second + "_external_field";
             result << indent() << field_name << " = kvector_t("
-                   << printDouble(external_field.x()) << ", "
-                   << printDouble(external_field.y()) << ", "
-                   << printDouble(external_field.z()) << ")\n";
+                   << printScientificDouble(external_field.x()) << ", "
+                   << printScientificDouble(external_field.y()) << ", "
+                   << printScientificDouble(external_field.z()) << ")\n";
             result << indent() << it->second << ".setExternalField("
                    << field_name << ")\n";
         }
@@ -815,6 +815,16 @@ std::string ExportToPython::defineBeam(const GISASSimulation* simulation) const
            << printNm(beam.getWavelength()) << ", "
            << printDegrees(beam.getAlpha()) << ", "
            << printDegrees(beam.getPhi()) << ")\n";
+    auto bloch_vector = beam.getBlochVector();
+    if (bloch_vector.mag()>0.0) {
+        std::string beam_polarization = "beam_polarization";
+        result << indent() << beam_polarization << " = kvector_t("
+               << printDouble(bloch_vector.x()) << ", "
+               << printDouble(bloch_vector.y()) << ", "
+               << printDouble(bloch_vector.z()) << ")\n";
+        result << indent() << "simulation.setBeamPolarization("
+               << beam_polarization << ")\n";
+    }
     double beam_intensity = beam.getIntensity();
     if(beam_intensity > 0.0)
         result << indent() << "simulation.setBeamIntensity("
-- 
GitLab