Index: sansmodels/src/sans/models/c_extensions/Hardsphere.c
===================================================================
--- sansmodels/src/sans/models/c_extensions/Hardsphere.c	(revision 25579e8c451417db52ac6ed70a3c116d52d8717d)
+++ sansmodels/src/sans/models/c_extensions/Hardsphere.c	(revision 25579e8c451417db52ac6ed70a3c116d52d8717d)
@@ -0,0 +1,37 @@
+/**
+ * Structure factor for a hardsphere
+ * @author: Jae Hie Cho / UTK
+ */
+
+#include "Hardsphere.h"
+#include "libStructureFactor.h"
+#include <math.h>
+#include <stdio.h>
+
+/**
+ * Function to evaluate 1D scattering function
+ * @param pars: parameters of the HardsphereStructure 
+ * @param q: q-value
+ * @return: function value
+ */
+double Hardsphere_analytical_1D(HardsphereParameters *pars, double q) {
+	double dp[2];
+	
+	dp[0] = pars->radius;
+	dp[1] = pars->volfraction;	
+	return HardSphereStruct(dp, q);
+}
+    
+/**
+ * Function to evaluate 2D scattering function
+ * @param pars: parameters of the HardsphereStructure
+ * @param q: q-value
+ * @return: function value
+ */
+double Hardsphere_analytical_2D(HardsphereParameters *pars, double q, double phi) {
+	return Hardsphere_analytical_1D(pars,q);
+}
+
+double Hardsphere_analytical_2DXY(HardsphereParameters *pars, double qx, double qy){
+	return Hardsphere_analytical_1D(pars,sqrt(qx*qx+qy*qy));	
+}
Index: sansmodels/src/sans/models/c_extensions/Hardsphere.h
===================================================================
--- sansmodels/src/sans/models/c_extensions/Hardsphere.h	(revision 25579e8c451417db52ac6ed70a3c116d52d8717d)
+++ sansmodels/src/sans/models/c_extensions/Hardsphere.h	(revision 25579e8c451417db52ac6ed70a3c116d52d8717d)
@@ -0,0 +1,42 @@
+#if !defined(Hardsphere_h)
+#define Hardsphere_h
+
+/**
+ * Structure definition for HardsphereStructure (factor) parameters
+ */
+ //[PYTHONCLASS] = HardsphereStructure
+ //[DISP_PARAMS] = radius
+ //[DESCRIPTION] =<text>Structure factor for interacting particles:
+ //
+ //  The interparticle potential is
+ //
+ //                     U(r)= inf   , r < 2R
+ //                         = 0     , r >= 2R
+ //
+ //						R: radius of the Hardsphere particle
+ //						V:The volume fraction 
+ //
+ //    Ref: Percus., J. K.,etc., J. Phy. Rev. 
+ //    1958, 110, 1.
+ //	 </text>
+ //[FIXED]= radius.width  
+typedef struct {
+    /// Radius of hardsphere [A]
+    //  [DEFAULT]=radius=50.0 A
+    double radius;
+
+    ///	Volume fraction
+    //  [DEFAULT]=volfraction= 0.2
+    double volfraction;
+} HardsphereParameters;
+
+
+
+/// 1D scattering function
+double Hardsphere_analytical_1D(HardsphereParameters *pars, double q);
+
+/// 2D scattering function
+double Hardsphere_analytical_2D(HardsphereParameters *pars, double q, double phi);
+double Hardsphere_analytical_2DXY(HardsphereParameters *pars, double qx, double qy);
+
+#endif
Index: sansmodels/src/sans/models/c_extensions/HayterMSA.c
===================================================================
--- sansmodels/src/sans/models/c_extensions/HayterMSA.c	(revision 25579e8c451417db52ac6ed70a3c116d52d8717d)
+++ sansmodels/src/sans/models/c_extensions/HayterMSA.c	(revision 25579e8c451417db52ac6ed70a3c116d52d8717d)
@@ -0,0 +1,42 @@
+/**
+ * SquareWell Structure factor 
+ * @author: Jae Hie Cho / UTK
+ */
+
+#include "HayterMSA.h"
+#include "libStructureFactor.h"
+#include <math.h>
+
+
+/**
+ * Function to evaluate 1D scattering function
+ * @param pars: parameters of the HayterPenfoldMSA
+ * @param q: q-value
+ * @return: function value
+ */
+double HayterMSA_analytical_1D(HayterMSAParameters *pars, double q) {
+	double dp[6];
+
+	dp[0] = pars->radius;
+	dp[1] = pars->charge;
+	dp[1] = pars->volfraction;
+	dp[3] = pars->temperature;
+	dp[4] = pars->saltconc;
+	dp[5] = pars->dielectconst;
+	
+	return HayterPenfoldMSA(dp, q);
+}
+    
+/**
+ * Function to evaluate 2D scattering function
+ * @param pars: parameters of the HayterPenfoldMSA
+ * @param q: q-value
+ * @return: function value
+ */
+double HayterMSA_analytical_2D(HayterMSAParameters *pars, double q, double phi) {
+	return HayterMSA_analytical_1D(pars,q);
+}
+
+double HayterMSA_analytical_2DXY(HayterMSAParameters *pars, double qx, double qy){
+	return HayterMSA_analytical_1D(pars,sqrt(qx*qx+qy*qy));	
+}
Index: sansmodels/src/sans/models/c_extensions/HayterMSA.h
===================================================================
--- sansmodels/src/sans/models/c_extensions/HayterMSA.h	(revision 25579e8c451417db52ac6ed70a3c116d52d8717d)
+++ sansmodels/src/sans/models/c_extensions/HayterMSA.h	(revision 25579e8c451417db52ac6ed70a3c116d52d8717d)
@@ -0,0 +1,60 @@
+#if !defined(HayterMSA_h)
+#define HayterMSA_h
+
+/**
+ * Structure definition for screened Coulomb interaction
+ */
+ //[PYTHONCLASS] = HayterMSAStructure
+ //[DISP_PARAMS] = radius
+ //[DESCRIPTION] =<text>To calculate the structure factor (the Fourier transform   
+ //                     of the pair correlation function g(r)) for 
+ //                     a system of charged, spheroidal objects in    
+ //                     a dielectric medium. When combined with an 
+ //                     appropriate form factor, this allows 
+ //                     for inclusion of the interparticle 
+ //                     interference effects due to screened coulomb 
+ //                     repulsion between charged particles.
+ //                     (note: charge > 0 required.)
+ //
+ //                     Ref: JP Hansen and JB Hayter, Molecular 
+ //                           Physics 46, 651-656 (1982).
+ //
+ //				</text>
+ //[FIXED]= radius.width  
+ 
+typedef struct {
+    ///	Radius of particle [A]
+    //  [DEFAULT]=radius=20.75 A
+    double radius;
+
+    /// charge
+    //  [DEFAULT]=charge= 19
+    double charge;
+
+    /// Volume fraction
+    //  [DEFAULT]=volfraction= 0.0192
+    double volfraction;
+
+	///	Temperature [K]
+    //  [DEFAULT]=temperature= 318.16 K 
+    double temperature;
+
+	///	Monovalent salt concentration [M] 
+    //  [DEFAULT]=saltconc= 0 
+    double saltconc;
+
+    ///	Dielectric constant of solvent 
+    //  [DEFAULT]=dielectconst= 71.08 
+    double dielectconst;
+} HayterMSAParameters;
+
+
+
+/// 1D scattering function
+double HayterMSA_analytical_1D(HayterMSAParameters *pars, double q);
+
+/// 2D scattering function
+double HayterMSA_analytical_2D(HayterMSAParameters *pars, double q, double phi);
+double HayterMSA_analytical_2DXY(HayterMSAParameters *pars, double qx, double qy);
+
+#endif
Index: sansmodels/src/sans/models/c_extensions/SquareWell.c
===================================================================
--- sansmodels/src/sans/models/c_extensions/SquareWell.c	(revision 25579e8c451417db52ac6ed70a3c116d52d8717d)
+++ sansmodels/src/sans/models/c_extensions/SquareWell.c	(revision 25579e8c451417db52ac6ed70a3c116d52d8717d)
@@ -0,0 +1,42 @@
+/**
+ * SquareWell Structure factor 
+ * @author: Jae Hie Cho / UTK
+ */
+
+#include "SquareWell.h"
+#include "libStructureFactor.h"
+#include <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+
+/**
+ * Function to evaluate 1D scattering function
+ * @param pars: parameters of the SquareWellStruct
+ * @param q: q-value
+ * @return: function value
+ */
+double SquareWell_analytical_1D(SquareWellParameters *pars, double q) {
+	double dp[4];
+
+	dp[0] = pars->radius;
+	dp[1] = pars->volfraction;
+	dp[2] = pars->welldepth;
+	dp[3] = pars->wellwidth;
+	
+	return SquareWellStruct(dp, q);
+}
+    
+/**
+ * Function to evaluate 2D scattering function
+ * @param pars: parameters of the SquareWellStruct
+ * @param q: q-value
+ * @return: function value
+ */
+double SquareWell_analytical_2D(SquareWellParameters *pars, double q, double phi) {
+	return SquareWell_analytical_1D(pars,q);
+}
+
+double SquareWell_analytical_2DXY(SquareWellParameters *pars, double qx, double qy){
+	return SquareWell_analytical_1D(pars,sqrt(qx*qx+qy*qy));	
+}
Index: sansmodels/src/sans/models/c_extensions/SquareWell.h
===================================================================
--- sansmodels/src/sans/models/c_extensions/SquareWell.h	(revision 25579e8c451417db52ac6ed70a3c116d52d8717d)
+++ sansmodels/src/sans/models/c_extensions/SquareWell.h	(revision 25579e8c451417db52ac6ed70a3c116d52d8717d)
@@ -0,0 +1,54 @@
+#if !defined(SquareWell_h)
+#define SquareWell_h
+
+/**Structure definition for SquareWell parameters
+*/
+//   [PYTHONCLASS] = SquareWellStructure
+//   [DISP_PARAMS] = radius
+//   [DESCRIPTION] = <text> Structure Factor for interacting particles:
+//
+//  The interaction potential is
+//
+//		U(r)= inf   , r < 2R
+//			= -d    , 2R <= r <=2Rw
+//			= 0     , r >= 2Rw
+//
+//		R: radius (A)of the particle, v: volume fraction
+//		d: well depth
+//		w: well width; multiples of the particle diameter
+//
+//		Ref: Sharma, R. V.; Sharma, K. C., Physica, 
+//            1977, 89A, 213.
+//   			</text>
+//   [FIXED]= radius.width 
+
+
+typedef struct {
+    ///	Radius of particle [A]
+    //  [DEFAULT]=radius=50.0 A
+    double radius;
+
+    /// Volume fraction
+    //  [DEFAULT]=volfraction= 0.040
+    double volfraction;
+
+    ///	Well depth [kT]
+    //  [DEFAULT]=welldepth= 1.50 kT
+    double welldepth;
+
+    ///	Well width 
+    //  [DEFAULT]=wellwidth= 1.20 
+    double wellwidth;
+
+} SquareWellParameters;
+
+
+
+/// 1D scattering function
+double SquareWell_analytical_1D(SquareWellParameters *pars, double q);
+
+/// 2D scattering function
+double SquareWell_analytical_2D(SquareWellParameters *pars, double q, double phi);
+double SquareWell_analytical_2DXY(SquareWellParameters *pars, double qx, double qy);
+
+#endif
Index: sansmodels/src/sans/models/c_extensions/StickyHS.c
===================================================================
--- sansmodels/src/sans/models/c_extensions/StickyHS.c	(revision 25579e8c451417db52ac6ed70a3c116d52d8717d)
+++ sansmodels/src/sans/models/c_extensions/StickyHS.c	(revision 25579e8c451417db52ac6ed70a3c116d52d8717d)
@@ -0,0 +1,39 @@
+/**
+ * Structure factor for a hardsphere
+ * @author: Jae Hie Cho / UTK
+ */
+
+#include "StickyHS.h"
+#include "libStructureFactor.h"
+#include <math.h>
+
+
+/**
+ * Function to evaluate 1D scattering function
+ * @param pars: parameters of the StickyHS_struct
+ * @param q: q-value
+ * @return: function value
+ */
+double StickyHS_analytical_1D(StickyHSParameters *pars, double q) {
+	double dp[4];
+	
+	dp[0] = pars->radius;
+	dp[1] = pars->volfraction;	
+	dp[2] = pars->perturb;
+	dp[3] = pars->stickiness;	
+	return StickyHS_Struct(dp, q);
+}
+    
+/**
+ * Function to evaluate 2D scattering function
+ * @param pars: parameters of the StickyHS_struct
+ * @param q: q-value
+ * @return: function value
+ */
+double StickyHS_analytical_2D(StickyHSParameters *pars, double q, double phi) {
+	return StickyHS_analytical_1D(pars,q);
+}
+
+double StickyHS_analytical_2DXY(StickyHSParameters *pars, double qx, double qy){
+	return StickyHS_analytical_1D(pars,sqrt(qx*qx+qy*qy));	
+}
Index: sansmodels/src/sans/models/c_extensions/StickyHS.h
===================================================================
--- sansmodels/src/sans/models/c_extensions/StickyHS.h	(revision 25579e8c451417db52ac6ed70a3c116d52d8717d)
+++ sansmodels/src/sans/models/c_extensions/StickyHS.h	(revision 25579e8c451417db52ac6ed70a3c116d52d8717d)
@@ -0,0 +1,54 @@
+#if !defined(StickyHS_h)
+#define StickyHS_h
+
+/**
+ * Structure definition for StickyHS_struct (struncture factor) parameters
+ */
+ //[PYTHONCLASS] = StickyHSStructure
+ //[DISP_PARAMS] = radius
+ //[DESCRIPTION] =<text> Structure Factor for interacting particles:
+ //
+ //  The interaction potential is
+ //
+ //                     U(r)= inf , r < 2R
+ //                         = -Uo  , 2R < r < 2R + w
+ //                         = 0   , r >= 2R +w
+ //
+ //						R: radius of the hardsphere 
+ //                     stickiness = [exp(Uo/kT)]/(12*perturb)
+ //                     perturb = w/(w+ 2R) , 0.01 =< w <= 0.1
+ //                     w: The width of the square well ,w > 0
+ //						v: The volume fraction , v > 0
+ //
+ //                     Ref: Menon, S. V. G.,et.al., J. Chem. Phys., 
+ //                          1991, 95(12), 9186-9190.
+ //				</text>
+ //[FIXED]= radius.width  
+typedef struct {
+    /// Radius of hardsphere [A]
+    //  [DEFAULT]=radius=50.0 A
+    double radius;
+
+    ///	Volume fraction
+    //  [DEFAULT]=volfraction= 0.1
+    double volfraction;
+
+	/// Perturbation Parameter ( between 0.01 - 0.1)
+    //  [DEFAULT]=perturb=0.05
+    double perturb;
+
+    ///	Stickiness
+    //  [DEFAULT]=stickiness= 0.2
+    double stickiness;
+} StickyHSParameters;
+
+
+
+/// 1D scattering function
+double StickyHS_analytical_1D(StickyHSParameters *pars, double q);
+
+/// 2D scattering function
+double StickyHS_analytical_2D(StickyHSParameters *pars, double q, double phi);
+double StickyHS_analytical_2DXY(StickyHSParameters *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 af03ddd0932915d6659404ab7824e4223ea2944f)
+++ sansmodels/src/sans/models/c_extensions/c_models.c	(revision 25579e8c451417db52ac6ed70a3c116d52d8717d)
@@ -31,4 +31,8 @@
 	addCEllipsoidModel(m);
 	addCSphereModel(m);
