Index: sasmodels/models/hardsphere.py
===================================================================
--- sasmodels/models/hardsphere.py	(revision 8e45182d210b32e434250ff0125f4640e9a1dbf8)
+++ sasmodels/models/hardsphere.py	(revision d529d93bd045e44913320de5e1c8db47f680e037)
@@ -3,6 +3,19 @@
 spherical particles interacting through hard sphere (excluded volume)
 interactions.
+May be a reasonable approximation for other shapes of particles that 
+freely rotate, and for moderately polydisperse systems. Though strictly 
+the maths needs to be modified (no \Beta(Q) correction yet in sasview).
 
-The calculation uses the Percus-Yevick closure where the interparticle
+radius_effective is the effective hard sphere radius.
+volfraction is the volume fraction occupied by the spheres.
+
+In sasview the effective radius may be calculated from the parameters
+used in the form factor $P(q)$ that this $S(q)$ is combined with.
+
+For numerical stability the computation uses a Taylor series expansion 
+at very small $qR$, there may be a very minor glitch at the transition point
+in some circumstances.
+
+The S(Q) uses the Percus-Yevick closure where the interparticle
 potential is
 
@@ -44,5 +57,5 @@
         systems. Though strictly the maths needs to be modified -
     which sasview does not do yet.
-    effect_radius is the hard sphere radius
+    radius_effective is the hard sphere radius
     volfraction is the volume fraction occupied by the spheres.
 """
@@ -51,5 +64,5 @@
 
 #             ["name", "units", default, [lower, upper], "type","description"],
-parameters = [["effect_radius", "Ang", 50.0, [0, inf], "volume",
+parameters = [["radius_effective", "Ang", 50.0, [0, inf], "volume",
                "effective radius of hard sphere"],
               ["volfraction", "", 0.2, [0, 0.74], "",
@@ -66,5 +79,5 @@
       double D,A,B,G,X,X2,X4,S,C,FF,HARDSPH;
 
-      if(fabs(effect_radius) < 1.E-12) {
+      if(fabs(radius_effective) < 1.E-12) {
                HARDSPH=1.0;
                return(HARDSPH);
@@ -75,5 +88,5 @@
       A= (1.+2.*volfraction)*D;
       A *=A;
-      X=fabs(q*effect_radius*2.0);
+      X=fabs(q*radius_effective*2.0);
 
       if(X < 5.E-06) {
@@ -138,11 +151,11 @@
 # VR defaults to 1.0
 
-demo = dict(effect_radius=200, volfraction=0.2, effect_radius_pd=0.1, effect_radius_pd_n=40)
+demo = dict(radius_effective=200, volfraction=0.2, radius_effective_pd=0.1, radius_effective_pd_n=40)
 oldname = 'HardsphereStructure'
-oldpars = dict()
+oldpars = dict(radius_effective="effect_radius",radius_effective_pd="effect_radius_pd",radius_effective_pd_n="effect_radius_pd_n")
 # Q=0.001 is in the Taylor series, low Q part, so add Q=0.1, assuming double precision sasview is correct
 tests = [
-        [ {'scale': 1.0, 'background' : 0.0, 'effect_radius' : 50.0, 'volfraction' : 0.2,
-           'effect_radius_pd' : 0}, [0.001,0.1], [0.209128,0.930587]]
+        [ {'scale': 1.0, 'background' : 0.0, 'radius_effective' : 50.0, 'volfraction' : 0.2,
+           'radius_effective_pd' : 0}, [0.001,0.1], [0.209128,0.930587]]
         ]
-
+# ADDED by: RKH  ON: 16Mar2016  using equations from FISH as better than orig sasview, see notes above. Added Taylor expansions at small Q, 
Index: sasmodels/models/hayter_msa.py
===================================================================
--- sasmodels/models/hayter_msa.py	(revision 348557ad6267dc6c27f1b0a9f23dc61b4aae3715)
+++ sasmodels/models/hayter_msa.py	(revision d529d93bd045e44913320de5e1c8db47f680e037)
@@ -9,5 +9,5 @@
 
 **This routine only works for charged particles**. If the charge is set to
-zero the routine will self-destruct! For non-charged particles use a hard
+zero the routine may self-destruct! For non-charged particles use a hard
 sphere potential.
 
@@ -15,5 +15,14 @@
 which in turn is used to compute the Debye screening length. At present
 there is no provision for entering the ionic strength directly nor for use
-of any multivalent salts. The counterions are also assumed to be monovalent.
+of any multivalent salts, though it should be possible to simulate the effect
+of this by increasing the salt concentration. The counterions are also assumed to 
+be monovalent.
+
+In sasview the effective radius may be calculated from the parameters
+used in the form factor $P(q)$ that this $S(q)$ is combined with.
+
+The computation uses a Taylor series expansion at very small rescaled $qR$, to 
+avoid some serious rounding error issues, this may result in a minor artefact 
+in the transition region under some circumstances.
 
 For 2D data, the scattering intensity is calculated in the same way as 1D,
@@ -24,7 +33,4 @@
     q = \sqrt{q_x^2 + q_y^2}
 
-.. figure:: img/HayterMSAsq_227.jpg
-
-    1D plot using the default values (in linear scale).
 
 References
@@ -35,6 +41,11 @@
 J P Hansen and J B Hayter, *Molecular Physics*, 46 (1982) 651-656
 """
