From c68c128efddd08cd740849e1046d68b63eeafc35 Mon Sep 17 00:00:00 2001
From: Mikhail Svechnikov <svechnikovmv@gmail.com>
Date: Tue, 16 Jan 2024 20:11:21 +0100
Subject: [PATCH] rnm to setMesoOptions

---
 Resample/Options/SimulationOptions.cpp  |   6 -
 Resample/Options/SimulationOptions.h    |   2 +-
 auto/Wrap/libBornAgainResample.py       |   6 +-
 auto/Wrap/libBornAgainResample_wrap.cpp | 235 ++++++++----------------
 4 files changed, 76 insertions(+), 173 deletions(-)

diff --git a/Resample/Options/SimulationOptions.cpp b/Resample/Options/SimulationOptions.cpp
index b097495dc7e..9ea9bf7f60b 100644
--- a/Resample/Options/SimulationOptions.cpp
+++ b/Resample/Options/SimulationOptions.cpp
@@ -66,12 +66,6 @@ void SimulationOptions::setNumberOfBatches(int nbatches)
     m_thread_info.n_batches = nbatches;
 }
 
-void SimulationOptions::setUseMesoReciprocalSum(bool use_reciprocal_sum, double radius_factor)
-{
-    m_meso_options.use_reciprocal_sum = use_reciprocal_sum;
-    m_meso_options.radius_factor = radius_factor;
-}
-
 unsigned SimulationOptions::getNumberOfBatches() const
 {
     ASSERT(m_thread_info.n_batches > 0);
diff --git a/Resample/Options/SimulationOptions.h b/Resample/Options/SimulationOptions.h
index 7a2107bfe19..dedf15a39dc 100644
--- a/Resample/Options/SimulationOptions.h
+++ b/Resample/Options/SimulationOptions.h
@@ -42,7 +42,7 @@ public:
 
     void setUseAvgMaterials(bool use_avg_materials) { m_use_avg_materials = use_avg_materials; }
 
-    void setUseMesoReciprocalSum(bool use_reciprocal_sum, double radius_factor = 2.1);
+    void setMesoOptions(const MesoOptions& mesoOptions) { m_meso_options = mesoOptions; }
 
 #ifndef SWIG
 
diff --git a/auto/Wrap/libBornAgainResample.py b/auto/Wrap/libBornAgainResample.py
index eb52e5b7af5..b870ad96b13 100644
--- a/auto/Wrap/libBornAgainResample.py
+++ b/auto/Wrap/libBornAgainResample.py
@@ -1694,9 +1694,9 @@ class SimulationOptions(object):
         r"""setUseAvgMaterials(SimulationOptions self, bool use_avg_materials)"""
         return _libBornAgainResample.SimulationOptions_setUseAvgMaterials(self, use_avg_materials)
 
-    def setUseMesoReciprocalSum(self, use_reciprocal_sum, radius_factor=2.1):
-        r"""setUseMesoReciprocalSum(SimulationOptions self, bool use_reciprocal_sum, double radius_factor=2.1)"""
-        return _libBornAgainResample.SimulationOptions_setUseMesoReciprocalSum(self, use_reciprocal_sum, radius_factor)
+    def setMesoOptions(self, mesoOptions):
+        r"""setMesoOptions(SimulationOptions self, MesoOptions const & mesoOptions)"""
+        return _libBornAgainResample.SimulationOptions_setMesoOptions(self, mesoOptions)
     __swig_destroy__ = _libBornAgainResample.delete_SimulationOptions
 
 # Register SimulationOptions in _libBornAgainResample:
diff --git a/auto/Wrap/libBornAgainResample_wrap.cpp b/auto/Wrap/libBornAgainResample_wrap.cpp
index 39c2bd056b7..3794d4e44d6 100644
--- a/auto/Wrap/libBornAgainResample_wrap.cpp
+++ b/auto/Wrap/libBornAgainResample_wrap.cpp
@@ -3386,58 +3386,59 @@ namespace Swig {
 
 /* -------- TYPES TABLE (BEGIN) -------- */
 
-#define SWIGTYPE_p_MultiLayer swig_types[0]
-#define SWIGTYPE_p_Rotation3DT_double_t swig_types[1]
-#define SWIGTYPE_p_SimulationOptions swig_types[2]
-#define SWIGTYPE_p_Vec3T_double_t swig_types[3]
-#define SWIGTYPE_p_Vec3T_int_t swig_types[4]
-#define SWIGTYPE_p_Vec3T_std__complexT_double_t_t swig_types[5]
-#define SWIGTYPE_p_allocator_type swig_types[6]
-#define SWIGTYPE_p_char swig_types[7]
-#define SWIGTYPE_p_difference_type swig_types[8]
-#define SWIGTYPE_p_first_type swig_types[9]
-#define SWIGTYPE_p_int swig_types[10]
-#define SWIGTYPE_p_key_type swig_types[11]
-#define SWIGTYPE_p_long_long swig_types[12]
-#define SWIGTYPE_p_mapped_type swig_types[13]
-#define SWIGTYPE_p_p_PyObject swig_types[14]
-#define SWIGTYPE_p_second_type swig_types[15]
-#define SWIGTYPE_p_short swig_types[16]
-#define SWIGTYPE_p_signed_char swig_types[17]
-#define SWIGTYPE_p_size_type swig_types[18]
-#define SWIGTYPE_p_std__allocatorT_Vec3T_double_t_t swig_types[19]
-#define SWIGTYPE_p_std__allocatorT_double_t swig_types[20]
-#define SWIGTYPE_p_std__allocatorT_int_t swig_types[21]
-#define SWIGTYPE_p_std__allocatorT_std__complexT_double_t_t swig_types[22]
-#define SWIGTYPE_p_std__allocatorT_std__pairT_double_double_t_t swig_types[23]
-#define SWIGTYPE_p_std__allocatorT_std__pairT_std__string_const_double_t_t swig_types[24]
-#define SWIGTYPE_p_std__allocatorT_std__string_t swig_types[25]
-#define SWIGTYPE_p_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t swig_types[26]
-#define SWIGTYPE_p_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t swig_types[27]
-#define SWIGTYPE_p_std__allocatorT_unsigned_long_t swig_types[28]
-#define SWIGTYPE_p_std__complexT_double_t swig_types[29]
-#define SWIGTYPE_p_std__functionT_double_fdoubleF_t swig_types[30]
-#define SWIGTYPE_p_std__invalid_argument swig_types[31]
-#define SWIGTYPE_p_std__lessT_std__string_t swig_types[32]
-#define SWIGTYPE_p_std__mapT_std__string_double_std__lessT_std__string_t_std__allocatorT_std__pairT_std__string_const_double_t_t_t swig_types[33]
-#define SWIGTYPE_p_std__pairT_double_double_t swig_types[34]
-#define SWIGTYPE_p_std__vectorT_Vec3T_double_t_std__allocatorT_Vec3T_double_t_t_t swig_types[35]
-#define SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t swig_types[36]
-#define SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t swig_types[37]
-#define SWIGTYPE_p_std__vectorT_std__complexT_double_t_std__allocatorT_std__complexT_double_t_t_t swig_types[38]
-#define SWIGTYPE_p_std__vectorT_std__pairT_double_double_t_std__allocatorT_std__pairT_double_double_t_t_t swig_types[39]
-#define SWIGTYPE_p_std__vectorT_std__string_std__allocatorT_std__string_t_t swig_types[40]
-#define SWIGTYPE_p_std__vectorT_std__vectorT_double_std__allocatorT_double_t_t_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t_t swig_types[41]
-#define SWIGTYPE_p_std__vectorT_std__vectorT_int_std__allocatorT_int_t_t_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t_t swig_types[42]
-#define SWIGTYPE_p_std__vectorT_unsigned_long_std__allocatorT_unsigned_long_t_t swig_types[43]
-#define SWIGTYPE_p_swig__SwigPyIterator swig_types[44]
-#define SWIGTYPE_p_unsigned_char swig_types[45]
-#define SWIGTYPE_p_unsigned_int swig_types[46]
-#define SWIGTYPE_p_unsigned_long_long swig_types[47]
-#define SWIGTYPE_p_unsigned_short swig_types[48]
-#define SWIGTYPE_p_value_type swig_types[49]
-static swig_type_info *swig_types[51];
-static swig_module_info swig_module = {swig_types, 50, 0, 0, 0, 0};
+#define SWIGTYPE_p_MesoOptions swig_types[0]
+#define SWIGTYPE_p_MultiLayer swig_types[1]
+#define SWIGTYPE_p_Rotation3DT_double_t swig_types[2]
+#define SWIGTYPE_p_SimulationOptions swig_types[3]
+#define SWIGTYPE_p_Vec3T_double_t swig_types[4]
+#define SWIGTYPE_p_Vec3T_int_t swig_types[5]
+#define SWIGTYPE_p_Vec3T_std__complexT_double_t_t swig_types[6]
+#define SWIGTYPE_p_allocator_type swig_types[7]
+#define SWIGTYPE_p_char swig_types[8]
+#define SWIGTYPE_p_difference_type swig_types[9]
+#define SWIGTYPE_p_first_type swig_types[10]
+#define SWIGTYPE_p_int swig_types[11]
+#define SWIGTYPE_p_key_type swig_types[12]
+#define SWIGTYPE_p_long_long swig_types[13]
+#define SWIGTYPE_p_mapped_type swig_types[14]
+#define SWIGTYPE_p_p_PyObject swig_types[15]
+#define SWIGTYPE_p_second_type swig_types[16]
+#define SWIGTYPE_p_short swig_types[17]
+#define SWIGTYPE_p_signed_char swig_types[18]
+#define SWIGTYPE_p_size_type swig_types[19]
+#define SWIGTYPE_p_std__allocatorT_Vec3T_double_t_t swig_types[20]
+#define SWIGTYPE_p_std__allocatorT_double_t swig_types[21]
+#define SWIGTYPE_p_std__allocatorT_int_t swig_types[22]
+#define SWIGTYPE_p_std__allocatorT_std__complexT_double_t_t swig_types[23]
+#define SWIGTYPE_p_std__allocatorT_std__pairT_double_double_t_t swig_types[24]
+#define SWIGTYPE_p_std__allocatorT_std__pairT_std__string_const_double_t_t swig_types[25]
+#define SWIGTYPE_p_std__allocatorT_std__string_t swig_types[26]
+#define SWIGTYPE_p_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t swig_types[27]
+#define SWIGTYPE_p_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t swig_types[28]
+#define SWIGTYPE_p_std__allocatorT_unsigned_long_t swig_types[29]
+#define SWIGTYPE_p_std__complexT_double_t swig_types[30]
+#define SWIGTYPE_p_std__functionT_double_fdoubleF_t swig_types[31]
+#define SWIGTYPE_p_std__invalid_argument swig_types[32]
+#define SWIGTYPE_p_std__lessT_std__string_t swig_types[33]
+#define SWIGTYPE_p_std__mapT_std__string_double_std__lessT_std__string_t_std__allocatorT_std__pairT_std__string_const_double_t_t_t swig_types[34]
+#define SWIGTYPE_p_std__pairT_double_double_t swig_types[35]
+#define SWIGTYPE_p_std__vectorT_Vec3T_double_t_std__allocatorT_Vec3T_double_t_t_t swig_types[36]
+#define SWIGTYPE_p_std__vectorT_double_std__allocatorT_double_t_t swig_types[37]
+#define SWIGTYPE_p_std__vectorT_int_std__allocatorT_int_t_t swig_types[38]
+#define SWIGTYPE_p_std__vectorT_std__complexT_double_t_std__allocatorT_std__complexT_double_t_t_t swig_types[39]
+#define SWIGTYPE_p_std__vectorT_std__pairT_double_double_t_std__allocatorT_std__pairT_double_double_t_t_t swig_types[40]
+#define SWIGTYPE_p_std__vectorT_std__string_std__allocatorT_std__string_t_t swig_types[41]
+#define SWIGTYPE_p_std__vectorT_std__vectorT_double_std__allocatorT_double_t_t_std__allocatorT_std__vectorT_double_std__allocatorT_double_t_t_t_t swig_types[42]
+#define SWIGTYPE_p_std__vectorT_std__vectorT_int_std__allocatorT_int_t_t_std__allocatorT_std__vectorT_int_std__allocatorT_int_t_t_t_t swig_types[43]
+#define SWIGTYPE_p_std__vectorT_unsigned_long_std__allocatorT_unsigned_long_t_t swig_types[44]
+#define SWIGTYPE_p_swig__SwigPyIterator swig_types[45]
+#define SWIGTYPE_p_unsigned_char swig_types[46]
+#define SWIGTYPE_p_unsigned_int swig_types[47]
+#define SWIGTYPE_p_unsigned_long_long swig_types[48]
+#define SWIGTYPE_p_unsigned_short swig_types[49]
+#define SWIGTYPE_p_value_type swig_types[50]
+static swig_type_info *swig_types[52];
+static swig_module_info swig_module = {swig_types, 51, 0, 0, 0, 0};
 #define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
 #define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)
 
@@ -24554,75 +24555,33 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_SimulationOptions_setUseMesoReciprocalSum__SWIG_0(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
+SWIGINTERN PyObject *_wrap_SimulationOptions_setMesoOptions(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
   SimulationOptions *arg1 = (SimulationOptions *) 0 ;
-  bool arg2 ;
-  double arg3 ;
+  MesoOptions *arg2 = 0 ;
   void *argp1 = 0 ;
   int res1 = 0 ;
-  bool val2 ;
-  int ecode2 = 0 ;
-  double val3 ;
-  int ecode3 = 0 ;
+  void *argp2 = 0 ;
+  int res2 = 0 ;
+  PyObject *swig_obj[2] ;
   
-  if ((nobjs < 3) || (nobjs > 3)) SWIG_fail;
+  if (!SWIG_Python_UnpackTuple(args, "SimulationOptions_setMesoOptions", 2, 2, swig_obj)) SWIG_fail;
   res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_SimulationOptions, 0 |  0 );
   if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SimulationOptions_setUseMesoReciprocalSum" "', argument " "1"" of type '" "SimulationOptions *""'"); 
+    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SimulationOptions_setMesoOptions" "', argument " "1"" of type '" "SimulationOptions *""'"); 
   }
   arg1 = reinterpret_cast< SimulationOptions * >(argp1);
-  ecode2 = SWIG_AsVal_bool(swig_obj[1], &val2);
-  if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "SimulationOptions_setUseMesoReciprocalSum" "', argument " "2"" of type '" "bool""'");
-  } 
-  arg2 = static_cast< bool >(val2);
-  ecode3 = SWIG_AsVal_double(swig_obj[2], &val3);
-  if (!SWIG_IsOK(ecode3)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode3), "in method '" "SimulationOptions_setUseMesoReciprocalSum" "', argument " "3"" of type '" "double""'");
-  } 
-  arg3 = static_cast< double >(val3);
-  {
-    try {
-      (arg1)->setUseMesoReciprocalSum(arg2,arg3);
-    } catch (const std::exception& ex) {
-      // message shown in the Python interpreter
-      const std::string msg {
-        "BornAgain C++ Exception: " + std::string(ex.what())
-      };
-      SWIG_exception(SWIG_RuntimeError, msg.c_str());
-    }
+  res2 = SWIG_ConvertPtr(swig_obj[1], &argp2, SWIGTYPE_p_MesoOptions,  0  | 0);
+  if (!SWIG_IsOK(res2)) {
+    SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "SimulationOptions_setMesoOptions" "', argument " "2"" of type '" "MesoOptions const &""'"); 
   }
