Index: sansmodels/src/sans/models/c_extensions/binaryHS.c
===================================================================
--- sansmodels/src/sans/models/c_extensions/binaryHS.c	(revision 3d25331f0e8a822fc6c59f15883b1cd21463b567)
+++ sansmodels/src/sans/models/c_extensions/binaryHS.c	(revision 3d25331f0e8a822fc6c59f15883b1cd21463b567)
@@ -0,0 +1,44 @@
+/**
+ * Scattering model for a sphere
+ * @author: Gervaise B alina / UTK
+ */
+
+#include "binaryHS.h"
+#include "libSphere.h"
+#include <math.h>
+
+
+/**
+ * Function to evaluate 1D scattering function
+ * @param pars: parameters of the binary hard sphere
+ * @param q: q-value
+ * @return: function value
+ */
+double binaryHS_analytical_1D(BinaryHSParameters *pars, double q) {
+	double dp[8];
+	
+	dp[0] = pars->l_radius;
+	dp[1] = pars->s_radius;
+	dp[2] = pars->vol_frac_ls;
+	dp[3] = pars->vol_frac_ss;
+	dp[4] = pars->ls_sld;
+	dp[5] = pars->ss_sld;
+	dp[6] = pars->solvent_sld;
+	dp[7] = pars->background;
+	
+	return BinaryHS(dp, q);
+}
+    
+/**
+ * Function to evaluate 2D scattering function
+ * @param pars: parameters of the binary hard sphere
+ * @param q: q-value
+ * @return: function value
+ */
+double binaryHS_analytical_2D(BinaryHSParameters *pars, double q, double phi) {
+	return binaryHS_analytical_1D(pars,q);
+}
+
+double binaryHS_analytical_2DXY(BinaryHSParameters *pars, double qx, double qy){
+	return binaryHS_analytical_1D(pars,sqrt(qx*qx+qy*qy));	
+}
Index: sansmodels/src/sans/models/c_extensions/binaryHs.h
===================================================================
--- sansmodels/src/sans/models/c_extensions/binaryHs.h	(revision 3d25331f0e8a822fc6c59f15883b1cd21463b567)
+++ sansmodels/src/sans/models/c_extensions/binaryHs.h	(revision 3d25331f0e8a822fc6c59f15883b1cd21463b567)
@@ -0,0 +1,69 @@
+#if !defined(binaryHS_h)
+#define binaryHS_h
+
+/**
+ * Structure definition for binary hard sphere parameters
+
+	[PYTHONCLASS] = BinaryHSModel
+	[DISP_PARAMS] = l_radius,s_radius
+	[DESCRIPTION] =<text>
+						Model parameters:
+						
+						l_radius : large radius of the binary hard sphere
+						s_radius : small radius of the binary hard sphere
+						vol_frac_ls : volume fraction of large spheres 
+						vol_frac_ss : volume fraction of small spheres
+						ls_sld: large sphere  scattering length density
+						ss_sld: small sphere scattering length density
+						solvent_sld: solvent scattering length density
+						background: incoherent background
+               </text>
+	[FIXED]= l_radius.width;s_radius.width
+	[ORIENTATION_PARAMS]= <text> </text>
+ */
+typedef struct {
+    
+	///	large radius of the binary hard sphere [A]
+    //  [DEFAULT]=l_radius= 160.0 [A]
+    double l_radius;
+
+    ///	small radius of the binary hard sphere [A]
+    //  [DEFAULT]=s_radius= 25.0 [A]
+    double s_radius;
+
+	///	volume fraction of large spheres 
+    //  [DEFAULT]=vol_frac_ls= 0.2 
+    double vol_frac_ls;
+
+	///	volume fraction of small spheres 
+    //  [DEFAULT]=vol_frac_ss= 0.2 
+    double vol_frac_ss;
+
+	///	large sphere scattering length density [1/Å²]
+    //  [DEFAULT]=ls_sld= 3.5e-6 [1/A²]
+    double ls_sld;
+
+	///	lsmall sphere scattering length density [1/Å²]
+    //  [DEFAULT]=ss_sld= 5e-7 [1/A²]
+    double ss_sld;
+
+    ///	solvent scattering length density [1/Å²]
+    //  [DEFAULT]=solvent_sld= 6.36e-6 [1/A²]
+    double solvent_sld;
+
+	/// Incoherent Background [1/cm]
+	//  [DEFAULT]=background=0.001 [1/cm]
+	double background;
+
+} BinaryHSParameters;
+
+
+
+/// 1D scattering function
+double binaryHS_analytical_1D(BinaryHSParameters *pars, double q);
+
+/// 2D scattering function
+double binaryHS_analytical_2D(BinaryHSParameters *pars, double q, double phi);
+double binaryHS_analytical_2DXY(BinaryHSParameters *pars, double qx, double qy);
+
+#endif
Index: sansmodels/src/sans/models/c_extensions/c_models.c
===================================================================
--- sansmodels/src/sans/models/c_extensions/c_models.c	(revision 793c988b04291cd397c5f548ab1ff0f30df072cb)
+++ sansmodels/src/sans/models/c_extensions/c_models.c	(revision 3d25331f0e8a822fc6c59f15883b1cd21463b567)
@@ -52,4 +52,7 @@
 	addCLorentzian(m);
 	addCHollowCylinderModel(m);