+from numpy import inf
 
-#  dp[0] = 2.0*effect_radius();
+category = "structure-factor"
+structure_factor = True
+single = False  # double precision only!
+
+#  dp[0] = 2.0*radius_effective();
 #  dp[1] = fabs(charge());
 #  dp[2] = volfraction();
@@ -43,33 +54,32 @@
 #  dp[5] = dielectconst();
 
-from numpy import inf
 
-source = ["hayter_msa_kernel.c"]
+
 
 name = "hayter_msa"
-title = "Hayter-Penfold MSA charged sphere interparticle S(Q) structure factor"
+title = "Hayter-Penfold rescaled MSA, charged sphere, interparticle S(Q) structure factor"
 description = """\
-    [Hayter-Penfold MSA charged sphere interparticle S(Q) structure factor]
+    [Hayter-Penfold RMSA charged sphere interparticle S(Q) structure factor]
         Interparticle structure factor S(Q)for a charged hard spheres.
         Routine takes absolute value of charge, use HardSphere if charge
         goes to zero.
-        In sasview the effective radius will be calculated from the
-        parameters used in P(Q).
+        In sasview the effective radius and volume fraction may be calculated 
+        from the parameters used in P(Q).
 """
-single = False  # double precision only!
+
 
 # pylint: disable=bad-whitespace, line-too-long
 #             [ "name", "units", default, [lower, upper], "type", "description" ],
 parameters = [
-    ["effect_radius", "Ang", 20.75,   [0, inf],    "volume", "effective radius of hard sphere"],
+    ["radius_effective", "Ang", 20.75,   [0, inf],    "volume", "effective radius of charged sphere"],
     ["charge",        "e",   19.0,    [0, inf],    "", "charge on sphere (in electrons)"],
-    ["volfraction",   "",     0.0192, [0, 0.74],   "", "volume fraction of spheres"],
+    ["volfraction",   "None",     0.0192, [0, 0.74],   "", "volume fraction of spheres"],
     ["temperature",   "K",  318.16,   [0, inf],    "", "temperature, in Kelvin, for Debye length calculation"],
-    ["saltconc",      "M",    0.0,    [-inf, inf], "", "conc of salt, 1:1 electolyte, for Debye length"],
-    ["dielectconst",  "",    71.08,   [-inf, inf], "", "dielectric constant of solvent (default water), for Debye length"],
+    ["saltconc",      "M",    0.0,    [-inf, inf], "", "conc of salt, moles/litre, 1:1 electolyte, for Debye length"],
+    ["dielectconst",  "None",    71.08,   [-inf, inf], "", "dielectric constant (relative permittivity) of solvent, default water, for Debye length"]
     ]
 # pylint: enable=bad-whitespace, line-too-long
-category = "structure-factor"
 
+source = ["hayter_msa_kernel.c"]
 # No volume normalization despite having a volume parameter
 # This should perhaps be volume normalized?
@@ -85,10 +95,12 @@
 
 oldname = 'HayterMSAStructure'