-  resultobj = SWIG_Py_Void();
-  return resultobj;
-fail:
-  return NULL;
-}
-
-
-SWIGINTERN PyObject *_wrap_SimulationOptions_setUseMesoReciprocalSum__SWIG_1(PyObject *self, Py_ssize_t nobjs, PyObject **swig_obj) {
-  PyObject *resultobj = 0;
-  SimulationOptions *arg1 = (SimulationOptions *) 0 ;
-  bool arg2 ;
-  void *argp1 = 0 ;
-  int res1 = 0 ;
-  bool val2 ;
-  int ecode2 = 0 ;
-  
-  if ((nobjs < 2) || (nobjs > 2)) SWIG_fail;
-  res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_SimulationOptions, 0 |  0 );
-  if (!SWIG_IsOK(res1)) {
-    SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "SimulationOptions_setUseMesoReciprocalSum" "', argument " "1"" of type '" "SimulationOptions *""'"); 
+  if (!argp2) {
+    SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "SimulationOptions_setMesoOptions" "', argument " "2"" of type '" "MesoOptions const &""'"); 
   }
-  arg1 = reinterpret_cast< SimulationOptions * >(argp1);
-  ecode2 = SWIG_AsVal_bool(swig_obj[1], &val2);
-  if (!SWIG_IsOK(ecode2)) {
-    SWIG_exception_fail(SWIG_ArgError(ecode2), "in method '" "SimulationOptions_setUseMesoReciprocalSum" "', argument " "2"" of type '" "bool""'");
-  } 
-  arg2 = static_cast< bool >(val2);
+  arg2 = reinterpret_cast< MesoOptions * >(argp2);
   {
     try {
-      (arg1)->setUseMesoReciprocalSum(arg2);
+      (arg1)->setMesoOptions((MesoOptions const &)*arg2);
     } catch (const std::exception& ex) {
       // message shown in the Python interpreter
       const std::string msg {
@@ -24638,60 +24597,6 @@ fail:
 }
 
 
-SWIGINTERN PyObject *_wrap_SimulationOptions_setUseMesoReciprocalSum(PyObject *self, PyObject *args) {
-  Py_ssize_t argc;
-  PyObject *argv[4] = {
-    0
-  };
-  
-  if (!(argc = SWIG_Python_UnpackTuple(args, "SimulationOptions_setUseMesoReciprocalSum", 0, 3, argv))) SWIG_fail;
-  --argc;
-  if (argc == 2) {
-    int _v = 0;
-    void *vptr = 0;
-    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_SimulationOptions, 0);
-    _v = SWIG_CheckState(res);
-    if (_v) {
-      {
-        int res = SWIG_AsVal_bool(argv[1], NULL);
-        _v = SWIG_CheckState(res);
-      }
-      if (_v) {
-        return _wrap_SimulationOptions_setUseMesoReciprocalSum__SWIG_1(self, argc, argv);
-      }
-    }
-  }
-  if (argc == 3) {
-    int _v = 0;
-    void *vptr = 0;
-    int res = SWIG_ConvertPtr(argv[0], &vptr, SWIGTYPE_p_SimulationOptions, 0);
-    _v = SWIG_CheckState(res);
-    if (_v) {
-      {
-        int res = SWIG_AsVal_bool(argv[1], NULL);
-        _v = SWIG_CheckState(res);
-      }
-      if (_v) {
-        {
-          int res = SWIG_AsVal_double(argv[2], NULL);
-          _v = SWIG_CheckState(res);
-        }
-        if (_v) {
-          return _wrap_SimulationOptions_setUseMesoReciprocalSum__SWIG_0(self, argc, argv);
-        }
-      }
-    }
-  }
-  
-fail:
-  SWIG_Python_RaiseOrModifyTypeError("Wrong number or type of arguments for overloaded function 'SimulationOptions_setUseMesoReciprocalSum'.\n"
-    "  Possible C/C++ prototypes are:\n"
-    "    SimulationOptions::setUseMesoReciprocalSum(bool,double)\n"
-    "    SimulationOptions::setUseMesoReciprocalSum(bool)\n");
-  return 0;
-}
-
-
 SWIGINTERN PyObject *_wrap_delete_SimulationOptions(PyObject *self, PyObject *args) {
   PyObject *resultobj = 0;
   SimulationOptions *arg1 = (SimulationOptions *) 0 ;
@@ -29651,7 +29556,7 @@ static PyMethodDef SwigMethods[] = {
 	 { "SimulationOptions_setNumberOfBatches", _wrap_SimulationOptions_setNumberOfBatches, METH_VARARGS, "SimulationOptions_setNumberOfBatches(SimulationOptions self, int nbatches)"},
 	 { "SimulationOptions_setIncludeSpecular", _wrap_SimulationOptions_setIncludeSpecular, METH_VARARGS, "SimulationOptions_setIncludeSpecular(SimulationOptions self, bool include_specular)"},
 	 { "SimulationOptions_setUseAvgMaterials", _wrap_SimulationOptions_setUseAvgMaterials, METH_VARARGS, "SimulationOptions_setUseAvgMaterials(SimulationOptions self, bool use_avg_materials)"},
-	 { "SimulationOptions_setUseMesoReciprocalSum", _wrap_SimulationOptions_setUseMesoReciprocalSum, METH_VARARGS, "SimulationOptions_setUseMesoReciprocalSum(SimulationOptions self, bool use_reciprocal_sum, double radius_factor=2.1)"},
+	 { "SimulationOptions_setMesoOptions", _wrap_SimulationOptions_setMesoOptions, METH_VARARGS, "SimulationOptions_setMesoOptions(SimulationOptions self, MesoOptions const & mesoOptions)"},
 	 { "delete_SimulationOptions", _wrap_delete_SimulationOptions, METH_O, "delete_SimulationOptions(SimulationOptions self)"},
 	 { "SimulationOptions_swigregister", SimulationOptions_swigregister, METH_O, NULL},
 	 { "SimulationOptions_swiginit", SimulationOptions_swiginit, METH_VARARGS, NULL},
@@ -29783,6 +29688,7 @@ static PyMethodDef SwigMethods[] = {
 
 /* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
 
+static swig_type_info _swigt__p_MesoOptions = {"_p_MesoOptions", "MesoOptions *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_MultiLayer = {"_p_MultiLayer", "MultiLayer *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_Rotation3DT_double_t = {"_p_Rotation3DT_double_t", "RotMatrix *|Rotation3D< double > *", 0, 0, (void*)0, 0};
 static swig_type_info _swigt__p_SimulationOptions = {"_p_SimulationOptions", "SimulationOptions *", 0, 0, (void*)0, 0};
@@ -29835,6 +29741,7 @@ static swig_type_info _swigt__p_unsigned_short = {"_p_unsigned_short", "uint16_t
 static swig_type_info _swigt__p_value_type = {"_p_value_type", "value_type *", 0, 0, (void*)0, 0};
 
 static swig_type_info *swig_type_initial[] = {
+  &_swigt__p_MesoOptions,
   &_swigt__p_MultiLayer,
   &_swigt__p_Rotation3DT_double_t,
   &_swigt__p_SimulationOptions,
@@ -29887,6 +29794,7 @@ static swig_type_info *swig_type_initial[] = {
   &_swigt__p_value_type,
 };
 
+static swig_cast_info _swigc__p_MesoOptions[] = {  {&_swigt__p_MesoOptions, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_MultiLayer[] = {  {&_swigt__p_MultiLayer, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_Rotation3DT_double_t[] = {  {&_swigt__p_Rotation3DT_double_t, 0, 0, 0},{0, 0, 0, 0}};
 static swig_cast_info _swigc__p_SimulationOptions[] = {  {&_swigt__p_SimulationOptions, 0, 0, 0},{0, 0, 0, 0}};
@@ -29939,6 +29847,7 @@ static swig_cast_info _swigc__p_unsigned_short[] = {  {&_swigt__p_unsigned_short
 static swig_cast_info _swigc__p_value_type[] = {  {&_swigt__p_value_type, 0, 0, 0},{0, 0, 0, 0}};
 
 static swig_cast_info *swig_cast_initial[] = {
+  _swigc__p_MesoOptions,
   _swigc__p_MultiLayer,
   _swigc__p_Rotation3DT_double_t,
   _swigc__p_SimulationOptions,
-- 
GitLab