+	addCMultiShellModel(m);
+	addCVesicleModel(m);
+	addCBinaryHSModel(m);
 
 }
Index: sansmodels/src/sans/models/c_extensions/multishell.c
===================================================================
--- sansmodels/src/sans/models/c_extensions/multishell.c	(revision 3d25331f0e8a822fc6c59f15883b1cd21463b567)
+++ sansmodels/src/sans/models/c_extensions/multishell.c	(revision 3d25331f0e8a822fc6c59f15883b1cd21463b567)
@@ -0,0 +1,44 @@
+/**
+ * Scattering model for a sphere
+ * @author: Gervaise B alina / UTK
+ */
+
+#include "multishell.h"
+#include "libSphere.h"
+#include <math.h>
+
+
+/**
+ * Function to evaluate 1D scattering function
+ * @param pars: parameters of the multishell
+ * @param q: q-value
+ * @return: function value
+ */
+double multishell_analytical_1D(MultiShellParameters *pars, double q) {
+	double dp[8];
+	
+	dp[0] = pars->scale;
+	dp[1] = pars->core_radius;
+	dp[2] = pars->s_thickness;
+	dp[3] = pars->w_thickness;
+	dp[4] = pars->core_sld;
+	dp[5] = pars->shell_sld;
+	dp[6] = pars->n_pairs;
+	dp[7] = pars->background;
+	
+	return MultiShell(dp, q);
+}
+    
+/**
+ * Function to evaluate 2D scattering function
+ * @param pars: parameters of the multishell
+ * @param q: q-value
+ * @return: function value
+ */
+double multishell_analytical_2D(MultiShellParameters *pars, double q, double phi) {
+	return multishell_analytical_1D(pars,q);
+}
+
+double multishell_analytical_2DXY(MultiShellParameters *pars, double qx, double qy){
+	return multishell_analytical_1D(pars,sqrt(qx*qx+qy*qy));	
+}
Index: sansmodels/src/sans/models/c_extensions/multishell.h
===================================================================
--- sansmodels/src/sans/models/c_extensions/multishell.h	(revision 3d25331f0e8a822fc6c59f15883b1cd21463b567)
+++ sansmodels/src/sans/models/c_extensions/multishell.h	(revision 3d25331f0e8a822fc6c59f15883b1cd21463b567)
@@ -0,0 +1,67 @@
+#if !defined(multishell_h)
+#define multishell_h
+
+/**
+ * Structure definition for sphere parameters
+
+	[PYTHONCLASS] = MultiShellModel
+	[DISP_PARAMS] = core_radius
+	[DESCRIPTION] =<text>
+						Model parameters:
+						scale : scale factor
+						core_radius : Core radius of the multishell 
+						s_thickness: shell thickness
+						w_thickness: water thickness
+						core_sld: core scattering length density
+						shell_sld: shell scattering length density
+						n_pairs:number of pairs of water/shell
+						background: incoherent background
+               </text>
+	[FIXED]=  core_radius.width
+	[ORIENTATION_PARAMS]= <text> </text>
+ */
+typedef struct {
+    /// Scale factor
+    //  [DEFAULT]=scale= 1.0
+    double scale;
+
+    ///	Core radius of the multishell [A]
+    //  [DEFAULT]=core_radius=60.0 [A]
+    double core_radius;
+
+	///	shell thickness [Å]
+    //  [DEFAULT]=s_thickness= 10.0 [A]
+    double s_thickness;
+
+    ///	water thickness [Å]
+    //  [DEFAULT]=w_thickness= 10.0 [A]
+    double w_thickness;
+
+	///	core scattering length density [1/Å²]
+    //  [DEFAULT]=core_sld= 6.4e-6 [1/A²]
+    double core_sld;
+
+    ///	shell scattering length density [1/Å²]
+    //  [DEFAULT]=shell_sld= 4.0e-7 [1/A²]
+    double shell_sld;
+
+	///	number of pairs of water and shell
+    //  [DEFAULT]=n_pairs= 2
+    double n_pairs;
+
+	/// Incoherent Background [1/cm]
+	//  [DEFAULT]=background=0 [1/cm]
+	double background;
+
+} MultiShellParameters;
+
+
+
+/// 1D scattering function
+double multishell_analytical_1D(MultiShellParameters *pars, double q);
+
+/// 2D scattering function
+double multishell_analytical_2D(MultiShellParameters *pars, double q, double phi);
+double multishell_analytical_2DXY(MultiShellParameters *pars, double qx, double qy);
+
+#endif
Index: sansmodels/src/sans/models/c_extensions/vesicle.c
===================================================================
--- sansmodels/src/sans/models/c_extensions/vesicle.c	(revision 3d25331f0e8a822fc6c59f15883b1cd21463b567)
+++ sansmodels/src/sans/models/c_extensions/vesicle.c	(revision 3d25331f0e8a822fc6c59f15883b1cd21463b567)
@@ -0,0 +1,43 @@
+/**
+ * Scattering model for a sphere
+ * @author: Gervaise B alina / UTK
+ */
+
+#include "vesicle.h"
+#include "libSphere.h"
+#include <math.h>
+
+
+/**
+ * Function to evaluate 1D scattering function
+ * @param pars: parameters of the vesicle
+ * @param q: q-value
+ * @return: function value
+ */
+double vesicle_analytical_1D(VesicleParameters *pars, double q) {
+	double dp[6];
+	
+	dp[0] = pars->scale;
+	dp[1] = pars->core_radius;
+	dp[2] = pars->thickness;
+	dp[3] = pars->core_sld;
+	dp[4] = pars->shell_sld;
+	dp[5] = pars->background;
+
+	
+	return VesicleForm(dp, q);
+}
+    
+/**
+ * Function to evaluate 2D scattering function
+ * @param pars: parameters of the vesicle
+ * @param q: q-value
+ * @return: function value
+ */
+double vesicle_analytical_2D(VesicleParameters *pars, double q, double phi) {
+	return vesicle_analytical_1D(pars,q);
+}
+
+double vesicle_analytical_2DXY(VesicleParameters *pars, double qx, double qy){
+	return vesicle_analytical_1D(pars,sqrt(qx*qx+qy*qy));	
+}
Index: sansmodels/src/sans/models/c_extensions/vesicle.h
===================================================================
--- sansmodels/src/sans/models/c_extensions/vesicle.h	(revision 3d25331f0e8a822fc6c59f15883b1cd21463b567)
+++ sansmodels/src/sans/models/c_extensions/vesicle.h	(revision 3d25331f0e8a822fc6c59f15883b1cd21463b567)
@@ -0,0 +1,57 @@
+#if !defined(vesicle_h)
+#define vesicle_h
+
+/**
+ * Structure definition for vesicle parameters
+
+	[PYTHONCLASS] = VesicleModel
+	[DISP_PARAMS] = core_radius
+	[DESCRIPTION] =<text>
+						Model parameters:
+						scale : scale factor
+						core_radius : Core radius of the vesicle
+						thickness: shell thickness
+						core_sld: core scattering length density
+						shell_sld: shell scattering length density
+						background: incoherent background
+               </text>
+	[FIXED]=  core_radius.width
+	[ORIENTATION_PARAMS]= <text> </text>
+ */
+typedef struct {
+    /// Scale factor
+    //  [DEFAULT]=scale= 1.0
+    double scale;
+
+    ///	Core radius of the vesicle [A]
+    //  [DEFAULT]=core_radius= 100.0 [A]
+    double core_radius;
+
+	///	shell thickness [Å]
+    //  [DEFAULT]=thickness= 30.0 [A]
+    double thickness;
+
+	///	core scattering length density [1/Å²]
+    //  [DEFAULT]=core_sld= 6.36e-6 [1/A²]
+    double core_sld;
+
+    ///	shell scattering length density [1/Å²]
+    //  [DEFAULT]=shell_sld= 5.0e-7 [1/A²]
+    double shell_sld;
+
+	/// Incoherent Background [1/cm]
+	//  [DEFAULT]=background=0 [1/cm]
+	double background;
+
+} VesicleParameters;
+
+
+
+/// 1D scattering function
+double vesicle_analytical_1D(VesicleParameters *pars, double q);
+
+/// 2D scattering function
+double vesicle_analytical_2D(VesicleParameters *pars, double q, double phi);
+double vesicle_analytical_2DXY(VesicleParameters *pars, double qx, double qy);
+
+#endif