+	addCHardsphereStructure(m);
+	addCStickyHSStructure(m);
+	addCHayterMSAStructure(m);
+	addCSquareWellStructure(m);
 	addCEllipticalCylinderModel(m);
 	addDisperser(m);
Index: sansmodels/src/sans/models/c_extensions/core_shell.h
===================================================================
--- sansmodels/src/sans/models/c_extensions/core_shell.h	(revision 836fe6e73d15cf2f32c74bbf3b953b37d776f2ff)
+++ sansmodels/src/sans/models/c_extensions/core_shell.h	(revision 25579e8c451417db52ac6ed70a3c116d52d8717d)
@@ -7,5 +7,15 @@
  //[PYTHONCLASS] = CoreShellModel
  //[DISP_PARAMS] = radius, thickness
- //[DESCRIPTION] =""
+ //[DESCRIPTION] =<text> Form factor for a monodisperse spherical
+ //                         particle with a core-shell structure:
+ //                       The form factor is normalized by the 
+ //                        total particle volume.
+ // 
+ //						radius: core radius
+ //                     thickness: shell thickness
+ //
+ //                     Ref: Guinier, A. and G. Fournet, 
+ //                          John Wiley and Sons, New York, 1955.
+ //				</text>
  //[FIXED]= <text> thickness.width;radius.width</text>
 typedef struct {