-oldpars = dict()
+#oldpars = dict(effect_radius="radius_effective",effect_radius_pd="radius_effective_pd",effect_radius_pd_n="radius_effective_pd_n")
+oldpars = dict(radius_effective="effect_radius",radius_effective_pd="effect_radius_pd",radius_effective_pd_n="effect_radius_pd_n")
+#oldpars = dict( )
 # default parameter set,  use  compare.sh -midQ -linear
 # note the calculation varies in different limiting cases so a wide range of
 # parameters will be required for a thorough test!
 # odd that the default st has saltconc zero
-demo = dict(effect_radius=20.75,
+demo = dict(radius_effective=20.75,
             charge=19.0,
             volfraction=0.0192,
@@ -96,6 +108,6 @@
             saltconc=0.05,
             dielectconst=71.08,
-            effect_radius_pd=0.1,
-            effect_radius_pd_n=40)
+            radius_effective_pd=0.1,
+            radius_effective_pd_n=40)
 #
 # attempt to use same values as old sasview unit test at Q=.001 was 0.0712928, 
@@ -104,5 +116,5 @@
     [{'scale': 1.0,
       'background': 0.0,
-      'effect_radius': 20.75,
+      'radius_effective': 20.75,
       'charge': 19.0,
       'volfraction': 0.0192,
@@ -110,9 +122,9 @@
       'saltconc': 0,
       'dielectconst': 78.0,
-      'effect_radius_pd': 0},
+      'radius_effective_pd': 0},
      [0.00001,0.0010,0.01,0.075], [0.0711646,0.0712928,0.0847006,1.07150]],
     [{'scale': 1.0,
       'background': 0.0,
-      'effect_radius': 20.75,
+      'radius_effective': 20.75,
       'charge': 19.0,
       'volfraction': 0.0192,
@@ -120,7 +132,7 @@
       'saltconc': 0.05,
       'dielectconst': 78.0,
-      'effect_radius_pd': 0.1,
-      'effect_radius_pd_n': 40},
+      'radius_effective_pd': 0.1,
+      'radius_effective_pd_n': 40},
      [0.00001,0.0010,0.01,0.075], [0.450272,0.450420,0.465116,1.039625]]
     ]
-
+# ADDED by:  RKH  ON: 16Mar2016 converted from sasview, new Taylor expansion at smallest rescaled Q
Index: sasmodels/models/hayter_msa_kernel.c
===================================================================
--- sasmodels/models/hayter_msa_kernel.c	(revision 348557ad6267dc6c27f1b0a9f23dc61b4aae3715)
+++ sasmodels/models/hayter_msa_kernel.c	(revision d529d93bd045e44913320de5e1c8db47f680e037)
@@ -3,5 +3,5 @@
 // C99 needs declarations of routines here
 double Iq(double QQ,
-      double effect_radius, double zz, double VolFrac, double Temp, double csalt, double dialec);
+      double radius_effective, double zz, double VolFrac, double Temp, double csalt, double dialec);
 int
 sqcoef(int ir, double gMSAWave[]);
@@ -14,5 +14,5 @@
   
 double Iq(double QQ,
-      double effect_radius, double zz, double VolFrac, double Temp, double csalt, double dialec)  
+      double radius_effective, double zz, double VolFrac, double Temp, double csalt, double dialec)  
 {
     double gMSAWave[17]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17};
@@ -28,5 +28,5 @@
 	pi = M_PI;
 
-	diam=2*effect_radius;		//in A
+	diam=2*radius_effective;		//in A
 
 						////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Index: sasmodels/models/squarewell.py
===================================================================
--- sasmodels/models/squarewell.py	(revision 5111921153c056b59ff03411e4b7b028d238ae26)
+++ sasmodels/models/squarewell.py	(revision d529d93bd045e44913320de5e1c8db47f680e037)
@@ -8,7 +8,7 @@
 Positive well depths correspond to an attractive potential well. Negative well depths correspond to a potential
 "shoulder", which may or may not be physically reasonable. The stickyhardsphere model may be a better choice in
-some circumstances. Computed values may behave badly at extremely small Q.
+some circumstances. Computed values may behave badly at extremely small $qR$.
 
