Index: sansmodels/include/libmultifunc/libfunc.h
===================================================================
--- sansmodels/include/libmultifunc/libfunc.h	(revision 503a9728116697915322a45fc66882720885ca92)
+++ sansmodels/include/libmultifunc/libfunc.h	(revision 08648c055ed9beec9949b4b6563871b9101ac8a9)
@@ -8,3 +8,5 @@
 double sinc(double x);
 
+double gamln(double x);
+
 #endif
Index: sansmodels/include/massfractal.h
===================================================================
--- sansmodels/include/massfractal.h	(revision 08648c055ed9beec9949b4b6563871b9101ac8a9)
+++ sansmodels/include/massfractal.h	(revision 08648c055ed9beec9949b4b6563871b9101ac8a9)
@@ -0,0 +1,59 @@
+#if !defined(massfractal_h)
+#define massfractal_h
+#include "parameters.hh"
+
+/**
+ * Structure definition for sphere parameters
+ */
+//[PYTHONCLASS] = MassFractalModel
+//[DESCRIPTION] =<text> The scattering intensity  I(x) = scale*P(x)*S(x) + background, where
+//		 scale = scale_factor  * V * delta^(2)
+//       p(x)=  F(x*radius)^(2)
+//       F(x) = 3*[sin(x)-x cos(x)]/x**3
+//       S(x) = [(gamma(Dm-1)*colength^(Dm-1)*[1+(x^2*colength^2)]^((1-Dm)/2)
+//						* sin[(Dm-1)*arctan(x*colength)])/x]
+//       where delta = sldParticle -sldSolv.
+//       radius       =  Particle radius
+//       mass_dim  =  Mass fractal dimension
+//       co_length  =  Cut-off length
+//       background   =  background
+//		Ref.:Mildner, Hall,J Phys D Appl Phys(1986), 9, 1535-1545
+//		Note I: This model is valid for 1<mass_dim<6.
+//		Note II: This model is not in absolute scale.
+//		</text>
+//[ORIENTATION_PARAMS]= <text> </text>
+
+class MassFractalModel{
+public:
+  // Model parameters
+  /// Scale factor
+  //  [DEFAULT]=scale= 1.0
+  Parameter scale;
+
+  /// Radius [A]
+  //  [DEFAULT]=radius=10.0 [A]
+  Parameter radius;
+
+  /// Mass fractal dimension
+  //  [DEFAULT]=mass_dim=1.9
+  Parameter mass_dim;
+
+  /// Cut-off Length [A]
+  //  [DEFAULT]=co_length=100.0 [A]
+  Parameter co_length;
+
+  /// Incoherent Background 
+  //  [DEFAULT]=background=0.0 
+  Parameter background;
+
+  // Constructor
+  MassFractalModel();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/masssurfacefractal.h
===================================================================
--- sansmodels/include/masssurfacefractal.h	(revision 08648c055ed9beec9949b4b6563871b9101ac8a9)
+++ sansmodels/include/masssurfacefractal.h	(revision 08648c055ed9beec9949b4b6563871b9101ac8a9)
@@ -0,0 +1,62 @@
+#if !defined(masssurfacefractal_h)
+#define masssurfacefractal_h
+#include "parameters.hh"
+
+/**
+ * Structure definition for sphere parameters
+ */
+//[PYTHONCLASS] = MassSurfaceFractal
+//[DESCRIPTION] =<text> The scattering intensity  I(x) = scale*P(x) + background,
+//       p(x)= {[1+(x^2*a)]^(Dm/2) * [1+(x^2*b)]^(6-Ds-Dm)/2}^(-1)
+//       a = Rg^2/(3*Dm/2)
+//       b = rg^2/(3*(6-Ds-Dm)/2)
+//       scale        =  scale factor * N*Volume^2*contrast^2
+//       mass_dim       =  Dm (mass fractal dimension)
+//       surface_dim  =  Ds
+//       cluster_rg  =  Rg
+//       primary_rg    =  rg
+//       background   =  background
+//	Ref: Schmidt, J Appl Cryst, eq(19), (1991), 24, 414-435
+//       : Hurd, Schaefer, Martin, Phys Rev A, eq(2),(1987),35, 2361-2364
+//  Note that 0 < Ds< 6 and 0 < Dm < 6.
+//		</text>
+//[ORIENTATION_PARAMS]= <text> </text>
+
+class MassSurfaceFractal{
+public:
+  // Model parameters
+  /// Scale factor
+  //  [DEFAULT]=scale= 1.0
+  Parameter scale;
+
+  /// Mass fractal dimension
+  //  [DEFAULT]=mass_dim=1.8
+  Parameter mass_dim;
+
+  /// Surface fractal dimension
+  //  [DEFAULT]=surface_dim=2.3
+  Parameter surface_dim;
+
+  /// cluster_rg [A]
+  //  [DEFAULT]=cluster_rg=86.7 [A]
+  Parameter cluster_rg;
+
+ /// primary_rg [A]
+  //  [DEFAULT]=primary_rg=4000.0 [A]
+  Parameter primary_rg;
+
+  /// Incoherent Background
+  //  [DEFAULT]=background=0.0 
+  Parameter background;
+
+  // Constructor
+  MassSurfaceFractal();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
Index: sansmodels/include/surfacefractal.h
===================================================================
--- sansmodels/include/surfacefractal.h	(revision 08648c055ed9beec9949b4b6563871b9101ac8a9)
+++ sansmodels/include/surfacefractal.h	(revision 08648c055ed9beec9949b4b6563871b9101ac8a9)
@@ -0,0 +1,59 @@
+#if !defined(surfacefractal_h)
+#define surfacefractal_h
+#include "parameters.hh"
+
+/**
+ * Structure definition for parameters
+ */
+//[PYTHONCLASS] = SurfaceFractalModel
+//[DESCRIPTION] =<text> The scattering intensity  I(x) = scale*P(x)*S(x) + background, where
+//		 scale = scale_factor  * V * delta^(2)
+//       p(x)=  F(x*radius)^(2)
+//       F(x) = 3*[sin(x)-x cos(x)]/x**3
+//       S(x) = [(gamma(5-Ds)*colength^(5-Ds)*[1+(x^2*colength^2)]^((Ds-5)/2)
+//						* sin[(Ds-5)*arctan(x*colength)])/x]
+//       where delta = sldParticle -sldSolv.
+//       radius       =  Particle radius
+//       surface_dim  =  Surface fractal dimension (Ds)
+//       co_length  =  Cut-off length
+//       background   =  background
+//		Ref.:Mildner, Hall,J Phys D Appl Phys(1986), 19, 1535-1545
+//		Note I: This model is valid for 1<surface_dim<3 with limited q range.
+//		Note II: This model is not in absolute scale.
+//		</text>
+//[ORIENTATION_PARAMS]= <text> </text>
+
+class SurfaceFractalModel{
+public:
+  // Model parameters
+  /// Scale factor
+  //  [DEFAULT]=scale= 1.0
+  Parameter scale;
+
+  /// Radius [A]
+  //  [DEFAULT]=radius=10.0 [A]
+  Parameter radius;
+
+  /// Surface fractal dimension
+  //  [DEFAULT]=surface_dim=2.0
+  Parameter surface_dim;
+
+  /// Cut-off Length [A]
+  //  [DEFAULT]=co_length=500.0 [A]
+  Parameter co_length;
+
+  /// Incoherent Background 
+  //  [DEFAULT]=background=0.0 
+  Parameter background;
+
+  // Constructor
+  SurfaceFractalModel();
+
+  // Operators to get I(Q)
+  double operator()(double q);
+  double operator()(double qx, double qy);
+  double calculate_ER();
+  double evaluate_rphi(double q, double phi);
+};
+
+#endif