-The well width (*l*\ ) is defined as multiples of the particle diameter (2\*\ *R*\ )
+The well width (|lambda| ) is defined as multiples of the particle diameter (2\*\ *R*\ )
 
 The interaction potential is:
@@ -22,10 +22,12 @@
     U(r) = \begin{cases}
     \infty & r < 2R \\
-    -\epsilon , 2R \leq < 2R\lambda
-    0 & r \geq 2R
+    -\epsilon & 2R \leq r < 2R\lambda \\
+    0 & r \geq 2R\lambda
     \end{cases}
 
 where $r$ is the distance from the center of the sphere of a radius $R$.
 
+In sasview the effective radius may be calculated from the parameters
+used in the form factor $P(q)$ that this $S(q)$ is combined with.
 
 For 2D data: The 2D scattering intensity is calculated in the same way as 1D, where the *q* vector is defined as
@@ -35,9 +37,4 @@
     q = \sqrt{q_x^2 + q_y^2}
 
-.. comment::
-
-  .. figure:: img/squarewell_226.jpg
-
-    1D plot using the default values (in linear scale).*
 
 REFERENCE
@@ -59,4 +56,5 @@
 """
 category = "structure-factor"
+structure_factor = True
 
 #single = False
@@ -65,5 +63,5 @@
     #   [ "name", "units", default, [lower, upper], "type",
     #     "description" ],
-    ["effect_radius", "Ang", 50.0, [0, inf], "volume",
+    ["radius_effective", "Ang", 50.0, [0, inf], "volume",
      "effective radius of hard sphere"],
     ["volfraction", "", 0.04, [0, 0.08], "",
@@ -71,6 +69,6 @@
     ["welldepth", "kT", 1.5, [0.0, 1.5], "",
      "depth of well, epsilon"],
-    ["wellwidth", "diameters", 1.2, [0, inf], "",
-     "width of well in diameters (=2R) units"],
+    ["wellwidth", "diameters", 1.2, [1.0, inf], "",
+     "width of well in diameters (=2R) units, must be > 1"],
     ]
 
@@ -89,5 +87,5 @@
 	x= q;
 	
-	req = effect_radius;
+	req = radius_effective;
 	phis = volfraction;
 	edibkb = welldepth;
@@ -134,12 +132,12 @@
 
 oldname = 'SquareWellStructure'
-oldpars = dict()
-demo = dict(effect_radius=50, volfraction=0.04, welldepth=1.5,
-            wellwidth=1.2, effect_radius_pd=0, effect_radius_pd_n=0)
+oldpars = dict(radius_effective="effect_radius",radius_effective_pd="effect_radius_pd",radius_effective_pd_n="effect_radius_pd_n")
+demo = dict(radius_effective=50, volfraction=0.04, welldepth=1.5,
+            wellwidth=1.2, radius_effective_pd=0, radius_effective_pd_n=0)
 #
 tests = [
-        [ {'scale': 1.0, 'background' : 0.0, 'effect_radius' : 50.0, 'volfraction' : 0.04,'welldepth' : 1.5, 'wellwidth' : 1.2, 
-           'effect_radius_pd' : 0}, [0.001], [0.97665742]]
+        [ {'scale': 1.0, 'background' : 0.0, 'radius_effective' : 50.0, 'volfraction' : 0.04,'welldepth' : 1.5, 'wellwidth' : 1.2, 
+           'radius_effective_pd' : 0}, [0.001], [0.97665742]]
         ]
-# ADDED by: converting from sasview RKH  ON: 16Mar2016 - in progress
+# ADDED by: converting from sasview RKH  ON: 16Mar2016
 
Index: sasmodels/models/stickyhardsphere.py
===================================================================
--- sasmodels/models/stickyhardsphere.py	(revision 8e45182d210b32e434250ff0125f4640e9a1dbf8)
+++ sasmodels/models/stickyhardsphere.py	(revision d529d93bd045e44913320de5e1c8db47f680e037)
@@ -49,5 +49,5 @@
 the optimization does not hit the constraints.
 
-In sasview the effective radius will be calculated from the parameters
+In sasview the effective radius may be calculated from the parameters
 used in the form factor $P(q)$ that this $S(q)$ is combined with.
 
